Cleanup the code. Fix memory leak. Now inherit from AliAnalysisTaskSE (Antoine, Phili...
[u/mrichter/AliRoot.git] / PWG3 / hfe / AliHFEpidBase.h
index fd7eff8..0cac537 100644 (file)
@@ -1,3 +1,6 @@
+#ifndef ALIHFEPIDBASE_H
+#define ALIHFEPIDBASE_H
 /**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
+
+/* $Id$ */ 
+
 //
 // Base Class for Detector PID Objects
 // For more information see the implementation file
 //
-#ifndef ALIHFEPIDBASE_H
-#define ALIHFEPIDBASE_H
+
  #ifndef ROOT_TNamed
  #include <TNamed.h>
  #endif
 
 class TList;
+class AliAODpidUtil;
+class AliESDpid;
 class AliVParticle;
 class AliMCParticle;
+class AliHFEpidQAmanager;
 
-struct AliHFEpidObject{
+class AliHFEpidObject{
+  public:
     typedef enum{ 
       kESDanalysis,
       kAODanalysis
     }AnalysisType_t;
-    AliVParticle *fRecTrack;    // Reconstructed track
-    AliVParticle *fMCtrack;     // Monte Carlo track
+    AliHFEpidObject():
+      fkRecTrack(NULL), 
+      fAnalysisType(kESDanalysis),
+      fAbInitioPID(-1),
+      fCentrality(99.)
+      {
+      }
+    AliHFEpidObject(const AliHFEpidObject &ref):
+      fkRecTrack(ref.fkRecTrack), 
+      fAnalysisType(ref.fAnalysisType),
+      fAbInitioPID(ref.fAbInitioPID),
+      fCentrality(ref.fCentrality)
+      {
+      }
+    AliHFEpidObject &operator=(const AliHFEpidObject &ref);
+    ~AliHFEpidObject(){};
+
+    void SetRecTrack(const AliVParticle * recTrack) {fkRecTrack = recTrack; }
+    void SetMCTrack(const AliVParticle * mcTrack);
+    void SetAnalysisType(AnalysisType_t type) { fAnalysisType = type; }
+    void SetAbInitioPID(Int_t abInitioPID) { fAbInitioPID = abInitioPID; }
+    void SetCentrality(Float_t centrality) { fCentrality = centrality; }
+
+    const AliVParticle *GetRecTrack() const { return fkRecTrack; }
+    Int_t GetAbInitioPID() const { return fAbInitioPID; }
+    Float_t GetCentrality() const { return fCentrality; }
+    Bool_t IsAODanalysis() const { return fAnalysisType == static_cast<UChar_t>(kAODanalysis); }
+    Bool_t IsESDanalysis() const { return fAnalysisType == static_cast<UChar_t>(kESDanalysis); }
+
+  private:
+    const AliVParticle *fkRecTrack;    // Reconstructed track
     UChar_t fAnalysisType;      // Analysis Mode (ESD or AOD)
-    AliHFEpidObject():fRecTrack(NULL), fMCtrack(NULL), fAnalysisType(kESDanalysis){}
+    Int_t fAbInitioPID;         // AbInitio PID
+    Float_t fCentrality;        // Centrality Information
 };
 
 class AliHFEpidBase : public TNamed{
   public:
+    AliHFEpidBase();
     AliHFEpidBase(const Char_t *name);
     AliHFEpidBase(const AliHFEpidBase &c);
     AliHFEpidBase &operator=(const AliHFEpidBase &c);
     virtual ~AliHFEpidBase() {};
     // Framework functions that have to be implemented by the detector PID classes
     virtual Bool_t InitializePID() = 0;
-    virtual Int_t IsSelected(AliHFEpidObject *track) = 0;
-    virtual Bool_t HasQAhistos() const = 0;
+    virtual Int_t IsSelected(const AliHFEpidObject *track, AliHFEpidQAmanager *pidqa = NULL) const = 0;
 
-    Int_t GetDebugLevel() const { return fDebugLevel; };
-    Bool_t IsQAon() const { return TestBit(kQAon);};
     Bool_t HasMCData() const { return TestBit(kHasMCData); };
 
-    void SetDebugLevel(Int_t debugLevel) { fDebugLevel = debugLevel; }; 
-    inline void SetQAOn(TList *fQAlist);
+    void SetESDpid(AliESDpid * const pid) { fESDpid = pid; }
+    void SetAODpid(AliAODpidUtil * const pid) { fAODpid = pid; }
     void SetHasMCData(Bool_t hasMCdata = kTRUE) { SetBit(kHasMCData,hasMCdata); };
 
+    AliESDpid *GetESDpid() const { return fESDpid; }; 
+
   protected:
+    AliESDpid *fESDpid;                         //! ESD PID object
+    AliAODpidUtil *fAODpid;                     //! AOD PID object
     void Copy(TObject &ref) const;
-    virtual void AddQAhistograms(TList *){};
+
   private:
     enum{
-      kQAon = BIT(14),
-      kHasMCData = BIT(15)
+      kHasMCData = BIT(14)
     };
 
-    Int_t fDebugLevel;              // Debug Level
-
-    ClassDef(AliHFEpidBase, 1)      // Base class for detector Electron ID
+    ClassDef(AliHFEpidBase, 2)      // Base class for detector Electron ID
 };
-
-//___________________________________________________________________
-void AliHFEpidBase::SetQAOn(TList *qaList){
-  //
-  // Initialize QA for Detector PID class
-  //
-  if(HasQAhistos()){
-    SetBit(kQAon, kTRUE);
-    AddQAhistograms(qaList);
-  }
-}
 #endif