HYDRA_development_version
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
hgeantrpc.h
Go to the documentation of this file.
1 ///////////////////////////////////////////////////////////////////////////
2 // HGeantRpc
3 // GEANT RPC hit data
4 ///////////////////////////////////////////////////////////////////////////
5 
6 #ifndef HGEANTRPC_H
7 #define HGEANTRPC_H
8 
9 #include "hlinkeddataobject.h"
10 
11 class HGeantRpc : public HLinkedDataObject
12 {
13 private:
14 
15  Int_t trackNumber; // GEANT track number
16  Float_t trackLength; // track length at the RPC gap/cell. [mm]
17  Float_t loctrackLength; // local track length (inside the gap/cell). [mm]
18  Float_t eHit; // energy deposited in the RPC gap/cell. [MeV]
19  Float_t xHit; // x at the RPC gap/cell, in module ref. system (EBOX). [mm]
20  Float_t yHit; // y at the RPC gap/cell, in module ref. system (EBOX). [mm]
21  Float_t zHit; // z at the RPC gap/cell, in module ref. system (EBOX). [mm]
22  Float_t tofHit; // time of flight at the RPC gap/cell. [ns]
23  Float_t momHit; // momentum at the RPC gap/cell. [MeV/c]
24  Float_t thetaHit; // polar angle at the RPC gap/cell, in module ref. system (EBOX). [deg]
25  Float_t phiHit; // azimuthal angle at the RPC gap/cell, in module ref. system (EBOX). [deg]
26  Short_t detectorID; // detector ID (codified sector/column/cell/gap info)
27  // New elements after Jan 2013.
28  Float_t loctrackLength1; // local track length (inside the gap). [mm]
29  Float_t eHit1; // energy deposited in the RPC gap. [MeV]
30  Float_t xHit1; // x at the RPC gap, in module ref. system (EBOX). [mm]
31  Float_t yHit1; // y at the RPC gap, in module ref. system (EBOX). [mm]
32  Float_t momHit1; // momentum at the RPC gap. [MeV/c]
33  Float_t loctrackLength2; // local track length (inside the gap). [mm]
34  Float_t eHit2; // energy deposited in the RPC gap. [MeV]
35  Float_t xHit2; // x at the RPC gap, in module ref. system (EBOX). [mm]
36  Float_t yHit2; // y at the RPC gap, in module ref. system (EBOX). [mm]
37  Float_t momHit2; // momentum at the RPC gap. [MeV/c]
38  Float_t loctrackLength3; // local track length (inside the gap). [mm]
39  Float_t eHit3; // energy deposited in the RPC gap. [MeV]
40  Float_t xHit3; // x at the RPC gap, in module ref. system (EBOX). [mm]
41  Float_t yHit3; // y at the RPC gap, in module ref. system (EBOX). [mm]
42  Float_t momHit3; // momentum at the RPC gap. [MeV/c]
43  Short_t HGeantRpc_version; //! HGeantRpc class version when reading from file.
44 
45 public:
46  HGeantRpc(void);
47 // HGeantRpc(HGeantRpc &aRpc);
48  ~HGeantRpc(void);
49 
50 
51  // Functions setVariable
52  inline void setTrack(Int_t atrackNumber) {trackNumber = atrackNumber;}
53  inline void setDetectorID(Short_t adetectorID) {detectorID = adetectorID;}
54  inline void setAddress(Int_t sec, Int_t col, Int_t cel, Int_t gap);
55  inline void setVersion(Int_t aHGeantRpc_version) {HGeantRpc_version = aHGeantRpc_version;}
56  void setIncidence(Float_t athetaHit, Float_t aphiHit);
57  //
58  // OLD set functions for backward compatibility.
59  //
60  void setHit(Float_t axHit, Float_t ayHit, Float_t azHit, Float_t atofHit,
61  Float_t amomHit, Float_t eHit);
62  void setTLength(Float_t atracklength, Float_t aloctracklength);
63  //
64  // NEW HIT set functions.
65  //
66  void setHit(Float_t axHit, Float_t ayHit, Float_t azHit, Float_t atofHit,
67  Float_t amomHit, Float_t eHit, Float_t aloctracklength);
68  //
69  void setGap(Int_t nGap, Float_t axHit, Float_t ayHit, Float_t amomHit,
70  Float_t eHit, Float_t aloctrackLength);
71  inline void setTLengthHit(Float_t atrackLength) {trackLength = atrackLength;};
72  inline void setZHit(Float_t azHit) {zHit = azHit;};
73  inline void setTofHit(Float_t atofHit) {tofHit = atofHit;};
74 
75 
76  // Functions getVariable
77  inline Int_t getSector(void) const;
78  inline Int_t getColumn(void) const;
79  inline Int_t getCell(void) const;
80  inline Int_t getGap(void) const;
81 
82  inline Int_t getTrack(void) {return trackNumber;};
83  inline Int_t getDetectorID(void) {return detectorID;};
84  inline Int_t getNLocationIndex(void) {return 4;};
85  inline Int_t getLocationIndex(Int_t i);
86  inline Int_t getVersion(void) {return HGeantRpc_version;};
87  //
88  // OLD get functions for backward compatibility.
89  //
90  void getIncidence(Float_t& athetaHit, Float_t& aphiHit);
91  void getTLength(Float_t& atracklength, Float_t& aloctracklength);
92  void getHit(Float_t& axHit, Float_t& ayHit, Float_t& azHit,
93  Float_t& atofHit, Float_t& amomHit, Float_t& aeHit);
94  //
95  // NEW GAP get functions.
96  //
97  // Various options are available to avoid retrieving unnecessary information.
98  Float_t getlocTLengthGap(Int_t nGap);
99  void getGap(Int_t nGap, Float_t& axHit, Float_t& ayHit, Float_t& amomHit,
100  Float_t& aeHit, Float_t& aloctrackLength);
101  void getGap(Int_t nGap, Float_t& axHit, Float_t& ayHit, Float_t& amomHit,
102  Float_t& aeHit);
103  void getGap(Int_t nGap, Float_t& axHit, Float_t& ayHit, Float_t& amomHit);
104  //
105  // NEW HIT get functions.
106  //
107  inline Float_t getTLengthHit(void) {return trackLength;};
108  inline Float_t getZHit(void) {return zHit;};
109  inline Float_t getTofHit(void) {return tofHit;};
110  // Various options are available to avoid retrieving unnecessary information.
111  void getHit(Float_t& axHit, Float_t& ayHit, Float_t& azHit, Float_t& atofHit,
112  Float_t& amomHit, Float_t& aeHit, Float_t& aloctrackLength);
113  void getHit(Float_t& axHit, Float_t& ayHit, Float_t& azHit, Float_t& atofHit,
114  Float_t& amomHit);
115  void getHit(Float_t& axHit, Float_t& ayHit, Float_t& azHit, Float_t& atofHit);
116  // Optimized for digitizer.
117  void getHitDigi(Float_t& axHit, Float_t& atofHit, Float_t& amomHit,
118  Float_t& aloctrackLength);
119  //
120  // NEW CELL get functions.
121  //
122  // Various options are available to avoid retrieving unnecessary information.
123  void getCellAverage(Float_t gap, Float_t& axHit, Float_t& ayHit, Float_t& azHit,
124  Float_t& atofHit, Float_t& amomHit, Float_t& aeHit,
125  Float_t& aloctrackLength);
126  void getCellAverage(Float_t& axHit, Float_t& ayHit, Float_t& azHit,
127  Float_t& atofHit, Float_t& amomHit, Float_t& aeHit);
128  void getCellAverage(Float_t& axHit, Float_t& ayHit, Float_t& azHit,
129  Float_t& atofHit, Float_t& amomHit);
130  void getCellAverage(Float_t& axHit, Float_t& ayHit, Float_t& azHit,
131  Float_t& atofHit);
132  // Optimized for digitizer.
133  void getCellAverageDigi(Float_t gap, Float_t& axHit, Float_t& atofHit,
134  Float_t& amomHit, Float_t& aloctrackLength);
135  //
136  ClassDef(HGeantRpc,5)
137 };
138 
139 inline Int_t HGeantRpc::getSector(void) const{
140  if (detectorID<0) return -1*(detectorID+1);
141  else return detectorID>>11;
142 }
143 
144 inline Int_t HGeantRpc::getColumn(void) const{
145  if (detectorID<0) return -1;
146  else return ((detectorID>>8) & 7);
147 }
148 
149 inline Int_t HGeantRpc::getCell(void) const{
150  if (detectorID<0) return -1;
151  else return ((detectorID>>2) & 63);
152 }
153 
154 inline Int_t HGeantRpc::getGap(void) const {
155  if (detectorID<0) return -1;
156  else return (detectorID & 3);
157 }
158 
159 inline void HGeantRpc::setAddress(Int_t sec, Int_t col, Int_t cel, Int_t gap) {
160  detectorID = (sec<<11) + (col<<8) + (cel<<2) + gap;
161 }
162 
163 inline Int_t HGeantRpc::getLocationIndex(Int_t i) {
164  switch (i) {
165  case 0 : return getSector();
166  case 1 : return getColumn();
167  case 2 : return getCell();
168  case 3 : return getGap();
169  }
170  return -1;
171 }
172 
173 
174 #endif /*! HGEANTRPC_H */
void getCellAverage(Float_t gap, Float_t &axHit, Float_t &ayHit, Float_t &azHit, Float_t &atofHit, Float_t &amomHit, Float_t &aeHit, Float_t &aloctrackLength)
Definition: hgeantrpc.cc:317
Float_t xHit2
Definition: hgeantrpc.h:35
Float_t loctrackLength
Definition: hgeantrpc.h:17
Float_t zHit
Definition: hgeantrpc.h:21
Short_t detectorID
Definition: hgeantrpc.h:26
Float_t eHit1
Definition: hgeantrpc.h:29
Float_t yHit
Definition: hgeantrpc.h:20
Float_t thetaHit
Definition: hgeantrpc.h:24
Int_t getLocationIndex(Int_t i)
Definition: hgeantrpc.h:163
Short_t HGeantRpc_version
Definition: hgeantrpc.h:43
void setTofHit(Float_t atofHit)
Definition: hgeantrpc.h:73
Int_t getGap(void) const
Definition: hgeantrpc.h:154
Float_t getTLengthHit(void)
Definition: hgeantrpc.h:107
Float_t momHit3
Definition: hgeantrpc.h:42
Float_t eHit3
Definition: hgeantrpc.h:39
Float_t eHit2
Definition: hgeantrpc.h:34
Float_t tofHit
Definition: hgeantrpc.h:22
Int_t getDetectorID(void)
Definition: hgeantrpc.h:83
void getHit(Float_t &axHit, Float_t &ayHit, Float_t &azHit, Float_t &atofHit, Float_t &amomHit, Float_t &aeHit)
Definition: hgeantrpc.cc:144
Float_t xHit3
Definition: hgeantrpc.h:40
void setHit(Float_t axHit, Float_t ayHit, Float_t azHit, Float_t atofHit, Float_t amomHit, Float_t eHit)
Definition: hgeantrpc.cc:133
Float_t momHit
Definition: hgeantrpc.h:23
Int_t getTrack(void)
Definition: hgeantrpc.h:82
Float_t loctrackLength1
Definition: hgeantrpc.h:28
void setZHit(Float_t azHit)
Definition: hgeantrpc.h:72
Float_t momHit1
Definition: hgeantrpc.h:32
Float_t loctrackLength3
Definition: hgeantrpc.h:38
Int_t getVersion(void)
Definition: hgeantrpc.h:86
void getCellAverageDigi(Float_t gap, Float_t &axHit, Float_t &atofHit, Float_t &amomHit, Float_t &aloctrackLength)
Definition: hgeantrpc.cc:510
void setVersion(Int_t aHGeantRpc_version)
Definition: hgeantrpc.h:55
Float_t eHit
Definition: hgeantrpc.h:18
void getHitDigi(Float_t &axHit, Float_t &atofHit, Float_t &amomHit, Float_t &aloctrackLength)
Definition: hgeantrpc.cc:308
Float_t yHit1
Definition: hgeantrpc.h:31
Float_t momHit2
Definition: hgeantrpc.h:37
void setTLengthHit(Float_t atrackLength)
Definition: hgeantrpc.h:71
Float_t getZHit(void)
Definition: hgeantrpc.h:108
HGeantRpc(void)
HGeantRpc class version when reading from file.
Float_t phiHit
Definition: hgeantrpc.h:25
~HGeantRpc(void)
Definition: hgeantrpc.cc:93
void setIncidence(Float_t athetaHit, Float_t aphiHit)
Definition: hgeantrpc.cc:96
Int_t getSector(void) const
Definition: hgeantrpc.h:139
Float_t xHit
Definition: hgeantrpc.h:19
void setDetectorID(Short_t adetectorID)
Definition: hgeantrpc.h:53
Float_t loctrackLength2
Definition: hgeantrpc.h:33
void getTLength(Float_t &atracklength, Float_t &aloctracklength)
Definition: hgeantrpc.cc:114
void getIncidence(Float_t &athetaHit, Float_t &aphiHit)
Definition: hgeantrpc.cc:102
Int_t getCell(void) const
Definition: hgeantrpc.h:149
Float_t yHit2
Definition: hgeantrpc.h:36
Float_t getlocTLengthGap(Int_t nGap)
Definition: hgeantrpc.cc:155
Float_t xHit1
Definition: hgeantrpc.h:30
void setAddress(Int_t sec, Int_t col, Int_t cel, Int_t gap)
Definition: hgeantrpc.h:159
void setTrack(Int_t atrackNumber)
Definition: hgeantrpc.h:52
Int_t trackNumber
Definition: hgeantrpc.h:15
void setTLength(Float_t atracklength, Float_t aloctracklength)
Definition: hgeantrpc.cc:108
void setGap(Int_t nGap, Float_t axHit, Float_t ayHit, Float_t amomHit, Float_t eHit, Float_t aloctrackLength)
Definition: hgeantrpc.cc:169
Int_t getNLocationIndex(void)
Definition: hgeantrpc.h:84
Float_t trackLength
Definition: hgeantrpc.h:16
Float_t getTofHit(void)
Definition: hgeantrpc.h:109
Int_t getColumn(void) const
Definition: hgeantrpc.h:144
Float_t yHit3
Definition: hgeantrpc.h:41