skypyproject / skypy

SkyPy: A package for modelling the Universe.
BSD 3-Clause "New" or "Revised" License
118 stars 38 forks source link

BUG: Overgeneration of galaxies #576

Open Fox-Davidson opened 1 year ago

Fox-Davidson commented 1 year ago

Describe the bug When calculating the number density of galaxies for redshift sampling in 'schechter lf redshift' (/galaxies/redshift.py) there is a missing factor of h0^3. This is required due to the units of phi*. Not including this factor can overgenerate the number of galaxies by a factor of 3 (given h=0.7) for the entire magnitude/luminosity function.

To Reproduce Steps to reproduce the behaviour:

  1. Generate a catalogue of galaxies
  2. Integrate the expected magnitude Schechter function with the values used in the YAML file by volume defined by skyarea
  3. Create a histogram (or extract values) from the catalogue with the same bins as the above integral
  4. Plot these together, there should be a significantly increased number in the catalogue values compared to the analytical values Please see the Jupyter Notebook and YAML files attached (I couldn't attach them in their native forms so hopefully they are still helpful)

Expected behaviour The catalogue values should exactly follow the analytical plot as they are sampled from the same distribution

Desktop (please complete the following information):

itrharrison commented 1 year ago

Hi @Fox-Davidson, thanks for this PR! Am I right in saying this could also be fixed by making your units for phi* have a h_0 in them? I think doing that + updating the documentation to specify that normalisation constants should have those units would be better than putting h_0 units in here, which we had discussed before and decided not to do.

Fox-Davidson commented 1 year ago

Action: Add more specific guidance to the contributing guidelines for the consistency in h units. The user should put in and receive h-less units (ie where there is no h unit present as a variable).