45 if (parameter_value.size()==m_nparameters_base) {
46 vector<double> all_parameters(m_nparameters, 0);
48 for (
size_t i=0; i<m_nparameters_base; i++)
49 all_parameters[m_base_parameter[i]] = parameter_value[i];
51 for (
size_t i=0; i<m_nparameters_derived; i++)
52 all_parameters[m_derived_parameter[i]] = 0.;
54 return all_parameters;
56 else if (parameter_value.size() == m_nparameters)
57 return parameter_value;
59 ErrorCBL(
"the provided vector has the wrong size!",
"full_parameter",
"ModelParameters.cpp");
71 m_nparameters_base = 0;
72 m_nparameters_derived = 0;
74 m_base_parameter.erase(m_base_parameter.begin(), m_base_parameter.end());
75 m_derived_parameter.erase(m_derived_parameter.begin(), m_derived_parameter.end());
77 for (
size_t i=0; i<m_nparameters; i++) {
78 switch (m_parameter_type[i]) {
79 case statistics::ParameterType::_Base_:
80 m_nparameters_base +=1;
81 m_base_parameter.push_back(i);
84 case statistics::ParameterType::_Correlated_:
85 m_nparameters_correlated ++;
86 m_nparameters_base ++;
87 m_base_parameter.push_back(i);
90 case statistics::ParameterType::_Derived_:
91 m_nparameters_derived += 1;
92 m_derived_parameter.push_back(i);
96 ErrorCBL(
"no such kind of parameter!",
"m_set_parameter_type",
"ModelParameters.cpp");
107 set_parameters(nparameters, parameterTypes, parameterNames);
116 set_parameters(nparameters, parameterNames);
125 return m_nparameters;
134 return m_nparameters_base;
143 return m_nparameters_derived;
152 return m_nparameters_correlated;
162 ErrorCBL(
"nparameters should be > 0!",
"set_parameters",
"ModelParameters.cpp");
164 if ((parameterTypes.size()!=nparameters) && (parameterTypes.size()!=0))
165 ErrorCBL(
"wrong size for the vector parameterTypes!",
"set_parameters",
"ModelParameters.cpp");
167 if ((parameterNames.size()!=nparameters) && (parameterNames.size()!=0))
168 ErrorCBL(
"wrong size for the vector parameterNames!",
"set_parameters",
"ModelParameters.cpp");
171 if ((parameterTypes.size()==nparameters) && (parameterNames.size()==nparameters)) {
172 m_nparameters=nparameters;
173 m_parameter_type = parameterTypes;
174 m_parameter_name = parameterNames;
176 else if ((parameterTypes.size()==0) && (parameterNames.size()==0)) {
177 m_nparameters=nparameters;
178 vector<ParameterType> pTypes(m_nparameters);
179 vector<string> pNames(m_nparameters);
180 for (
size_t i=0; i<m_nparameters; i++) {
181 pTypes[i] = ParameterType::_Base_;
184 m_parameter_type = pTypes;
185 m_parameter_name = pNames;
187 else if ((parameterTypes.size()==nparameters) && (parameterNames.size()==0)) {
188 m_nparameters=nparameters;
189 vector<string> pNames(m_nparameters);
190 for (
size_t i=0; i<m_nparameters; i++)
193 m_parameter_type = parameterTypes;
194 m_parameter_name = pNames;
196 else if ((parameterTypes.size()==0) && (parameterNames.size()==0)) {
197 m_nparameters=nparameters;
198 vector<ParameterType> pTypes(m_nparameters);
199 for (
size_t i=0; i<m_nparameters; i++)
200 pTypes[i] = ParameterType::_Base_;
202 m_parameter_type = pTypes;
203 m_parameter_name = parameterNames;
206 m_set_parameter_type();
216 ErrorCBL(
"nparameters should be > 0!",
"set_parameters",
"ModelParameters.cpp");
218 if ((parameterNames.size()!=nparameters) && (parameterNames.size()!=0))
219 ErrorCBL(
"wrong size for the vector parameterNames!",
"set_parameters",
"ModelParameters.cpp");
221 m_nparameters=nparameters;
222 m_parameter_name = parameterNames;
224 if (parameterNames.size()==0) {
225 vector<string> pNames(m_nparameters);
226 for (
size_t i=0; i<m_nparameters; i++) pNames[i] =
"par_"+
conv(i+1,
par::fINT);
229 vector<ParameterType> pTypes(m_nparameters);
231 for (
size_t i=0; i<m_nparameters; i++)
232 pTypes[i] = ParameterType::_Base_;
234 m_parameter_type = pTypes;
236 m_set_parameter_type();
The class ModelParameters.
size_t nparameters_correlated() const
return the number of correlated parameters
size_t nparameters() const
return the total number of parameters
size_t nparameters_base() const
return the number of base parameters
virtual void set_parameters(const size_t nparameters, std::vector< ParameterType > parameterTypes, std::vector< std::string > parameterNames)
set the parameter
size_t nparameters_derived() const
return the number of derived parameters
virtual std::vector< double > full_parameter(const std::vector< double > parameter_value) const
return all the model parameters, for internal usage
virtual void m_set_parameter_type()
private member to set the parameter types
ModelParameters()=default
default constructor
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
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