hmfast.halos.profiles.S12CIBProfile

class hmfast.halos.profiles.S12CIBProfile(nu, L0=6.4e-08, alpha=0.36, beta=1.75, gamma=1.7, T0=24.4, M_eff=3981071705534.969, sigma2_LM=0.5, delta=3.6, z_p=1e+100, M_min=316227766016.83795)[source]

Bases: CIBProfile

CIB profile from Shang et al. (2012).

In this model, the real-space CIB profile is written as

\[u_\nu(r, M, z) = \frac{1}{4\pi} \left[L_\nu^{\mathrm{cen}}(M, z) + L_\nu^{\mathrm{sat}}(M, z) \, u_m(r, M, z)\right] \tag{1}\]

where \(u_m(r, M, z)\) is the normalized real-space NFW matter profile. Central galaxies are assumed to live at the halo center, so their real-space profile is a Dirac delta function, while satellite galaxies are assumed to trace the NFW matter profile.

The central and satellite luminosities are

\[L_\nu^{\mathrm{cen}}(M, z) = N_{\mathrm{cen}}(M) \, L_\nu^{\mathrm{gal}}(M, z) \tag{2}\]
\[L_\nu^{\mathrm{sat}}(M, z) = \int d\ln m_s \, \frac{dN}{d\ln m_s}(m_s \mid M) \, L_\nu^{\mathrm{gal}}(m_s, z) \tag{3}\]

where \(N_{\mathrm{cen}}(M) = 1\) for \(M > M_{\min}\) and zero otherwise.

The galaxy luminosity is

\[L_\nu^{\mathrm{gal}}(M, z) = L_0 \, \Phi(z) \, \Sigma(M) \, \Theta\!\left((1+z)\nu, z\right) \tag{4}\]

where

\[\Sigma(M) = \frac{M}{\sqrt{2 \pi \, \sigma_{LM}^2}} \exp\left[ -\frac{\left(\log_{10} M - \log_{10} M_{\mathrm{eff}}\right)^2} {2 \sigma_{LM}^2} \right]\]
\[\Phi(z) = \begin{cases} (1 + z)^{\delta}, & z < z_p, \ 1, & z \ge z_p, \end{cases} \tag{6}\]
\[\Theta(\nu, z) = \begin{cases} \left(\nu / \nu_0\right)^{-\gamma}, & \nu \ge \nu_0, \ \left(\nu / \nu_0\right)^{\beta} \dfrac{B_\nu(\nu, T_d)}{B_\nu(\nu_0, T_d)}, & \nu < \nu_0, \end{cases} \tag{7}\]

with \(T_d(z) = T_0 (1 + z)^{\alpha}\) and \(B_\nu(\nu, T)\) the Planck blackbody function. In the implementation, the observed frequency \(\nu\) is stored in GHz, so the SED is evaluated at the rest-frame frequency \((1+z)\nu\).

The mean emissivity \(\bar{j}_\nu(z)\) and the monopole intensity \(I_\nu\) are given, respectively, by

\[\bar{j}_\nu(z) = \frac{h^3}{4 \pi} \int d\ln M \, \frac{dn}{d\ln M}(M, z) \left[L_\nu^{\mathrm{cen}}(M, z) + L_\nu^{\mathrm{sat}}(M, z)\right] \tag{8}\]
\[I_\nu = \int dz \, \frac{d\chi}{dz} \, a(z) \, \bar{j}_\nu(z) \tag{9}\]
Attributes:
nufloat

Observed frequency \(\nu\) in GHz.

L0float

Luminosity normalization \(L_0\) in \(\mathrm{Jy}\,\mathrm{Mpc}^2 / M_\odot\).

alphafloat

Dimensionless redshift scaling exponent \(\alpha\) of the dust temperature.

betafloat

Dimensionless low-frequency spectral slope \(\beta\) of the SED.

gammafloat

Dimensionless high-frequency spectral slope \(\gamma\) of the SED.

T0float

Dust temperature normalization \(T_0\) at \(z = 0\) in Kelvin.

M_efffloat

Characteristic halo mass \(M_{\mathrm{eff}}\) of peak emissivity in physical \(M_\odot\).

sigma2_LMfloat

Dimensionless log-normal variance \(\sigma_{LM}^2\) entering \(\Sigma(M)\).

deltafloat

Dimensionless redshift evolution exponent \(\delta\) in \(\Phi(z)\).

z_pfloat

Dimensionless pivot redshift \(z_p\) above which \(\Phi(z)\) saturates.

M_minfloat

Minimum halo mass \(M_{\min}\) entering the central and satellite terms in physical \(M_\odot\).

Methods

fourier(halo_model, k, m, z)

Compute the CIB profile in Fourier space.

