Fitter Demonstration and Validation
Binning
Use a 2D (r,mu) grid with 40 bins in r covering 40200 Mpc/h, i.e., bin centers at r = 42,46,50,...,198 Mpc/h, and 20 bins in mu covering 01, i.e., bin centers at 0.025,0.075,...,0.975, and z = 2.25. The corresponding axis definitions are:
dataformat = comovingpolar axis1bins = [40:200]*40 axis2bins = [0:1]*20 axis3bins = {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 40200 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 alphapar,perp and beta, with bias*(1+beta) fixed:
modelconfig = value[beta]=1.4; modelconfig = fix[(1+beta)*bias]=0.336; modelconfig = fix[BAO amplitude]=1; modelconfig = value[BAO alphap*]=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 1e11. 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 loadicov = 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 / (8003) 
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:
xipoints = 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 ximethod = 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 outputprefix 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 outputprefix rmu_to_multi_1. modelconfig="fix[Xi y4*]=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 outputprefix rmu_to_multi_2. constrainedmultipoles
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 outputprefix multi_0_to_bao. lmax 4
Second, fit the ell = 0,2 set:
./baofit i ../demo/multi_to_bao.ini data ../demo/multi_1 outputprefix 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 / (873) 
1.4115 + 0.0103 
0.9943 + 0.0044 
1.0018 + 0.0080 
+0.0134 
0.0109 
0.4867 
multi_to_bao_1 
45.1803 / (583) 
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.