GammaLib  2.1.0.dev
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GCTAAeff.hpp
Go to the documentation of this file.
1 /***************************************************************************
2  * GCTAAeff.hpp - CTA effective area base class *
3  * ----------------------------------------------------------------------- *
4  * copyright (C) 2012-2017 by Juergen Knoedlseder *
5  * ----------------------------------------------------------------------- *
6  * *
7  * This program is free software: you can redistribute it and/or modify *
8  * it under the terms of the GNU General Public License as published by *
9  * the Free Software Foundation, either version 3 of the License, or *
10  * (at your option) any later version. *
11  * *
12  * This program is distributed in the hope that it will be useful, *
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15  * GNU General Public License for more details. *
16  * *
17  * You should have received a copy of the GNU General Public License *
18  * along with this program. If not, see <http://www.gnu.org/licenses/>. *
19  * *
20  ***************************************************************************/
21 /**
22  * @file GCTAAeff.hpp
23  * @brief CTA effective area base class definition
24  * @author Juergen Knoedlseder
25  */
26 
27 #ifndef GCTAAEFF_HPP
28 #define GCTAAEFF_HPP
29 
30 /* __ Includes ___________________________________________________________ */
31 #include <string>
32 #include "GBase.hpp"
33 #include "GFits.hpp"
34 
35 /* __ Forward declarations _______________________________________________ */
36 class GFilename;
37 class GEbounds;
38 
39 
40 /***********************************************************************//**
41  * @class GCTAAeff
42  *
43  * @brief Abstract base class for the CTA effective area
44  *
45  * This class implements the abstract base class for the CTA effective area.
46  * The effective area is accessed using the following arguments
47  * logE - log10 of true (or measured) energy in TeV
48  * theta - Offset angle of true photon direction in camera system (rad)
49  * phi - Azimuth angle of true photon direction in camera system (rad)
50  * zenith - Zenith angle of pointing in Earth system (rad)
51  * azimuth - Azimuth angle of pointing in Earth system (rad)
52  * etrue - Use true or measured energy
53  ***************************************************************************/
54 class GCTAAeff : public GBase {
55 
56 public:
57  // Constructors and destructors
58  GCTAAeff(void);
59  GCTAAeff(const GCTAAeff& aeff);
60  virtual ~GCTAAeff(void);
61 
62  // Pure virtual operators
63  virtual double operator()(const double& logE,
64  const double& theta = 0.0,
65  const double& phi = 0.0,
66  const double& zenith = 0.0,
67  const double& azimuth = 0.0,
68  const bool& etrue = true) const = 0;
69 
70  // Operators
71  GCTAAeff& operator=(const GCTAAeff& aeff);
72 
73  // Pure virtual methods
74  virtual void clear(void) = 0;
75  virtual GCTAAeff* clone(void) const = 0;
76  virtual std::string classname(void) const = 0;
77  virtual void load(const GFilename& filename) = 0;
78  virtual GFilename filename(void) const = 0;
79  virtual double max(const double& logE,
80  const double& zenith,
81  const double& azimuth,
82  const bool& etrue = true) const = 0;
83  virtual GEbounds ebounds(void) const = 0;
84  virtual std::string print(const GChatter& chatter = NORMAL) const = 0;
85 
86 protected:
87  // Methods
88  void init_members(void);
89  void copy_members(const GCTAAeff& aeff);
90  void free_members(void);
91 };
92 
93 #endif /* GCTAAEFF_HPP */
GCTAAeff(void)
Void constructor.
Definition: GCTAAeff.cpp:53
virtual std::string print(const GChatter &chatter=NORMAL) const =0
Print content of object.
virtual ~GCTAAeff(void)
Destructor.
Definition: GCTAAeff.cpp:84
Definition of interface for all GammaLib classes.
FITS file class interface definition.
GCTAAeff & operator=(const GCTAAeff &aeff)
Assignment operator.
Definition: GCTAAeff.cpp:106
virtual void clear(void)=0
Clear object.
void free_members(void)
Delete class members.
Definition: GCTAAeff.cpp:164
Energy boundaries container class.
Definition: GEbounds.hpp:60
virtual void load(const GFilename &filename)=0
Filename class.
Definition: GFilename.hpp:62
Interface class for all GammaLib classes.
Definition: GBase.hpp:52
void init_members(void)
Initialise class members.
Definition: GCTAAeff.cpp:142
GChatter
Definition: GTypemaps.hpp:33
virtual GCTAAeff * clone(void) const =0
Clones object.
virtual double max(const double &logE, const double &zenith, const double &azimuth, const bool &etrue=true) const =0
void copy_members(const GCTAAeff &aeff)
Copy class members.
Definition: GCTAAeff.cpp:154
virtual GFilename filename(void) const =0
virtual std::string classname(void) const =0
Return class name.
Abstract base class for the CTA effective area.
Definition: GCTAAeff.hpp:54
virtual double operator()(const double &logE, const double &theta=0.0, const double &phi=0.0, const double &zenith=0.0, const double &azimuth=0.0, const bool &etrue=true) const =0
virtual GEbounds ebounds(void) const =0