72 static const Double_t BirkC1 = 0.013 / dP;
73 static const Double_t BirkC2 = 9.6e-6 / (dP * dP);
81 Int_t ivol = vol->getMCid();
87 static Int_t lEDEBUGcounter = 0;
88 if (lEDEBUGcounter < 1)
89 std::cout <<
"EDEBUG-- BmnBd::ProcessHits: entered" << gMC->CurrentVolPath() << endl;
92 if (gMC->IsTrackEntering()) {
103 gMC->TrackPosition(PosIn);
104 fPosIn.SetXYZ(PosIn.
X(), PosIn.
Y(), PosIn.
Z());
107 gMC->TrackMomentum(MomIn);
110 timeIn = gMC->TrackTime() * 1.0e09;
118 part = gMC->GetStack()->GetCurrentTrack();
127 if (gMC->TrackCharge() != 0) {
131 BirkC1Mod = BirkC1 * 7.2 / 12.6;
135 if (gMC->TrackStep() > 0) {
136 Double_t dedxcm = gMC->Edep() * 1000. / gMC->TrackStep();
137 Double_t curLightYield = gMC->Edep() * 1000. / (1. + BirkC1Mod * dedxcm + BirkC2 * dedxcm * dedxcm);
138 curLightYield /= 1000.;
139 lightYield += curLightYield;
147 Double_t slengthtrack = gMC->TrackStep();
148 lengthtrack += slengthtrack;
150 if ((gMC->IsTrackExiting() || gMC->IsTrackStop() || gMC->IsTrackDisappeared()) && (
fELoss > 0)) {
152 gMC->TrackPosition(PosOut);
153 fPosOut.SetXYZ(PosOut.
X(), PosOut.
Y(), PosOut.
Z());
156 gMC->TrackMomentum(MomOut);
159 timeOut = gMC->TrackTime() * 1.0e09;
184 fTrackID = gMC->GetStack()->GetCurrentTrackNumber();
186 Double_t time = gMC->TrackTime() * 1.0e09;
187 Double_t length = gMC->TrackLength();
190 gMC->CurrentVolID(copyNo);
194 gMC->CurrentVolOffID(1, iCell);
197 if (lEDEBUGcounter < 100) {
198 std::cout <<
"EDEBUG-- BmnBd::ProcessHits: TrackID:" <<
fTrackID <<
201 " " << gMC->CurrentVolPath() <<
" " << tPos.Z() <<
203 " " << ivol <<
"==" << gMC->CurrentVolID(copyNo) <<
"," << copyNo <<
" "
204 << gMC->CurrentVolOffID(1, iCell) <<
" " << iCell <<
" " << gMC->CurrentVolOffName(1) <<
" "
205 << gMC->CurrentVolOffName(0) <<
216 AddHit(
fTrackID, ivol, copyNo,
fPosIn,
fPosOut,
fMomIn,
fMomOut, time, length,
fELoss,
fIsPrimary,
fCharge,
217 fPdgId, lightYield, timeIn, timeOut, lengthtrack);
219 AddHit(
fTrackID, ivol, copyNo,
fPosIn,
fPosOut,
fMomIn,
fMomOut, time, length,
fELoss,
fIsPrimary,
fCharge,
220 fPdgId, lightYield, timeIn, timeOut, lengthtrack);
314 FairGeoLoader* geoLoad = FairGeoLoader::Instance();
315 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
317 BdGeo->setGeomFile(GetGeometryFileName());
318 geoFace->addGeoModule(BdGeo);
320 Bool_t rc = geoFace->readSet(BdGeo);
322 BdGeo->create(geoLoad->getGeoBuilder());
323 TList* volList = BdGeo->getListOfVolumes();
326 FairRun* fRun = FairRun::Instance();
327 FairRuntimeDb* rtdb = FairRun::Instance()->GetRuntimeDb();
333 FairGeoNode* node =
nullptr;
334 FairGeoVolume* aVol =
nullptr;
336 while ((node = (FairGeoNode*)iter.
Next())) {
337 aVol =
dynamic_cast<FairGeoVolume*
>(node);
338 cout << aVol->GetName() << endl;
340 if (node->isSensitive())
347 par->setInputVersion(fRun->GetRunId(), 1);
348 ProcessNodes(volList);
382 return new (clref[size])
BmnBdPoint(trackID, detID, copyNo, posIn, posOut, momIn, momOut, time, length, eLoss,
383 isPrimary, charge, pdgId, lightYield, timeIn, timeOut, lengthtrack);
BmnBdPoint * AddHit(Int_t trackID, Int_t detID, Int_t copyNo, TVector3 posIn, TVector3 posOut, TVector3 momIn, TVector3 momOut, Double_t tof, Double_t length, Double_t eLoss, Bool_t isPrimary, Double_t charge, Int_t pdgId, Double_t lightYield, Double_t timeIn, Double_t timeOut, Double_t lengthtrack)
TParticlePDG * GetPDG(Int_t mode=0) const