l_cen(halo_model, m, z)

Compute the central-galaxy CIB luminosity.

l_gal(halo_model, m, z)

Compute the galaxy luminosity assigned to a halo.

l_sat(halo_model, m, z)

Compute the total satellite CIB luminosity.

mean_emissivity(halo_model, m, z)

Compute the mean emissivity.

monopole(halo_model, m, z)

Compute the CIB monopole intensity.

real(halo_model, r, m, z)

Compute the CIB profile in real space.

update([nu, L0, alpha, beta, gamma, T0, ...])

Return a new profile instance with updated Shang CIB parameters.

update(nu=None, L0=None, alpha=None, beta=None, gamma=None, T0=None, M_eff=None, sigma2_LM=None, delta=None, z_p=None, M_min=None)[source]

Return a new profile instance with updated Shang CIB parameters.

Parameters:
nu, L0, alpha, beta, gamma, T0, M_eff, sigma2_LM, delta, z_p, M_minfloat, optional

Replacement values for the corresponding class attributes. Any argument left as None keeps its current value.

Returns:
S12CIBProfile

New profile instance with updated parameters.

l_gal(halo_model, m, z)[source]

Compute the galaxy luminosity assigned to a halo.

Parameters:
halo_modelHaloModel

Halo model. Included for interface consistency.

mfloat or jnp.ndarray

Halo mass or masses in physical \(M_\odot\).

zfloat or jnp.ndarray

Redshift(s).

Returns:
jnp.ndarray

Galaxy luminosity \(L_\nu^{\mathrm{gal}}(M, z)\) with shape \((N_m, N_z)\), where singleton dimensions get squeezed before return.

l_sat(halo_model, m, z)[source]

Compute the total satellite CIB luminosity.

Parameters:
halo_modelHaloModel

Halo model providing the subhalo mass function.

mfloat or jnp.ndarray

Host halo mass or masses in physical \(M_\odot\).

zfloat or jnp.ndarray

Redshift(s).

Returns:
jnp.ndarray

Satellite luminosity \(L_\nu^{\mathrm{sat}}(M, z)\) with shape \((N_m, N_z)\), where singleton dimensions get squeezed before return.

l_cen(halo_model, m, z)[source]

Compute the central-galaxy CIB luminosity.

Parameters:
halo_modelHaloModel

Halo model. Included for interface consistency.

mfloat or jnp.ndarray

Halo mass or masses in physical \(M_\odot\).

zfloat or jnp.ndarray

Redshift(s).

Returns:
jnp.ndarray

Central luminosity \(L_\nu^{\mathrm{cen}}(M, z)\) with shape \((N_m, N_z)\), where singleton dimensions get squeezed before return.

mean_emissivity(halo_model, m, z)[source]

Compute the mean emissivity.

Parameters:
halo_modelHaloModel

Halo model providing the cosmology and halo mass function.

mfloat or jnp.ndarray

Halo mass grid in physical \(M_\odot\).

zfloat or jnp.ndarray

Redshift grid.

Returns:
jnp.ndarray

Mean emissivity \(\bar{j}_\nu(z)\) with shape \((N_z,)\), where singleton dimensions get squeezed before return.

monopole(halo_model, m, z)[source]

Compute the CIB monopole intensity.

Parameters:
halo_modelHaloModel

Halo model providing the cosmology.

mfloat or jnp.ndarray

Halo mass grid.

zfloat or jnp.ndarray

Redshift grid.

Returns:
float or jnp.ndarray

Monopole intensity \(I_\nu\) as a scalar with shape \(()\), where singleton dimensions get squeezed before return.

real(halo_model, r, m, z)[source]

Compute the CIB profile in real space.

Parameters:
halo_modelHaloModel

Halo model providing the matter profile and CIB luminosities.

rfloat or jnp.ndarray

Radius or radii in \(\mathrm{Mpc}\).

mfloat or jnp.ndarray

Halo mass or masses in physical \(M_\odot\).

zfloat or jnp.ndarray

Redshift(s).

Returns:
jnp.ndarray

Real-space profile array with shape \((N_r, N_m, N_z)\), where singleton dimensions get squeezed before return.

fourier(halo_model, k, m, z)[source]

Compute the CIB profile in Fourier space.

Parameters:
halo_modelHaloModel

Halo model providing the matter profile and CIB luminosities.

kfloat or jnp.ndarray

Comoving wavenumber(s) in \(\mathrm{Mpc}^{-1}\).

mfloat or jnp.ndarray

Halo mass or masses in physical \(M_\odot\).

zfloat or jnp.ndarray

Redshift(s).

Returns:
jnp.ndarray

Fourier-space profile with shape \((N_k, N_m, N_z)\), where singleton dimensions get squeezed before return.