]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AOD/AliAODTrack.h
Merge branch 'master' into dev
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODTrack.h
index ee210fc5cc74468fb45d0b01f32d3c91212a7bb7..686b262ef834a65c2acf0d809e7a3134159a23bf 100644 (file)
@@ -23,6 +23,7 @@ class AliVVertex;
 class AliDetectorPID;
 class AliTPCdEdxInfo;
 class AliAODEvent;
+class AliTOFHeader;
 
 class AliAODTrack : public AliVTrack {
 
@@ -80,7 +81,6 @@ class AliAODTrack : public AliVTrack {
              Double_t covMatrix[21],
              Short_t q,
              UChar_t itsClusMap,
-             Double_t pid[10],
              AliAODVertex *prodVertex,
              Bool_t usedForVtxFit,
              Bool_t usedForPrimVtxFit,
@@ -88,6 +88,7 @@ class AliAODTrack : public AliVTrack {
              UInt_t selectInfo=0,
              Float_t chi2perNDF = -999.);
 
+
   AliAODTrack(Short_t id,
              Int_t label,
              Float_t p[3],
@@ -97,7 +98,6 @@ class AliAODTrack : public AliVTrack {
              Float_t covMatrix[21],
              Short_t q,
              UChar_t itsClusMap,
-             Float_t pid[10],
              AliAODVertex *prodVertex,
              Bool_t usedForVtxFit,
              Bool_t usedForPrimVtxFit,
@@ -163,13 +163,21 @@ class AliAODTrack : public AliVTrack {
   void ConvertAliPIDtoAODPID();
   void SetDetPID(AliAODPid *aodpid) {fDetPid = aodpid;}
 
+  void     SetPIDForTracking(Int_t pid) {fPIDForTracking = pid;}
+  Int_t    GetPIDForTracking()  const   {return fPIDForTracking;}
+  Double_t GetMassForTracking() const;
+
   template <typename T> void GetPID(T *pid) const {
-    for(Int_t i=0; i<10; ++i) pid[i]=fPID[i];}
+    for(Int_t i=0; i<10; ++i) pid[i] = fPID ? fPID[i]:0;}
  
   template <typename T> void SetPID(const T *pid) {
-    if(pid) for(Int_t i=0; i<10; ++i) fPID[i]=pid[i];
-    else {  for(Int_t i=0; i<10; i++) fPID[i]=0.; fPID[AliAODTrack::kUnknown]=1.;}}
-
+    if (pid) {
+      if (!fPID) fPID = new Double32_t[10];
+      for(Int_t i=0; i<10; ++i) fPID[i]=pid[i];
+    }
+    else {delete[] fPID; fPID = 0;}
+  }
+  
   Bool_t IsOn(Int_t mask) const {return (fFlags&mask)>0;}
   ULong_t GetStatus() const { return GetFlags(); }
   ULong_t GetFlags() const { return fFlags; }
@@ -215,7 +223,8 @@ class AliAODTrack : public AliVTrack {
     return GetPosition(p); }
   
   Bool_t GetXYZAt(Double_t x, Double_t b, Double_t *r) const;
-  
+  Bool_t GetXYZatR(Double_t xr,Double_t bz, Double_t *xyz=0, Double_t* alpSect=0) const;  
+
   Bool_t GetCovarianceXYZPxPyPz(Double_t cv[21]) const {
     return GetCovMatrix(cv);}
 
@@ -296,6 +305,7 @@ class AliAODTrack : public AliVTrack {
   UShort_t  GetTPCsignalN()      const { return fDetPid?fDetPid->GetTPCsignalN():0;    }
   virtual AliTPCdEdxInfo* GetTPCdEdxInfo() const {return fDetPid?fDetPid->GetTPCdEdxInfo():0;}
   Double_t  GetTPCmomentum()     const { return fDetPid?fDetPid->GetTPCmomentum():0.;  }
+  Double_t  GetTPCTgl()          const { return fDetPid?fDetPid->GetTPCTgl():0.;  }
   Double_t  GetTOFsignal()       const { return fDetPid?fDetPid->GetTOFsignal():0.;    }
   Double_t  GetIntegratedLength() const { return fTrackLength;}
   void      SetIntegratedLength(Double_t l) {fTrackLength = l;}
@@ -311,7 +321,7 @@ class AliAODTrack : public AliVTrack {
   
   Bool_t GetOuterHmpPxPyPz(Double_t *p) const;
   
-  void      GetIntegratedTimes(Double_t *times) const {if (fDetPid) fDetPid->GetIntegratedTimes(times); }
+  void      GetIntegratedTimes(Double_t *times, Int_t nspec=AliPID::kSPECIESC) const {if (fDetPid) fDetPid->GetIntegratedTimes(times, nspec);}
   Double_t  GetTRDslice(Int_t plane, Int_t slice) const;
   Double_t  GetTRDsignal()                        const {return fDetPid ? fDetPid->GetTRDsignal() : 0;}
   Double_t  GetTRDmomentum(Int_t plane, Double_t */*sp*/=0x0) const;
@@ -322,8 +332,13 @@ class AliAODTrack : public AliVTrack {
   Int_t     GetNumberOfTRDslices() const { return fDetPid?fDetPid->GetTRDnSlices():0; }
   void      GetHMPIDpid(Double_t */*p*/) const { return; } // TODO: To be implemented properly with the new HMPID object
 
+  void SetMFTClusterPattern(ULong_t mftClusterPattern) { fMFTClusterPattern = mftClusterPattern; }   // AU
+  ULong_t GetMFTClusterPattern() { return fMFTClusterPattern; }                                      // AU
+
   const AliAODEvent* GetAODEvent() const {return fAODEvent;}
+  virtual const AliVEvent* GetEvent() const {return (AliVEvent*)fAODEvent;}
   void SetAODEvent(const AliAODEvent* ptr){fAODEvent = ptr;}
+  const AliTOFHeader* GetTOFHeader() const;
 
   AliAODPid    *GetDetPid() const { return fDetPid; }
   AliAODVertex *GetProdVertex() const { return (AliAODVertex*)fProdVertex.GetObject(); }
@@ -391,8 +406,11 @@ class AliAODTrack : public AliVTrack {
   Double_t GetChi2MatchTrigger() const  { return fChi2MatchTrigger;}
   void     SetChi2MatchTrigger(Double_t Chi2MatchTrigger) {fChi2MatchTrigger = Chi2MatchTrigger; }
   Bool_t   HitsMuonChamber(Int_t MuonChamber, Int_t cathode = -1) const;  // Check if track hits Muon chambers
-  Bool_t   IsMuonTrack() const { return (GetMUONClusterMap()>0) ? kTRUE : kFALSE; }
+  Bool_t   IsMuonTrack() const { return ( (GetMUONClusterMap()>0) && !fIsMuonGlobalTrack ) ? kTRUE : kFALSE; }
   
+  Bool_t   IsMuonGlobalTrack() const { return fIsMuonGlobalTrack; }                                     // AU
+  void     SetIsMuonGlobalTrack(Bool_t isMuonGlobalTrack) { fIsMuonGlobalTrack = isMuonGlobalTrack; }   // AU
+
   void     Connected(Bool_t flag) {flag ? SETBIT(fITSMuonClusterMap,26) : CLRBIT(fITSMuonClusterMap,26);}
   Bool_t   IsConnected() const {return TESTBIT(fITSMuonClusterMap,26);}
 
@@ -419,7 +437,7 @@ class AliAODTrack : public AliVTrack {
   
   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
+  Double32_t*   fPID;               //! [0.,1.,8] pointer to PID object
 
   ULong_t       fFlags;             // reconstruction status flags 
   Int_t         fLabel;             // track label, points back to MC track
@@ -443,6 +461,8 @@ class AliAODTrack : public AliVTrack {
   Char_t        fCharge;            // particle charge
   Char_t        fType;              // Track Type
 
+  Char_t        fPIDForTracking;    // pid using for tracking of ESD track
+
   Int_t         fCaloIndex;         // index of associated EMCAL/PHOS cluster (AliAODCaloCluster)
 
   
@@ -455,12 +475,16 @@ class AliAODTrack : public AliVTrack {
   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)
 
+  Bool_t fIsMuonGlobalTrack;        // True if the track is built from the combination of MUON and MFT clusters     // AU
+
   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;     //! 
+  ULong_t fMFTClusterPattern;       // Tells us which MFT clusters are contained in the track, and which one is a good one (if MC)  // AU
+
+  const AliAODEvent* fAODEvent;     //! pointer back to the event the track belongs to
 
-  ClassDef(AliAODTrack, 22);
+  ClassDef(AliAODTrack, 24);
 };
 
 inline Bool_t  AliAODTrack::IsPrimaryCandidate() const