Skip to content

Commit fba9a7f

Browse files
committed
Added peak-background split bias parameters
1 parent 632792c commit fba9a7f

File tree

4 files changed

+70
-4
lines changed

4 files changed

+70
-4
lines changed

Project.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
name = "HaloMF"
22
uuid = "0e139a23-195b-4aec-b8fc-e9aa4361bc8d"
3-
authors = ["Eiichiro Komatsu <eiichirokomatsu@me.com>"]
43
version = "0.5.0"
4+
authors = ["Eiichiro Komatsu <eiichirokomatsu@me.com>"]
55

66
[deps]
77
Dierckx = "39dd38d3-220a-591b-8e3c-4c3a8c710a94"
8+
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
89

910
[compat]
11+
ForwardDiff = "1.3.2"
1012
julia = "1"
1113

1214
[extras]

README.md

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,23 @@ Note:
3636

3737
## Classic multiplicity functions
3838

39-
The package als contains some of the classic halo multiplicity functions
39+
The package also contains some of the classic halo multiplicity functions
4040
- `psMF(lnν)`: [Press & Schechter, 187, 425 (1974)](http://articles.adsabs.harvard.edu/pdf/1974ApJ...187..425P)
4141
- `stMF(lnν)`: Equation (2) of [Sheth & Tormen, MNRAS, 329, 61 (2002)](https://academic.oup.com/mnras/article/329/1/61/1112679)
4242
- `jenkinsMF(lnν)`: Equation (B3) of [Jenkins et al., MNRAS, 321, 372 (2001)](https://academic.oup.com/mnras/article/321/2/372/980658)
4343

4444
These multiplicity functions are assumed to be "universal", in the sense that they depend only on ν and do not depend explicitly on `z`. This assumption was challenged by Tinker et al. (2008), hence the explicit dependence on `z` (see `tinker08MF` and `tinker10MF`).
4545

46+
## Halo bias parameters from the peak-background split approximation
47+
48+
The halo bias parameters can be calculated from a halo multiplicity function using the so-called peak-background split (PBS) approximation. See [Desjacques, Jeong & Schmdit, Phys. Rept., 733, 1 (2018)](https://www.sciencedirect.com/science/article/pii/S0370157317304192).
49+
50+
The package contains
51+
- `pbsBias(lnν, MF)` and `pbsBias1(lnν, MF)`: The linear bias parameter from the PBS.
52+
- `pbsBias2(lnν, MF)`: The second-order bias parameter from the PBS.
53+
54+
Here, `MF(lnν)` is any of the halo multiplicity functions from the above list. For example, ``pbsBias(lnν, stMF)`` and ``pbsBias(lnν, x -> tinker10MF(x, z, Δm))``.
55+
4656
## On normalization
4757

4858
Some of the multiplicity functions (`tinker10MF` for `z=0`, `psMF`, `stMF`) are normalized such that
@@ -55,7 +65,7 @@ This normalization is equivalent to saying that all the mass in the Universe is
5565

5666
where ρm is the mean mass density of the (present-day) Universe. This normalization is convenient mathematically but is not necessarily physical; thus, you do not have to pay too much attention to this. It is certainly useful for checking the code when the MF is normalized.
5767

58-
The linear bias parameters (`tinker10Bias` and `stBias`) are also normalized such that
68+
The linear bias parameters (`tinker10Bias`, `stBias`) are also normalized such that
5969

6070
- ``∫_-∞^∞ dlnν tinker10Bias(lnν, Δm) * tinker10MF(lnν, 0, Δm) = 1``
6171
- ``∫_-∞^∞ dlnν stBias(lnν) * stMF(lnν) = 1``
@@ -66,6 +76,8 @@ The nonlinear bias parameters (`stBias2` and `stBias3`) satisfy
6676
- ``∫_-∞^∞ dlnν stBias2(lnν) * stMF(lnν) = 0``
6777
- ``∫_-∞^∞ dlnν stBias3(lnν) * stMF(lnν) = 0``
6878

79+
The halo bias parameters from the peak-background split approximation also satisfy the above relationships by construction.
80+
6981
## Relation to the halo mass function
7082

7183
The halo mass function, dn/dM, can be computed from the halo multiplicity function, `MF`, in the following way.

src/HaloMF.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
module HaloMF
2-
using Dierckx
2+
using Dierckx, ForwardDiff
33
export tinker08MF, tinker10MF
44
export bocquetMFhy, bocquetMFdm
55
export psMF, stMF, jenkinsMF
66
export stBias, stBias1, stBias2, stBias3
77
export tinker10Bias
8+
export pbsBias, pbsBias1, pbsBias2
89
include("tinkerMF.jl")
910
include("bocquetMF.jl")
1011
include("classicMF.jl")
1112
include("stBias.jl")
1213
include("tinkerBias.jl")
14+
include("pbsBias.jl")
1315
end # module

src/pbsBias.jl

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
"""
2+
pbsBias(lnν, MF)
3+
pbsBias1(lnν, MF)
4+
5+
Linear halo bias, b1(lnν), from the peak-background split (PBS) approximation.
6+
7+
*Reference*: Section 3.3 of Desjacques, Jeong & Schmidt, Phys. Rept., 733, 1 (2018)
8+
9+
# Arguments
10+
- `lnν::Real`: natural logarithm of a threshold, ν, i.e., `lnν` = log(ν), defined by ν ≡ [δc/σ(R,z)]^2. Here, δc = 1.6865 and σ(R,z) is the r.m.s. mass fluctuation within
11+
a top-hat smoothing of scale R at a redshift `z`.
12+
- `MF`(lnν): a function which returns a halo multiplicity function with the argument lnν.
13+
14+
The linear PBS bias is normalized as
15+
16+
``∫_-∞^∞ dlnν MF(lnν) pbsBias(MF) = 1``
17+
"""
18+
function pbsBias(lnν::Real, MF)
19+
δc = 1.6865
20+
b1 = 1 - ForwardDiff.derivative(MF, lnν) * 2 / δc / MF(lnν)
21+
return b1
22+
end
23+
const pbsBias1 = pbsBias
24+
25+
"""
26+
pbsBias2(lnν, MF)
27+
28+
Second-order PBS halo bias, b2(lnν), from the peak-background split (PBS) approximation.
29+
30+
*Reference*: Section 3.3 of Desjacques, Jeong & Schmidt, Phys. Rept., 733, 1 (2018)
31+
32+
# Arguments
33+
- `lnν::Real`: natural logarithm of a threshold, ν (see `pbsBias`).
34+
- `MF`(lnν): a function which returns a halo multiplicity function with the argument lnν.
35+
36+
The second-order PBS bias satisfies
37+
38+
``∫_-∞^∞ dlnν MF(lnν) pbsBias2(MF) = 0``
39+
"""
40+
function pbsBias2(lnν::Real, MF)
41+
δc = 1.6865
42+
a2 = -17 / 21
43+
dMFdlnν(x) = ForwardDiff.derivative(MF, x)
44+
b2 = (
45+
-2 * (1 + a2) * dMFdlnν(lnν) * 2 / δc / MF(lnν) +
46+
ForwardDiff.derivative(dMFdlnν, lnν) * 4 / δc^2 / MF(lnν) -
47+
dMFdlnν(lnν) * 2 / δc^2 / MF(lnν)
48+
)
49+
return b2
50+
end

0 commit comments

Comments
 (0)