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: