GammaLib
2.1.0.dev
|
LogParabola spectral model class. More...
#include <GModelSpectralLogParabola.hpp>
Classes | |
class | eflux_kern |
class | flux_kern |
Public Member Functions | |
GModelSpectralLogParabola (void) | |
Void constructor. More... | |
GModelSpectralLogParabola (const std::string &type, const std::string &prefactor, const std::string &index, const std::string &pivot, const std::string &curvature) | |
Model type and parameter name constructor. More... | |
GModelSpectralLogParabola (const double &prefactor, const double &index, const GEnergy &pivot, const double &curvature) | |
Constructor. More... | |
GModelSpectralLogParabola (const GXmlElement &xml) | |
XML constructor. More... | |
GModelSpectralLogParabola (const GModelSpectralLogParabola &model) | |
Copy constructor. More... | |
virtual | ~GModelSpectralLogParabola (void) |
Destructor. More... | |
virtual GModelSpectralLogParabola & | operator= (const GModelSpectralLogParabola &model) |
Assignment operator. More... | |
virtual void | clear (void) |
Clear log parabola model. More... | |
virtual GModelSpectralLogParabola * | clone (void) const |
Clone log parabola model. More... | |
virtual std::string | classname (void) const |
Return class name. More... | |
virtual std::string | type (void) const |
Return model type. More... | |
virtual double | eval (const GEnergy &srcEng, const GTime &srcTime=GTime(), const bool &gradients=false) const |
Evaluate model. More... | |
virtual double | flux (const GEnergy &emin, const GEnergy &emax) const |
Returns model photon flux between emin, emax More... | |
virtual double | eflux (const GEnergy &emin, const GEnergy &emax) const |
Returns model energy flux between emin, emax More... | |
virtual GEnergy | mc (const GEnergy &emin, const GEnergy &emax, const GTime &time, GRan &ran) const |
Returns Monte Carlo energy between [emin, emax]. More... | |
virtual void | read (const GXmlElement &xml) |
Read model from XML element. More... | |
virtual void | write (GXmlElement &xml) const |
Write model into XML element. More... | |
virtual std::string | print (const GChatter &chatter=NORMAL) const |
Print LogParabola information. More... | |
void | type (const std::string &type) |
Set model type. More... | |
double | prefactor (void) const |
Return pre factor. More... | |
void | prefactor (const double &prefactor) |
Set pre factor. More... | |
double | index (void) const |
Return spectral index. More... | |
void | index (const double &index) |
Set spectral index. More... | |
double | curvature (void) const |
Return spectral curvature. More... | |
void | curvature (const double &curvature) |
Set spectral curvature. More... | |
GEnergy | pivot (void) const |
Return pivot energy. More... | |
void | pivot (const GEnergy &pivot) |
Set pivot energy. More... | |
Public Member Functions inherited from GModelSpectral | |
GModelSpectral (void) | |
Void constructor. More... | |
GModelSpectral (const GModelSpectral &model) | |
Copy constructor. More... | |
virtual | ~GModelSpectral (void) |
Destructor. More... | |
virtual GModelSpectral & | operator= (const GModelSpectral &model) |
Assignment operator. More... | |
virtual GModelPar & | operator[] (const int &index) |
Returns model parameter. More... | |
virtual const GModelPar & | operator[] (const int &index) const |
Returns model parameter (const version) More... | |
virtual GModelPar & | operator[] (const std::string &name) |
Returns reference to model parameter. More... | |
virtual const GModelPar & | operator[] (const std::string &name) const |
Returns reference to model parameter (const version) More... | |
GModelPar & | at (const int &index) |
Returns model parameter. More... | |
const GModelPar & | at (const int &index) const |
Returns model parameter (const version) More... | |
bool | has_par (const std::string &name) const |
Checks if parameter name exists. More... | |
int | size (void) const |
Return number of parameters. More... | |
void | autoscale (void) |
Autoscale parameters. 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 GModelSpectralLogParabola &model) |
Copy class members. More... | |
void | free_members (void) |
Delete class members. More... | |
void | update_eval_cache (const GEnergy &energy) const |
Update eval precomputation cache. More... | |
void | update_mc_cache (const GEnergy &emin, const GEnergy &emax, const GTime &time) const |
Update Monte Carlo pre computation cache. More... | |
Protected Member Functions inherited from GModelSpectral | |
void | init_members (void) |
Initialise class members. More... | |
void | copy_members (const GModelSpectral &model) |
Copy class members. More... | |
void | free_members (void) |
Delete class members. More... | |
Protected Attributes | |
std::string | m_type |
Model type. More... | |
GModelPar | m_norm |
Normalization factor. More... | |
GModelPar | m_index |
Spectral index. More... | |
GModelPar | m_curvature |
Curvature. More... | |
GModelPar | m_pivot |
Pivot energy. More... | |
GEnergy | m_last_energy |
Last energy value. More... | |
double | m_last_index |
Last index parameter. More... | |
double | m_last_curvature |
Last curvature parameters. More... | |
double | m_last_pivot |
Last pivot parameter. More... | |
double | m_last_e_norm |
Last E/Epivot value. More... | |
double | m_last_log_e_norm |
Last ln(E/Epivot) value. More... | |
double | m_last_exponent |
Last exponent. More... | |
double | m_last_power |
Last power value. More... | |
double | m_mc_emin |
Minimum energy. More... | |
double | m_mc_emax |
Maximum energy. More... | |
double | m_mc_exponent |
Exponent (index+1) More... | |
double | m_mc_pow_emin |
Power of minimum energy. More... | |
double | m_mc_pow_ewidth |
Power of energy width. More... | |
double | m_mc_norm |
Norm of powerlaw model at logparabola pivot energy. More... | |
Protected Attributes inherited from GModelSpectral | |
std::vector< GModelPar * > | m_pars |
Parameter pointers. More... | |
LogParabola spectral model class.
This class implements a log parabola spectrum. The spectrum is defined by
\[ S_{\rm E}(E | t) = {\tt m\_norm} \left( \frac{E}{\tt m\_pivot} \right)^{{\tt m\_index} + {\tt m\_curvature} \, \ln \frac{E}{\tt m\_pivot}} \]
where
Definition at line 64 of file GModelSpectralLogParabola.hpp.
GModelSpectralLogParabola::GModelSpectralLogParabola | ( | void | ) |
Void constructor.
Definition at line 87 of file GModelSpectralLogParabola.cpp.
References init_members().
Referenced by clone().
GModelSpectralLogParabola::GModelSpectralLogParabola | ( | const std::string & | type, |
const std::string & | prefactor, | ||
const std::string & | index, | ||
const std::string & | pivot, | ||
const std::string & | curvature | ||
) |
Model type and parameter name constructor.
[in] | type | Model type. |
[in] | prefactor | Name of prefactor parameter. |
[in] | index | Name of index parameter. |
[in] | pivot | Name of pivot parameter. |
[in] | curvature | Name of curvature parameter. |
Definition at line 106 of file GModelSpectralLogParabola.cpp.
References init_members(), m_curvature, m_index, m_norm, m_pivot, m_type, GOptimizerPar::name(), and type().
GModelSpectralLogParabola::GModelSpectralLogParabola | ( | const double & | prefactor, |
const double & | index, | ||
const GEnergy & | pivot, | ||
const double & | curvature | ||
) |
Constructor.
[in] | prefactor | Power law pre factor. |
[in] | index | Power law index. |
[in] | pivot | Pivot energy. |
[in] | curvature | Curvature. |
Construct a LogParabola model from
Definition at line 144 of file GModelSpectralLogParabola.cpp.
References GModelSpectral::autoscale(), init_members(), m_curvature, m_index, m_norm, m_pivot, GEnergy::MeV(), and GOptimizerPar::value().
|
explicit |
XML constructor.
[in] | xml | XML element. |
Constructs log parabola spectral model by extracting information from an XML element. See the read() method for more information about the expected structure of the XML element.
Definition at line 176 of file GModelSpectralLogParabola.cpp.
References init_members(), and read().
GModelSpectralLogParabola::GModelSpectralLogParabola | ( | const GModelSpectralLogParabola & | model | ) |
Copy constructor.
[in] | model | LogParabola model. |
Definition at line 195 of file GModelSpectralLogParabola.cpp.
References copy_members(), and init_members().
|
virtual |
Destructor.
Definition at line 212 of file GModelSpectralLogParabola.cpp.
References free_members().
|
inlinevirtual |
Return class name.
Implements GModelSpectral.
Definition at line 202 of file GModelSpectralLogParabola.hpp.
|
virtual |
Clear log parabola model.
Implements GModelSpectral.
Definition at line 267 of file GModelSpectralLogParabola.cpp.
References GModelSpectral::free_members(), free_members(), GModelSpectral::init_members(), and init_members().
|
virtual |
Clone log parabola model.
Implements GModelSpectral.
Definition at line 287 of file GModelSpectralLogParabola.cpp.
References GModelSpectralLogParabola().
|
protected |
Copy class members.
[in] | model | GModelSpectralLogParabola members which should be copied. |
Definition at line 772 of file GModelSpectralLogParabola.cpp.
References m_curvature, m_index, m_last_curvature, m_last_e_norm, m_last_energy, m_last_exponent, m_last_index, m_last_log_e_norm, m_last_pivot, m_last_power, m_mc_emax, m_mc_emin, m_mc_exponent, m_mc_norm, m_mc_pow_emin, m_mc_pow_ewidth, m_norm, GModelSpectral::m_pars, m_pivot, and m_type.
Referenced by GModelSpectralLogParabola(), and operator=().
|
inline |
Return spectral curvature.
Returns the spectral curvature.
Definition at line 303 of file GModelSpectralLogParabola.hpp.
References m_curvature, and GOptimizerPar::value().
Referenced by eflux(), flux(), mc(), read(), update_eval_cache(), update_mc_cache(), and write().
|
inline |
Set spectral curvature.
[in] | curvature | Spectral curvature. |
Sets the spectral curvature.
Definition at line 317 of file GModelSpectralLogParabola.hpp.
References m_curvature, and GOptimizerPar::value().
|
virtual |
Returns model energy flux between emin, emax
[in] | emin | Minimum photon energy. |
[in] | emax | Maximum photon energy. |
Computes
\[ \int_{\tt emin}^{\tt emax} S_{\rm E}(E | t) E \, dE \]
where
emin
, emax
] is an energy interval, andImplements GModelSpectral.
Definition at line 458 of file GModelSpectralLogParabola.cpp.
References curvature(), GIntegral::eps(), index(), GEnergy::MeV(), gammalib::MeV2erg, pivot(), prefactor(), and GIntegral::romberg().
|
virtual |
Evaluate model.
[in] | srcEng | True photon energy. |
[in] | srcTime | True photon arrival time. |
[in] | gradients | Compute gradients? |
Computes
\[ S_{\rm E}(E | t) = {\tt m\_norm} \left( \frac{E}{\tt m\_pivot} \right)^{{\tt m\_index} + {\tt m\_curvature} \, \ln \frac{E}{\tt m\_pivot}} \]
where
If the gradients
flag is true the method will also compute the partial derivatives of the model with respect to the parameters using
\[ \frac{\delta S_{\rm E}(E | t)}{\delta {\tt m\_norm}} = \frac{S_{\rm E}(E | t)}{{\tt m\_norm}} \]
\[ \frac{\delta S_{\rm E}(E | t)}{\delta {\tt m\_index}} = S_{\rm E}(E | t) \, \ln(E/{\tt m_pivot}) \]
\[ \frac{\delta S_{\rm E}(E | t)}{\delta {\tt m\_curvature}} = S_{\rm E}(E | t) \, (\ln(E/{\tt m_pivot})^2) \]
\[ \frac{\delta S_{\rm E}(E | t)}{\delta {\tt m\_pivot}} = -S_{\rm E}(E | t) \, \left( \frac{2 {\tt m\_curvature} \ln(E/{\tt m_pivot}) + {\tt m\_index}} {{\tt m\_pivot}} \right) \]
Implements GModelSpectral.
Definition at line 343 of file GModelSpectralLogParabola.cpp.
References GOptimizerPar::factor_gradient(), GOptimizerPar::factor_value(), GOptimizerPar::is_free(), gammalib::is_infinite(), gammalib::is_notanumber(), m_curvature, m_index, m_last_exponent, m_last_log_e_norm, m_last_power, m_norm, m_pivot, GOptimizerPar::scale(), update_eval_cache(), and GOptimizerPar::value().
Referenced by update_mc_cache().
Returns model photon flux between emin, emax
[in] | emin | Minimum photon energy. |
[in] | emax | Maximum photon energy. |
Computes
\[ \int_{\tt emin}^{\tt emax} S_{\rm E}(E | t) dE \]
where
emin
, emax
] is an energy interval, andImplements GModelSpectral.
Definition at line 412 of file GModelSpectralLogParabola.cpp.
References curvature(), GIntegral::eps(), index(), GEnergy::MeV(), pivot(), prefactor(), and GIntegral::romberg().
|
protected |
Delete class members.
Definition at line 814 of file GModelSpectralLogParabola.cpp.
Referenced by clear(), operator=(), and ~GModelSpectralLogParabola().
|
inline |
Return spectral index.
Returns the spectral index.
Definition at line 274 of file GModelSpectralLogParabola.hpp.
References m_index, and GOptimizerPar::value().
Referenced by eflux(), flux(), mc(), read(), update_eval_cache(), update_mc_cache(), and write().
|
inline |
Set spectral index.
[in] | index | Spectral index. |
Sets the spectral index.
Definition at line 288 of file GModelSpectralLogParabola.hpp.
References m_index, and GOptimizerPar::value().
|
protected |
Initialise class members.
Definition at line 691 of file GModelSpectralLogParabola.cpp.
References GEnergy::clear(), GOptimizerPar::clear(), GOptimizerPar::fix(), GOptimizerPar::free(), GOptimizerPar::gradient(), GOptimizerPar::has_grad(), m_curvature, m_index, m_last_curvature, m_last_e_norm, m_last_energy, m_last_exponent, m_last_index, m_last_log_e_norm, m_last_pivot, m_last_power, m_mc_emax, m_mc_emin, m_mc_exponent, m_mc_norm, m_mc_pow_emin, m_mc_pow_ewidth, m_norm, GModelSpectral::m_pars, m_pivot, m_type, GOptimizerPar::min(), GOptimizerPar::name(), GOptimizerPar::range(), GOptimizerPar::scale(), GOptimizerPar::unit(), and GOptimizerPar::value().
Referenced by clear(), GModelSpectralLogParabola(), and operator=().
|
virtual |
Returns Monte Carlo energy between [emin, emax].
[in] | emin | Minimum photon energy. |
[in] | emax | Maximum photon energy. |
[in] | time | True photon arrival time. |
[in,out] | ran | Random number generator. |
Returns Monte Carlo energy by randomly drawing from the spectral model.
Implements GModelSpectral.
Definition at line 500 of file GModelSpectralLogParabola.cpp.
References gammalib::check_energy_interval(), curvature(), exp(), G_MC, index(), log(), m_mc_exponent, m_mc_norm, m_mc_pow_emin, m_mc_pow_ewidth, m_pivot, GEnergy::MeV(), pow(), prefactor(), GRan::uniform(), update_mc_cache(), and GOptimizerPar::value().
|
virtual |
Assignment operator.
[in] | model | LogParabola model. |
Definition at line 234 of file GModelSpectralLogParabola.cpp.
References copy_members(), free_members(), init_members(), and GModelSpectral::operator=().
|
inline |
Return pivot energy.
Returns the pivot energy.
Definition at line 332 of file GModelSpectralLogParabola.hpp.
References m_pivot, GEnergy::MeV(), and GOptimizerPar::value().
Referenced by eflux(), flux(), read(), update_eval_cache(), and write().
|
inline |
Set pivot energy.
[in] | pivot | Pivot energy. |
Sets the pivot energy.
Definition at line 348 of file GModelSpectralLogParabola.hpp.
References m_pivot, GEnergy::MeV(), and GOptimizerPar::value().
|
inline |
Return pre factor.
Returns the pre factor.
Definition at line 245 of file GModelSpectralLogParabola.hpp.
References m_norm, and GOptimizerPar::value().
Referenced by eflux(), flux(), mc(), and update_mc_cache().
|
inline |
Set pre factor.
[in] | prefactor | Pre factor (ph/cm2/s/MeV). |
Sets the pre factor.
Definition at line 259 of file GModelSpectralLogParabola.hpp.
References m_norm, and GOptimizerPar::value().
Print LogParabola information.
[in] | chatter | Chattiness (defaults to NORMAL). |
Implements GModelSpectral.
Definition at line 657 of file GModelSpectralLogParabola.cpp.
References GModelSpectral::m_pars, gammalib::parformat(), SILENT, GModelSpectral::size(), and gammalib::str().
|
virtual |
Read model from XML element.
[in] | xml | XML element. |
Read the spectral log parabola information from an XML element.
Implements GModelSpectral.
Definition at line 574 of file GModelSpectralLogParabola.cpp.
References curvature(), G_READ, index(), m_curvature, m_index, m_norm, m_pivot, GOptimizerPar::max(), GOptimizerPar::min(), GOptimizerPar::name(), norm(), pivot(), GModelPar::read(), GOptimizerPar::value(), gammalib::xml_check_parnum(), gammalib::xml_get_par(), and gammalib::xml_has_par().
Referenced by GModelSpectralLogParabola().
|
inlinevirtual |
Return model type.
Returns the type of the log parabola spectral model.
Implements GModelSpectral.
Definition at line 216 of file GModelSpectralLogParabola.hpp.
References m_type.
Referenced by GModelSpectralLogParabola(), type(), and write().
|
inline |
Set model type.
[in] | type | Model type. |
Set the type of the log parabola spectral model.
Definition at line 230 of file GModelSpectralLogParabola.hpp.
|
protected |
Update eval precomputation cache.
[in] | energy | Energy. |
Updates the precomputation cache for eval() method.
Definition at line 828 of file GModelSpectralLogParabola.cpp.
References curvature(), index(), log(), m_curvature, m_index, m_last_curvature, m_last_e_norm, m_last_energy, m_last_exponent, m_last_index, m_last_log_e_norm, m_last_pivot, m_last_power, m_pivot, GEnergy::MeV(), pivot(), pow(), and GOptimizerPar::value().
Referenced by eval().
|
protected |
Update Monte Carlo pre computation cache.
[in] | emin | Minimum photon energy. |
[in] | emax | Maximum photon energy. |
[in] | time | True photon arrival time. |
Updates the precomputation cache for Monte Carlo simulations.
Definition at line 872 of file GModelSpectralLogParabola.cpp.
References curvature(), eval(), index(), log(), m_mc_emax, m_mc_emin, m_mc_exponent, m_mc_norm, m_mc_pow_emin, m_mc_pow_ewidth, m_pivot, GEnergy::MeV(), pow(), prefactor(), and GOptimizerPar::value().
Referenced by mc().
|
virtual |
Write model into XML element.
[in] | xml | XML element. |
Write the LogParabola model information into an XML element.
Implements GModelSpectral.
Definition at line 615 of file GModelSpectralLogParabola.cpp.
References curvature(), G_WRITE, index(), m_curvature, m_index, m_norm, m_pivot, GOptimizerPar::max(), GOptimizerPar::min(), GOptimizerPar::name(), norm(), pivot(), type(), GOptimizerPar::value(), GModelPar::write(), gammalib::xml_check_type(), and gammalib::xml_need_par().
|
protected |
Curvature.
Definition at line 173 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), curvature(), eval(), GModelSpectralLogParabola(), init_members(), read(), update_eval_cache(), and write().
|
protected |
Spectral index.
Definition at line 172 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), eval(), GModelSpectralLogParabola(), index(), init_members(), read(), update_eval_cache(), and write().
|
mutableprotected |
Last curvature parameters.
Definition at line 179 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), init_members(), and update_eval_cache().
|
mutableprotected |
Last E/Epivot value.
Definition at line 181 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), init_members(), and update_eval_cache().
|
mutableprotected |
Last energy value.
Definition at line 177 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), init_members(), and update_eval_cache().
|
mutableprotected |
Last exponent.
Definition at line 183 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), eval(), init_members(), and update_eval_cache().
|
mutableprotected |
Last index parameter.
Definition at line 178 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), init_members(), and update_eval_cache().
|
mutableprotected |
Last ln(E/Epivot) value.
Definition at line 182 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), eval(), init_members(), and update_eval_cache().
|
mutableprotected |
Last pivot parameter.
Definition at line 180 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), init_members(), and update_eval_cache().
|
mutableprotected |
Last power value.
Definition at line 184 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), eval(), init_members(), and update_eval_cache().
|
mutableprotected |
Maximum energy.
Definition at line 188 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), init_members(), and update_mc_cache().
|
mutableprotected |
Minimum energy.
Definition at line 187 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), init_members(), and update_mc_cache().
|
mutableprotected |
Exponent (index+1)
Definition at line 189 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), init_members(), mc(), and update_mc_cache().
|
mutableprotected |
Norm of powerlaw model at logparabola pivot energy.
Definition at line 192 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), init_members(), mc(), and update_mc_cache().
|
mutableprotected |
Power of minimum energy.
Definition at line 190 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), init_members(), mc(), and update_mc_cache().
|
mutableprotected |
Power of energy width.
Definition at line 191 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), init_members(), mc(), and update_mc_cache().
|
protected |
Normalization factor.
Definition at line 171 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), eval(), GModelSpectralLogParabola(), init_members(), prefactor(), read(), and write().
|
protected |
Pivot energy.
Definition at line 174 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), eval(), GModelSpectralLogParabola(), init_members(), mc(), pivot(), read(), update_eval_cache(), update_mc_cache(), and write().
|
protected |
Model type.
Definition at line 170 of file GModelSpectralLogParabola.hpp.
Referenced by copy_members(), GModelSpectralLogParabola(), init_members(), and type().