83 if (fMC->IsTrackEntering() && !fMC->IsNewTrack() && fMC->TrackCharge() != 0) {
85 if (o2stack->GetCurrentTrackNumber() != mTrackRefLastTrackID) {
86 mTrackRefLastTrackID = o2stack->GetCurrentTrackNumber();
91 bool isPhotonTrack =
false;
92 Int_t particlePdg = fMC->TrackPid();
93 if (particlePdg == 22) {
96 if (!(isPhotonTrack || fMC->TrackCharge())) {
101 bool startHit =
false, stopHit =
false;
102 if ((fMC->IsTrackEntering()) || (fMC->IsTrackInside() && !mTrackData.mHitStarted)) {
104 }
else if ((fMC->IsTrackExiting() || fMC->IsTrackOut() || fMC->IsTrackStop())) {
110 mTrackData.mEnergyLoss += fMC->Edep();
116 mTrackData.mHitStarted =
true;
117 mTrackData.mEnergyLoss = 0.;
118 fMC->TrackMomentum(mTrackData.mMomentumStart);
119 fMC->TrackPosition(mTrackData.mPositionStart);
124 TLorentzVector positionStop;
125 fMC->TrackPosition(positionStop);
126 Int_t trackID = fMC->GetStack()->GetCurrentTrackNumber();
131 math_utils::Point3D<float> posStart(mTrackData.mPositionStart.X(), mTrackData.mPositionStart.Y(), mTrackData.mPositionStart.Z());
132 math_utils::Point3D<float> posStop(positionStop.X(), positionStop.Y(), positionStop.Z());
133 math_utils::Vector3D<float> momStart(mTrackData.mMomentumStart.Px(), mTrackData.mMomentumStart.Py(), mTrackData.mMomentumStart.Pz());
134 addHit(trackID, cellId, posStart, posStop, momStart,
135 mTrackData.mMomentumStart.E(), positionStop.T(),
136 mTrackData.mEnergyLoss, particlePdg);
170 LOG(info) <<
"FV0: Creating materials";
173 const Int_t nAir = 4;
174 Float_t aAir[nAir] = {12.0107, 14.0067, 15.9994, 39.948};
175 Float_t zAir[nAir] = {6, 7, 8, 18};
176 Float_t wAir[nAir] = {0.000124, 0.755267, 0.231781, 0.012827};
177 const Float_t dAir = 0.00120479;
180 const Int_t nScint = 2;
181 Float_t aScint[nScint] = {1.00784, 12.0107};
182 Float_t zScint[nScint] = {1, 6};
183 Float_t wScint[nScint] = {0.07085, 0.92915};
188 const Int_t nPlast = 3;
189 Float_t aPlast[nPlast] = {1.00784, 12.0107, 15.999};
190 Float_t zPlast[nPlast] = {1, 6, 8};
191 Float_t wPlast[nPlast] = {0.08054, 0.59985, 0.31961};
195 const Int_t nFiberRings = 5;
196 Float_t dFiberRings[nFiberRings] = {0.035631, 0.059611, 0.074765, 0.079451, 0.054490};
199 const Int_t nFiberPMTs = 5;
200 Float_t dFiberPMTs[nFiberPMTs] = {0.109313, 0.217216, 0.364493, 1.373307, 1.406480};
208 const Int_t nTitanium = 3;
209 Float_t aTitanium[nTitanium] = {47.87, 26.98, 50.94};
210 Float_t zTitanium[nTitanium] = {22, 13, 23};
211 Float_t wTitanium[nTitanium] = {0.9, 0.06, 0.04};
212 const Float_t dTitanium = 4.42;
215 const Int_t nPMT = 14;
216 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};
217 Float_t zPMT[nPMT] = {29, 30, 14, 8, 6, 1, 7, 26, 24, 5, 51, 55, 4, 13};
218 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};
222 const Int_t unsens = 0, sens = 1;
233 LOG(info) <<
"FV0: createMaterials(): fieldType " << fieldType <<
", maxField " << maxField;
241 tmaxfd, stemax, deemax, epsil, stmin);
245 tmaxfd, stemax, deemax, epsil, stmin);
249 tmaxfd, stemax, deemax, epsil, stmin);
251 for (
int i = 0;
i < nFiberRings;
i++) {
254 tmaxfd, stemax, deemax, epsil, stmin);
257 for (
int i = 0;
i < nFiberPMTs;
i++) {
260 tmaxfd, stemax, deemax, epsil, stmin);
265 tmaxfd, stemax, deemax, epsil, stmin);
269 tmaxfd, stemax, deemax, epsil, stmin);
273 tmaxfd, stemax, deemax, epsil, stmin);
275 LOG(
debug) <<
"FV0 Detector::createMaterials(): matId = " << matId;