25 #include "AliCodeTimer.h"
27 #include "TGeoManager.h"
28 #include "TGeoVolume.h"
29 #include "TGeoMatrix.h"
30 #include "TVirtualMC.h"
31 #include "TClonesArray.h"
32 #include "TGeoGlobalMagField.h"
34 #include "AliLoader.h"
35 #include "AliDetector.h"
42 #include "AliTrackReference.h"
48 #include "TObjArray.h"
61 fRecPointsPerPlane(0),
65 fChargeDispersion(25.e-4),
66 fSingleStepForChargeDispersion(0),
67 fNStepForChargeDispersion(4),
68 fDensitySupportOverSi(0.036),
69 fFileNameForUnderyingEvent(0),
70 fFileNameForPileUpEvents(0),
72 fUnderlyingEventID(-1),
86 AliDetector(name, title),
91 fRecPointsPerPlane(0),
95 fChargeDispersion(25.e-4),
96 fSingleStepForChargeDispersion(0),
97 fNStepForChargeDispersion(4),
98 fDensitySupportOverSi(0.036),
99 fFileNameForUnderyingEvent(0),
100 fFileNameForPileUpEvents(0),
102 fUnderlyingEventID(-1),
117 AliDetector(name, title),
122 fRecPointsPerPlane(0),
126 fChargeDispersion(25.e-4),
127 fSingleStepForChargeDispersion(0),
128 fNStepForChargeDispersion(4),
129 fDensitySupportOverSi(0.036),
130 fFileNameForUnderyingEvent(0),
131 fFileNameForPileUpEvents(0),
133 fUnderlyingEventID(-1)
173 AliDebug(1,
"Start MFT materials");
177 Float_t aSi = 28.085 , zSi = 14. , dSi = 2.329 , radSi = 21.82/dSi , absSi = 108.4/dSi ;
178 Float_t aCarb = 12.01 , zCarb = 6. , dCarb = 2.265 , radCarb = 18.8 , absCarb = 49.9 ;
179 Float_t aAlu = 26.98 , zAlu = 13. , dAlu = 2.70 , radAlu = 8.897 , absAlu = 39.70 ;
180 Float_t aBe = 9.012182 , zBe = 4. , dBe = 1.85 , radBe = 65.19/dBe , absBe = 77.8/dBe ;
181 Float_t aCu = 63.546 , zCu = 29. , dCu = 8.96 , radCu = 1.436 , absCu = 15.32 ;
184 const Int_t nAir = 4;
185 Float_t aAir[nAir] = {12, 14, 16, 36} , zAir[nAir] = {6, 7, 8, 18} , wAir[nAir]={0.000124, 0.755267, 0.231781, 0.012827} , dAir=0.00120479, dAirVacuum=0.00120479e-4;
188 const Int_t nWater = 2;
189 Float_t aWater[nWater] = {1.00794, 15.9994} , zWater[nWater] = {1, 8} , wWater[nWater] = {0.111894, 0.888106} , dWater=1.;
192 const Int_t nSiO2 = 2;
193 Float_t aSiO2[nSiO2] = {15.9994, 28.0855} , zSiO2[nSiO2] = {8., 14.} , wSiO2[nSiO2] = {0.532565, 0.467435} , dSiO2 = 2.20;
196 const Int_t nInox = 9;
197 Float_t aInox[nInox] = {12.0107, 54.9380, 28.0855, 30.9738, 32.0660, 58.6928, 51.9961, 95.9400, 55.8450} ;
198 Float_t zInox[nInox] = { 6, 25, 14, 15, 16, 28, 24, 42, 26 } ;
199 Float_t wInox[nInox] = {0.0003, 0.02, 0.01, 0.00045, 0.0003, 0.12, 0.17, 0.025, 0.65395} ;
200 Float_t dInox = 8.03;
203 Float_t aKapton[4]={1.00794,12.0107, 14.010,15.9994};
204 Float_t zKapton[4]={1.,6.,7.,8.};
205 Float_t wKapton[4]={0.026362,0.69113,0.07327,0.209235};
206 Float_t dKapton = 1.42;
209 Float_t aEpoxy[3] = {15.9994, 1.00794, 12.0107} ;
210 Float_t zEpoxy[3] = { 8., 1., 6.} ;
211 Float_t wEpoxy[3] = { 3., 19., 18.} ;
212 Float_t dEpoxy = 1.23;
216 Float_t aSE4445[5] = {28.0855, 26.981538, 15.9994, 12.0107, 1.00794} ;
217 Float_t zSE4445[5] = { 14., 13., 8., 6., 1.} ;
218 Float_t wSE4445[5] = { 5.531, 45.222, 43.351, 4.717, 1.172} ;
219 Float_t dSE4445 = 2.36;
222 Float_t aCM55J[4]={12.0107,14.0067,15.9994,1.00794};
223 Float_t zCM55J[4]={6.,7.,8.,1.};
224 Float_t wCM55J[4]={0.908508078,0.010387573,0.055957585,0.025146765};
225 Float_t dCM55J = 1.33;
228 const Int_t nRohacell = 3;
229 Float_t aRohacell[nRohacell] = {1.00794, 12.0107, 15.9994};
230 Float_t zRohacell[nRohacell] = {1., 6., 8.};
231 Float_t wRohacell[nRohacell] = {0.0858, 0.5964, 0.3178};
232 Float_t dRohacell = 0.032;
235 const Int_t nPolyimide = 4;
236 Float_t aPolyimide[nPolyimide] = {1.00794, 12.0107, 14.0067, 15.9994};
237 Float_t zPolyimide[nPolyimide] = {1, 6, 7, 8};
238 Float_t wPolyimide[nPolyimide] = {0.00942, 0.56089, 0.13082, 0.29887};
239 Float_t dPolyimide = 1.4;
242 const Int_t nPEEK = 3;
243 Float_t aPEEK[nPEEK] = {1.00794, 12.0107, 15.9994} ;
244 Float_t zPEEK[nPEEK] = {1, 6, 8} ;
245 Float_t wPEEK[nPEEK] = {0.06713, 0.40001, 0.53285} ;
246 Float_t dPEEK = 1.32;
249 const Int_t nFR4 = 5;
250 Float_t aFR4[nFR4] = {1.00794, 12.0107, 15.9994, 28.0855, 79.904} ;
251 Float_t zFR4[nFR4] = {1, 6, 8, 14, 35} ;
252 Float_t wFR4[nFR4] = {0.0684428, 0.278042,0.405633, 0.180774, 0.0671091} ;
262 Float_t aX7R[6]={137.327,47.867,15.9994,58.6928,63.5460,118.710};
263 Float_t zX7R[6]={56.,22.,8.,28.,29.,50.};
264 Float_t wX7R[6]={0.524732,0.176736,0.179282,0.079750,0.019750,0.019750};
265 Float_t dX7R = 6.07914;
269 Float_t aX7Rweld[2]={118.71 , 207.20};
270 Float_t zX7Rweld[2]={ 50. , 82. };
271 Float_t wX7Rweld[2]={ 0.60 , 0.40};
272 Float_t dX7Rweld = 8.52358;
276 Int_t unsens = 0, sens=1;
280 Float_t tmaxfd = -10.0;
281 Float_t stemax = 0.001;
282 Float_t deemax = -0.2;
283 Float_t epsil = 0.001;
284 Float_t stmin = -0.001;
286 Float_t tmaxfdSi = 0.1;
287 Float_t stemaxSi = 5.0e-4;
288 Float_t deemaxSi = 0.1;
289 Float_t epsilSi = 0.5e-4;
290 Float_t stminSi = -0.001;
292 Int_t fieldType = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
293 Double_t maxField = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
295 AliMixture(
kAir,
"Air$", aAir, zAir, dAir, nAir, wAir);
296 AliMedium(
kAir,
"Air$",
kAir, unsens, fieldType, maxField, tmaxfd, stemax, deemax, epsil, stmin);
299 AliMixture(
kVacuum,
"Vacuum$", aAir, zAir, dAirVacuum, nAir, wAir);
300 AliMedium(
kVacuum,
"Vacuum$",
kVacuum, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
302 AliMaterial(++matId,
"Si$", aSi, zSi, dSi, radSi, absSi);
303 AliMedium(
kSi,
"Si$", matId, sens, fieldType, maxField, tmaxfdSi, stemaxSi, deemaxSi, epsilSi, stminSi);
305 AliMaterial(++matId,
"Readout$", aSi, zSi, dSi, radSi, absSi);
306 AliMedium(
kReadout,
"Readout$", matId, unsens, fieldType, maxField, tmaxfdSi, stemaxSi, deemaxSi, epsilSi, stminSi);
308 AliMaterial(++matId,
"Support$", aSi, zSi, dSi*
fDensitySupportOverSi, radSi/fDensitySupportOverSi, absSi/fDensitySupportOverSi);
309 AliMedium(
kSupport,
"Support$", matId, unsens, fieldType, maxField, tmaxfdSi, stemaxSi, deemaxSi, epsilSi, stminSi);
311 Double_t maxBending = 0;
312 Double_t maxStepSize = 0.001;
313 Double_t maxEnergyLoss = 1;
314 Double_t precision = 0.001;
315 Double_t minStepSize = 0.001;
326 AliMaterial(matId,
"Carbon$", aCarb, zCarb, dCarb, radCarb, absCarb);
327 AliMedium(
kCarbon,
"Carbon$", matId,0,fieldType,maxField,maxBending,
328 maxStepSize,maxEnergyLoss,precision,minStepSize);
333 AliMaterial(++matId,
"Be$", aBe, zBe, dBe, radBe, absBe );
334 AliMedium(
kBe,
"Be$", matId, unsens, fieldType, maxField, tmaxfd, stemax, deemax, epsil, stmin);
336 AliMaterial(++matId,
"Alu$", aAlu, zAlu, dAlu, radAlu, absAlu);
337 AliMedium(
kAlu,
"Alu$", matId, unsens, fieldType, maxField, tmaxfd, stemax, deemax, epsil, stmin);
340 AliMixture(++matId,
"Water$", aWater, zWater, dWater, nWater, wWater);
341 AliMedium(
kWater,
"Water$", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
343 AliMixture(++matId,
"SiO2$", aSiO2, zSiO2, dSiO2, nSiO2, wSiO2);
344 AliMedium(
kSiO2,
"SiO2$", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
346 AliMixture(++matId,
"Inox$", aInox, zInox, dInox, nInox, wInox);
347 AliMedium(
kInox,
"Inox$", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
349 AliMixture(++matId,
"Kapton$", aKapton, zKapton, dKapton, 4, wKapton);
350 AliMedium(
kKapton,
"Kapton$", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
352 AliMixture(++matId,
"Epoxy$", aEpoxy, zEpoxy, dEpoxy, -3, wEpoxy);
353 AliMedium(
kEpoxy,
"Epoxy$", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
355 AliMixture(++matId,
"SE4445$", aSE4445, zSE4445, dSE4445, -5, wSE4445);
356 AliMedium(
kSE4445,
"SE4445$", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
358 AliMixture(++matId,
"CarbonFiber$",aCM55J,zCM55J,dCM55J,4,wCM55J);
359 AliMedium(
kCarbonEpoxy,
"CarbonFiber$", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
361 AliMixture(++matId,
"Rohacell", aRohacell, zRohacell, dRohacell, nRohacell, wRohacell);
362 AliMedium(
kRohacell,
"Rohacell", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
364 AliMixture(++matId,
"Polyimide", aPolyimide, zPolyimide, dPolyimide, nPolyimide, wPolyimide);
365 AliMedium(
kPolyimide,
"Polyimide", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
367 AliMixture(++matId,
"PEEK$", aPEEK, zPEEK, dPEEK, nPEEK, wPEEK);
368 AliMedium(
kPEEK,
"PEEK$", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
370 AliMixture(++matId,
"FR4$", aFR4, zFR4, dFR4, nFR4, wFR4);
371 AliMedium(
kFR4,
"FR4$", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
373 AliMaterial(++matId,
"Cu$", aCu, zCu, dCu, radCu, absCu);
374 AliMedium(
kCu,
"Cu$", matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
376 AliMixture(++matId,
"X7Rcapacitors$",aX7R,zX7R,dX7R,6,wX7R);
377 AliMedium(
kX7R,
"X7Rcapacitors$",matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
379 AliMixture(++matId,
"X7Rweld$",aX7Rweld,zX7Rweld,dX7Rweld,2,wX7Rweld);
380 AliMedium(
kX7Rw,
"X7Rweld$",matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
383 AliMaterial(++matId,
"CarbonFleece$",12.0107,6,0.4,radCarb,absCarb);
384 AliMedium(
kCarbonFleece,
"CarbonFleece$",matId, unsens, itgfld, maxfld, tmaxfd, stemax, deemax, epsil, stmin);
387 AliDebug(1,
"End MFT materials");
397 if(!TVirtualMC::GetMC()->IsRootGeometrySupported())
return;
417 TString sysName =
"MFT";
418 TString volPath =
"/ALIC_1/MFT_0";
420 if (!gGeoManager->SetAlignableEntry(sysName.Data(),volPath.Data())) {
421 AliFatal(Form(
"Alignable entry %s not created. Volume path %s not valid", sysName.Data(), volPath.Data()));
431 if (!(this->IsActive()))
return;
435 if (!seg) AliFatal(
"No segmentation available");
437 TVirtualMC* mc = fMC;
439 Double_t absQ = TMath::Abs(mc->TrackCharge());
440 if (absQ <= 0)
return;
446 int chipId=-1,ladderId=-1,diskId=-1,halfId=-1,level=0;
447 mc->CurrentVolOffID(++level,chipId);
448 mc->CurrentVolOffID(++level,ladderId);
449 mc->CurrentVolOffID(++level,diskId);
450 mc->CurrentVolOffID(++level,halfId);
452 AliDebug(1,Form(
"Found hit into half = %d; disk = %d; ladder = %d; chip = %d",halfId,diskId,ladderId,chipId));
454 if (mc->IsTrackExiting()) {
455 AddTrackReference(
gAlice->GetMCApp()->GetCurrentTrackNumber(), AliTrackReference::kMFT);
458 static TLorentzVector position, momentum;
464 if (mc->IsTrackInside()) status += 0x1<<0;
465 if (mc->IsTrackEntering()) status += 0x1<<1;
466 if (mc->IsTrackExiting()) status += 0x1<<2;
467 if (mc->IsTrackOut()) status += 0x1<<3;
468 if (mc->IsTrackDisappeared()) status += 0x1<<4;
469 if (mc->IsTrackStop()) status += 0x1<<5;
470 if (mc->IsTrackAlive()) status += 0x1<<6;
476 hit.SetTrack(
gAlice->GetMCApp()->GetCurrentTrackNumber());
478 mc->TrackPosition(position);
479 mc->TrackMomentum(momentum);
481 AliDebug(1, Form(
" %s Hit #%06d (x=%f, y=%f, z=%f) belongs to track %02d",
482 mc->CurrentVolName(), fNhits, position.X(), position.Y(), position.Z(),
gAlice->GetMCApp()->GetCurrentTrackNumber()));
485 hit.
SetTOF(mc->TrackTime());
515 AliCodeTimerAuto(
"",0);
517 AliDebug(1,
"Start Hits2SDigits.");
521 if (!seg) AliFatal(
"No segmentation available");
523 if (!fLoader->TreeH()) fLoader->LoadHits();
525 if (!fLoader->TreeS()) {
527 for (Int_t iEvt=0;iEvt<fLoader->GetRunLoader()->GetNumberOfEvents(); iEvt++) {
529 fLoader->GetRunLoader()->GetEvent(iEvt);
530 fLoader->MakeTree(
"S");
534 AliDebug(1, Form(
"Event %03d: fLoader->TreeH()->GetEntries() = %2d", iEvt, Int_t(fLoader->TreeH()->GetEntries())));
536 for (Int_t iTrack=0; iTrack<fLoader->TreeH()->GetEntries(); iTrack++) {
537 fLoader->TreeH()->GetEntry(iTrack);
541 fLoader->TreeS()->Fill();
542 fLoader->WriteSDigits(
"OVERWRITE");
548 fLoader->UnloadHits();
549 fLoader->UnloadSDigits();
551 AliDebug(1,
"Stop Hits2SDigits.");
561 AliDebug(1,
"Entering Hits2SDigitsLocal");
566 pSDigList[iPlane] = (TClonesArray*) (*pSDig)[iPlane];
567 AliDebug(1,Form(
"Entries of pSDigList %3d; plane: %02d,",pSDigList[iPlane]->GetEntries(),iPlane));
568 if (!track && pSDigList[iPlane]->GetEntries()!=0) AliErrorClass(
"Some of sdigits lists is not empty");
571 for (Int_t iHit=0; iHit<hits->GetEntries(); iHit++) {
588 AliDebug(2,Form(
"Hit at x,y,z = %f %f %f ",hit->X(), hit->Y(), hit->Z()));
590 mainSDigit->
SetPixID(xPixel, yPixel, 0);
592 Double_t xCenter, yCenter, zCenter;
596 AliDebug(2, Form(
"Created new sdigit (%f, %f, %f) from hit (%f, %f, %f)",
599 AliDebug(1,Form(
"Hit outside active area : hit x,y,z = %f ; %f ; %f --> Pixel %d ; %d ",hit->X(), hit->Y(), hit->Z(),xPixel,yPixel));
606 Double_t pi4 = TMath::Pi()/4.;
609 for (Int_t iAngle=0; iAngle<8; iAngle++) {
610 Double_t shiftX = shift*TMath::Cos(iAngle*pi4);
611 Double_t shiftY = shift*TMath::Sin(iAngle*pi4);
612 if (mftGeom->
Hit2PixelID(hit->X()+shiftX, hit->Y()+shiftY, hit->Z(), mainSDigit->
GetDetElemID(), xPixel, yPixel) ){
613 Bool_t digitExists = kFALSE;
614 for (Int_t iSideDigit=0; iSideDigit<
fSideDigits->GetEntries(); iSideDigit++) {
628 sideSDigit->
SetPixID(xPixel, yPixel, 0);
630 Double_t xCenter, yCenter, zCenter;
642 for (Int_t iSDigit=0; iSDigit<
fSideDigits->GetEntries(); iSDigit++) {
646 AliDebug(1,Form(
"Created new side sdigit (%f, %f, %f) from hit (%f, %f, %f)",
656 AliDebug(1,
"Exiting Hits2SDigitsLocal");
665 AliDebug(1, Form(
"Start with option= %s.",option));
667 const Int_t kBufSize = 4000;
669 const Char_t *cH = strstr(option,
"H");
670 const Char_t *cD = strstr(option,
"D");
671 const Char_t *cS = strstr(option,
"S");
673 if (cH && fLoader->TreeH()) {
675 MakeBranchInTree(fLoader->TreeH(),
"MFT", &fHits, kBufSize, 0);
678 if (cS && fLoader->TreeS()) {
681 Form(
"Plane_%02d",iPlane),
682 &((*fSDigitsPerPlane)[iPlane]),
686 if (cD && fLoader->TreeD()) {
689 Form(
"Plane_%02d",iPlane),
690 &((*fDigitsPerPlane)[iPlane]),
704 AliDebug(1,
"Start.");
706 AliDebug(1, Form(
"AliMFT::SetTreeAddress Hits fLoader->TreeH() = %p\n", fLoader->TreeH()));
707 if (fLoader->TreeH() && fLoader->TreeH()->GetBranch(
"MFT")) {
709 fLoader->TreeH()->SetBranchAddress(
"MFT", &fHits);
712 AliDebug(1, Form(
"AliMFT::SetTreeAddress SDigits fLoader->TreeS() = %p\n", fLoader->TreeS()));
713 if (fLoader->TreeS() && fLoader->TreeS()->GetBranch(
"Plane_00")) {
716 fLoader->TreeS()->SetBranchAddress(Form(
"Plane_%02d",iPlane), &((*
fSDigitsPerPlane)[iPlane]));
720 AliDebug(1, Form(
"AliMFT::SetTreeAddress Digits fLoader->TreeD() = %p\n", fLoader->TreeD()));
721 if (fLoader->TreeD() && fLoader->TreeD()->GetBranch(
"Plane_00")) {
724 fLoader->TreeD()->SetBranchAddress(Form(
"Plane_%02d",iPlane), &((*
fDigitsPerPlane)[iPlane]));
728 AliDebug(1, Form(
"AliMFT::SetTreeAddress RecPoints fLoader->TreeR() = %p\n", fLoader->TreeR()));
729 if (fLoader->TreeR() && fLoader->TreeR()->GetBranch(
"Plane_00")) {
732 fLoader->TreeR()->SetBranchAddress(Form(
"Plane_%02d",iPlane), &((*
fRecPointsPerPlane)[iPlane]));
760 AliDebug(1,
"AliMFT::CreateHits()");
763 fHits =
new TClonesArray(
"AliMFTHit");
773 AliDebug(1,
"AliMFT::CreateSDigits()");
789 AliDebug(1,
"AliMFT::CreateDigits()");
803 AliDebug(1,
"AliMFT::CreateRecPoints()");
Double_t fDensitySupportOverSi
Bool_t Hit2PixelID(Double_t xHit, Double_t yHit, Double_t zHit, Int_t detElemID, Int_t &xPixel, Int_t &yPixel) const
Returns the pixel ID corresponding to a hit at (x,y,z) in the ALICE global frame. ...
Double_t fSingleStepForChargeDispersion
static const Double_t kYPixelPitch
Pixel pitch along Y.
Int_t GetDetElemID() const
TObjArray * GetSDigitsList() const
void SetDetElemID(Int_t detElemID)
void SetEloss(Double_t sig)
virtual Int_t GetPlane() const
void AddAlignableVolumes()
virtual void SetDetElemID(Int_t detElemID)
void Hits2SDigitsLocal(TClonesArray *hits, const TObjArray *pSDig, Int_t track)
UInt_t GetObjectID(ObjectTypes type, Int_t half=0, Int_t disk=0, Int_t ladder=0, Int_t chip=0) const
Returns the object Unique ID.
Double_t fChargeDispersion
static const Double_t kSensorThickness
CMOS Sensor Thickness.
AliMFTSegmentation * GetSegmentation() const
Returns pointer to the segmentation.
static const Double_t kXPixelPitch
Pixel pitch along X.
Short_t fPileUpEventsIDs[AliMFTConstants::fNMaxPileUpEvents]
void GetPixelCenter(Int_t xPixel, Int_t yPixel, Int_t detElemID, Double_t &xCenter, Double_t &yCenter, Double_t &zCenter) const
Returns the center of the pixel position in the ALICE global frame.
void Build()
Builf both the Virtual segmentation and the real volumes Real part is delegates to AliMFTGeometryBuil...
Double_t GetPixelCenterX() const
virtual void SetPlane(Int_t plane)
Double_t GetPixelCenterY() const
void SetPixWidth(Double_t pixelWidthX, Double_t pixelWidthY, Double_t pixelWidthZ)
Int_t fNStepForChargeDispersion
void SetPlane(Int_t plane)
virtual void SetTOF(Double_t time)
virtual void SetEloss(Double_t energy)
static AliMFTGeometry * Instance()
Retuns MFT Geometry singleton object.
virtual void SetPosition(TLorentzVector &x)
void AddMCLabel(Int_t label)
TClonesArray * fSideDigits
TObjArray * fDigitsPerPlane
void SetPixCenter(Double_t pixelCenterX, Double_t pixelCenterY, Double_t pixelCenterZ)
Double_t GetPixelCenterZ() const
virtual void SetStatus(Int_t status)
virtual Double_t GetEloss() const
Class for the virtual segmentation of the ALICE Muon Forward Tracker.
static const Int_t fNMaxPileUpEvents
TObjArray * fSDigitsPerPlane
AliMFTGeomTGeo * fGeomTGeo
static const Int_t kNDisks
Number of Disk.
void SetPixID(Int_t pixelX, Int_t pixelY, Int_t pixelZ)
void MakeBranch(Option_t *option="")
virtual void SetMomentum(TLorentzVector &p)
virtual Int_t GetDetElemID() const
Class Handling both Virutal Segmentation and Real Volumes.
Int_t GetSensorVolumeID() const
Returns TGeo ID of the volume describing the sensors.
TObjArray * fRecPointsPerPlane