89 static const Double_t BirkC1 = 0.013 / dP;
90 static const Double_t BirkC2 = 9.6e-6 / (dP * dP);
98 Int_t ivol = vol->getMCid();
104 static Int_t lEDEBUGcounter = 0;
105 if (lEDEBUGcounter < 1)
106 std::cout <<
"EDEBUG-- BmnBd1::ProcessHits: entered" << gMC->CurrentVolPath() << endl;
109 if (gMC->IsTrackEntering()) {
121 gMC->TrackPosition(PosIn);
122 fPosIn.SetXYZ(PosIn.
X(), PosIn.
Y(), PosIn.
Z());
125 gMC->TrackMomentum(MomIn);
128 timeIn = gMC->TrackTime() * 1.0e09;
136 part = gMC->GetStack()->GetCurrentTrack();
145 if (gMC->TrackCharge() != 0) {
150 BirkC1Mod = BirkC1 * 7.2 / 12.6;
153 if (gMC->TrackStep() > 0) {
155 Double_t dedxcm = gMC->Edep() * 1000. / gMC->TrackStep();
156 Double_t curLightYield = gMC->Edep() * 1000. / (1. + BirkC1Mod * dedxcm + BirkC2 * dedxcm * dedxcm);
157 curLightYield /= 1000.;
158 lightYield += curLightYield;
166 Double_t slengthtrack = gMC->TrackStep();
167 lengthtrack += slengthtrack;
169 if ((gMC->IsTrackExiting() || gMC->IsTrackStop() || gMC->IsTrackDisappeared()) && (
fELoss > 0)) {
171 gMC->TrackPosition(PosOut);
172 fPosOut.SetXYZ(PosOut.
X(), PosOut.
Y(), PosOut.
Z());
175 gMC->TrackMomentum(MomOut);
178 timeOut = gMC->TrackTime() * 1.0e09;
187 fTrackID = gMC->GetStack()->GetCurrentTrackNumber();
189 Double_t time = gMC->TrackTime() * 1.0e09;
190 Double_t length = gMC->TrackLength();
193 gMC->CurrentVolID(copyNo);
196 gMC->CurrentVolOffID(1, iCell);
199 if (lEDEBUGcounter < 100) {
200 std::cout <<
"EDEBUG-- BmnFD::ProcessHits: TrackID:" <<
fTrackID <<
203 " " << gMC->CurrentVolPath() <<
" " << tPos.Z() <<
205 " " << ivol <<
"==" << gMC->CurrentVolID(copyNo) <<
"," << copyNo <<
" "
206 << gMC->CurrentVolOffID(1, iCell) <<
" " << iCell <<
" " << gMC->CurrentVolOffName(1) <<
" "
207 << gMC->CurrentVolOffName(0) <<
217 AddHit(
fTrackID, ivol, copyNo,
fPosIn,
fPosOut,
fMomIn,
fMomOut, time, length,
fELoss,
fIsPrimary,
fCharge,
218 fPdgId, lightYield, timeIn, timeOut, lengthtrack);
221 AddHit(
fTrackID, ivol, copyNo,
fPosIn,
fPosOut,
fMomIn,
fMomOut, time, length,
fELoss,
fIsPrimary,
fCharge,
222 fPdgId, lightYield, timeIn, timeOut, lengthtrack);
317 FairGeoLoader* geoLoad = FairGeoLoader::Instance();
318 FairGeoInterface* geoFace = geoLoad->getGeoInterface();
320 FDGeo->setGeomFile(GetGeometryFileName());
321 geoFace->addGeoModule(FDGeo);
323 Bool_t rc = geoFace->readSet(FDGeo);
325 FDGeo->create(geoLoad->getGeoBuilder());
326 TList* volList = FDGeo->getListOfVolumes();
329 FairRun* fRun = FairRun::Instance();
330 FairRuntimeDb* rtdb = FairRun::Instance()->GetRuntimeDb();
336 FairGeoNode* node =
nullptr;
337 FairGeoVolume* aVol =
nullptr;
339 while ((node = (FairGeoNode*)iter.
Next())) {
340 aVol =
dynamic_cast<FairGeoVolume*
>(node);
342 if (node->isSensitive())
349 par->setInputVersion(fRun->GetRunId(), 1);
350 ProcessNodes(volList);
387 return new (clref[size])
BmnFDPoint(trackID, detID, copyNo, posIn, posOut, momIn, momOut, time, length, eLoss,
388 isPrimary, charge, pdgId, lightYield, timeIn, timeOut, lengthtrack);
BmnFDPoint * 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