ctmodel.hpp
5.44 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
/***************************************************************************
* ctmodel - Model cube generation tool *
* ----------------------------------------------------------------------- *
* copyright (C) 2012-2016 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 ctmodel.hpp
* @brief Model cube generation tool definition
* @author Juergen Knoedlseder
*/
#ifndef CTMODEL_HPP
#define CTMODEL_HPP
/* __ Includes ___________________________________________________________ */
#include "GammaLib.hpp"
#include "GCTALib.hpp"
#include "ctool.hpp"
/* __Definitions _________________________________________________________ */
#define CTMODEL_NAME "ctmodel"
#define CTMODEL_VERSION "1.1.0"
/***********************************************************************//**
* @class ctmodel
*
* @brief Model cube generation tool
*
* This class creates counts model map(s). The definition of the counts model
* can be taken from a predefined observation container, from the counts maps
* found in an observation definition XML file, from an individual counts
* map, or from the parameter definition.
*
* Results are stored in an observation container that can be written to disk
* in form of FITS files (model maps) and an updated observation definition
* XML file.
***************************************************************************/
class ctmodel : public ctool {
public:
// Constructors and destructors
ctmodel(void);
explicit ctmodel(const GObservations& obs);
ctmodel(int argc, char *argv[]);
ctmodel(const ctmodel& app);
virtual ~ctmodel(void);
// Operators
ctmodel& operator=(const ctmodel& app);
// Methods
void clear(void);
void run(void);
void save(void);
void publish(const std::string& name = "");
const GObservations& obs(void) const;
const GCTAEventCube& cube(void) const;
void cube(const GCTAEventCube& cube);
void models(const GModels& models);
protected:
// Protected methods
void init_members(void);
void copy_members(const ctmodel& app);
void free_members(void);
void get_parameters(void);
void get_obs(void);
void fill_cube(const GCTAObservation* obs);
bool has_cube(void) const;
// User parameters
GFilename m_outcube; //!< Output model cube
bool m_apply_edisp; //!< Apply energy dispersion?
bool m_publish; //!< Publish model cube?
// Protected members
GObservations m_obs; //!< Observation container
GCTAEventCube m_cube; //!< Model cube
GGti m_gti; //!< Model cube GTIs
bool m_has_cube; //!< Signal if cube has been set or loaded
bool m_append_cube; //!< Signal that cube should be appended
bool m_binned; //!< Signals that we are in binned mode
};
/***********************************************************************//**
* @brief Return observation container
*
* @return Reference to observation container.
***************************************************************************/
inline
const GObservations& ctmodel::obs(void) const
{
return m_obs;
}
/***********************************************************************//**
* @brief Return model cube
*
* @return Reference to model cube.
***************************************************************************/
inline
const GCTAEventCube& ctmodel::cube(void) const
{
return m_cube;
}
/***********************************************************************//**
* @brief Signal if cube has been set or loaded
*
* @return True if cube has been set or loaded.
***************************************************************************/
inline
bool ctmodel::has_cube(void) const
{
return m_has_cube;
}
/***********************************************************************//**
* @brief Set models
*
* @param[in] models Model container.
*
* Set model container that should be used for model generation.
***************************************************************************/
inline
void ctmodel::models(const GModels& models)
{
m_obs.models(models);
return;
}
#endif /* CTMODEL_HPP */