GammaLib 2.0.0
Loading...
Searching...
No Matches
GMWLResponse.hpp
Go to the documentation of this file.
1/***************************************************************************
2 * GMWLResponse.hpp - Multi-wavelength response class *
3 * ----------------------------------------------------------------------- *
4 * copyright (C) 2010-2020 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 GMWLResponse.hpp
23 * @brief Multi-wavelength response class interface definition
24 * @author Juergen Knoedlseder
25 */
26
27#ifndef GMWLRESPONSE_HPP
28#define GMWLRESPONSE_HPP
29
30/* __ Includes ___________________________________________________________ */
31#include "GResponse.hpp"
32#include "GEbounds.hpp"
33
34/* __ Forward declarations _______________________________________________ */
35class GEvent;
36class GPhoton;
37class GSource;
38class GObservation;
39class GEnergy;
40class GTime;
41
42
43/***********************************************************************//**
44 * @class GMWLResponse
45 *
46 * @brief Multi-wavelength response class
47 *
48 * This class implements a dummy response class for multi-wavelength
49 * observations. Since the multi-wavelength instrument classes handles data
50 * that a provided in photon space, no instrument response is in fact needed.
51 * The dummy response implemented by this class provides a simple diagonal
52 * response matrix that allows integration of multi-wavelength observations
53 * using the standard instrument specific interface.
54 ***************************************************************************/
55class GMWLResponse : public GResponse {
56
57public:
58 // Constructors and destructors
59 GMWLResponse(void);
60 GMWLResponse(const GMWLResponse& rsp);
61 virtual ~GMWLResponse(void);
62
63 // Operators
64 virtual GMWLResponse& operator=(const GMWLResponse & rsp);
65
66 // Implemented pure base class virtual methods
67 virtual void clear(void);
68 virtual GMWLResponse* clone(void) const;
69 virtual std::string classname(void) const;
70 virtual bool use_edisp(void) const;
71 virtual bool use_tdisp(void) const;
72 virtual double irf(const GEvent& event,
73 const GPhoton& photon,
74 const GObservation& obs) const;
75 virtual double nroi(const GModelSky& model,
76 const GEnergy& obsEng,
77 const GTime& obsTime,
78 const GObservation& obs) const;
79 virtual GEbounds ebounds(const GEnergy& obsEnergy) const;
80 virtual std::string print(const GChatter& chatter = NORMAL) const;
81
82 // Overloaded virtual base class methods
83 virtual double irf_spatial(const GEvent& event,
84 const GSource& source,
85 const GObservation& obs) const;
86
87protected:
88 // Protected methods
89 void init_members(void);
90 void copy_members(const GMWLResponse& pnt);
91 void free_members(void);
92};
93
94
95/***********************************************************************//**
96 * @brief Return class name
97 *
98 * @return String containing the class name ("GMWLResponse").
99 ***************************************************************************/
100inline
101std::string GMWLResponse::classname(void) const
102{
103 return ("GMWLResponse");
104}
105
106
107/***********************************************************************//**
108 * @brief Signal if response uses energy dispersion
109 *
110 * @return True if response uses energy dispersion.
111 ***************************************************************************/
112inline
114{
115 return false;
116}
117
118
119/***********************************************************************//**
120 * @brief Signal if response uses time dispersion
121 *
122 * @return True if response uses time dispersion.
123 ***************************************************************************/
124inline
126{
127 return false;
128}
129
130
131/***********************************************************************//**
132 * @brief Return instrument response function
133 *
134 * @param[in] event Event.
135 * @param[in] photon Photon.
136 * @param[in] obs Observation.
137 *
138 * @return Instrument response function (always 1).
139 ***************************************************************************/
140inline
141double GMWLResponse::irf(const GEvent& event,
142 const GPhoton& photon,
143 const GObservation& obs) const
144{
145 return 1.0;
146}
147
148
149/***********************************************************************//**
150 * @brief Return instrument response function
151 *
152 * @param[in] event Event.
153 * @param[in] source Source.
154 * @param[in] obs Observation.
155 *
156 * @return Instrument response function (always 1).
157 ***************************************************************************/
158inline
160 const GSource& source,
161 const GObservation& obs) const
162{
163 return 1.0;
164}
165
166#endif /* GMWLRESPONSE_HPP */
Energy boundaries class interface definition.
Abstract response base class definition.
GChatter
Definition GTypemaps.hpp:33
@ NORMAL
Definition GTypemaps.hpp:36
Energy boundaries container class.
Definition GEbounds.hpp:60
Class that handles energies in a unit independent way.
Definition GEnergy.hpp:48
Abstract interface for the event classes.
Definition GEvent.hpp:71
Multi-wavelength response class.
virtual double irf_spatial(const GEvent &event, const GSource &source, const GObservation &obs) const
Return instrument response function.
virtual double irf(const GEvent &event, const GPhoton &photon, const GObservation &obs) const
Return instrument response function.
virtual bool use_edisp(void) const
Signal if response uses energy dispersion.
void free_members(void)
Delete class members.
void init_members(void)
Initialise class members.
virtual double nroi(const GModelSky &model, const GEnergy &obsEng, const GTime &obsTime, const GObservation &obs) const
Return integral of event probability for a given sky model over ROI.
GMWLResponse(void)
Void constructor.
virtual std::string print(const GChatter &chatter=NORMAL) const
Print response information.
virtual void clear(void)
Clear instance.
virtual bool use_tdisp(void) const
Signal if response uses time dispersion.
virtual std::string classname(void) const
Return class name.
virtual GEbounds ebounds(const GEnergy &obsEnergy) const
Return true energy boundaries for a specific observed energy.
virtual GMWLResponse * clone(void) const
Clone instance.
void copy_members(const GMWLResponse &pnt)
Copy class members.
virtual GMWLResponse & operator=(const GMWLResponse &rsp)
Assignment operator.
virtual ~GMWLResponse(void)
Destructor.
Sky model class.
Abstract observation base class.
Class that handles photons.
Definition GPhoton.hpp:47
Abstract instrument response base class.
Definition GResponse.hpp:77
Class that handles gamma-ray sources.
Definition GSource.hpp:53
Time class.
Definition GTime.hpp:55