BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
BmnZdc.cxx
Go to the documentation of this file.
1
2
/*****************************************************************************
3
*
4
* Class BmnZdc
5
*
6
* Adopted for BMN by: Elena Litvinenko (EL)
7
* e-mail: litvin@nf.jinr.ru
8
* Version: 06-11-2015
9
* Last update: 22-Feb-2012 (EL)
10
* Last update: 05-May-2016 (MG)
11
*
12
*****************************************************************************/
13
14
#include "
BmnZdc.h
"
15
16
#include "
BmnZdcGeo.h
"
17
#include "
BmnZdcPoint.h
"
18
#include "CbmStack.h"
19
#include "FairGeoInterface.h"
20
#include "FairGeoLoader.h"
21
#include "FairGeoNode.h"
22
#include "FairGeoRootBuilder.h"
23
#include "FairRootManager.h"
24
#include "FairVolume.h"
25
#include "
TClonesArray.h
"
26
#include "
TGeoArb8.h
"
27
#include "TGeoMCGeometry.h"
28
#include "
TGeoManager.h
"
29
#include "
TLorentzVector.h
"
30
#include "
TParticle.h
"
31
#include "TVirtualMC.h"
32
33
#include <iostream>
34
// add on for debug
35
// #include "FairGeoG3Builder.h"
36
#include "FairRun.h"
37
#include "FairRuntimeDb.h"
38
#include "
TObjArray.h
"
39
#include "
TParticlePDG.h
"
40
41
// ----- Default constructor -------------------------------------------
42
BmnZdc::BmnZdc
()
43
{
44
fZdcCollection
=
new
TClonesArray
(
"BmnZdcPoint"
);
45
volDetector
= 0;
46
fPosIndex
= 0;
47
// fpreflag = 0;
48
// fpostflag = 0;
49
fVSCVolId
= 0;
50
fVSCVolId_after
= 0;
51
fEventID
= -1;
52
fVerboseLevel = 1;
53
}
54
// -------------------------------------------------------------------------
55
56
// ----- Standard constructor ------------------------------------------
57
BmnZdc::BmnZdc
(
const
char
* name,
Bool_t
active)
58
:
FairDetector
(name, active)
59
{
60
fZdcCollection
=
new
TClonesArray
(
"BmnZdcPoint"
);
61
fPosIndex
= 0;
62
volDetector
= 0;
63
// fpreflag = 0;
64
// fpostflag = 0;
65
fVSCVolId
= 0;
66
fVSCVolId_after
= 0;
67
fEventID
= -1;
68
fVerboseLevel = 1;
69
}
70
// -------------------------------------------------------------------------
71
72
// ----- Destructor ----------------------------------------------------
73
BmnZdc::~BmnZdc
()
74
{
75
if
(
fZdcCollection
) {
76
fZdcCollection
->Delete();
77
delete
fZdcCollection
;
78
}
79
}
80
// -------------------------------------------------------------------------
81
82
// ----- Public method Intialize ---------------------------------------
83
void
BmnZdc::Initialize
()
84
{
85
// Init function
86
// cout <<"Initialize marina " <<endl;
87
FairDetector::Initialize();
88
// FairRun* sim = FairRun::Instance();
89
// FairRuntimeDb* rtdb=sim->GetRuntimeDb();
90
91
fVSCVolId
= gMC->VolId(
"zdc01s"
);
92
fVSCVolId_after
= gMC->VolId(
"zdc01s_after"
);
93
// fVSCVETOVolId = gMC->VolId("ndet01s_VETO");
94
}
95
// -------------------------------------------------------------------------
96
void
BmnZdc::BeginEvent
()
97
{
98
// Begin of the event
99
// cout <<"BeginEvent marina " <<endl;
100
}
101
102
// ----- Public method ProcessHits --------------------------------------
103
Bool_t
BmnZdc::ProcessHits
(FairVolume* vol)
104
{
105
106
Int_t
copyNoVSC
/*,copyNoVTYVEC,copyNoVMOD,copyNoVZDC*/
;
107
// Int_t copyNoVSCNICA,copyNoVTYVECNICA,copyNoVMODNICA,copyNoVZDCNICA;
108
Int_t
copyNoVSC_after
/*,copyNoVTYVECNICA,copyNoVMODNICA,copyNoVZDCNICA*/
;
109
// Int_t copyNoVSCVETO,copyNoVTYVECVETO,copyNoVMODVETO,copyNoVZDCVETO;
110
// Int_t copyNoVSCCom,copyNoVTYVECCom,copyNoVMODCom,copyNoVZDCCom;
111
112
Int_t
ivol;
113
TLorentzVector
tPos1, tMom1;
114
115
// Int_t module, module_nica;
116
// Int_t slice, slice_nica;
117
118
TLorentzVector
tPos, tMom;
119
Int_t
copyNo;
120
Int_t
copyNo_slice;
121
122
Double_t
time = 0;
123
Double_t
length = 0;
124
125
// TParticle* part;
126
// Double_t charge;
127
128
// Double_t timeCut = 45;
129
// Double_t timeCut = 55;
130
// Double_t QCF=1; //quenching for Birk
131
// Double_t BirkConst = 12.6; //0.126 mm/MeV for polystyrene
132
// 0.126 *(0.1/0.001) = 12.6 cm/GeV
133
//(0.126 mm/MeV - from Wikipedia, 0.07943mm/MeV є in Geant4)
134
135
if
(gMC->CurrentVolID(copyNoVSC) !=
fVSCVolId
&& gMC->CurrentVolID(copyNoVSC_after) !=
fVSCVolId_after
) {
136
return
kFALSE
;
137
}
138
139
ivol = vol->getMCid();
140
fEventID
= gMC->CurrentEvent();
141
142
if
(gMC->CurrentVolID(copyNoVSC) ==
fVSCVolId
|| gMC->CurrentVolID(copyNoVSC_after) ==
fVSCVolId_after
) {
143
// gMC->CurrentVolOffID(0, slice); //no tyvec
144
// gMC->CurrentVolOffID(1, module);
145
gMC->CurrentVolOffID(0, copyNo);
// planeNb 1-6
146
gMC->CurrentVolOffID(1, copyNo_slice);
147
// copyNoVTYVECCom = slice; copyNoVMODCom = module;
148
}
149
150
if
(gMC->IsTrackEntering()) {
151
152
ResetParameters
();
153
fELoss
= 0.;
154
time = 0.;
155
length = 0.;
156
gMC->TrackPosition(tPos);
157
gMC->TrackMomentum(tMom);
158
159
fTrackID
= gMC->GetStack()->GetCurrentTrackNumber();
160
// part = gMC->GetStack()->GetCurrentTrack();
161
162
}
// if (gMC->IsTrackEntering())
163
164
if
(gMC->IsTrackExiting()) {
165
166
gMC->TrackPosition(tPos);
167
gMC->TrackMomentum(tMom);
168
// part = gMC->GetStack()->GetCurrentTrack();
169
// fTrackID = gMC->GetStack()->GetCurrentTrackNumber();
170
171
// Create BmnNdetPoint
172
fTrackID
= gMC->GetStack()->GetCurrentTrackNumber();
173
time = gMC->TrackTime() * 1.0e09;
174
// length += gMC->TrackLength();
175
176
// if(fELoss>0) {
177
178
length = 1;
179
180
// cout <<"Exit_WALL " <<length <<" " <<gMC->CurrentVolPath() <<" " <<copyNo_slice <<" " <<copyNo <<" "
181
// <<tPos.X() <<" " <<tPos.Y() <<" " <<tPos.Z() <<" " <<tMom.Px() <<" " <<tMom.Py() <<" " <<tMom.Pz() <<" "
182
// <<time <<" " <<fELoss <<" " <<part->GetPDG()->PdgCode() <<" " <<part->GetMother(0) <<endl;
183
AddHit
(
fTrackID
, ivol, copyNo_slice, copyNo,
TVector3
(tPos.
X
(), tPos.
Y
(), tPos.
Z
()),
184
TVector3
(tMom.
Px
(), tMom.
Py
(), tMom.
Pz
()), time, length,
fELoss
);
185
/*
186
Int_t points = gMC->GetStack()->GetCurrentTrack()->GetMother(1);
187
// Int_t nZdcPoints = (points & (1<<30)) >> 30;
188
// nZdcPoints ++;
189
// if (nZdcPoints > 1) nZdcPoints = 1;
190
// points = ( points & ( ~ (1<<30) ) ) | (nZdcPoints << 30);
191
points = ( points & ( ~ (1<<30) ) ) | (1 << 30);
192
gMC->GetStack()->GetCurrentTrack()->SetMother(1,points);
193
*/
194
((
CbmStack
*)gMC->GetStack())->AddPoint(
kZDC
);
195
196
//}//if(fELoss>0)
197
}
// if ( gMC->IsTrackExiting()) {
198
/*
199
Int_t points = gMC->GetStack()->GetCurrentTrack()->GetMother(1);
200
// Int_t nZdcPoints = (points & (1<<30)) >> 30;
201
// nZdcPoints ++;
202
// if (nZdcPoints > 1) nZdcPoints = 1;
203
// points = ( points & ( ~ (1<<30) ) ) | (nZdcPoints << 30);
204
points = ( points & ( ~ (1<<30) ) ) | (1 << 30);
205
gMC->GetStack()->GetCurrentTrack()->SetMother(1,points);
206
207
((CbmStack*)gMC->GetStack())->AddPoint(kZDC);
208
*/
209
210
//////////////////////////////////////////////////
211
// cout <<"ProcessHits marina " <<endl;
212
// if (TMath::Abs(gMC->TrackCharge()) <= 0) return kFALSE;
213
214
// Int_t ivol = vol->getMCid();
215
// TLorentzVector tPos1, tMom1;
216
217
// commented for vacuum FWall
218
/*
219
#ifndef EDEBUG
220
if (fELoss == 0. ) return kFALSE;
221
#else
222
if ((fELoss == 0. ) &&
223
(!((gMC->GetStack()->GetCurrentTrack()->GetPdgCode()==2112)&&(gMC->GetStack()->GetCurrentTrack()->GetMother(0)==-1)))
224
) return kFALSE;
225
#endif
226
*/
227
// END comment for vacuum FWall
228
/*
229
if (gMC->IsTrackEntering()) {
230
231
ResetParameters();
232
fELoss = 0.;
233
}
234
if ( gMC->IsTrackExiting() ||
235
gMC->IsTrackStop() ||
236
gMC->IsTrackDisappeared() ) {
237
*/
238
239
/*
240
//old geom
241
Int_t copyNo;
242
Int_t ivol1 = gMC->CurrentVolID(copyNo);
243
// ivol1 = vol->getVolumeId();
244
Int_t iCell, iCell2 ;
245
gMC->CurrentVolOffID(1, iCell);
246
gMC->CurrentVolOffID(2, iCell2);
247
*/
248
/*
249
//new geom
250
Int_t copyNo;
251
Int_t copyNo_slice;
252
//Int_t ivol1 = gMC->CurrentVolID(copyNo_slice);
253
// ivol1 = vol->getVolumeId();
254
Int_t iCell, iCell2 ;
255
gMC->CurrentVolOffID(1, copyNo_slice);
256
gMC->CurrentVolOffID(0, copyNo);
257
258
TParticle* part = gMC->GetStack()->GetCurrentTrack();
259
Double_t charge = part->GetPDG()->Charge() / 3. ;
260
261
// Create BmnZdcPoint
262
fTrackID = gMC->GetStack()->GetCurrentTrackNumber();
263
Double_t time = gMC->TrackTime() * 1.0e09;
264
Double_t length = gMC->TrackLength();
265
TLorentzVector tPos, tMom;
266
//gMC->TrackPosition(tPos);
267
//gMC->TrackMomentum(tMom);
268
Double_t ZZZ;
269
Double_t eLoss = gMC->Edep();
270
if (eLoss != 0.)
271
fELoss += eLoss;
272
273
//if (gMC->IsTrackEntering()) {
274
275
//ResetParameters();
276
//fELoss = 0.;
277
length = 0; //entering
278
fTrackID = gMC->GetStack()->GetCurrentTrackNumber();
279
time = gMC->TrackTime() * 1.0e09;
280
gMC->TrackPosition(tPos);
281
gMC->TrackMomentum(tMom);
282
283
//cout <<"Enter " <<gMC->CurrentVolPath() <<" " <<ivol1 <<" " <<copyNo_slice <<" "
284
<<gMC->CurrentVolID(copyNo_slice) <<" " <<gMC->CurrentVolOffID(0, iCell) <<" " <<iCell <<" "
285
<<gMC->CurrentVolOffID(1, copyNo) <<" " <<copyNo <<endl;
286
//if(copyNo==1 && gMC->IsTrackEntering()) cout <<"Enter_WALL " <<length <<" " <<gMC->CurrentVolPath() <<" "
287
<<copyNo_slice <<" " <<copyNo <<" " <<tPos.X() <<" " <<tPos.Y() <<" " <<tPos.Z() <<" " <<tMom.Px() <<" "
288
<<tMom.Py() <<" " <<tMom.Pz() <<" " <<time <<" " <<fELoss <<endl; cout <<"Exit_WALL " <<length <<" "
289
<<gMC->CurrentVolPath() <<" " <<copyNo_slice <<" " <<copyNo <<" " <<tPos.X() <<" " <<tPos.Y() <<" " <<tPos.Z() <<"
290
" <<tMom.Px() <<" " <<tMom.Py() <<" " <<tMom.Pz() <<" " <<time <<" " <<fELoss <<endl; AddHit(fTrackID, ivol,
291
copyNo_slice, copyNo, TVector3(tPos.X(), tPos.Y(), tPos.Z()), TVector3(tMom.Px(), tMom.Py(), tMom.Pz()), time,
292
length, fELoss);
293
}//if (gMC->IsTrackEntering())
294
*/
295
296
/*
297
if ( gMC->IsTrackExiting() ||
298
gMC->IsTrackStop() ||
299
gMC->IsTrackDisappeared() ) {
300
*/
301
302
/*
303
if ( gMC->IsTrackExiting() ) {
304
305
//cout <<"Exit " <<gMC->CurrentVolPath() <<" " <<ivol1 <<" " <<copyNo_slice <<" "
306
<<gMC->CurrentVolID(copyNo_slice) <<" " <<iCell <<" " <<gMC->CurrentVolOffID(0, iCell) <<" " <<copyNo <<" "
307
<<gMC->CurrentVolOffID(1, copyNo) <<endl;
308
309
part = gMC->GetStack()->GetCurrentTrack();
310
311
// Create BmnZdcPoint
312
fTrackID = gMC->GetStack()->GetCurrentTrackNumber();
313
time = gMC->TrackTime() * 1.0e09;
314
//length += gMC->TrackLength();
315
length = 1; //exiting
316
*/
317
318
/*
319
#ifdef EDEBUG
320
static Bool_t already=0;
321
if (lEDEBUGcounter<200) {
322
std::cout << "EDEBUG-- BmnZdc::ProcessHits: TrackID:" << fTrackID <<
323
// " ELoss: " << fELoss <<
324
// " particle: " << (part->GetName()) <<
325
" " << gMC->CurrentVolPath() << " " << tPos.X()<< " " << tPos.Y() << " " << tPos.Z() << " " <<
326
part->GetPDG()->PdgCode()<<
327
// " " << (gMC->GetStack()->GetCurrentTrack()->GetMother(1)) <<
328
// " " << ivol << "=="<< gMC->CurrentVolID(copyNo) << ","<< copyNo <<
329
" " << ivol << " " << vol->getRealName() << " " <<
330
" " << gMC->CurrentVolOffID(1,iCell) << " " << gMC->CurrentVolOffName(1) <<
331
" " << iCell << " " << iCell2 << " "<< gMC->CurrentVolOffName(2) <<
332
" " << vol->getModId()<< " " <<
333
// " " << gMC->CurrentVolOffName(2) << " " << gMC->CurrentVolOffName(1) << " " << gMC->CurrentVolOffName(0) <<
334
" "
335
// " " << vol->getRealName() << " " << gMC->CurrentVolPath() <<
336
// " ivol,iCell,copyNo= " << ivol << ","<< iCell << ","<< copyNo <<
337
// " " << vol->getRealName() << " "<< gMC->CurrentVolName() << " "<< gMC->CurrentVolPath() <<
338
// " " << ivol << ","<< vol->getVolumeId() << " : "<< gMC->CurrentVolID(copyNo) << ","<< copyNo <<
339
// " "<< gMC->CurrentVolOffName(2) << " " <<
340
// " "<< gMC->CurrentVolOffName(2) << " "<< gMC->CurrentVolOffName(3) <<
341
std::endl;
342
// vol->getGeoNode()->getMotherNode()->getMotherNode()->getCenterPosition().print();
343
lEDEBUGcounter++;
344
}
345
if ((iCell==2)&&(lEDEBUGcounter>=100)&&(!already)) {
346
already=1;
347
lEDEBUGcounter=0;
348
}
349
// if ((part->GetPdgCode())==321) {
350
// std::cout << "EDEBUG-- BmnZdc::ProcessHits(..) K+: " << fTrackID << " " << ( gMC->IsTrackExiting()) << " " <<
351
// (gMC->IsTrackStop()) << " " << (gMC->IsTrackDisappeared()) << " " << fELoss << " " << time << std::endl;
352
// }
353
//#endif
354
355
// if(copyNo==1)
356
// AddHit(fTrackID, ivol, copyNo, iCell, TVector3(tPos1.X(), tPos1.Y(), tPos1.Z()),
357
// TVector3(tMom1.Px(), tMom1.Py(), tMom1.Pz()),
358
// time, length, fELoss);
359
// else
360
361
AddHit(fTrackID, ivol, copyNo_slice, copyNo, TVector3(tPos.X(), tPos.Y(), tPos.Z()),
362
TVector3(tMom.Px(), tMom.Py(), tMom.Pz()),
363
time, length, fELoss);
364
#else
365
*/
366
// if(copyNo<=2) cout <<"Exit_WALL " <<length <<" " <<gMC->CurrentVolPath() <<" " <<copyNo_slice <<" " <<copyNo <<"
367
// " <<tPos.Z() <<endl;
368
369
/*
370
AddHit(fTrackID, ivol, copyNo_slice, copyNo, TVector3(tPos.X(), tPos.Y(), tPos.Z()),
371
TVector3(tMom.Px(), tMom.Py(), tMom.Pz()),
372
time, length, fELoss);
373
//#endif
374
}//if ( gMC->IsTrackExiting()) {
375
*/
376
/*
377
Int_t points = gMC->GetStack()->GetCurrentTrack()->GetMother(1);
378
// Int_t nZdcPoints = (points & (1<<30)) >> 30;
379
// nZdcPoints ++;
380
// if (nZdcPoints > 1) nZdcPoints = 1;
381
// points = ( points & ( ~ (1<<30) ) ) | (nZdcPoints << 30);
382
points = ( points & ( ~ (1<<30) ) ) | (1 << 30);
383
gMC->GetStack()->GetCurrentTrack()->SetMother(1,points);
384
385
((CbmStack*)gMC->GetStack())->AddPoint(kZDC);
386
*/
387
//}
388
389
return
kTRUE
;
390
391
// }
392
// #undef EDEBUG
393
}
394
395
// ----------------------------------------------------------------------------
396
397
// ----- Public method EndOfEvent -----------------------------------------
398
void
BmnZdc::EndOfEvent
()
399
{
400
if
(fVerboseLevel)
401
Print
(
""
);
402
Reset
();
403
}
404
405
// ----- Public method Register -------------------------------------------
406
void
BmnZdc::Register
()
407
{
408
FairRootManager::Instance()->Register(
"ZdcPoint"
,
"Zdc"
,
fZdcCollection
,
kTRUE
);
409
}
410
411
// ----- Public method GetCollection --------------------------------------
412
TClonesArray
*
BmnZdc::GetCollection
(
Int_t
iColl)
const
413
{
414
if
(iColl == 0)
415
return
fZdcCollection
;
416
417
return
NULL;
418
}
419
420
// ----- Public method Print ----------------------------------------------
421
void
BmnZdc::Print
(
Option_t
*)
const
422
{
423
Int_t
nHits =
fZdcCollection
->GetEntriesFast();
424
cout <<
"-I- BmnZdc: "
<< nHits <<
" points registered in this event."
<< endl;
425
426
if
(fVerboseLevel > 1)
427
for
(
Int_t
i
= 0;
i
< nHits;
i
++)
428
(*
fZdcCollection
)[
i
]->Print();
429
}
430
431
// ----- Public method Reset ----------------------------------------------
432
void
BmnZdc::Reset
()
433
{
434
fZdcCollection
->Delete();
435
436
fPosIndex
= 0;
437
}
438
439
// guarda in FairRootManager::CopyClones
440
// ----- Public method CopyClones -----------------------------------------
441
void
BmnZdc::CopyClones
(
TClonesArray
* cl1,
TClonesArray
* cl2,
Int_t
offset)
442
{
443
Int_t
nEntries = cl1->
GetEntriesFast
();
444
// cout << "-I- BmnZdc: " << nEntries << " entries to add." << endl;
445
TClonesArray
& clref = *cl2;
446
BmnZdcPoint
* oldpoint = NULL;
447
for
(
Int_t
i
= 0;
i
< nEntries;
i
++) {
448
oldpoint = (
BmnZdcPoint
*)cl1->
At
(
i
);
449
Int_t
index = oldpoint->GetTrackID() + offset;
450
oldpoint->SetTrackID(index);
451
new
(clref[
fPosIndex
])
BmnZdcPoint
(*oldpoint);
452
fPosIndex
++;
453
}
454
cout <<
" -I- BmnZdc: "
<< cl2->
GetEntriesFast
() <<
" merged entries."
<< endl;
455
}
456
457
// ----- Public method ConstructGeometry ----------------------------------
458
459
void
BmnZdc::ConstructGeometry
()
460
{
461
462
TString
fileName = GetGeometryFileName();
463
if
(fileName.
EndsWith
(
".root"
)) {
464
// FairLogger::GetLogger()->Info(MESSAGE_ORIGIN, "Constructing ZDC geometry from ROOT file %s",
465
// fileName.Data());
466
LOG(info) <<
"Constructing ZDC geometry from ROOT file"
<< fileName.
Data
();
467
ConstructRootGeometry();
468
}
469
470
FairGeoLoader* geoLoad = FairGeoLoader::Instance();
471
FairGeoInterface* geoFace = geoLoad->getGeoInterface();
472
BmnZdcGeo
* zdcGeo =
new
BmnZdcGeo
();
473
zdcGeo->setGeomFile(GetGeometryFileName());
474
geoFace->addGeoModule(zdcGeo);
475
476
Bool_t
rc = geoFace->readSet(zdcGeo);
477
if
(rc)
478
zdcGeo->create(geoLoad->getGeoBuilder());
479
TList
* volList = zdcGeo->getListOfVolumes();
480
481
// store geo parameter
482
FairRun* fRun = FairRun::Instance();
483
FairRuntimeDb* rtdb = FairRun::Instance()->GetRuntimeDb();
484
BmnZdcGeoPar
* par = (
BmnZdcGeoPar
*)(rtdb->getContainer(
"BmnZdcGeoPar"
));
485
TObjArray
* fSensNodes = par->
GetGeoSensitiveNodes
();
486
TObjArray
* fPassNodes = par->
GetGeoPassiveNodes
();
487
488
TListIter
iter(volList);
489
FairGeoNode* node = NULL;
490
FairGeoVolume* aVol = NULL;
491
492
while
((node = (FairGeoNode*)iter.
Next
())) {
493
aVol =
dynamic_cast<
FairGeoVolume*
>
(node);
494
495
if
(node->isSensitive()) {
496
fSensNodes->
AddLast
(aVol);
497
}
else
{
498
fPassNodes->
AddLast
(aVol);
499
}
500
}
501
par->setChanged();
502
par->setInputVersion(fRun->GetRunId(), 1);
503
504
ProcessNodes(volList);
505
}
506
507
// Check if Sensitive-----------------------------------------------------------
508
Bool_t
BmnZdc::CheckIfSensitive
(std::string name)
509
{
510
TString
tsname = name;
511
// if (tsname.Contains("zdc01s") || tsname.Contains("ScH")) {
512
if
(tsname.
Contains
(
"zdc01s"
) || tsname.
Contains
(
"zdc01s_after"
) || tsname.
Contains
(
"ScH"
)) {
513
return
kTRUE
;
514
}
515
return
kFALSE
;
516
}
517
518
// ----- Private method AddHit --------------------------------------------
519
// BmnZdcPoint* BmnZdc::AddHit(Int_t trackID, Int_t module_groupID, Int_t copyNo, Int_t copyNoMother,
520
BmnZdcPoint
*
BmnZdc::AddHit
(
Int_t
trackID,
521
Int_t
detID,
522
Int_t
copyNo,
523
Int_t
copyNoMother,
524
TVector3
pos,
525
TVector3
mom,
526
Double_t
time,
527
Double_t
length,
528
Double_t
eLoss)
529
{
530
TClonesArray
& clref = *
fZdcCollection
;
531
Int_t
size = clref.
GetEntriesFast
();
532
return
new
(clref[size])
BmnZdcPoint
(trackID, detID, copyNo, copyNoMother, pos, mom, time, length, eLoss);
533
}
i
int i
Definition
P4_F32vec4.h:22
Bool_t
bool Bool_t
Int_t
int Int_t
kFALSE
constexpr Bool_t kFALSE
Double_t
double Double_t
kTRUE
constexpr Bool_t kTRUE
Option_t
const char Option_t
TClonesArray.h
TGeoArb8.h
TGeoManager.h
TLorentzVector.h
TObjArray.h
TParticlePDG.h
TParticle.h
kZDC
@ kZDC
Definition
BmnDetectorList.h:20
BmnZdcGeoPar
Definition
BmnZdcGeoPar.h:18
BmnZdcGeoPar::GetGeoPassiveNodes
TObjArray * GetGeoPassiveNodes()
Definition
BmnZdcGeoPar.h:31
BmnZdcGeoPar::GetGeoSensitiveNodes
TObjArray * GetGeoSensitiveNodes()
Definition
BmnZdcGeoPar.h:30
BmnZdcGeo
Definition
BmnZdcGeo.h:17
BmnZdcPoint
Definition
BmnZdcPoint.h:20
BmnZdc::fELoss
Double32_t fELoss
length
Definition
BmnZdc.h:125
BmnZdc::fEventID
Int_t fEventID
volume id
Definition
BmnZdc.h:120
BmnZdc::ResetParameters
void ResetParameters()
Hit collection.
Definition
BmnZdc.h:140
BmnZdc::fZdcCollection
TClonesArray * fZdcCollection
MC volume ID of MUO.
Definition
BmnZdc.h:131
BmnZdc::volDetector
Int_t volDetector
Definition
BmnZdc.h:129
BmnZdc::EndOfEvent
virtual void EndOfEvent()
Virtual method EndOfEvent.
Definition
BmnZdc.cxx:398
BmnZdc::Reset
virtual void Reset()
Virtual method Reset.
Definition
BmnZdc.cxx:432
BmnZdc::ConstructGeometry
virtual void ConstructGeometry()
Virtual method Construct geometry.
Definition
BmnZdc.cxx:459
BmnZdc::BmnZdc
BmnZdc()
Default constructor.
Definition
BmnZdc.cxx:42
BmnZdc::fVSCVolId
Int_t fVSCVolId
energy loss
Definition
BmnZdc.h:126
BmnZdc::fTrackID
Int_t fTrackID
Definition
BmnZdc.h:118
BmnZdc::CheckIfSensitive
virtual Bool_t CheckIfSensitive(std::string name)
Definition
BmnZdc.cxx:508
BmnZdc::fPosIndex
Int_t fPosIndex
Definition
BmnZdc.h:128
BmnZdc::AddHit
BmnZdcPoint * AddHit(Int_t trackID, Int_t detID, Int_t copyNo, Int_t copyNoMother, TVector3 pos, TVector3 mom, Double_t tof, Double_t length, Double_t eLoss)
Definition
BmnZdc.cxx:520
BmnZdc::CopyClones
virtual void CopyClones(TClonesArray *cl1, TClonesArray *cl2, Int_t offset)
Virtual method CopyClones.
Definition
BmnZdc.cxx:441
BmnZdc::~BmnZdc
virtual ~BmnZdc()
Destructor.
Definition
BmnZdc.cxx:73
BmnZdc::BeginEvent
virtual void BeginEvent()
Definition
BmnZdc.cxx:96
BmnZdc::GetCollection
virtual TClonesArray * GetCollection(Int_t iColl) const
Accessor to the hit collection.
Definition
BmnZdc.cxx:412
BmnZdc::Register
virtual void Register()
Virtual method Register.
Definition
BmnZdc.cxx:406
BmnZdc::fVSCVolId_after
Int_t fVSCVolId_after
Definition
BmnZdc.h:127
BmnZdc::Initialize
virtual void Initialize()
Virtual method Initialize Initialises detector.
Definition
BmnZdc.cxx:83
BmnZdc::Print
virtual void Print(Option_t *) const
Virtual method Print.
Definition
BmnZdc.cxx:421
BmnZdc::ProcessHits
virtual Bool_t ProcessHits(FairVolume *vol=0)
Virtual method ProcessHits.
Definition
BmnZdc.cxx:103
CbmStack
CbmStack.h.
Definition
CbmStack.h:43
FairDetector
TClonesArray
TListIter
TListIter::Next
TObject * Next() override
TList
TLorentzVector
TLorentzVector::Y
Double_t Y() const
TLorentzVector::Px
Double_t Px() const
TLorentzVector::Pz
Double_t Pz() const
TLorentzVector::X
Double_t X() const
TLorentzVector::Py
Double_t Py() const
TLorentzVector::Z
Double_t Z() const
TObjArray
TObjArray::GetEntriesFast
Int_t GetEntriesFast() const
TObjArray::At
TObject * At(Int_t idx) const override
TObjArray::AddLast
void AddLast(TObject *obj) override
TString
TString::EndsWith
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
TString::Data
const char * Data() const
TString::Contains
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
TVector3
BmnZdcGeo.h
BmnZdcPoint.h
BmnZdc.h
detectors
zdc
BmnZdc.cxx
Generated on
for BmnRoot by
1.17.0