ATLAS Offline Software
Loading...
Searching...
No Matches
TRTProcessingOfBarrelHits Class Reference

#include <TRTProcessingOfBarrelHits.h>

Collaboration diagram for TRTProcessingOfBarrelHits:

Public Member Functions

 TRTProcessingOfBarrelHits (TRTSensitiveDetector *)
 ~TRTProcessingOfBarrelHits ()
bool ProcessHit (G4Step *)

Private Member Functions

 TRTProcessingOfBarrelHits (const TRTProcessingOfBarrelHits &)
TRTProcessingOfBarrelHitsoperator= (const TRTProcessingOfBarrelHits &)
void Initialize ()
int GetLayerID1 (const int &, int &) const
int GetLayerID2 (const int &, int &) const
void DeleteArrays ()

Private Attributes

int m_printMessages
int m_barrelIdentifier
int m_testLocalCoordinatesOfHits
int m_numberOfStrawLayersA
int m_numberOfStrawLayersB
int m_numberOfStrawLayersC
int m_numberOfStrawsA
int m_numberOfStrawsB
int m_numberOfStrawsC
int * m_integralDistributionOfStrawsA
int * m_integralDistributionOfStrawsB
int * m_integralDistributionOfStrawsC
int * m_strawIDToLayerIDA
int * m_strawIDToLayerIDB
int * m_strawIDToLayerIDC
const TRTParameters * m_pParameters
TRTSensitiveDetectorm_pSensitiveDetector
int m_verboseLevel

Friends

class TRTParametersForBarrelHits

Detailed Description

Definition at line 15 of file TRTProcessingOfBarrelHits.h.

Constructor & Destructor Documentation

◆ TRTProcessingOfBarrelHits() [1/2]

TRTProcessingOfBarrelHits::TRTProcessingOfBarrelHits ( TRTSensitiveDetector * pSensitiveDet)

Definition at line 31 of file TRTProcessingOfBarrelHits.cxx.

32 :
33 m_printMessages(0), //FIXME obsolete?
45 m_strawIDToLayerIDA(nullptr),
46 m_strawIDToLayerIDB(nullptr),
47 m_strawIDToLayerIDC(nullptr),
48 m_pParameters(nullptr),
49 m_pSensitiveDetector(pSensitiveDet),
50 m_verboseLevel(pSensitiveDet->verboseLevel)
51{
52 m_pParameters = TRTParameters::GetPointer();
53
54 m_printMessages = m_pParameters->GetInteger("PrintMessages"); //FIXME obsolete?
55
56 if (m_verboseLevel>5) { G4cout << "##### Constructor TRTProcessingOfBarrelHits" << G4endl; }
57
58 this->Initialize();
59
60 m_pParameters = nullptr;
61
62 if (m_verboseLevel>5) { G4cout << "##### Constructor TRTProcessingOfBarrelHits done" << G4endl; }
63}
TRTSensitiveDetector * m_pSensitiveDetector

◆ ~TRTProcessingOfBarrelHits()

TRTProcessingOfBarrelHits::~TRTProcessingOfBarrelHits ( )

Definition at line 68 of file TRTProcessingOfBarrelHits.cxx.

69{
70
71 if (m_verboseLevel>5) { G4cout << "##### Destructor TRTProcessingOfBarrelHits" << G4endl; }
72
73 this->DeleteArrays();
74
75 if (m_verboseLevel>5) { G4cout << "##### Destructor TRTProcessingOfBarrelHits done" << G4endl; }
76
77}

◆ TRTProcessingOfBarrelHits() [2/2]

TRTProcessingOfBarrelHits::TRTProcessingOfBarrelHits ( const TRTProcessingOfBarrelHits & )
private

Member Function Documentation

◆ DeleteArrays()

void TRTProcessingOfBarrelHits::DeleteArrays ( )
private

Definition at line 360 of file TRTProcessingOfBarrelHits.cxx.

361{
362
363 if (m_verboseLevel>5) { G4cout << "######### Method TRTProcessingOfBarrelHits::DeleteArrays" << G4endl; }
364
368
369 if (m_barrelIdentifier == 2)
370 {
371 delete [] m_strawIDToLayerIDA;
372 delete [] m_strawIDToLayerIDB;
373 delete [] m_strawIDToLayerIDC;
374 }
375
376 if (m_verboseLevel>5) { G4cout << "######### Method TRTProcessingOfBarrelHits::DeleteArrays done" << G4endl; }
377}

◆ GetLayerID1()

int TRTProcessingOfBarrelHits::GetLayerID1 ( const int & ringID,
int & strawID ) const
private

Definition at line 245 of file TRTProcessingOfBarrelHits.cxx.

247{
248 ++strawID;
249 int layerID = 15;
250
251 if (ringID == 0)
252 {
253 if (strawID <= m_integralDistributionOfStrawsA[layerID])
254 {
255 layerID -= 8;
256 if (strawID > m_integralDistributionOfStrawsA[layerID])
257 layerID += 4;
258 else
259 layerID -= 4;
260 }
261 if (strawID > m_integralDistributionOfStrawsA[layerID])
262 layerID += 2;
263 else
264 layerID -= 2;
265 if (strawID > m_integralDistributionOfStrawsA[layerID])
266 ++layerID;
267 else
268 --layerID;
269 if (strawID > m_integralDistributionOfStrawsA[layerID])
270 ++layerID;
271
272 if (layerID > 0)
273 strawID -= m_integralDistributionOfStrawsA[layerID - 1];
274 }
275 else if (ringID == 1)
276 {
277 if (strawID > m_integralDistributionOfStrawsB[layerID])
278 layerID += 8;
279 else
280 layerID -= 8;
281 if (strawID > m_integralDistributionOfStrawsB[layerID])
282 layerID += 4;
283 else
284 layerID -= 4;
285 if (strawID > m_integralDistributionOfStrawsB[layerID])
286 layerID += 2;
287 else
288 layerID -= 2;
289 if (strawID > m_integralDistributionOfStrawsB[layerID])
290 ++layerID;
291 else
292 --layerID;
293 if (strawID > m_integralDistributionOfStrawsB[layerID])
294 ++layerID;
295
296 if (layerID > 0)
297 strawID -= m_integralDistributionOfStrawsB[layerID - 1];
298 }
299 else
300 {
301 if (strawID > m_integralDistributionOfStrawsC[layerID])
302 layerID += 8;
303 else
304 layerID -= 8;
305 if (strawID > m_integralDistributionOfStrawsC[layerID])
306 layerID += 4;
307 else
308 layerID -= 4;
309 if (strawID > m_integralDistributionOfStrawsC[layerID])
310 layerID += 2;
311 else
312 layerID -= 2;
313 if (strawID > m_integralDistributionOfStrawsC[layerID])
314 ++layerID;
315 else
316 --layerID;
317 if (strawID > m_integralDistributionOfStrawsC[layerID])
318 ++layerID;
319
320 if (layerID > 0)
321 strawID -= m_integralDistributionOfStrawsC[layerID - 1];
322 }
323
324 --strawID;
325 return layerID;
326}

◆ GetLayerID2()

int TRTProcessingOfBarrelHits::GetLayerID2 ( const int & ringID,
int & strawID ) const
private

Definition at line 331 of file TRTProcessingOfBarrelHits.cxx.

333{
334 int layerID;
335 if (ringID == 0)
336 {
337 layerID = m_strawIDToLayerIDA[strawID];
338 if (layerID > 0)
339 strawID -= m_integralDistributionOfStrawsA[layerID - 1];
340 }
341 else if (ringID == 1)
342 {
343 layerID = m_strawIDToLayerIDB[strawID];
344 if (layerID > 0)
345 strawID -= m_integralDistributionOfStrawsB[layerID - 1];
346 }
347 else
348 {
349 layerID = m_strawIDToLayerIDC[strawID];
350 if (layerID > 0)
351 strawID -= m_integralDistributionOfStrawsC[layerID - 1];
352 }
353
354 return layerID;
355}

◆ Initialize()

void TRTProcessingOfBarrelHits::Initialize ( )
private

Definition at line 82 of file TRTProcessingOfBarrelHits.cxx.

83{
84 if (m_verboseLevel>5) { G4cout << "######### Method TRTProcessingOfBarrelHits::Initialize" << G4endl; }
85
86
87 m_barrelIdentifier = m_pParameters->GetInteger("BarrelIdentifier");
89 m_pParameters->GetInteger("TestLocalCoordinatesOfHits");
90
91 if (m_barrelIdentifier == 1)
92 {
93 m_strawIDToLayerIDA = nullptr;
94 m_strawIDToLayerIDB = nullptr;
95 m_strawIDToLayerIDC = nullptr;
96 }
97
98
99 if (m_barrelIdentifier == 2)
100 {
101 m_numberOfStrawsA = m_pParameters->GetInteger("NumberOfStrawsA");
102 m_numberOfStrawsB = m_pParameters->GetInteger("NumberOfStrawsB");
103 m_numberOfStrawsC = m_pParameters->GetInteger("NumberOfStrawsC");
104
108 }
109
110 m_numberOfStrawLayersA = m_pParameters->GetInteger("NumberOfStrawLayersA");
111 m_numberOfStrawLayersB = m_pParameters->GetInteger("NumberOfStrawLayersB");
112 m_numberOfStrawLayersC = m_pParameters->GetInteger("NumberOfStrawLayersC");
113
117
118 if (m_verboseLevel>5) { G4cout << "######### Method TRTProcessingOfBarrelHits::Initialize done" << G4endl; }
119}

◆ operator=()

TRTProcessingOfBarrelHits & TRTProcessingOfBarrelHits::operator= ( const TRTProcessingOfBarrelHits & )
private

◆ ProcessHit()

bool TRTProcessingOfBarrelHits::ProcessHit ( G4Step * pStep)

Definition at line 124 of file TRTProcessingOfBarrelHits.cxx.

125{
126 G4StepPoint* pPreStepPoint = pStep->GetPreStepPoint();
127
128 G4TouchableHandle pTouchableHandle = pPreStepPoint->GetTouchableHandle();
129 int depth = 2;
130
131 int gasID = pTouchableHandle->GetReplicaNumber();
132 int strawID = pTouchableHandle->GetReplicaNumber(depth++);
133 int ringID = pTouchableHandle->GetReplicaNumber(depth++);
134 int moduleID = pTouchableHandle->GetReplicaNumber(depth);
135
136 int hitID = gasID % 2;
137
138 G4Track* pTrack = pStep->GetTrack();
139 // get the HepMC barcode using the track helper
140 TrackHelper trHelp(pTrack);
141
142 G4ThreeVector globalPreStepPoint = pPreStepPoint->GetPosition();
143
144 G4StepPoint* pPostStepPoint = pStep->GetPostStepPoint();
145 G4ThreeVector globalPostStepPoint = pPostStepPoint->GetPosition();
146
147
148 const G4TouchableHistory* pTouchableHistory =
149 static_cast<const G4TouchableHistory*>(pPreStepPoint->GetTouchable());
150
151 const G4AffineTransform& topTransform = pTouchableHistory->GetHistory()->
152 GetTopTransform();
153
154 G4ThreeVector localPreStepPoint = topTransform.TransformPoint(globalPreStepPoint);
155 G4ThreeVector localPostStepPoint = topTransform.TransformPoint(globalPostStepPoint);
156
157 double preStepZ = localPreStepPoint.z();
158 double postStepZ = localPostStepPoint.z();
159
160
161 double preStepX = localPreStepPoint.x();
162 double preStepY = localPreStepPoint.y();
163
164 double postStepX = localPostStepPoint.x();
165 double postStepY = localPostStepPoint.y();
166
168 {
169 double preStepR = std::sqrt(preStepX * preStepX + preStepY * preStepY);
170 double postStepR = std::sqrt(postStepX * postStepX + postStepY * postStepY);
171
172 if (preStepR > 2.0000001 || postStepR > 2.0000001)
173 {
174 G4int particleEncoding = m_pSensitiveDetector->m_particleEncoding;
175 G4double kineticEnergy = m_pSensitiveDetector->m_kineticEnergy;
176 G4double energyDeposit = m_pSensitiveDetector->m_energyDeposit;
177
178 std::cout << "!!!!! Barrel. Error in local coordinates of hits!" << std::endl;
179 std::cout << " barrelID=" << hitID << " ringID=" << ringID
180 << " moduleID=" << moduleID << " strawID=" << strawID
181 << " trackID=" << trHelp.GetUniqueID() << std::endl;
182 std::cout << " particleEncoding=" << particleEncoding;
183
184 if (kineticEnergy < 0.0001)
185 std::cout << " kineticEnergy=" << kineticEnergy * 1000000. << " eV";
186 else if (kineticEnergy < 0.1)
187 std::cout << " kineticEnergy=" << kineticEnergy * 1000. << " keV";
188 else if (kineticEnergy >= 100.)
189 std::cout << " kineticEnergy=" << kineticEnergy / 1000. << " GeV";
190 else if (kineticEnergy >= 100000.)
191 std::cout << " kineticEnergy=" << kineticEnergy / 1000000. << " TeV";
192 else
193 std::cout << " kineticEnergy=" << kineticEnergy << " MeV";
194
195 if (energyDeposit < 0.1)
196 std::cout << " energyDeposit=" << energyDeposit * 1000. << " eV"
197 << std::endl;
198 else if (energyDeposit >= 100.)
199 std::cout << " energyDeposit=" << energyDeposit / 1000. << " MeV"
200 << std::endl;
201 else
202 std::cout << " energyDeposit=" << energyDeposit << " keV" << std::endl;
203
204 std::cout << " preStepX=" << preStepX << " mm preStepY=" << preStepY
205 << " mm preStepR=" << preStepR << " mm" << std::endl;
206 std::cout << " postStepX=" << postStepX << " mm postStepY=" << postStepY
207 << " mm postStepR=" << postStepR << " mm" << std::endl << std::endl;
208 }
209 }
210
211 double preStepGlobalTime = pPreStepPoint->GetGlobalTime();
212 double postStepGlobalTime = pPostStepPoint->GetGlobalTime();
213 double globalTime = (preStepGlobalTime + postStepGlobalTime) / 2.;
214
215 int layerID;
216
217 if (m_barrelIdentifier == 1)
218 layerID = GetLayerID1(ringID, strawID);
219 else
220 layerID = GetLayerID2(ringID, strawID);
221
222 hitID <<= 20;
223 hitID += (ringID << 15);
224 hitID += (moduleID << 10);
225 hitID += (layerID << 5);
226 hitID += strawID;
227
228 m_pSensitiveDetector->m_hitID = hitID;
229 auto* eventInfo = m_pSensitiveDetector->m_g4UserEventInfo;
230 m_pSensitiveDetector->m_partLink = trHelp.GenerateParticleLink(eventInfo ? eventInfo->GetEventStore() : nullptr);
231 m_pSensitiveDetector->m_preStepX = preStepX;
232 m_pSensitiveDetector->m_preStepY = preStepY;
233 m_pSensitiveDetector->m_preStepZ = preStepZ;
234 m_pSensitiveDetector->m_postStepX = postStepX;
235 m_pSensitiveDetector->m_postStepY = postStepY;
236 m_pSensitiveDetector->m_postStepZ = postStepZ;
237 m_pSensitiveDetector->m_globalTime = globalTime;
238
239 return true;
240}
int GetLayerID2(const int &, int &) const
int GetLayerID1(const int &, int &) const
std::string depth
tag string for intendation
Definition fastadd.cxx:46
@ energyDeposit

