]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAODCluster.h
Fix for #81567: fix in SetTOFResponse method (AliESDpid)
[u/mrichter/AliRoot.git] / STEER / AliAODCluster.h
index 9306489b0446d7df467fae235a5b653dff39218e..706ddf3688373b2d477f7a48a324ae34a9f0fa9b 100644 (file)
 //     Author: Markus Oldenburg, CERN
 //-------------------------------------------------------------------------
 
-#include <TObject.h>
+#include <AliVCluster.h>
 
-class AliAODCluster : public TObject {
+class AliAODCluster : public AliVCluster {
 
  public:
   
-  enum AODClu_t {kUndef = -1, 
-                kPHOSNeutral, 
-                kPHOSCharged,
-                kEMCALClusterv1,
-                kPMDNeutral, 
-                kPMDCharged};
-
-  enum AODCluPID_t {
-    kElectron = 0,
-    kMuon = 1,
-    kPion = 2,
-    kKaon = 3,
-    kProton = 4,
-    kPhoton = 5,
-    kPi0 = 6,
-    kNeutron = 7,
-    kKaon0 = 8,
-    kEleCon = 9,
-    kUnknown = 10,
-    kCharged   = 11, //For PMD?
-    kNeutral   =12 //For PMD? 
-  };
-
   AliAODCluster();
   AliAODCluster(Int_t id,
                UInt_t nLabel,
@@ -57,76 +34,81 @@ class AliAODCluster : public TObject {
                 Float_t pid[13],
                 Char_t ttype=kUndef,
                 UInt_t selectInfo=0);
-
+   
   virtual ~AliAODCluster();
   AliAODCluster(const AliAODCluster& clus); 
   AliAODCluster& operator=(const AliAODCluster& clus);
-
+  void Clear(const Option_t*);
+  
   Double_t Chi2() const { return fChi2; }
-
-  virtual Double_t E() const { return fEnergy; }
-
+  
+  Double_t E() const { return fEnergy; }
+  
   // PID
-  virtual const Double_t *PID() const { return fPID; }
-  AODCluPID_t GetMostProbablePID() const;
-  template <class T> void GetPID(T *pid) const {
-    for(Int_t i=0; i<13; ++i) pid[i]=fPID[i];}
-  template <class T> void SetPID(const T *pid) {
-    if(pid) for(Int_t i=0; i<13; ++i) fPID[i]=pid[i];
-    else {for(Int_t i=0; i<13; fPID[i++]=0) ;} fPID[AliAODCluster::kUnknown]=1.;}
-
-  template <class T> void SetPIDFromESD(const T *pid) {
-    if(pid) {for(Int_t i=0; i<11; ++i) fPID[i]=pid[i];  fPID[11]=0;   fPID[12]=0;}
-    else {for(Int_t i=0; i<13; fPID[i++]=0) ;} fPID[AliAODCluster::kUnknown]=1.;}
-
-  Int_t  GetID() const { return fID; }
-  Int_t  GetLabel(UInt_t i) const;
+  
+  UShort_t  GetMostProbablePID() const;
+  const Double_t *GetPID() const { return fPID; }//{ for(Int_t i=0; i<13; ++i) pid[i]=fPID[i]; }
+  Int_t     GetID()  const { return fID; }
+  Int_t     GetLabel() const   {
+    if( fLabel &&  fNLabel > 0)  return  fLabel[0]; 
+    else return -1;} //Most likely the track associated to the cluster
+  Int_t  GetLabelAt(UInt_t i) const;
   Int_t  * GetLabels() const {return fLabel ; }
-  UInt_t GetNLabel() const { return (UInt_t)fNLabel; }
+  UInt_t GetNLabels() const { return (UInt_t)fNLabel; }
   Bool_t TestFilterBit(UInt_t filterBit) const { return (Bool_t) ((filterBit & fFilterMap) != 0); }
   Char_t GetType() const { return fType; }
-
-  template <class T> Bool_t GetPosition(T *x) const {
-    x[0]=fPosition[0]; x[1]=fPosition[1]; x[2]=fPosition[2];
-    return kTRUE;}
-
-  Bool_t IsEMCALCluster() {if(fType == kEMCALClusterv1) return kTRUE;
+  
+  void GetPosition(Float_t *x) const {
+    x[0]=fPosition[0]; x[1]=fPosition[1]; x[2]=fPosition[2];}
+  
+  Bool_t IsEMCAL() const {if(fType == kEMCALClusterv1) return kTRUE;
     else return kFALSE;}
-  Bool_t IsPHOSCluster() {if(fType == kPHOSCharged || fType == kPHOSNeutral) return kTRUE;
+  Bool_t IsPHOS() const {if(fType == kPHOSCharged || fType == kPHOSNeutral) return kTRUE;
     else return kFALSE;}
-
+  
   // print
   void  Print(const Option_t *opt = "") const;
-
+  
   // setters
+  void SetE(Double32_t energy) {fEnergy = energy ; }
   void SetID(Int_t id) { fID = id; }
-  void SetType(AODClu_t ttype) { fType=ttype; }
+  void SetType(Char_t ttype) { fType=ttype; }
   void SetLabel(Int_t *label, UInt_t size);  
-  void RemoveLabel();
-  template <class T> void SetPosition(const T *x);
-
   void SetChi2(Double_t chi2) { fChi2 = chi2; }
-
+  
+  void SetPosition(Float_t *x);
+  void SetPositionAt(Float_t x,Int_t i) { if(i>=0 && i<3) fPosition[i] = x ; 
+    else printf("Bad index for position array, i = %d\n",i);}
+  
+  void SetPIDAt(Float_t x,Int_t i) { if(i>=0 && i<13) fPID[i] = x ; 
+    else printf("Bad index for PID array, i = %d\n",i);}
+  void SetPID(const Float_t *pid) {
+    if(pid) for(Int_t i=0; i<13; ++i) fPID[i]=pid[i];
+    else {for(Int_t i=0; i<13; fPID[i++]=0) ;} fPID[AliAODCluster::kUnknown]=1.;}
+  template <class T> void SetPIDFromESD(const T *pid) {
+    if(pid) {for(Int_t i=0; i<11; ++i) fPID[i]=pid[i];  fPID[11]=0;   fPID[12]=0;}
+    else {for(Int_t i=0; i<13; fPID[i++]=0) ;} fPID[AliAODCluster::kUnknown]=1.;}
+  
+  void RemoveLabel();
+  
+  
  private :
-
+  
   // Energy & position
   Double32_t    fEnergy;         // energy
   Double32_t    fPosition[3];    // position of the cluster
-
+  
   Double32_t    fChi2;           // chi2 (probably not necessary for PMD)
   Double32_t    fPID[13];         // [0.,1.,8] pointer to PID object
-
+  
   Int_t         fID;             // unique cluster ID, points back to the ESD cluster
   Int_t         fNLabel;         // number of original track for this cluster      
   Int_t        *fLabel;          // [fNLabel] particle label, points back to MC tracks
   UInt_t        fFilterMap;      // filter information, one bit per set of cuts
   
   Char_t        fType;           // cluster type
-
-  ClassDef(AliAODCluster,5);
+  
+  ClassDef(AliAODCluster,6);
 };
 
 #endif