GModelSpatialRadialProfileGauss.hpp
5.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/***************************************************************************
* GModelSpatialRadialProfileGauss.hpp - Gaussian radial profile class *
* ----------------------------------------------------------------------- *
* copyright (C) 2016-2018 by Juergen Knoedlseder *
* ----------------------------------------------------------------------- *
* *
* This program is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
* *
***************************************************************************/
/**
* @file GModelSpatialRadialProfileGauss.hpp
* @brief Radial Gaussian profile model class interface definition
* @author Juergen Knoedlseder
*/
#ifndef GMODELSPATIALRADIALPROFILEGAUSS_HPP
#define GMODELSPATIALRADIALPROFILEGAUSS_HPP
/* __ Includes ___________________________________________________________ */
#include <string>
#include "GModelSpatialRadialProfile.hpp"
#include "GModelPar.hpp"
/* __ Forward declaration ________________________________________________ */
class GXmlElement;
/**************************************************************************
* @class GModelSpatialRadialProfileGauss
*
* @brief Radial Gaussian profile source model class
*
* This class implements the spatial component of the factorised source
* model for a Gaussian radial profile.
***************************************************************************/
class GModelSpatialRadialProfileGauss : public GModelSpatialRadialProfile {
public:
// Constructors and destructors
GModelSpatialRadialProfileGauss(void);
explicit GModelSpatialRadialProfileGauss(const GXmlElement& xml);
GModelSpatialRadialProfileGauss(const GSkyDir& dir, const double& sigma);
GModelSpatialRadialProfileGauss(const GModelSpatialRadialProfileGauss& model);
virtual ~GModelSpatialRadialProfileGauss(void);
// Operators
virtual GModelSpatialRadialProfileGauss& operator=(const GModelSpatialRadialProfileGauss& model);
// Implemented pure virtual base class methods
virtual void clear(void);
virtual GModelSpatialRadialProfileGauss* clone(void) const;
virtual std::string classname(void) const;
virtual std::string type(void) const;
virtual double theta_min(void) const;
virtual double theta_max(void) const;
virtual void read(const GXmlElement& xml);
virtual void write(GXmlElement& xml) const;
virtual std::string print(const GChatter& chatter = NORMAL) const;
// Other methods
double sigma(void) const;
void sigma(const double& sigma);
protected:
// Protected methods
void init_members(void);
void copy_members(const GModelSpatialRadialProfileGauss& model);
void free_members(void);
virtual double profile_value(const double& theta) const;
// Protected members
GModelPar m_sigma; //!< Gaussian width (deg)
};
/***********************************************************************//**
* @brief Return class name
*
* @return String containing the class name ("GModelSpatialRadialProfileGauss").
***************************************************************************/
inline
std::string GModelSpatialRadialProfileGauss::classname(void) const
{
return ("GModelSpatialRadialProfileGauss");
}
/***********************************************************************//**
* @brief Return model type
*
* @return "GaussianProfile".
*
* Returns the type of the radial profile model.
***************************************************************************/
inline
std::string GModelSpatialRadialProfileGauss::type(void) const
{
return "GaussianProfile";
}
/***********************************************************************//**
* @brief Return Gaussian sigma
*
* @return Gaussian sigma (degrees).
*
* Returns the Gaussian sigma in degrees.
***************************************************************************/
inline
double GModelSpatialRadialProfileGauss::sigma(void) const
{
return (m_sigma.value());
}
/***********************************************************************//**
* @brief Set Gaussian sigma
*
* @param[in] sigma Gaussian sigma (degrees).
*
* Sets the Gaussian sigma in degrees.
***************************************************************************/
inline
void GModelSpatialRadialProfileGauss::sigma(const double& sigma)
{
m_sigma.value(sigma);
return;
}
#endif /* GMODELSPATIALRADIALPROFILEGAUSS_HPP */