]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliAODCluster.h
AliAODNeutral renamed to AliAODCluster
[u/mrichter/AliRoot.git] / STEER / AliAODCluster.h
diff --git a/STEER/AliAODCluster.h b/STEER/AliAODCluster.h
new file mode 100644 (file)
index 0000000..56adb49
--- /dev/null
@@ -0,0 +1,141 @@
+#ifndef AliAODCluster_H
+#define AliAODCluster_H
+/* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+
+//-------------------------------------------------------------------------
+//     AOD cluster base class
+//     Author: Markus Oldenburg, CERN
+//-------------------------------------------------------------------------
+
+#include <TRef.h>
+
+#include "AliVirtualParticle.h"
+#include "AliAODVertex.h"
+#include "AliAODTrack.h"
+
+class AliAODCluster : public AliVirtualParticle {
+
+ public:
+  
+  enum AODClu_t {kUndef=-1, kPHOSNeutral,kPHOSCharged,
+                kEMCALPseudoCluster, kEMCALClusterv1,
+                 kPMDNeutral, kPMDCharged};
+
+  enum AODCluPID_t {
+    kUnknown=0, kPhoton, kPi0, kNeutron, kKaon0, kEleCon, kCharged, kOther};
+
+  AliAODCluster();
+  AliAODCluster(Int_t id,
+               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);
+
+   AliAODCluster(Int_t id,
+                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);
+
+  virtual ~AliAODCluster();
+  AliAODCluster(const AliAODCluster& trk); 
+  AliAODCluster& operator=(const AliAODCluster& trk);
+
+  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; }
+
+  template <class T> void GetPID(T *pid) const {
+    for(Int_t i=0; i<10; ++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.;}}
+
+  Int_t GetID() const { return fID; }
+  Int_t GetLabel() const { return fLabel; } 
+
+  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);}
+
+  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; }
+
+  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
+
+  Int_t         fID;             // unique track ID, points back to the ESD track
+  Int_t         fLabel;          // particle label, points back to MC track
+  
+  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;
+
+
+  ClassDef(AliAODCluster,1);
+};
+
+#endif