GammaLib
2.0.0
|
#include <GModelSpatialRadialDisk.hpp>
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, const std::string &coordsys="CEL") | |
Disk constructor. More... | |
GModelSpatialRadialDisk (const GXmlElement &xml) | |
XML constructor. More... | |
GModelSpatialRadialDisk (const GModelSpatialRadialDisk &model) | |
Copy constructor. More... | |
virtual | ~GModelSpatialRadialDisk (void) |
Destructor. More... | |
virtual GModelSpatialRadialDisk & | operator= (const GModelSpatialRadialDisk &model) |
Assignment operator. More... | |
virtual void | clear (void) |
Clear radial disk model. More... | |
virtual GModelSpatialRadialDisk * | clone (void) const |
Clone radial disk model. More... | |
virtual std::string | classname (void) const |
Return class name. 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 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 GModelSpatialRadial & | operator= (const GModelSpatialRadial &model) |
Assignment operator. More... | |
virtual GClassCode | code (void) const |
Return class code. More... | |
virtual bool | is_energy_dependent (void) const |
Signals whether radial model is energy dependent. More... | |
virtual bool | is_time_dependent (void) const |
Signals whether radial model is time dependent. 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... | |
std::string | coordsys (void) const |
Return coordinate system. More... | |
const 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 GModelSpatial & | operator= (const GModelSpatial &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 model parameter. More... | |
virtual const GModelPar & | operator[] (const std::string &name) const |
Returns model parameter (const version) More... | |
virtual double | flux (const GSkyRegion ®ion, const GEnergy &srcEng=GEnergy(), const GTime &srcTime=GTime()) const |
Returns model flux integrated in circular sky region. More... | |
std::string | type (void) const |
Return model type. More... | |
void | type (const std::string &type) |
Set model type. 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... | |
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... | |
const GSkyRegion * | region (void) const |
Return boundary 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... | |
virtual 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... | |
bool | is_celestial (void) const |
Check if model holds celestial coordinates. 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 | |
GModelPar | m_radius |
Disk radius (degrees) 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_lon |
Right Ascension or Galactic longitude (deg) More... | |
GModelPar | m_lat |
Declination or Galactic latitude (deg) More... | |
GSkyDir | m_dir |
Sky direction representing parameters. More... | |
double | m_last_lon |
Last longitude. More... | |
double | m_last_lat |
Last latitude. More... | |
Protected Attributes inherited from GModelSpatial | |
std::string | m_type |
Spatial model type. More... | |
GSkyRegionCircle | m_region |
Bounding circle. More... | |
std::vector< GModelPar * > | m_pars |
Parameter pointers. More... | |
Definition at line 54 of file GModelSpatialRadialDisk.hpp.
GModelSpatialRadialDisk::GModelSpatialRadialDisk | ( | void | ) |
Void constructor.
Constructs empty radial disk model.
Definition at line 71 of file GModelSpatialRadialDisk.cpp.
References init_members().
Referenced by clone().
GModelSpatialRadialDisk::GModelSpatialRadialDisk | ( | const bool & | dummy, |
const std::string & | type | ||
) |
Model type constructor.
[in] | dummy | Dummy flag. |
[in] | type | Model type. |
Constructs empty radial disk model by specifying a model type
.
Definition at line 89 of file GModelSpatialRadialDisk.cpp.
References init_members(), GModelSpatial::m_type, and GModelSpatial::type().
GModelSpatialRadialDisk::GModelSpatialRadialDisk | ( | const GSkyDir & | dir, |
const double & | radius, | ||
const std::string & | coordsys = "CEL" |
||
) |
Disk constructor.
[in] | dir | Sky position of disk centre. |
[in] | radius | Disk radius (degrees). |
[in] | coordsys | Coordinate system (either "CEL" or "GAL") |
GException::invalid_argument | Invalid coordsys argument specified. |
Constructs radial disk model from the sky position of the disk centre (dir
) and the disk radius
in degrees. The coordsys
parameter specifies whether the sky direction should be interpreted in the celestial or Galactic coordinate system.
Definition at line 119 of file GModelSpatialRadialDisk.cpp.
References GModelSpatialRadial::dir(), G_CONSTRUCTOR, init_members(), GModelSpatialRadial::m_lat, GModelSpatialRadial::m_lon, GOptimizerPar::name(), and radius().
|
explicit |
XML constructor.
[in] | xml | XML 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 163 of file GModelSpatialRadialDisk.cpp.
References init_members(), and read().
GModelSpatialRadialDisk::GModelSpatialRadialDisk | ( | const GModelSpatialRadialDisk & | model | ) |
Copy constructor.
[in] | model | Radial disk model. |
Definition at line 182 of file GModelSpatialRadialDisk.cpp.
References copy_members(), and init_members().
|
virtual |
|
inlinevirtual |
Return class name.
Implements GModelSpatialRadial.
Definition at line 116 of file GModelSpatialRadialDisk.hpp.
|
virtual |
Clear radial disk model.
Implements GModelSpatialRadial.
Definition at line 254 of file GModelSpatialRadialDisk.cpp.
References free_members(), GModelSpatialRadial::free_members(), GModelSpatial::free_members(), init_members(), GModelSpatialRadial::init_members(), and GModelSpatial::init_members().
|
virtual |
Clone radial disk model.
Implements GModelSpatialRadial.
Definition at line 276 of file GModelSpatialRadialDisk.cpp.
References GModelSpatialRadialDisk().
|
virtual |
Checks where model contains specified sky direction.
[in] | dir | Sky direction. |
[in] | margin | Margin to be added to sky direction (degrees) |
Signals whether a sky direction is contained in the radial disk model.
Implements GModelSpatialRadial.
Definition at line 384 of file GModelSpatialRadialDisk.cpp.
References gammalib::deg2rad, GModelSpatialRadial::dir(), GSkyDir::dist(), and theta_max().
|
protected |
Copy class members.
[in] | model | Radial 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 569 of file GModelSpatialRadialDisk.cpp.
References m_last_radius, m_norm, m_radius, m_radius_rad, and GModelSpatial::m_type.
Referenced by GModelSpatialRadialDisk(), and operator=().
|
virtual |
Evaluate function (in units of sr^-1)
[in] | theta | Angular distance from disk centre (radians). |
[in] | energy | Photon energy. |
[in] | time | Photon arrival time. |
[in] | gradients | Compute gradients? |
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
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 317 of file GModelSpatialRadialDisk.cpp.
References gammalib::is_infinite(), gammalib::is_notanumber(), m_norm, m_radius_rad, and update().
|
protected |
Delete class members.
Definition at line 588 of file GModelSpatialRadialDisk.cpp.
Referenced by clear(), operator=(), and ~GModelSpatialRadialDisk().
|
protected |
Initialise class members.
Definition at line 530 of file GModelSpatialRadialDisk.cpp.
References GOptimizerPar::clear(), GOptimizerPar::free(), GOptimizerPar::gradient(), GOptimizerPar::has_grad(), m_last_radius, m_norm, GModelSpatial::m_pars, m_radius, m_radius_rad, GModelSpatial::m_type, GOptimizerPar::min(), GOptimizerPar::name(), GOptimizerPar::scale(), GOptimizerPar::unit(), and GOptimizerPar::value().
Referenced by clear(), GModelSpatialRadialDisk(), and operator=().
|
virtual |
Return MC sky direction.
[in] | energy | Photon energy. |
[in] | time | Photon arrival time. |
[in,out] | ran | Random number generator. |
Draws an arbitrary sky direction from the 2D disk distribution as function of the photon energy
and arrival time
.
Implements GModelSpatialRadial.
Definition at line 356 of file GModelSpatialRadialDisk.cpp.
References gammalib::acos(), cos(), gammalib::deg2rad, GModelSpatialRadial::dir(), gammalib::rad2deg, radius(), GSkyDir::rotate_deg(), and GRan::uniform().
|
virtual |
Assignment operator.
[in] | model | Radial disk model. |
Definition at line 221 of file GModelSpatialRadialDisk.cpp.
References copy_members(), free_members(), init_members(), and GModelSpatialRadial::operator=().
Print information.
[in] | chatter | Chattiness. |
Implements GModelSpatialRadial.
Definition at line 496 of file GModelSpatialRadialDisk.cpp.
References GModelSpatial::m_pars, gammalib::parformat(), SILENT, GModelSpatial::size(), and gammalib::str().
|
inline |
Return disk radius.
Returns the radius of the disk in degrees.
Definition at line 130 of file GModelSpatialRadialDisk.hpp.
References m_radius, and GOptimizerPar::value().
Referenced by GModelSpatialRadialDisk(), mc(), read(), theta_max(), update(), and write().
|
inline |
Set disk radius.
[in] | radius | Disk radius (degrees). |
Sets the radius of the disk in degrees.
Definition at line 144 of file GModelSpatialRadialDisk.hpp.
References m_radius, and GOptimizerPar::value().
|
virtual |
Read model from XML element.
[in] | xml | 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>
Reimplemented from GModelSpatialRadial.
Definition at line 432 of file GModelSpatialRadialDisk.cpp.
References G_READ, m_radius, GOptimizerPar::name(), radius(), GModelSpatialRadial::read(), GModelPar::read(), gammalib::xml_check_parnum(), and gammalib::xml_get_par().
Referenced by GModelSpatialRadialDisk().
|
protectedvirtual |
Set boundary sky region.
Implements GModelSpatialRadial.
Definition at line 633 of file GModelSpatialRadialDisk.cpp.
References GModelSpatialRadial::dir(), m_radius, GModelSpatial::m_region, GModelSpatial::region(), and GOptimizerPar::value().
|
virtual |
Return maximum model radius (in radians)
Implements GModelSpatialRadial.
Definition at line 400 of file GModelSpatialRadialDisk.cpp.
References gammalib::deg2rad, and radius().
Referenced by contains().
|
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 608 of file GModelSpatialRadialDisk.cpp.
References cos(), gammalib::deg2rad, m_last_radius, m_norm, m_radius_rad, radius(), and gammalib::twopi.
Referenced by eval().
|
virtual |
Write model into XML element.
[in] | xml | XML element into which model information is written. |
GException::model_invalid_parnum | Invalid number of model parameters found in XML element. |
GException::model_invalid_parnames | Invalid 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 471 of file GModelSpatialRadialDisk.cpp.
References G_WRITE, m_radius, GOptimizerPar::name(), radius(), GModelSpatial::type(), GModelSpatialRadial::write(), GModelPar::write(), gammalib::xml_check_type(), and gammalib::xml_need_par().
|
mutableprotected |
Last disk radius.
Definition at line 104 of file GModelSpatialRadialDisk.hpp.
Referenced by copy_members(), init_members(), and update().
|
mutableprotected |
Normalization.
Definition at line 106 of file GModelSpatialRadialDisk.hpp.
Referenced by copy_members(), eval(), init_members(), and update().
|
protected |
Disk radius (degrees)
Definition at line 101 of file GModelSpatialRadialDisk.hpp.
Referenced by copy_members(), init_members(), radius(), read(), set_region(), and write().
|
mutableprotected |
Radius in radians.
Definition at line 105 of file GModelSpatialRadialDisk.hpp.
Referenced by copy_members(), eval(), init_members(), and update().