GammaLib  1.7.0.dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GModelSpatialRadialDisk Class Reference

#include <GModelSpatialRadialDisk.hpp>

Inheritance diagram for GModelSpatialRadialDisk:
GModelSpatialRadial GModelSpatial GBase

Public Member Functions

 GModelSpatialRadialDisk (void)
 Void constructor. More...
 
 GModelSpatialRadialDisk (const bool &dummy, const std::string &type)
 Model type constructor. More...
 
 GModelSpatialRadialDisk (const GSkyDir &dir, const double &radius)
 Disk constructor. More...
 
 GModelSpatialRadialDisk (const GXmlElement &xml)
 XML constructor. More...
 
 GModelSpatialRadialDisk (const GModelSpatialRadialDisk &model)
 Copy constructor. More...
 
virtual ~GModelSpatialRadialDisk (void)
 Destructor. More...
 
virtual GModelSpatialRadialDiskoperator= (const GModelSpatialRadialDisk &model)
 Assignment operator. More...
 
virtual void clear (void)
 Clear radial disk model. More...
 
virtual GModelSpatialRadialDiskclone (void) const
 Clone radial disk 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 double &theta, const GEnergy &energy, const GTime &time, const bool &gradients=false) const
 Evaluate function (in units of sr^-1) More...
 
virtual GSkyDir mc (const GEnergy &energy, const GTime &time, GRan &ran) const
 Return MC sky direction. More...
 
virtual bool contains (const GSkyDir &dir, const double &margin=0.0) const
 Checks where model contains specified sky direction. More...
 
virtual double theta_max (void) const
 Return maximum model radius (in radians) More...
 
virtual GSkyRegionregion (void) const
 Return boundary sky region. 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 information. More...
 
double radius (void) const
 Return disk radius. More...
 
void radius (const double &radius)
 Set disk radius. More...
 
- Public Member Functions inherited from GModelSpatialRadial
 GModelSpatialRadial (void)
 Void constructor. More...
 
 GModelSpatialRadial (const GModelSpatialRadial &model)
 Copy constructor. More...
 
 GModelSpatialRadial (const GXmlElement &xml)
 XML constructor. More...
 
virtual ~GModelSpatialRadial (void)
 Destructor. More...
 
virtual GModelSpatialRadialoperator= (const GModelSpatialRadial &model)
 Assignment operator. More...
 
virtual GClassCode code (void) const
 Return class code. More...
 
virtual double eval (const GPhoton &photon, const bool &gradients=false) const
 Return model value. More...
 
virtual double mc_norm (const GSkyDir &dir, const double &radius) const
 Return normalization of radial source for Monte Carlo simulations. More...
 
double ra (void) const
 Return Right Ascencion of model centre. More...
 
double dec (void) const
 Return Declination of model centre. More...
 
void ra (const double &ra)
 Set Right Ascencion of model centre. More...
 
void dec (const double &dec)
 Set Declination of model centre. More...
 
GSkyDir dir (void) const
 Return position of radial spatial model. More...
 
void dir (const GSkyDir &dir)
 Set position of radial spatial model. More...
 
- Public Member Functions inherited from GModelSpatial
 GModelSpatial (void)
 Void constructor. More...
 
 GModelSpatial (const GModelSpatial &model)
 Copy constructor. More...
 
virtual ~GModelSpatial (void)
 Destructor. More...
 
virtual GModelSpatialoperator= (const GModelSpatial &model)
 Assignment operator. More...
 
virtual GModelParoperator[] (const int &index)
 Returns model parameter. More...
 
virtual const GModelParoperator[] (const int &index) const
 Returns model parameter (const version) More...
 
virtual GModelParoperator[] (const std::string &name)
 Returns model parameter. More...
 
virtual const GModelParoperator[] (const std::string &name) const
 Returns model parameter (const version) More...
 
GModelParat (const int &index)
 Returns model parameter. More...
 
const GModelParat (const int &index) const
 Returns model parameter (const version) More...
 
bool has_par (const std::string &name) const
 Checks if parameter name exists. More...
 
bool has_free_pars (void) const
 Checks if the spatial model has free parameters. More...
 
int size (void) const
 Return number of parameters. More...
 
void autoscale (void)
 Autoscale parameters. More...
 
double flux (const GSkyRegion *reg, const GEnergy &srcEng=GEnergy(), const GTime &srcTime=GTime()) const
 Returns model flux integrated in circular sky region. 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 GModelSpatialRadialDisk &model)
 Copy class members. More...
 
void free_members (void)
 Delete class members. More...
 
void update (void) const
 Update precomputation cache. More...
 
