64 float tmaxfdPolys = 0.1;
65 float stemaxPolys = .10000E+01;
66 float deemaxPolys = 0.1;
67 float epsilPolys = 1.0E-4;
68 float stminPolys = 0.0;
72 float aAir[4] = {12.0107, 14.0067, 15.9994, 39.948};
73 float zAir[4] = {6., 7., 8., 18.};
74 float wAir[4] = {0.000124, 0.755267, 0.231781, 0.012827};
75 float dAir = 1.20479E-3;
76 float dAir1 = 1.20479E-10;
79 o2::base::Detector::Medium(0,
"AIR", 0, 0, ifield, fieldm, tmaxfdPolys, stemaxPolys, deemaxPolys, epsilPolys, stminPolys);
82 float aPolys[2] = {1.0080, 12.0107};
83 float zPolys[2] = {1.f, 6};
84 float wPolys[2] = {0.077418, 0.922582};
88 o2::base::Detector::Medium(1,
"POLYSTYRENE", 1, 0, ifield, fieldm, tmaxfdPolys, stemaxPolys, deemaxPolys, epsilPolys, stminPolys);
147 if (!(fMC->TrackCharge())) {
151 int lay = vol->getVolumeId();
152 int volID = vol->getMCid();
156 if (fMC->IsTrackExiting() && (lay == 0)) {
160 stack->addTrackReference(tr);
162 bool startHit =
false, stopHit =
false;
163 unsigned char status = 0;
164 if (fMC->IsTrackEntering()) {
165 status |= Hit::kTrackEntering;
167 if (fMC->IsTrackInside()) {
168 status |= Hit::kTrackInside;
170 if (fMC->IsTrackExiting()) {
171 status |= Hit::kTrackExiting;
173 if (fMC->IsTrackOut()) {
174 status |= Hit::kTrackOut;
176 if (fMC->IsTrackStop()) {
177 status |= Hit::kTrackStopped;
179 if (fMC->IsTrackAlive()) {
180 status |= Hit::kTrackAlive;
184 if ((status & Hit::kTrackEntering) || (status & Hit::kTrackInside && !mTrackData.mHitStarted)) {
186 }
else if ((status & (Hit::kTrackExiting | Hit::kTrackOut | Hit::kTrackStopped))) {
192 mTrackData.mEnergyLoss += fMC->Edep();
194 if (!(startHit | stopHit)) {
199 mTrackData.mEnergyLoss = 0.;
200 fMC->TrackMomentum(mTrackData.mMomentumStart);
201 fMC->TrackPosition(mTrackData.mPositionStart);
202 mTrackData.mTrkStatusStart = status;
203 mTrackData.mHitStarted =
true;
206 TLorentzVector positionStop;
207 fMC->TrackPosition(positionStop);
209 int stave(0), halfstave(0), chipinmodule(0),
module;
210 fMC->CurrentVolOffID(1, chipinmodule);
211 fMC->CurrentVolOffID(2, module);
212 fMC->CurrentVolOffID(3, halfstave);
213 fMC->CurrentVolOffID(4, stave);
215 Hit* p =
addHit(
stack->GetCurrentTrackNumber(), lay, mTrackData.mPositionStart.Vect(), positionStop.Vect(),
216 mTrackData.mMomentumStart.Vect(), mTrackData.mMomentumStart.E(), positionStop.T(),
217 mTrackData.mEnergyLoss, mTrackData.mTrkStatusStart, status);
222 stack->addHit(GetDetId());
229 const TVector3& startMom,
double startE,
double endTime,
double eLoss,
unsigned char startStatus,
230 unsigned char endStatus)
232 mHits->emplace_back(trackID, detID, startPos, endPos, startMom, startE, endTime, eLoss, startStatus, endStatus);
233 return &(mHits->back());
void Mixture(Int_t imat, const char *name, Float_t *a, Float_t *z, Float_t dens, Int_t nlmat, Float_t *wmat)
void Medium(Int_t numed, const char *name, Int_t nmat, Int_t isvol, Int_t ifield, Float_t fieldm, Float_t tmaxfd, Float_t stemax, Float_t deemax, Float_t epsil, Float_t stmin, Float_t *ubuf=nullptr, Int_t nbuf=0)
o2::itsmft::Hit * addHit(int trackID, int detID, const TVector3 &startPos, const TVector3 &endPos, const TVector3 &startMom, double startE, double endTime, double eLoss, unsigned char startStatus, unsigned char endStatus)