GammaLib 2.0.0
Loading...
Searching...
No Matches
GEvents.hpp
Go to the documentation of this file.
1/***************************************************************************
2 * GEvents.hpp - Abstract event container class *
3 * ----------------------------------------------------------------------- *
4 * copyright (C) 2009-2016 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 GEvents.hpp
23 * @brief Abstract event container class interface definition
24 * @author Juergen Knoedlseder
25 */
26
27#ifndef GEVENTS_HPP
28#define GEVENTS_HPP
29
30/* __ Includes ___________________________________________________________ */
31#include <string>
32#include "GBase.hpp"
33#include "GEvent.hpp"
34#include "GFits.hpp"
35#include "GEbounds.hpp"
36#include "GGti.hpp"
37#include "GRoi.hpp"
38
39/* __ Forward declarations _______________________________________________ */
40class GFilename;
41
42
43/***********************************************************************//**
44 * @class GEvents
45 *
46 * @brief Abstract event container class
47 *
48 * This class is an abstract container base class for events. It also holds
49 * the energy boundaries and the Good Time Intervals (GTIs) that define the
50 * data space. Access to the energy boundaries is provided by the ebounds()
51 * methods, the GTI can be accessed by the gti() methods. Furthermore, the
52 * emin() and emax() methods return the lowest and highest energy covered
53 * by the event container, while the tstart() and tstop() methods return
54 * the first and the last time.
55 *
56 * Access to events (in form of atoms or bins) is provided through the
57 * element access operator[].
58 *
59 * The size() method gives the number of event atoms or bins that is found
60 * in the container. The number() method provides the total number of events
61 * in the container.
62 *
63 * An event iterator allows iterating over the event atoms or bins of the
64 * container.
65 ***************************************************************************/
66class GEvents : public GBase {
67
68public:
69 // Constructors and destructors
70 GEvents(void);
71 GEvents(const GEvents& events);
72 virtual ~GEvents(void);
73
74 // Operators
75 virtual GEvents& operator=(const GEvents& events);
76 virtual GEvent* operator[](const int& index) = 0;
77 virtual const GEvent* operator[](const int& index) const = 0;
78
79 // Pure virtual methods
80 virtual void clear(void) = 0;
81 virtual GEvents* clone(void) const = 0;
82 virtual std::string classname(void) const = 0;
83 virtual int size(void) const = 0;
84 virtual void load(const GFilename& filename) = 0;
85 virtual void save(const GFilename& filename,
86 const bool& clobber = false) const = 0;
87 virtual void read(const GFits& file) = 0;
88 virtual void write(GFits& file) const = 0;
89 virtual int number(void) const = 0;
90 virtual std::string print(const GChatter& chatter = NORMAL) const = 0;
91
92 // Implemented methods
93 void ebounds(const GEbounds& ebounds);
94 void gti(const GGti& gti);
95 const GEbounds& ebounds(void) const;
96 const GGti& gti(void) const;
97 const GTime& tstart(void) const;
98 const GTime& tstop(void) const;
99 const GEnergy& emin(void) const;
100 const GEnergy& emax(void) const;
101
102protected:
103 // Protected methods
104 void init_members(void);
105 void copy_members(const GEvents& events);
106 void free_members(void);
107 virtual void set_energies(void) = 0;
108 virtual void set_times(void) = 0;
109
110 // Protected members
111 GEbounds m_ebounds; //!< Energy boundaries covered by events
112 GGti m_gti; //!< Good time intervals covered by events
113};
114
115
116/***********************************************************************//**
117 * @brief Return energy boundaries
118 *
119 * @return Energy boundaries.
120 ***************************************************************************/
121inline
122const GEbounds& GEvents::ebounds(void) const
123{
124 return (m_ebounds);
125}
126
127
128/***********************************************************************//**
129 * @brief Return Good Time Intervals
130 *
131 * @return Good Time Intervals.
132 ***************************************************************************/
133inline
134const GGti& GEvents::gti(void) const
135{
136 return (m_gti);
137}
138
139
140/***********************************************************************//**
141 * @brief Return start time
142 *
143 * @return Start time.
144 ***************************************************************************/
145inline
146const GTime& GEvents::tstart(void) const
147{
148 return (m_gti.tstart());
149}
150
151
152/***********************************************************************//**
153 * @brief Return stop time
154 *
155 * @return Stop time.
156 ***************************************************************************/
157inline
158const GTime& GEvents::tstop(void) const
159{
160 return (m_gti.tstop());
161}
162
163
164/***********************************************************************//**
165 * @brief Return minimum energy
166 *
167 * @return Minimum energy.
168 ***************************************************************************/
169inline
170const GEnergy& GEvents::emin(void) const
171{
172 return (m_ebounds.emin());
173}
174
175
176/***********************************************************************//**
177 * @brief Return maximum energy
178 *
179 * @return Maximum energy.
180 ***************************************************************************/
181inline
182const GEnergy& GEvents::emax(void) const
183{
184 return (m_ebounds.emax());
185}
186
187#endif /* GEVENTS_HPP */
Definition of interface for all GammaLib classes.
Energy boundaries class interface definition.
Abstract event base class definition.
FITS file class interface definition.
Good time interval class interface definition.
Abstract Region of interest base class definition.
GChatter
Definition GTypemaps.hpp:33
@ NORMAL
Definition GTypemaps.hpp:36
Interface class for all GammaLib classes.
Definition GBase.hpp:52
Energy boundaries container class.
Definition GEbounds.hpp:60
const GEnergy & emax(void) const
Return maximum energy of all intervals.
Definition GEbounds.hpp:199
const GEnergy & emin(void) const
Return minimum energy of all intervals.
Definition GEbounds.hpp:187
Class that handles energies in a unit independent way.
Definition GEnergy.hpp:48
Abstract interface for the event classes.
Definition GEvent.hpp:71
Abstract event container class.
Definition GEvents.hpp:66
virtual void set_times(void)=0
virtual GEvents & operator=(const GEvents &events)
Assignment operator.
Definition GEvents.cpp:104
void copy_members(const GEvents &events)
Copy class members.
Definition GEvents.cpp:192
virtual const GEvent * operator[](const int &index) const =0
void free_members(void)
Delete class members.
Definition GEvents.cpp:206
GGti m_gti
Good time intervals covered by events.
Definition GEvents.hpp:112
virtual void write(GFits &file) const =0
virtual void read(const GFits &file)=0
virtual GEvent * operator[](const int &index)=0
const GTime & tstart(void) const
Return start time.
Definition GEvents.hpp:146
virtual void clear(void)=0
Clear object.
virtual std::string print(const GChatter &chatter=NORMAL) const =0
Print content of object.
GEvents(void)
Void constructor.
Definition GEvents.cpp:51
virtual void load(const GFilename &filename)=0
virtual void save(const GFilename &filename, const bool &clobber=false) const =0
GEbounds m_ebounds
Energy boundaries covered by events.
Definition GEvents.hpp:111
virtual int size(void) const =0
const GGti & gti(void) const
Return Good Time Intervals.
Definition GEvents.hpp:134
void init_members(void)
Initialise class members.
Definition GEvents.cpp:176
virtual ~GEvents(void)
Destructor.
Definition GEvents.cpp:82
const GTime & tstop(void) const
Return stop time.
Definition GEvents.hpp:158
const GEbounds & ebounds(void) const
Return energy boundaries.
Definition GEvents.hpp:122
virtual std::string classname(void) const =0
Return class name.
virtual void set_energies(void)=0
virtual int number(void) const =0
const GEnergy & emax(void) const
Return maximum energy.
Definition GEvents.hpp:182
virtual GEvents * clone(void) const =0
Clones object.
const GEnergy & emin(void) const
Return minimum energy.
Definition GEvents.hpp:170
Filename class.
Definition GFilename.hpp:62
FITS file class.
Definition GFits.hpp:63
Good Time Interval class.
Definition GGti.hpp:62
const GTime & tstop(void) const
Returns latest stop time in Good Time Intervals.
Definition GGti.hpp:207
const GTime & tstart(void) const
Returns earliest start time in Good Time Intervals.
Definition GGti.hpp:194
Time class.
Definition GTime.hpp:55