44 using namespace modelling::numbercounts;
50 void cbl::modelling::numbercounts::Modelling_NumberCounts1D_MassProxy::set_model_NumberCounts_cosmology (
const std::string scalrel_z_evo,
const std::string z_error_type,
const std::string proxy_error_type,
const std::vector<cbl::cosmology::CosmologicalParameter> cosmo_param,
const std::vector<statistics::PriorDistribution> cosmo_param_prior,
const statistics::PriorDistribution alpha_prior,
const statistics::PriorDistribution beta_prior,
const statistics::PriorDistribution gamma_prior,
const statistics::PriorDistribution scatter0_prior,
const statistics::PriorDistribution scatterM_prior,
const statistics::PriorDistribution scatterM_exponent_prior,
const statistics::PriorDistribution scatterz_prior,
const statistics::PriorDistribution scatterz_exponent_prior,
const statistics::PriorDistribution z_bias_prior,
const statistics::PriorDistribution proxy_bias_prior,
const statistics::PriorDistribution z_error_prior,
const statistics::PriorDistribution proxy_error_prior,
const std::vector<statistics::PriorDistribution> Plambda_prior)
52 if (Plambda_prior.size() != 3)
53 cbl::ErrorCBL(
"Plambda_prior must have size = 3.",
"set_model_NumberCounts_cosmology",
"Modelling_NumberCounts1D_MassProxy.cpp");
55 m_data_model.Cpar = cosmo_param;
57 const size_t nParams = cosmo_param.size()+15;
59 vector<statistics::ParameterType> Par_type(nParams, statistics::ParameterType::_Base_);
60 vector<string> Par_string(nParams);
61 std::vector<statistics::PriorDistribution> param_prior (nParams);
64 for (
size_t i=0; i<cosmo_param.size(); i++) {
66 param_prior[i] = cosmo_param_prior[i];
70 Par_string[cosmo_param.size()] =
"alpha";
71 param_prior[cosmo_param.size()] = alpha_prior;
72 Par_string[cosmo_param.size()+1] =
"beta";
73 param_prior[cosmo_param.size()+1] = beta_prior;
74 Par_string[cosmo_param.size()+2] =
"gamma";
75 param_prior[cosmo_param.size()+2] = gamma_prior;
76 Par_string[cosmo_param.size()+3] =
"scatter0";
77 param_prior[cosmo_param.size()+3] = scatter0_prior;
78 Par_string[cosmo_param.size()+4] =
"scatterM";
79 param_prior[cosmo_param.size()+4] = scatterM_prior;
80 Par_string[cosmo_param.size()+5] =
"scatterM_exponent";
81 param_prior[cosmo_param.size()+5] = scatterM_exponent_prior;
82 Par_string[cosmo_param.size()+6] =
"scatterz";
83 param_prior[cosmo_param.size()+6] = scatterz_prior;
84 Par_string[cosmo_param.size()+7] =
"scatterz_exponent";
85 param_prior[cosmo_param.size()+7] = scatterz_exponent_prior;
86 Par_string[cosmo_param.size()+8] =
"z_bias";
87 param_prior[cosmo_param.size()+8] = z_bias_prior;
88 Par_string[cosmo_param.size()+9] =
"proxy_bias";
89 param_prior[cosmo_param.size()+9] = proxy_bias_prior;
90 Par_string[cosmo_param.size()+10] =
"z_error";
91 param_prior[cosmo_param.size()+10] = z_error_prior;
92 Par_string[cosmo_param.size()+11] =
"proxy_error";
93 param_prior[cosmo_param.size()+11] = proxy_error_prior;
94 Par_string[cosmo_param.size()+12] =
"Plambda_a";
95 param_prior[cosmo_param.size()+12] = Plambda_prior[0];
96 Par_string[cosmo_param.size()+13] =
"Plambda_b";
97 param_prior[cosmo_param.size()+13] = Plambda_prior[1];
98 Par_string[cosmo_param.size()+14] =
"Plambda_c";
99 param_prior[cosmo_param.size()+14] = Plambda_prior[2];
102 if (scalrel_z_evo ==
"E_z")
103 m_data_model.fz = [] (
const double z,
const double z_piv,
const std::shared_ptr<void> cosmo) {
cbl::cosmology::Cosmology cosmology = *std::static_pointer_cast<cbl::cosmology::Cosmology>(cosmo);
return cosmology.
HH(z)/cosmology.
HH(z_piv);};
104 else if (scalrel_z_evo ==
"direct")
105 m_data_model.fz = [] (
const double z,
const double z_piv,
const std::shared_ptr<void> cosmo) {(void)cosmo;
return (1+z)/(1+z_piv);};
107 cbl::ErrorCBL(
"Error in the input parameter scalrel_z_evo: no such a possibility for f(z)!",
"set_model_NumberCounts_cosmology",
"Modelling_NumberCounts1D_MassProxy.cpp");
110 if (z_error_type ==
"relative")
111 m_data_model.z_error = [] (
const double z_err,
const double z) {
return z_err*z; };
112 else if (z_error_type ==
"absolute")
113 m_data_model.z_error = [] (
const double z_err,
const double z) { (void)z;
return z_err; };
115 cbl::ErrorCBL(
"Error in the input parameter z_error_type: choose between \"relative\" and \"absolute\"!",
"set_model_NumberCounts_cosmology",
"Modelling_NumberCounts1D_MassProxy.cpp");
117 if (proxy_error_type ==
"relative")
118 m_data_model.proxy_error = [] (
const double proxy_err,
const double proxy) {
return proxy_err*proxy; };
119 else if (proxy_error_type ==
"absolute")
120 m_data_model.proxy_error = [] (
const double proxy_err,
const double proxy) { (void)proxy;
return proxy_err; };
122 cbl::ErrorCBL(
"Error in the input parameter proxy_error_type: choose between \"relative\" and \"absolute\"!",
"set_model_NumberCounts_cosmology",
"Modelling_NumberCounts1D_MassProxy.cpp");
125 m_data_model.response_fact = [] (
const double Mass,
const double Sigma,
const double redshift,
const double D_N,
const std::string model_bias,
const double Delta,
const std::string method_SS, std::shared_ptr<void> cosmo) { (void)
Mass; (void)
Sigma; (void)redshift; (void)D_N; (void)model_bias; (void)Delta; (void)method_SS; (void)cosmo;
return 1.; };
127 auto inputs = make_shared<STR_NC_data_model>(m_data_model);
130 m_data_model.response_fact = [] (
const double Mass,
const double Sigma,
const double redshift,
const double D_N,
const std::string model_bias,
const double Delta,
const std::string method_SS, std::shared_ptr<void> cosmo) {
132 return cosmology.
bias_halo(
Mass,
Sigma, redshift, D_N, model_bias,
false,
"test",
"Linear", Delta, -1, -1, 1.e-4, 100, 1.e-2, method_SS,
cbl::par::defaultString,
false);
135 auto inputs2 = make_shared<STR_NC_data_model>(m_data_model);
138 m_set_prior(param_prior);
141 switch (m_HistogramType) {
143 case (glob::HistogramType::_N_V_):
149 ErrorCBL(
"Only counts can be modelled! Set _N_V_ as the histogram type.",
"set_model_NumberCounts_cosmology",
"Modelling_NumberCounts1D_MassProxy.cpp");
Global functions to model number counts as a function of a mass proxy.
The class Modelling_NumberCounts1D_MassProxy.
double HH(const double redshift=0.) const
the Hubble function
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
void set_model_NumberCounts_cosmology(const std::string scalrel_z_evo, const std::string z_error_type, const std::string proxy_error_type, const std::vector< cbl::cosmology::CosmologicalParameter > cosmo_param, const std::vector< statistics::PriorDistribution > cosmo_param_prior, const statistics::PriorDistribution alpha_prior, const statistics::PriorDistribution beta_prior, const statistics::PriorDistribution gamma_prior, const statistics::PriorDistribution scatter0_prior, const statistics::PriorDistribution scatterM_prior, const statistics::PriorDistribution scatterM_exponent_prior, const statistics::PriorDistribution scatterz_prior, const statistics::PriorDistribution scatterz_exponent_prior, const statistics::PriorDistribution z_bias_prior, const statistics::PriorDistribution proxy_bias_prior, const statistics::PriorDistribution z_error_prior, const statistics::PriorDistribution proxy_error_prior, const std::vector< statistics::PriorDistribution > Plambda_prior)
Set the cosmological parameters used to model the number counts as a function of a mass proxy,...
The class PriorDistribution.
static const std::string defaultString
default std::string value
std::string CosmologicalParameter_name(const CosmologicalParameter parameter)
name of the cosmological parameter
std::vector< double > number_counts_proxy(const std::vector< double > proxy, const std::shared_ptr< void > inputs, std::vector< double > ¶meter)
compute the number counts as a function of the mass proxy
The global namespace of the CosmoBolognaLib
T Mass(const T RR, const T Rho)
the mass of a sphere of a given radius and density
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
double Sigma(const std::vector< double > vect)
the standard deviation of a std::vector