GTestObservation.hpp
4.78 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
/***************************************************************************
* GTestObservation.hpp - Test observation class *
* ----------------------------------------------------------------------- *
* copyright (C) 2012 by Jean-Baptiste Cayrou *
* ----------------------------------------------------------------------- *
* *
* 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/>. *
* *
***************************************************************************/
#ifndef GTestOBSERVATION_HPP
#define GTestOBSERVATION_HPP
/* __ Includes ___________________________________________________________ */
#include "GObservation.hpp"
#include "GTime.hpp"
#include "GModel.hpp"
#include "GTestResponse.hpp"
#include "GTestEventList.hpp"
#include "GTools.hpp"
class GTestObservation : public GObservation {
public:
// Constructors and destructors
GTestObservation(void) : GObservation() {
init_members();
return;
}
GTestObservation(const GTestObservation& obs) : GObservation(obs) {
copy_members(obs);
return;
}
virtual ~GTestObservation(void){
free_members();
return;
}
// Operators
virtual GTestObservation& operator=(const GTestObservation& obs) {
if (this != &obs) {
this->GObservation::operator=(obs);
free_members();
copy_members(obs);
}
return *this;
}
// Implement pure virtual methods
virtual void clear(void) {
free_members();
this->GObservation::free_members();
this->GObservation::init_members();
init_members();
return;
}
virtual GTestObservation* clone(void) const {
return new GTestObservation(*this);
}
virtual void response(const GResponse& rsp) {
const GTestResponse* testrsp = dynamic_cast<const GTestResponse*>(&rsp);
if (testrsp == NULL) {
throw;
}
m_response = *(testrsp->clone());
return;
}
virtual const GTestResponse& response(void) const { return m_response;}
virtual std::string instrument(void) const { return m_instrument; }
virtual double ontime(void) const { return m_ontime; }
virtual double livetime(void) const { return m_ontime; }
virtual double deadc(const GTime& time) const { return 1.0; }
virtual void read(const GXmlElement& xml) { return; }
virtual void write(GXmlElement& xml) const { return; }
virtual void ontime(const double& ontime) { m_ontime=ontime; }
virtual std::string print(const GChatter& chatter = NORMAL) const {
std::string result;
result.append("=== GTestObservation ===");
result.append("\n"+gammalib::parformat("Instrument Name")+m_instrument);
GTestEventList* list = dynamic_cast<GTestEventList*>(m_events);
if(list != NULL) {
result.append("\n"+gammalib::parformat("Number of events")+gammalib::str(list->number()));
result.append("\n"+gammalib::parformat("GTI")+list->gti().print());
}
return result;
}
protected:
// Protected methods
void init_members(void){
m_instrument = "Test Instrument";
m_ontime = 0.0;
return;
}
void copy_members(const GTestObservation& obs){
m_instrument = obs.m_instrument;
m_response = obs.m_response;
m_ontime = obs.m_ontime;
return;
}
void free_members(void) {
return;
}
// Protected members
std::string m_instrument; //!< Instrument name
GTestResponse m_response; //!< Pointer to response functions
double m_ontime; //!< ontime
};
#endif /* GTestOBSERVATION_HPP */