GammaLib 2.0.0
Loading...
Searching...
No Matches
GCOMEventAtom.hpp
Go to the documentation of this file.
1/***************************************************************************
2 * GCOMEventAtom.hpp - COMPTEL event atom class *
3 * ----------------------------------------------------------------------- *
4 * copyright (C) 2017-2021 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 GCOMEventAtom.hpp
23 * @brief COMPTEL event atom class definition
24 * @author Juergen Knoedlseder
25 */
26
27#ifndef GCOMEVENTATOM_HPP
28#define GCOMEVENTATOM_HPP
29
30/* __ Includes ___________________________________________________________ */
31#include <iostream>
32#include "GEnergy.hpp"
33#include "GTime.hpp"
34#include "GEventAtom.hpp"
35#include "GCOMInstDir.hpp"
36
37/* __ Forward declarations _______________________________________________ */
38
39
40/***********************************************************************//**
41 * @class GCOMEventAtom
42 *
43 * @brief COMPTEL event atom class
44 ***************************************************************************/
45class GCOMEventAtom : public GEventAtom {
46
47public:
48 // Constructors and destructors
49 GCOMEventAtom(void);
50 GCOMEventAtom(const GCOMEventAtom& atom);
51 virtual ~GCOMEventAtom(void);
52
53 // Operators
55
56 // Implemented pure virtual base class methods
57 void clear(void);
58 GCOMEventAtom* clone(void) const;
59 std::string classname(void) const;
60 const GCOMInstDir& dir(void) const;
61 const GEnergy& energy(void) const;
62 const GTime& time(void) const;
63 std::string print(const GChatter& chatter = NORMAL) const;
64
65 // Other methods
66 void dir(const GCOMInstDir& dir);
67 void energy(const GEnergy& energy);
68 void time(const GTime& time);
69 void time(const int& tjd, const int& tics);
70 void phibar(const float& phibar);
71 const float& phibar(void) const;
72 void phi(const float& phi);
73 const float& phi(void) const;
74 void theta(const float& theta);
75 const float& theta(void) const;
76 void eha(const float& eha);
77 const float& eha(void) const;
78 void e1(const float& e1);
79 const float& e1(void) const;
80 void e2(const float& e2);
81 const float& e2(void) const;
82 void psd(const float& psd);
83 const float& psd(void) const;
84 void tof(const float& tof);
85 const float& tof(void) const;
86 void x_d2(const float& x_d2);
87 const float& x_d2(void) const;
88 void y_d2(const float& y_d2);
89 const float& y_d2(void) const;
90 void modcom(const int& modcom);
91 const int& modcom(void) const;
92 void reflag(const int& reflag);
93 const int& reflag(void) const;
94 void veto(const int& veto);
95 const int& veto(void) const;
96
97protected:
98 // Protected methods
99 void init_members(void);
100 void copy_members(const GCOMEventAtom& atom);
101 void free_members(void);
102
103 // Protected members
104 GCOMInstDir m_dir; //!< Event direction
105 GEnergy m_energy; //!< Event energy
106 GTime m_time; //!< Event time
107 float m_e1; //!< D1 energy deposit (MeV)
108 float m_e2; //!< D2 energy deposit (MeV)
109 float m_phibar; //!< Compton scatter angle (deg)
110 float m_theta; //!< Zenith angle of scatter direction (deg)
111 float m_phi; //!< Azimuth angle of scatter direction (deg)
112 float m_eha; //!< Earth horizon angle (deg)
113 float m_psd; //!< PSD value (channel)
114 float m_tof; //!< Time of flight value (channel)
115 float m_x_d2; //!< D2 model X position (mm)
116 float m_y_d2; //!< D2 model X position (mm)
117 int m_modcom; //!< Mini telescope number
118 int m_reflag; //!< Rejection flag
119 int m_veto; //!< Veto flag
120};
121
122
123/***********************************************************************//**
124 * @brief Return class name
125 *
126 * @return String containing the class name ("GCOMEventAtom").
127 ***************************************************************************/
128inline
129std::string GCOMEventAtom::classname(void) const
130{
131 return ("GCOMEventAtom");
132}
133
134
135/***********************************************************************//**
136 * @brief Return event instrument direction
137 *
138 * @return Event instrument direction.
139 *
140 * Returns the direction of the event.
141 ***************************************************************************/
142inline
144{
145 return m_dir;
146}
147
148
149/***********************************************************************//**
150 * @brief Set event instrument direction
151 *
152 * @param[in] dir Event instrument direction.
153 *
154 * Sets the event instrument direction.
155 ***************************************************************************/
156inline
158{
159 m_dir = dir;
160 return;
161}
162
163
164/***********************************************************************//**
165 * @brief Return event energy
166 *
167 * @return Event energy.
168 *
169 * Returns the reconstructed energy of the photon on the sky.
170 ***************************************************************************/
171inline
173{
174 return m_energy;
175}
176
177
178/***********************************************************************//**
179 * @brief Set event energy
180 *
181 * @param[in] energy Event energy.
182 *
183 * Sets the event energy.
184 ***************************************************************************/
185inline
187{
189 return;
190}
191
192
193/***********************************************************************//**
194 * @brief Return event time
195 *
196 * @return Event time.
197 *
198 * Returns the event triggering time.
199 ***************************************************************************/
200inline
201const GTime& GCOMEventAtom::time(void) const
202{
203 return m_time;
204}
205
206
207/***********************************************************************//**
208 * @brief Set event time
209 *
210 * @param[in] time Event time.
211 *
212 * Sets the event time.
213 ***************************************************************************/
214inline
215void GCOMEventAtom::time(const GTime& time)
216{
217 m_time = time;
218 return;
219}
220
221
222/***********************************************************************//**
223 * @brief Set Compton scatter angle
224 *
225 * @param[in] phibar Compton scatter angle (deg).
226 *
227 * Sets Compton scatter angle.
228 ***************************************************************************/
229inline
230void GCOMEventAtom::phibar(const float& phibar)
231{
233 return;
234}
235
236
237/***********************************************************************//**
238 * @brief Return Compton scatter angle
239 *
240 * @return Compton scatter angle (deg).
241 *
242 * Returns Compton scatter angle.
243 ***************************************************************************/
244inline
245const float& GCOMEventAtom::phibar(void) const
246{
247 return m_phibar;
248}
249
250
251/***********************************************************************//**
252 * @brief Set scatter azimuth angle
253 *
254 * @param[in] phi Scatter azimuth angle (deg).
255 *
256 * Sets scatter azimuth angle.
257 ***************************************************************************/
258inline
259void GCOMEventAtom::phi(const float& phi)
260{
261 m_phi = phi;
262 return;
263}
264
265
266/***********************************************************************//**
267 * @brief Return scatter azimuth angle
268 *
269 * @return Scatter azimuth angle (deg).
270 *
271 * Returns scatter azimuth angle.
272 ***************************************************************************/
273inline
274const float& GCOMEventAtom::phi(void) const
275{
276 return m_phi;
277}
278
279
280/***********************************************************************//**
281 * @brief Set scatter zenith angle
282 *
283 * @param[in] theta Scatter zenith angle (deg).
284 *
285 * Sets scatter zenith angle.
286 ***************************************************************************/
287inline
288void GCOMEventAtom::theta(const float& theta)
289{
290 m_theta = theta;
291 return;
292}
293
294
295/***********************************************************************//**
296 * @brief Return scatter zenith angle
297 *
298 * @return Scatter zenith angle (deg).
299 *
300 * Returns scatter zenith angle.
301 ***************************************************************************/
302inline
303const float& GCOMEventAtom::theta(void) const
304{
305 return m_theta;
306}
307
308
309/***********************************************************************//**
310 * @brief Set Earth horizon angle
311 *
312 * @param[in] eha Earth horizon angle (deg).
313 *
314 * Sets Earth horizon angle.
315 ***************************************************************************/
316inline
317void GCOMEventAtom::eha(const float& eha)
318{
319 m_eha = eha;
320 return;
321}
322
323
324/***********************************************************************//**
325 * @brief Return Earth horizon angle
326 *
327 * @return Earth horizon angle (deg).
328 *
329 * Returns Earth horizon angle.
330 ***************************************************************************/
331inline
332const float& GCOMEventAtom::eha(void) const
333{
334 return m_eha;
335}
336
337
338/***********************************************************************//**
339 * @brief Set D1 module energy deposit
340 *
341 * @param[in] e1 D1 module energy deposit (MeV).
342 *
343 * Sets D1 module energy deposit.
344 ***************************************************************************/
345inline
346void GCOMEventAtom::e1(const float& e1)
347{
348 m_e1 = e1;
349 return;
350}
351
352
353/***********************************************************************//**
354 * @brief Return D1 module energy deposit
355 *
356 * @return D1 module energy deposit (MeV).
357 *
358 * Returns D1 module energy deposit.
359 ***************************************************************************/
360inline
361const float& GCOMEventAtom::e1(void) const
362{
363 return m_e1;
364}
365
366
367/***********************************************************************//**
368 * @brief Set D2 module energy deposit
369 *
370 * @param[in] e2 D2 module energy deposit (MeV).
371 *
372 * Sets D2 module energy deposit.
373 ***************************************************************************/
374inline
375void GCOMEventAtom::e2(const float& e2)
376{
377 m_e2 = e2;
378 return;
379}
380
381
382/***********************************************************************//**
383 * @brief Return D2 module energy deposit
384 *
385 * @return D2 module energy deposit (MeV).
386 *
387 * Returns D2 module energy deposit.
388 ***************************************************************************/
389inline
390const float& GCOMEventAtom::e2(void) const
391{
392 return m_e2;
393}
394
395
396/***********************************************************************//**
397 * @brief Set PSD value
398 *
399 * @param[in] psd PSD value (channel).
400 *
401 * Sets PSD value.
402 ***************************************************************************/
403inline
404void GCOMEventAtom::psd(const float& psd)
405{
406 m_psd = psd;
407 return;
408}
409
410/***********************************************************************//**
411 * @brief Return PSD value
412 *
413 * @return PSD value (channel).
414 *
415 * Returns the Pulse Shape Discriminator (PSD) channel value of the event.
416 * The PSD value is used for the distinction between gammas and neutrons.
417 ***************************************************************************/
418inline
419const float& GCOMEventAtom::psd(void) const
420{
421 return m_psd;
422}
423
424/***********************************************************************//**
425 * @brief Set TOF value
426 *
427 * @param[in] tof TOF value (channel).
428 *
429 * Sets TOF value.
430 ***************************************************************************/
431inline
432void GCOMEventAtom::tof(const float& tof)
433{
434 m_tof = tof;
435 return;
436}
437
438
439/***********************************************************************//**
440 * @brief Return TOF value
441 *
442 * @return TOF value (channel).
443 *
444 * Returns the Time Of Flight (TOF) channel value of the event. The TOF
445 * value is used for the distinction between forward and backward scattering
446 * events.
447 ***************************************************************************/
448inline
449const float& GCOMEventAtom::tof(void) const
450{
451 return m_tof;
452}
453
454
455/***********************************************************************//**
456 * @brief Set D2 module X value
457 *
458 * @param[in] x_d2 D2 module X value (mm).
459 *
460 * Sets D2 module X value.
461 ***************************************************************************/
462inline
463void GCOMEventAtom::x_d2(const float& x_d2)
464{
465 m_x_d2 = x_d2;
466 return;
467}
468
469
470/***********************************************************************//**
471 * @brief Return D2 module X value
472 *
473 * @return D2 module X value (mm).
474 *
475 * Returns the D2 module X value of the event.
476 ***************************************************************************/
477inline
478const float& GCOMEventAtom::x_d2(void) const
479{
480 return m_x_d2;
481}
482
483
484/***********************************************************************//**
485 * @brief Set D2 module Y value
486 *
487 * @param[in] y_d2 D2 module Y value (mm).
488 *
489 * Sets D2 module Y value.
490 ***************************************************************************/
491inline
492void GCOMEventAtom::y_d2(const float& y_d2)
493{
494 m_y_d2 = y_d2;
495 return;
496}
497
498
499/***********************************************************************//**
500 * @brief Return D2 module Y value
501 *
502 * @return D2 module Y value (mm).
503 *
504 * Returns the D2 module Y value of the event.
505 ***************************************************************************/
506inline
507const float& GCOMEventAtom::y_d2(void) const
508{
509 return m_y_d2;
510}
511
512
513/***********************************************************************//**
514 * @brief Set mini telescope
515 *
516 * @param[in] modcom Mini telescope.
517 *
518 * Sets the mini telescope of the event.
519 ***************************************************************************/
520inline
521void GCOMEventAtom::modcom(const int& modcom)
522{
524 return;
525}
526
527
528/***********************************************************************//**
529 * @brief Return mini telescope
530 *
531 * @return Mini telescope.
532 *
533 * Returns the mini telescope of the event.
534 ***************************************************************************/
535inline
536const int& GCOMEventAtom::modcom(void) const
537{
538 return m_modcom;
539}
540
541
542/***********************************************************************//**
543 * @brief Set rejection flag
544 *
545 * @param[in] reflag Rejection flag.
546 *
547 * Sets the rejection flag of the event.
548 ***************************************************************************/
549inline
550void GCOMEventAtom::reflag(const int& reflag)
551{
553 return;
554}
555
556
557/***********************************************************************//**
558 * @brief Return rejection flag
559 *
560 * @return Rejection flag.
561 *
562 * Returns the rejection flag of the event.
563 ***************************************************************************/
564inline
565const int& GCOMEventAtom::reflag(void) const
566{
567 return m_reflag;
568}
569
570
571/***********************************************************************//**
572 * @brief Set veto flag
573 *
574 * @param[in] veto Veto flag.
575 *
576 * Sets the veto flag of the event.
577 ***************************************************************************/
578inline
579void GCOMEventAtom::veto(const int& veto)
580{
581 m_veto = veto;
582 return;
583}
584
585
586/***********************************************************************//**
587 * @brief Return veto flag
588 *
589 * @return Veto flag.
590 *
591 * Returns the veto flag of the event.
592 ***************************************************************************/
593inline
594const int& GCOMEventAtom::veto(void) const
595{
596 return m_veto;
597}
598
599#endif /* GCOMEVENTATOM_HPP */
COMPTEL instrument direction class definition.
Energy value class definition.
Abstract event atom base class definition.
Time class interface definition.
GChatter
Definition GTypemaps.hpp:33
@ NORMAL
Definition GTypemaps.hpp:36
COMPTEL event atom class.
virtual ~GCOMEventAtom(void)
Destructor.
GEnergy m_energy
Event energy.
std::string print(const GChatter &chatter=NORMAL) const
Print event information.
GCOMEventAtom(void)
Void constructor.
const GCOMInstDir & dir(void) const
Return event instrument direction.
float m_psd
PSD value (channel)
float m_eha
Earth horizon angle (deg)
const float & tof(void) const
Return TOF value.
void copy_members(const GCOMEventAtom &atom)
Copy class members.
int m_reflag
Rejection flag.
std::string classname(void) const
Return class name.
const float & y_d2(void) const
Return D2 module Y value.
GCOMEventAtom * clone(void) const
Clone event atom.
const int & reflag(void) const
Return rejection flag.
float m_phibar
Compton scatter angle (deg)
const GEnergy & energy(void) const
Return event energy.
float m_e1
D1 energy deposit (MeV)
const float & e2(void) const
Return D2 module energy deposit.
const int & veto(void) const
Return veto flag.
const float & phi(void) const
Return scatter azimuth angle.
const float & x_d2(void) const
Return D2 module X value.
const float & psd(void) const
Return PSD value.
int m_veto
Veto flag.
GCOMInstDir m_dir
Event direction.
const float & e1(void) const
Return D1 module energy deposit.
float m_phi
Azimuth angle of scatter direction (deg)
const float & eha(void) const
Return Earth horizon angle.
float m_tof
Time of flight value (channel)
void init_members(void)
Initialise class members.
const float & theta(void) const
Return scatter zenith angle.
float m_x_d2
D2 model X position (mm)
int m_modcom
Mini telescope number.
const int & modcom(void) const
Return mini telescope.
float m_y_d2
D2 model X position (mm)
const GTime & time(void) const
Return event time.
float m_e2
D2 energy deposit (MeV)
float m_theta
Zenith angle of scatter direction (deg)
void free_members(void)
Delete class members.
void clear(void)
Clear event atom.
GTime m_time
Event time.
const float & phibar(void) const
Return Compton scatter angle.
GCOMEventAtom & operator=(const GCOMEventAtom &atom)
Assignment operator.
Interface for the COMPTEL instrument direction class.
Class that handles energies in a unit independent way.
Definition GEnergy.hpp:48
Abstract interface for the event atom class.
Time class.
Definition GTime.hpp:55