84 bool isPhotonTrack =
false;
85 Int_t particlePdg = fMC->TrackPid();
86 if (particlePdg == 22) {
89 if (!(isPhotonTrack || fMC->TrackCharge())) {
94 bool startHit =
false, stopHit =
false;
95 if ((fMC->IsTrackEntering()) || (fMC->IsTrackInside() && !mTrackData.mHitStarted)) {
97 }
else if ((fMC->IsTrackExiting() || fMC->IsTrackOut() || fMC->IsTrackStop())) {
103 mTrackData.mEnergyLoss += fMC->Edep();
109 mTrackData.mHitStarted =
true;
110 mTrackData.mEnergyLoss = 0.;
111 fMC->TrackMomentum(mTrackData.mMomentumStart);
112 fMC->TrackPosition(mTrackData.mPositionStart);
117 TLorentzVector positionStop;
118 fMC->TrackPosition(positionStop);
119 Int_t trackID = fMC->GetStack()->GetCurrentTrackNumber();
124 math_utils::Point3D<float> posStart(mTrackData.mPositionStart.X(), mTrackData.mPositionStart.Y(), mTrackData.mPositionStart.Z());
126 math_utils::Vector3D<float> momStart(mTrackData.mMomentumStart.Px(), mTrackData.mMomentumStart.Py(), mTrackData.mMomentumStart.Pz());
127 addHit(trackID, cellId, posStart, posStop, momStart,
128 mTrackData.mMomentumStart.E(), positionStop.T(),
129 mTrackData.mEnergyLoss, particlePdg);
162 LOG(info) <<
"FV0: Creating materials";
165 const Int_t nAir = 4;
166 Float_t aAir[nAir] = {12.0107, 14.0067, 15.9994, 39.948};
167 Float_t zAir[nAir] = {6, 7, 8, 18};
168 Float_t wAir[nAir] = {0.000124, 0.755267, 0.231781, 0.012827};
169 const Float_t dAir = 0.00120479;
172 const Int_t nScint = 2;
173 Float_t aScint[nScint] = {1.00784, 12.0107};
174 Float_t zScint[nScint] = {1, 6};
175 Float_t wScint[nScint] = {0.07085, 0.92915};
180 const Int_t nPlast = 3;
181 Float_t aPlast[nPlast] = {1.00784, 12.0107, 15.999};
182 Float_t zPlast[nPlast] = {1, 6, 8};
183 Float_t wPlast[nPlast] = {0.08054, 0.59985, 0.31961};
187 const Int_t nFiberRings = 5;
188 Float_t dFiberRings[nFiberRings] = {0.035631, 0.059611, 0.074765, 0.079451, 0.054490};
191 const Int_t nFiberPMTs = 5;
192 Float_t dFiberPMTs[nFiberPMTs] = {0.109313, 0.217216, 0.364493, 1.373307, 1.406480};
200 const Int_t nTitanium = 3;
201 Float_t aTitanium[nTitanium] = {47.87, 26.98, 50.94};
202 Float_t zTitanium[nTitanium] = {22, 13, 23};
203 Float_t wTitanium[nTitanium] = {0.9, 0.06, 0.04};
204 const Float_t dTitanium = 4.42;
207 const Int_t nPMT = 14;
208 Float_t aPMT[nPMT] = {63.546, 65.38, 28.085, 15.999, 12.011, 1.008, 14.007, 55.845, 51.996, 10.81, 121.76, 132.91, 9.0122, 26.982};
209 Float_t zPMT[nPMT] = {29, 30, 14, 8, 6, 1, 7, 26, 24, 5, 51, 55, 4, 13};
210 Float_t wPMT[nPMT] = {0.07, 0.02, 0.14, 0.21, 0.11, 0.02, 0.02, 0.04, 0.01, 0.01, 0.00, 0.00, 0.01, 0.34};
214 const Int_t unsens = 0, sens = 1;
225 LOG(info) <<
"FV0: createMaterials(): fieldType " << fieldType <<
", maxField " << maxField;
233 tmaxfd, stemax, deemax, epsil, stmin);
237 tmaxfd, stemax, deemax, epsil, stmin);
241 tmaxfd, stemax, deemax, epsil, stmin);
243 for (
int i = 0;
i < nFiberRings;
i++) {
246 tmaxfd, stemax, deemax, epsil, stmin);
249 for (
int i = 0;
i < nFiberPMTs;
i++) {
252 tmaxfd, stemax, deemax, epsil, stmin);
257 tmaxfd, stemax, deemax, epsil, stmin);
261 tmaxfd, stemax, deemax, epsil, stmin);
265 tmaxfd, stemax, deemax, epsil, stmin);
267 LOG(
debug) <<
"FV0 Detector::createMaterials(): matId = " << matId;