84 static Int_t lEDEBUGcounter=0;
86 std::cout <<
"EDEBUG-- BmnEcal::ProcessHits: entered" << gMC->CurrentVolPath() << endl;
90 if (gMC->IsTrackEntering()) {
92 fTime = gMC->TrackTime() * 1.0e09;
93 fLength = gMC->TrackLength();
94 gMC->TrackPosition(fPos);
95 gMC->TrackMomentum(fMom);
98 fELoss += gMC->Edep();
100 if (gMC->IsTrackExiting() || gMC->IsTrackStop() || gMC->IsTrackDisappeared()) {
102 if (fELoss == 0. )
return kFALSE;
104 fTrackID = gMC->GetStack()->GetCurrentTrackNumber();
105 fVolumeID = vol->getMCid();
108 fTime = gMC->TrackTime() * 1.0e09;
109 fLength = gMC->TrackLength();
110 gMC->TrackPosition(fPos);
111 gMC->TrackMomentum(fMom);
114 gMC->CurrentVolID(copyNo);
116 gMC->CurrentVolOffID(1, copyNoMother);
118 AddHit(fTrackID, fVolumeID, copyNo, copyNoMother,
119 TVector3(fPos.X(), fPos.Y(), fPos.Z()),
120 TVector3(fMom.Px(), fMom.Py(), fMom.Pz()),
121 fTime, fLength, fELoss);
174 Int_t nEntries = cl1->GetEntriesFast();
176 TClonesArray& clref = *cl2;
178 for (Int_t
i=0;
i<nEntries;
i++) {
180 Int_t index = oldpoint->GetTrackID() + offset;
181 oldpoint->SetTrackID(index);
182 new (clref[cl2->GetEntriesFast()])
BmnEcalPoint(*oldpoint);
184 cout <<
" -I- BmnEcal: " << cl2->GetEntriesFast() <<
" merged entries."
191 TString geoFileName = GetGeometryFileName();
192 if(geoFileName.EndsWith(
".root")) {
193 LOG(info) <<
"Constructing ECAL geometry from ROOT file " << geoFileName.Data();
194 ConstructRootGeometry();
198 FairGeoLoader* geoLoad = FairGeoLoader::Instance();
199 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
201 ecalGeo->setGeomFile(GetGeometryFileName());
202 geoFace->addGeoModule(ecalGeo);
204 Bool_t rc = geoFace->readSet(ecalGeo);
205 if (rc) ecalGeo->create(geoLoad->getGeoBuilder());
206 TList* volList = ecalGeo->getListOfVolumes();
209 FairRun *fRun = FairRun::Instance();
210 FairRuntimeDb *rtdb= FairRun::Instance()->GetRuntimeDb();
215 TListIter iter(volList);
216 FairGeoNode* node = NULL;
217 FairGeoVolume *aVol=NULL;
219 while( (node = (FairGeoNode*)iter.Next()) ) {
220 aVol =
dynamic_cast<FairGeoVolume*
> ( node );
223 if ( node->isSensitive() ) {
224 fSensNodes->AddLast( aVol );
226 fPassNodes->AddLast( aVol );
230 par->setInputVersion(fRun->GetRunId(),1);
232 ProcessNodes ( volList );
246 TVector3 pos, TVector3 mom, Double_t time,
247 Double_t length, Double_t eLoss) {
248 TClonesArray& clref = *fEcalCollection;
249 Int_t size = clref.GetEntriesFast();
250 return new(clref[size])
BmnEcalPoint(trackID, detID, copyNo, copyNoMother,pos, mom,
251 time, length, eLoss);
BmnEcalPoint * 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)