Tier-3 forecast: multi-wavelength maps, band LFs, z < 2, M* > 10⁹
The tier-2 study freed every parameter of the X-ray/tSZ/lensing forward model on a z < 1, M* > 10¹⁰ galaxy grid. The tier-3 study extends that design to the full multi-wavelength survey landscape of the coming decade:
When the same halo-model chain also predicts the radio and infrared sky, the UV/optical/NIR luminosity functions and the cosmic star-formation history — over 0 < z < 2 and down to M* = 10⁹ — what do the combined maps and counts teach us about cosmology and about every piece of the galaxy–halo connection?
Twelve SED-calibration parameters join the vector (102 in total,
TIER3_EXTENSION); nothing else is
fixed. All twelve feed only new observables, so the fiducial predictions of
every tier-1/2 observable are bit-identical (the append-only house rule).
Reproduce with:
JAX_PLATFORMS=cpu python -m hod_mod.scripts.forecasts.run_tier3_forecast \
--jobs 6
# fast end-to-end check (2x2 cells, tiny grids, ~4 min):
JAX_PLATFORMS=cpu python -m hod_mod.scripts.forecasts.run_tier3_forecast --smoke
The extended sample grid
Coarse exploratory grid: Δz = 0.2 shells over 0 < z < 2 × 0.2-dex volume-limited M* bins over 9.0 ≤ log10 M* ≤ 11.6 (130 cells), each split into star-forming and quiescent samples (260 cell blocks). The per-block caches are incremental, so the grid can be refined later without recomputation of unchanged blocks.
Mass-grid floor: cells integrate haloes from log10 M_h = 8.5 (the
log10m_minForwardModelargument; the tier-1/2 default of 10.0 is bit-identical) — M_h(M* = 10⁹) ≈ 2.4×10¹⁰ sits well inside the grid, and the (9.0, 9.2) bin abundance converges to <10⁻³ atn_m = 256.Two-tier completeness: the wide spectroscopic survey (f_sky = 0.5) carries a stellar-mass limit log10 M*_lim(z) = 9.0 + 1.0·z (the magnitude-limited trend); cells below it fall back to a deep field (f_sky = 0.004, complete at 10⁹ at all z) with correspondingly larger noise, and cells complete in neither tier are not built (reported as
skipped_cells). AGN clustering samples extend to z = 1.9 (agn_z_centers).
The twelve SED calibrations
Parameter |
Fiducial |
Prior |
Meaning |
|---|---|---|---|
|
28.20 |
0.20 |
log10 L_ν(1.4 GHz)/SFR [erg s⁻¹ Hz⁻¹ / M_⊙ yr⁻¹], the radio–FIR calibration [Murphy2011] |
|
0.70 |
0.15 |
synchrotron spectral index; scales the SF and jet emission across the radio bands (FP cores stay flat) |
|
43.41 |
0.20 |
log10 L_IR/SFR (the Kennicutt–Murphy total-IR calibration [KennicuttEvans2012]) |
|
0.0 |
0.5 |
dust-SED color tilt across the IR bands (inert at the 4.9 μm anchor) |
|
33.20 |
0.30 |
log10 νL_ν(3.4 μm)/M* — the stellar M/L behind the NIR LF and the IR-map stellar continuum |
|
33.10 |
0.30 |
log10 νL_ν(r)/M* of star-forming centrals |
|
−0.20 |
0.30 |
quiescent r-band offset [dex] (the optical LF is the SF/Q mixture) |
|
42.65 |
0.30 |
log10 νL_ν(1500 Å)/SFR including the mean attenuation |
|
0.0 |
0.3 |
UV-attenuation slope versus log M* (tilts the UV LF) |
|
41.27 |
0.20 |
log10 L_Hα/SFR ([Kennicutt1998]; the |
|
−0.62 |
0.30 |
AGN bolometric correction to 1450 Å [Runnoe2012] |
|
−0.72 |
0.30 |
AGN bolometric correction to 4400 Å [Runnoe2012] |
New observables
Radio/IR intensity maps (radio_map_bands = 0.95, 1.4, 3.0 GHz —
SKA-like [Bacon2018]; ir_map_bands = 3.4, 4.9, 12 μm — WISE/SPHEREx-like
[Wright2010] [Dore2014]). The per-halo central νL_ν fields combine
SF synchrotron: \(10^{\mathrm{l14\_sfr}}\,\nu_{1.4}\, \langle\mathrm{SFR}\rangle(M)\,(\nu/1.4)^{1-\alpha_{\rm syn}}\) with the ⟨SFR⟩(M) lognormal mean built from the main sequence, the SHMR and the ZM16 quenched fraction (the
_oiilfwidth algebra);fundamental-plane cores (the
_rlfFP moments, flat spectrum) and radio-loud jets (5 GHz anchored,alpha_syn-scaled);IR dust (∝ SFR, color-tilted), stellar continuum (∝ M*·Υ_NIR) and the AGN torus (the
_ilfchain — no f_abs: IR is obscuration-robust).
Observables: cl_gR/cl_gI per cell (galaxy × map, band-major),
cl_RR/cl_II (band autos), cl_aR/cl_aI (AGN × map, L_X-bin ×
band) and cl_ag (AGN × galaxy) per shell. Exact gates: the SF-only band
ratio is \((\nu/1.4)^{1-\alpha_{\rm syn}}\) to machine precision;
∂ln C^{gR}/∂l14_sfr = ln 10 (cross) and 2 ln 10 (auto);
alpha_syn is exactly inert at the 1.4 GHz anchor.
Galaxy band LFs + AGN UV/opt LFs (per shell, via one _lf_lognormal
kernel): uvlf (SF, attenuation-tilted), optlf (SF/Q mixture —
collapses exactly to a single lognormal at dopt_q = 0), nirlf (all
centrals, pure SHMR probe), half (≡ oiilf at matched normalisation),
and the type-1 AGN LFs qlf_uv/qlf_opt = the _ilf kernel ×
(1 − f_abs) — completing the cross-band obscuration system
(UV/opt ∝ 1−f_abs, IR ∝ 1, soft X-ray = the N_H transmission mixture;
∂Φ/∂f_abs = −Φ/(1−f_abs) exactly).
SFRD(z): a per-shell wide-M* (10⁹–10¹²) sfrd block — the
Madau–Dickinson measurement [MadauDickinson2014] at 12 % per shell.
The four extras:
cl_yy— tSZ auto-spectrum (the pressure field squared;∂ln C_yy/∂P₀ = 2/P₀exactly);cl_HIHI— 21 cm auto-power (the HI field squared; ∝ M₀² exactly);ncl— X-ray cluster counts above max(L_lim(z), 10⁴²) erg/s through the free L_X–M relation with a fixed 0.25 dex selection scatter: the classic dn/dz probe, cosmology through dn/dM;ds_agn— AGN galaxy–galaxy lensing ΔΣ per L_X bin (the central-AGN tracer against the baryon-split matter field), directly weighing the L_X-selected host haloes.
Survey noise
Physical where the tier-2 machinery applies (pair counts, shape noise, CXB
photon statistics, Poisson LFs with L_lim(z) completeness flags); the radio
and IR maps use the calibrated effective (rn, an) recipe
(SKASurvey,
IRMapSurvey — the tSZ / 21 cm IM precedent;
a physical T_sys/confusion model is the documented upgrade). Band LFs get
BandLFSurvey footprints with νL_ν flux
limits; the AGN crosses build their Knox noise from the fiducial AGN auto
(cl_aa_fiducial) plus shot noise.
Parallel execution
--jobs N fills the per-block Jacobian cache with N spawned workers
(precompute_blocks()): each
worker rebuilds the forecast from its resolved constructor spec, computes
blocks into atomic tempfiles, and the parent assembles serially from the
cache. The parallel == serial invariant is byte-exact (tested in a fresh
interpreter; the workers inherit the parent’s x64 mode through the
JAX_ENABLE_X64 environment variable so that module-level constants are
built in the right precision).
Two operational lessons from the production run:
Worker memory: a long-lived worker accumulates JAX compilation caches for every distinct block shape it processes (several GB within a handful of blocks) — eight persistent workers OOM-killed a 64 GB host.
max_tasks_per_child(default 4) therefore recycles each worker, bounding its RSS near the single-block peak for the cost of one forecast rebuild (~seconds) per cycle; the byte-identity is unchanged.The per-block cache is incremental and atomic, so an interrupted run (OOM, reboot, Ctrl-C) resumes exactly where it stopped — only missing blocks are recomputed.
Production configuration and results
The production run frees all 102 parameters (only the retired log10DC
pinned) over the full block set:
292 blocks: 260 SF/Q-split (z, M*) cells (13 M* bins × 10 shells × 2 populations; no cells skipped — the deep tier reaches 10⁹ at all z), 10 shells (X-ray/radio/IR/[OII] LFs, map autos, AGN crosses, tSZ + 21 cm autos, cluster counts), the global lensing block, 10 AGN clustering + lensing blocks (z = 0.1…1.9) and 10 wide-M* SFRD blocks, plus the local HIMF block;
six X-ray bands, three radio + three IR map bands, five tomographic shear bins; scale cuts r_min = 0.1, 0.5, 2.5 Mpc/h;
command:
JAX_PLATFORMS=cpu python -m hod_mod.scripts.forecasts.run_tier3_forecast --jobs 6.
SUMMARY, npz products, the per-sector information gains and the
tier3_forecast__* figure suite are written to
$HOD_MOD_RESULTS/tier3_forecast/ (2026-07-04 run: 59 779 rows, no
skipped cells).
Headline numbers at \(r_\mathrm{min} = 0.1\,h^{-1}\) Mpc:
Parameter |
All 102 free |
Astrophysics pinned |
Degradation |
|---|---|---|---|
\(\Omega_\mathrm{m}\) |
\(5.89\times10^{-5}\) |
\(3.68\times10^{-5}\) |
×1.6 |
\(\sigma_8\) |
\(7.95\times10^{-5}\) |
\(5.72\times10^{-5}\) |
×1.4 |
\(w_0\) |
\(7.33\times10^{-4}\) |
\(4.60\times10^{-4}\) |
×1.6 |
\(w_a\) |
\(3.39\times10^{-3}\) |
\(2.12\times10^{-3}\) |
×1.6 |
Two structural conclusions:
The multi-wavelength data self-calibrate the astrophysics. Relative to the 90-parameter tier-2 production (Tier-2 forecast: nothing fixed (90 parameters): \(\sigma(\Omega_\mathrm{m}) = 1.82\times10^{-4}\), \(\sigma(\sigma_8) = 2.93\times10^{-4}\)), the tier-3 combination is ×3.1 / ×3.7 tighter while freeing 12 more parameters, and the free-vs-pinned degradation collapses from ×2.3 to ×1.6. Even \(h\) and \(n_s\) become data-dominated (\(5.5\times10^{-5}\), \(7.0\times10^{-5}\) — two orders of magnitude inside their Planck/BBN priors).
The maps and band LFs do the heavy lifting. The cumulative attribution runs \(\sigma(\Omega_\mathrm{m}): 2.34 \to 1.61 \to 0.98 \to 0.60 \times 10^{-4}\) for galaxy grid + lensing → +X-ray/tSZ → +radio/IR maps → +band LFs, with the tSZ/HI autos, cluster counts and AGN lensing adding percent-level refinements. The radio/IR intensity maps and the UV/opt/NIR luminosity functions — tier-3’s new probes — deliver the two largest single gains.
Caveats recorded with the run: 247 rows sit below the survey completeness
limits (σ = ∞, dominated by high-z faint LF bins); and at this Fisher
dynamic range (59k rows) the prior-scaled eigenvalue floor of the
pseudo-inverse sweeps up the prior-bounded directions —
\(\Sigma m_\nu\) (and the agn sector’s information-gain
determinant at the two finer scale cuts) report as unconstrained/NaN
where the 90-parameter run still resolved them. The principled fix
(floor eigenvalues at unity in prior-scaled space instead of dropping
them) is noted for the tier-4 analysis.
Verification
tests/test_forecast_tier3.py gates every feature with an exact identity
(band ratios, chain rules, kernel clones, mixture additivity, shift
invariance, mass-grid convergence, two-tier completeness assignment,
parallel == serial, cache round-trip), and the tier-2 regression suites run
unchanged through the new extension hooks.