GCTAEventList.hpp
6.49 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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/***************************************************************************
* GCTAEventList.hpp - CTA event atom container class *
* ----------------------------------------------------------------------- *
* copyright (C) 2010-2015 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 GCTAEventList.hpp
* @brief CTA event atom container class interface definition
* @author Juergen Knoedlseder
*/
#ifndef GCTAEVENTLIST_HPP
#define GCTAEVENTLIST_HPP
/* __ Includes ___________________________________________________________ */
#include <string>
#include <vector>
#include "GEventList.hpp"
#include "GCTAEventAtom.hpp"
#include "GCTARoi.hpp"
#include "GFitsHDU.hpp"
#include "GFitsTable.hpp"
#include "GFitsBinTable.hpp"
/***********************************************************************//**
* @class GCTAEventList
*
* @brief CTA event atom container class
*
* This class is a container class for CTA event atoms.
***************************************************************************/
class GCTAEventList : public GEventList {
public:
// Constructors and destructors
GCTAEventList(void);
explicit GCTAEventList(const std::string& filename);
GCTAEventList(const GCTAEventList& list);
virtual ~GCTAEventList(void);
// Operators
virtual GCTAEventList& operator=(const GCTAEventList& list);
virtual GCTAEventAtom* operator[](const int& index);
virtual const GCTAEventAtom* operator[](const int& index) const;
// Implemented pure virtual base class methods
virtual void clear(void);
virtual GCTAEventList* clone(void) const;
virtual std::string classname(void) const;
virtual int size(void) const;
virtual void load(const std::string& filename);
virtual void save(const std::string& filename,
const bool& clobber = false) const;
virtual void read(const GFits& file);
virtual void write(GFits& file) const;
virtual int number(void) const;
virtual void roi(const GRoi& roi);
virtual const GCTARoi& roi(void) const;
std::string print(const GChatter& chatter = NORMAL) const;
// Implement other methods
void append(const GCTAEventAtom& event);
void reserve(const int& number);
double irf_cache(const std::string& name, const int& index) const;
void irf_cache(const std::string& name, const int& index,
const double& irf) const;
protected:
// Protected methods
void init_members(void);
void copy_members(const GCTAEventList& list);
void free_members(void);
virtual void set_energies(void) { return; }
virtual void set_times(void) { return; }
void read_events(const GFitsTable& table);
void write_events(GFitsBinTable& table) const;
void write_ds_keys(GFitsHDU& hdu) const;
int irf_cache_init(const std::string& name) const;
int irf_cache_index(const std::string& name) const;
// Protected members
GCTARoi m_roi; //!< Region of interest
std::vector<GCTAEventAtom> m_events; //!< Events
std::vector<GFitsTableCol*> m_columns; //!< Pointers to optional columns
bool m_has_phase; //!< Signal presence of phase
bool m_has_detxy; //!< Signal presence of detector coordinates
// IRF cache for diffuse models
mutable std::vector<std::string> m_irf_names; //!< Model names
mutable std::vector<std::vector<double> > m_irf_values; //!< IRF values
};
/***********************************************************************//**
* @brief Return class name
*
* @return String containing the class name ("GCTAEventList").
***************************************************************************/
inline
std::string GCTAEventList::classname(void) const
{
return ("GCTAEventList");
}
/***********************************************************************//**
* @brief Return number of events in list
*
* @return Number of events in list.
***************************************************************************/
inline
int GCTAEventList::size(void) const
{
return (int)m_events.size();
}
/***********************************************************************//**
* @brief Return number of events in list
*
* @return Number of events in list.
***************************************************************************/
inline
int GCTAEventList::number(void) const
{
return (int)m_events.size();
}
/***********************************************************************//**
* @brief Return Region of Interest
*
* @return Region of Interest.
***************************************************************************/
inline
const GCTARoi& GCTAEventList::roi(void) const
{
return (m_roi);
}
/***********************************************************************//**
* @brief Reserves space for events
*
* @param[in] number Number of events.
*
* Reserves space for number events in the event list.
***************************************************************************/
inline
void GCTAEventList::reserve(const int& number)
{
m_events.reserve(number);
return;
}
#endif /* GCTAEVENTLIST_HPP */