GammaLib 2.0.0
Loading...
Searching...
No Matches
GEventAtom.hpp
Go to the documentation of this file.
1/***************************************************************************
2 * GEventAtom.hpp - Abstract event atom base class *
3 * ----------------------------------------------------------------------- *
4 * copyright (C) 2009-2014 by Jurgen Knodlseder *
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 GEventAtom.hpp
23 * @brief Abstract event atom base class definition
24 * @author Juergen Knoedlseder
25 */
26
27#ifndef GEVENTATOM_HPP
28#define GEVENTATOM_HPP
29
30/* __ Includes ___________________________________________________________ */
31#include <string>
32#include "GEvent.hpp"
33#include "GInstDir.hpp"
34#include "GEnergy.hpp"
35#include "GTime.hpp"
36
37
38/***********************************************************************//**
39 * @class GEventAtom
40 *
41 * @brief Abstract interface for the event atom class.
42 *
43 * An event atom is a single event occurring in an instrument. Event atoms
44 * are used for unbinned analysis.
45 *
46 * Each event has 3 attributes: energy, instrument direction and time.
47 * These attributes can be accessed and changed through the energy(),
48 * dir(), and time() methods.
49 *
50 * The counts() and error() methods return the number of counts and the
51 * error in this number for each event. For event atoms the number of
52 * counts is 1 and the error is 0.
53 *
54 * The size() method returns the size of an event bin ,which is the
55 * quantity that has to be multiplied by the probability for an event to
56 * occur to predict the number of events in a bin. For event atoms this
57 * quantity is by definition 1.
58 *
59 * The GEventAtom class does not hold any data members. Data members are
60 * stored in the derived classes.
61 ***************************************************************************/
62class GEventAtom : public GEvent {
63
64 // Friend classes
65 friend class GEvents;
66
67public:
68 // Constructors and destructors
69 GEventAtom(void);
70 GEventAtom(const GEventAtom& atom);
71 virtual ~GEventAtom(void);
72
73 // Operators
74 virtual GEventAtom& operator=(const GEventAtom& atom);
75
76 // Pure virtual methods
77 virtual void clear(void) = 0;
78 virtual GEvent* clone(void) const = 0;
79 virtual std::string classname(void) const = 0;
80 virtual double size(void) const;
81 virtual const GInstDir& dir(void) const = 0;
82 virtual const GEnergy& energy(void) const = 0;
83 virtual const GTime& time(void) const = 0;
84 virtual double counts(void) const;
85 virtual double error(void) const;
86 virtual std::string print(const GChatter& chatter = NORMAL) const = 0;
87
88 // Other methods
89 bool is_atom(void) const;
90 bool is_bin(void) const;
91
92protected:
93 // Protected methods
94 void init_members(void);
95 void copy_members(const GEventAtom& atom);
96 void free_members(void);
97};
98
99
100/***********************************************************************//**
101 * @brief Return size of an event atom
102 *
103 * @return Event size, fixed to 1.0 for an event atom.
104 *
105 * Returns the size of an event atom. The size is only useful for event bins,
106 * for which it is defined as the quantity that needs to be multiplied by the
107 * event probability to give the predicted number of events in a bin. For
108 * event atoms, the size is fixed to 1.0.
109 ***************************************************************************/
110inline
111double GEventAtom::size(void) const
112{
113 return (1.0);
114}
115
116
117/***********************************************************************//**
118 * @brief Return number of counts in event atom
119 *
120 * @return Number of counts, fixed to 1.0 for an event atom.
121 ***************************************************************************/
122inline
123double GEventAtom::counts(void) const
124{
125 return (1.0);
126}
127
128
129/***********************************************************************//**
130 * @brief Return error in number of counts in event atom
131 *
132 * @return Error in number of counts, fixed to 0.0 for an event atom.
133 ***************************************************************************/
134inline
135double GEventAtom::error(void) const
136{
137 return (0.0);
138}
139
140
141/***********************************************************************//**
142 * @brief Signal if event is an atom
143 *
144 * @return True.
145 ***************************************************************************/
146inline
147bool GEventAtom::is_atom(void) const
148{
149 return (true);
150}
151
152
153/***********************************************************************//**
154 * @brief Signal if event is a bin
155 *
156 * @return False.
157 ***************************************************************************/
158inline
159bool GEventAtom::is_bin(void) const
160{
161 return (false);
162}
163
164#endif /* GEVENTATOM_HPP */
Energy value class definition.
Abstract event base class definition.
Abstract instrument direction base class definition.
Time class interface definition.
GChatter
Definition GTypemaps.hpp:33
@ NORMAL
Definition GTypemaps.hpp:36
Class that handles energies in a unit independent way.
Definition GEnergy.hpp:48
Abstract interface for the event atom class.
GEventAtom(void)
Void constructor.
virtual const GTime & time(void) const =0
virtual std::string classname(void) const =0
Return class name.
virtual const GEnergy & energy(void) const =0
virtual void clear(void)=0
Clear object.
virtual GEvent * clone(void) const =0
Clones object.
virtual GEventAtom & operator=(const GEventAtom &atom)
Assignment operator.
bool is_bin(void) const
Signal if event is a bin.
virtual ~GEventAtom(void)
Destructor.
bool is_atom(void) const
Signal if event is an atom.
void copy_members(const GEventAtom &atom)
Copy class members.
virtual double counts(void) const
Return number of counts in event atom.
virtual double size(void) const
Return size of an event atom.
virtual std::string print(const GChatter &chatter=NORMAL) const =0
Print content of object.
virtual double error(void) const
Return error in number of counts in event atom.
virtual const GInstDir & dir(void) const =0
void init_members(void)
Initialise class members.
void free_members(void)
Delete class members.
Abstract interface for the event classes.
Definition GEvent.hpp:71
Abstract event container class.
Definition GEvents.hpp:66
Abstract instrument direction base class.
Definition GInstDir.hpp:51
Time class.
Definition GTime.hpp:55