More Detailed Models: The GalaxyPopulation object

Most of the global 21-cm examples in the documentation tie the volume-averaged emissivity of galaxies to the rate at which mass collapses into dark matter halos. Because of this, they are referred to as \(f_{\mathrm{coll}}\) models throughout, and are selected by setting pop_model='fcoll'. In the code, they are represented by GalaxyAggregate objects.

However, we can also run more detailed models in which the properties of galaxies are allowed to change as a function of halo mass, redshift, and/or potentially other quantities.

A few usual imports before we begin:

import ares
import numpy as np
import matplotlib.pyplot as pl

A Simple GalaxyPopulation

pars = \
{
 'pop_model': 'sfe',
 'pop_sed': 'eldridge2009',

 'pop_fstar': 'php',
 'php_func': 'dpl',
 'php_func_par0': 0.05,
 'php_func_par1': 1e11,
 'php_func_par2': 0.5,
 'php_func_par3': -0.5,
}
pop = ares.populations.GalaxyPopulation(**pars)

MUV = np.linspace(-24, -10)

pl.semilogy(MUV, pop.LuminosityFunction(4, MUV))

To compare to the observed galaxy luminosity function

obslf = ares.analysis.ObservedLF()
obslf.Plot(z=4, round_z=0.3)

The round_z makes it so that any dataset available in the range \(3.7 \leq z \leq 4.3`\) gets included in the plot.

Extrapolation options

It’s fairly easy to augment the double power-law used in the previous example. ‘php_faux{0}[0]’: ‘pl’, ‘php_faux_var{0}[0]’: ‘mass’, ‘php_faux_meth{0}[0]’: ‘add’, ‘php_faux_par0{0}[0]’: 0.005, ‘php_faux_par1{0}[0]’: 1e9, ‘php_faux_par2{0}[0]’: 0.01, ‘php_faux_par3{0}[0]’: 1e10,

Dimension \(f_{\ast}(M,z)\) options
logM poly lognormal  
(1+z) poly linear_t constant
Dimension \(L_h(M_h)\) options
logM poly pl  
(1+z) poly linear_t constant

Parameterized Halo Properties (PHPs)

In general, we can use the same approach outlined above to parameterize other quantities as a function of halo mass and/or redshift.

pars = \
{
 'pop_Tmin': 1e4,
 'pop_model': 'sfe',
 'pop_Macc': 'mcbride2009',

 'pop_sed': 'leitherer1999',

 'pop_fstar': 'php[0]',
 'php_Mfun[0]': 'dpl',
 'php_Mfun_par0[0]': 0.15,
 'php_Mfun_par1[0]': 1e12,
 'php_Mfun_par2[0]': 0.5,
 'php_Mfun_par3[0]': 0.5,

 'pop_fesc': 'php[1]',
 'php_Mfun[1]': 'dpl',
 'php_Mfun_par0[1]': 0.2,
 'php_Mfun_par1[1]': 0.,
 'php_Mfun_par2[1]': 0.05,
 'php_Mfun_par3[1]': 0.,
 'php_Mfun_par4[1]': 1e8,

}
pop = ares.populations.GalaxyPopulation(**pars)

MUV = np.linspace(-24, -10)

pl.semilogy(MUV, pop.LuminosityFunction(4, MUV))

Currently, the following parameters are supported by the PHP protocol:

  • pop_fstar
  • pop_fesc