]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAODCluster.h
Added methods for finding a given module in the DDL map (F. Prino)
[u/mrichter/AliRoot.git] / STEER / AliAODCluster.h
index 56adb49f909be3bd5472cc4c213a929912408761..03db84e8155479943d29c4754047aab0d4025409 100644 (file)
 //     Author: Markus Oldenburg, CERN
 //-------------------------------------------------------------------------
 
-#include <TRef.h>
+#include <TObject.h>
 
-#include "AliVirtualParticle.h"
-#include "AliAODVertex.h"
-#include "AliAODTrack.h"
-
-class AliAODCluster : public AliVirtualParticle {
+class AliAODCluster : public TObject {
 
  public:
   
-  enum AODClu_t {kUndef=-1, kPHOSNeutral,kPHOSCharged,
-                kEMCALPseudoCluster, kEMCALClusterv1,
-                 kPMDNeutral, kPMDCharged};
+  enum AODClu_t {kUndef = -1, 
+                kPHOSNeutral, 
+                kPHOSCharged,
+                kEMCALClusterv1,
+                kPMDNeutral, 
+                kPMDCharged};
 
   enum AODCluPID_t {
-    kUnknown=0, kPhoton, kPi0, kNeutron, kKaon0, kEleCon, kCharged, kOther};
+    kUnknown = 0, 
+    kPhoton  = 1, 
+    kPi0     = 2, 
+    kNeutron = 3, 
+    kKaon0   = 4,
+    kEleCon  = 5, 
+    kCharged = 6, 
+    kNeutral = 7 , 
+    kOther   = 8};
 
   AliAODCluster();
   AliAODCluster(Int_t id,
-               Int_t label,
+               UInt_t nLabel,
+               Int_t *label,
                Double_t energy,
                Double_t x[3],
-               Double_t covMatrix[10],
-               Double_t pid[10],
-               AliAODVertex *prodVertex,
-               AliAODTrack *primTrack,
-               Char_t ttype=kUndef);
+               Double_t pid[9],
+               Char_t ttype=kUndef,
+               UInt_t selectInfo=0);
 
    AliAODCluster(Int_t id,
-                Int_t label,
+                UInt_t nLabel,
+                Int_t *label,
                 Float_t energy,
                 Float_t x[3],
-                Float_t covMatrix[10],
-                Float_t pid[10],
-                AliAODVertex *prodVertex,
-                AliAODTrack *primTrack,
-                Char_t ttype=kUndef);
+                Float_t pid[9],
+                Char_t ttype=kUndef,
+                UInt_t selectInfo=0);
 
   virtual ~AliAODCluster();
-  AliAODCluster(const AliAODCluster& trk); 
-  AliAODCluster& operator=(const AliAODCluster& trk);
+  AliAODCluster(const AliAODCluster& clus); 
+  AliAODCluster& operator=(const AliAODCluster& clus);
 
   Double_t Chi2() const { return fChi2; }
 
   virtual Double_t E() const { return fEnergy; }
-  // make a connection to the PID object, here!!!
-  virtual Double_t M() const { return -999.; }
-  
-  // make a connection to the PID object, here!!!
-  virtual Double_t Y() const { return -999.; }
 
   // 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<10; ++i) pid[i]=fPID[i];}
+    for(Int_t i=0; i<9; ++i) pid[i]=fPID[i];}
  
   template <class 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=1; i<10; fPID[i++]=0); fPID[0]=1.;}}
+    if(pid) for(Int_t i=0; i<9; ++i) fPID[i]=pid[i];
+    else {for(Int_t i=0; i<9; fPID[i++]=0);} fPID[AliAODCluster::kUnknown]=1.;}
 
-  Int_t GetID() const { return fID; }
-  Int_t GetLabel() const { return fLabel; } 
+  Int_t  GetID() const { return fID; }
+  Int_t  GetLabel(UInt_t i) const;
+  UInt_t GetNLabel() 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;}
 
-  template <class T> void SetCovMatrix(const T *covMatrix) {
-    if(!fCovMatrix) fCovMatrix=new AliAODRedCov<4>();
-    fCovMatrix->SetCovMatrix(covMatrix);}
+  Bool_t IsEMCALCluster() {if(fType == kEMCALClusterv1) return kTRUE;
+    else return kFALSE;}
+  Bool_t IsPHOSCluster() {if(fType == kPHOSCharged || fType == kPHOSNeutral) return kTRUE;
+    else return kFALSE;}
 
-  template <class T> Bool_t GetCovMatrix(T *covMatrix) const {
-    if(!fCovMatrix) return kFALSE;
-    fCovMatrix->GetCovMatrix(covMatrix); return kTRUE;}
-
-  void RemoveCovMatrix() {delete fCovMatrix; fCovMatrix=NULL;}
-
-  AliAODVertex *GetProdVertex() const { return (AliAODVertex*)fProdVertex.GetObject(); }
-  AliAODTrack *GetPrimTrack() const { return (AliAODTrack*)fPrimTrack.GetObject(); }
-  
   // print
   void  Print(const Option_t *opt = "") const;
 
   // setters
   void SetID(Int_t id) { fID = id; }
-  void SetLabel(Int_t label) {fLabel = label; }
-
+  void SetType(AODClu_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 SetProdVertex(TObject *vertex) { fProdVertex = vertex; }
-  void SetPrimTrack(TObject *ptrack) { fPrimTrack = ptrack; }
-
-  virtual Double_t Px() const {return 0.;}
-  virtual Double_t Py() const {return 0.;}
-  virtual Double_t Pz() const {return 0.;}
-  virtual Double_t Pt() const {return 0.;}
-  virtual Double_t P() const {return 0.;}
-  virtual Double_t OneOverPt() const {return 0.;}
-  virtual Double_t Phi() const {return 0.;}
-  virtual Double_t Theta() const {return 0.;}
-  virtual Double_t Eta() const {return 0.;}
-  virtual Short_t Charge() const {return 0.;}
-
  private :
 
   // Energy & position
   Double32_t    fEnergy;         // energy
   Double32_t    fPosition[3];    // position of the cluster
 
-  Double32_t    fPID[10];        // [0.,1.,8] pointer to PID object
-  Double32_t    fChi2;           // chi2 of mometum fit
+  Double32_t    fChi2;           // chi2 (probably not necessary for PMD)
+  Double32_t    fPID[9];         // [0.,1.,8] pointer to PID object
 
-  Int_t         fID;             // unique track ID, points back to the ESD track
-  Int_t         fLabel;          // particle label, points back to MC track
+  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
   
-  AliAODRedCov<4> *fCovMatrix;      // covariance matrix (x, y, z, E)
-  TRef          fProdVertex;     // vertex of origin
-  TRef          fPrimTrack;      // primary track number associated with this cluster
-
-  Char_t       fType;
-
+  Char_t        fType;           // cluster type
 
-  ClassDef(AliAODCluster,1);
+  ClassDef(AliAODCluster,4);
 };
 
 #endif