void set_region (void) const
 Set boundary sky region. More...
 
- Protected Member Functions inherited from GModelSpatialRadial
void init_members (void)
 Initialise class members. More...
 
void copy_members (const GModelSpatialRadial &model)
 Copy class members. More...
 
void free_members (void)
 Delete class members. More...
 
- Protected Member Functions inherited from GModelSpatial
void init_members (void)
 Initialise class members. More...
 
void copy_members (const GModelSpatial &model)
 Copy class members. More...
 
void free_members (void)
 Delete class members. More...
 

Protected Attributes

std::string m_type
 Model type. More...
 
GModelPar m_radius
 Disk radius (degrees) More...
 
GSkyRegionCircle m_region
 Bounding circle. More...
 
double m_last_radius
 Last disk radius. More...
 
double m_radius_rad
 Radius in radians. More...
 
double m_norm
 Normalization. More...
 
- Protected Attributes inherited from GModelSpatialRadial
GModelPar m_ra
 Right Ascension (deg) More...
 
GModelPar m_dec
 Declination (deg) More...
 
- Protected Attributes inherited from GModelSpatial
std::vector< GModelPar * > m_pars
 Parameter pointers. More...
 

Detailed Description

Definition at line 48 of file GModelSpatialRadialDisk.hpp.

Constructor & Destructor Documentation

GModelSpatialRadialDisk::GModelSpatialRadialDisk ( void  )

Void constructor.

Constructs empty radial disk model.

Definition at line 69 of file GModelSpatialRadialDisk.cpp.

References init_members().

Referenced by clone().

GModelSpatialRadialDisk::GModelSpatialRadialDisk ( const bool &  dummy,
const std::string &  type 
)

Model type constructor.

Parameters
[in]dummyDummy flag.
[in]typeModel type.

Constructs empty radial disk model by specifying a model type.

Definition at line 87 of file GModelSpatialRadialDisk.cpp.

References init_members(), m_type, and type().

GModelSpatialRadialDisk::GModelSpatialRadialDisk ( const GSkyDir dir,
const double &  radius 
)

Disk constructor.

Parameters
[in]dirSky position of disk centre.
[in]radiusDisk radius (degrees).

Constructs radial disk model from the sky position of the disk centre (dir) and the disk radius in degrees.

Definition at line 111 of file GModelSpatialRadialDisk.cpp.

References GModelSpatialRadial::dir(), init_members(), and radius().

GModelSpatialRadialDisk::GModelSpatialRadialDisk ( const GXmlElement xml)
explicit

XML constructor.

Parameters
[in]xmlXML element.

Creates instance of radial disk 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 136 of file GModelSpatialRadialDisk.cpp.

References init_members(), and read().

GModelSpatialRadialDisk::GModelSpatialRadialDisk ( const GModelSpatialRadialDisk model)

Copy constructor.

Parameters
[in]modelRadial disk model.

Definition at line 155 of file GModelSpatialRadialDisk.cpp.

References copy_members(), and init_members().

GModelSpatialRadialDisk::~GModelSpatialRadialDisk ( void  )
virtual

Destructor.

Definition at line 172 of file GModelSpatialRadialDisk.cpp.

References free_members().

Member Function Documentation

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

Return class name.

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

Implements GModelSpatialRadial.

Definition at line 112 of file GModelSpatialRadialDisk.hpp.

void GModelSpatialRadialDisk::clear ( void  )
virtual
GModelSpatialRadialDisk * GModelSpatialRadialDisk::clone ( void  ) const
virtual

Clone radial disk model.

Returns
Pointer to deep copy of radial disk model.

Implements GModelSpatialRadial.

Definition at line 249 of file GModelSpatialRadialDisk.cpp.

References GModelSpatialRadialDisk().

bool GModelSpatialRadialDisk::contains ( const GSkyDir dir,
const double &  margin = 0.0 
) const
virtual

Checks where model contains specified sky direction.

Parameters
[in]dirSky direction.
[in]marginMargin to be added to sky direction (degrees)
Returns
True if the model contains the sky direction.

Signals whether a sky direction is contained in the radial disk model.

Implements GModelSpatialRadial.

Definition at line 357 of file GModelSpatialRadialDisk.cpp.

References gammalib::deg2rad, GModelSpatialRadial::dir(), GSkyDir::dist(), and theta_max().

void GModelSpatialRadialDisk::copy_members ( const GModelSpatialRadialDisk model)
protected

Copy class members.

Parameters
[in]modelRadial disk model.

We do not have to push back the members on the parameter stack as this should have been done by init_members() that was called before. Otherwise we would have the radius twice on the stack.

