74 double interpolated (
const double _xx,
const std::vector<double> xx,
const std::vector<double> yy,
const std::string type);
107 double interpolated_2D (
const double _x1,
const double _x2,
const std::vector<double> x1,
const std::vector<double> x2,
const std::vector<std::vector<double>> yy,
const std::string type);
129 std::vector<double>
linear_interpolation_3D(
const std::vector<double> min, std::vector<double> max, std::vector<int> steps, std::vector<std::vector<std::vector<double>>> func,
const std::vector<std::vector<double>> pos);
138 double Filter (
const double r,
const double rc);
207 double Legendre_polynomial_triangles_average (
const double r12_min,
const double r12_max,
const double r13_min,
const double r13_max,
const double r23_min,
const double r23_max,
const int ll,
const double rel_err=1.e-5,
const double abs_err=1.e-8,
const int nevals=100);
224 std::vector<std::vector<double>>
Legendre_polynomial_triangles_average (
const double r12,
const double r13,
const double deltaR,
const int lMax,
const double rel_err=1.e-5,
const double abs_err=1.e-8,
const int nevals=100);
258 std::vector<std::vector<std::complex<double>>>
spherical_harmonics (
const int lmax,
const double xx,
const double yy,
const double zz);
273 std::vector<std::complex<double>>
spherical_harmonics_array (
const int lmax,
const double xx,
const double yy,
const double zz);
280 double j0 (
const double xx);
287 double j2 (
const double xx);
294 double j4 (
const double xx);
302 double jl (
const double xx,
const int order);
342 double jl_distance_average (
const double kk,
const int order,
const double r_down,
const double r_up);
368 double coupling_3j (
const int l,
const int l_prime,
const int l2);
371 void gauleg (
const double,
const double,
double *,
double *,
const int);
392 void read_vector (
const std::string file_vector, std::vector<double> &xx, std::vector<double> &vector,
const std::vector<int> col={});
411 void read_matrix (
const std::string file_matrix, std::vector<double> &xx, std::vector<double> &yy, std::vector<std::vector<double>> &matrix,
const std::vector<int> col={});
448 void invert_matrix (
const std::vector<std::vector<double>> mat, std::vector<std::vector<double>> &mat_inv,
const double prec=1.e-10,
const int Nres=-1);
483 void invert_matrix (
const std::vector<std::vector<double>> mat, std::vector<std::vector<double>> &mat_inv,
const int i1,
const int i2,
const double prec=1.e-10,
const int Nres=-1);
496 void covariance_matrix (
const std::vector<std::vector<double>> mat, std::vector<std::vector<double>> &cov,
const bool JK=
false);
513 void covariance_matrix (
const std::vector<std::string> file, std::vector<double> &rad, std::vector<double> &mean, std::vector<std::vector<double>> &cov,
const bool JK=
false);
528 void covariance_matrix (
const std::vector<std::string> file,
const std::string covariance_matrix_file,
const bool JK=0);
555 void read_invert_covariance (
const std::string filecov, std::vector<std::vector<double>> &cov, std::vector<std::vector<double>> &cov_inv,
const size_t i1,
const size_t i2,
const double prec=1.e-10,
const int Nres=-1);
576 double number_from_distribution (
const std::vector<double> xx,
const std::vector<double> fx,
const double xmin,
const double xmax,
const int seed);
600 std::vector<double>
vector_from_distribution (
const int nRan,
const std::vector<double> xx,
const std::vector<double> fx,
const double xmin,
const double xmax,
const int seed);
617 std::vector<size_t>
minimum_maximum_indexes (
const std::vector<double> xx,
const double x_min,
const double x_max);
631 double get_mu (
const double r1,
const double r2,
const double r3);
642 double window_function (
const double x,
const double min=-1,
const double max=1);
667 double clebsh_gordan(
const int j1,
const int j2,
const int m1,
const int m2,
const int j3,
const int m3);
676 template <
typename T>
691 double wigner3j_auxA(
double l1,
double l2,
double l3,
double m1,
double m2,
double m3);
705 double wigner3j_auxB(
double l1,
double l2,
double l3,
double m1,
double m2,
double m3);
718 std::vector<double>
wigner3j(
double l2,
double l3,
double m1,
double m2,
double m3);
732 double wigner3j(
double l1,
double l2,
double l3,
double m1,
double m2,
double m3);
746 double wigner_3j(
int j1,
int j2,
int j3,
int m1,
int m2,
int m3);
761 double wigner_6j(
const int j1,
const int j2,
const int j3,
const int j4,
const int j5,
const int j6);
813 double average_three_spherical_bessel_integral (
const double r1_min,
const double r1_max,
const double r2_min,
const double r2_max,
const double r3,
const int L1,
const int L2,
const int L3);
831 std::vector<double>
generate_correlated_data (
const std::vector<double> mean,
const std::vector<std::vector<double>> covariance,
const int idum =213123);
851 std::vector<std::vector<double>>
generate_correlated_data (
const int nExtractions,
const std::vector<double> mean,
const std::vector<std::vector<double>> covariance,
const int idum=12312);
866 template <
typename T>
869 for (
size_t ii = 0; ii<NN; ii++) {
871 fin.read((
char *)&var,
sizeof(T));
898 double Average (
const std::vector<double> vect);
911 double Average (
const std::vector<double> vect,
const std::vector<double> weight);
923 double Sigma (
const std::vector<double> vect);
936 double Sigma (
const std::vector<double> vect,
const std::vector<double> weight);
945 std::vector<double>
Quartile (
const std::vector<double> Vect);
958 void Moment (
const std::vector<double> data,
double &ave,
double &adev,
double &sdev,
double &var,
double &skew,
double &curt);
980 template <
typename T>
981 T
Pol2 (T xx, std::shared_ptr<void> pp, std::vector<double> par)
984 return par[0]*pow(xx,2)+par[1]*xx+par[2];
996 template <
typename T>
997 T
Pol3 (T xx,
void *pp, std::vector<double> par)
999 return par[0]*pow(xx,3)+par[1]*pow(xx,2)+par[2]*xx+par[3];
1009 std::vector<double> vect(2);
1011 for (
int i=1; i<2; i++) vect[i] = xx*vect[i-1];
1022 std::vector<double> vect(3);
1024 for (
int i=1; i<3; i++) vect[i] = xx*vect[i-1];
1036 std::vector<double> vect(4);
1038 for (
int i=1; i<4; i++) vect[i] = xx*vect[i-1];
1052 template <
typename T>
1053 T
identity (T xx, std::shared_ptr<void> pp, std::vector<double> par)
1055 (void)xx; (void)pp; (void)par;
1070 template <
typename T>
1071 T
rectangular (T xx, std::shared_ptr<void> pp, std::vector<double> par)
1073 if (xx>par[0] && par[1]>xx)
1074 return 1./(par[1]-par[0]);
1087 double closest_probability (
double xx, std::shared_ptr<void> pp, std::vector<double> par);
1126 template <
typename T>
1127 T
gaussian (T xx, std::shared_ptr<void> pp, std::vector<double> par)
1130 T gauss = 1./(par[1]*sqrt(2.*
par::pi))*exp(-pow(xx-par[0],2)/(2.*par[1]*par[1]));
1131 return (par.size()==2) ? gauss : gauss*par[2];
1142 template <
typename T>
1143 T
poisson (T xx, std::shared_ptr<void> pp, std::vector<double> par)
1146 T pois = exp(
int(xx) * log(par[0]) - lgamma(
int(xx) + 1.0) - par[0]);
1156 template <
typename T>
1159 return sqrt(54./
par::pi)*pow(vel/sigma,2)*exp(-1.5*pow(vel/sigma,2))/sigma;
1169 template <
typename T>
1172 return pow(xx/x0,-gamma);
1183 template <
typename T>
1186 return pow(2.,beta-
alpha)/(pow(xx/x0,
alpha)*pow(1.+xx/x0,beta-
alpha));
1194 template <
typename T>
1197 return 3.*(sin(kR)-kR*cos(kR))/pow(kR,3);
1207 template <
typename T>
1210 return (3.*(kR*kR-3.)*sin(kR)+9.*kR*cos(kR))*pow(kR, -4);
1219 template <
typename T>
1230 template <
typename T>
1233 return 4./3.*
par::pi*pow(RR, 3);
1242 template <
typename T>
1245 return 4./3.*
par::pi*Rho*pow(RR,3);
1257 template <
typename T>
1260 return vx*cos(dec)*sin(ra)+vy*cos(dec)*cos(ra)+vz*sin(dec);
1268 template <
typename T>
1271 return (3.*x*x-1.)*0.5;
1279 template <
typename T>
1282 return (35.*x*x*x*x-30.*x*x+3.)*0.125;
1290 template <
typename T>
1293 return (231.*x*x*x*x*x*x-315.*x*x*x*x+105.*x*x-5.)*0.0625;
1320 void measure_var_function (
const std::vector<double> var,
const int bin,
const double V_min,
const double V_max,
const double Volume, std::vector<double> &
Var, std::vector<double> &Phi, std::vector<double> &err);
1347 void distribution (std::vector<double> &xx, std::vector<double> &fx, std::vector<double> &err,
const std::vector<double> FF,
const std::vector<double> WW,
const int nbin,
const bool linear=
true,
const std::string file_out=
par::defaultString,
const double fact=1.,
const double V1=
par::defaultDouble,
const double V2=
par::defaultDouble,
const std::string bin_type=
"Linear",
const bool conv=
false,
const double sigma=0.);
1357 double MC_Int (
double func(
const double),
const double x1,
const double x2,
const int seed=3213);
1368 double MC_Int (
double func(
const double,
const double AA),
const double AA,
const double x1,
double x2,
const int seed=3213);
1383 double MC_Int (
double func(
const double,
const double AA,
const double BB,
const double CC,
const double DD,
const double EE),
const double AA,
const double BB,
const double CC,
const double DD,
const double EE,
const double x1,
const double x2,
const int seed=3213);
1403 void bin_function (
const std::string file_grid,
double func(
double,
void*),
void *par,
const int bin,
const double x_min,
const double x_max,
const std::string binning, std::vector<double> &xx, std::vector<double> &yy);
1422 void bin_function_2D (
const std::string file_grid,
double func(
double *,
size_t,
void *),
void * par,
const int bin,
const double x1_min,
const double x1_max,
const double x2_min,
const double x2_max,
const std::string binning, std::vector<double> &xx1, std::vector<double> &xx2, std::vector<std::vector<double>> &yy);
1425 double func_grid_lin (
double,
void *);
1426 double func_grid_loglin (
double,
void *);
1427 double func_grid_log (
double,
void *);
1428 double func_grid_lin_2D (
double *,
size_t,
void *);
1429 double func_grid_loglin_2D (
double *,
size_t,
void *);
1430 double func_grid_log_2D (
double *,
size_t,
void *);
1453 void convolution (
const std::vector<double> f1,
const std::vector<double> f2, std::vector<double> &res,
const double deltaX);
1518 void polar_coord (
const double XX,
const double YY,
const double ZZ,
double &ra,
double &dec,
double &dd);
1531 void cartesian_coord (
const double ra,
const double dec,
const double dd,
double &XX,
double &YY,
double &ZZ);
1544 void polar_coord (
const std::vector<double> XX,
const std::vector<double> YY,
const std::vector<double> ZZ, std::vector<double> &ra, std::vector<double> &dec, std::vector<double> &dd);
1557 void cartesian_coord (
const std::vector<double> ra,
const std::vector<double> dec,
const std::vector<double> dd, std::vector<double> &XX, std::vector<double> &YY, std::vector<double> &ZZ);
1571 double Euclidean_distance (
const double x1,
const double x2,
const double y1,
const double y2,
const double z1,
const double z2);
1584 double perpendicular_distance (
const double ra1,
const double ra2,
const double dec1,
const double dec2,
const double d1,
const double d2);
1599 double angular_distance (
const double x1,
const double x2,
const double y1,
const double y2,
const double z1,
const double z2);
1612 double haversine_distance (
const double ra1,
const double ra2,
const double dec1,
const double dec2);
1628 void sdss_atbound (
double &angle,
const double minval,
const double maxval);
1655 void eq2sdss (
const std::vector<double> ra,
const std::vector<double> dec, std::vector<double> &lambda, std::vector<double> &eta);
1670 void sdss2eq (
const std::vector<double> lambda,
const std::vector<double> eta, std::vector<double> &ra, std::vector<double> &dec);
1685 void sdss_stripe (
const std::vector<double> eta,
const std::vector<double> lambda, std::vector<int> &stripe, std::vector<int> &str_u);
1725 double xi_from_Pk (
const double rr,
const std::vector<double> lgkk,
const std::vector<double> lgPk,
const double k_min=0.,
const double k_max=100.,
const double aa=0.,
const double prec=1.e-2);
1754 double xi_from_Pk (
const double rr,
const std::string file,
const int c1=1,
const int c2=2,
const double k_min=0.,
const double k_max=100.,
const double aa=0.,
const double prec=1.e-2);
1776 double Pk_from_xi (
const double kk,
const std::vector<double> lgrr,
const std::vector<double> lgxi,
const double r_min=0.03,
const double r_max=100.);
1801 double Pk_from_xi (
const double kk,
const std::string file,
const int c1=1,
const int c2=2,
const double r_min=0.03,
const double r_max=100.);
1805 double func_xi_GSL (
double,
void *);
1806 double func_SSM_GSL (
double,
void *);
1834 double wp (
const double rp,
const std::vector<double> rr,
const std::vector<double> xi,
const double r_max=100.);
1859 double wp (
const double rp,
const std::string file,
const double r_max=100.);
1901 double sigmaR (
const double RR,
const int corrType,
const std::vector<double> rr,
const std::vector<double> corr);
1935 double xi_ratio (
const double beta);
1954 double xi_ratio (
const double f_sigma8,
const double bias_sigma8);
1972 double xi_ratio (
double xx, std::shared_ptr<void> pp, std::vector<double> par);
1991 double error_xi_ratio (
const double beta,
const double error_beta);
2020 double barred_xi_direct (
const double RR,
const std::vector<double> rr,
const std::vector<double> xi,
const double rAPP=0.,
const double r0=-1.,
const double gamma=1.);
2049 double barred_xi__direct (
const double RR,
const std::vector<double> rr,
const std::vector<double> xi,
const double rAPP=0.,
const double r0=-1.,
const double gamma=1.);
2076 double barred_xi_ (
const double RR,
const std::vector<double> rr,
const std::vector<double> xi,
const double rAPP=0.,
const double r0=-1.,
const double gamma=1.);
2103 double barred_xi__ (
const double RR,
const std::vector<double> rr,
const std::vector<double> xi,
const double rAPP=0.,
const double r0=-1.,
const double gamma=1.);
2120 double multipole_xi0 (
const int indexR,
const std::vector<double> mu,
const std::vector<std::vector<double>> xi);
2137 double multipole_xi2 (
const int indexR,
const std::vector<double> mu,
const std::vector<std::vector<double>> xi);
2154 double multipole_xi4 (
const int indexR,
const std::vector<double> mu,
const std::vector<std::vector<double>> xi);
2169 double error_multipole_xi0 (
const int indexR,
const std::vector<double> mu,
const std::vector<std::vector<double>> error);
2184 double error_multipole_xi2 (
const int indexR,
const std::vector<double> mu,
const std::vector<std::vector<double>> error);
2199 double error_multipole_xi4 (
const int indexR,
const std::vector<double> mu,
const std::vector<std::vector<double>> error);
2213 double multipole_xi0 (
const double ss,
const std::vector<double> rp,
const std::vector<double>
pi,
const std::vector<std::vector<double>> xi,
const double delta_s);
2227 double multipole_xi2 (
const double ss,
const std::vector<double> rp,
const std::vector<double>
pi,
const std::vector<std::vector<double>> xi,
const double delta_s);
2241 double multipole_xi4 (
const double ss,
const std::vector<double> rp,
const std::vector<double>
pi,
const std::vector<std::vector<double>> xi,
const double delta_s);
2253 double error_multipole_xi0 (
const double ss,
const std::vector<double> rp,
const std::vector<double>
pi,
const std::vector<std::vector<double>> error,
const double delta_s);
2265 double error_multipole_xi2 (
const double ss,
const std::vector<double> rp,
const std::vector<double>
pi,
const std::vector<std::vector<double>> error,
const double delta_s);
2277 double error_multipole_xi4 (
const double ss,
const std::vector<double> rp,
const std::vector<double>
pi,
const std::vector<std::vector<double>> error,
const double delta_s);
2291 double multipoles (
double rr, std::shared_ptr<void> pp, std::vector<double> par);
2322 double multipole_xi0_model (
const double f_sigma8,
const double bias_sigma8,
const double sigma8z,
const double xi_matter);
2335 double multipole_xi0_model (
double xx, std::shared_ptr<void> pp, std::vector<double> par);
2368 double multipole_xi4_model (
const double beta,
const double xi_real,
const double xi_,
const double xi__);
2372 double xi2D_lin_model (
double,
double, std::shared_ptr<void> , std::vector<double>);
2396 double xi2D_lin_model (
const double beta,
const double bias,
const double xi_real,
const double xi_,
const double xi__,
const double P_2,
const double P_4);
2433 double xi2D_lin_model (
const double rp,
const double pi,
const double beta,
const double bias,
const std::vector<double> rad_real,
const std::vector<double> xi_real,
const std::vector<double> xi_,
const std::vector<double> xi__,
const int index=-1,
const bool bias_nl=0,
const double bA=0.);
2437 double xi2D_model (
double,
double, std::shared_ptr<void>, std::vector<double>);
2491 double xi2D_model (
const double rp,
const double pi,
const double beta,
const double bias,
const double sigmav,
const std::vector<double> rad_real,
const std::vector<double> xi_real,
const std::vector<double> xi_,
const std::vector<double> xi__,
const double var,
const int FV,
int index=-1,
const bool bias_nl=0,
const double bA=0.,
const double v_min=-3000.,
const double v_max=3000.,
const int step_v=500);
2523 double xi2D_lin_model (
const double rp,
const double pi,
const double beta,
const double bias,
const std::shared_ptr<void> funcXiR,
const std::shared_ptr<void> funcXiR_,
const std::shared_ptr<void> funcXiR__,
const bool bias_nl=0,
const double bA=0.);
2569 double xi2D_model (
const double rp,
const double pi,
const double beta,
const double bias,
const double sigmav,
const std::shared_ptr<void> funcXiR,
const std::shared_ptr<void> funcXiR_,
const std::shared_ptr<void> funcXiR__,
const double var,
const int FV,
const bool bias_nl=0,
const double bA=0.,
const double v_min=-3000.,
const double v_max=3000.,
const int step_v=500);
2583 double f_v (
const double vel,
const double sigmav,
const int FV);
2606 double f_v (
const double vel,
const double rp,
const double pi,
const double var,
const double sigmav0,
const double cmu,
const double cs1,
const double cs2);
2619 double f_star (
const double xx,
const double f_g,
const double k_star);
2635 double b_nl (
const double rr,
const double bA,
const double bB=10.,
const double bC=4.);
2718 std::vector<double>
Pk0_Kaiser(
const std::vector<double> kk,
const std::vector<double> Pk,
const double bias,
const double f);
2729 std::vector<double>
Pk2_Kaiser(
const std::vector<double> kk,
const std::vector<double> Pk,
const double bias,
const double f);
2740 std::vector<double>
Pk4_Kaiser(
const std::vector<double> kk,
const std::vector<double> Pk,
const double bias,
const double f);
2751 std::vector<std::vector<double>>
Pkl_Kaiser(
const std::vector<int> orders,
const std::vector<double> kk,
const std::vector<double> Pk,
const double bias,
const double f);
2765 std::vector<double>
Xi0(
const std::vector<double> r,
const std::vector<double> kk,
const std::vector<double> Pk0,
const double k_cut=0.7,
const double cut_pow=2,
const int IntegrationMethod = 1);
2779 std::vector<double>
Xi2 (
const std::vector<double> rr,
const std::vector<double> kk,
const std::vector<double> Pk2,
const double k_cut=0.58,
const double cut_pow=4,
const int IntegrationMethod = 1);
2793 std::vector<double>
Xi4 (
const std::vector<double> rr,
const std::vector<double> kk,
const std::vector<double> Pk4,
const double k_cut=0.6,
const double cut_pow=2,
const int IntegrationMethod = 1);
2809 std::vector<std::vector<double>>
Xi02_AP (
const double alpha_perpendicular,
const double alpha_parallel,
const std::vector<double> rr,
const std::vector<double> rl,
const std::vector<double>
Xi0,
const std::vector<double>
Xi2);
2826 std::vector<std::vector<double>>
Xi024_AP (
const double alpha_perpendicular,
const double alpha_parallel,
const std::vector<double> rr,
const std::vector<double> rl,
const std::vector<double>
Xi0,
const std::vector<double>
Xi2,
const std::vector<double>
Xi4);
2843 std::vector<std::vector<double>>
XiWedges_AP (
const std::vector<double> mu_min,
const std::vector<double> delta_mu,
const double alpha_perpendicular,
const double alpha_parallel,
const std::vector<double> rr,
const std::vector<double> rl,
const std::vector<double>
Xi0,
const std::vector<double>
Xi2,
const std::vector<double>
Xi4);
2870 std::vector< std::vector<double>>
sigma2_k (
const double nObjects,
const double Volume,
const std::vector<double> kk,
const std::vector<std::vector<double>> Pk_multipoles,
const std::vector<int> orders);
2900 void Covariance_XiMultipoles (std::vector<double> &rr, std::vector<std::vector<double>> &covariance,
const int nbins,
const double rMin,
const double rMax,
const double nObjects,
const double Volume,
const std::vector<double> kk,
const std::vector<std::vector<double>> Pk_multipoles,
const std::vector<int> orders,
const cbl::BinType bin_type=
cbl::BinType::_linear_);
2938 void Covariance_XiWedges (std::vector<double> &rr, std::vector<std::vector<double>> &covariance,
const std::vector<double> mu,
const std::vector<double> delta_mu,
const int nbins,
const double rMin,
const double rMax,
const double nObjects,
const double Volume,
const std::vector<double> kk,
const std::vector<std::vector<double>> Pk_multipoles,
const std::vector<int> orders,
const cbl::BinType bin_type=
cbl::BinType::_linear_);
2957 std::vector<double> _xx, _yy;
2962 std::vector<double> _xx1, _xx2;
2963 std::vector<std::vector<double>> _yy;
2966 struct STR_xi0_model
2970 std::vector<double> xi_matter;
2973 struct STR_xi2D_model
2975 std::vector<double> rp,
pi, xi_real, xi_, xi__, P2, P4, vel;
2976 std::vector<int> lim_index_fit, type;
2977 int step_v, FV, dim;
2985 std::vector<double> lgkk, lgPk;
2991 double hh, mass, rho, n_spec;
2992 std::vector<double> lgkk, lgPk;
2995 struct STR_jl_distance_average
3001 struct STR_Pl_mu_integral
3006 struct STR_Pkl_Kaiser_integrand
3012 struct STR_closest_probability
3014 std::vector<double> values;
3015 std::vector<double> weights;
3018 struct STR_distribution_probability
3020 std::shared_ptr<cbl::glob::FuncGrid> func;
3023 struct STR_chainMeshInterpolate
3029 struct STR_multivariateGaussian
3031 Eigen::VectorXd MeanVec;
3032 Eigen::MatrixXd CovMat;
3035 struct STR_sigma2_integrand
3038 double density_inv,kk;
3039 std::vector<int> orders;
3040 std::vector<FuncGrid> Pk_multipoles_interp;
3043 struct STR_XiMultipoles_integrand
3052 struct STR_xi2D_smu_integrand
3058 struct STR_covariance_XiMultipoles_integrand
3060 FuncGrid *s2, *jl1r1, *jl2r2;
3083 std::vector<std::vector<double>>
Xi02_AP (
const double alpha_perpendicular,
const double alpha_parallel,
const std::vector<double> rr,
const std::shared_ptr<glob::FuncGrid> xi0_interp,
const std::shared_ptr<glob::FuncGrid> xi2_interp);
3099 std::vector< std::vector<double>>
Xi024_AP (
const double alpha_perpendicular,
const double alpha_parallel,
const std::vector<double> rr,
const std::shared_ptr<glob::FuncGrid> xi0_interp,
const std::shared_ptr<glob::FuncGrid> xi2_interp,
const std::shared_ptr<glob::FuncGrid> xi4_interp);
3115 std::vector<std::vector<double>>
XiWedges_AP (
const std::vector<double> mu_min,
const std::vector<double> delta_mu,
const double alpha_perpendicular,
const double alpha_parallel,
const std::vector<double> rr,
const std::shared_ptr<glob::FuncGrid> xi0_interp,
const std::shared_ptr<glob::FuncGrid> xi2_interp,
const std::shared_ptr<glob::FuncGrid> xi4_interp);
Implementation of the chain-mesh data structure.
functions that wrap Eigen routines
Class functions used to generate random numbers.
static const std::string defaultString
default std::string value
static const double defaultDouble
default double value
static const double pi
: the ratio of a circle's circumference to its diameter
static const double alpha
: the fine-structure constant
Var
the catalogue variables
double bias(const double Mmin, const double sigmalgM, const double M0, const double M1, const double alpha, const std::shared_ptr< void > inputs)
the mean galaxy bias
The global namespace of the CosmoBolognaLib
void distribution(std::vector< double > &xx, std::vector< double > &fx, std::vector< double > &err, const std::vector< double > FF, const std::vector< double > WW, const int nbin, const bool linear=true, const std::string file_out=par::defaultString, const double fact=1., const double V1=par::defaultDouble, const double V2=par::defaultDouble, const std::string bin_type="Linear", const bool conv=false, const double sigma=0.)
derive and store the number distribution of a given std::vector
void sdss_atbound(double &angle, const double minval, const double maxval)
check if ra coordinate is inside the boundaries
double MC_Int(double func(const double), const double x1, const double x2, const int seed=3213)
simple Monte Carlo integration of f(x)
double sigmaR(const double RR, const int corrType, const std::vector< double > rr, const std::vector< double > corr)
the rms mass fluctuation within a given radius
void vectorReadFromBinary(std::ifstream &fin, std::vector< T > &vec, size_t NN)
reads a vector from a binary file
T maxwellian_distr(const T vel, const T sigma)
the Maxwellian distribution
double sigma2_integrand(const double mu, void *parameters)
integrand of the 2d power spectrum to obtain sigma^2(k)
std::vector< double > Pk0_Kaiser(const std::vector< double > kk, const std::vector< double > Pk, const double bias, const double f)
function to obtain the linear RSD power spectrum monopole
std::string conv(const T val, const char *fact)
convert a number to a std::string
double legendre_polynomial_integral(double mu, void *params)
the order l Legendre polynomial integrand
double Euclidean_distance(const double x1, const double x2, const double y1, const double y2, const double z1, const double z2)
the Euclidean distance in 3D relative to the origin (0,0,0), i.e. the Euclidean norm
double barred_xi_direct(const double RR, const std::vector< double > rr, const std::vector< double > xi, const double rAPP=0., const double r0=-1., const double gamma=1.)
the barred correlation function
void read_matrix(const std::string file_matrix, std::vector< double > &xx, std::vector< double > &yy, std::vector< std::vector< double >> &matrix, const std::vector< int > col={})
read a matrix from file
double error_multipole_xi2(const int indexR, const std::vector< double > mu, const std::vector< std::vector< double >> error)
error on xi2(s) from ξ(r,μ)
double Legendre_polynomial_mu_average(const int ll, const double mu, const double delta_mu)
the average of the Legendre polynomial of the l-th order over the mu range
double multivariateGaussian(std::vector< double > xx, std::shared_ptr< void > pars)
the multivariate Gaussian function
std::vector< std::vector< double > > XiWedges_AP(const std::vector< double > mu_min, const std::vector< double > delta_mu, const double alpha_perpendicular, const double alpha_parallel, const std::vector< double > rr, const std::vector< double > rl, const std::vector< double > Xi0, const std::vector< double > Xi2, const std::vector< double > Xi4)
function to obtain the 2pcf wedges
double Average(const std::vector< double > vect)
the average of a std::vector
CoordinateType
the coordinate type
double error_multipole_xi4(const int indexR, const std::vector< double > mu, const std::vector< std::vector< double >> error)
error on xi4(s) from ξ(r,μ)
double Pkl_Kaiser_integral(const int order, const double bias, const double f)
function to obtain the Kaiser factor
T Mass(const T RR, const T Rho)
the mass of a sphere of a given radius and density
T volume_sphere(const T RR)
the volume of a sphere of a given radius
double j2(const double xx)
the l=2 spherical Bessel function
std::vector< std::vector< double > > Xi02_AP(const double alpha_perpendicular, const double alpha_parallel, const std::vector< double > rr, const std::vector< double > rl, const std::vector< double > Xi0, const std::vector< double > Xi2)
function to obtain the monopole and quadrupole of the two point correlation function
double j2_distance_average(const double kk, const double r_down, const double r_up)
the distance average l=2 spherical Bessel function this function is used to obtain the analytic twop ...
double multipole_xi0(const int indexR, const std::vector< double > mu, const std::vector< std::vector< double >> xi)
xi0(s) from ξ(r,μ)
double chainMeshInterpolate(std::vector< double > xx, std::shared_ptr< void > pars)
a multidimension interpolator
std::vector< double > Xi2(const std::vector< double > rr, const std::vector< double > kk, const std::vector< double > Pk2, const double k_cut=0.58, const double cut_pow=4, const int IntegrationMethod=1)
function to obtain the two point correlation function quadrupole
T Radius(const T Mass, const T Rho)
the radius of a sphere of a given mass and density
std::vector< std::complex< double > > spherical_harmonics_array(const int lmax, const double xx, const double yy, const double zz)
the spherical harmonics up to
double barred_xi__(const double RR, const std::vector< double > rr, const std::vector< double > xi, const double rAPP=0., const double r0=-1., const double gamma=1.)
the double barred correlation function
double barred_xi_(const double RR, const std::vector< double > rr, const std::vector< double > xi, const double rAPP=0., const double r0=-1., const double gamma=1.)
the barred correlation function
double haversine_distance(const double ra1, const double ra2, const double dec1, const double dec2)
the haversine angular separation
double converted_angle(const double angle, const CoordinateUnits inputUnits=CoordinateUnits::_radians_, const CoordinateUnits outputUnits=CoordinateUnits::_degrees_)
conversion to angle units
double multipole_xi0_model(const double beta, const double xi_real)
the model multipole ξ0 of the two-point correlation function
T rectangular(T xx, std::shared_ptr< void > pp, std::vector< double > par)
the rectangular distribution
double xi_projected_powerlaw(const double rp, const double r0, const double gamma)
the projected correlation function, wp(rp), computed by modelling the two-point correlation function,...
double f_v(const double vel, const double sigmav, const int FV)
pairwise velocity distribution
double Legendre_polynomial_triangles_average(const double r12_min, const double r12_max, const double r13_min, const double r13_max, const double r23_min, const double r23_max, const int ll, const double rel_err=1.e-5, const double abs_err=1.e-8, const int nevals=100)
the average of the Legendre polynomial of the l-th order over the
double jl_spherical_integrand(double rr, void *params)
the generic integrand to obtain the distance average spherical Bessel function of order l
double angular_distance(const double x1, const double x2, const double y1, const double y2, const double z1, const double z2)
the angular separation in 3D
double XiMultipoles_integrand(const double kk, void *parameters)
integrand to obtain covariance for the 2PCF multipoles
double interpolated_2D(const double _x1, const double _x2, const std::vector< double > x1, const std::vector< double > x2, const std::vector< std::vector< double >> yy, const std::string type)
2D interpolation
double Legendre_polynomial_theta_average(const double theta_min, const double theta_max, const int ll)
the average of the Legendre polynomial of the l-th order over the range
T identity(T xx, std::shared_ptr< void > pp, std::vector< double > par)
the Identity function
double relative_error_beta(const double bias, const double Volume, const double density)
estimated relative error on
T TopHat_WF(const T kR)
the top-hat window function
void cartesian_coord(const double ra, const double dec, const double dd, double &XX, double &YY, double &ZZ)
conversion from polar coordinates to Cartesian coordinates
double multipole_xi2(const int indexR, const std::vector< double > mu, const std::vector< std::vector< double >> xi)
xi2(s) from ξ(r,μ)
double multipole_xi4(const int indexR, const std::vector< double > mu, const std::vector< std::vector< double >> xi)
xi4(s) from ξ(r,μ)
double multipole_xi4_model(const double beta, const double xi_real, const double xi_, const double xi__)
the model multipole ξ4 of the two-point correlation function
std::vector< std::vector< double > > Pkl_Kaiser(const std::vector< int > orders, const std::vector< double > kk, const std::vector< double > Pk, const double bias, const double f)
function to obtain Pk multipoles from linear RSD (Kaiser)
T P_4(const T x)
the Legendre polynomial P4
void invert_matrix(const std::vector< std::vector< double >> mat, std::vector< std::vector< double >> &mat_inv, const double prec=1.e-10, const int Nres=-1)
function to invert a matrix
T poisson(T xx, std::shared_ptr< void > pp, std::vector< double > par)
the poisson distribution
double three_spherical_bessel_integral(const double r1, const double r2, const double r3, const int L1, const int L2, const int L3)
compute the integral of three spherical bessel function, from Mehrem (2011)
std::vector< std::vector< double > > sigma2_k(const double nObjects, const double Volume, const std::vector< double > kk, const std::vector< std::vector< double >> Pk_multipoles, const std::vector< int > orders)
multipole expansion of the per-mode covariance sigma2_k (see Grieb et al. 2016, eq....
double error_xi_ratio(const double beta, const double error_beta)
error on the ratio between the redshift-space and real-space correlation functions
double Pk_from_xi(const double kk, const std::vector< double > lgrr, const std::vector< double > lgxi, const double r_min=0.03, const double r_max=100.)
the power spectrum computed from the Fourier transform of the two-point correlation function
double barred_xi__direct(const double RR, const std::vector< double > rr, const std::vector< double > xi, const double rAPP=0., const double r0=-1., const double gamma=1.)
the double barred correlation function
std::vector< double > Pk4_Kaiser(const std::vector< double > kk, const std::vector< double > Pk, const double bias, const double f)
function to obtain the linear RSD power spectrum hexadecapole
T double_powerlaw(const T xx, const T x0, const T alpha, const T beta)
the double power-law function
T P_6(const T x)
the Legendre polynomial P6
double j0(const double xx)
the l=0 spherical Bessel function
double trapezoid_integration(const std::vector< double > xx, const std::vector< double > yy)
integral, computed with the trapezoid rule, using ordered data
std::vector< double > wigner3j(double l2, double l3, double m1, double m2, double m3)
Wigner symbol.
double xi2D_model(const double rp, const double pi, const double beta, const double bias, const double sigmav, const std::vector< double > rad_real, const std::vector< double > xi_real, const std::vector< double > xi_, const std::vector< double > xi__, const double var, const int FV, int index=-1, const bool bias_nl=0, const double bA=0., const double v_min=-3000., const double v_max=3000., const int step_v=500)
the non-linear dispersion model for ξ(rp,π)
std::vector< double > linear_interpolation_3D(const std::vector< double > min, std::vector< double > max, std::vector< int > steps, std::vector< std::vector< std::vector< double >>> func, const std::vector< std::vector< double >> pos)
3D interpolation on a 3D regular grid
double xi_ratio(const double beta)
the ratio between the redshift-space and real-space correlation functions
T radial_velocity(const T vx, const T vy, const T vz, const T ra, const T dec)
the radial velocity
std::vector< double > linearfit(const double xx)
linear function
std::vector< std::vector< double > > Xi024_AP(const double alpha_perpendicular, const double alpha_parallel, const std::vector< double > rr, const std::vector< double > rl, const std::vector< double > Xi0, const std::vector< double > Xi2, const std::vector< double > Xi4)
function to obtain the monopole, quadrupole and hexadecapole of the two-point correlation function
double multipole_xi2_model(const double beta, const double xi_real, const double xi_)
the model multipole ξ2 of the two-point correlation function
T Pol2(T xx, std::shared_ptr< void > pp, std::vector< double > par)
the quadratic function
double Pkl_Kaiser_integrand(const double mu, void *parameters)
integrand of the 2d power spectrum to obtain power spectrum multipole
T gaussian(T xx, std::shared_ptr< void > pp, std::vector< double > par)
the Gaussian function
T TopHat_WF_D1(const T kR)
the derivative of the top-hat window function
std::vector< double > Pk2_Kaiser(const std::vector< double > kk, const std::vector< double > Pk, const double bias, const double f)
function to obtain the linear RSD power spectrum quadrupole
double coupling_3j(const int l, const int l_prime, const int l2)
compute the Wigner 3-j symbol
double f_star(const double xx, const double f_g, const double k_star)
velocity distribution used to model BAO
std::complex< double > spherical_harmonics(cbl::CoordinateType coordinate_type, const int l, const int m, const double coord1, const double coord2, const double coord3)
the order l, degree m spherical harmonics
void Covariance_XiMultipoles(std::vector< double > &rr, std::vector< std::vector< double >> &covariance, const int nbins, const double rMin, const double rMax, const double nObjects, const double Volume, const std::vector< double > kk, const std::vector< std::vector< double >> Pk_multipoles, const std::vector< int > orders, const cbl::BinType bin_type=cbl::BinType::_linear_)
Covariance matrix for two-point correlation multipoles (see Grieb et al. 2016, Eq....
double Filter(const double r, const double rc)
filter W(r/rc), used e.g. for filtering the correlation function
double xi_from_Pk(const double rr, const std::vector< double > lgkk, const std::vector< double > lgPk, const double k_min=0., const double k_max=100., const double aa=0., const double prec=1.e-2)
the two-point correlation function computed from the Fourier transform of the power spectrum
double radians(const double angle, const CoordinateUnits inputUnits=CoordinateUnits::_degrees_)
conversion to radians
double interpolated(const double _xx, const std::vector< double > xx, const std::vector< double > yy, const std::string type)
1D interpolation
double clebsh_gordan(const int j1, const int j2, const int m1, const int m2, const int j3, const int m3)
get the Clebsh-Gordan coefficient in the notation
double average_three_spherical_bessel_integral(const double r1_min, const double r1_max, const double r2_min, const double r2_max, const double r3, const int L1, const int L2, const int L3)
compute the integral of three spherical bessel function, from Mehrem (2011), averaged on r1-r2 shells
double binomial_coefficient(const int n, const int m)
get the binomial coefficient
double Sigma(const std::vector< double > vect)
the standard deviation of a std::vector
double j0_distance_average(const double kk, const double r_down, const double r_up)
the distance average l=0 spherical Bessel function this function is used to obtain the analytic twop ...
void Covariance_XiWedges(std::vector< double > &rr, std::vector< std::vector< double >> &covariance, const std::vector< double > mu, const std::vector< double > delta_mu, const int nbins, const double rMin, const double rMax, const double nObjects, const double Volume, const std::vector< double > kk, const std::vector< std::vector< double >> Pk_multipoles, const std::vector< int > orders, const cbl::BinType bin_type=cbl::BinType::_linear_)
Covariance matrix for two-point correlation wedges (see Grieb et al. 2016, Eq. 19 https://arxiv....
double wigner_3j(int j1, int j2, int j3, int m1, int m2, int m3)
Wigner symbol, use it for l<100.
std::vector< double > Quartile(const std::vector< double > Vect)
the first, second and third quartiles of a std::vector
std::vector< double > quadratic(const double xx)
quadratic function
T P_2(const T x)
the Legendre polynomial P2
void Moment(const std::vector< double > data, double &ave, double &adev, double &sdev, double &var, double &skew, double &curt)
compute the moments of a set of data
void sdss2eq(const std::vector< double > lambda, const std::vector< double > eta, std::vector< double > &ra, std::vector< double > &dec)
convert sdss coordinates to R.A., Dec.
double error_multipole_xi0(const int indexR, const std::vector< double > mu, const std::vector< std::vector< double >> error)
error on xi0(s) from ξ(r,μ)
double sgn(T val)
sgn the sign function
std::vector< double > generate_correlated_data(const std::vector< double > mean, const std::vector< std::vector< double >> covariance, const int idum=213123)
generate a covariant sample of n points using a covariance matrix
void sdss_stripe(const std::vector< double > eta, const std::vector< double > lambda, std::vector< int > &stripe, std::vector< int > &str_u)
compute the SDSS stripe given SDSS coordinates
std::vector< double > Xi4(const std::vector< double > rr, const std::vector< double > kk, const std::vector< double > Pk4, const double k_cut=0.6, const double cut_pow=2, const int IntegrationMethod=1)
function to obtain the two point correlation function hexadecapole
double closest_probability(double xx, std::shared_ptr< void > pp, std::vector< double > par)
probability of the closest element to x from a list with weights
void covariance_matrix(const std::vector< std::vector< double >> mat, std::vector< std::vector< double >> &cov, const bool JK=false)
compute the covariance matrix from an input dataset
void read_invert_covariance(const std::string filecov, std::vector< std::vector< double >> &cov, std::vector< std::vector< double >> &cov_inv, const size_t i1, const size_t i2, const double prec=1.e-10, const int Nres=-1)
read and invert the covariance matrix
double wigner3j_auxA(double l1, double l2, double l3, double m1, double m2, double m3)
Wigner auxiliar function A.
T powerlaw(const T xx, const T x0, const T gamma)
the power-law function
T Pol3(T xx, void *pp, std::vector< double > par)
the cubic function
double degrees(const double angle, const CoordinateUnits inputUnits=CoordinateUnits::_radians_)
conversion to degrees
double j4(const double xx)
the l=4 spherical Bessel function
void bin_function_2D(const std::string file_grid, double func(double *, size_t, void *), void *par, const int bin, const double x1_min, const double x1_max, const double x2_min, const double x2_max, const std::string binning, std::vector< double > &xx1, std::vector< double > &xx2, std::vector< std::vector< double >> &yy)
create a 2D grid given an input function
double jl_distance_average(const double kk, const int order, const double r_down, const double r_up)
the distance average for the order l-th spherical Bessel function
CoordinateUnits
the coordinate units
@ _radians_
angle in radians
@ _degrees_
angle in degrees
std::vector< double > vector_from_distribution(const int nRan, const std::vector< double > xx, const std::vector< double > fx, const double xmin, const double xmax, const int seed)
return a std::vector of numbers sampled from a given distribution
void sdss_atbound2(double &theta, double &phi)
set the angular coordinates in the SDSS boundaries
std::vector< double > cubicfit(const double xx)
cubic function
double perpendicular_distance(const double ra1, const double ra2, const double dec1, const double dec2, const double d1, const double d2)
the perpendicular separation, rp
double get_mu(const double r1, const double r2, const double r3)
get the cosine of the angle between two sides of a triangle
double determinant_matrix(const std::vector< std::vector< double >> mat)
compute the determinant of a matrix
double covariance_XiMultipoles_integrand(const double kk, void *parameters)
integrand to obtain the 2PCF multipoles
double XiMultipoles_from_Xi2D_integrand(const double mu, void *parameters)
integrand to obtain the 2PCF multipoles from 2D 2pcf in polar coordinates
double legendre_polynomial(const double mu, const int l)
the order l Legendre polynomial
void measure_var_function(const std::vector< double > var, const int bin, const double V_min, const double V_max, const double Volume, std::vector< double > &Var, std::vector< double > &Phi, std::vector< double > &err)
measure the var function (where "var" could be the mass, the luminosity, the radius,...
std::vector< double > Xi0(const std::vector< double > r, const std::vector< double > kk, const std::vector< double > Pk0, const double k_cut=0.7, const double cut_pow=2, const int IntegrationMethod=1)
function to obtain the two point correlation funciton monopole
double jl(const double xx, const int order)
the order l spherical Bessel function
void convolution(const std::vector< double > f1, const std::vector< double > f2, std::vector< double > &res, const double deltaX)
convolution of two functions
void eq2sdss(const std::vector< double > ra, const std::vector< double > dec, std::vector< double > &lambda, std::vector< double > &eta)
convert from equatorial coordinates R.A., Dec to sdss coordinates
double arcseconds(const double angle, const CoordinateUnits inputUnits=CoordinateUnits::_radians_)
conversion to arcseconds
void bin_function(const std::string file_grid, double func(double, void *), void *par, const int bin, const double x_min, const double x_max, const std::string binning, std::vector< double > &xx, std::vector< double > &yy)
create a 1D grid given an input function
double distribution_probability(double xx, std::shared_ptr< void > pp, std::vector< double > par)
probability of an interpolated distribution
void read_vector(const std::string file_vector, std::vector< double > &xx, std::vector< double > &vector, const std::vector< int > col={})
read a vector from file
double window_function(const double x, const double min=-1, const double max=1)
the unnormalized window function
double wigner3j_auxB(double l1, double l2, double l3, double m1, double m2, double m3)
Wigner auxiliar function B.
double number_from_distribution(const std::vector< double > xx, const std::vector< double > fx, const double xmin, const double xmax, const int seed)
return a number sampled from a given distribution
double xi2D_lin_model(const double beta, const double bias, const double xi_real, const double xi_, const double xi__, const double P_2, const double P_4)
the linear dispersion model for ξ(rp,π)
double wigner_6j(const int j1, const int j2, const int j3, const int j4, const int j5, const int j6)
Wigner symbol.
double wp(const double rp, const std::vector< double > rr, const std::vector< double > xi, const double r_max=100.)
the projected two-point correlation function
void polar_coord(const double XX, const double YY, const double ZZ, double &ra, double &dec, double &dd)
conversion from Cartesian coordinates to polar coordinates
double b_nl(const double rr, const double bA, const double bB=10., const double bC=4.)
a possible parameterization of the non-linear bias
double arcminutes(const double angle, const CoordinateUnits inputUnits=CoordinateUnits::_radians_)
conversion to arcminutes
std::vector< size_t > minimum_maximum_indexes(const std::vector< double > xx, const double x_min, const double x_max)
return the std::vector indexes corresponding to a given interval