Patch for AOD to keep the extrapolated pT at
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 16 May 2013 06:55:53 +0000 (06:55 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 16 May 2013 06:55:53 +0000 (06:55 +0000)
the EMCAL surface, and a change of the mean surface from 430cm
to 440cm.
Gustavo Conesa
Salvatore Aiola

13 files changed:
ANALYSIS/AliAnalysisTaskESDfilter.cxx
ANALYSIS/AliAnalysisTaskESDfilter.h
EMCAL/AliEMCALRecoUtils.cxx
EMCAL/AliEMCALRecoUtils.h
EMCAL/AliEMCALTracker.cxx
EMCAL/AliEMCALTracker.h
PWG/EMCAL/AliEmcalTrackPropagatorTask.cxx
PWGGA/CaloTasks/AliAnalysisTaskCaloFilter.cxx
STEER/AOD/AliAODTrack.cxx
STEER/AOD/AliAODTrack.h
STEER/ESD/AliESDtrack.cxx
STEER/ESD/AliESDtrack.h
STEER/STEERBase/AliVTrack.h

index 52f8fc9..f92e5a8 100644 (file)
@@ -115,7 +115,8 @@ AliAnalysisTaskESDfilter::AliAnalysisTaskESDfilter():
   fESDpid(0x0),
   fIsPidOwner(kFALSE),
   fTPCaloneTrackCuts(0),
-  fDoPropagateTrackToEMCal(kTRUE)
+  fDoPropagateTrackToEMCal(kTRUE),
+  fEMCalSurfaceDistance(440)
 {
   // Default constructor
     fV0Cuts[0] =  33.   ;   // max allowed chi2
@@ -186,7 +187,8 @@ AliAnalysisTaskESDfilter::AliAnalysisTaskESDfilter(const char* name):
     fESDpid(0x0),
     fIsPidOwner(kFALSE),
     fTPCaloneTrackCuts(0),
-  fDoPropagateTrackToEMCal(kTRUE)
+    fDoPropagateTrackToEMCal(kTRUE),
+    fEMCalSurfaceDistance(440)
 {
   // Constructor
 
@@ -1235,7 +1237,7 @@ void AliAnalysisTaskESDfilter::ConvertTPCOnlyTracks(const AliESDEvent& esd)
 
     //Perform progagation of tracks if needed
     if(fDoPropagateTrackToEMCal) PropagateTrackToEMCal(esdTrack);
-    aodTrack->SetTrackPhiEtaOnEMCal(esdTrack->GetTrackPhiOnEMCal(),esdTrack->GetTrackEtaOnEMCal());
+    aodTrack->SetTrackPhiEtaPtOnEMCal(esdTrack->GetTrackPhiOnEMCal(),esdTrack->GetTrackEtaOnEMCal(),esdTrack->GetTrackPtOnEMCal());
 
     // do not duplicate PID information 
     //    aodTrack->ConvertAliPIDtoAODPID();
@@ -1389,7 +1391,7 @@ void AliAnalysisTaskESDfilter::ConvertGlobalConstrainedTracks(const AliESDEvent&
 
     //Perform progagation of tracks if needed
     if(fDoPropagateTrackToEMCal) PropagateTrackToEMCal(esdTrack);
-    aodTrack->SetTrackPhiEtaOnEMCal(esdTrack->GetTrackPhiOnEMCal(),esdTrack->GetTrackEtaOnEMCal());
+    aodTrack->SetTrackPhiEtaPtOnEMCal(esdTrack->GetTrackPhiOnEMCal(),esdTrack->GetTrackEtaOnEMCal(),esdTrack->GetTrackPtOnEMCal());
   } // end of loop on tracks
   
 }
@@ -1460,7 +1462,7 @@ void AliAnalysisTaskESDfilter::ConvertTracks(const AliESDEvent& esd)
 
     //Perform progagation of tracks if needed
     if(fDoPropagateTrackToEMCal) PropagateTrackToEMCal(esdTrack);
-    aodTrack->SetTrackPhiEtaOnEMCal(esdTrack->GetTrackPhiOnEMCal(),esdTrack->GetTrackEtaOnEMCal());
+    aodTrack->SetTrackPhiEtaPtOnEMCal(esdTrack->GetTrackPhiOnEMCal(),esdTrack->GetTrackEtaOnEMCal(),esdTrack->GetTrackPtOnEMCal());
 
     fAODTrackRefs->AddAt(aodTrack, nTrack);
     
@@ -1476,7 +1478,7 @@ void AliAnalysisTaskESDfilter::ConvertTracks(const AliESDEvent& esd)
 void AliAnalysisTaskESDfilter::PropagateTrackToEMCal(AliESDtrack *esdTrack)
 {
   Double_t trkPos[3] = {0.,0.,0.};
-  Double_t EMCalEta=-999, EMCalPhi=-999;
+  Double_t EMCalEta=-999, EMCalPhi=-999, EMCalPt=-999;
   Double_t trkphi = esdTrack->Phi()*TMath::RadToDeg();
   if(TMath::Abs(esdTrack->Eta())<0.9 && trkphi > 10 && trkphi < 250 )
     {
@@ -1484,14 +1486,15 @@ void AliAnalysisTaskESDfilter::PropagateTrackToEMCal(AliESDtrack *esdTrack)
       if(trkParam)
        {
          AliExternalTrackParam trkParamTmp(*trkParam);
-         if(AliTrackerBase::PropagateTrackToBxByBz(&trkParamTmp, 430, esdTrack->GetMass(), 20, kTRUE, 0.8, -1))
+         if(AliTrackerBase::PropagateTrackToBxByBz(&trkParamTmp, fEMCalSurfaceDistance, esdTrack->GetMass(), 20, kTRUE, 0.8, -1))
            {
              trkParamTmp.GetXYZ(trkPos);
              TVector3 trkPosVec(trkPos[0],trkPos[1],trkPos[2]);
              EMCalEta = trkPosVec.Eta();
              EMCalPhi = trkPosVec.Phi();
+             EMCalPt = trkPosVec.Pt();
              if(EMCalPhi<0)  EMCalPhi += 2*TMath::Pi();
-             esdTrack->SetTrackPhiEtaOnEMCal(EMCalPhi,EMCalEta);
+             esdTrack->SetTrackPhiEtaPtOnEMCal(EMCalPhi,EMCalEta,EMCalPt);
            }
        }
     }
index ce9eef5..3a52e63 100644 (file)
@@ -89,6 +89,7 @@ class AliAnalysisTaskESDfilter : public AliAnalysisTaskSE
   void EnableV0CascadeVerticesReco() { fIsV0CascadeRecoEnabled = kTRUE; }
 
   void SetPropagateTrackToEMCal(Bool_t propagate) {fDoPropagateTrackToEMCal = propagate;}
+  void SetEMCalSurfaceDistance(Double_t d) {fEMCalSurfaceDistance = d;}
 
   
 private:
@@ -175,7 +176,8 @@ private:
   AliESDtrackCuts* fTPCaloneTrackCuts; // TPC stand-alone track cuts
   Double_t        fV0Cuts[7];       // Array to store the values for the different reco selections V0 related
   Double_t        fCascadeCuts[8];  // Array to store the values for the different reco selections cascades related
-  Bool_t fDoPropagateTrackToEMCal;  // whether or not to propagate the tracks to EMCal surface (430cm) -- true by default
+  Bool_t fDoPropagateTrackToEMCal;  // whether or not to propagate the tracks to the EMCal surface -- true by default
+  Double_t fEMCalSurfaceDistance;   // EMCal surface distance from the center of the detector (r = 440 by default)
   
   
   ClassDef(AliAnalysisTaskESDfilter, 16); // Analysis task for standard ESD filtering
index a15f430..d00ac19 100644 (file)
@@ -78,7 +78,7 @@ AliEMCALRecoUtils::AliEMCALRecoUtils():
   fCutR(0),                               fCutEta(0),                             fCutPhi(0),
   fClusterWindow(0),                      fMass(0),                           
   fStepSurface(0),                        fStepCluster(0),
-  fITSTrackSA(kFALSE),
+  fITSTrackSA(kFALSE),                    fEMCalSurfaceDistance(430.),
   fTrackCutsType(0),                      fCutMinTrackPt(0),                      fCutMinNClusterTPC(0), 
   fCutMinNClusterITS(0),                  fCutMaxChi2PerClusterTPC(0),            fCutMaxChi2PerClusterITS(0),
   fCutRequireTPCRefit(kFALSE),            fCutRequireITSRefit(kFALSE),            fCutAcceptKinkDaughters(kFALSE),
@@ -129,7 +129,7 @@ AliEMCALRecoUtils::AliEMCALRecoUtils(const AliEMCALRecoUtils & reco)
   fCutR(reco.fCutR),        fCutEta(reco.fCutEta),           fCutPhi(reco.fCutPhi),
   fClusterWindow(reco.fClusterWindow),
   fMass(reco.fMass),        fStepSurface(reco.fStepSurface), fStepCluster(reco.fStepCluster),
-  fITSTrackSA(reco.fITSTrackSA),
+  fITSTrackSA(reco.fITSTrackSA),                             fEMCalSurfaceDistance(430.),
   fTrackCutsType(reco.fTrackCutsType),                       fCutMinTrackPt(reco.fCutMinTrackPt), 
   fCutMinNClusterTPC(reco.fCutMinNClusterTPC),               fCutMinNClusterITS(reco.fCutMinNClusterITS), 
   fCutMaxChi2PerClusterTPC(reco.fCutMaxChi2PerClusterTPC),   fCutMaxChi2PerClusterITS(reco.fCutMaxChi2PerClusterITS),
@@ -206,7 +206,8 @@ AliEMCALRecoUtils & AliEMCALRecoUtils::operator = (const AliEMCALRecoUtils & rec
   fMass                      = reco.fMass;
   fStepSurface               = reco.fStepSurface;
   fStepCluster               = reco.fStepCluster;
-  fITSTrackSA                = reco.fITSTrackSA;  
+  fITSTrackSA                = reco.fITSTrackSA;
+  fEMCalSurfaceDistance      = reco.fEMCalSurfaceDistance;
   
   fTrackCutsType             = reco.fTrackCutsType;
   fCutMinTrackPt             = reco.fCutMinTrackPt;
@@ -1926,8 +1927,8 @@ void AliEMCALRecoUtils::FindMatches(AliVEvent *event,
 
     //Extrapolate the track to EMCal surface
     AliExternalTrackParam emcalParam(*trackParam);
-    Float_t eta, phi;
-    if(!ExtrapolateTrackToEMCalSurface(&emcalParam, 430., fMass, fStepSurface, eta, phi)) 
+    Float_t eta, phi, pt;
+    if(!ExtrapolateTrackToEMCalSurface(&emcalParam, fEMCalSurfaceDistance, fMass, fStepSurface, eta, phi, pt)) 
       {
   if(aodevent && trackParam) delete trackParam;
   if(fITSTrackSA && trackParam) delete trackParam;
@@ -2005,9 +2006,9 @@ Int_t AliEMCALRecoUtils::FindMatchedClusterInEvent(const AliESDtrack *track,
     
   if(!trackParam) return index;
   AliExternalTrackParam emcalParam(*trackParam);
-  Float_t eta, phi;
+  Float_t eta, phi, pt;
 
-  if(!ExtrapolateTrackToEMCalSurface(&emcalParam, 430., fMass, fStepSurface, eta, phi))        {
+  if(!ExtrapolateTrackToEMCalSurface(&emcalParam, fEMCalSurfaceDistance, fMass, fStepSurface, eta, phi, pt))   {
        if(fITSTrackSA) delete trackParam;
        return index;
   }
@@ -2101,11 +2102,12 @@ Bool_t AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(AliExternalTrackParam *
                                                          const Double_t mass, 
                                                          const Double_t step, 
                                                          Float_t &eta, 
-                                                         Float_t &phi)
+                                                         Float_t &phi,
+                                                        Float_t &pt)
 {
   //Extrapolate track to EMCAL surface
   
-  eta = -999, phi = -999;
+  eta = -999, phi = -999, pt = -999;
   if(!trkParam) return kFALSE;
   if(!AliTrackerBase::PropagateTrackToBxByBz(trkParam, emcalR, mass, step, kTRUE, 0.8, -1)) return kFALSE;
   Double_t trkPos[3] = {0.,0.,0.};
@@ -2113,6 +2115,7 @@ Bool_t AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(AliExternalTrackParam *
   TVector3 trkPosVec(trkPos[0],trkPos[1],trkPos[2]);
   eta = trkPosVec.Eta();
   phi = trkPosVec.Phi();
+  pt = trkParam->Pt();
   if(phi<0)
     phi += 2*TMath::Pi();
 
index 4580137..c75f105 100644 (file)
@@ -266,7 +266,7 @@ public:
   
   static Bool_t ExtrapolateTrackToEMCalSurface(AliExternalTrackParam *trkParam, 
                                                const Double_t emcalR, const Double_t mass, const Double_t step, 
-                                               Float_t &eta, Float_t &phi);
+                                               Float_t &eta, Float_t &phi, Float_t &pt);
   static Bool_t ExtrapolateTrackToPosition(AliExternalTrackParam *trkParam, const Float_t *clsPos, 
                                            const Double_t mass, const Double_t step, 
                                            Float_t &tmpEta, Float_t &tmpPhi);
@@ -304,6 +304,7 @@ public:
   void     SetCutPhi(Float_t cutPhi)                  { fCutPhi = cutPhi              ; }
   void     SetClusterWindow(Double_t window)          { fClusterWindow = window       ; }
   void     SetCutZ(Float_t cutZ)                      { printf("Obsolete fucntion of cutZ=%1.1f\n",cutZ) ; } //Obsolete
+  void     SetEMCalSurfaceDistance(Double_t d)        { fEMCalSurfaceDistance = d     ; }
 
   Double_t GetMass()                            const { return fMass                  ; }
   Double_t GetStep()                            const { return fStepCluster           ; }
@@ -454,6 +455,7 @@ private:
   Double_t   fStepSurface;               // Length of step to extrapolate tracks to EMCal surface
   Double_t   fStepCluster;               // Length of step to extrapolate tracks to clusters
   Bool_t     fITSTrackSA;                // If track matching is to be done with ITS tracks standing alone     
+  Double_t   fEMCalSurfaceDistance;      // EMCal surface distance (= 430 by default, the last 10 cm are propagated on a cluster-track pair basis)
  
   // Track cuts  
   Int_t      fTrackCutsType;             // Esd track cuts type for matching
@@ -472,7 +474,7 @@ private:
   Bool_t     fCutRequireITSpureSA;      // ITS pure standalone tracks
   
   
-  ClassDef(AliEMCALRecoUtils, 20)
+  ClassDef(AliEMCALRecoUtils, 21)
   
 };
 
index 6229a45..167cd9f 100644 (file)
@@ -73,6 +73,7 @@ AliEMCALTracker::AliEMCALTracker()
   fCutNTPC(50),
   fStep(20),
   fTrackCorrMode(kTrackCorrMMB),
+  fEMCalSurfaceDistance(440),
   fClusterWindow(50),
   fCutEta(0.025),
   fCutPhi(0.05),
@@ -99,6 +100,7 @@ AliEMCALTracker::AliEMCALTracker(const AliEMCALTracker& copy)
     fCutNTPC(copy.fCutNTPC),
     fStep(copy.fStep),
     fTrackCorrMode(copy.fTrackCorrMode),
+    fEMCalSurfaceDistance(copy.fEMCalSurfaceDistance),
     fClusterWindow(copy.fClusterWindow),
     fCutEta(copy.fCutEta),
     fCutPhi(copy.fCutPhi),
@@ -405,12 +407,12 @@ Int_t AliEMCALTracker::FindMatchedCluster(AliESDtrack *track)
   if(!trkParam) return index;
   
   AliExternalTrackParam trkParamTmp(*trkParam);
-  Float_t eta, phi;
-  if(!AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(&trkParamTmp, 430., track->GetMass(kTRUE), fStep, eta, phi))  {
+  Float_t eta, phi, pt;
+  if(!AliEMCALRecoUtils::ExtrapolateTrackToEMCalSurface(&trkParamTmp, fEMCalSurfaceDistance, track->GetMass(kTRUE), fStep, eta, phi, pt))  {
        if(fITSTrackSA) delete trkParam;
        return index;
   }
-  track->SetTrackPhiEtaOnEMCal(phi,eta);
+  track->SetTrackPhiEtaPtOnEMCal(phi,eta,pt);
   if(TMath::Abs(eta)>0.75 || (phi) < 70*TMath::DegToRad() || (phi) > 190*TMath::DegToRad()){
         if(fITSTrackSA) delete trkParam;
        return index;
index e7ab88b..bebb7a9 100644 (file)
@@ -62,6 +62,7 @@ public:
        void                SetCutNTPC(Double_t value) {fCutNTPC=value;}
        void                SetStepLength(Float_t length) {fStep=length;}
        void                SetTrackCorrectionMode(Option_t *option);
+       void                SetEMCalSurfaceDistance(Double_t d) {fEMCalSurfaceDistance = d;}
 
        enum {  kUnmatched = -99999 };
        
@@ -97,6 +98,7 @@ private:
        
        Float_t     fStep;            // Length of each step in propagation
        ETrackCorr  fTrackCorrMode;   // Material budget correction mode
+       Float_t     fEMCalSurfaceDistance; // EMCal surface distance
        Double_t    fClusterWindow;   // Select clusters in the window to be matched to tracks
        Double_t    fCutEta;          // cut on eta difference
        Double_t    fCutPhi;          // cut on phi difference
@@ -107,7 +109,7 @@ private:
        
        AliEMCALGeometry *fGeom;      //! EMCAL geometry
        
-       ClassDef(AliEMCALTracker, 6)  // EMCAL "tracker"
+       ClassDef(AliEMCALTracker, 7)  // EMCAL "tracker"
 };
 
 #endif
index 4a53c40..408368b 100644 (file)
@@ -109,19 +109,20 @@ void AliEmcalTrackPropagatorTask::UserExec(Option_t *)
 
     // Extrapolate the track to EMCal surface
     AliExternalTrackParam emcalParam(*trackParam);
-    Float_t etaout=-999, phiout=-999;
+    Float_t etaout=-999, phiout=-999, ptout=-999;
     Bool_t ret = fRecoUtils->ExtrapolateTrackToEMCalSurface(&emcalParam, 
                                                             fDist, 
                                                             fRecoUtils->GetMass(), 
                                                             fRecoUtils->GetStepSurface(), 
                                                             etaout, 
-                                                            phiout);
+                                                            phiout,
+                                                           ptout);
     if (!ret)
       continue;
     if (TMath::Abs(etaout)>0.75 || (phiout<70*TMath::DegToRad()) || (phiout>190*TMath::DegToRad()))
       continue;
     eTrack->SetOuterParam(&emcalParam,AliExternalTrackParam::kMultSec);
-    eTrack->SetTrackPhiEtaOnEMCal(phiout, etaout);
+    eTrack->SetTrackPhiEtaPtOnEMCal(phiout, etaout, ptout);
     eTrack->SetStatus(AliVTrack::kEMCALmatch);
   }
 }
index 6bc5891..5497827 100644 (file)
@@ -785,7 +785,7 @@ void AliAnalysisTaskCaloFilter::FillAODTracks()
       
       if(track->IsEMCAL()) aodTrack->SetEMCALcluster(track->GetEMCALcluster());
       if(track->IsPHOS())  aodTrack->SetPHOScluster (track->GetPHOScluster());
-      aodTrack->SetTrackPhiEtaOnEMCal( track->GetTrackPhiOnEMCal(),  track->GetTrackPhiOnEMCal() );
+      aodTrack->SetTrackPhiEtaPtOnEMCal( track->GetTrackPhiOnEMCal(),  track->GetTrackPhiOnEMCal(),  track->GetTrackPtOnEMCal() );
           
     } 
     
index 0fab45e..70c2c05 100644 (file)
@@ -62,6 +62,7 @@ AliAODTrack::AliAODTrack() :
   fProdVertex(NULL),
   fTrackPhiOnEMCal(-999),
   fTrackEtaOnEMCal(-999),
+  fTrackPtOnEMCal(-999),
   fTPCsignalTuned(0),
   fTOFsignalTuned(99999),
   fAODEvent(NULL)
@@ -120,6 +121,7 @@ AliAODTrack::AliAODTrack(Short_t id,
   fProdVertex(prodVertex),
   fTrackPhiOnEMCal(-999),
   fTrackEtaOnEMCal(-999),
+  fTrackPtOnEMCal(-999),
   fTPCsignalTuned(0),
   fTOFsignalTuned(99999),
   fAODEvent(NULL)
@@ -182,6 +184,7 @@ AliAODTrack::AliAODTrack(Short_t id,
   fProdVertex(prodVertex),
   fTrackPhiOnEMCal(-999),
   fTrackEtaOnEMCal(-999),
+  fTrackPtOnEMCal(-999),
   fTPCsignalTuned(0),
   fTOFsignalTuned(99999),
   fAODEvent(NULL)
@@ -239,6 +242,7 @@ AliAODTrack::AliAODTrack(const AliAODTrack& trk) :
   fProdVertex(trk.fProdVertex),
   fTrackPhiOnEMCal(trk.fTrackPhiOnEMCal),
   fTrackEtaOnEMCal(trk.fTrackEtaOnEMCal),
+  fTrackPtOnEMCal(trk.fTrackPtOnEMCal),
   fTPCsignalTuned(trk.fTPCsignalTuned),
   fTOFsignalTuned(trk.fTOFsignalTuned),
   fAODEvent(trk.fAODEvent)
@@ -292,6 +296,7 @@ AliAODTrack& AliAODTrack::operator=(const AliAODTrack& trk)
     fCaloIndex         = trk.fCaloIndex;
     fTrackPhiOnEMCal   = trk.fTrackPhiOnEMCal;
     fTrackEtaOnEMCal   = trk.fTrackEtaOnEMCal;
+    fTrackPtOnEMCal    = trk.fTrackPtOnEMCal;
     fTPCsignalTuned    = trk.fTPCsignalTuned;
     fTOFsignalTuned    = trk.fTOFsignalTuned;
 
index 3f0f0c2..cea011a 100644 (file)
@@ -279,7 +279,9 @@ class AliAODTrack : public AliVTrack {
 
   Double_t GetTrackPhiOnEMCal() const {return fTrackPhiOnEMCal;}
   Double_t GetTrackEtaOnEMCal() const {return fTrackEtaOnEMCal;}
-  void SetTrackPhiEtaOnEMCal(Double_t phi,Double_t eta) {fTrackPhiOnEMCal=phi;fTrackEtaOnEMCal=eta;}
+  Double_t GetTrackPtOnEMCal() const {return fTrackPtOnEMCal;}
+  Double_t GetTrackPOnEMCal() const {return fTrackPtOnEMCal*TMath::CosH(fTrackEtaOnEMCal);}
+  void SetTrackPhiEtaPtOnEMCal(Double_t phi,Double_t eta,Double_t pt) {fTrackPhiOnEMCal=phi;fTrackEtaOnEMCal=eta;fTrackPtOnEMCal=pt;}
 
   Int_t GetPHOScluster() const {return fCaloIndex;}
   void SetPHOScluster(Int_t index) {fCaloIndex=index;}
@@ -449,15 +451,16 @@ class AliAODTrack : public AliVTrack {
   mutable const AliDetectorPID* fDetectorPID; //! transient object to cache calibrated PID information
   TRef          fProdVertex;        // vertex of origin
 
-  Double_t      fTrackPhiOnEMCal;   // phi of track after being propagated to 430cm
-  Double_t      fTrackEtaOnEMCal;   // eta of track after being propagated to 430cm
+  Double_t      fTrackPhiOnEMCal;   // phi of track after being propagated to the EMCal surface (default r = 440 cm)
+  Double_t      fTrackEtaOnEMCal;   // eta of track after being propagated to the EMCal surface (default r = 440 cm)
+  Double_t      fTrackPtOnEMCal;    // pt of track after being propagated to the EMCal surface (default r = 440 cm)
 
   Double_t      fTPCsignalTuned;    //! TPC signal tuned on data when using MC
   Double_t      fTOFsignalTuned;    //! TOF signal tuned on data when using MC
 
   const AliAODEvent* fAODEvent;     //! 
 
-  ClassDef(AliAODTrack, 21);
+  ClassDef(AliAODTrack, 22);
 };
 
 inline Bool_t  AliAODTrack::IsPrimaryCandidate() const
index 1a57c6c..527695e 100644 (file)
@@ -243,7 +243,8 @@ AliESDtrack::AliESDtrack() :
   fCacheChi2TPCConstrainedVsGlobalVertex(0),
   fDetectorPID(0x0),
   fTrackPhiOnEMCal(-999),
-  fTrackEtaOnEMCal(-999)
+  fTrackEtaOnEMCal(-999),
+  fTrackPtOnEMCal(-999)
 {
   //
   // The default ESD constructor 
@@ -360,7 +361,8 @@ AliESDtrack::AliESDtrack(const AliESDtrack& track):
   fCacheChi2TPCConstrainedVsGlobalVertex(track.fCacheChi2TPCConstrainedVsGlobalVertex),
   fDetectorPID(0x0),
   fTrackPhiOnEMCal(track.fTrackPhiOnEMCal),
-  fTrackEtaOnEMCal(track.fTrackEtaOnEMCal)
+  fTrackEtaOnEMCal(track.fTrackEtaOnEMCal),
+  fTrackPtOnEMCal(track.fTrackPtOnEMCal)
 {
   //
   //copy constructor
@@ -490,7 +492,8 @@ AliESDtrack::AliESDtrack(const AliVTrack *track) :
   fCacheChi2TPCConstrainedVsGlobalVertex(0),
   fDetectorPID(0x0),
   fTrackPhiOnEMCal(-999),
-  fTrackEtaOnEMCal(-999)
+  fTrackEtaOnEMCal(-999),
+  fTrackPtOnEMCal(-999)
 {
   //
   // ESD track from AliVTrack.
@@ -589,7 +592,7 @@ AliESDtrack::AliESDtrack(const AliVTrack *track) :
   track->GetIntegratedTimes(expt);
   SetIntegratedTimes(expt);
   //
-  SetTrackPhiEtaOnEMCal(track->GetTrackPhiOnEMCal(),track->GetTrackEtaOnEMCal());
+  SetTrackPhiEtaPtOnEMCal(track->GetTrackPhiOnEMCal(),track->GetTrackEtaOnEMCal(),track->GetTrackPtOnEMCal());
   //
   SetLabel(track->GetLabel());
   // Set the status
@@ -680,7 +683,8 @@ AliESDtrack::AliESDtrack(TParticle * part) :
   fCacheChi2TPCConstrainedVsGlobalVertex(0),
   fDetectorPID(0x0),
   fTrackPhiOnEMCal(-999),
-  fTrackEtaOnEMCal(-999)
+  fTrackEtaOnEMCal(-999),
+  fTrackPtOnEMCal(-999)
 {
   //
   // ESD track from TParticle
@@ -1038,6 +1042,7 @@ AliESDtrack &AliESDtrack::operator=(const AliESDtrack &source){
   
   fTrackPhiOnEMCal= source.fTrackPhiOnEMCal;
   fTrackEtaOnEMCal= source.fTrackEtaOnEMCal;
+  fTrackPtOnEMCal= source.fTrackPtOnEMCal;
 
   return *this;
 }
index 8726785..b6df8cd 100644 (file)
@@ -362,7 +362,9 @@ public:
   
   Double_t GetTrackPhiOnEMCal() const {return fTrackPhiOnEMCal;}
   Double_t GetTrackEtaOnEMCal() const {return fTrackEtaOnEMCal;}
-  void SetTrackPhiEtaOnEMCal(Double_t phi,Double_t eta) {fTrackPhiOnEMCal=phi;fTrackEtaOnEMCal=eta;}
+  Double_t GetTrackPtOnEMCal() const {return fTrackPtOnEMCal;}
+  Double_t GetTrackPOnEMCal() const {return fTrackPtOnEMCal*TMath::CosH(fTrackEtaOnEMCal);}
+  void SetTrackPhiEtaPtOnEMCal(Double_t phi,Double_t eta,Double_t pt) {fTrackPhiOnEMCal=phi;fTrackEtaOnEMCal=eta;fTrackPtOnEMCal=pt;}
 
   Int_t GetPHOScluster() const {return fCaloIndex;}
   void SetPHOScluster(Int_t index) {fCaloIndex=index;}
@@ -547,14 +549,15 @@ protected:
 
   mutable const AliDetectorPID* fDetectorPID; //! transient object to cache PID information
 
-  Double_t fTrackPhiOnEMCal;   // phi of track after being propagated to 430cm
-  Double_t fTrackEtaOnEMCal;   // eta of track after being propagated to 430cm
+  Double_t      fTrackPhiOnEMCal;   // phi of track after being propagated to the EMCal surface (default r = 440 cm)
+  Double_t      fTrackEtaOnEMCal;   // eta of track after being propagated to the EMCal surface (default r = 440 cm)
+  Double_t      fTrackPtOnEMCal;    // pt of track after being propagated to the EMCal surface (default r = 440 cm)
   
  private:
   static bool fgkOnlineMode; //! indicate the online mode to skip some of the functionality
 
   AliESDtrack & operator=(const AliESDtrack & );
-  ClassDef(AliESDtrack,67)  //ESDtrack 
+  ClassDef(AliESDtrack,68)  //ESDtrack 
 };
 
 
index 64b1996..4df0db0 100644 (file)
@@ -75,7 +75,9 @@ public:
 
   virtual Double_t GetTrackPhiOnEMCal() const {return -999;}
   virtual Double_t GetTrackEtaOnEMCal() const {return -999;}
-  virtual void SetTrackPhiEtaOnEMCal(Double_t,Double_t) {;}
+  virtual Double_t GetTrackPtOnEMCal() const {return -999;}
+  virtual Double_t GetTrackPOnEMCal() const {return -999;}
+  virtual void SetTrackPhiEtaPtOnEMCal(Double_t,Double_t,Double_t=-999) {;}
 
   virtual Int_t GetPHOScluster()      const {return -1;}
   virtual void SetPHOScluster(Int_t)        {;}