44 double cbl::cosmology::Cosmology::bias_halo (
const double Mass,
const double redshift,
const std::string author,
const std::string method_SS,
const bool store_output,
const std::string output_root,
const std::string interpType,
const double Delta,
const double kk,
const int norm,
const double k_min,
const double k_max,
const double prec,
const std::string input_file,
const bool is_parameter_file)
46 const double SSS = sigma2M(
Mass, method_SS, 0., store_output, output_root, interpType, k_max, input_file, is_parameter_file);
47 const double Sigma = sqrt(SSS);
49 double bias = m_bias_halo_generator(
Sigma, redshift, author, Delta);
52 bias += bias_correction(kk,
Mass, method_SS, store_output, output_root, interpType, norm, k_min, k_max, prec, input_file, is_parameter_file)*SSS*pow(
bias-1, 2);
61 double cbl::cosmology::Cosmology::bias_halo (
const double Mass,
const double Sigma,
const double redshift,
const std::string model_bias,
const bool store_output,
const std::string output_root,
const std::string interpType,
const double Delta,
const double kk,
const int norm,
const double k_min,
const double k_max,
const double prec,
const std::string method_SS,
const std::string input_file,
const bool is_parameter_file)
63 double bias = m_bias_halo_generator(
Sigma, redshift, model_bias, Delta);
66 bias += bias_correction(kk,
Mass, method_SS, store_output, output_root, interpType, norm, k_min, k_max, prec, input_file, is_parameter_file)*
Sigma*pow(
bias-1, 2);
75 double cbl::cosmology::Cosmology::bias_halo (
const double Mass,
const double Sigma,
const double redshift,
const double DN,
const std::string model_bias,
const bool store_output,
const std::string output_root,
const std::string interpType,
const double Delta,
const double kk,
const int norm,
const double k_min,
const double k_max,
const double prec,
const std::string method_SS,
const std::string input_file,
const bool is_parameter_file)
77 double bias = m_bias_halo_generator(
Sigma, redshift, DN, model_bias, Delta);
80 bias += bias_correction(kk,
Mass, method_SS, store_output, output_root, interpType, norm, k_min, k_max, prec, input_file, is_parameter_file)*
Sigma*pow(
bias-1, 2);
91 const double D_N = DN(redshift);
93 return m_bias_halo_generator(
Sigma, redshift, D_N, author, Delta);
102 const double deltacz = deltac(redshift);
103 const double sigmaz =
Sigma*D_N;
105 double bias = -1000.;
107 if (author==
"ST99") {
110 double ni = pow(deltacz/sigmaz, 2);
111 bias = 1.+(aa*ni-1.)/deltacz+(2.*pp/deltacz)/(1.+pow(aa*ni,pp));
114 else if (author==
"SMT01") {
118 double ni = deltacz/sigmaz;
119 bias = 1.+1./(sqrt(aa)*deltacz)*(sqrt(aa)*aa*pow(ni,2.)+sqrt(aa)*bb*pow(aa*pow(ni,2.),1.-
cc)-pow(aa*pow(ni,2.),
cc)/(pow(aa*pow(ni,2.),
cc)+bb*(1.-
cc)*(1.-
cc*0.5)));
122 else if (author==
"SMT01_WL04") {
126 double ni = deltacz/sigmaz;
127 double niI = sqrt(aa)*ni;
128 bias = 1.+1./deltacz*(pow(niI,2.)+bb*pow(niI,2.*(1.-
cc))-pow(niI,2.*
cc)/sqrt(aa)/(pow(niI,2.*
cc)+bb*(1.-
cc)*(1.-
cc*0.5)));
131 else if (author==
"Tinker") {
132 double yy = log10(Delta);
133 double AA = 1.+0.24*yy*exp(-pow(4./yy,4));
134 double aa = 0.44*yy-0.88;
137 double CC = 0.019+0.107*yy+0.19*exp(-pow(4./yy,4));
139 double ni = 1.686/sigmaz;
140 bias = 1.-AA*pow(ni,aa)/(pow(ni,aa)+pow(1.686,aa))+BB*pow(ni,bb)+CC*pow(ni,ccc);
144 ErrorCBL(
"author = " + author +
"!",
"m_bias_halo_generator",
"Bias.cpp");
153 double cbl::cosmology::Cosmology::bias_eff (
const double Mass_min,
const double Mass_max,
const double redshift,
const std::string model_bias,
const std::string model_MF,
const std::string method_SS,
const bool store_output,
const std::string output_root,
const double Delta,
const double kk,
const std::string interpType,
const int norm,
const double k_min,
const double k_max,
const double prec,
const std::string input_file,
const bool is_parameter_file)
157 const string file_grid = create_grid_sigmaM(method_SS, 0., store_output, output_root, interpType, k_max, input_file, is_parameter_file);
159 ifstream fin(file_grid.c_str());
checkIO(fin, file_grid);
162 vector<double> mass, sigma, dlnsigma;
165 if (Mass_min<
Mass &&
Mass<Mass_max) {
166 mass.push_back(
Mass);
167 sigma.push_back(
Sigma);
168 dlnsigma.push_back(Dln_Sigma);
173 ErrorCBL(
"mass.size()=0!",
"bias_eff",
"Bias.cpp");
178 double Bias_eff = 0., Norm = 0.;
180 for (
size_t mm=0; mm<mass.size()-1; mm++) {
182 const double MF =
mass_function(mass[mm], sigma[mm], dlnsigma[mm], redshift, model_MF, store_output, output_root, Delta, interpType, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file);
184 Bias_eff += bias_halo(mass[mm], sigma[mm], redshift, model_bias, store_output, output_root, interpType, Delta, kk, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file)*MF*(mass[mm+1]-mass[mm]);
186 Norm += MF*(mass[mm+1]-mass[mm]);
189 return Bias_eff/Norm;
196 double cbl::cosmology::Cosmology::bias_eff (
const std::vector<double> MM,
const std::vector<double> MF,
const double redshift,
const std::string model_bias,
const std::string method_SS,
const bool store_output,
const std::string output_root,
const double Delta,
const double kk,
const std::string interpType,
const int norm,
const double k_min,
const double k_max,
const double prec,
const std::string input_file,
const bool is_parameter_file)
200 const string file_grid = create_grid_sigmaM(method_SS, 0., store_output, output_root, interpType, k_max, input_file, is_parameter_file);
202 ifstream fin(file_grid.c_str());
checkIO(fin, file_grid);
205 vector<double> mass, sigma;
209 mass.push_back(
Mass);
210 sigma.push_back(
Sigma);
220 double Bias_eff = 0., Norm = 0.;
221 double mf, sig, err = -1;
223 for (
size_t k=0; k<MM.size()-1; k++) {
230 Bias_eff += bias_halo(MM[k], sig, redshift, model_bias, store_output, output_root, interpType, Delta, kk, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file)*mf*(MM[k+1]-MM[k]);
231 Norm += mf*(MM[k+1]-MM[k]);
234 return Bias_eff/Norm;
241 vector<double>
cbl::cosmology::Cosmology::bias_eff_mass_grid (
const std::vector<double> MM,
const std::vector<double> redshift,
const std::string model_bias,
const std::string method_SS,
const std::string meanType,
const bool store_output,
const std::string output_root,
const double Delta_crit,
const double kk,
const std::string interpType,
const int norm,
const double k_min,
const double k_max,
const double prec,
const std::string input_file,
const bool is_parameter_file)
245 const string file_grid = create_grid_sigmaM(method_SS, 0., store_output, output_root, interpType, k_max, input_file, is_parameter_file);
247 ifstream fin(file_grid.c_str());
checkIO(fin, file_grid);
250 vector<double> mass, sigma;
254 mass.push_back(
Mass);
255 sigma.push_back(
Sigma);
265 if (meanType!=
"mean_bias" && meanType!=
"pair_mean_bias")
266 ErrorCBL(
"the chosen meanType is not allowed!",
"bias_eff_mass_grid",
"Bias.cpp");
268 if (meanType==
"mean_bias") {
269 vector<double>
bias(MM.size());
271 for (
size_t k=0; k<MM.size(); k++) {
272 const double zz = (redshift.size()>1) ? redshift[k] : redshift[0];
273 bias[k] = bias_halo(MM[k],
interpolated(MM[k], mass, sigma,
"Linear"), zz, model_bias, store_output, output_root, interpType, Delta_crit/OmegaM(zz), kk, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file);
280 vector<double> bias2(MM.size());
282 for (
size_t k=0; k<MM.size(); ++k) {
283 const double z1 = (redshift.size()>1) ? redshift[k] : redshift[0];
284 for (
size_t l=k+1; l<MM.size(); ++l) {
285 const double z2 = (redshift.size()>1) ? redshift[l] : redshift[0];
286 bias2[k] = bias_halo(MM[k],
interpolated(MM[k], mass, sigma,
"Linear"), z1, model_bias, store_output, output_root, interpType, Delta_crit/OmegaM(z1), kk, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file)*bias_halo(MM[l],
interpolated(MM[l], mass, sigma,
"Linear"), z2, model_bias, store_output, output_root, interpType, Delta_crit/OmegaM(z2), kk, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file);
298 vector<double>
cbl::cosmology::Cosmology::bias_eff_mass (
const std::vector<double> MM,
const std::vector<double> redshift,
const std::string model_bias,
const std::string method_SS,
const std::string meanType,
const bool store_output,
const std::string output_root,
const double Delta,
const double kk,
const std::string interpType,
const int norm,
const double k_min,
const double k_max,
const double prec,
const std::string input_file,
const bool is_parameter_file)
300 if (meanType!=
"mean_bias" && meanType!=
"pair_mean_bias")
301 ErrorCBL(
"the chosen meanType is not allowed!",
"bias_eff_mass",
"Bias.cpp");
303 if (meanType==
"mean_bias") {
305 vector<double>
bias(MM.size());
307 #pragma omp parallel num_threads(omp_get_max_threads())
310 #pragma omp for schedule(static, 2)
311 for (
size_t k=0; k<MM.size(); k++) {
312 const double sigma = sqrt(sigma2M(MM[k], method_SS, 0., store_output, output_root, interpType, k_max, input_file, is_parameter_file,
true));
313 bias[k] = bias_halo(MM[k], sigma, (redshift.size()>1) ? redshift[k] : redshift[0], model_bias, store_output, output_root, interpType, Delta, kk, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file);
322 vector<double> bias2(MM.size());
324 #pragma omp parallel num_threads(omp_get_max_threads())
327 #pragma omp for schedule(static, 2)
328 for (
size_t k=0; k<MM.size(); ++k) {
329 const double z1 = (redshift.size()>1) ? redshift[k] : redshift[0];
330 const double sigma1 = sqrt(sigma2M(MM[k], method_SS, 0., store_output, output_root, interpType, k_max, input_file, is_parameter_file,
true));
331 for (
size_t l=k+1; l<MM.size(); ++l) {
332 const double z2 = (redshift.size()>1) ? redshift[l] : redshift[0];
333 const double sigma2 = sqrt(sigma2M(MM[l], method_SS, 0., store_output, output_root, interpType, k_max, input_file, is_parameter_file,
true));
334 bias2[k] = bias_halo(MM[k], sigma1, z1, model_bias, store_output, output_root, interpType, Delta, kk, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file)*bias_halo(MM[l], sigma2, z2, model_bias, store_output, output_root, interpType, Delta, kk, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file);
349 vector<double>
cbl::cosmology::Cosmology::bias_eff_mass (
const std::vector<double> mass,
const std::vector<double> mass_grid,
const std::vector<double> redshift,
const std::string model_bias,
const std::string method_SS,
const std::string meanType,
const bool store_output,
const std::string output_root,
const double Delta,
const double kk,
const std::string interpType,
const int norm,
const double k_min,
const double k_max,
const double prec,
const std::string input_file,
const bool is_parameter_file)
351 if (meanType!=
"mean_bias" && meanType!=
"pair_mean_bias")
352 ErrorCBL(
"the chosen meanType is not allowed!",
"bias_eff_mass",
"Bias.cpp");
354 vector<double>
Sigma;
356 for (
size_t k=0; k<mass_grid.size(); k++)
357 Sigma.emplace_back(sqrt(sigma2M(mass_grid[k], method_SS, 0., store_output, output_root, interpType, k_max, input_file, is_parameter_file,
true)));
360 if (meanType==
"mean_bias") {
361 vector<double>
bias(mass.size());
362 for (
size_t k=0; k<mass.size(); k++)
363 bias[k] = bias_halo(mass[k], sigma_interp(mass[k]), (redshift.size()>1) ? redshift[k] : redshift[0], model_bias, store_output, output_root, interpType, Delta, kk, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file);
368 vector<double> bias2(mass.size());
369 for (
size_t k=0; k<mass.size(); k++) {
370 const double z1 = (redshift.size()>1) ? redshift[k] : redshift[0];
371 for (
size_t l=k+1; l<mass.size(); ++l) {
372 const double z2 = (redshift.size()>1) ? redshift[l] : redshift[0];
373 bias2[k] = bias_halo(mass[k], sigma_interp(mass[k]), z1, model_bias, store_output, output_root, interpType, Delta, kk, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file)*bias_halo(mass[l], sigma_interp(mass[l]), z2, model_bias, store_output, output_root, interpType, Delta, kk, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file);
385 vector<double>
cbl::cosmology::Cosmology::bias_eff_selection_function (
const glob::FuncGrid interp_sigma,
const glob::FuncGrid interp_DlnSigma,
const glob::FuncGrid interp_SF,
const double Mass_min,
const double Mass_max,
const std::vector<double> redshift,
const std::string model_bias,
const std::string model_MF,
const std::string method_SS,
const double alpha,
const bool store_output,
const std::string output_root,
const double Delta_crit,
const double kk,
const std::string interpType,
const int norm,
const double k_min,
const double k_max,
const double prec,
const std::string input_file,
const bool is_parameter_file)
388 vector<double> Bias_eff(redshift.size(), 0.);
392 for (
size_t i=0; i<redshift.size(); ++i) {
394 const double DD = Delta_crit/OmegaM(redshift[i]);
395 vector<double> sigma = interp_sigma.
eval_func(mass_vec);
396 vector<double> dlnsigma = interp_DlnSigma.
eval_func(mass_vec);
397 vector<double> mass_func =
mass_function(mass_vec, sigma, dlnsigma, redshift[i], model_MF, store_output, output_root, DD, interpType, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file);
398 vector<double> bias_func = bias_halo(mass_vec, sigma, redshift[i], model_bias, store_output, output_root, interpType, DD, kk, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file);
403 auto integrand_num = [&] (
const double lg_mass)
405 const double mass = exp(lg_mass);
407 const double SF = interp_SF(mass/
alpha);
409 const double BH = interp_BH(mass);
411 const double MF = interp_MF(mass);
413 return SF*BH*MF*mass;
416 auto integrand_denom = [&] (
const double lg_mass)
418 const double mass = exp(lg_mass);
420 const double SF = interp_SF(mass/
alpha);
422 const double MF = interp_MF(mass);
438 vector<double>
cbl::cosmology::Cosmology::bias_eff_selection_function (
const glob::FuncGrid interp_sigma,
const glob::FuncGrid interp_DlnSigma,
const glob::FuncGrid2D interp_SF,
const double Mass_min,
const double Mass_max,
const std::vector<double> redshift,
const std::string model_bias,
const std::string model_MF,
const std::string method_SS,
const double alpha,
const bool store_output,
const std::string output_root,
const double Delta_crit,
const double kk,
const std::string interpType,
const int norm,
const double k_min,
const double k_max,
const double prec,
const std::string input_file,
const bool is_parameter_file)
440 vector<double> Bias_eff(redshift.size(), 0.);
442 for (
size_t i=0; i<redshift.size(); ++i) {
444 const double DD = Delta_crit/OmegaM(redshift[i]);
446 auto integrand_num = [&] (
const double mass)
448 const double sigma = interp_sigma(mass);
449 const double dlnsigma = interp_DlnSigma(mass);
451 const double SF = interp_SF(mass/
alpha, redshift[i]);
453 const double BH = bias_halo(mass, sigma, redshift[i], model_bias, store_output, output_root, interpType, DD, kk, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file);
455 const double MF =
mass_function(mass, sigma, dlnsigma, redshift[i], model_MF, store_output, output_root, DD, interpType, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file);
460 auto integrand_denom = [&] (
const double mass)
462 const double sigma = interp_sigma(mass);
463 const double dlnsigma = interp_DlnSigma(mass);
465 const double SF = interp_SF(mass/
alpha, redshift[i]);
467 const double MF =
mass_function(mass, sigma, dlnsigma, redshift[i], model_MF, store_output, output_root, DD, interpType, norm, k_min, k_max, prec, method_SS, input_file, is_parameter_file);
483 vector<double>
cbl::cosmology::Cosmology::bias_eff_selection_function (
const double Mass_min,
const double Mass_max,
const std::vector<double> redshift,
const std::string model_bias,
const std::string model_MF,
const std::string method_SS,
const std::string selection_function_file,
const std::vector<int> column,
const double alpha,
const bool store_output,
const std::string output_root,
const double Delta_crit,
const double kk,
const std::string interpType,
const int norm,
const double k_min,
const double k_max,
const double prec,
const std::string input_file,
const bool is_parameter_file)
487 const string file_grid = create_grid_sigmaM(method_SS, 0., store_output, output_root, interpType, k_max, input_file, is_parameter_file);
489 ifstream fin(file_grid.c_str());
checkIO(fin, file_grid);
492 vector<double> mass, sigma, dlnsigma;
495 if (Mass_min<
Mass &&
Mass<Mass_max) {
496 mass.push_back(
Mass);
497 sigma.push_back(
Sigma);
498 dlnsigma.push_back(Dln_Sigma);
503 ErrorCBL(
"mass.size()=0, Mass_min = " +
conv(Mass_min,
par::fDP3) +
", Mass_max = " +
conv(Mass_max,
par::fDP3) +
", file_grid = " + file_grid,
"bias_eff_selection_function",
"Bias.cpp");
511 vector<double> mass_SF, redshift_SF;
512 vector<vector<double>> selection_function;
514 read_matrix(selection_function_file, mass_SF, redshift_SF, selection_function, column);
516 const glob::FuncGrid2D interp_SF(mass_SF, redshift_SF, selection_function,
"Linear");
521 return bias_eff_selection_function(interp_sigma, interp_DlnSigma, interp_SF, Mass_min, Mass_max, redshift, model_bias, model_MF, method_SS,
alpha, store_output, output_root, Delta_crit, kk, interpType, norm, k_min, k_max, prec, input_file, is_parameter_file);
529 void cbl::cosmology::Cosmology::generate_bias_eff_grid_one_cosmopar (std::vector<double> ¶meter, std::vector<double> &bias_eff,
const std::string dir_output,
const std::string file_bias_eff_grid,
const cbl::cosmology::CosmologicalParameter cosmoPar,
const double min_par,
const double max_par,
const int nbin_par,
const std::vector<double> mass,
const std::vector<double> mass_grid,
const std::vector<double> redshift,
const std::string model_bias,
const std::string method_SS,
const std::string meanType,
const bool store_output,
const std::string output_root,
const double Delta,
const double kk,
const std::string interpType,
const int norm,
const double k_min,
const double k_max,
const double prec,
const std::string input_file,
const bool is_parameter_file,
const cbl::cosmology::Cosmology cosmology_mass,
const std::vector<double> redshift_source)
531 const double defaultValue = value(cosmoPar);
533 const string file = dir_output+file_bias_eff_grid;
535 ifstream fin(file.c_str());
541 ofstream fout(file.c_str());
checkIO(fout, file);
543 for (
int i=0; i<nbin_par; i++) {
544 set_parameter(cosmoPar, pp[i]);
546 (void)cosmology_mass;
547 (void)redshift_source;
555 fout << pp[i] <<
" " << bias_eff_mass(mass, mass_grid, redshift, model_bias, method_SS, meanType, store_output, output_root, Delta, kk, interpType, norm, k_min, k_max, prec, input_file, is_parameter_file)[0] << endl;
558 fout.clear(); fout.close();
561 fin.clear(); fin.close();
563 fin.open(file.c_str());
checkIO(fin, file);
565 parameter.erase(parameter.begin(), parameter.end());
566 bias_eff.erase(bias_eff.begin(), bias_eff.end());
569 while (getline(fin, line)) {
570 stringstream SS(line);
double _p, _b;
572 parameter.push_back(_p);
573 bias_eff.push_back(_b);
575 fin.clear(); fin.close();
577 if (parameter.size()<2)
ErrorCBL(
"parameter.size()<2; check the grid file: "+file+
"!",
"generate_bias_eff_grid_one_cosmopar",
"Bias.cpp");
579 set_parameter(cosmoPar, defaultValue);
586 void cbl::cosmology::Cosmology::generate_bias_eff_grid_one_cosmopar (std::vector<double> ¶meter, std::vector<double> &bias_eff,
const std::string dir_output,
const std::string file_bias_eff_grid,
const cbl::cosmology::CosmologicalParameter cosmoPar,
const double min_par,
const double max_par,
const int nbin_par,
const double redshift,
const double Mass_min,
const double Mass_max,
const std::string model_bias,
const std::string model_MF,
const std::string method_SS,
const std::string selection_function_file,
const std::vector<int> column,
const double alpha,
const bool store_output,
const std::string output_root,
const double Delta_crit,
const double kk,
const std::string interpType,
const int norm,
const double k_min,
const double k_max,
const double prec,
const std::string input_file,
const bool is_parameter_file)
588 const double defaultValue = value(cosmoPar);
590 const string file = dir_output+file_bias_eff_grid;
592 ifstream fin(file.c_str());
597 ofstream fout(file.c_str());
599 if ((
int)pp.size()<nbin_par)
ErrorCBL(
conv(pp.size(),
par::fINT)+
" < nbin_par!",
"generate_bias_eff_grid_one_cosmopar",
"Bias.cpp");
601 for (
int i=0; i<nbin_par; i++) {
602 set_parameter(cosmoPar, pp[i]);
604 fout << pp[i] <<
" " << bias_eff_selection_function(Mass_min, Mass_max, {redshift}, model_bias, model_MF, method_SS, selection_function_file, column,
alpha, store_output, output_root, Delta_crit, kk, interpType, norm, k_min, k_max, prec, input_file, is_parameter_file)[0] << endl;
608 fout.clear(); fout.close();
611 fin.clear(); fin.close();
612 fin.open(file.c_str());
614 parameter.erase(parameter.begin(), parameter.end());
615 bias_eff.erase(bias_eff.begin(), bias_eff.end());
618 while (getline(fin, line)) {
619 stringstream SS(line);
double _p, _b;
622 parameter.push_back(_p);
623 bias_eff.push_back(_b);
625 fin.clear(); fin.close();
627 if (parameter.size()<2)
ErrorCBL(
"parameter.size()<2; check the grid file: "+file+
"!",
"generate_bias_eff_grid_one_cosmopar",
"Bias.cpp");
629 set_parameter(cosmoPar, defaultValue);
636 void cbl::cosmology::Cosmology::generate_bias_eff_grid_two_cosmopars (vector<double> ¶meter1, vector<double> ¶meter2, vector<vector<double>> &bias_eff,
const std::string dir_output,
const std::string file_bias_eff_grid,
const cbl::cosmology::CosmologicalParameter cosmoPar1,
const double min_par1,
const double max_par1,
const int nbin_par1,
const cbl::cosmology::CosmologicalParameter cosmoPar2,
const double min_par2,
const double max_par2,
const int nbin_par2,
const std::vector<double> mass,
const std::vector<double> mass_grid,
const std::vector<double> redshift,
const std::string model_bias,
const std::string method_SS,
const std::string meanType,
const bool store_output,
const std::string output_root,
const double Delta,
const double kk,
const std::string interpType,
const int norm,
const double k_min,
const double k_max,
const double prec,
const std::string input_file,
const bool is_parameter_file,
const cbl::cosmology::Cosmology cosmology_mass,
const std::vector<double> redshift_source)
638 double defaultValue1 = value(cosmoPar1);
639 double defaultValue2 = value(cosmoPar2);
641 string file = dir_output+file_bias_eff_grid;
643 ifstream fin(file.c_str());
649 ofstream fout(file.c_str());
checkIO(fout, file);
651 for (
int i=0; i<nbin_par1; i++) {
652 set_parameter(cosmoPar1, pp1[i]);
653 for (
int j=0; j<nbin_par2; j++) {
654 set_parameter(cosmoPar2, pp2[j]);
657 vector<double> _mass(mass.size());
658 for (
size_t mm=0; mm<mass.size(); mm++)
659 _mass[mm] = converted_mass(mass[mm], cosmology_mass, redshift[mm], (redshift_source.size()==redshift.size()) ? redshift_source[mm] : 0.);
661 const double bias = bias_eff_mass(mass, mass_grid, redshift, model_bias, method_SS, meanType, store_output, output_root, Delta, kk, interpType, norm, k_min, k_max, prec, input_file, is_parameter_file)[0];
663 fout << pp1[i] <<
" " << pp2[j] <<
" " <<
bias << endl;
664 coutCBL <<
"parameter1 = " << pp1[i] <<
", parameter2 = " << pp2[j] <<
", bias = " <<
bias << endl;
668 fout.clear(); fout.close();
671 read_matrix(file, parameter1, parameter2, bias_eff);
673 set_parameter(cosmoPar1, defaultValue1);
674 set_parameter(cosmoPar2, defaultValue2);
#define coutCBL
CBL print message.
void generate_bias_eff_grid_one_cosmopar(std::vector< double > ¶meter, std::vector< double > &bias_eff, const std::string dir_output, const std::string file_bias_eff_grid, const cbl::cosmology::CosmologicalParameter cosmoPar, const double min_par, const double max_par, const int nbin_par, const std::vector< double > mass, const std::vector< double > mass_grid, const std::vector< double > redshift, const std::string model_bias, const std::string method_SS, const std::string meanType="mean_bias", const bool store_output=true, const std::string output_root="test", const double Delta_crit=200., const double kk=-1., const std::string interpType="Linear", const int norm=-1, const double k_min=0.001, const double k_max=100., const double prec=1.e-2, const std::string input_file=par::defaultString, const bool is_parameter_file=true, const cbl::cosmology::Cosmology cosmology_mass={}, const std::vector< double > redshift_source={})
compute the effective bias of dark matter haloes, by averaging the bias of a set of haloes,...
std::vector< double > bias_eff_selection_function(const glob::FuncGrid interp_sigma, const glob::FuncGrid interp_DnSigma, const glob::FuncGrid interp_SF, const double Mass_min, const double Mass_max, const std::vector< double > redshift, const std::string model_bias, const std::string model_MF, const std::string method_SS, const double alpha=1., const bool store_output=true, const std::string output_root="test", const double Delta_crit=200., const double kk=-1., const std::string interpType="Linear", const int norm=-1, const double k_min=0.001, const double k_max=100., const double prec=1.e-2, const std::string input_file=par::defaultString, const bool is_parameter_file=true)
effective bias of dark matter haloes, computed using a given selection function; σ(mass) and dlnσ/dM ...
void generate_bias_eff_grid_two_cosmopars(std::vector< double > ¶meter1, std::vector< double > ¶meter2, std::vector< std::vector< double >> &bias_eff, const std::string dir_output, const std::string file_bias_eff_grid, const cbl::cosmology::CosmologicalParameter cosmoPar1, const double min_par1, const double max_par1, const int nbin_par1, const cbl::cosmology::CosmologicalParameter cosmoPar2, const double min_par2, const double max_par2, const int nbin_par2, const std::vector< double > mass, const std::vector< double > mass_grid, const std::vector< double > redshift, const std::string model_bias, const std::string method_SS, const std::string meanType="mean_bias", const bool store_output=true, const std::string output_root="test", const double Delta=200., const double kk=-1., const std::string interpType="Linear", const int norm=-1, const double k_min=0.001, const double k_max=100., const double prec=1.e-2, const std::string input_file=par::defaultString, const bool is_parameter_file=true, const cbl::cosmology::Cosmology cosmology_mass={}, const std::vector< double > redshift_source={})
effective bias of dark matter haloes, computed by averaging the bias of a set of haloes,...
std::vector< double > bias_eff_mass_grid(const std::vector< double > MM, const std::vector< double > redshift, const std::string model_bias, const std::string method_SS, const std::string meanType="mean_bias", const bool store_output=true, const std::string output_root="test", const double Delta_crit=200., const double kk=-1., const std::string interpType="Linear", const int norm=-1, const double k_min=0.001, const double k_max=100., const double prec=1.e-2, const std::string input_file=par::defaultString, const bool is_parameter_file=true)
effective bias of dark matter haloes, computed by averaging the bias of a set of haloes,...
double m_bias_halo_generator(const double Sigma, const double redshift, const std::string author, const double Delta=200.) const
auxiliary function to compute the halo bias
double bias_halo(const double Mass, const double redshift, const std::string author, const std::string method_SS, const bool store_output=true, const std::string output_root="test", const std::string interpType="Linear", const double Delta=200., const double kk=-1., const int norm=-1, const double k_min=0.001, const double k_max=100., const double prec=1.e-2, const std::string input_file=par::defaultString, const bool is_parameter_file=true)
bias of dark matter haloes
std::vector< double > bias_eff_mass(const std::vector< double > MM, const std::vector< double > redshift, const std::string model_bias, const std::string method_SS, const std::string meanType="mean_bias", const bool store_output=true, const std::string output_root="test", const double Delta=200., const double kk=-1., const std::string interpType="Linear", const int norm=-1, const double k_min=0.001, const double k_max=100., const double prec=1.e-2, const std::string input_file=par::defaultString, const bool is_parameter_file=true)
effective bias of dark matter haloes, computed by averaging the bias of a set of haloes
double bias_eff(const double Mass_min, const double Mass_max, const double redshift, const std::string model_bias, const std::string model_MF, const std::string method_SS, const bool store_output=true, const std::string output_root="test", const double Delta=200., const double kk=-1., const std::string interpType="Linear", const int norm=-1, const double k_min=0.001, const double k_max=100., const double prec=1.e-2, const std::string input_file=par::defaultString, const bool is_parameter_file=true)
the effective bias of dark matter haloes, with masses in a given range and at a given mean redshift
std::vector< double > eval_func(const std::vector< double > xx) const
evaluate the function at the xx points
static const char fDP3[]
conversion symbol for: double -> std::string
static const char fINT[]
conversion symbol for: int -> std::string
static const double alpha
: the fine-structure constant
static const double cc
: the speed of light in vacuum (the value is exact) [km/sec]
CosmologicalParameter
the cosmological parameters
double mass_function(const double mass, cosmology::Cosmology cosmology, const double redshift, const std::string model_MF, const bool store_output, const double Delta, const bool isDelta_critical, const cbl::glob::FuncGrid interp_Pk, const double kmax)
compute the mass function
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
double GSL_integrate_qag(gsl_function Func, const double a, const double b, const double rel_err=1.e-3, const double abs_err=0, const int limit_size=1000, const int rule=6)
integral, computed using the GSL qag method
The global namespace of the CosmoBolognaLib
T Min(const std::vector< T > vect)
minimum element of a std::vector
std::string conv(const T val, const char *fact)
convert a number to a std::string
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 Average(const std::vector< double > vect)
the average of a std::vector
T Mass(const T RR, const T Rho)
the mass of a sphere of a given radius and density
std::vector< T > logarithmic_bin_vector(const size_t nn, const T min, const T max)
fill a std::vector with logarithmically spaced values
std::vector< T > linear_bin_vector(const size_t nn, const T min, const T max)
fill a std::vector with linearly spaced values
void checkIO(const std::ifstream &fin, const std::string file="NULL")
check if an input file can be opened
int ErrorCBL(const std::string msg, const std::string functionCBL, const std::string fileCBL, const cbl::glob::ExitCode exitCode=cbl::glob::ExitCode::_error_)
throw an exception: it is used for handling exceptions inside the CosmoBolognaLib
T Max(const std::vector< T > vect)
maximum element of a std::vector
double interpolated(const double _xx, const std::vector< double > xx, const std::vector< double > yy, const std::string type)
1D interpolation
double Sigma(const std::vector< double > vect)
the standard deviation of a std::vector