LSSTDESC / CCL

DESC Core Cosmology Library: cosmology routines with validated numerical accuracy
BSD 3-Clause "New" or "Revised" License
133 stars 64 forks source link

Adding prescription of Costanzi et al. 2013 for evaluating the halo mas function in nuCDM cosmologies #1185

Closed DelonShen closed 2 weeks ago

DelonShen commented 3 weeks ago

Neutrinos don’t cluster on halo scales and thus contribute negligibly to the collapse of massive dark matter halos. So, the halo mass function (HMF) should depend only on cold dark matter and baryons in nuCDM cosmologies. For cosmologies with massive neutrinos, it was found by Costanzi et al. 2013 that using Plin_(CDM + Baryon) instead of Plin_matter when computing the HMF is important for the universality of the Tinker et al. 2008 mass function in nuCDM cosmologies. This prescription is used in cluster cosmology analyses (e.g. the DES Y1 analysis in To et al. 2021).

For this PR, I just implemented the suggestion by Vittorio Ghirardini in #1179 to add the option of using this prescription in CCL

coveralls commented 3 weeks ago

Pull Request Test Coverage Report for Build 9424162289

Details


Changes Missing Coverage Covered Lines Changed/Added Lines %
pyccl/boltzmann.py 7 8 87.5%
pyccl/halos/halo_model_base.py 7 8 87.5%
<!-- Total: 14 16 87.5% -->
Totals Coverage Status
Change from base Build 9021835287: -0.02%
Covered Lines: 6568
Relevant Lines: 6741

💛 - Coveralls
damonge commented 2 weeks ago

Thanks @DelonShen

One issue with this is the following: a while ago we started implementing a more general way to deal with power spectra in CCL. The idea was that cosmology objects would be able to store a dictionary of Pks, which would include Pmm, but also Pmw, Pww (where w is the Weyl potential for lensing in non-LCDM models), and any other relevant power spectra. In practice, this dictionary currently only holds one power spectrum, labelled "delta_matter:delta_matter".

The ideal way to implement what you're suggesting would be, instead, to have the CCL cosmology object read in both delta_matter:delta_matter and delta_cb:delta_cb from CAMB, and then only use the latter for halo model calculations. Implementing this, however, may involve more work than you might have expected to devote to this!