BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
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 -------------------------------------------
43{
44 fZdcCollection = new TClonesArray("BmnZdcPoint");
45 volDetector = 0;
46 fPosIndex = 0;
47 // fpreflag = 0;
48 // fpostflag = 0;
49 fVSCVolId = 0;
51 fEventID = -1;
52 fVerboseLevel = 1;
53}
54// -------------------------------------------------------------------------
55
56// ----- Standard constructor ------------------------------------------
57BmnZdc::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;
67 fEventID = -1;
68 fVerboseLevel = 1;
69}
70// -------------------------------------------------------------------------
71
72// ----- Destructor ----------------------------------------------------
74{
75 if (fZdcCollection) {
76 fZdcCollection->Delete();
77 delete fZdcCollection;
78 }
79}
80// -------------------------------------------------------------------------
81
82// ----- Public method Intialize ---------------------------------------
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// -------------------------------------------------------------------------
97{
98 // Begin of the event
99 // cout <<"BeginEvent marina " <<endl;
100}
101
102// ----- Public method ProcessHits --------------------------------------
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
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() << " " <<
326part->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 -----------------------------------------
399{
400 if (fVerboseLevel)
401 Print("");
402 Reset();
403}
404
405// ----- Public method Register -------------------------------------------
407{
408 FairRootManager::Instance()->Register("ZdcPoint", "Zdc", fZdcCollection, kTRUE);
409}
410
411// ----- Public method GetCollection --------------------------------------
413{
414 if (iColl == 0)
415 return fZdcCollection;
416
417 return NULL;
418}
419
420// ----- Public method Print ----------------------------------------------
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 ----------------------------------------------
433{
434 fZdcCollection->Delete();
435
436 fPosIndex = 0;
437}
438
439// guarda in FairRootManager::CopyClones
440// ----- Public method CopyClones -----------------------------------------
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
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-----------------------------------------------------------
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,
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{
531 Int_t size = clref.GetEntriesFast();
532 return new (clref[size]) BmnZdcPoint(trackID, detID, copyNo, copyNoMother, pos, mom, time, length, eLoss);
533}
int i
Definition P4_F32vec4.h:22
bool Bool_t
int Int_t
constexpr Bool_t kFALSE
double Double_t
constexpr Bool_t kTRUE
const char Option_t
@ kZDC
TObjArray * GetGeoPassiveNodes()
TObjArray * GetGeoSensitiveNodes()
Double32_t fELoss
length
Definition BmnZdc.h:125
Int_t fEventID
volume id
Definition BmnZdc.h:120
void ResetParameters()
Hit collection.
Definition BmnZdc.h:140
TClonesArray * fZdcCollection
MC volume ID of MUO.
Definition BmnZdc.h:131
Int_t volDetector
Definition BmnZdc.h:129
virtual void EndOfEvent()
Virtual method EndOfEvent.
Definition BmnZdc.cxx:398
virtual void Reset()
Virtual method Reset.
Definition BmnZdc.cxx:432
virtual void ConstructGeometry()
Virtual method Construct geometry.
Definition BmnZdc.cxx:459
BmnZdc()
Default constructor.
Definition BmnZdc.cxx:42
Int_t fVSCVolId
energy loss
Definition BmnZdc.h:126
Int_t fTrackID
Definition BmnZdc.h:118
virtual Bool_t CheckIfSensitive(std::string name)
Definition BmnZdc.cxx:508
Int_t fPosIndex
Definition BmnZdc.h:128
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
virtual void CopyClones(TClonesArray *cl1, TClonesArray *cl2, Int_t offset)
Virtual method CopyClones.
Definition BmnZdc.cxx:441
virtual ~BmnZdc()
Destructor.
Definition BmnZdc.cxx:73
virtual void BeginEvent()
Definition BmnZdc.cxx:96
virtual TClonesArray * GetCollection(Int_t iColl) const
Accessor to the hit collection.
Definition BmnZdc.cxx:412
virtual void Register()
Virtual method Register.
Definition BmnZdc.cxx:406
Int_t fVSCVolId_after
Definition BmnZdc.h:127
virtual void Initialize()
Virtual method Initialize Initialises detector.
Definition BmnZdc.cxx:83
virtual void Print(Option_t *) const
Virtual method Print.
Definition BmnZdc.cxx:421
virtual Bool_t ProcessHits(FairVolume *vol=0)
Virtual method ProcessHits.
Definition BmnZdc.cxx:103
CbmStack.h.
Definition CbmStack.h:43
TObject * Next() override
Double_t Y() const
Double_t Px() const
Double_t Pz() const
Double_t X() const
Double_t Py() const
Double_t Z() const
Int_t GetEntriesFast() const
TObject * At(Int_t idx) const override
void AddLast(TObject *obj) override
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
const char * Data() const
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const