Add a new variable, that is the radial position of the track at the end
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 23 Mar 2010 13:14:08 +0000 (13:14 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 23 Mar 2010 13:14:08 +0000 (13:14 +0000)
of the muon absorber, both in ESD and AOD. This variable has proven to
be extremely useful to better understand the effects of the absorber in
the data taken by the muon spectrometer.
(Philippe P.)

MUON/AliMUONESDInterface.cxx
PWG3/muon/AliAnalysisTaskESDMuonFilter.cxx
STEER/AliAODTrack.cxx
STEER/AliAODTrack.h
STEER/AliESDMuonTrack.cxx
STEER/AliESDMuonTrack.h

index 15e3844..0bc7bba 100644 (file)
@@ -868,6 +868,13 @@ void AliMUONESDInterface::MUONToESD(const AliMUONTrack& track, AliESDMuonTrack&
   SetParamAtFirstCluster(*trackParam, esdTrack);
   SetParamCov(*trackParam, esdTrack);
   
+  // set transverse position at the end of the absorber
+  AliMUONTrackParam trackParamAtAbsEnd(*trackParam);
+  AliMUONTrackExtrap::ExtrapToZ(&trackParamAtAbsEnd, AliMUONConstants::AbsZEnd());
+  Double_t xAbs = trackParamAtAbsEnd.GetNonBendingCoor();
+  Double_t yAbs = trackParamAtAbsEnd.GetBendingCoor();
+  esdTrack.SetRAtAbsorberEnd(TMath::Sqrt(xAbs*xAbs + yAbs*yAbs));
+  
   // set param at vertex
   AliMUONTrackParam trackParamAtVtx(*trackParam);
   AliMUONTrackExtrap::ExtrapToVertex(&trackParamAtVtx, vertex[0], vertex[1], vertex[2], 0., 0.);
index 64bde1c..eb4e003 100644 (file)
@@ -187,6 +187,7 @@ void AliAnalysisTaskESDMuonFilter::ConvertESDtoAOD()
     
     aodTrack->SetXYAtDCA(esdMuTrack->GetNonBendingCoorAtDCA(), esdMuTrack->GetBendingCoorAtDCA());
     aodTrack->SetPxPyPzAtDCA(esdMuTrack->PxAtDCA(), esdMuTrack->PyAtDCA(), esdMuTrack->PzAtDCA());
+    aodTrack->SetRAtAbsorberEnd(esdMuTrack->GetRAtAbsorberEnd());
     aodTrack->ConvertAliPIDtoAODPID();
     aodTrack->SetChi2perNDF(esdMuTrack->GetChi2() / (2.*esdMuTrack->GetNHit() - 5.));
     aodTrack->SetChi2MatchTrigger(esdMuTrack->GetChi2MatchTrigger());
index cc88c98..b391e8c 100644 (file)
@@ -29,6 +29,7 @@ ClassImp(AliAODTrack)
 //______________________________________________________________________________
 AliAODTrack::AliAODTrack() : 
   AliVTrack(),
+  fRAtAbsorberEnd(0.),
   fChi2perNDF(-999.),
   fChi2MatchTrigger(0.),
   fFlags(0),
@@ -71,6 +72,7 @@ AliAODTrack::AliAODTrack(Short_t id,
                         UInt_t selectInfo,
                         Float_t chi2perNDF) :
   AliVTrack(),
+  fRAtAbsorberEnd(0.),
   fChi2perNDF(chi2perNDF),
   fChi2MatchTrigger(0.),
   fFlags(0),
@@ -117,6 +119,7 @@ AliAODTrack::AliAODTrack(Short_t id,
                         UInt_t selectInfo,
                         Float_t chi2perNDF) :
   AliVTrack(),
+  fRAtAbsorberEnd(0.),
   fChi2perNDF(chi2perNDF),
   fChi2MatchTrigger(0.),
   fFlags(0),
@@ -157,6 +160,7 @@ AliAODTrack::~AliAODTrack()
 //______________________________________________________________________________
 AliAODTrack::AliAODTrack(const AliAODTrack& trk) :
   AliVTrack(trk),
+  fRAtAbsorberEnd(trk.fRAtAbsorberEnd),
   fChi2perNDF(trk.fChi2perNDF),
   fChi2MatchTrigger(trk.fChi2MatchTrigger),
   fFlags(trk.fFlags),
@@ -200,6 +204,8 @@ AliAODTrack& AliAODTrack::operator=(const AliAODTrack& trk)
     SetXYAtDCA(trk.XAtDCA(), trk.YAtDCA());
     SetPxPyPzAtDCA(trk.PxAtDCA(), trk.PyAtDCA(), trk.PzAtDCA());
     
+    fRAtAbsorberEnd = trk.fRAtAbsorberEnd;
+    
     fChi2perNDF = trk.fChi2perNDF;
     fChi2MatchTrigger = trk.fChi2MatchTrigger;
 
index 6abb656..6fe59c0 100644 (file)
@@ -187,6 +187,8 @@ class AliAODTrack : public AliVTrack {
   Double_t PAtDCA() const { return TMath::Sqrt(PxAtDCA()*PxAtDCA() + PyAtDCA()*PyAtDCA() + PzAtDCA()*PzAtDCA()); }
   Bool_t   PxPyPzAtDCA(Double_t p[3]) const { p[0] = PxAtDCA(); p[1] = PyAtDCA(); p[2] = PzAtDCA(); return kTRUE; }
   
+  Double_t GetRAtAbsorberEnd() const { return fRAtAbsorberEnd; }
+  
   UChar_t  GetITSClusterMap() const       { return (UChar_t)(fITSMuonClusterMap&0xff); }
   UShort_t GetHitsPatternInTrigCh() const { return (UShort_t)((fITSMuonClusterMap&0xff00)>>8); }
   UInt_t   GetMUONClusterMap() const      { return (fITSMuonClusterMap&0x3ff0000)>>16; }
@@ -229,6 +231,8 @@ class AliAODTrack : public AliVTrack {
   void SetXYAtDCA(Double_t x, Double_t y) {fPositionAtDCA[0] = x; fPositionAtDCA[1] = y;}
   void SetPxPyPzAtDCA(Double_t pX, Double_t pY, Double_t pZ) {fMomentumAtDCA[0] = pX; fMomentumAtDCA[1] = pY; fMomentumAtDCA[2] = pZ;}
   
+  void SetRAtAbsorberEnd(Double_t r) { fRAtAbsorberEnd = r; }
+  
   void SetCharge(Short_t q) { fCharge = q; }
   void SetChi2perNDF(Double_t chi2perNDF) { fChi2perNDF = chi2perNDF; }
 
@@ -270,6 +274,8 @@ class AliAODTrack : public AliVTrack {
   Double32_t    fMomentumAtDCA[3];  // momentum (px,py,pz) at DCA
   Double32_t    fPositionAtDCA[2];  // trasverse position (x,y) at DCA
   
+  Double32_t    fRAtAbsorberEnd;    // transverse position r at the end of the muon absorber
+  
   Double32_t    fChi2perNDF;        // chi2/NDF of momentum fit
   Double32_t    fChi2MatchTrigger;  // chi2 of trigger/track matching
   Double32_t    fPID[10];           // [0.,1.,8] pointer to PID object
@@ -293,7 +299,7 @@ class AliAODTrack : public AliVTrack {
   AliAODPid    *fDetPid;            // more detailed or detector specific pid information
   TRef          fProdVertex;        // vertex of origin
 
-  ClassDef(AliAODTrack, 9);
+  ClassDef(AliAODTrack, 10);
 };
 
 inline Bool_t  AliAODTrack::IsPrimaryCandidate() const
index 86c971f..ad9db09 100644 (file)
@@ -55,6 +55,7 @@ AliESDMuonTrack::AliESDMuonTrack ():
   fZUncorrected(0),
   fBendingCoorUncorrected(0),
   fNonBendingCoorUncorrected(0),
+  fRAtAbsorberEnd(0),
   fChi2(0),
   fChi2MatchTrigger(0),
   fLocalTrigger(0),
@@ -101,6 +102,7 @@ AliESDMuonTrack::AliESDMuonTrack (const AliESDMuonTrack& muonTrack):
   fZUncorrected(muonTrack.fZUncorrected),
   fBendingCoorUncorrected(muonTrack.fBendingCoorUncorrected),
   fNonBendingCoorUncorrected(muonTrack.fNonBendingCoorUncorrected),
+  fRAtAbsorberEnd(muonTrack.fRAtAbsorberEnd),
   fChi2(muonTrack.fChi2),
   fChi2MatchTrigger(muonTrack.fChi2MatchTrigger),
   fLocalTrigger(muonTrack.fLocalTrigger),
@@ -169,6 +171,8 @@ AliESDMuonTrack& AliESDMuonTrack::operator=(const AliESDMuonTrack& muonTrack)
   
   for (Int_t i = 0; i < 15; i++) fCovariances[i] = muonTrack.fCovariances[i];
   
+  fRAtAbsorberEnd            = muonTrack.fRAtAbsorberEnd;
+  
   fChi2                   = muonTrack.fChi2;             
   fNHit                   = muonTrack.fNHit; 
 
@@ -255,6 +259,7 @@ void AliESDMuonTrack::Reset()
   fZUncorrected = 0.;
   fBendingCoorUncorrected = 0.;
   fNonBendingCoorUncorrected = 0.;
+  fRAtAbsorberEnd = 0.;
   fChi2 = 0.;
   fChi2MatchTrigger = 0.;
   fLocalTrigger = 0;
index 06f0358..a7a4578 100644 (file)
@@ -89,6 +89,10 @@ public:
   void     SetCovariances(const TMatrixD& cov);
   void     GetCovarianceXYZPxPyPz(Double_t cov[21]) const;
   
+  // Get and Set methods for the transverse position r of the track at the end of the absorber
+  Double_t GetRAtAbsorberEnd() const { return fRAtAbsorberEnd; }
+  void     SetRAtAbsorberEnd(Double_t r) { fRAtAbsorberEnd = r; }
+  
   // Get and Set methods for global tracking info
   Double_t GetChi2(void) const {return fChi2;}
   void     SetChi2(Double_t Chi2) {fChi2 = Chi2;}
@@ -260,6 +264,8 @@ protected:
   /// [10]=<X,InvP_yz> [11]=<ThetaX,InvP_yz> [12]=<Y,InvP_yz> [13]=<ThetaY,InvP_yz> [14]=<InvP_yz,InvP_yz>  </pre>
   Double32_t fCovariances[15]; ///< \brief reduced covariance matrix of parameters AT FIRST CHAMBER
   
+  Double32_t fRAtAbsorberEnd; ///< transverse position r of the track at the end of the absorber
+  
   // global tracking info
   Double32_t fChi2;                ///< chi2 in the MUON track fit
   Double32_t fChi2MatchTrigger;    ///< chi2 of trigger/track matching
@@ -285,7 +291,7 @@ protected:
 
   AliESDEvent*   fESDEvent; //!Pointer back to event to which the track belongs
   
-  ClassDef(AliESDMuonTrack,12) // MUON ESD track class 
+  ClassDef(AliESDMuonTrack,13) // MUON ESD track class 
 };
 
 #endif