diff --git a/include/GModelSpatialPointSource.hpp b/include/GModelSpatialPointSource.hpp index e75ded3..dee7933 100644 --- a/include/GModelSpatialPointSource.hpp +++ b/include/GModelSpatialPointSource.hpp @@ -1,7 +1,7 @@ /*************************************************************************** - * GModelSpatialPtsrc.hpp - Spatial point source model class * + * GModelSpatialPointSource.hpp - Spatial point source model class * * ----------------------------------------------------------------------- * - * copyright (C) 2009-2011 by Jurgen Knodlseder * + * copyright (C) 2009-2013 by Juergen Knoedlseder * * ----------------------------------------------------------------------- * * * * This program is free software: you can redistribute it and/or modify * @@ -19,13 +19,13 @@ * * ***************************************************************************/ /** - * @file GModelSpatialPtsrc.hpp + * @file GModelSpatialPointSource.hpp * @brief Point source spatial model class interface definition - * @author J. Knodlseder + * @author Juergen Knoedlseder */ -#ifndef GMODELSPATIALPTSRC_HPP -#define GMODELSPATIALPTSRC_HPP +#ifndef GMODELSPATIALPOINTSOURCE_HPP +#define GMODELSPATIALPOINTSOURCE_HPP /* __ Includes ___________________________________________________________ */ #include @@ -36,36 +36,39 @@ /***********************************************************************//** - * @class GModelSpatialPtsrc + * @class GModelSpatialPointSource * * @brief Point source spatial model * - * This class implements the spatial component of the factorised source - * model for a point source. + * This class implements a point source as the spatial component of the + * factorised source model. The point source has two parameters: the Right + * Ascension and Declination of the point source location. + * + * The model is of type "SkyDirFunction". ***************************************************************************/ -class GModelSpatialPtsrc : public GModelSpatial { +class GModelSpatialPointSource : public GModelSpatial { public: // Constructors and destructors - GModelSpatialPtsrc(void); - explicit GModelSpatialPtsrc(const GSkyDir& dir); - explicit GModelSpatialPtsrc(const GXmlElement& xml); - GModelSpatialPtsrc(const GModelSpatialPtsrc& model); - virtual ~GModelSpatialPtsrc(void); + GModelSpatialPointSource(void); + explicit GModelSpatialPointSource(const GSkyDir& dir); + explicit GModelSpatialPointSource(const GXmlElement& xml); + GModelSpatialPointSource(const GModelSpatialPointSource& model); + virtual ~GModelSpatialPointSource(void); // Operators - virtual GModelSpatialPtsrc& operator=(const GModelSpatialPtsrc& model); + virtual GModelSpatialPointSource& operator=(const GModelSpatialPointSource& model); // Implemented pure virtual methods - virtual void clear(void); - virtual GModelSpatialPtsrc* clone(void) const; - virtual std::string type(void) const { return "SkyDirFunction"; } - virtual double eval(const GSkyDir& srcDir) const; - virtual double eval_gradients(const GSkyDir& srcDir) const; - virtual GSkyDir mc(GRan& ran) const; - virtual void read(const GXmlElement& xml); - virtual void write(GXmlElement& xml) const; - virtual std::string print(void) const; + virtual void clear(void); + virtual GModelSpatialPointSource* clone(void) const; + virtual std::string type(void) const { return "SkyDirFunction"; } + virtual double eval(const GSkyDir& srcDir) const; + virtual double eval_gradients(const GSkyDir& srcDir) const; + virtual GSkyDir mc(GRan& ran) const; + virtual void read(const GXmlElement& xml); + virtual void write(GXmlElement& xml) const; + virtual std::string print(void) const; // Other methods double ra(void) const { return m_ra.real_value(); } @@ -76,7 +79,7 @@ public: protected: // Protected methods void init_members(void); - void copy_members(const GModelSpatialPtsrc& model); + void copy_members(const GModelSpatialPointSource& model); void free_members(void); // Protected members @@ -84,4 +87,4 @@ protected: GModelPar m_dec; //!< Declination (deg) }; -#endif /* GMODELSPATIALPTSRC_HPP */ +#endif /* GMODELSPATIALPOINTSOURCE_HPP */ diff --git a/include/GammaLib.hpp b/include/GammaLib.hpp index aa8abbc..0190592 100644 --- a/include/GammaLib.hpp +++ b/include/GammaLib.hpp @@ -164,10 +164,10 @@ #include "GModelData.hpp" #include "GModelSpatial.hpp" #include "GModelSpatialRegistry.hpp" +#include "GModelSpatialPointSource.hpp" #include "GModelSpatialConst.hpp" #include "GModelSpatialCube.hpp" #include "GModelSpatialMap.hpp" -#include "GModelSpatialPtsrc.hpp" #include "GModelRadial.hpp" #include "GModelRadialDisk.hpp" #include "GModelRadialGauss.hpp" diff --git a/include/Makefile.am b/include/Makefile.am index 20f0a7e..5caf564 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -109,7 +109,7 @@ pkginclude_HEADERS = GammaLib.hpp \ GModelData.hpp \ GModelSpatial.hpp \ GModelSpatialRegistry.hpp \ - GModelSpatialPtsrc.hpp \ + GModelSpatialPointSource.hpp \ GModelSpatialConst.hpp \ GModelSpatialCube.hpp \ GModelSpatialMap.hpp \ diff --git a/pyext/GModelSpatialPointSource.i b/pyext/GModelSpatialPointSource.i index d9212a1..492e089 100644 --- a/pyext/GModelSpatialPointSource.i +++ b/pyext/GModelSpatialPointSource.i @@ -1,7 +1,7 @@ /*************************************************************************** - * GModelSpatialPtsrc.i - Spatial point source model class * + * GModelSpatialPointSource.i - Spatial point source model class * * ----------------------------------------------------------------------- * - * copyright (C) 2009-2011 by Jurgen Knodlseder * + * copyright (C) 2009-2013 by Juergen Knoedlseder * * ----------------------------------------------------------------------- * * * * This program is free software: you can redistribute it and/or modify * @@ -19,40 +19,40 @@ * * ***************************************************************************/ /** - * @file GModelSpatialPtsrc.i + * @file GModelSpatialPointSource.i * @brief Point source spatial model class Python interface - * @author J. Knodlseder + * @author Juergen Knoedlseder */ %{ /* Put headers and other declarations here that are needed for compilation */ -#include "GModelSpatialPtsrc.hpp" +#include "GModelSpatialPointSource.hpp" #include "GTools.hpp" %} /***********************************************************************//** - * @class GModelSpatialPtsrc + * @class GModelSpatialPointSource * * @brief Point source spatial model ***************************************************************************/ -class GModelSpatialPtsrc : public GModelSpatial { +class GModelSpatialPointSource : public GModelSpatial { public: // Constructors and destructors - explicit GModelSpatialPtsrc(void); - explicit GModelSpatialPtsrc(const GSkyDir& dir); - explicit GModelSpatialPtsrc(const GXmlElement& xml); - GModelSpatialPtsrc(const GModelSpatialPtsrc& model); - virtual ~GModelSpatialPtsrc(void); + explicit GModelSpatialPointSource(void); + explicit GModelSpatialPointSource(const GSkyDir& dir); + explicit GModelSpatialPointSource(const GXmlElement& xml); + GModelSpatialPointSource(const GModelSpatialPointSource& model); + virtual ~GModelSpatialPointSource(void); // Implemented virtual methods - virtual void clear(void); - virtual GModelSpatialPtsrc* clone(void) const; - virtual std::string type(void) const; - virtual double eval(const GSkyDir& srcDir) const; - virtual double eval_gradients(const GSkyDir& srcDir) const; - virtual GSkyDir mc(GRan& ran) const; - virtual void read(const GXmlElement& xml); - virtual void write(GXmlElement& xml) const; + virtual void clear(void); + virtual GModelSpatialPointSource* clone(void) const; + virtual std::string type(void) const; + virtual double eval(const GSkyDir& srcDir) const; + virtual double eval_gradients(const GSkyDir& srcDir) const; + virtual GSkyDir mc(GRan& ran) const; + virtual void read(const GXmlElement& xml); + virtual void write(GXmlElement& xml) const; // Other methods double ra(void) const; @@ -63,10 +63,10 @@ public: /***********************************************************************//** - * @brief GModelSpatialPtsrc class extension + * @brief GModelSpatialPointSource class extension ***************************************************************************/ -%extend GModelSpatialPtsrc { - GModelSpatialPtsrc copy() { +%extend GModelSpatialPointSource { + GModelSpatialPointSource copy() { return (*self); } }; diff --git a/pyext/gammalib/model.i b/pyext/gammalib/model.i index 4ba37cd..9b4d26a 100644 --- a/pyext/gammalib/model.i +++ b/pyext/gammalib/model.i @@ -52,10 +52,10 @@ %include "GModelData.i" %include "GModelSpatial.i" %include "GModelSpatialRegistry.i" +%include "GModelSpatialPointSource.i" %include "GModelSpatialConst.i" %include "GModelSpatialCube.i" %include "GModelSpatialMap.i" -%include "GModelSpatialPtsrc.i" %include "GModelRadial.i" %include "GModelRadialDisk.i" %include "GModelRadialGauss.i" diff --git a/src/model/GModelSpatialPointSource.cpp b/src/model/GModelSpatialPointSource.cpp index db89dd2..19ce747 100644 --- a/src/model/GModelSpatialPointSource.cpp +++ b/src/model/GModelSpatialPointSource.cpp @@ -1,7 +1,7 @@ /*************************************************************************** - * GModelSpatialPtsrc.cpp - Spatial point source model class * + * GModelSpatialPointSource.cpp - Spatial point source model class * * ----------------------------------------------------------------------- * - * copyright (C) 2009-2012 by Juergen Knoedlseder * + * copyright (C) 2009-2013 by Juergen Knoedlseder * * ----------------------------------------------------------------------- * * * * This program is free software: you can redistribute it and/or modify * @@ -19,9 +19,9 @@ * * ***************************************************************************/ /** - * @file GModelSpatialPtsrc.cpp + * @file GModelSpatialPointSource.cpp * @brief Point source spatial model class implementation - * @author J. Knoedlseder + * @author Juergen Knoedlseder */ /* __ Includes ___________________________________________________________ */ @@ -30,19 +30,19 @@ #endif #include "GException.hpp" #include "GTools.hpp" -#include "GModelSpatialPtsrc.hpp" +#include "GModelSpatialPointSource.hpp" #include "GModelSpatialRegistry.hpp" /* __ Constants __________________________________________________________ */ const double tolerance = 0.000027777778; // angular tolerance is 1 arcsec /* __ Globals ____________________________________________________________ */ -const GModelSpatialPtsrc g_spatial_ptsrc_seed; -const GModelSpatialRegistry g_spatial_ptsrc_registry(&g_spatial_ptsrc_seed); +const GModelSpatialPointSource g_spatial_ptsrc_seed; +const GModelSpatialRegistry g_spatial_ptsrc_registry(&g_spatial_ptsrc_seed); /* __ Method name definitions ____________________________________________ */ -#define G_READ "GModelSpatialPtsrc::read(GXmlElement&)" -#define G_WRITE "GModelSpatialPtsrc::write(GXmlElement&)" +#define G_READ "GModelSpatialPointSource::read(GXmlElement&)" +#define G_WRITE "GModelSpatialPointSource::write(GXmlElement&)" /* __ Macros _____________________________________________________________ */ @@ -60,7 +60,7 @@ const GModelSpatialRegistry g_spatial_ptsrc_registry(&g_spatial_ptsrc_seed); /***********************************************************************//** * @brief Void constructor ***************************************************************************/ -GModelSpatialPtsrc::GModelSpatialPtsrc(void) : GModelSpatial() +GModelSpatialPointSource::GModelSpatialPointSource(void) : GModelSpatial() { // Initialise members init_members(); @@ -75,9 +75,10 @@ GModelSpatialPtsrc::GModelSpatialPtsrc(void) : GModelSpatial() * * @param[in] dir Sky direction. * - * Creates instance of a point source spatial model using a sky direction. + * Construct a point source spatial model from a sky direction. ***************************************************************************/ -GModelSpatialPtsrc::GModelSpatialPtsrc(const GSkyDir& dir) : GModelSpatial() +GModelSpatialPointSource::GModelSpatialPointSource(const GSkyDir& dir) : + GModelSpatial() { // Initialise members init_members(); @@ -95,11 +96,12 @@ GModelSpatialPtsrc::GModelSpatialPtsrc(const GSkyDir& dir) : GModelSpatial() * * @param[in] xml XML element. * - * Creates instance of a point source spatial model by extracting information - * from an XML element. See GModelSpatialPtsrc::read() for more information + * Construct a point source spatial model by extracting information from an + * XML element. See GModelSpatialPointSource::read() for more information * about the expected structure of the XML element. ***************************************************************************/ -GModelSpatialPtsrc::GModelSpatialPtsrc(const GXmlElement& xml) : GModelSpatial() +GModelSpatialPointSource::GModelSpatialPointSource(const GXmlElement& xml) : + GModelSpatial() { // Initialise members init_members(); @@ -117,8 +119,8 @@ GModelSpatialPtsrc::GModelSpatialPtsrc(const GXmlElement& xml) : GModelSpatial() * * @param[in] model Point source spatial model. ***************************************************************************/ -GModelSpatialPtsrc::GModelSpatialPtsrc(const GModelSpatialPtsrc& model) - : GModelSpatial(model) +GModelSpatialPointSource::GModelSpatialPointSource(const GModelSpatialPointSource& model) : + GModelSpatial(model) { // Initialise members init_members(); @@ -134,7 +136,7 @@ GModelSpatialPtsrc::GModelSpatialPtsrc(const GModelSpatialPtsrc& model) /***********************************************************************//** * @brief Destructor ***************************************************************************/ -GModelSpatialPtsrc::~GModelSpatialPtsrc(void) +GModelSpatialPointSource::~GModelSpatialPointSource(void) { // Free members free_members(); @@ -154,8 +156,9 @@ GModelSpatialPtsrc::~GModelSpatialPtsrc(void) * @brief Assignment operator * * @param[in] model Point source spatial model. + * @return Point source spatial model. ***************************************************************************/ -GModelSpatialPtsrc& GModelSpatialPtsrc::operator= (const GModelSpatialPtsrc& model) +GModelSpatialPointSource& GModelSpatialPointSource::operator=(const GModelSpatialPointSource& model) { // Execute only if object is not identical if (this != &model) { @@ -187,8 +190,8 @@ GModelSpatialPtsrc& GModelSpatialPtsrc::operator= (const GModelSpatialPtsrc& mod /***********************************************************************//** * @brief Clear instance -***************************************************************************/ -void GModelSpatialPtsrc::clear(void) + ***************************************************************************/ +void GModelSpatialPointSource::clear(void) { // Free class members (base and derived classes, derived class first) free_members(); @@ -205,10 +208,12 @@ void GModelSpatialPtsrc::clear(void) /***********************************************************************//** * @brief Clone instance -***************************************************************************/ -GModelSpatialPtsrc* GModelSpatialPtsrc::clone(void) const + * + * @return Pointer to deep copy of point source spatial model. + ***************************************************************************/ +GModelSpatialPointSource* GModelSpatialPointSource::clone(void) const { - return new GModelSpatialPtsrc(*this); + return new GModelSpatialPointSource(*this); } @@ -216,13 +221,14 @@ GModelSpatialPtsrc* GModelSpatialPtsrc::clone(void) const * @brief Evaluate function * * @param[in] srcDir True photon arrival direction. + * @return Model value (1 if srcDir corresponds to source direction, 0 else). * * Evaluates the spatial part for a point source model. It implements a delta * function with respect to the coordinates of the source. For numerical * reasons a certain tolerance is accepted (typically 0.1 arcsec, i.e. well * below the angular resolution of gamma-ray telescopes). ***************************************************************************/ -double GModelSpatialPtsrc::eval(const GSkyDir& srcDir) const +double GModelSpatialPointSource::eval(const GSkyDir& srcDir) const { // Set value dependent on source distance double value = (srcDir.dist_deg(dir()) < tolerance) ? 1.0 : 0.0; @@ -236,6 +242,7 @@ double GModelSpatialPtsrc::eval(const GSkyDir& srcDir) const * @brief Evaluate function and gradients * * @param[in] srcDir True photon arrival direction. + * @return Model value (1 if srcDir corresponds to source direction, 0 else). * * Evaluates the spatial part for a point source model and the gradient. * It implements a delta function with respect to the coordinates of the @@ -245,7 +252,7 @@ double GModelSpatialPtsrc::eval(const GSkyDir& srcDir) const * * This method does not provide valid parameter gradients. ***************************************************************************/ -double GModelSpatialPtsrc::eval_gradients(const GSkyDir& srcDir) const +double GModelSpatialPointSource::eval_gradients(const GSkyDir& srcDir) const { // Set value dependent on source distance double value = (srcDir.dist_deg(dir()) < tolerance) ? 1.0 : 0.0; @@ -259,10 +266,11 @@ double GModelSpatialPtsrc::eval_gradients(const GSkyDir& srcDir) const * @brief Returns MC sky direction * * @param[in] ran Random number generator. + * @return Sky direction. * * This method always returns the directon of the point source. ***************************************************************************/ -GSkyDir GModelSpatialPtsrc::mc(GRan& ran) const +GSkyDir GModelSpatialPointSource::mc(GRan& ran) const { // Return point source direction return dir(); @@ -279,11 +287,23 @@ GSkyDir GModelSpatialPtsrc::mc(GRan& ran) const * @exception GException::model_invalid_parnames * Invalid model parameter names found in XML element. * - * Read the point source information from an XML element. The XML element - * is required to have 2 parameters named either "RA" and "DEC" or "GLON" - * and "GLAT". + * Read the point source information from an XML element with the following + * format + * + * + * + * + * + * + * or + * + * + * + * + * + * ***************************************************************************/ -void GModelSpatialPtsrc::read(const GXmlElement& xml) +void GModelSpatialPointSource::read(const GXmlElement& xml) { // Verify that XML element has exactly 2 parameters if (xml.elements() != 2 || xml.elements("parameter") != 2) { @@ -353,14 +373,18 @@ void GModelSpatialPtsrc::read(const GXmlElement& xml) * @exception GException::model_invalid_parnames * Invalid model parameter names found in XML element. * - * Write the point source information into an XML element. The XML element - * has to be of type 'SkyDirFunction' and will have 2 parameter leafs - * named 'RA' and 'DEC'. + * Write the point source information into an XML element with the following + * format + * + * + * + * + * * * @todo The case that an existing spatial XML element with "GLON" and "GLAT" * as coordinates is not supported. ***************************************************************************/ -void GModelSpatialPtsrc::write(GXmlElement& xml) const +void GModelSpatialPointSource::write(GXmlElement& xml) const { // Set model type if (xml.attribute("type") == "") { @@ -410,14 +434,18 @@ void GModelSpatialPtsrc::write(GXmlElement& xml) const /***********************************************************************//** * @brief Print point source information + * + * @return String containing point source information. ***************************************************************************/ -std::string GModelSpatialPtsrc::print(void) const +std::string GModelSpatialPointSource::print(void) const { // Initialise result string std::string result; // Append header - result.append("=== GModelSpatialPtsrc ===\n"); + result.append("=== GModelSpatialPointSource ===\n"); + + // Append parameters result.append(parformat("Number of parameters")+str(size())); for (int i = 0; i < size(); ++i) { result.append("\n"+m_pars[i]->print()); @@ -430,8 +458,10 @@ std::string GModelSpatialPtsrc::print(void) const /***********************************************************************//** * @brief Return position of point source + * + * @return Point source sky direction. ***************************************************************************/ -GSkyDir GModelSpatialPtsrc::dir(void) const +GSkyDir GModelSpatialPointSource::dir(void) const { // Allocate sky direction GSkyDir srcDir; @@ -447,7 +477,7 @@ GSkyDir GModelSpatialPtsrc::dir(void) const /***********************************************************************//** * @brief Set position of point source ***************************************************************************/ -void GModelSpatialPtsrc::dir(const GSkyDir& dir) +void GModelSpatialPointSource::dir(const GSkyDir& dir) { // Assign Right Ascension and Declination m_ra.real_value(dir.ra_deg()); @@ -467,7 +497,7 @@ void GModelSpatialPtsrc::dir(const GSkyDir& dir) /***********************************************************************//** * @brief Initialise class members ***************************************************************************/ -void GModelSpatialPtsrc::init_members(void) +void GModelSpatialPointSource::init_members(void) { // Initialise Right Ascension m_ra.clear(); @@ -502,7 +532,7 @@ void GModelSpatialPtsrc::init_members(void) * * @param[in] model Point source spatial model. ***************************************************************************/ -void GModelSpatialPtsrc::copy_members(const GModelSpatialPtsrc& model) +void GModelSpatialPointSource::copy_members(const GModelSpatialPointSource& model) { // Copy members m_ra = model.m_ra; @@ -521,15 +551,8 @@ void GModelSpatialPtsrc::copy_members(const GModelSpatialPtsrc& model) /***********************************************************************//** * @brief Delete class members ***************************************************************************/ -void GModelSpatialPtsrc::free_members(void) +void GModelSpatialPointSource::free_members(void) { // Return return; } - - -/*========================================================================== - = = - = Friends = - = = - ==========================================================================*/ diff --git a/src/model/Makefile.am b/src/model/Makefile.am index 72d4681..07140d4 100644 --- a/src/model/Makefile.am +++ b/src/model/Makefile.am @@ -14,10 +14,10 @@ sources = GModelPar.cpp \ GModelData.cpp \ GModelSpatial.cpp \ GModelSpatialRegistry.cpp \ + GModelSpatialPointSource.cpp \ GModelSpatialConst.cpp \ GModelSpatialCube.cpp \ GModelSpatialMap.cpp \ - GModelSpatialPtsrc.cpp \ GModelRadial.cpp \ GModelRadialDisk.cpp \ GModelRadialGauss.cpp \