Skip to content

A python module to implement the halo mass corrections based on Illustris, IllustrisTNG, and EAGLE given in Beltz-Mohrmann et al. (2020).

License

Notifications You must be signed in to change notification settings

gbeltzmo/halo_mass_correction

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

README

These are halo mass corrections based on the Illustris, IllustrisTNG, and EAGLE simulations.

If you make use of the halo mass corrections in this repository, we ask that you please cite Beltz-Mohrmann, G. D. & Berlind, A. A., "The impact of baryonic physics on the abundance, clustering, and concentration of halos", 2021, submitted to The Astrophysical Journal.

After cloning the repository you must add it to your PYTHONPATH.

The corrections are 7th order polynomials, and the coefficients are given in order from lowest to highest, i.e. h,g,f,e,d,c,b,a.

The corrected DMO halo masses (in units of 1010 h-1 M) are given by

Mh,corrected = (y + 1) Mh,DMO

where Mh,DMO is the unlogged original halo mass in units of 1010 h-1 M, and

y = ax7 + bx6 + cx5 + dx4 + ex3 + fx2 + gx + h

where x = log10(Mh,DMO) and a through h are the polynomial coefficients for a given simulation, halo definition, redshift, and environment.

The code takes 5 arguments: halo masses (nd.array), environment ('all', 'high', 'low'), halo definition ('200b', 'fof', 'vir', '200c', '500c'), redshift (0,1,2), and simulation ('illustris', 'tng', 'eagle'). The code returns an array of corrected halo masses.

If you are interested in the halo mass correction for a redshift not given here, please contact [email protected].

Example usage:

import numpy as np
import halo_mass_correction as hmc

masses = np.array([1e14, 1e13, 1e12, 1e11, 1e10])

corrected = hmc.correction(halo_masses=masses, env='all', halo_def='200b', redshift=0, sim='tng')

The code has a lower mass limit of 1010 h-1 M. Additionally, each environment/halo definition/redshift/simulation combination has an upper mass limit. If a given halo mass is outside the acceptable mass range, the code will issue a warning, and return the original (uncorrected) halo mass for that halo.

If the environment provided is 'all' the code expects to take in an array of all halos, regardless of their environment. If the environment provided is 'high' the code expects to take in an array of only halos in high-density environments. Likewise, if the environment provided is 'low' the code expects to take in an array of only halos in low-density environments.

Our halo environment measure is the mass (in halos) in 5 Mpc spheres centered on each halo of interest. (For this, we measure the environment on all DMO halos above 1010 h-1 M, and on all hydrodynamic halos above 8 x 109 h-1 M.) Within the 5 Mpc sphere, we do not sum up all particles, but rather sum up all the mass within halos (of any size).

We can also define an environment factor δ for each halo, such that δ = (δsphere / δbox) - 1, where δsphere is the mass in a 5 Mpc sphere around the halo divided by the volume of a 5 Mpc sphere, and δbox is the sum of all halo masses in the box divided by the volume of the box.

The median environment (mass) as well as the median δ used to split halos into high and low density environments for each simulation/halo definition/redshift are given in halo_environments.txt.

About

A python module to implement the halo mass corrections based on Illustris, IllustrisTNG, and EAGLE given in Beltz-Mohrmann et al. (2020).

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages