GammaLib 2.1.0.dev
Loading...
Searching...
No Matches
GModelDataMultiplicative Class Reference

Multiplicative data model class. More...

#include <GModelDataMultiplicative.hpp>

Inheritance diagram for GModelDataMultiplicative:
GModelData GModel GBase

Public Member Functions

 GModelDataMultiplicative (void)
 Void constructor.
 
 GModelDataMultiplicative (const GXmlElement &xml)
 XML constructor.
 
 GModelDataMultiplicative (const GModelDataMultiplicative &model)
 Copy constructor.
 
virtual ~GModelDataMultiplicative (void)
 Destructor.
 
virtual GModelDataMultiplicativeoperator= (const GModelDataMultiplicative &model)
 Assignment operator.
 
virtual void clear (void)
 Clear multiplicative data model.
 
virtual GModelDataMultiplicativeclone (void) const
 Clone multiplicative data model.
 
virtual std::string classname (void) const
 Return class name.
 
virtual std::string type (void) const
 Return model type.
 
virtual bool is_constant (void) const
 Return if model is constant.
 
virtual double eval (const GEvent &event, const GObservation &obs, const bool &gradients=false) const
 Return model values and gradients.
 
virtual double npred (const GEnergy &obsEng, const GTime &obsTime, const GObservation &obs) const
 Return spatially integrated data model.
 
virtual GEventsmc (const GObservation &obs, GRan &ran) const
 Return simulated events.
 
virtual void read (const GXmlElement &xml)
 Read model from XML element.
 
virtual void write (GXmlElement &xml) const
 Write model into XML element.
 
virtual std::string print (const GChatter &chatter=NORMAL) const
 Print multiplicative data model information.
 
virtual GVector eval (const GObservation &obs, GMatrixSparse *gradients=NULL, const int &offset=0) const
 Return model values and gradients.
 
void append (const GModelData &model)
 Append data model component.
 
int components (void) const
 Return number of data model components.
 
const GModelDatacomponent (const int &index) const
 Return data model by index.
 
const GModelDatacomponent (const std::string &name) const
 Return data model by name.
 
- Public Member Functions inherited from GModelData
 GModelData (void)
 Void constructor.
 
 GModelData (const GXmlElement &xml)
 XML constructor.
 
 GModelData (const GModelData &model)
 Copy constructor.
 
virtual ~GModelData (void)
 Destructor.
 
virtual GModelDataoperator= (const GModelData &model)
 Assignment operator.
 
- Public Member Functions inherited from GModel
 GModel (void)
 Void constructor.
 
 GModel (const GXmlElement &xml)
 XML constructor.
 
 GModel (const GModel &model)
 Copy constructor.
 
virtual ~GModel (void)
 Destructor.
 
virtual GModeloperator= (const GModel &model)
 Assignment operator.
 
virtual GModelParoperator[] (const int &index)
 Returns reference to model parameter by index.
 
virtual const GModelParoperator[] (const int &index) const
 Returns reference to model parameter by index (const version)
 
virtual GModelParoperator[] (const std::string &name)
 Returns reference to model parameter by name.
 
virtual const GModelParoperator[] (const std::string &name) const
 Returns reference to model parameter by name const version)
 
virtual void setup (const GObservation &obs) const
 Setup model for a given observation.
 
int size (void) const
 Return number of parameters in model.
 
int scales (void) const
 Return number of scale parameters in model.
 
GModelParat (const int &index)
 Returns reference to model parameter by index.
 
const GModelParat (const int &index) const
 Returns reference to model parameter by index (const version)
 
bool has_par (const std::string &name) const
 Checks if parameter name exists.
 
bool has_scales (void) const
 Signals that model has scales.
 
const std::string & name (void) const
 Return parameter name.
 
void name (const std::string &name)
 Set parameter name.
 
const double & ts (void) const
 Return Test Statistic value.
 
void ts (const double &ts)
 Set Test Statistic value.
 
const bool & tscalc (void) const
 Return Test Statistic computation flag.
 
void tscalc (const bool &tscalc)
 Set Test Statistic computation flag.
 
const bool & has_ts (void) const
 Signals that model has Test Statistics value.
 
std::string instruments (void) const
 Returns instruments to which model applies.
 
void instruments (const std::string &instruments)
 Set instruments to which model applies.
 
GModelParscale (const int &index)
 Returns reference to scale parameter by index.
 
const GModelParscale (const int &index) const
 Returns reference to scale parameter by index (const version)
 
GModelPar scale (const std::string &instrument) const
 Returns model scale factor for a given instrument.
 
void scale (const GModelPar &par)
 Set model scale factor for a given instrument.
 
std::string ids (void) const
 Returns observation identifiers to which model applies.
 
void ids (const std::string &ids)
 Set observation identifiers to which model applies.
 
bool is_valid (const std::string &instruments, const std::string &ids) const
 Verifies if model is valid for a given instrument and identifier.
 
const GModelAssociationsassociations (void) const
 Return model associations.
 
void associations (const GModelAssociations &associations)
 Set model associations.
 
const bool & has_eval_indices (void) const
 Signals that parameter indices updated by eval() method were set.
 
const std::vector< int > & eval_indices (void) const
 Return vector of parameter indices updated by eval() method.
 
- Public Member Functions inherited from GBase
virtual ~GBase (void)
 Destructor.
 

Protected Member Functions

void init_members (void)
 Initialise class members.
 
void copy_members (const GModelDataMultiplicative &model)
 Copy class members.
 
void free_members (void)
 Delete class members.
 
- Protected Member Functions inherited from GModelData
void init_members (void)
 Initialise class members.
 
void copy_members (const GModelData &model)
 Copy class members.
 
void free_members (void)
 Delete class members.
 
- Protected Member Functions inherited from GModel
void init_members (void)
 Initialise class members.
 
void copy_members (const GModel &model)
 Copy class members.
 
void free_members (void)
 Delete class members.
 
void read_attributes (const GXmlElement &xml)
 Read model attributes.
 
void write_attributes (GXmlElement &xml) const
 Write model attributes.
 
std::string print_attributes (void) const
 Print model attributes.
 
void read_scales (const GXmlElement &xml)
 Read instrument scales from XML element.
 
void write_scales (GXmlElement &xml) const
 Write instrument scales into XML element.
 

Protected Attributes

std::string m_type
 Model type.
 
std::vector< GModelData * > m_models
 Container of data models.
 
- Protected Attributes inherited from GModel
std::string m_name
 Model name.
 
std::vector< std::string > m_instruments
 Instruments to which model applies.
 
std::vector< GModelParm_scales
 Model instrument scale factors.
 
std::vector< std::string > m_ids
 Identifiers to which model applies.
 
std::vector< GModelPar * > m_pars
 Pointers to all model parameters.
 
GModelAssociations m_associations
 Model associations.
 
bool m_has_ts
 Signals if TS is available.
 
bool m_has_tscalc
 Signals if tscalc attribute is available.
 
bool m_tscalc
 Signals if TS should be computed.
 
double m_ts
 Test Statistic of the model.
 
bool m_has_eval_inx
 
std::vector< int > m_eval_inx
 

Detailed Description

Multiplicative data model class.

This class implements a multiplicative data model. The data model components can be defined in an XML file, or added using the append() method.

Definition at line 53 of file GModelDataMultiplicative.hpp.

Constructor & Destructor Documentation

◆ GModelDataMultiplicative() [1/3]

GModelDataMultiplicative::GModelDataMultiplicative ( void )

Void constructor.

Definition at line 74 of file GModelDataMultiplicative.cpp.

References init_members().

Referenced by clone().

◆ GModelDataMultiplicative() [2/3]

GModelDataMultiplicative::GModelDataMultiplicative ( const GXmlElement & xml)
explicit

XML constructor.

Parameters
[in]xmlXML element containing data model information.

Constructs a multiplicative data 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 93 of file GModelDataMultiplicative.cpp.

References init_members(), and read().

◆ GModelDataMultiplicative() [3/3]

GModelDataMultiplicative::GModelDataMultiplicative ( const GModelDataMultiplicative & model)

Copy constructor.

Parameters
[in]modelMultiplicative data model.

Definition at line 112 of file GModelDataMultiplicative.cpp.

References copy_members(), and init_members().

◆ ~GModelDataMultiplicative()

GModelDataMultiplicative::~GModelDataMultiplicative ( void )
virtual

Destructor.

Definition at line 129 of file GModelDataMultiplicative.cpp.

References free_members().

Member Function Documentation

◆ append()

void GModelDataMultiplicative::append ( const GModelData & model)

Append data model component.

Parameters
[in]modelData model component.
Exceptions
GException::invalid_valueModel with same name exists already in container Model is for incompatible instrument

Appends a data model component to the multiplicative data model. If the instruments for the container was not set the instrument is copied from the model. Otherwise, the method verifies that the instrument of the model is the same as of the container.

Definition at line 686 of file GModelDataMultiplicative.cpp.

References GModelData::clone(), G_APPEND, GModel::instruments(), m_models, GModel::m_pars, GModel::name(), and GOptimizerPar::name().

Referenced by read().

◆ classname()

std::string GModelDataMultiplicative::classname ( void ) const
inlinevirtual

Return class name.

Returns
String containing the class name ("GModelDataMultiplicative").

Implements GModelData.

Definition at line 110 of file GModelDataMultiplicative.hpp.

◆ clear()

void GModelDataMultiplicative::clear ( void )
virtual

Clear multiplicative data model.

Implements GModelData.

Definition at line 184 of file GModelDataMultiplicative.cpp.

References GModelData::free_members(), free_members(), GModelData::init_members(), and init_members().

◆ clone()

GModelDataMultiplicative * GModelDataMultiplicative::clone ( void ) const
virtual

Clone multiplicative data model.

Returns
Pointer to deep copy of multiplicative data model.

Implements GModelData.

Definition at line 204 of file GModelDataMultiplicative.cpp.

References GModelDataMultiplicative().

◆ component() [1/2]

const GModelData * GModelDataMultiplicative::component ( const int & index) const

Return data model by index.

Parameters
[in]indexIndex of data model.
Returns
Pointer to data model.

Returns a component of the multiplicative data model by index.

Definition at line 750 of file GModelDataMultiplicative.cpp.

References G_COMPONENT_INDEX, and m_models.

◆ component() [2/2]

const GModelData * GModelDataMultiplicative::component ( const std::string & name) const

Return data model by name.

Parameters
[in]nameName of data model.
Returns
Pointer to data model.
Exceptions
GException::invalid_argumentModel component not found.

Returns a component of the multiplicative data model by name.

Definition at line 774 of file GModelDataMultiplicative.cpp.

References G_COMPONENT_NAME, m_models, and GModel::name().

◆ components()

int GModelDataMultiplicative::components ( void ) const
inline

Return number of data model components.

Returns
Number of data model components.

Returns the number of data model components.

Definition at line 138 of file GModelDataMultiplicative.hpp.

References m_models.

Referenced by print().

◆ copy_members()

void GModelDataMultiplicative::copy_members ( const GModelDataMultiplicative & model)
protected

Copy class members.

Parameters
[in]modelMultiplicative data model.

Definition at line 859 of file GModelDataMultiplicative.cpp.

References m_models, GModel::m_pars, m_type, and GModel::size().

Referenced by GModelDataMultiplicative(), and operator=().

◆ eval() [1/2]

double GModelDataMultiplicative::eval ( const GEvent & event,
const GObservation & obs,
const bool & gradients = false ) const
virtual

Return model values and gradients.

Parameters
[in]eventEvent.
[in]obsObservation.
[in]gradientsCompute gradients?
Returns
Model value.

Evaluates

\[ \prod_{i=0}^{N} {M_{\rm i}}(\rm event, \rm obs) \]

where \({M_{\rm i}}\) is the i-th model component.

If the gradients flag is true the method will also compute the partial derivatives of each parameter of eachmodel component with respect to the parameters using

\[ \frac{\delta S}{\delta P_{\rm ij}}\prod_{\rm k\neq \rm i}^{n} M_{\rm k} \]

where \({P_{\rm ij}}\) is the j-th parameter of the i-th multiplicative component, while \({M_{\rm k}}\) is the k-th model component and n the number of model components.

Implements GModelData.

Definition at line 262 of file GModelDataMultiplicative.cpp.

References GOptimizerPar::gradient(), gammalib::is_infinite(), gammalib::is_notanumber(), and m_models.

◆ eval() [2/2]

GVector GModelDataMultiplicative::eval ( const GObservation & obs,
GMatrixSparse * gradients = NULL,
const int & offset = 0 ) const
virtual

Return model values and gradients.

Parameters
[in]obsObservation.
[out]gradientsPointer to matrix of gradients.
[in]offsetColumn index of first matrix gradient (not used).
Returns
Model values.
Exceptions
GException::invalid_argumentGradient matrix has wrong number of rows or columns

Evaluates the model values and parameter gradients for all events in an observation. Gradients are only returned if the gradients pointer is not NULL.

The matrix of gradients is a sparse matrix where the number of rows corresponds to the number of events and the number of columns corresponds to the number of model parameters (see GObservation::model() method).

An exception is thrown if the dimension of the gradients matrix is not compatible with the model and the observations.

Reimplemented from GModelData.

Definition at line 350 of file GModelDataMultiplicative.cpp.

