memory leak fixed
[u/mrichter/AliRoot.git] / PWG4 / CaloCalib / AliAnalysisTaskEMCALClusterizeFast.h
1 #ifndef ALIANALYSISTASKEMCALCLUSTERIZEFAST_H
2 #define ALIANALYSISTASKEMCALCLUSTERIZEFAST_H
3
4 // $Id$
5
6 class TObjArray;
7 class TClonesArray;
8 class AliAODEvent;
9 class AliESDEvent;
10 class AliEMCALCalibData;
11 class AliCaloCalibPedestal;
12 class AliEMCALClusterizer;
13 class AliEMCALAfterBurnerUF;
14 class AliEMCALRecParam;
15 class AliEMCALRecoUtils;
16
17 #include "AliAnalysisTaskSE.h"
18
19 class AliAnalysisTaskEMCALClusterizeFast : public AliAnalysisTaskSE {
20  public:
21   AliAnalysisTaskEMCALClusterizeFast();
22   AliAnalysisTaskEMCALClusterizeFast(const char *name);
23   virtual ~AliAnalysisTaskEMCALClusterizeFast();
24   
25  public:
26   virtual void           UserCreateOutputObjects();
27   virtual void           UserExec(Option_t *option);
28
29   Bool_t                 GetAttachClusters()                  const  { return fAttachClusters       ; }
30   Bool_t                 GetRecalibrateOnly()                 const  { return fRecalibOnly          ; }
31   Bool_t                 GetSubBackground()                   const  { return fSubBackground        ; }
32   const TObjArray       *GetClusters()                        const  { return fClusterArr           ; }
33   const TClonesArray    *GetDigits()                          const  { return fDigitsArr            ; }
34   const TString         &GeometryName()                       const  { return fGeomName             ; }  
35   AliEMCALRecParam      *GetRecParam()                        const  { return fRecParam             ; }
36   AliEMCALRecoUtils     *GetRecoUtils()                       const  { return fRecoUtils            ; }
37   AliEMCALCalibData     *GetCalibData()                       const  { return fCalibData            ; }
38   AliCaloCalibPedestal  *GetPedData()                         const  { return fPedestalData         ; }
39   TGeoHMatrix           *GetGeometryMatrix(Int_t i)           const  { return fGeomMatrix[i]        ; }
40   void                   JustUnfold(Bool_t yesno)                    { fJustUnfold          = yesno ; }
41   void                   LoadOwnGeometryMatrices(Bool_t b)           { fLoadGeomMatrices    = b     ; }
42   void                   SetAODBranchName(const char *name)          { fOutputAODBrName     = name  ; }
43   void                   SetAttachClusters(Bool_t b)                 { fAttachClusters      = b     ; }
44   void                   SetCalibData(AliEMCALCalibData *d)          { fCalibData           = d     ; }
45   void                   SetEMCALRecoUtils(AliEMCALRecoUtils *ru)    { fRecoUtils           = ru    ; }
46   void                   SetGeometryMatrix(TGeoHMatrix* m, Int_t i)  { fGeomMatrix[i]       = m     ; }
47   void                   SetGeometryName(const char *name)           { fGeomName            = name  ; }
48   void                   SetLoadCalib(Bool_t b)                      { fLoadCalib           = b     ; }
49   void                   SetLoadPed(Bool_t b)                        { fLoadPed             = b     ; }
50   void                   SetOCDBPath(const char *path)               { fOCDBpath            = path  ; }
51   void                   SetPedestalData(AliCaloCalibPedestal *d)    { fPedestalData        = d     ; }
52   void                   SetRecalibrateCellsOnly(Bool_t b)           { fRecalibOnly         = b     ; }
53   void                   SetSubBackground(Bool_t b)                  { fSubBackground       = b     ; }
54
55  protected:
56   virtual void           Clusterize();
57   virtual void           FillDigitsArray();
58   virtual void           Init();
59   virtual void           RecPoints2Clusters(TClonesArray *clus);
60   virtual void           UpdateCells();
61   virtual void           UpdateClusters();
62
63   Int_t                  fRun;              //!run number
64   TClonesArray          *fDigitsArr;        //!digits array
65   TObjArray             *fClusterArr;       //!recpoints array
66   AliEMCALRecParam      *fRecParam;         // reconstruction parameters container
67   AliEMCALClusterizer   *fClusterizer;      //!clusterizer
68   AliEMCALAfterBurnerUF *fUnfolder;         //!unfolding procedure
69   Bool_t                 fJustUnfold;       // just unfold, do not recluster
70   TString                fGeomName;         // name of geometry to use.
71   Bool_t                 fGeomMatrixSet;    // set geometry matrices only once, for the first event.         
72   Bool_t                 fLoadGeomMatrices; // matrices from configuration, not geometry.root nor ESDs/AODs
73   TGeoHMatrix           *fGeomMatrix[12];   // geometry matrices with alignments
74   TString                fOCDBpath;         // path with OCDB location
75   AliEMCALCalibData     *fCalibData;        // EMCAL calib data
76   AliCaloCalibPedestal  *fPedestalData;     // EMCAL pedestal
77   TClonesArray          *fOutputAODBranch;  //!AOD Branch with output clusters  
78   TString                fOutputAODBrName;  // output AOD branch name (none by default)
79   AliEMCALRecoUtils     *fRecoUtils;        // access to factorized reconstruction algorithms
80   Bool_t                 fLoadCalib;        // access calib object from OCDB (def=off)
81   Bool_t                 fLoadPed;          // access ped object from OCDB (def=off)
82   Bool_t                 fAttachClusters;   // attach clusters to input event (AOD or ESD)
83   Bool_t                 fRecalibOnly;      // only recalibrate cells if true (def=off)
84   Bool_t                 fSubBackground;    // subtract background if true (def=off)
85
86  private:
87   AliAnalysisTaskEMCALClusterizeFast(const AliAnalysisTaskEMCALClusterizeFast&);            // not implemented
88   AliAnalysisTaskEMCALClusterizeFast &operator=(const AliAnalysisTaskEMCALClusterizeFast&); // not implemented
89
90   ClassDef(AliAnalysisTaskEMCALClusterizeFast, 5);
91 };
92 #endif //ALIANALYSISTASKEMCALCLUSTERIZEFAST_H