◆ TRTParametersForBarrelHits

friend class TRTParametersForBarrelHits
friend

Definition at line 17 of file TRTProcessingOfBarrelHits.h.

Member Data Documentation

◆ m_barrelIdentifier

int TRTProcessingOfBarrelHits::m_barrelIdentifier
private

Definition at line 35 of file TRTProcessingOfBarrelHits.h.

◆ m_integralDistributionOfStrawsA

int* TRTProcessingOfBarrelHits::m_integralDistributionOfStrawsA
private

Definition at line 46 of file TRTProcessingOfBarrelHits.h.

◆ m_integralDistributionOfStrawsB

int* TRTProcessingOfBarrelHits::m_integralDistributionOfStrawsB
private

Definition at line 47 of file TRTProcessingOfBarrelHits.h.

◆ m_integralDistributionOfStrawsC

int* TRTProcessingOfBarrelHits::m_integralDistributionOfStrawsC
private

Definition at line 48 of file TRTProcessingOfBarrelHits.h.

◆ m_numberOfStrawLayersA

int TRTProcessingOfBarrelHits::m_numberOfStrawLayersA
private

Definition at line 38 of file TRTProcessingOfBarrelHits.h.

◆ m_numberOfStrawLayersB

int TRTProcessingOfBarrelHits::m_numberOfStrawLayersB
private

Definition at line 39 of file TRTProcessingOfBarrelHits.h.

◆ m_numberOfStrawLayersC

int TRTProcessingOfBarrelHits::m_numberOfStrawLayersC
private

Definition at line 40 of file TRTProcessingOfBarrelHits.h.

◆ m_numberOfStrawsA

int TRTProcessingOfBarrelHits::m_numberOfStrawsA
private

Definition at line 42 of file TRTProcessingOfBarrelHits.h.

◆ m_numberOfStrawsB

int TRTProcessingOfBarrelHits::m_numberOfStrawsB
private

Definition at line 43 of file TRTProcessingOfBarrelHits.h.

◆ m_numberOfStrawsC

int TRTProcessingOfBarrelHits::m_numberOfStrawsC
private

Definition at line 44 of file TRTProcessingOfBarrelHits.h.

◆ m_pParameters

const TRTParameters* TRTProcessingOfBarrelHits::m_pParameters
private

Definition at line 54 of file TRTProcessingOfBarrelHits.h.

◆ m_printMessages

int TRTProcessingOfBarrelHits::m_printMessages
private

Definition at line 33 of file TRTProcessingOfBarrelHits.h.

◆ m_pSensitiveDetector

TRTSensitiveDetector* TRTProcessingOfBarrelHits::m_pSensitiveDetector
private

Definition at line 55 of file TRTProcessingOfBarrelHits.h.

◆ m_strawIDToLayerIDA

int* TRTProcessingOfBarrelHits::m_strawIDToLayerIDA
private

Definition at line 50 of file TRTProcessingOfBarrelHits.h.

◆ m_strawIDToLayerIDB

int* TRTProcessingOfBarrelHits::m_strawIDToLayerIDB
private

Definition at line 51 of file TRTProcessingOfBarrelHits.h.

◆ m_strawIDToLayerIDC

int* TRTProcessingOfBarrelHits::m_strawIDToLayerIDC
private

Definition at line 52 of file TRTProcessingOfBarrelHits.h.

◆ m_testLocalCoordinatesOfHits

int TRTProcessingOfBarrelHits::m_testLocalCoordinatesOfHits
private

Definition at line 36 of file TRTProcessingOfBarrelHits.h.

◆ m_verboseLevel

int TRTProcessingOfBarrelHits::m_verboseLevel
private

Definition at line 57 of file TRTProcessingOfBarrelHits.h.


The documentation for this class was generated from the following files: