]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AOD/AliAODTrack.h
Enlarging window for DCS DPs retrieval for short runs for GRP + Keeping connection...
[u/mrichter/AliRoot.git] / STEER / AOD / AliAODTrack.h
index b2cc6b91fc535d8fd7f334f1e9f029782e84cd00..a98504da7ab67fa7ff2de084f32e01b8281bdd0c 100644 (file)
@@ -31,8 +31,11 @@ class AliAODTrack : public AliVTrack {
   
   enum AODTrk_t {kUndef = -1, 
                 kPrimary, 
-                kSecondary, 
-                kOrphan};
+                kFromDecayVtx, 
+                kOrphan}; // Please note that this flag does not guarantee that the particle is a Physical Primary, it simply identifies the algorithm which was used to filter the track. In general, the following associations are used (check the filter macro to be sure, as this comment may be outdated): 
+                           //kPrimary: TPC only tracks, global constrained tracks, primary tracks, kink mothers; 
+                           //kFromDecayVtx: bachelor tracks from cascades, tracks from V0, kink daughters; 
+                           //kUndef:TRD matched tracks
 
   enum AODTrkBits_t {
     kIsDCA=BIT(14),   // set if fPosition is the DCA and not the position of the first point
@@ -141,6 +144,8 @@ class AliAODTrack : public AliVTrack {
   
   UShort_t GetTPCNcls()  const { return GetTPCncls(); }
 
+  Int_t GetNcls(Int_t idet) const;
+
   virtual Double_t M() const { return M(GetMostProbablePID()); }
   Double_t M(AODTrkPID_t pid) const;
   virtual Double_t E() const { return E(GetMostProbablePID()); }
@@ -230,12 +235,12 @@ class AliAODTrack : public AliVTrack {
 
   void RemoveCovMatrix() {delete fCovMatrix; fCovMatrix=NULL;}
 
-  Double_t XAtDCA() const { return fPositionAtDCA[0]; }
-  Double_t YAtDCA() const { return fPositionAtDCA[1]; }
+  Double_t XAtDCA() const { return fPositionAtDCA[0]; } //makes sense only for constrained tracks, returns dummy values for all other tracks
+  Double_t YAtDCA() const { return fPositionAtDCA[1]; } //makes sense only for constrained tracks, returns dummy values for all other tracks
   Double_t ZAtDCA() const {
     if (IsMuonTrack()) return fPosition[2];
     else if (TestBit(kIsDCA)) return fPosition[1];
-    else return -999.; }
+    else return -999.; }                                //makes sense only for constrained tracks, returns dummy values for all other tracks
   Bool_t   XYZAtDCA(Double_t x[3]) const { x[0] = XAtDCA(); x[1] = YAtDCA(); x[2] = ZAtDCA(); return kTRUE; }
   
   Double_t DCA() const {
@@ -243,9 +248,9 @@ class AliAODTrack : public AliVTrack {
     else if (TestBit(kIsDCA)) return fPosition[0];
     else return -999.; }
   
-  Double_t PxAtDCA() const { return fMomentumAtDCA[0]; }
-  Double_t PyAtDCA() const { return fMomentumAtDCA[1]; }
-  Double_t PzAtDCA() const { return fMomentumAtDCA[2]; }
+  Double_t PxAtDCA() const { return fMomentumAtDCA[0]; } //makes sense only for constrained tracks, returns dummy values for all other tracks
+  Double_t PyAtDCA() const { return fMomentumAtDCA[1]; } //makes sense only for constrained tracks, returns dummy values for all other tracks
+  Double_t PzAtDCA() const { return fMomentumAtDCA[2]; } //makes sense only for constrained tracks, returns dummy values for all other tracks
   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; }
   
@@ -321,7 +326,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::kSPECIES) 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;
@@ -332,6 +337,9 @@ 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;}
@@ -386,9 +394,10 @@ class AliAODTrack : public AliVTrack {
   void SetMuonClusterMap(UInt_t muonClusMap)                { fITSMuonClusterMap = (fITSMuonClusterMap&0xfc00ffff)|((muonClusMap&0x3ff)<<16); }
   void SetITSMuonClusterMap(UInt_t itsMuonClusMap)          { fITSMuonClusterMap = itsMuonClusMap; }
   void SetMUONtrigHitsMapTrg(UInt_t muonTrigHitsMap) { fMUONtrigHitsMapTrg = muonTrigHitsMap; }
-  UInt_t GetMUONTrigHitsMapTrg() { return fMUONtrigHitsMapTrg; }
+  UInt_t GetMUONTrigHitsMapTrg() const { return fMUONtrigHitsMapTrg; }
   void SetMUONtrigHitsMapTrk(UInt_t muonTrigHitsMap) { fMUONtrigHitsMapTrk = muonTrigHitsMap; }
-  UInt_t GetMUONTrigHitsMapTrk() { return fMUONtrigHitsMapTrk; }
+  UInt_t GetMUONTrigHitsMapTrk() const { return fMUONtrigHitsMapTrk; }
+  Int_t GetMuonTrigDevSign() const;
 
   Int_t GetMatchTrigger() const {return fITSMuonClusterMap>>30;}
                                        //  0 Muon track does not match trigger
@@ -403,8 +412,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);}
 
@@ -453,7 +465,7 @@ class AliAODTrack : public AliVTrack {
   Short_t       fID;                // unique track ID, points back to the ESD track
 
   Char_t        fCharge;            // particle charge
-  Char_t        fType;              // Track Type
+  Char_t        fType;              // Track Type, explanation close to the enum AODTrk_t
 
   Char_t        fPIDForTracking;    // pid using for tracking of ESD track
 
@@ -469,12 +481,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
 
+  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, 23);
+  ClassDef(AliAODTrack, 24);
 };
 
 inline Bool_t  AliAODTrack::IsPrimaryCandidate() const