Definition at line 553 of file GModelSpatialRadialDisk.cpp.

References m_last_radius, m_norm, m_radius, m_radius_rad, m_region, and m_type.

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

double GModelSpatialRadialDisk::eval ( const double &  theta,
const GEnergy energy,
const GTime time,
const bool &  gradients = false 
) const
virtual

Evaluate function (in units of sr^-1)

Parameters
[in]thetaAngular distance from disk centre (radians).
[in]energyPhoton energy.
[in]timePhoton arrival time.
[in]gradientsCompute gradients?
Returns
Model value.

Evaluates the spatial component for a disk source model using

\[ S_{\rm p}(\vec{p} | E, t) = \left \{ \begin{array}{l l} \displaystyle {\tt m\_norm} & \mbox{if $\theta \le $ radius} \\ \\ \displaystyle 0 & \mbox{if $\theta > $ radius} \end{array} \right . \]

where

  • \(\theta\) is the angular separation between disk centre and the sky direction of interest, and
  • \({\tt m\_norm} = \frac{1}{2 \pi (1 - \cos r)} \) is a normalization constant (see the update() method for details).

The method will not compute analytical parameter gradients, even if the gradients argument is set to true. Radial disk parameter gradients need to be computed numerically.

Implements GModelSpatialRadial.

Definition at line 290 of file GModelSpatialRadialDisk.cpp.

References gammalib::is_infinite(), gammalib::is_notanumber(), m_norm, m_radius_rad, and update().

void GModelSpatialRadialDisk::free_members ( void  )
protected

Delete class members.

Definition at line 573 of file GModelSpatialRadialDisk.cpp.

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

GSkyDir GModelSpatialRadialDisk::mc ( const GEnergy energy,
const GTime time,
GRan ran 
) const
virtual

Return MC sky direction.

Parameters
[in]energyPhoton energy.
[in]timePhoton arrival time.
[in,out]ranRandom number generator.
Returns
Sky direction.

Draws an arbitrary sky direction from the 2D disk distribution as function of the photon energy and arrival time.

Implements GModelSpatialRadial.

Definition at line 329 of file GModelSpatialRadialDisk.cpp.

References gammalib::acos(), cos(), gammalib::deg2rad, GModelSpatialRadial::dir(), gammalib::rad2deg, radius(), GSkyDir::rotate_deg(), and GRan::uniform().

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

Assignment operator.

Parameters
[in]modelRadial disk model.
Returns
Radial disk model.

Definition at line 194 of file GModelSpatialRadialDisk.cpp.

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

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

Print information.

Parameters
[in]chatterChattiness (defaults to NORMAL).
Returns
String containing model information.

Implements GModelSpatialRadial.

Definition at line 477 of file GModelSpatialRadialDisk.cpp.

References GModelSpatial::m_pars, gammalib::parformat(), SILENT, GModelSpatial::size(), and gammalib::str().

double GModelSpatialRadialDisk::radius ( void  ) const
inline

Return disk radius.

Returns
Disk radius (degrees).

Returns the radius of the disk in degrees.

Definition at line 140 of file GModelSpatialRadialDisk.hpp.

References m_radius, and GOptimizerPar::value().

Referenced by GModelSpatialRadialDisk(), mc(), read(), theta_max(), update(), and write().

void GModelSpatialRadialDisk::radius ( const double &  radius)
inline

Set disk radius.

Parameters
[in]radiusDisk radius (degrees).

Sets the radius of the disk in degrees.

Definition at line 154 of file GModelSpatialRadialDisk.hpp.

References m_radius, and GOptimizerPar::value().

void GModelSpatialRadialDisk::read ( const GXmlElement xml)
virtual

Read model from XML element.

Parameters
[in]xmlXML element.
Exceptions
GException::model_invalid_parnumInvalid number of model parameters found in XML element.
GException::model_invalid_parnamesInvalid model parameter names found in XML element.

Reads the radial disk model information from an XML element. The XML element shall have either the format

<spatialModel type="RadialDisk">
  <parameter name="RA"     scale="1.0" value="83.6331" min="-360" max="360" free="1"/>
  <parameter name="DEC"    scale="1.0" value="22.0145" min="-90"  max="90"  free="1"/>
  <parameter name="Radius" scale="1.0" value="0.45"    min="0.01" max="10"  free="1"/>
</spatialModel>

or

<spatialModel type="RadialDisk">
  <parameter name="GLON"   scale="1.0" value="83.6331" min="-360" max="360" free="1"/>
  <parameter name="GLAT"   scale="1.0" value="22.0145" min="-90"  max="90"  free="1"/>
  <parameter name="Radius" scale="1.0" value="0.45"    min="0.01" max="10"  free="1"/>
</spatialModel>
Todo:
Implement a test of the radius and radius boundary. The radius and radius minimum should be >0.

Reimplemented from GModelSpatialRadial.

Definition at line 410 of file GModelSpatialRadialDisk.cpp.

References GXmlNode::elements(), G_READ, m_radius, GOptimizerPar::name(), radius(), GModelSpatialRadial::read(), GModelPar::read(), and gammalib::xml_get_par().

Referenced by GModelSpatialRadialDisk().

GSkyRegion * GModelSpatialRadialDisk::region ( void  ) const
inlinevirtual

Return boundary sky region.

Returns
Boundary sky region.

Returns a sky region that fully encloses the spatial model component.

Implements GModelSpatialRadial.

Definition at line 169 of file GModelSpatialRadialDisk.hpp.

References m_region, and set_region().

void GModelSpatialRadialDisk::set_region ( void  ) const
protected
double GModelSpatialRadialDisk::theta_max ( void  ) const
virtual

Return maximum model radius (in radians)

Returns
Maximum model radius (in radians).

Implements GModelSpatialRadial.

Definition at line 373 of file GModelSpatialRadialDisk.cpp.

References gammalib::deg2rad, and radius().

Referenced by contains().

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

Return model type.

Returns
Model type.

Returns the type of the radial disk model.

Implements GModelSpatialRadial.

Definition at line 126 of file GModelSpatialRadialDisk.hpp.

References m_type.

Referenced by GModelSpatialRadialDisk().

void GModelSpatialRadialDisk::update ( void  ) const
protected

Update precomputation cache.

Computes the normalization

\[ {\tt m\_norm} = \frac{1}{2 \pi (1 - \cos r)} \]

Note that this is the correct normalization on the sphere for any disk radius r. For small r it is very similar to the cartesian approximation you might have expected:

\[{\tt m\_norm} = \frac{1}{\pi r ^ 2}\]

Definition at line 593 of file GModelSpatialRadialDisk.cpp.

References cos(), gammalib::deg2rad, m_last_radius, m_norm, m_radius_rad, radius(), and gammalib::twopi.

Referenced by eval().

void GModelSpatialRadialDisk::write ( GXmlElement xml) const
virtual

Write model into XML element.

Parameters
[in]xmlXML element into which model information is written.
Exceptions
GException::model_invalid_parnumInvalid number of model parameters found in XML element.
GException::model_invalid_parnamesInvalid model parameter names found in XML element.

Writes the radial disk model information into an XML element. The XML element will have the format

<spatialModel type="RadialDisk">
  <parameter name="RA"     scale="1.0" value="83.6331" min="-360" max="360" free="1"/>
  <parameter name="DEC"    scale="1.0" value="22.0145" min="-90"  max="90"  free="1"/>
  <parameter name="Radius" scale="1.0" value="0.45"    min="0.01" max="10"  free="1"/>
</spatialModel>

Reimplemented from GModelSpatialRadial.

Definition at line 455 of file GModelSpatialRadialDisk.cpp.

References G_WRITE, m_radius, GOptimizerPar::name(), radius(), GModelSpatialRadial::write(), GModelPar::write(), and gammalib::xml_need_par().

Member Data Documentation

double GModelSpatialRadialDisk::m_last_radius
mutableprotected

Last disk radius.

Definition at line 100 of file GModelSpatialRadialDisk.hpp.

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

double GModelSpatialRadialDisk::m_norm
mutableprotected

Normalization.

Definition at line 102 of file GModelSpatialRadialDisk.hpp.

Referenced by copy_members(), eval(), init_members(), and update().

GModelPar GModelSpatialRadialDisk::m_radius
protected

Disk radius (degrees)

Definition at line 96 of file GModelSpatialRadialDisk.hpp.

Referenced by copy_members(), init_members(), radius(), read(), set_region(), and write().

double GModelSpatialRadialDisk::m_radius_rad
mutableprotected

Radius in radians.

Definition at line 101 of file GModelSpatialRadialDisk.hpp.

Referenced by copy_members(), eval(), init_members(), and update().

GSkyRegionCircle GModelSpatialRadialDisk::m_region
mutableprotected

Bounding circle.

Definition at line 97 of file GModelSpatialRadialDisk.hpp.

Referenced by copy_members(), init_members(), region(), and set_region().

std::string GModelSpatialRadialDisk::m_type
protected

Model type.

Definition at line 95 of file GModelSpatialRadialDisk.hpp.

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


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