ATLAS Offline Software
LUCID_SimHit.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef LUCID_SIMHIT_H
6 #define LUCID_SIMHIT_H 1
7 
10 #include "CLHEP/Vector/ThreeVector.h"
11 #include <string>
12 #include "CLHEP/Random/RandFlat.h"
13 
14 // LUCID_SimHit hold all information needed by the digitization algorithms
15 // to construct raw data objects.
16 
17 class LUCID_SimHit {
18 
19  public:
20 
21  LUCID_SimHit();
22  LUCID_SimHit(const LUCID_SimHit&);
23  LUCID_SimHit(short tubeID,
24  int pdgCode,
25  int truthBarcode,
26  int genVolume,
27  float stepStartPosX,
28  float stepStartPosY,
29  float stepStartPosZ,
30  float stepEndPosX,
31  float stepEndPosY,
32  float stepEndPosZ,
33  float preStepTime,
34  float postStepTime,
35  float wavelength,
36  float energy);
37  LUCID_SimHit(short tubeID,
38  int pdgCode,
39  const HepMcParticleLink& partLink,
40  int genVolume,
41  float stepStartPosX,
42  float stepStartPosY,
43  float stepStartPosZ,
44  float stepEndPosX,
45  float stepEndPosY,
46  float stepEndPosZ,
47  float preStepTime,
48  float postStepTime,
49  float wavelength,
50  float energy);
51 
52  std::string print() const;
53 
54  const LUCID_SimHit& operator=(const LUCID_SimHit& t);
55 
56  int operator == (const LUCID_SimHit&) const;
57  bool operator < (const LUCID_SimHit&) const;
58 
59  const HepMcParticleLink& particleLink() const;
60 
61  inline float GetX() const { return m_stepStartPosX; }
62  inline float GetY() const { return m_stepStartPosY; }
63  inline float GetZ() const { return m_stepStartPosZ; }
64 
65  inline float GetEPX() const { return m_stepEndPosX; }
66  inline float GetEPY() const { return m_stepEndPosY; }
67  inline float GetEPZ() const { return m_stepEndPosZ; }
68 
69  inline short GetTubeID () const { return m_tubeID; }
70  inline int truthBarcode () const { return m_partLink.barcode(); }
71  inline int truthID () const { return m_partLink.id(); }
72  inline int GetPdgCode () const { return m_pdgCode; }
73  inline int GetGenVolume () const { return m_genVolume; }
74  inline float GetPreStepTime () const { return m_preStepTime; }
75  inline float GetPostStepTime() const { return m_postStepTime; }
76  inline float GetWavelength () const { return m_wavelength; }
77  inline float GetEnergy () const { return m_energy; }
78 
79  bool isDetected(CLHEP::HepRandomEngine* rndEngine) const;
80 
81  private:
82 
83  short m_tubeID{};
84  int m_pdgCode{};
85  HepMcParticleLink m_partLink; // link to the particle generating the hit
86  int m_genVolume{};
87  float m_stepStartPosX{};
88  float m_stepStartPosY{};
89  float m_stepStartPosZ{};
90  float m_stepEndPosX{};
91  float m_stepEndPosY{};
92  float m_stepEndPosZ{};
93  float m_preStepTime{};
94  float m_postStepTime{};
95  float m_wavelength{};
96  float m_energy{};
97 };
98 
99 inline const HepMcParticleLink& LUCID_SimHit::particleLink() const { return m_partLink; }
100 
101 #endif
LUCID_SimHit::m_stepEndPosX
float m_stepEndPosX
Definition: LUCID_SimHit.h:90
LUCID_SimHit::GetPdgCode
int GetPdgCode() const
Definition: LUCID_SimHit.h:72
LUCID_SimHit::m_stepEndPosY
float m_stepEndPosY
Definition: LUCID_SimHit.h:91
LUCID_SimHit::m_pdgCode
int m_pdgCode
Definition: LUCID_SimHit.h:84
LUCID_SimHit::operator==
int operator==(const LUCID_SimHit &) const
Definition: LUCID_SimHit.cxx:135
LUCID_SimHit::GetZ
float GetZ() const
Definition: LUCID_SimHit.h:63
LUCID_SimHit::m_partLink
HepMcParticleLink m_partLink
Definition: LUCID_SimHit.h:85
LUCID_SimHit::GetEPY
float GetEPY() const
Definition: LUCID_SimHit.h:66
LUCID_SimHit::operator<
bool operator<(const LUCID_SimHit &) const
Definition: LUCID_SimHit.cxx:137
LUCID_SimHit::GetPostStepTime
float GetPostStepTime() const
Definition: LUCID_SimHit.h:75
LUCID_SimHit::m_stepStartPosZ
float m_stepStartPosZ
Definition: LUCID_SimHit.h:89
LUCID_SimHit::m_genVolume
int m_genVolume
Definition: LUCID_SimHit.h:86
LUCID_SimHit::m_preStepTime
float m_preStepTime
Definition: LUCID_SimHit.h:93
LUCID_SimHit::truthID
int truthID() const
Definition: LUCID_SimHit.h:71
LUCID_SimHit::print
std::string print() const
Definition: LUCID_SimHit.cxx:88
LUCID_SimHit::GetEPZ
float GetEPZ() const
Definition: LUCID_SimHit.h:67
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
LUCID_SimHit::GetPreStepTime
float GetPreStepTime() const
Definition: LUCID_SimHit.h:74
Identifiable.h
LUCID_SimHit::GetEnergy
float GetEnergy() const
Definition: LUCID_SimHit.h:77
LUCID_SimHit::GetWavelength
float GetWavelength() const
Definition: LUCID_SimHit.h:76
LUCID_SimHit::m_stepStartPosY
float m_stepStartPosY
Definition: LUCID_SimHit.h:88
LUCID_SimHit::GetEPX
float GetEPX() const
Definition: LUCID_SimHit.h:65
LUCID_SimHit::GetX
float GetX() const
Definition: LUCID_SimHit.h:61
LUCID_SimHit::GetGenVolume
int GetGenVolume() const
Definition: LUCID_SimHit.h:73
LUCID_SimHit::m_postStepTime
float m_postStepTime
Definition: LUCID_SimHit.h:94
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
LUCID_SimHit::operator=
const LUCID_SimHit & operator=(const LUCID_SimHit &t)
Definition: LUCID_SimHit.cxx:106
LUCID_SimHit::isDetected
bool isDetected(CLHEP::HepRandomEngine *rndEngine) const
Definition: LUCID_SimHit.cxx:126
LUCID_SimHit::LUCID_SimHit
LUCID_SimHit()
Definition: LUCID_SimHit.cxx:9
LUCID_SimHit::GetY
float GetY() const
Definition: LUCID_SimHit.h:62
LUCID_SimHit
Definition: LUCID_SimHit.h:17
LUCID_SimHit::m_stepEndPosZ
float m_stepEndPosZ
Definition: LUCID_SimHit.h:92
LUCID_SimHit::m_energy
float m_energy
Definition: LUCID_SimHit.h:96
LUCID_SimHit::particleLink
const HepMcParticleLink & particleLink() const
Definition: LUCID_SimHit.h:99
LUCID_SimHit::GetTubeID
short GetTubeID() const
Definition: LUCID_SimHit.h:69
LUCID_SimHit::truthBarcode
int truthBarcode() const
Definition: LUCID_SimHit.h:70
LUCID_SimHit::m_stepStartPosX
float m_stepStartPosX
Definition: LUCID_SimHit.h:87
LUCID_SimHit::m_tubeID
short m_tubeID
Definition: LUCID_SimHit.h:83
LUCID_SimHit::m_wavelength
float m_wavelength
Definition: LUCID_SimHit.h:95