18 RealParameter::RealParameter(
const std::string& name,
double* par,
const std::string& parent_name,
19 const std::function<
void()>& onChange,
const RealLimits& limits,
21 :
IParameter<double>(name, par, parent_name, onChange), m_limits(limits), m_attr(attr)
23 if (!m_limits.isInRange(value())) {
24 std::ostringstream message;
25 message <<
"Cannot initialize parameter " << fullName() <<
" with value " << value()
26 <<
": out of bounds [" << limits <<
"]\n";
27 throw std::runtime_error(message.str());
31 RealParameter* RealParameter::clone(
const std::string& new_name)
const
33 auto* ret =
new RealParameter(new_name !=
"" ? new_name : getName(), m_data, m_parent_name,
34 m_onChange, m_limits);
45 throw std::runtime_error(
"RealParameter::setValue() -> Error. Non-initialized parameter '"
49 std::ostringstream message;
50 message <<
"Cannot set parameter " <<
fullName() <<
" to value " <<
value
51 <<
": out of bounds [" << m_limits <<
"]\n";
52 throw std::runtime_error(message.str());
56 throw std::runtime_error(
"Parameter " +
fullName() +
" is fixed");
79 RealParameter& RealParameter::setLimited(
double lower,
double upper)
97 RealParameter& RealParameter::setUnit(
const std::string& name)
99 if (!(name ==
"" || name ==
"nm" || name ==
"rad" || name ==
"nm^2"))
100 throw std::runtime_error(
"RealParameter::setUnit() -> Error. Unexpected unit name " + name);
102 m_unit.setUnit(name);
106 std::string RealParameter::unit()
const
108 return m_unit.getName();
Defines class RealParameter.
Attributes for a fit parameter.
Pure virtual base class for parameter wrapper classes RealParameter, ComponentParameter.
virtual bool isNull() const
Returns true if wrapped parameter was not initialized with proper real value.
std::string fullName() const
For use in error messages.
Limits for a real fit parameter.
static RealLimits positive()
Creates an object which can have only positive values (>0., zero is not included)
bool isInRange(double value) const
returns true if proposed value is in limits range
static RealLimits nonnegative()
Creates an object which can have only positive values with 0. included.
static RealLimits limited(double left_bound_value, double right_bound_value)
Creates an object bounded from the left and right.
Wraps a parameter of type double.
double value() const
Returns value of wrapped parameter.
void setValue(double value)
Sets value of wrapped parameter and emit signal.