onepower.pk#

A module for computing 3D power spectra using the halo model approach.

See section 2 of https://arxiv.org/pdf/2303.08752.pdf for details. Brief description on the formalism:

\(P_{uv} = P^{\rm 2h}_{uv} + P^{\rm 1h}_{uv}\) (1)

\(P^{\rm 1h}_{uv} (k) = \int_{0}^{\infty} {\rm d}M W_{u}(M, k) W_{v}(M, k) n(M)\) (2)

\(P^{\rm 2h}_{uv} (k) = \int_{0}^{\infty} \int_{0}^{\infty} {\rm d}M_{1} {\rm d}M_{2} P_{\rm hh}(M_{1}, M_{2}, k) W_{u}(M_{1}, k) W_{v}(M_{2}, k) n(M_{1}) n(M_{2})\) (3)

\(W_{\rm x}\) are the profile of the fields, \(u\) and \(v\), showing how they fit into haloes. \(n(M)\) is the halo mass function, quantifying the number of haloes of each mass, \(M\). Integrals are taken over halo mass.

The halo-halo power spectrum can be written as,

\(P_{\rm hh}(M_{1},M_{2},k) = b(M_{1}) b(M_{2}) P^{\rm lin}_{\rm mm}(k) (1 + \beta_{\rm nl}(M_{1},M_{2},k))\) (4)

In the vanilla halo model the 2-halo term is usually simplified by assuming that haloes are linearly biased with respect to matter. This sets beta_nl to zero and effectively decouples the integrals. Here we allow for both options to be calculated.

Equation (3) then becomes:

\(P^{\rm 2h}_{uv} (k) = P^{\rm lin}_{\rm mm}(k) * [I_u * I_v + I^{\rm NL}_{uv}]\) (5)

where \(I_u\) and \(I_v\) are defined as:

\(I_{\rm x} = \int_{0}^{\infty} {\rm d}M b(M) W_{\rm x}(M, k) n(M)\) (6)

and the integral over beta_nl is

\(I^{\rm NL}_{uv} = \int_{0}^{\infty} \int_{0}^{\infty} {\rm d}M_{1} {\rm d}M_{2} b(M_{1}) b(M_{2}) \beta_{\rm nl}(M_{1},M_{2},k) W_{u}(M_{1}, k) W_{v}(M_{2}, k) n(M_{1}) n(M_{2})\) (7)

Classes

PowerSpectrumResult([pk_1h, pk_2h, pk_tot, ...])

A helper class to attach the power spectrum outputs as atributes

Spectra(*args, **kwargs)

Class to compute matter power spectra using the halo model approach.