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