ctselect.hpp
5.3 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
/***************************************************************************
* ctselect - Data selection tool *
* ----------------------------------------------------------------------- *
* 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 ctselect.hpp
* @brief Data selection tool definition
* @author Juergen Knoedlseder
*/
#ifndef CTSELECT_HPP
#define CTSELECT_HPP
/* __ Includes ___________________________________________________________ */
#include <vector>
#include <string>
#include "GammaLib.hpp"
#include "GCTALib.hpp"
#include "ctool.hpp"
/* __Definitions _________________________________________________________ */
#define CTSELECT_NAME "ctselect"
#define CTSELECT_VERSION "1.0.0"
/***********************************************************************//**
* @class ctselect
*
* @brief Data selection tool
***************************************************************************/
class ctselect : public ctool {
public:
// Constructors and destructors
ctselect(void);
explicit ctselect(const GObservations& obs);
ctselect(int argc, char *argv[]);
ctselect(const ctselect& app);
virtual ~ctselect(void);
// Operators
ctselect& operator=(const ctselect& app);
// Methods
void clear(void);
void run(void);
void save(void);
const GObservations& obs(void) const;
const GTimeReference& time_reference(void) const;
protected:
// Protected methods
void init_members(void);
void copy_members(const ctselect& app);
void free_members(void);
void get_parameters(void);
void select_events(GCTAObservation* obs, const std::string& filename);
GEbounds set_ebounds(GCTAObservation* obs,
const GEbounds& ebounds) const;
std::string check_infile(const std::string& filename) const;
std::string set_outfile_name(const std::string& filename) const;
void save_fits(void);
void save_xml(void);
void save_event_list(const GCTAObservation* obs,
const std::string& infile,
const std::string& outfile) const;
// User parameters
std::string m_outobs; //!< Output event list or XML file
std::string m_prefix; //!< Prefix for multiple event lists
bool m_usepnt; //!< Use pointing instead of RA/DEC parameters
double m_ra; //!< RA of ROI centre
double m_dec; //!< DEC of ROI centre
double m_rad; //!< ROI radius
double m_tmin; //!< Start time
double m_tmax; //!< Stop time
double m_emin; //!< Lower energy
double m_emax; //!< Upper energy
std::string m_expr; //!< Selection expression
std::string m_usethres; //!< Energy threshold type
// Protected members
GObservations m_obs; //!< Observations container
std::vector<std::string> m_infiles; //!< Input event filenames
GTime m_timemin; //!< Earliest time
GTime m_timemax; //!< Latest time
bool m_select_energy; //!< Perform energy selection
bool m_select_roi; //!< Perform ROI selection
bool m_select_time; //!< Perform time selection
};
/***********************************************************************//**
* @brief Return observation container
*
* @return Reference to observation container
***************************************************************************/
inline
const GObservations& ctselect::obs(void) const
{
return m_obs;
}
/***********************************************************************//**
* @brief Return CTA time reference
*
* @return CTA time reference
***************************************************************************/
inline
const GTimeReference& ctselect::time_reference(void) const
{
return m_cta_ref;
}
#endif /* CTSELECT_HPP */