GammaLib
2.0.0
|
Model parameter class. More...
#include <GModelPar.hpp>
Public Member Functions | |
GModelPar (void) | |
Void constructor. More... | |
GModelPar (const std::string &name, const double &value) | |
Parameter constructor. More... | |
GModelPar (const std::string &name, const double &factor, const double &scale) | |
Parameter constructor. More... | |
GModelPar (const GModelPar &par) | |
Copy constructor. More... | |
virtual | ~GModelPar (void) |
Destructor. More... | |
GModelPar & | operator= (const GModelPar &par) |
Assignment operator. More... | |
GModelPar * | clone (void) const |
Clone model parameter. More... | |
std::string | classname (void) const |
Return class name. More... | |
void | read (const GXmlElement &xml) |
Extract parameter attributes from XML element. More... | |
void | write (GXmlElement &xml) const |
Set or update parameter attributes in XML element. More... | |
Public Member Functions inherited from GOptimizerPar | |
GOptimizerPar (void) | |
Void constructor. More... | |
GOptimizerPar (const std::string &name, const double &value) | |
Parameter constructor. More... | |
GOptimizerPar (const std::string &name, const double &factor, const double &scale) | |
Parameter constructor. More... | |
GOptimizerPar (const GOptimizerPar &par) | |
Copy constructor. More... | |
virtual | ~GOptimizerPar (void) |
Destructor. More... | |
GOptimizerPar & | operator= (const GOptimizerPar &par) |
Assignment operator. More... | |
double | value (void) const |
Return parameter value. More... | |
double | error (void) const |
Return parameter error. More... | |
double | gradient (void) const |
Return parameter gradient. More... | |
double | min (void) const |
Return parameter minimum boundary. More... | |
double | max (void) const |
Return parameter maximum boundary. More... | |
void | value (const double &value) |
Set parameter value. More... | |
void | error (const double &error) |
Set parameter error. More... | |
void | gradient (const double &gradient) |
Set parameter gradient. More... | |
void | min (const double &min) |
Set minimum parameter boundary. More... | |
void | max (const double &max) |
Set maximum parameter boundary. More... | |
void | range (const double &min, const double &max) |
Set minimum and maximum parameter boundaries. More... | |
const double & | factor_value (void) const |
Return parameter factor value. More... | |
const double & | factor_error (void) const |
Return parameter factor error. More... | |
const double & | factor_gradient (void) const |
Return parameter factor gradient. More... | |
const double & | factor_min (void) const |
Return parameter minimum factor boundary. More... | |
const double & | factor_max (void) const |
Return parameter maximum factor boundary. More... | |
const double & | scale (void) const |
Return parameter scale. More... | |
void | factor_value (const double &value) |
Set parameter value factor. More... | |
void | factor_error (const double &error) |
Set parameter factor error. More... | |
void | factor_gradient (const double &gradient) const |
Set parameter factor gradient. More... | |
void | factor_min (const double &min) |
Set minimum parameter boundary factor. More... | |
void | factor_max (const double &max) |
Set maximum parameter boundary factor. More... | |
void | factor_range (const double &min, const double &max) |
Set minimum and maximum parameter boundary factors. More... | |
void | scale (const double &scale) |
Set scale factor. More... | |
bool | has_min (void) const |
Signal if parameter has minimum boundary. More... | |
bool | has_max (void) const |
Signal if parameter has maximum boundary. More... | |
bool | has_factor_min (void) const |
Signal if parameter has minimum factor boundary. More... | |
bool | has_factor_max (void) const |
Signal if parameter has maximum factor boundary. More... | |
bool | has_range (void) const |
Signal if parameter has minimum and maximum boundaries. More... | |
void | remove_min (void) |
Removes minimum boundary. More... | |
void | remove_max (void) |
Removes maximum boundary. More... | |
void | remove_factor_min (void) |
Removes minimum factor boundary. More... | |
void | remove_factor_max (void) |
Removes maximum factor boundary. More... | |
void | remove_range (void) |
Removes minimum and maximum boundary. More... | |
bool | is_free (void) const |
Signal if parameter is free. More... | |
bool | is_fixed (void) const |
Signal if parameter is fixed. More... | |
bool | has_grad (void) const |
Signal if parameter gradient is computed analytically. More... | |
void | free (void) |
Free a parameter. More... | |
void | fix (void) |
Fix a parameter. More... | |
void | has_grad (const bool &grad) |
Set gradient property. More... | |
void | clear (void) |
Clear parameter. More... | |
GOptimizerPar * | clone (void) const |
Clone parameter. More... | |
std::string | classname (void) const |
Return class name. More... | |
const std::string & | name (void) const |
Return parameter name. More... | |
const std::string & | unit (void) const |
Return parameter unit. More... | |
void | name (const std::string &name) |
Set parameter name. More... | |
void | unit (const std::string &unit) |
Set parameter unit. More... | |
void | autoscale (void) |
Autoscale parameter. More... | |
std::string | print (const GChatter &chatter=NORMAL) const |
Print parameter information. More... | |
Public Member Functions inherited from GBase | |
virtual | ~GBase (void) |
Destructor. More... | |
Protected Member Functions | |
void | init_members (void) |
Initialise class members. More... | |
void | copy_members (const GModelPar &par) |
Copy class members. More... | |
void | free_members (void) |
Delete class members. More... | |
Protected Member Functions inherited from GOptimizerPar | |
void | init_members (void) |
Initialise class members. More... | |
void | copy_members (const GOptimizerPar &par) |
Copy class members. More... | |
void | free_members (void) |
Delete class members. More... | |
Additional Inherited Members | |
Protected Attributes inherited from GOptimizerPar | |
std::string | m_name |
Parameter name. More... | |
std::string | m_unit |
Parameter unit. More... | |
double | m_factor_value |
Parameter factor value. More... | |
double | m_factor_error |
Uncertainty in parameter factor value. More... | |
double | m_factor_min |
Parameter minimum factor value. More... | |
double | m_factor_max |
Parameter maximum factor value. More... | |
double | m_factor_gradient |
Function factor gradient. More... | |
double | m_scale |
Parameter scaling (true = factor * scale) More... | |
bool | m_free |
Parameter is free. More... | |
bool | m_has_factor_min |
Parameter has minimum factor boundary. More... | |
bool | m_has_factor_max |
Parameter has maximum factor boundary. More... | |
bool | m_has_grad |
Parameter has analytic gradient. More... | |
Model parameter class.
This class implements a model parameter. A model parameter is a numerical value that is used to describe a model. A model parameter has the following attributes:
value
gives the numerical value of the parametererror
gives the statistical uncertainty in the parameter valuegradient
gives the gradient of a the model with respect to the parametermin
gives the minimum value that the parameter value can takemax
gives the maximum value that the parameter value can takeThe parameter attributes are set and retrieved using the value(), error(), gradient(), min() and max() methods, respectively. Furthermore, the range() method is used to simultaneously set the minimum and maximum value of a parameter.
The minimum and maximum values are optional, and existence of these attributes is tested using the has_min() and has_max() methods, respectively. The minimum value, maximum value are removed using the remove_min() and remove_max() methods. Simultaneous removal of minimum and maximum values is done using the remove_range() method.
Each parameter has furthermore the following properties:
free
specifies whether the parameter should be fittedgrad
specifies whether the parameter gradient is computed analytically (true) or numerically (false)The parameter property free
is set using the free() and fix() methods and it is retrieved using the is_free() and is_fixed() methods. The attribute grad
is set and retrieved using the has has_grad() methods.
Each model parameter is factorized into a factor
and a scale
term. The GModelPar class stores the factors and the scale factor has data members, and the true values are computed using the following relations:
value = m_factor_value * m_scale error = m_factor_error * m_scale gradient = m_factor_gradient * m_scale min = m_factor_min * m_scale max = m_factor_max * m_scale
The factor
and scale
terms can be set and retrieved using the factor_value(), factor_error(), factor_gradient(), factor_min(), factor_max() and scale() methods.
Definition at line 87 of file GModelPar.hpp.
GModelPar::GModelPar | ( | void | ) |
Void constructor.
Definition at line 59 of file GModelPar.cpp.
References init_members().
Referenced by clone().
GModelPar::GModelPar | ( | const std::string & | name, |
const double & | value | ||
) |
Parameter constructor.
[in] | name | Parameter name. |
[in] | value | Parameter value. |
Constructs a parameter from a parameter name
and a parameter value
.
The parameter is auto-scaled, which for a value
that differs from zero sets the scale factor to value
and the factor_value
to unity. For a value
of zero, the scale factor will be set to unity and the factor_value
will be set to value
.
Definition at line 82 of file GModelPar.cpp.
References init_members().
GModelPar::GModelPar | ( | const std::string & | name, |
const double & | factor, | ||
const double & | scale | ||
) |
Parameter constructor.
[in] | name | Parameter name. |
[in] | factor | Parameter value factor. |
[in] | scale | Parameter scaling (non-zero value). |
GException::invalid_argument | Sacle factor of 0 specified. |
Constructs a parameter from a parameter name
, value factor
and scale
factor. The scale
factor needs to be a non-zero value. If the scale
factor is zero, an exception is thrown.
Definition at line 107 of file GModelPar.cpp.
References init_members().
GModelPar::GModelPar | ( | const GModelPar & | par | ) |
Copy constructor.
[in] | par | Model parameter. |
Definition at line 126 of file GModelPar.cpp.
References copy_members(), and init_members().
|
virtual |
|
inlinevirtual |
Return class name.
Implements GBase.
Definition at line 121 of file GModelPar.hpp.
|
virtual |
Clone model parameter.
Implements GBase.
Definition at line 199 of file GModelPar.cpp.
References GModelPar().
|
protected |
Copy class members.
[in] | par | Model parameter. |
Definition at line 411 of file GModelPar.cpp.
Referenced by GModelPar(), and operator=().
|
protected |
Delete class members.
Definition at line 421 of file GModelPar.cpp.
Referenced by operator=(), and ~GModelPar().
|
protected |
Initialise class members.
Definition at line 399 of file GModelPar.cpp.
Referenced by GModelPar(), and operator=().
Assignment operator.
[in] | par | Model parameter. |
Definition at line 164 of file GModelPar.cpp.
References copy_members(), free_members(), init_members(), and GOptimizerPar::operator=().
void GModelPar::read | ( | const GXmlElement & | xml | ) |
Extract parameter attributes from XML element.
[in] | xml | XML element |
GException::invalid_value | Invalid combination of parameter attributes encountered. |
Extracts the parameter attributes from an XML element of the form
<parameter name=".." value=".." error=".." scale=".." min=".." max="..' free="..">
Each of the attributes are optional, with the following scheme for assigning default values in case that the attribute was not found:
@p name sets @p m_name (defaults to "Unknown") @p value sets @p m_factor_value (defaults to 0.0) @p error sets @p m_factor_error (defaults to 0.0) @p scale sets @p m_scale (defaults to 1.0) @p min sets @p m_factor_min (will remove_min() if not found) @p max sets @p m_factor_max (will remove_max() if not found) @p free sets @p m_free (papameter will be fixed if not found)
Definition at line 229 of file GModelPar.cpp.
References GXmlElement::attribute(), GOptimizerPar::factor_max(), GOptimizerPar::factor_min(), GOptimizerPar::fix(), GOptimizerPar::free(), G_READ, GOptimizerPar::has_max(), GOptimizerPar::has_min(), GOptimizerPar::m_factor_error, GOptimizerPar::m_factor_value, GOptimizerPar::m_name, GOptimizerPar::m_scale, GOptimizerPar::max(), GOptimizerPar::min(), GXmlElement::print(), GOptimizerPar::remove_factor_max(), GOptimizerPar::remove_factor_min(), gammalib::str(), gammalib::todouble(), gammalib::tolower(), and GOptimizerPar::value().
Referenced by GModelSpatialRadialProfileGauss::read(), GModelSpatialRadialProfileDMBurkert::read(), GModelSpatialRadialProfileDMEinasto::read(), GModelSpatialRadialProfileDMZhao::read(), GCOMModelDRM::read(), GCTAModelSpatialGradient::read(), GCOMModelDRBPhibarNodes::read(), GCOMModelDRBPhibarBins::read(), GModelSpatialDiffuseConst::read(), GModelTemporalConst::read(), GCTAModelRadialGauss::read(), GCTAModelRadialPolynom::read(), GModelSpatialDiffuseMap::read(), GModelSpatialRadialGauss::read(), GCTAModelRadialProfile::read(), GModelSpatialRadialDisk::read(), GModelSpatialRadialGeneralGauss::read(), GCTAModelSpatialLookup::read(), GModelTemporalLightCurve::read(), GModelSpatialRadialRing::read(), GModelSpectralBins::read(), GModelSpatialEllipticalDisk::read(), GSPIModelDataSpace::read(), GModelSpectralConst::read(), GModelSpatialEllipticalGauss::read(), GModelSpectralTable::read(), GModelSpatialEllipticalGeneralGauss::read(), GModelSpatialPointSource::read(), GModelSpatialElliptical::read(), GModelSpatialRadial::read(), GModelSpatialDiffuseCube::read(), GModelSpectralFunc::read(), GModelSpectralGauss::read(), GModelSpectralPlaw::read(), GModelSpatialRadialShell::read(), GModelSpectralExpPlaw::read(), GModelSpectralLogParabola::read(), GModelSpectralBrokenPlaw::read(), GModelSpectralSuperExpPlaw::read(), GModelSpectralExpInvPlaw::read(), GModelTemporalPhaseCurve::read(), GModelSpectralPlawPhotonFlux::read(), GModelSpectralPlawEnergyFlux::read(), GModelSpectralNodes::read(), GModelSpectralSmoothBrokenPlaw::read(), GModel::read_scales(), and GCTAModelSkyCube::read_xml_spatial().
void GModelPar::write | ( | GXmlElement & | xml | ) | const |
Set or update parameter attributes in XML element.
[in] | xml | XML element. |
Sets or updates the parameter attributes in an XML element of the form
<parameter name=".." value=".." error=".." scale=".." min=".." max="..' free="..">
The following attributes will be set:
@p name @p value @p error (only in case that the parameter is free) @p scale @p min (only in case that a minimum exists) @p max (only in case that a maximum exists) @p free
Definition at line 351 of file GModelPar.cpp.
References GXmlElement::attribute(), GOptimizerPar::factor_max(), GOptimizerPar::factor_min(), GOptimizerPar::has_factor_max(), GOptimizerPar::has_factor_min(), GOptimizerPar::is_free(), GOptimizerPar::m_factor_error, GOptimizerPar::m_factor_value, GOptimizerPar::m_name, GOptimizerPar::m_scale, and gammalib::str().
Referenced by GModelSpatialRadialProfileGauss::write(), GModelSpatialRadialProfileDMEinasto::write(), GModelSpatialRadialProfileDMZhao::write(), GModelSpatialRadialProfileDMBurkert::write(), GCOMModelDRM::write(), GCTAModelSpatialGradient::write(), GModelSpatialDiffuseConst::write(), GCOMModelDRBPhibarNodes::write(), GCOMModelDRBPhibarBins::write(), GModelTemporalConst::write(), GCTAModelRadialGauss::write(), GModelSpatialDiffuseMap::write(), GModelSpatialRadialGauss::write(), GCTAModelRadialProfile::write(), GModelSpatialRadialDisk::write(), GModelSpatialRadialGeneralGauss::write(), GCTAModelSpatialLookup::write(), GModelTemporalLightCurve::write(), GModelSpatialRadialRing::write(), GModelSpectralBins::write(), GModelSpatialEllipticalDisk::write(), GModelSpectralTable::write(), GModelSpatialEllipticalGauss::write(), GModelSpectralConst::write(), GModelSpatialEllipticalGeneralGauss::write(), GModelSpatialPointSource::write(), GModelSpatialElliptical::write(), GModelSpatialRadial::write(), GModelSpatialDiffuseCube::write(), GModelSpectralFunc::write(), GModelSpectralGauss::write(), GModelSpectralPlaw::write(), GModelSpatialRadialShell::write(), GModelSpectralExpPlaw::write(), GModelSpectralLogParabola::write(), GModelSpectralBrokenPlaw::write(), GModelSpectralSuperExpPlaw::write(), GModelSpectralExpInvPlaw::write(), GModelTemporalPhaseCurve::write(), GModelSpectralPlawPhotonFlux::write(), GModelSpectralPlawEnergyFlux::write(), GModelSpectralNodes::write(), GModelSpectralSmoothBrokenPlaw::write(), and GCTAModelSkyCube::write_xml_spatial().