17 #include <TGeoManager.h> 60 if (
this == &reco)
return *
this;
61 ((TNamed *)
this)->operator=(reco);
87 Bool_t useMassForTracking,
92 if ( track->
Pt() < minpt )
95 if ( TMath::Abs(track->
Eta()) > 0.9 )
return kFALSE;
105 Double_t phi = track->
Phi()*TMath::RadToDeg();
106 if ( phi <= 10 || phi >= 250 )
return kFALSE;
122 Bool_t onlyTPC = kFALSE;
123 if ( mass == -99 ) onlyTPC=kTRUE;
128 else mass = esdt->
GetMass(onlyTPC);
133 else mass = aodt->
M();
149 Double_t xyz[3] = {0}, pxpypz[3] = {0}, cv[21] = {0};
165 Float_t etaout=-999, phiout=-999, ptout=-999;
176 if (!ret)
return kFALSE;
178 if ( TMath::Abs(etaout) > 0.75 )
return kFALSE;
183 if ( (phiout < 70*TMath::DegToRad()) || (phiout > 190*TMath::DegToRad()) )
return kFALSE;
215 eta = -999, phi = -999, pt = -999;
217 if (!trkParam)
return kFALSE;
221 Double_t trkPos[3] = {0.,0.,0.};
223 if (!trkParam->
GetXYZ(trkPos))
return kFALSE;
225 TVector3 trkPosVec(trkPos[0],trkPos[1],trkPos[2]);
227 eta = trkPosVec.Eta();
228 phi = trkPosVec.Phi();
232 phi += TMath::TwoPi();
251 const Float_t *clsPos,
260 if (!trkParam)
return kFALSE;
262 Double_t trkPos[3] = {0.,0.,0.};
263 TVector3
vec(clsPos[0],clsPos[1],clsPos[2]);
265 Float_t phi = vec.Phi();
268 phi += TMath::TwoPi();
271 Double_t alpha = ((int)(phi*TMath::RadToDeg()/20)+0.5)*20*TMath::DegToRad();
278 if (!trkParam->
GetXYZ(trkPos))
281 TVector3 clsPosVec(clsPos[0],clsPos[1],clsPos[2]);
282 TVector3 trkPosVec(trkPos[0],trkPos[1],trkPos[2]);
285 tmpPhi = clsPosVec.DeltaPhi(trkPosVec);
286 tmpEta = clsPosVec.Eta()-trkPosVec.Eta();
315 if (!cluster || !trkParam)
318 Float_t clsPos[3] = {0.,0.,0.};
341 Float_t arg = energy*1000/ ecr;
349 depth = x0 * (TMath::Log(arg) + 0.5);
356 depth = x0 * (TMath::Log(arg) - 0.5);
366 TGeoNodeMatrix *geoSM =
dynamic_cast<TGeoNodeMatrix *
>(geoXEn1->GetDaughter(iSM));
369 TGeoVolume *geoSMVol = geoSM->GetVolume();
370 TGeoShape *geoSMShape = geoSMVol->GetShape();
371 TGeoBBox *geoBox =
dynamic_cast<TGeoBBox *
>(geoSMShape);
372 if (geoBox) depth = 0.5 * geoBox->GetDX()*2 ;
375 else AliFatal(
"NULL GEANT node matrix");
382 depth = x0 * (TMath::Log(arg) - 0.5);
391 depth = x0 * (TMath::Log(arg) + 0.5);
virtual Double_t M() const
virtual Double_t Phi() const =0
const AliExternalTrackParam * GetInnerParam() const
Bool_t GetXYZ(Double_t *p) const
virtual Bool_t PxPyPz(Double_t p[3]) const
Bool_t GetXYZ(Double_t *p) const
Double_t GetMassForTracking() const
Int_t GetNumberOfSuperModules(void) const
Virtual class for calorimeter cluster data handling.
Float_t GetDepth(Float_t eCluster, Int_t iParticle, Int_t iSM) const
static Bool_t ExtrapolateTrackToCluster(AliExternalTrackParam *trkParam, const AliVCluster *cluster, Double_t mass, Double_t step, Float_t &tmpEta, Float_t &tmpPhi)
TGeoManager * gGeoManager
Bool_t GetCovarianceXYZPxPyPz(Double_t cv[21]) const
static Bool_t ExtrapolateTrackToPosition(AliExternalTrackParam *trkParam, const Float_t *clsPos, Double_t mass, Double_t step, Float_t &tmpEta, Float_t &tmpPhi)
Double_t GetMass(Bool_t tpcOnly=kFALSE) const
Some utilities for track matching.
static Bool_t PropagateTrackToBxByBz(AliExternalTrackParam *track, Double_t x, Double_t m, Double_t maxStep, Bool_t rotateTo=kTRUE, Double_t maxSnp=0.8, Int_t sign=0, Bool_t addTimeStep=kFALSE, Bool_t correctMaterialBudget=kTRUE)
virtual Bool_t XvYvZv(Double_t x[3]) const
#define AliFatal(message)
virtual Double_t Pt() const =0
virtual Short_t Charge() const
AliEMCALRecoUtilsBase & operator=(const AliEMCALRecoUtilsBase &)
static const int fgkEMCALModules
Number of modules, 12 for EMCal + 8 for DCAL.
static Bool_t ExtrapolateTrackToEMCalSurface(AliVTrack *track, Double_t emcalR=440, Double_t mass=0.1396, Double_t step=20, Double_t minpT=0.35, Bool_t useMassForTracking=kFALSE, Bool_t useDCA=kFALSE)
static AliEMCALGeometry * GetInstance()
virtual Double_t Eta() const =0
EMCal geometry, singleton.
Double_t GetMassForTracking() const
virtual void SetTrackPhiEtaPtOnEMCal(Double_t, Double_t, Double_t=-999)
virtual void GetPosition(Float_t *) const