Locked History Actions

DeepZot/Baofit/Validation

Fitter Demonstration and Validation

Binning

Use a 2D (r,mu) grid with 40 bins in r covering 40-200 Mpc/h, i.e., bin centers at r = 42,46,50,...,198 Mpc/h, and 20 bins in mu covering 0-1, i.e., bin centers at 0.025,0.075,...,0.975, and z = 2.25. The corresponding axis definitions are:

data-format = comoving-polar
axis1-bins = [40:200]*40
axis2-bins = [0:1]*20
axis3-bins = {2.25}

Theory

Use the linear LCDM template calculated at z = 2.25 with OmegaLambda = 0.73, OmegaBaryon*h^2 = 0.0227, h = 0.7 (whose multipoles from 40-200 Mpc/h are tabulated in models/DR9LyaMocks.<ell>.dat with <ell>=0,2,4). The corresponding theory configuration is:

modelroot = ../models/
fiducial =  DR9LyaMocks
nowiggles = DR9LyaMocksSB
zref = 2.25

Use the nominal BAO parameters and chose beta = 1.4 and bias*(1+beta) = -0.336. The floating parameters in the fit are the BAO scales alpha-par,perp and beta, with bias*(1+beta) fixed:

model-config = value[beta]=1.4;
model-config = fix[(1+beta)*bias]=-0.336;
model-config = fix[BAO amplitude]=1;
model-config = value[BAO alpha-p*]=1.0;

The theory vector calculated at the center of each bin is in demo/rmu.theory. Decouple the BAO scales from the cosmological broadband as in eqn (2.34). The corresponding configuration options are:

decoupled = yes
anisotropic = yes

Mock Data

Assume a diagonal covariance with each bin having the same variance of 1e-11. This is not particularly realistic, but small errors allow us to directly compare the fit results with a Fisher matrix prediction. Add a random noise realization sampled from this covariance to the theory vector. The resulting data vector and inverse covariance are in demo/rmu.data and demo/rmu.icov and are selected using:

data = demo/rmu
load-icov = yes

2D BAO Results

Fit the 2D (r,mu) data:

cd .../baofit/build
./baofit -i ../demo/rmu_to_bao.ini

The fit results are in excellent agreement with the predictions of an analytic Fisher matrix calculation:

Fit

chi^2 / dof

beta

alpha_par

alpha_perp

rho(beta,alpha_par)

rho(beta,alpha_perp)

rho(alpha_par,alpha_perp)

2D Fisher

+-0.0090

+- 0.0044

+- 0.0067

+0.0166

+0.0002

-0.4855

rmu_to_bao

758.506 / (800-3)

1.4094 +- 0.0091

0.9943 +- 0.0044

1.0026 +- 0.0066

+0.0144

+0.0027

-0.4855

Fit Multipoles to 2D

Next, fit the 2D (r,mu) data to determine its corresponding multipoles at r = 40,45,...,180 Mpc/h (29 points) using linear interpolation between these points:

xi-points = 40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180
xi-method = linear

There are several different ways to do this. First, we treat the ell=0,2,4 multipoles at each r as independent parameters, for a total of 3*29 = 87 floating parameters:

./baofit -i ../demo/rmu_to_multi.ini --output-prefix rmu_to_multi_0.

Next, we can fit for just the monopole and quadrupole, fixing the ell = 4 parameters to zero:

./baofit -i ../demo/rmu_to_multi.ini --output-prefix rmu_to_multi_1. --model-config="fix[Xi y-4-*]=0"

Finally, we can fit for just the monopole, but imposing the usual Kaiser constraints to calculate the ell = 2,4 multipoles from the monopole (with two additional parameters for constants of integration):

./baofit -i ../demo/rmu_to_multi.ini --output-prefix rmu_to_multi_2. --constrained-multipoles

Each fit writes an output data vector and covariance matrix that can be used as the input to a subsequent BAO fit. These files are available in demo/multi_<n>.data,.cov with <n> = 0,1,2.

Multipole BAO Fits

Next, do BAO fits to the multipoles obtained above. First, use the full ell = 0,2,4 set:

./baofit -i ../demo/multi_to_bao.ini --data ../demo/multi_0 --output-prefix multi_0_to_bao. --lmax 4

Second, fit the ell = 0,2 set:

./baofit -i ../demo/multi_to_bao.ini --data ../demo/multi_1 --output-prefix multi_1_to_bao. --lmax 2

The fit results are again in good agreement with the predictions of an analytic Fisher matrix calculation.

Fit

chi^2 / dof

beta

alpha_par

alpha_perp

rho(beta,alpha_par)

rho(beta,alpha_perp)

rho(alpha_par,alpha_perp)

2D Fisher

+-0.0090

+- 0.0044

+- 0.0067

+0.0166

+0.0002

-0.4855

Multi Fisher

+-0.0101

+- 0.0054

+- 0.0083

+0.0145

-0.0138

-0.4783

multi_to_bao_0

87.6232 / (87-3)

1.4115 +- 0.0103

0.9943 +- 0.0044

1.0018 +- 0.0080

+0.0134

-0.0109

-0.4867

multi_to_bao_1

45.1803 / (58-3)

1.4141 +- 0.0097

0.9969 +- 0.0048

0.9972 +- 0.0073

+0.0097

-0.0016

-0.5475

Comparing the first two rows, we see that going from 800 to 87 parameters increases the errors by a small but not insignificant amount. (The more significant benefit of fitting in 2D is the extra flexibility to study and account for systematics). Comparing the last two rows, we see that there is essentially no loss of information when neglecting the hexadecapole (ell = 4). The plot below shows the monopole (left) and quadrupole (right) for the multi_to_bao_0 best fit.

multiFit.png