46 set_parameters(m_nparameters, m_parameter_type, m_parameter_name);
56 switch (m_parameter_type[p]) {
57 case statistics::ParameterType::_Base_:
58 if (m_parameter_isFixed[p])
64 case statistics::ParameterType::_Correlated_:
68 case statistics::ParameterType::_Derived_:
73 ErrorCBL(
"no such kind of parameter!",
"status",
"LikelihoodParameters.cpp");
86 for (
size_t i=0; i<m_nparameters; i++) {
87 switch (m_parameter_type[i]) {
88 case statistics::ParameterType::_Base_:
89 if (m_parameter_isFixed[i])
90 stat.push_back(
"FIXED");
92 stat.push_back(
"FREE");
95 case statistics::ParameterType::_Correlated_:
96 stat.push_back(
"FREE");
99 case statistics::ParameterType::_Derived_:
100 stat.push_back(
"OUTPUT");
104 ErrorCBL(
"no such kind of parameter!",
"status",
"LikelihoodParameters.cpp");
116 if (parameter_value.size() == m_nparameters_free) {
117 vector<double> all_parameter(m_nparameters, 0);
119 for(
size_t i=0; i<m_nparameters_free; i++)
120 all_parameter[m_free_parameter[i]] = parameter_value[i];
122 for(
size_t i=0; i<m_nparameters_fixed; i++)
123 all_parameter[m_fixed_parameter[i]] = m_parameter_fixed_value[m_fixed_parameter[i]];
125 for(
size_t i=0; i<m_nparameters_derived; i++)
126 all_parameter[m_derived_parameter[i]] = 0.;
128 return all_parameter;
130 else if (parameter_value.size()==m_nparameters)
131 return parameter_value;
133 ErrorCBL(
"the size of the vector of free parameters is incorrect!",
"full_parameters",
"LikelihoodParameters.cpp");
145 m_nparameters_free = 0;
146 m_nparameters_fixed = 0;
147 m_nparameters_base = 0;
148 m_nparameters_derived = 0;
150 m_base_parameter.erase(m_base_parameter.begin(), m_base_parameter.end());
151 m_fixed_parameter.erase(m_fixed_parameter.begin(), m_fixed_parameter.end());
152 m_free_parameter.erase(m_free_parameter.begin(), m_free_parameter.end());
153 m_derived_parameter.erase(m_derived_parameter.begin(), m_derived_parameter.end());
155 for (
size_t i=0; i<m_nparameters; i++) {
156 switch (m_parameter_type[i]) {
157 case statistics::ParameterType::_Base_:
158 if (m_parameter_isFixed[i]) {
159 m_nparameters_fixed ++;
160 m_fixed_parameter.push_back(i);
163 m_nparameters_free ++;
164 m_free_parameter.push_back(i);
166 m_nparameters_base ++;
167 m_base_parameter.push_back(i);
170 case statistics::ParameterType::_Correlated_:
171 if (m_parameter_isFixed[i])
WarningMsgCBL(m_parameter_name[i]+
" set free since is a correlated parameter! ",
"m_set_parameter_type",
"LikelihoodParameters.cpp");
172 m_nparameters_free ++;
173 m_free_parameter.push_back(i);
174 m_nparameters_correlated ++;
175 m_nparameters_base ++;
176 m_base_parameter.push_back(i);
179 case statistics::ParameterType::_Derived_:
180 m_nparameters_derived ++;
181 m_derived_parameter.push_back(i);
185 ErrorCBL(
"no such kind of parameter!",
"m_set_parameter_type",
"LikelihoodParameters.cpp");
196 set_parameters(nparameters, parameterTypes, parameterNames);
205 return m_nparameters_free;
214 return m_nparameters_fixed;
226 ErrorCBL(
"nparameters must be >0!",
"set_parameters",
"LikelihoodParameters.cpp");
228 if ((parameterTypes.size()!=nparameters) && (parameterTypes.size()!=0))
229 ErrorCBL(
"the size of parameterTypes is incorrect!",
"set_parameters",
"LikelihoodParameters.cpp");
231 if ((parameterNames.size()!=nparameters) && (parameterNames.size()!=0))
232 ErrorCBL(
"the size of parameterNames is incorrect!",
"set_parameters",
"LikelihoodParameters.cpp");
235 if ((parameterTypes.size()==nparameters) && (parameterNames.size()==nparameters)) {
236 m_nparameters=nparameters;
237 m_parameter_type = parameterTypes;
238 m_parameter_name = parameterNames;
240 else if ((parameterTypes.size()==0) && (parameterNames.size()==0)) {
241 m_nparameters=nparameters;
242 vector<ParameterType> pTypes(m_nparameters);
243 vector<string> pNames(m_nparameters);
244 for(
size_t i=0; i<m_nparameters; i++) {
245 pTypes[i] = ParameterType::_Base_;
248 m_parameter_type = pTypes;
249 m_parameter_name = pNames;
251 else if ((parameterTypes.size()==nparameters) && (parameterNames.size()==0)) {
252 m_nparameters=nparameters;
253 vector<string> pNames(m_nparameters);
254 for(
size_t i=0; i<m_nparameters; i++)
257 m_parameter_type = parameterTypes;
258 m_parameter_name = pNames;
260 else if ((parameterTypes.size()==0) && (parameterNames.size()==0)) {
261 m_nparameters=nparameters;
262 vector<ParameterType> pTypes(m_nparameters);
263 for(
size_t i=0; i<m_nparameters; i++)
264 pTypes[i] = ParameterType::_Base_;
266 m_parameter_type = pTypes;
267 m_parameter_name = parameterNames;
270 m_parameter_bestfit_value.erase(m_parameter_bestfit_value.begin(), m_parameter_bestfit_value.end());
271 m_parameter_isFixed.resize(m_nparameters,
false);
272 m_parameter_fixed_value.resize(m_nparameters, 0);
273 m_set_parameter_type();
282 switch (m_parameter_type[p]) {
284 case ParameterType::_Base_:
285 m_parameter_isFixed[p] =
false;
286 m_set_parameter_type();
289 case ParameterType::_Correlated_:
290 WarningMsgCBL(m_parameter_name[p]+
" is a correlated parameter!",
"free",
"LikelihoodParameters.cpp");
293 case ParameterType::_Derived_:
294 WarningMsgCBL(m_parameter_name[p]+
" is a derived parameter!",
"free",
"LikelihoodParameters.cpp");
298 ErrorCBL(
"no such kind of parameter!",
"free",
"LikelihoodParameters.cpp");
308 switch (m_parameter_type[p]) {
310 case statistics::ParameterType::_Base_:
311 m_parameter_isFixed[p]=
true;
312 m_parameter_fixed_value[p] = value;
313 m_set_parameter_type();
316 case statistics::ParameterType::_Correlated_:
317 WarningMsgCBL(m_parameter_name[p]+
" is a correlated parameter!",
"fix",
"LikelihoodParameters.cpp");
320 case statistics::ParameterType::_Derived_:
321 WarningMsgCBL(m_parameter_name[p]+
" is a derived parameter!",
"fix",
"LikelihoodParameters.cpp");
325 ErrorCBL(
"no such kind of parameter!",
"fix",
"LikelihoodParameters.cpp");
335 fix(p, m_parameter_bestfit_value[p]);
344 if (m_parameter_bestfit_value.size() == 0)
345 ErrorCBL(
"the best-fit values have not been computed!",
"bestfit_value",
"LikelihoodParameters.cpp");
347 return m_parameter_bestfit_value[p];
355 if (m_parameter_bestfit_value.size()==0)
356 ErrorCBL(
"the best-fit values have not been computed!",
"bestfit_value",
"LikelihoodParameters.cpp");
358 return m_parameter_bestfit_value;
367 if (bestfit_value.size() != m_nparameters)
368 ErrorCBL(
"the size of the input vector is incorrect!",
"set_bestfit_values",
"LikelihoodParameters.cpp");
370 m_parameter_bestfit_value.erase(m_parameter_bestfit_value.begin(), m_parameter_bestfit_value.end());
371 for (
size_t i=0; i<m_nparameters; i++)
372 m_parameter_bestfit_value.push_back(bestfit_value[i]);
381 if (m_parameter_bestfit_value.size() == m_nparameters) {
382 for (
size_t i=0; i<m_nparameters; i++) {
384 switch (m_parameter_type[i]) {
385 case statistics::ParameterType::_Base_:
386 if (m_parameter_isFixed[i])
392 case statistics::ParameterType::_Correlated_:
396 case statistics::ParameterType::_Derived_:
401 ErrorCBL(
"no such kind of parameter!",
"write_bestfit_info",
"LikelihoodParameters.cpp");
404 Print(m_parameter_bestfit_value[i], 5, 10,
"value = ",
"\n",
true, std::cout);
409 ErrorCBL(
"the best-fit values have not been computed!",
"write_bestfit_info",
"LikelihoodParameters.cpp");
#define coutCBL
CBL print message.
The class LikelihoodParameters.
std::vector< double > bestfit_value() const override
get the protected member m_value
void free(const int p) override
set m_fixed to false;
void fix(const int p, const double value) override
fix the parameter at the input value;
std::vector< std::string > status() const
return all the model parameter status
void set_bestfit_values(const std::vector< double > bestfit_value) override
set the protected member m_bestfit_value
void m_set_parameter_type() override
private member to set the parameter types
LikelihoodParameters()=default
default constructor
void reset() override
reset the parameter vectors
void write_bestfit_info() override
write the best fit info
void fix_at_bestfit(const int p) override
fix the parameter at the bestfit value, contained in m_bestfit_value;
std::vector< double > full_parameter(const std::vector< double > parameter_value) const override
return all the model parameter
size_t nparameters_fixed() const override
return the number of fixed parameters
size_t nparameters_free() const override
return the number of free parameters
void set_parameters(const size_t nparameters, std::vector< ParameterType > parameterTypes, std::vector< std::string > parameterNames) override
set the parameter
static const std::string col_green
green colour (used when printing something on the screen)
static const std::string col_default
default colour (used when printing something on the screen)
static const std::string col_yellow
yellow colour (used when printing something on the screen)
static const std::string col_bred
bold high intensty red colour (used when printing something on the screen)
static const std::string col_purple
purple colour (used when printing something on the screen)
static const char fINT[]
conversion symbol for: int -> std::string
The global namespace of the CosmoBolognaLib
std::string conv(const T val, const char *fact)
convert a number to a std::string
void Print(const T value, const int prec, const int ww, const std::string header="", const std::string end="\n", const bool use_coutCBL=true, std::ostream &stream=std::cout, const std::string colour=cbl::par::col_default)
function to print values with a proper homegenised format
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
void WarningMsgCBL(const std::string msg, const std::string functionCBL, const std::string fileCBL)
internal CBL warning message