new task for reclusterization in EMCAL
[u/mrichter/AliRoot.git] / PWG4 / CaloCalib / AliAnalysisTaskEMCALClusterize.h
1 #ifndef ALIANALYSISTASKEMCALCLUSTERIZE_H\r
2 #define ALIANALYSISTASKEMCALCLUSTERIZE_H\r
3 \r
4 // This analysis provides a new list of clusters to be used in other analysis\r
5 // Author: Gustavo Conesa Balbastre,\r
6 //         Adapted from analysis class from Deepa Thomas\r
7 \r
8 //Root\r
9 class TTree;\r
10 class TClonesArray;\r
11 \r
12 //EMCAL\r
13 class AliEMCALGeometry;\r
14 class AliEMCALCalibData;\r
15 class AliCaloCalibPedestal;\r
16 class AliEMCALClusterizer;\r
17 class AliEMCALAfterBurnerUF;\r
18 class AliEMCALRecParam;\r
19 \r
20 #include "AliAnalysisTaskSE.h"\r
21 \r
22 class AliAnalysisTaskEMCALClusterize : public AliAnalysisTaskSE {\r
23  public:\r
24   AliAnalysisTaskEMCALClusterize();\r
25   AliAnalysisTaskEMCALClusterize(const char *name);\r
26   virtual ~AliAnalysisTaskEMCALClusterize();\r
27   \r
28  private:\r
29   AliAnalysisTaskEMCALClusterize(const AliAnalysisTaskEMCALClusterize&); // not implemented\r
30   AliAnalysisTaskEMCALClusterize& operator=(const AliAnalysisTaskEMCALClusterize&); // not implemented\r
31   \r
32  public:\r
33   virtual void   UserCreateOutputObjects();\r
34   virtual void   UserExec(Option_t *option);\r
35   virtual Bool_t UserNotify();\r
36 \r
37   void           SetOCDBPath(const char *path)                  { fOCDBpath = path             ; }\r
38   \r
39   //Geometry methods\r
40   void           SetGeometryName(TString &name)                 { fGeomName = name             ; }\r
41   TString        GeometryName() const                           { return fGeomName             ; }  \r
42   void           SwitchOnLoadOwnGeometryMatrices()              { fLoadGeomMatrices = kTRUE    ; }\r
43   void           SwitchOffLoadOwnGeometryMatrices()             { fLoadGeomMatrices = kFALSE   ; }\r
44   void           SetGeometryMatrixInSM(TGeoHMatrix* m, Int_t i) { fGeomMatrix[i]    = m        ; }\r
45 \r
46   //AOD methods\r
47   void           SetAODBranchName(TString &name)                { fOutputAODBranchName = name  ; }\r
48   void           FillAODFile(Bool_t yesno)                      { fFillAODFile         = yesno ; }\r
49   \r
50   //Algorithms settings\r
51   void           JustUnfold(Bool_t yesno)                       { fJustUnfold          = yesno ; }\r
52   AliEMCALRecParam * GetRecParam()    const                     { return fRecParam             ; }\r
53   void           InitClusterization();\r
54   \r
55  private:\r
56     \r
57   virtual void  RecPoints2Clusters(TClonesArray *fdigitsArr, TObjArray *fRecPoints, TObjArray *clusArray);\r
58   \r
59   //Geometry  \r
60   AliEMCALGeometry      *fGeom;             //! emcal geometry\r
61   TString                fGeomName;         // Name of geometry to use.\r
62   TGeoHMatrix           *fGeomMatrix[10];   //! Geometry matrices with alignments\r
63   Bool_t                 fGeomMatrixSet;    // Set geometry matrices only once, for the first event.         \r
64   Bool_t                 fLoadGeomMatrices; // Matrices set from configuration, not get from geometry.root or from ESDs/AODs\r
65 \r
66   //OCDB\r
67   AliEMCALCalibData     *fCalibData;        //! emcal calib data\r
68   AliCaloCalibPedestal  *fPedestalData;     //! emcal pedestal\r
69   TString                fOCDBpath;         // Path with OCDB location\r
70 \r
71   //Temporal arrays\r
72   TClonesArray          *fDigitsArr;        //-> digits array\r
73   TObjArray             *fClusterArr;       //! recpoints array\r
74   TObjArray             *fCaloClusterArr;   //! CaloClusters array\r
75 \r
76   //Clusterizers \r
77   AliEMCALRecParam      *fRecParam;         //! reconstruction parameters container\r
78   AliEMCALClusterizer   *fClusterizer;      //! emcal clusterizer\r
79   AliEMCALAfterBurnerUF *fUnfolder;         //! unfolding procedure\r
80   Bool_t                 fJustUnfold;       // Just unfold, do not recluster\r
81   \r
82   //AOD\r
83   TClonesArray          *fOutputAODBranch;  //-> AOD Branch with output clusters  \r
84   TString                fOutputAODBranchName;  // New of output AOD branch\r
85   Bool_t                 fFillAODFile;      // Fill the output AOD file with the new clusters, \r
86                                             // if not they will be only available for the event they were generated\r
87 \r
88   ClassDef(AliAnalysisTaskEMCALClusterize, 1);\r
89 };\r
90 \r
91 #endif //ALIANALYSISTASKEMCALCLUSTERIZE_H\r