80 if (
fMC->IsTrackEntering() && !
fMC->IsNewTrack() &&
fMC->TrackCharge() != 0) {
82 if (o2stack->GetCurrentTrackNumber() != mTrackRefLastTrackID) {
83 mTrackRefLastTrackID = o2stack->GetCurrentTrackNumber();
88 bool isPhotonTrack =
false;
89 Int_t particlePdg =
fMC->TrackPid();
90 if (particlePdg == 22) {
93 if (!(isPhotonTrack ||
fMC->TrackCharge())) {
98 bool startHit =
false, stopHit =
false;
99 if ((
fMC->IsTrackEntering()) || (
fMC->IsTrackInside() && !mTrackData.mHitStarted)) {
101 }
else if ((
fMC->IsTrackExiting() ||
fMC->IsTrackOut() ||
fMC->IsTrackStop())) {
107 mTrackData.mEnergyLoss +=
fMC->Edep();
113 mTrackData.mHitStarted =
true;
114 mTrackData.mEnergyLoss = 0.;
115 fMC->TrackMomentum(mTrackData.mMomentumStart);
116 fMC->TrackPosition(mTrackData.mPositionStart);
121 TLorentzVector positionStop;
122 fMC->TrackPosition(positionStop);
123 Int_t trackID =
fMC->GetStack()->GetCurrentTrackNumber();
128 math_utils::Point3D<float> posStart(mTrackData.mPositionStart.X(), mTrackData.mPositionStart.Y(), mTrackData.mPositionStart.Z());
129 math_utils::Point3D<float> posStop(positionStop.X(), positionStop.Y(), positionStop.Z());
130 math_utils::Vector3D<float> momStart(mTrackData.mMomentumStart.Px(), mTrackData.mMomentumStart.Py(), mTrackData.mMomentumStart.Pz());
131 addHit(trackID, cellId, posStart, posStop, momStart,
132 mTrackData.mMomentumStart.E(), positionStop.T(),
133 mTrackData.mEnergyLoss, particlePdg);
167 LOG(info) <<
"FV0: Creating materials";
170 const Int_t nAir = 4;
171 Float_t aAir[nAir] = {12.0107, 14.0067, 15.9994, 39.948};
172 Float_t zAir[nAir] = {6, 7, 8, 18};
173 Float_t wAir[nAir] = {0.000124, 0.755267, 0.231781, 0.012827};
174 const Float_t dAir = 0.00120479;
177 const Int_t nScint = 2;
178 Float_t aScint[nScint] = {1.00784, 12.0107};
179 Float_t zScint[nScint] = {1, 6};
180 Float_t wScint[nScint] = {0.07085, 0.92915};
185 const Int_t nPlast = 3;
186 Float_t aPlast[nPlast] = {1.00784, 12.0107, 15.999};
187 Float_t zPlast[nPlast] = {1, 6, 8};
188 Float_t wPlast[nPlast] = {0.08054, 0.59985, 0.31961};
192 const Int_t nFiberRings = 5;
193 Float_t dFiberRings[nFiberRings] = {0.035631, 0.059611, 0.074765, 0.079451, 0.054490};
196 const Int_t nFiberPMTs = 5;
197 Float_t dFiberPMTs[nFiberPMTs] = {0.109313, 0.217216, 0.364493, 1.373307, 1.406480};
205 const Int_t nTitanium = 3;
206 Float_t aTitanium[nTitanium] = {47.87, 26.98, 50.94};
207 Float_t zTitanium[nTitanium] = {22, 13, 23};
208 Float_t wTitanium[nTitanium] = {0.9, 0.06, 0.04};
209 const Float_t dTitanium = 4.42;
212 const Int_t nPMT = 14;
213 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};
214 Float_t zPMT[nPMT] = {29, 30, 14, 8, 6, 1, 7, 26, 24, 5, 51, 55, 4, 13};
215 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};
219 const Int_t unsens = 0, sens = 1;
230 LOG(info) <<
"FV0: createMaterials(): fieldType " << fieldType <<
", maxField " << maxField;
238 tmaxfd, stemax, deemax, epsil, stmin);
242 tmaxfd, stemax, deemax, epsil, stmin);
246 tmaxfd, stemax, deemax, epsil, stmin);
248 for (
int i = 0;
i < nFiberRings;
i++) {
251 tmaxfd, stemax, deemax, epsil, stmin);
254 for (
int i = 0;
i < nFiberPMTs;
i++) {
257 tmaxfd, stemax, deemax, epsil, stmin);
262 tmaxfd, stemax, deemax, epsil, stmin);
266 tmaxfd, stemax, deemax, epsil, stmin);
270 tmaxfd, stemax, deemax, epsil, stmin);
272 LOG(
debug) <<
"FV0 Detector::createMaterials(): matId = " << matId;