36#define G_ACCESS "GModelSpatial::operator[](std::string&)"
37#define G_AT "GModelPar& GModelSpatial::at(int&)"
38#define G_FLUX "GModelSpatial::flux(GSkyRegionCircle&, GEnergy&, GTime&)"
115 if (
this != &model) {
148 for (; index <
size(); ++index) {
149 if (
m_pars[index]->name() == name) {
155 if (index >=
size()) {
156 std::string msg =
"Model parameter \""+name+
"\" not found in model. "
157 "Please specify a valid model parameter name.";
181 for (; index <
size(); ++index) {
182 if (
m_pars[index]->name() == name) {
188 if (index >=
size()) {
189 std::string msg =
"Model parameter \""+name+
"\" not found in model. "
190 "Please specify a valid model parameter name.";
219 if (index < 0 || index >=
size()) {
242 if (index < 0 || index >=
size()) {
266 for (
int i = 0; i <
size(); ++i) {
267 if (
m_pars[i]->name() == name) {
289 for (
int i = 0; i <
size(); ++i) {
290 if (
m_pars[i]->is_free()) {
309 for (
int i = 0; i <
m_pars.size(); ++i) {
345 const GTime& srcTime)
const
358 double rho_min = 0.0;
461 const double omega_min = 0.0;
476 double sin_rho = std::sin(rho);
479 flux = integral.
romberg(omega_min, omega_max) * sin_rho;
520 flux = m_model->eval(photon);
Exception handler interface definition.
Point source spatial model class interface definition.
const double g_kludge_radius
Tiny angle (radians)
Abstract spatial model base class interface definition.
Class that handles energies in a unit independent way.
GIntegral class interface definition.
double romberg(std::vector< double > bounds, const int &order=5)
Perform Romberg integration.
void silent(const bool &silent)
Set silence flag.
double eval(const double &omega)
Kernel for spatial model azimuth angle integration.
GEnergy m_srcEng
Photon energy.
GTime m_srcTime
Photon time.
const GSkyDir & m_centre
Model centre.
const GModelSpatial * m_model
Spatial model.
const GSkyRegion & m_region
Sky region.
double eval(const double &rho)
Kernel for spatial model radial integration.
Abstract spatial model base class.
void autoscale(void)
Autoscale parameters.
std::string m_type
Spatial model type.
bool has_free_pars(void) const
Checks if the spatial model has free parameters.
const GSkyRegion * region(void) const
Return boundary sky region.
virtual ~GModelSpatial(void)
Destructor.
virtual double flux(const GSkyRegion ®ion, const GEnergy &srcEng=GEnergy(), const GTime &srcTime=GTime()) const
Returns model flux within sky region.
GModelPar & at(const int &index)
Returns model parameter.
bool has_par(const std::string &name) const
Checks if parameter name exists.
GModelSpatial(void)
Void constructor.
std::vector< GModelPar * > m_pars
Parameter pointers.
void copy_members(const GModelSpatial &model)
Copy class members.
virtual GModelSpatial & operator=(const GModelSpatial &model)
Assignment operator.
void init_members(void)
Initialise class members.
int size(void) const
Return number of parameters.
void free_members(void)
Delete class members.
GSkyRegionCircle m_region
Bounding circle.
virtual void set_region(void) const =0
virtual GModelPar & operator[](const int &index)
Returns model parameter.
Class that handles photons.
void rotate(const double &phi, const double &theta)
Rotate sky direction by zenith and azimuth angle.
bool contains(const GSkyDir &dir) const
Checks if sky direction lies within region.
bool overlaps(const GSkyRegion ®) const
Checks if region is overlapping with this region.
void clear(void)
Clear instance.
const double & radius(void) const
Return circular region radius (in degrees)
const GSkyDir & centre(void) const
Return circular region centre.
Abstract interface for the sky region class.