]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliESDtrack.h
Protection against div. by 0 in the Set(xyz,p..) for tracks with momentum along X...
[u/mrichter/AliRoot.git] / STEER / AliESDtrack.h
index 2b64838b18f48ec5d0e79cfd60f539b4db3ab270..ea9f5c2019cee917b5d25c7177a66f75916adb14 100644 (file)
@@ -47,14 +47,19 @@ public:
     kTPCin=0x0010,kTPCout=0x0020,kTPCrefit=0x0040,kTPCpid=0x0080,
     kTRDin=0x0100,kTRDout=0x0200,kTRDrefit=0x0400,kTRDpid=0x0800,
     kTOFin=0x1000,kTOFout=0x2000,kTOFrefit=0x4000,kTOFpid=0x8000,
+    kTOFmismatch=0x100000,
     kHMPIDout=0x10000,kHMPIDpid=0x20000,
     kEMCALmatch=0x40000,
-    kTRDbackup=0x80000,
+    kPHOSmatch=0x200000,
+    kTRDbackup =0x80000,
     kTRDStop=0x20000000,
     kESDpid=0x40000000,
     kTIME=0x80000000,
     kGlobalMerge=0x08000000,
-    kITSpureSA=0x10000000
+    kITSpureSA=0x10000000,
+    kMultInV0 =0x2000000,    //BIT(25): assumed to be belong to V0 in multiplicity estimates
+    kMultSec  =0x4000000,     //BIT(26): assumed to be secondary (due to the DCA) in multiplicity estimates
+    kEmbedded =0x8000000     // BIT(27), 1<<27: Is a track that has been embedded into the event      
   }; 
   enum {
     kTRDnPlanes = 6,
@@ -74,7 +79,7 @@ public:
   void AddCalibObject(TObject * object);     // add calib object to the list
   TObject *  GetCalibObject(Int_t index);    // return calib objct at given position
   void MakeMiniESDtrack();
-  void SetID(Int_t id) { fID =id;}
+  void SetID(Short_t id) { fID =id;}
   Int_t GetID() const { return fID;}
   void SetVertexID(Char_t id) { fVertexID=id;}
   Char_t GetVertexID() const { return fVertexID;}
@@ -98,7 +103,7 @@ public:
   Double_t GetIntegratedLength() const {return fTrackLength;}
   void GetIntegratedTimes(Double_t *times) const;
   Double_t GetMass() const;
-  Double_t M() const { return GetMass(); }
+  Double_t M() const;
   Double_t E() const;
   Double_t Y() const;
 
@@ -184,6 +189,11 @@ public:
   Double_t GetITSchi2() const {return fITSchi2;}
   Char_t   GetITSclusters(Int_t *idx) const;
   UChar_t GetITSClusterMap() const {return fITSClusterMap;}
+  UChar_t GetITSSharedMap() const {return fITSSharedMap;}
+  void    SetITSSharedFlag(int lr) {fITSSharedMap |= 0x1<<lr;}
+  Bool_t  GetITSFakeFlag()   const {return (fITSSharedMap&BIT(7))!=0;}
+  void    SetITSFakeFlag(Bool_t v=kTRUE)  {if (v) fITSSharedMap|=BIT(7); else fITSSharedMap&=~BIT(7);}  
+  void    SetITSSharedMap(UChar_t map) {fITSSharedMap=map;}
   void    SetITSModuleIndex(Int_t ilayer,Int_t idx) {fITSModule[ilayer]=idx;}
   Int_t   GetITSModuleIndex(Int_t ilayer) const {return fITSModule[ilayer];}
   Bool_t  GetITSModuleIndexInfo(Int_t ilayer,Int_t &idet,Int_t &status,
@@ -196,6 +206,7 @@ public:
      return fFriendTrack->GetITStrack();
   }
   Bool_t  HasPointOnITSLayer(Int_t i) const {return TESTBIT(fITSClusterMap,i);}
+  Bool_t  HasSharedPointOnITSLayer(Int_t i) const {return TESTBIT(fITSSharedMap,i);}
 
   void    SetTPCpid(const Double_t *p);
   void    GetTPCpid(Double_t *p) const;
@@ -209,6 +220,7 @@ public:
   UShort_t   GetTPCNclsIter1() const { return fTPCnclsIter1;}
   UShort_t   GetTPCNclsFIter1() const { return fTPCnclsFIter1;}
   UShort_t   GetTPCnclsS(Int_t i0=0,Int_t i1=159) const;
+  UShort_t   GetTPCncls(Int_t row0=0,Int_t row1=159) const;
   Double_t GetTPCPoints(Int_t i) const {return fTPCPoints[i];}
   void    SetKinkIndexes(Int_t points[3]) {
      for (Int_t i=0;i<3;i++) fKinkIndexes[i] = points[i];
@@ -222,9 +234,10 @@ public:
   Double_t GetTPCsignal() const {return fTPCsignal;}
   Double_t GetTPCsignalSigma() const {return fTPCsignalS;}
   UShort_t GetTPCsignalN() const {return fTPCsignalN;}
+  Double_t GetTPCmomentum() const {return fIp?fIp->GetP():GetP();}
   Double_t GetTPCchi2() const {return fTPCchi2;}
   Double_t GetTPCchi2Iter1() const {return fTPCchi2Iter1;}
-  UShort_t   GetTPCclusters(Int_t *idx) const;
+  UShort_t GetTPCclusters(Int_t *idx) const;
   Double_t GetTPCdensity(Int_t row0, Int_t row1) const;
   Int_t   GetTPCLabel() const {return fTPCLabel;}
   Int_t   GetKinkIndex(Int_t i) const { return fKinkIndexes[i];}
@@ -233,9 +246,11 @@ public:
   const TBits& GetTPCSharedMap() const {return fTPCSharedMap;}
   void    SetTPCClusterMap(const TBits amap) {fTPCClusterMap = amap;}
   void    SetTPCSharedMap(const TBits amap) {fTPCSharedMap = amap;}
-
-  void    SetTRDpid(const Double_t *p);
+  Float_t GetTPCClusterInfo(Int_t nNeighbours=3, Int_t type=0, Int_t row0=0, Int_t row1=159) const;
   
+  void    SetTRDpid(const Double_t *p);
+  void    SetTRDsignal(Double_t sig) {fTRDsignal = sig;}
+         
 // A.Bercuci
   void    SetTRDntracklets(UChar_t q){fTRDntracklets = q;}
   UChar_t GetTRDntracklets() const {return (fTRDntracklets>>3)&7;}
@@ -244,7 +259,7 @@ public:
   // reading of the v4-16-Release data with TRUNK related software (A.Bercuci@Apr 30th 09) 
   UChar_t GetTRDpidQuality() const {return GetTRDntrackletsPID();}
 // end A.Bercuci
-
+  
   void     SetNumberOfTRDslices(Int_t n);
   Int_t    GetNumberOfTRDslices() const;
   void     SetTRDslice(Double_t q, Int_t plane, Int_t slice);
@@ -288,6 +303,10 @@ public:
   Double_t GetTOFsignalDz() const {return fTOFsignalDz;}
   void    SetTOFsignalDx(Double_t dx) {fTOFsignalDx=dx;}
   Double_t GetTOFsignalDx() const {return fTOFsignalDx;}
+  void     SetTOFDeltaBC(Short_t deltaBC) {fTOFdeltaBC=deltaBC;};
+  Short_t  GetTOFDeltaBC() const {return fTOFdeltaBC;}
+  void     SetTOFL0L1(Short_t l0l1) {fTOFl0l1=l0l1;};
+  Short_t  GetTOFL0L1() const {return fTOFl0l1;}
   Double_t GetTOFchi2() const {return fTOFchi2;}
   void    SetTOFpid(const Double_t *p);
   void    SetTOFLabel(const Int_t *p);
@@ -323,12 +342,21 @@ public:
   }
   Bool_t  IsHMPID() const {return fFlags&kHMPIDpid;}
   Bool_t  IsPureITSStandalone() const {return fFlags&kITSpureSA;}
+  Bool_t  IsMultPrimary() const {return !(fFlags&kMultSec);}
+  Bool_t  IsMultSecondary() const {return (fFlags&kMultSec);}
 
-
-  Int_t GetEMCALcluster() {return fEMCALindex;}
-  void SetEMCALcluster(Int_t index) {fEMCALindex=index;}
+  Int_t GetEMCALcluster() {return fCaloIndex;}
+  void SetEMCALcluster(Int_t index) {fCaloIndex=index;}
   Bool_t IsEMCAL() const {return fFlags&kEMCALmatch;}
 
+  Int_t GetPHOScluster() {return fCaloIndex;}
+  void SetPHOScluster(Int_t index) {fCaloIndex=index;}
+  Bool_t IsPHOS() const {return fFlags&kPHOSmatch;}
+  Double_t GetPHOSdx()const{return fCaloDx ;}
+  Double_t GetPHOSdz()const{return fCaloDz ;}
+  void SetPHOSdxdz(Double_t dx, Double_t dz){fCaloDx=dx,fCaloDz=dz;}
+
+
   void SetTrackPointArray(AliTrackPointArray *points) {
     fFriendTrack->SetTrackPointArray(points);
   }
@@ -389,7 +417,7 @@ protected:
   Int_t     fTOFindex;       // index of the assigned TOF cluster
   Int_t     fHMPIDqn;         // 1000000*number of photon clusters + QDC
   Int_t     fHMPIDcluIdx;     // 1000000*chamber id + cluster idx of the assigned MIP cluster
-  Int_t     fEMCALindex;     // index of associated EMCAL cluster (AliESDCaloCluster)
+  Int_t     fCaloIndex;       // index of associated EMCAL/PHOS cluster (AliESDCaloCluster)
 
 
   Int_t     fKinkIndexes[3]; // array of indexes of posible kink candidates 
@@ -446,6 +474,11 @@ protected:
   Double32_t fTOFsignalDz;    // local z  of track's impact on the TOF pad 
   Double32_t fTOFsignalDx;    // local x  of track's impact on the TOF pad 
   Double32_t fTOFInfo[10];    //! TOF informations
+  Short_t    fTOFdeltaBC;     // detector's Delta Bunch Crossing correction
+  Short_t    fTOFl0l1;        // detector's L0L1 latency correction
+
+  Double32_t fCaloDx ;        // [0.,0.,8] distance to calorimeter cluster in calo plain (phi direction)
+  Double32_t fCaloDz ;        // [0.,0.,8] distance to calorimeter cluster in calo plain (z direction)
 
   Double32_t fHMPIDtrkX;       // x of the track impact, LORS 
   Double32_t fHMPIDtrkY;       // y of the track impact, LORS 
@@ -461,6 +494,7 @@ protected:
 
   Char_t  fITSncls;        // number of clusters assigned in the ITS
   UChar_t fITSClusterMap;  // map of clusters, one bit per a layer
+  UChar_t fITSSharedMap;   // map of shared clusters, one bit per a layer
   UChar_t fTRDncls;        // number of clusters assigned in the TRD
   UChar_t fTRDncls0;       // number of clusters assigned in the TRD before first material cross
   UChar_t fTRDntracklets;  // number of TRD tracklets used for tracking/PID
@@ -475,7 +509,7 @@ protected:
  private:
 
   AliESDtrack & operator=(const AliESDtrack & );
-  ClassDef(AliESDtrack,54)  //ESDtrack 
+  ClassDef(AliESDtrack,59)  //ESDtrack 
 };