47 void cbl::modelling::numbercounts::Modelling_NumberCounts::set_data_model (
const cosmology::Cosmology cosmology,
const double redshift,
const std::string method_Pk,
const double k_min,
const double k_max,
const int step,
const bool store_output,
const int norm,
const double Delta,
const bool isDelta_critical,
const std::string model_MF,
const std::string selection_function_file,
const std::vector<int> selection_function_column,
const double z_min,
const double z_max,
const int z_step,
const double Mass_min,
const double Mass_max,
const int Mass_step,
const double area_degrees,
const double prec)
49 m_data_model.isSnapshot =
false;
51 if (m_fit_range==
false)
ErrorCBL(
"You must set the fit range (through set_fit_range) first!",
"set_data_model",
"Modelling_NumberCounts.cpp");
52 m_data_model.edges_x = m_data->edges_xx();
53 m_data_model.edges_y = m_data->edges_yy();
55 m_data_model.cosmology = make_shared<cosmology::Cosmology>(cosmology);
56 m_data_model.redshift = redshift;
57 m_data_model.method_Pk = method_Pk;
58 m_data_model.k_min = k_min;
59 m_data_model.k_max = k_max;
60 m_data_model.step = step;
62 m_data_model.norm = norm;
64 m_data_model.store_output = store_output;
65 m_data_model.output_root =
"test";
68 m_data_model.isDelta_critical = isDelta_critical;
69 m_data_model.Delta = Delta;
70 m_data_model.model_MF = model_MF;
72 m_data_model.Mass_min = Mass_min;
73 m_data_model.Mass_max = Mass_max;
74 m_data_model.Mass_step = Mass_step;
77 m_data_model.z_min = z_min;
78 m_data_model.z_max = z_max;
79 m_data_model.z_step = z_step;
82 m_data_model.prec = prec;
84 m_data_model.area_rad = area_degrees*pow(
par::pi/180., 2);
85 if (m_data_model.z_min>0)
86 m_data_model.Volume = cosmology.
Volume(z_min, z_max, area_degrees);
89 m_data_model.use_SF =
true;
90 std::vector<double> mass, redshift;
91 std::vector<std::vector<double>> SF;
92 read_matrix(selection_function_file, redshift, mass, SF, selection_function_column);
93 m_data_model.interp_SelectionFunction = make_shared<glob::FuncGrid2D> (
glob::FuncGrid2D(redshift, mass, SF,
"Cubic"));
96 m_data_model.use_SF =
false;
98 m_data_model.is_sigma8_free =
false;
106 void cbl::modelling::numbercounts::Modelling_NumberCounts::set_data_model (
const cosmology::Cosmology cosmology,
const std::vector<double> SF_weights,
const double z_pivot,
const double proxy_pivot,
const double mass_pivot,
const double log_base,
const std::string method_Pk,
const bool store_output,
const int norm,
const double Delta,
const bool isDelta_critical,
const std::string model_MF,
const std::string model_bias,
const double z_min,
const double z_max,
const double area_degrees,
const double prec)
108 m_data_model.isSnapshot =
false;
110 if (m_fit_range==
false)
ErrorCBL(
"You must set the fit range (through set_fit_range) first!",
"set_data_model",
"Modelling_NumberCounts.cpp");
111 m_data_model.edges_x = m_data->edges_xx();
113 for (
size_t i=0; i<m_data_model.edges_x.size(); i++)
114 if (m_data_model.edges_x[i] <= 0)
115 ErrorCBL(
"The values of the proxy edges cannot be <= 0.",
"set_data_model",
"Modelling_NumberCounts.cpp");
117 m_data_model.cosmology = make_shared<cosmology::Cosmology>(cosmology);
119 if (SF_weights.size() == (m_data->edges_xx()).size()-1)
120 m_data_model.SF_weights = SF_weights;
122 ErrorCBL(
"The weights vector must have the same size of the x vector!",
"set_data_model",
"Modelling_NumberCounts.cpp");
123 m_data_model.z_pivot = z_pivot;
124 m_data_model.proxy_pivot = proxy_pivot;
125 m_data_model.mass_pivot = mass_pivot;
126 m_data_model.log_base = log_base;
128 m_data_model.method_Pk = method_Pk;
129 m_data_model.k_min = 1.e-4;
130 m_data_model.k_max = 100.;
131 m_data_model.step = 500;
133 m_data_model.norm = norm;
135 m_data_model.store_output = store_output;
136 m_data_model.output_root =
"test";
139 m_data_model.isDelta_critical = isDelta_critical;
140 m_data_model.Delta = Delta;
141 m_data_model.model_MF = model_MF;
142 m_data_model.model_bias = model_bias;
146 m_data_model.z_min = z_min;
147 m_data_model.z_max = z_max;
149 m_data_model.prec = prec;
151 m_data_model.area_rad = area_degrees*pow(
par::pi/180., 2);
152 if (m_data_model.z_min>0)
153 m_data_model.Volume = cosmology.
Volume(z_min, z_max, area_degrees);
155 m_data_model.is_sigma8_free =
false;
163 void cbl::modelling::numbercounts::Modelling_NumberCounts::set_data_model_SF (
const cosmology::Cosmology cosmology,
const std::vector<double> radii,
const double redshift,
const std::string model_SF,
const double b_eff,
double slope,
double offset,
const double deltav_NL,
const double del_c,
const std::string method_Pk,
const double k_Pk_ratio,
const bool store_output,
const std::string output_root,
const std::string interpType,
const double k_max,
const std::string input_file,
const bool is_parameter_file)
165 m_data_model_SF.cosmology = make_shared<cosmology::Cosmology>(cosmology);
166 m_data_model_SF.radii = radii;
167 m_data_model_SF.redshift = redshift;
168 m_data_model_SF.model_SF = model_SF;
169 m_data_model_SF.b_eff = b_eff;
170 m_data_model_SF.b_slope = slope;
171 m_data_model_SF.b_offset = offset;
172 m_data_model_SF.deltav_NL = deltav_NL;
173 m_data_model_SF.delta_c = del_c;
174 m_data_model_SF.method_Pk = method_Pk;
175 m_data_model_SF.k_Pk_ratio = k_Pk_ratio;
176 m_data_model_SF.store_output = store_output;
177 m_data_model_SF.output_root = output_root;
178 m_data_model_SF.interpType = interpType;
179 m_data_model_SF.k_max = k_max;
180 m_data_model_SF.input_file = input_file;
181 m_data_model_SF.is_parameter_file = is_parameter_file;
The class Modelling_NumberCounts.
double Volume(const double z1, const double z2, const double Area) const
comoving volume for a given redshift range and sky area
void set_data_model(const cbl::cosmology::Cosmology cosmology={}, const double redshift=0., const std::string method_Pk="CAMB", const double k_min=1.e-4, const double k_max=100., const int step=500, const bool store_output=true, const int norm=-1, const double Delta=200., const bool isDelta_critical=true, const std::string model_MF="Tinker", const std::string selection_function_file=par::defaultString, const std::vector< int > selection_function_column={}, const double z_min=par::defaultDouble, const double z_max=par::defaultDouble, const int z_step=50, const double Mass_min=par::defaultDouble, const double Mass_max=par::defaultDouble, const int Mass_step=100, const double area_degrees=par::defaultDouble, const double prec=1.e-4)
set the data used to construct generic models of number counts
void set_data_model_SF(const cosmology::Cosmology cosmology, const std::vector< double > radii, const double redshift, const std::string model, const double b_eff, double slope=0.854, double offset=0.420, const double deltav_NL=-0.795, const double del_c=1.69, const std::string method_Pk="EisensteinHu", const double k_Pk_ratio=-1., const bool store_output=true, const std::string output_root="test", const std::string interpType="Linear", const double k_max=100., const std::string input_file=par::defaultString, const bool is_parameter_file=true)
Member functions used to set the model parameters.
static const std::string defaultString
default std::string value
static const double pi
: the ratio of a circle's circumference to its diameter
The global namespace of the CosmoBolognaLib
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
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
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