The Luminosity Function Module
- class atelier.lumfun.Akiyama2018QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Akiyama+2018 at z~4.
ADS reference: https://ui.adsabs.harvard.edu/abs/2018ApJ…869..150M/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
This implementation adopts the double power law fit presented in Table 5 (“Maximum Likelihood”).
- class atelier.lumfun.Boutsia2021_QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Boutsia+2021 at z~3.9.
ADS reference: https://ui.adsabs.harvard.edu/abs/2021ApJ…912..111B/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
The fit in Boutsia+2021 includes QLF determinations of Fontanot+2007, Glikman+2011, Boutsia+2018, and Giallongo+2019 at fainter magnitudes.
This implementation adopts the double power law fit presented in Table 4.
- class atelier.lumfun.DoublePowerLawLF(parameters, param_functions, lum_type=None, cosmology=None, ref_cosmology=None, ref_redsh=None, verbose=1)
Luminosity function, which takes the functional form of a double power law with the luminosity in absolute magnitudes.
The luminosity function has four main parameters:
“phi_star”: the overall normalization
“lum_star”: the break luminosity/magnitude where the power law slopes change.
“alpha”: the first power law slope
“beta”: the second power law slope
- calc_ionizing_emissivity_at_1450A(redsh, lum_range, **kwargs)
Calculate the ionizing emissivity at rest-frame 1450A, \(\epsilon_{1450}\), in units of erg s^-1 Hz^-1 Mpc^-3.
This function integrates the luminosity function at redshift “redsh” over the luminosity interval “lum_range” to calculate the ionizing emissivity at rest-frame 1450A.
Calling this function is only valid if the luminosity function “lum_type” argument is “lum_type”=”M1450”.
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
lum_range (tuple) – Luminosity range
- Returns:
Ionizing emissivity (erg s^-1 Hz^-1 Mpc^-3)
- Return type:
float
- evaluate(lum, redsh, parameters=None)
Evaluate the double power law as a function of magnitude (“lum”) and redshift (“redsh”).
Function to be evaluated: atelier.lumfun.mag_double_power_law()
- Parameters:
lum (float or numpy.ndarray) – Luminosity for evaluation
redsh (float or numpy.ndarray) – Redshift for evaluation
parameters (dict(atelier.lumfun.Parameters)) – Dictionary of parameters used for this specific calculation. This does not replace the parameters with which the luminosity function was initialized. (default=None)
- Returns:
Luminosity function value
- Return type:
(numpy.ndarray,numpy.ndarray)
- class atelier.lumfun.Giallongo2019_4p5_QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Giallongo+2019 at z~4.5.
ADS reference: https://ui.adsabs.harvard.edu/abs/2019ApJ…884…19G/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
The fit in Giallongo+2019 (model 1) includes QLF determinations of Fontanot+2007, Boutsia+2018, and Akiyama+2018 at brighter magnitudes.
This implementation adopts the double power law fit presented in Table 3 (model 1).
- class atelier.lumfun.Giallongo2019_5p6_QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Giallongo+2019 at z~5.6.
ADS reference: https://ui.adsabs.harvard.edu/abs/2019ApJ…884…19G/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
The fit in Giallongo+2019 (model 4) includes data from CANDELS and SDSS.
This implementation adopts the double power law fit presented in Table 3 (model 4).
- class atelier.lumfun.Hopkins2007QLF
Implementation of the bolometric quasar luminosity function of Hopkins+2007.
ADS reference: https://ui.adsabs.harvard.edu/abs/2007ApJ…654..731H/abstract
The luminosity function is described by Equations 6, 9, 10, 17, 19. The values for the best fit model adopted here are found in Table 3 in the row named “Full”.
- static alpha(redsh, z_ref, gamma_one, kg1)
Calculate the redshift dependent luminosity function slope alpha.
Equations 10, 17
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
z_ref (float) – Reference redshift
gamma_one (float) – Luminosity function power law slope at z_ref
kg1 (float) – Evolutionary parameter
- Returns:
- static beta(redsh, z_ref, gamma_two, kg2_1, kg2_2)
Calculate the redshift dependent luminosity function slope beta.
Equations 10, 19 and text on page 744 (bottom right column)
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
z_ref (float) – Reference redshift
gamma_two (float) – Luminosity function power law slope at z_ref
kg2_1 (float) – Evolutionary parameter
kg2_2 (float) – Evolutionary parameter
- Returns:
- evaluate(lum, redsh, parameters=None)
Evaluate the Hopkins+2007 bolometric luminosity function.
Function to be evaluated: atelier.lumfun.lum_double_power_law()
- Parameters:
lum (float or numpy.ndarray) – Luminosity for evaluation
redsh (float or numpy.ndarray) – Redshift for evaluation
parameters (dict(atelier.lumfun.Parameters)) – Dictionary of parameters used for this specific calculation. This does not replace the parameters with which the luminosity function was initialized. (default=None)
- Returns:
Luminosity function value
- Return type:
(numpy.ndarray,numpy.ndarray)
- static lum_star(redsh, z_ref, log_lum_star, kl1, kl2, kl3)
Calculate the redshift dependent break luminosity (Eq. 9, 10)
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
z_ref (float) – Reference redshift
log_lum_star (float) – Logarithmic break magnitude at z_ref
kl1 (float) – Function parameter kl1
kl2 (float) – Function parameter kl2
kl3 (float) – Function parameter kl3
- Returns:
Redshift dependent break luminosity
- Return type:
float
- static phi_star(log_phi_star)
Calculate the break luminosity number density
- Parameters:
log_phi_star – Logarithmic break luminosity number density
- Returns:
- class atelier.lumfun.JiangLinhua2016QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Jiang+2016 at z~6.
ADS reference:
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
This implementation adopts the double power law fit described in Section 4.5
- static phi_star(redsh, phi_star_z6, k, z_ref)
Calculate the redshift dependent luminosity function normalization.
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
phi_star_z6 (float) – Logarithmic source density at z=6
k (float) – Power law exponent of density evolution
z_ref (float) – Reference redshift
- Returns:
- class atelier.lumfun.Kim2020_QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Kim+2020 at z~5.
ADS reference: https://ui.adsabs.harvard.edu/abs/2020ApJ…904..111K/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
The fit in Kim+2020 includes data from Yang+2016 at brighter luminosities.
This implementation adopts the double power law fit presented in Table 6, Case 1.
- static phi_star(redsh, log_phi_star)
- Parameters:
redsh –
log_phi_star –
- Returns:
- class atelier.lumfun.Kulkarni2019QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Kulkarni+2019 at z~1-6.
ADS reference: https://ui.adsabs.harvard.edu/abs/2019MNRAS.488.1035K/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
This implementation adopts the double power law fit presented in Table 3 (“Model 3”).
- static alpha(redsh, c2_0, c2_1)
- Parameters:
redsh –
c2_0 –
c2_1 –
- Returns:
- static beta(redsh, c3_0, c3_1)
- Parameters:
redsh –
c3_0 –
c3_1 –
- Returns:
- static lum_star(redsh, c1_0, c1_1, c1_2, c1_3)
- Parameters:
redsh –
c1_0 –
c1_1 –
c1_2 –
c1_3 –
- Returns:
- static phi_star(redsh, c0_0, c0_1, c0_2)
- Parameters:
redsh –
c0_0 –
c0_1 –
c0_2 –
- Returns:
- class atelier.lumfun.LuminosityFunction(parameters, param_functions, main_parameters, lum_type=None, cosmology=None, ref_cosmology=None, ref_redsh=None, verbose=1)
The base luminosity function class.
In this implementation a luminosity function is defined in terms of
luminosity (“lum”) and
redshift (“redsh”)
a list of main parameters (“main_parameters”)
The number of main parameters depend on the functional form and can themselves be functions (“param_functions”) of luminosity, redshift or additional “parameters”.
This general framework should facilitate the implementation of a wide range of luminosity functions without confining limits.
An automatic initialization will check whether the parameter functions and parameters define all necessary main parameters.
While the code does not distinguish between continuum luminosities, broad band luminosities or magnitudes, some inherited functionality is based on specific luminosity definitions. In order for these functions to work a luminosity type “lum_type” has to be specified. The following luminosity types have special functionality:
“M1450” : Absolute continuum magnitude measured at 1450A in the rest-frame.
- parameters
Dictionary of Parameter objects, which are used either as a main parameters for the calculation of the luminosity function or as an argument for calculating a main parameter using a specified parameter function “param_function”.
- Type:
dict(atelier.lumfun.Parameter)
- param_functions
Dictionary of functions with argument names for which the parameter attribute provides a Parameter or the luminosity “lum” or the redshift “redsh”.
- Type:
dict(functions}
- main_parameters
List of string providing names for the main parameters of the luminosity function. During the initialization the main parameters need to be either specified as a Parameter within the “parameters” attribute or as a function by the “param_functions” attribute.
- Type:
list(string)
- lum_type
Luminosity type checked for specific functionality
- Type:
string (default=None)
- verbose
Verbosity (0: no output, 1: minimal output)
- Type:
int
- evaluate(lum, redsh, parameters=None)
Evaluate the luminosity function at the given luminosity and redshift.
:raise NotImplementedError
- Parameters:
lum (float or numpy.ndarray) – Luminosity for evaluation
redsh (float or numpy.ndarray) – Redshift for evaluation
parameters (dict(atelier.lumfun.Parameters)) – Dictionary of parameters used for this specific calculation. This does not replace the parameters with which the luminosity function was initialized. (default=None)
- evaluate_main_parameters(lum, redsh, parameters=None)
Evaluate the main parameters of the luminosity function
- Parameters:
lum (Luminosity for evaluation) – float or numpy.ndarray
redsh (Redshift for evaluation) – float or numpy.ndarray
parameters (dict(atelier.lumfun.Parameters)) – Dictionary of parameters used for this specific calculation. This does not replace the parameters with which the luminosity function was initialized.
- Returns:
- get_free_parameter_names()
Return a list of names with all parameters for which vary == True.
- Returns:
Names of parameters with vary == True
- Return type:
list(str)
- get_free_parameters()
Return a dictionary with all parameters for which vary == True.
- Returns:
All parameters with vary == True
- Return type:
dict(atelier.lumfun.Parameter)
- integrate_lum(redsh, lum_range, **kwargs)
Calculate the volumetric source density described by the luminosity function at a given redshift and over a luminosity interval in units of per Mpc^3.
- Parameters:
redsh (float) – Redshift
lum_range (tuple) – Luminosity range
kwargs –
- Returns:
\(\int \Phi(L,z) dL\)
- Return type:
float
- integrate_over_lum_redsh(lum_range, redsh_range, dVdzdO=None, selfun=None, cosmology=None, **kwargs)
Calculate the number of sources described by the luminosity function over a luminosity and redshift interval in units of per steradian.
Either a cosmology or dVdzdO have to be supplied.
- Parameters:
lum_range (tuple) – Luminosity range
redsh_range (tuple) – Redshift range
dVdzdO (function) – Differential comoving solid volume element (default = None)
selfun (atelier.selfun.QsoSelectionFunction) – Selection function (default = None)
cosmology (astropy.cosmology.Cosmology) – Cosmology (default = None)
kwargs –
- Returns:
\(N = \int\int\Phi(L,z) (dV/(dz d\Omega)) dL dz\)
- Return type:
float
- integrate_over_lum_redsh_appmag_limit(lum_range, redsh_range, appmag_limit, kcorrection, dVdzdO=None, selfun=None, cosmology=None, initial_lum_bin_width=0.1, initial_redsh_bin_width=0.05, minimum_probability=0.001, **kwargs)
- Parameters:
lum_range –
redsh_range –
appmag_limit –
kcorrection –
dVdzdO –
selfun –
cosmology –
initial_lum_bin_width –
initial_redsh_bin_width –
minimum_probability –
kwargs –
- Returns:
- integrate_over_lum_redsh_simpson(lum_range, redsh_range, dVdzdO=None, selfun=None, cosmology=None, initial_lum_bin_width=0.1, initial_redsh_bin_width=0.05, minimum_probability=0.001, **kwargs)
Calculate the number of sources described by the luminosity function over a luminosity and redshift interval in units of per steradian.
The integration is done on a grid using the Simpson rule.
This allows the selection function to be precalculated on the grid values for speed up of the integration process.
This code is in large part adopted from https://github.com/imcgreer/simqso/blob/master/simqso/lumfun.py lines 591 and following.
Either a cosmology or dVdzdO have to be supplied.
- Parameters:
lum_range (tuple) – Luminosity range
redsh_range (tuple) – Redshift range
dVdzdO (function) – Differential comoving solid volume element (default = None)
selfun (atelier.selfun.QsoSelectionFunction) – Selection function (default = None)
cosmology (astropy.cosmology.Cosmology) – Cosmology (default = None)
kwargs –
- Returns:
\(N = \int\int\Phi(L,z) (dV/(dz d\Omega)) dL dz\)
- Return type:
float
- integrate_to_luminosity_density(lum_range, redsh, **kwargs)
- Parameters:
lum_range –
redsh –
dVdzdO –
- Returns:
\(\int \Phi(L,z) L (dV/dz){d\Omega} dL\)
- print_free_parameters()
Print a list of all free (vary==True) parameters.
- print_parameters()
Print a list of all parameters.
- redshift_density(redsh, lum_range, dVdzdO, **kwargs)
Calculate the volumetric source density described by the luminosity function at a given redshift and over a luminosity interval in units of per steradian per redshift.
- Parameters:
redsh (float) – Redshift
lum_range (tuple) – Luminosity range
dVdzdO (function) – Differential comoving solid volume element (default = None)
kwargs –
- Returns:
\(\int \Phi(L,z) (dV/dz){d\Omega} dL\)
- Return type:
float
- sample(lum_range, redsh_range, cosmology, sky_area, seed=1234, lum_res=0.01, redsh_res=0.01, verbose=1, **kwargs)
- Sample the luminosity function over a given luminosity and
redshift range.
This sampling routine is in large part adopted from https://github.com/imcgreer/simqso/blob/master/simqso/lumfun.py , lines 219 and following.
If the integral over the luminosity function does not have an analytical implementation, integrals are calculated using integrate.romberg, which can take a substantial amount of time.
- Parameters:
lum_range (tuple) – Luminosity range
redsh_range (tuple) – Redshift range
cosmology (astropy.cosmology.Cosmology) – Cosmology (default = None)
sky_area (float) – Area of the sky to be sampled in square degrees
seed (int) – Random seed for the sampling
lum_res (float) – Luminosity resolution (default = 1e-2, equivalent to 100 bins)
redsh_res (float) – Redshift resolution (default = 1e-2, equivalent to 100 bins)
verbose (int) – Verbosity
- Returns:
Source sample luminosities and redshifts
- Return type:
(numpy.ndarray,numpy.ndarray)
- update()
Update the lumfun class parameters after a manual input.
- Returns:
- update_free_parameter_values(values)
Update all free parameters with new values.
- Parameters:
values (list(float)) – Values in the same order as the order of free parameters.
- class atelier.lumfun.Matsuoka2018QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Matsuoka+2018 at z~6.
ADS reference: https://ui.adsabs.harvard.edu/abs/2018ApJ…869..150M/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
This implementation adopts the double power law fit presented in Table 5 (“standard”).
- static phi_star(redsh, phi_star_z6, k, z_ref)
Calculate the redshift dependent luminosity function normalization.
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
phi_star_z6 (float) – Logarithmic source density at z=6
k (float) – Power law exponent of density evolution
z_ref (float) – Reference redshift
- Returns:
- class atelier.lumfun.Matsuoka2023QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Matsuoka+2023 at z~7.
ADS reference: https://ui.adsabs.harvard.edu/abs/2023arXiv230511225M/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
This implementation adopts the double power law fit presented in Table 7 (standard model).
- static phi_star(redsh, phi_star_z7, k, z_ref)
Calculate the redshift dependent luminosity function normalization.
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
phi_star_z7 (float) – Source density at z=6
k (float) – Power law exponent of density evolution
z_ref (float) – Reference redshift
- Returns:
- class atelier.lumfun.McGreer2018QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of McGreer+2018 at z~5 (z=4.9).
ADS reference: https://ui.adsabs.harvard.edu/abs/2018AJ….155..131M/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
This implementation adopts the best maximum likelihood estimate fit from the second column in Table 2.
- static phi_star(redsh, log_phi_star_z6, k, z_ref)
Calculate the redshift dependent luminosity function normalization.
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
log_phi_star_z6 (float) – Logarithmic source density at z=6
k (float) – Power law exponent of density evolution
z_ref (float) – Reference redshift
- Returns:
- class atelier.lumfun.Niida2020_QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Niida+2020 at z~5.
ADS reference: https://ui.adsabs.harvard.edu/abs/2020ApJ…904…89N/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
The fit in Kim+2020 includes data from SDSS at brighter luminosities.
This implementation adopts the double power law fit presented in Table 6, Case 1.
- class atelier.lumfun.Onken2022_Niida_4p52_QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Onken+2022 at z~4.52.
ADS reference: https://ui.adsabs.harvard.edu/abs/2021arXiv210512215O/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
The maximum likelihood fit in Onken+2022 includes constraints of Niida+2020 at fainter magnitudes.
This implementation adopts the double power law fit presented in Table 4.
- class atelier.lumfun.Onken2022_Niida_4p83_QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Onken+2022 at z~4.83.
ADS reference: https://ui.adsabs.harvard.edu/abs/2021arXiv210512215O/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
The maximum likelihood fit in Onken+2022 includes constraints of Niida+2020 at fainter magnitudes.
This implementation adopts the double power law fit presented in Table 4.
- class atelier.lumfun.PanZhiwei2022_3p8_QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Zhiwei Pan+2022 at z~3.8.
ADS reference: https://ui.adsabs.harvard.edu/abs/2022ApJ…928..172P/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
This implementation adopts the double power law fit presented in Table 5 denoted as (O+S+L) “Best fit”.
- static phi_star(redsh, log_phi_star)
Calculate the redshift dependent luminosity function normalization.
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
log_phi_star (float) – Logarithmic source density at z=6
- Returns:
- class atelier.lumfun.PanZhiwei2022_4p25_QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Zhiwei Pan+2022 at z~4.25.
ADS reference: https://ui.adsabs.harvard.edu/abs/2022ApJ…928..172P/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
This implementation adopts the double power law fit presented in Table 5 denoted as (O+S+L) “Best fit”.
- static phi_star(redsh, log_phi_star)
Calculate the redshift dependent luminosity function normalization.
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
log_phi_star (float) – Logarithmic source density at z=6
- Returns:
- class atelier.lumfun.PanZhiwei2022_4p7_QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Zhiwei Pan+2022 at z~4.7.
ADS reference: https://ui.adsabs.harvard.edu/abs/2022ApJ…928..172P/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
This implementation adopts the double power law fit presented in Table 5 denoted as (O+S+L) “Best fit”.
- static phi_star(redsh, log_phi_star)
Calculate the redshift dependent luminosity function normalization.
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
log_phi_star (float) – Logarithmic source density at z=6
- Returns:
- class atelier.lumfun.Parameter(value, name, bounds=None, vary=True, one_sigma_unc=None)
A class providing a data container for a parameter used in the luminosity function class.
- value
Value of the parameter
- Type:
float
- name
Name of the parameter
- Type:
string
- bounds
Bounds of the parameter, used in fitting
- Type:
tupler
- vary
Boolean to indicate whether this parameter should be varied, used in fitting
- Type:
bool
- one_sigma_unc
1 sigma uncertainty of the parameter.
- Type:
list (2 elements)
- class atelier.lumfun.Richards2006QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Richards+2006 (z=1-5).
ADS reference:
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes Mi(z=2. We convert the Mi( z=2) magnitudes to M1450 using a simple conversion factor (see Ross+2013).
M1450(z=0) = Mi(z=2) + 1.486
This implementation adopts the double power law fit presented in Table 7 (variable power law).
- evaluate(lum, redsh, parameters=None)
Evaluate the single power law as a function of magnitude (“lum”) and redshift (“redsh”) for the Richards 2006 QLF.
Function to be evaluated: atelier.lumfun.richards_single_power_law()
- Parameters:
lum (float or numpy.ndarray) – Luminosity for evaluation
redsh (float or numpy.ndarray) – Redshift for evaluation
parameters (dict(atelier.lumfun.Parameters)) – Dictionary of parameters used for this specific calculation. This does not replace the parameters with which the luminosity function was initialized. (default=None)
- Returns:
Luminosity function value
- Return type:
(numpy.ndarray,numpy.ndarray)
- static phi_star(redsh, log_phi_star)
- Parameters:
redsh –
log_phi_star –
- Returns:
- class atelier.lumfun.SchechterLF(parameters, param_functions, lum_type=None, ref_cosmology=None, ref_redsh=None, cosmology=None, verbose=1)
Schechter luminosity function
- evaluate(lum, redsh, parameters=None)
Evaluate the Schechter function as a function of magnitude (“lum”) and redshift (“redsh”).
Function to be evaluated: atelier.lumfun.mag_schechter
- Parameters:
lum (float or numpy.ndarray) – Luminosity for evaluation
redsh (float or numpy.ndarray) – Redshift for evaluation
parameters (dict(atelier.lumfun.Parameters)) – Dictionary of parameters used for this specific calculation. This does not replace the parameters with which the luminosity function was initialized. (default=None)
- Returns:
Luminosity function value
- Return type:
(numpy.ndarray,numpy.ndarray)
- class atelier.lumfun.Schindler2019_2p9_QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Schindler+2019 at z~2.9.
ADS reference: https://ui.adsabs.harvard.edu/abs/2019ApJ…871..258S/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
The maximum likelihood fit in Schindler+2019 includes the quasar sample of Ross+2013 at fainter magnitudes.
This implementation adopts the double power law fit presented in Table 7.
- class atelier.lumfun.Schindler2019_3p25_QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Schindler+2019 at z~3.25.
ADS reference: https://ui.adsabs.harvard.edu/abs/2019ApJ…871..258S/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
The maximum likelihood fit in Schindler+2019 includes the quasar sample of Ross+2013 at fainter magnitudes.
This implementation adopts the double power law fit presented in Table 7.
- class atelier.lumfun.Schindler2019_3p75_QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Schindler+2019 at z~3.75.
ADS reference: https://ui.adsabs.harvard.edu/abs/2019ApJ…871..258S/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
The maximum likelihood fit in Schindler+2019 includes the quasar sample of Richards+2096 at fainter magnitudes.
This implementation adopts the double power law fit presented in Table 7.
- class atelier.lumfun.Schindler2019_4p25_QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Schindler+2019 at z~4.25.
ADS reference: https://ui.adsabs.harvard.edu/abs/2019ApJ…871..258S/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
The maximum likelihood fit in Schindler+2019 includes the quasar sample of Richards+2096 at fainter magnitudes.
This implementation adopts the double power law fit presented in Table 7.
- class atelier.lumfun.Schindler2019_LEDE_QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Schindler+2019 with LEDE evolution.
ADS reference: https://ui.adsabs.harvard.edu/abs/2019ApJ…871..258S/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
The LEDE model was fit to a range of binned QLF measurements using chi-squared minimzation.
This implementation adopts the LEDE double power law fit presented in Table 8.
- static lum_star(redsh, lum_star_z2p2, c2)
Calculate the redshift dependent break magnitude.
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
lum_star_z2p2 (float) – Break magnitude at z=2.2
c2 (float) – Redshift evolution parameter
- Returns:
- static phi_star(redsh, log_phi_star_z2p2, c1)
Calculate the redshift dependent luminosity function normalization.
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
log_phi_star_z2p2 (float) – Logarithmic source density at z=2.2
c1 (float) – Redshift evolution parameter
- Returns:
- class atelier.lumfun.Schindler2023QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Schindler+2023 at z~6.
ADS reference: https://ui.adsabs.harvard.edu/abs/2023ApJ…943…67S/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
This implementation adopts the double power law fit presented in Table 4 (first row).
- static phi_star(redsh, log_phi_star_z6, k, z_ref)
Calculate the redshift dependent luminosity function normalization.
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
phi_star_z6 (float) – Logarithmic source density at z=6
k (float) – Power law exponent of density evolution
z_ref (float) – Reference redshift
- Returns:
- class atelier.lumfun.ShenXuejian2020QLF
Shen+2020 bolometric quasar luminosity function; global fit B
- static alpha(redsh, a0, a1, z_ref)
- Parameters:
redsh –
a0 –
a1 –
z_ref –
- Returns:
- static beta(redsh, b0, b1, b2, z_ref)
- Parameters:
redsh –
b0 –
b1 –
b2 –
z_ref –
- Returns:
- evaluate(lum, redsh, parameters=None)
Evaluate the Shen+2020 bolometric luminosity function.
Function to be evaluated: atelier.lumfun.lum_double_power_law()
- Parameters:
lum (float or numpy.ndarray) – Luminosity for evaluation
redsh (float or numpy.ndarray) – Redshift for evaluation
parameters (dict(atelier.lumfun.Parameters)) – Dictionary of parameters used for this specific calculation. This does not replace the parameters with which the luminosity function was initialized. (default=None)
- Returns:
Luminosity function value
- Return type:
(numpy.ndarray,numpy.ndarray)
- static lum_star(redsh, c0, c1, c2, z_ref)
- Parameters:
redsh –
c0 –
c1 –
c2 –
z_ref –
- Returns:
- class atelier.lumfun.SinglePowerLawLF(parameters, param_functions, lum_type=None, ref_cosmology=None, ref_redsh=None, cosmology=None, verbose=1)
Luminosity function, which takes the functional form of a single power law with the luminosity in absolute magnitudes.
The luminosity function has three main parameters:
“phi_star”: the overall normalization
“alpha”: the first power law slope
“lum_ref”: the break luminosity/magnitude where the power law slopes change.
- calc_ionizing_emissivity_at_1450A(redsh, lum_range, **kwargs)
Calculate the ionizing emissivity at rest-frame 1450A, \(\epsilon_{1450}\), in units of erg s^-1 Hz^-1 Mpc^-3.
This function integrates the luminosity function at redshift “redsh” over the luminosity interval “lum_range” to calculate the ionizing emissivity at rest-frame 1450A.
Calling this function is only valid if the luminosity function “lum_type” argument is “lum_type”=”M1450”.
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
lum_range (tuple) – Luminosity range
- Returns:
Ionizing emissivity (erg s^-1 Hz^-1 Mpc^-3)
- Return type:
float
- evaluate(lum, redsh, parameters=None)
Evaluate the single power law as a function of magnitude (“lum”) and redshift (“redsh”).
Function to be evaluated: atelier.lumfun.mag_single_power_law()
- Parameters:
lum (float or numpy.ndarray) – Luminosity for evaluation
redsh (float or numpy.ndarray) – Redshift for evaluation
parameters (dict(atelier.lumfun.Parameters)) – Dictionary of parameters used for this specific calculation. This does not replace the parameters with which the luminosity function was initialized. (default=None)
- Returns:
Luminosity function value
- Return type:
(numpy.ndarray,numpy.ndarray)
- class atelier.lumfun.SmoothDoublePowerLawLF(parameters, param_functions, lum_type=None, cosmology=None, ref_cosmology=None, ref_redsh=None, verbose=1)
Luminosity function, which takes the functional form of a double power law with the luminosity in absolute magnitudes.
The luminosity function has four main parameters:
“phi_star”: the overall normalization
“lum_star”: the break luminosity/magnitude where the power law slopes change.
“alpha”: the first power law slope
“beta”: the second power law slope
“delta”: the smoothing parameter
- calc_ionizing_emissivity_at_1450A(redsh, lum_range, **kwargs)
Calculate the ionizing emissivity at rest-frame 1450A, \(\epsilon_{1450}\), in units of erg s^-1 Hz^-1 Mpc^-3.
This function integrates the luminosity function at redshift “redsh” over the luminosity interval “lum_range” to calculate the ionizing emissivity at rest-frame 1450A.
Calling this function is only valid if the luminosity function “lum_type” argument is “lum_type”=”M1450”.
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
lum_range (tuple) – Luminosity range
- Returns:
Ionizing emissivity (erg s^-1 Hz^-1 Mpc^-3)
- Return type:
float
- evaluate(lum, redsh, parameters=None)
Evaluate the double power law as a function of magnitude (“lum”) and redshift (“redsh”).
Function to be evaluated: atelier.lumfun.mag_double_power_law()
- Parameters:
lum (float or numpy.ndarray) – Luminosity for evaluation
redsh (float or numpy.ndarray) – Redshift for evaluation
parameters (dict(atelier.lumfun.Parameters)) – Dictionary of parameters used for this specific calculation. This does not replace the parameters with which the luminosity function was initialized. (default=None)
- Returns:
Luminosity function value
- Return type:
(numpy.ndarray,numpy.ndarray)
- class atelier.lumfun.WangFeige2019DPLQLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Wang+2019 at z~6.7.
ADS reference: https://ui.adsabs.harvard.edu/abs/2019ApJ…884…30W/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
This implementation adopts the double power law fit described in Section 5.5
- static phi_star(redsh, phi_star_z6p7, k, z_ref)
Calculate the redshift dependent luminosity function normalization.
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
phi_star_z6p7 (float) – Logarithmic source density at z=6
k (float) – Power law exponent of density evolution
z_ref (float) – Reference redshift
- Returns:
- class atelier.lumfun.WangFeige2019SPLQLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Wang+2019 at z~6.7.
ADS reference: https://ui.adsabs.harvard.edu/abs/2019ApJ…884…30W/abstract
The luminosity function is parameterized as a single power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
This implementation adopts the single power law fit described in Section 5.5
- class atelier.lumfun.Willott2010QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Willott+2010 at z~6.
ADS reference: https://ui.adsabs.harvard.edu/abs/2010AJ….139..906W/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
This implementation adopts the double power law fit presented in Section 5.2.
- static phi_star(redsh, phi_star_z6, k, z_ref)
Calculate the redshift dependent luminosity function normalization.
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
phi_star_z6 (float) – Logarithmic source density at z=6
k (float) – Power law exponent of density evolution
z_ref (float) – Reference redshift
- Returns:
- class atelier.lumfun.YangJinyi2016QLF(cosmology=None)
Implementation of the type-I quasar UV(M1450) luminosity function of Yang+2016 at z~5.
ADS reference: https://ui.adsabs.harvard.edu/abs/2016ApJ…829…33Y/abstract
The luminosity function is parameterized as a double power law with the luminosity variable in absolute magnitudes at 1450A, M1450.
The maximum likelihood fit in Yang+2016 includes the quasar samples of McGreer+2013 at fainter magnitudes (i.e., the SDSS DR7 and Stripe 82 samples).
This implementation adopts the double power law fit presented in Section 5.2.
- static phi_star(redsh, log_phi_star_z6, k, z_ref)
Calculate the redshift dependent luminosity function normalization.
- Parameters:
redsh (float or numpy.ndarray) – Redshift for evaluation
phi_star_z6 (float) – Logarithmic source density at z=6
k (float) – Power law exponent of density evolution
z_ref (float) – Reference redshift
- Returns:
- atelier.lumfun.interp_dVdzdO(redsh_range, cosmo)
Interpolate the differential comoving solid volume element \((dV/dz){d\Omega}\) over the specified redshift range zrange = \((z_1,z_2)\).
This interpolation speeds up volume (redshift, solid angle) integrations for the luminosity function without significant loss in accuracy.
The resolution of the redshift array, which will be interpolated is \(\Delta z=0.025\).
- Parameters:
redsh_range (tuple) – Redshift range for interpolation
cosmo (astropy.cosmology.Cosmology) – Cosmology
- Returns:
1D interpolation function
- atelier.lumfun.lum_double_power_law(lum, phi_star, lum_star, alpha, beta)
Evaluate a broken double power law luminosity function as a function of luminosity.
- Parameters:
lum (float or np.ndarray) – Luminosity
phi_star (float) – Normalization of the broken power law at a value of lum_star
lum_star (float) – Break luminosity of the power law
alpha (float) – First slope of the broken power law
beta (float) – Second slope of the broken power law
- Returns:
Value of the broken double power law at a magnitude of M
- Return type:
float or np.ndarray
- atelier.lumfun.mag_double_power_law(mag, phi_star, mag_star, alpha, beta)
Evaluate a broken double power law luminosity function as a function of magnitude.
- Parameters:
mag (float or np.ndarray) – Magnitude
phi_star (float) – Normalization of the broken power law at a value of mag_star
mag_star (float) – Break magnitude of the power law
alpha (float) – First slope of the broken power law
beta (float) – Second slope of the broken power law
- Returns:
Value of the broken double power law at a magnitude of M
- Return type:
float or np.ndarray
- atelier.lumfun.mag_schechter_function(mag, phi_star, mag_star, alpha)
Evaluate a Schechter luminosity function as a function of magnitude.
- Parameters:
mag –
phi_star –
mag_star –
alpha –
- Returns:
- atelier.lumfun.mag_single_power_law(mag, phi_star, mag_ref, alpha)
Evaluate a power law luminosity function as a function as a function of magnitude
- Parameters:
mag (float or np.ndarray) – Magnitude
phi_star (float) – Normalization of the power law at a value of mag_ref
mag_ref (float) – Reference magnitude of the power law
alpha (float) – Slope of the power law
- Returns:
Value of the broken double power law at a magnitude of M
- Return type:
float or np.ndarray
- atelier.lumfun.mag_smooth_double_power_law(mag, phi_star, mag_star, alpha, beta, log_delta)
Evaluate a smooth broken double power law luminosity function as a function of magnitude.
- param mag:
Magnitude
- type mag:
float or np.ndarray
- param phi_star:
Normalization of the broken power law at a value of mag_star
- type phi_star:
float
- param mag_star:
Break magnitude of the power law
- type mag_star:
float
- param alpha:
First slope of the broken power law
- type alpha:
float
- param beta:
Second slope of the broken power law
- type beta:
float
- param delta:
Smoothness parameter
- type delta:
float
- return:
Value of the broken double power law at a magnitude of M
- rtype:
float or np.ndarray
- atelier.lumfun.richards_single_power_law(mag, phi_star, mag_ref, alpha)
- Parameters:
mag –
phi_star –
mag_ref –
alpha –
- Returns: