LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
AuxDetSimChannel.h
Go to the documentation of this file.
1 
10 #ifndef SIM_AUXDETSIMCHANNEL_H
11 #define SIM_AUXDETSIMCHANNEL_H
12 
13 // C/C++ standard libraries
14 #include <stdint.h> // C header (need to be compatible with Reflex)
15 #include <utility>
16 #include <vector>
17 
18 namespace sim {
19 
27  class AuxDetIDE {
28 
29  public:
30  AuxDetIDE();
31 
32  //constructor for IDEs applying G4 offset...
33  AuxDetIDE(AuxDetIDE const&, int);
34 
35  int trackID;
37  float entryX;
38  float entryY;
39  float entryZ;
40  float entryT;
41  float exitX;
42  float exitY;
43  float exitZ;
44  float exitT;
45  float exitMomentumX;
46  float exitMomentumY;
47  float exitMomentumZ;
48 
49  bool operator<(const AuxDetIDE& other) const;
50  bool operator==(const AuxDetIDE& other) const;
51 
52  }; // class AuxDetIDE
53 
61 
62  public:
65 
66  private:
67  uint32_t fAuxDetID;
68  uint32_t fAuxDetSensitiveID;
69  std::vector<sim::AuxDetIDE> fAuxDetIDEs;
70 
71  public:
72  AuxDetSimChannel(uint32_t inputAuxDetID, uint32_t inputAuxDetSensitiveID);
73 
75  AuxDetSimChannel(uint32_t inputAuxDetID,
76  const std::vector<sim::AuxDetIDE>& inputAuxDetIDEs,
77  uint32_t inputAuxDetSensitiveID = 0);
78 
80  AuxDetSimChannel(uint32_t inputAuxDetID,
81  std::vector<sim::AuxDetIDE>&& inputAuxDetIDEs,
82  uint32_t inputAuxDetSensitiveID = 0);
83 
84  std::pair<int, int> MergeAuxDetSimChannel(const AuxDetSimChannel&, int);
85 
88  uint32_t AuxDetID() const;
89  uint32_t AuxDetSensitiveID() const;
90 
91  bool operator<(const AuxDetSimChannel& other) const;
92  bool operator==(const AuxDetSimChannel& other) const;
93 
94  std::vector<sim::AuxDetIDE> const& AuxDetIDEs() const;
96 
97  //typedef std::vector<AuxDetSimChannel> AuxDetSimChannelCollection;
98 
99  }; // class AuxDetSimChannel
100  typedef std::vector<AuxDetSimChannel> AuxDetSimChannelCollection;
101 } // namespace sim
102 
103 inline bool sim::AuxDetIDE::operator<(const AuxDetIDE& other) const
104 {
105  return trackID < other.trackID;
106 }
107 inline bool sim::AuxDetIDE::operator==(const AuxDetIDE& other) const
108 {
109  return other.trackID == trackID;
110 }
111 inline uint32_t sim::AuxDetSimChannel::AuxDetID() const
112 {
113  return fAuxDetID;
114 }
116 {
117  return fAuxDetSensitiveID;
118 }
119 inline std::vector<sim::AuxDetIDE> const& sim::AuxDetSimChannel::AuxDetIDEs() const
120 {
121  return fAuxDetIDEs;
122 }
123 
124 #endif // SIM_AUXDETSIMCHANNEL_H
125 
uint32_t fAuxDetSensitiveID
integer used to retrieve AuxDetSensitiveGeo object
std::vector< sim::AuxDetIDE > fAuxDetIDEs
one sim::AuxDetIDE for each G4 track id
int trackID
Geant4 supplied track ID.
float exitMomentumZ
Exit Z-Momentum of particle.
bool operator<(const AuxDetIDE &other) const
float exitY
Exit position Y of particle.
Collection of particles crossing one auxiliary detector cell.
uint32_t AuxDetID() const
float entryT
Entry time of particle.
uint32_t fAuxDetID
geo->AuxDet(auxDetID), integer used to retrieve AuxDetGeo objec
float exitMomentumX
Exit X-Momentum of particle.
float exitT
Exit time of particle.
std::vector< sim::AuxDetIDE > const & AuxDetIDEs() const
float exitZ
Exit position Z of particle.
Monte Carlo Simulation.
float entryZ
Entry position Z of particle.
float exitX
Exit position X of particle.
float energyDeposited
total energy deposited for this track ID and time
float entryX
Entry position X of particle.
float entryY
Entry position Y of particle.
uint32_t AuxDetSensitiveID() const
MC truth information to make RawDigits and do back tracking.
std::vector< AuxDetSimChannel > AuxDetSimChannelCollection
float exitMomentumY
Exit Y-Momentum of particle.
bool operator==(const AuxDetIDE &other) const