References GMatrixBase::columns(), GObservation::events(), G_EVAL, m_models, GMatrixSparse::multiply_column(), GMatrixBase::rows(), GEvents::size(), GModel::size(), and gammalib::str().

◆ free_members()

void GModelDataMultiplicative::free_members ( void )
protected

Delete class members.

Definition at line 900 of file GModelDataMultiplicative.cpp.

References m_models.

Referenced by clear(), operator=(), and ~GModelDataMultiplicative().

◆ init_members()

void GModelDataMultiplicative::init_members ( void )
protected

Initialise class members.

Definition at line 841 of file GModelDataMultiplicative.cpp.

References m_models, and m_type.

Referenced by clear(), GModelDataMultiplicative(), GModelDataMultiplicative(), GModelDataMultiplicative(), and operator=().

◆ is_constant()

bool GModelDataMultiplicative::is_constant ( void ) const
virtual

Return if model is constant.

Returns
True if model is constant.

Implements GModelData.

Definition at line 216 of file GModelDataMultiplicative.cpp.

References is_constant(), and m_models.

Referenced by is_constant().

◆ mc()

GEvents * GModelDataMultiplicative::mc ( const GObservation & obs,
GRan & ran ) const
virtual

Return simulated events.

Parameters
[in]obsObservation.
[in]ranRandom number generator.
Exceptions
GException::feature_not_implementedFeature not implemented
Todo
Implement method.

Implements GModelData.

Definition at line 486 of file GModelDataMultiplicative.cpp.

References G_MC.

◆ npred()

double GModelDataMultiplicative::npred ( const GEnergy & obsEng,
const GTime & obsTime,
const GObservation & obs ) const
virtual

Return spatially integrated data model.

Parameters
[in]obsEngMeasured event energy.
[in]obsTimeMeasured event time.
[in]obsObservation.
Exceptions
GException::feature_not_implementedFeature not implemented
Todo
Implement method.

Implements GModelData.

Definition at line 460 of file GModelDataMultiplicative.cpp.

References G_NPRED, and npred().

Referenced by npred().

◆ operator=()

GModelDataMultiplicative & GModelDataMultiplicative::operator= ( const GModelDataMultiplicative & model)
virtual

Assignment operator.

Parameters
[in]modelMultiplicative data model.
Returns
Multiplicative data model.

Definition at line 151 of file GModelDataMultiplicative.cpp.

References copy_members(), free_members(), init_members(), and GModelData::operator=().

◆ print()

std::string GModelDataMultiplicative::print ( const GChatter & chatter = NORMAL) const
virtual

Print multiplicative data model information.

Parameters
[in]chatterChattiness.
Returns
String containing model information.

Implements GModelData.

Definition at line 803 of file GModelDataMultiplicative.cpp.

References components(), GModel::m_pars, gammalib::parformat(), print(), SILENT, GModel::size(), and gammalib::str().

Referenced by print().

◆ read()

void GModelDataMultiplicative::read ( const GXmlElement & xml)
virtual

Read model from XML element.

Parameters
[in]xmlXML element.
Exceptions
GException::invalid_valueInvalid model type specified Model is not a data model Model is for an incompatible instrument

Reads the multiplicative data model from an XML element. The expected XML format is

<source name="Model" type="MultiplicativeData" instrument="...">
  <source name="Component1" type="DataSpace" instrument="...">
     ...
  </source>
  <source name="Component2" type="DataSpace" instrument="...">
     ...
  </source>
</source>

Implements GModelData.

Definition at line 522 of file GModelDataMultiplicative.cpp.

References GModelRegistry::alloc(), append(), GXmlElement::attribute(), GRegistry::content(), GXmlNode::element(), GXmlNode::elements(), G_READ, GModel::instruments(), m_models, GModel::m_pars, GModel::name(), GModelData::read(), GModel::read_attributes(), and type().

Referenced by GModelDataMultiplicative().

◆ type()

std::string GModelDataMultiplicative::type ( void ) const
inlinevirtual

Return model type.

Returns
Model type.

Returns the type of the multiplicative data model.

Implements GModelData.

Definition at line 124 of file GModelDataMultiplicative.hpp.

References m_type.

Referenced by read(), and write().

◆ write()

void GModelDataMultiplicative::write ( GXmlElement & xml) const
virtual

Member Data Documentation

◆ m_models

std::vector<GModelData*> GModelDataMultiplicative::m_models
protected

◆ m_type

std::string GModelDataMultiplicative::m_type
protected

Model type.

Definition at line 99 of file GModelDataMultiplicative.hpp.

Referenced by copy_members(), init_members(), and type().


The documentation for this class was generated from the following files: