Luminosity Functions
CosmoWAP includes luminosity function classes that compute number densities, magnification bias Q, and evolution bias for a given model. See arXiv:2107.13401 for an overview.
Key definitions (for flux-limited surveys):
Hα Luminosity Functions
For flux-limited Hα surveys (Euclid, Roman). These use Schechter-type luminosity functions:
where the shape function g(y) and characteristic density φ∗(z) are model-dependent.
- class lib.luminosity_funcs.Model1LuminosityFunction(cosmo)
Standard Schechter function with g(y) = y^α exp(-y), α = -1.35.
- class lib.luminosity_funcs.Model3LuminosityFunction(cosmo)
See Pozzetti et al. (2016) with α = -1.587, ν = 2.288.
Methods:
- luminosity_function(L, zz)
Compute Φ(L, z) [h³/Mpc³].
- number_density(F_c, zz)
Integrate luminosity function above flux cut F_c [erg/cm²/s].
- get_Q(F_c, zz)
Magnification bias: Q = y_c g(y_c) / G(F_c, z).
- get_be(F_c, zz)
Evolution bias from number density evolution and Q.
- get_b_1(F_c, zz)
Flux-averaged linear bias using semi-analytic model from arXiv:1909.12069 (Table 2).
Magnitude-Limited Surveys
For apparent magnitude-limited surveys with K-corrections. The threshold absolute magnitude is:
- class lib.luminosity_funcs.BGSLuminosityFunction(cosmo)
DESI BGS r-band luminosity function. Schechter with α = -1.23, K(z) = 0.87z.
- class lib.luminosity_funcs.LBGLuminosityFunction(cosmo)
Lyman Break Galaxy UV luminosity function for MegaMapper. Parameters from arXiv:1904.13378 (Table 3). K(z) = -2.5 log₁₀(1+z). Bias model from Eq. (2.7).
Methods: Same as Hα classes, but with magnitude cut m_c instead of flux cut.
For magnitude-limited surveys:
Usage
from cosmo_wap.lib.luminosity_funcs import Model3LuminosityFunction
from cosmo_wap.lib import utils
import numpy as np
cosmo = utils.get_cosmo()
LF = Model3LuminosityFunction(cosmo)
z = np.linspace(0.9, 1.8, 50)
F_c = 2e-16 # erg/cm²/s
# Number density
n_g = LF.number_density(F_c, z)
# Magnification and evolution biases
Q = LF.get_Q(F_c, z)
be = LF.get_be(F_c, z)
# Linear bias - from a magnitude dependent parameterization
b1 = LF.get_b_1(F_c, z)