--- /dev/null
+#ifndef ALIANALYSISTASKEMCALCLUSTERIZE_H\r
+#define ALIANALYSISTASKEMCALCLUSTERIZE_H\r
+\r
+// This analysis provides a new list of clusters to be used in other analysis\r
+// Author: Gustavo Conesa Balbastre,\r
+// Adapted from analysis class from Deepa Thomas\r
+\r
+//Root\r
+class TTree;\r
+class TClonesArray;\r
+\r
+//EMCAL\r
+class AliEMCALGeometry;\r
+class AliEMCALCalibData;\r
+class AliCaloCalibPedestal;\r
+class AliEMCALClusterizer;\r
+class AliEMCALAfterBurnerUF;\r
+class AliEMCALRecParam;\r
+\r
+#include "AliAnalysisTaskSE.h"\r
+\r
+class AliAnalysisTaskEMCALClusterize : public AliAnalysisTaskSE {\r
+ public:\r
+ AliAnalysisTaskEMCALClusterize();\r
+ AliAnalysisTaskEMCALClusterize(const char *name);\r
+ virtual ~AliAnalysisTaskEMCALClusterize();\r
+ \r
+ private:\r
+ AliAnalysisTaskEMCALClusterize(const AliAnalysisTaskEMCALClusterize&); // not implemented\r
+ AliAnalysisTaskEMCALClusterize& operator=(const AliAnalysisTaskEMCALClusterize&); // not implemented\r
+ \r
+ public:\r
+ virtual void UserCreateOutputObjects();\r
+ virtual void UserExec(Option_t *option);\r
+ virtual Bool_t UserNotify();\r
+\r
+ void SetOCDBPath(const char *path) { fOCDBpath = path ; }\r
+ \r
+ //Geometry methods\r
+ void SetGeometryName(TString &name) { fGeomName = name ; }\r
+ TString GeometryName() const { return fGeomName ; } \r
+ void SwitchOnLoadOwnGeometryMatrices() { fLoadGeomMatrices = kTRUE ; }\r
+ void SwitchOffLoadOwnGeometryMatrices() { fLoadGeomMatrices = kFALSE ; }\r
+ void SetGeometryMatrixInSM(TGeoHMatrix* m, Int_t i) { fGeomMatrix[i] = m ; }\r
+\r
+ //AOD methods\r
+ void SetAODBranchName(TString &name) { fOutputAODBranchName = name ; }\r
+ void FillAODFile(Bool_t yesno) { fFillAODFile = yesno ; }\r
+ \r
+ //Algorithms settings\r
+ void JustUnfold(Bool_t yesno) { fJustUnfold = yesno ; }\r
+ AliEMCALRecParam * GetRecParam() const { return fRecParam ; }\r
+ void InitClusterization();\r
+ \r
+ private:\r
+ \r
+ virtual void RecPoints2Clusters(TClonesArray *fdigitsArr, TObjArray *fRecPoints, TObjArray *clusArray);\r
+ \r
+ //Geometry \r
+ AliEMCALGeometry *fGeom; //! emcal geometry\r
+ TString fGeomName; // Name of geometry to use.\r
+ TGeoHMatrix *fGeomMatrix[10]; //! Geometry matrices with alignments\r
+ Bool_t fGeomMatrixSet; // Set geometry matrices only once, for the first event. \r
+ Bool_t fLoadGeomMatrices; // Matrices set from configuration, not get from geometry.root or from ESDs/AODs\r
+\r
+ //OCDB\r
+ AliEMCALCalibData *fCalibData; //! emcal calib data\r
+ AliCaloCalibPedestal *fPedestalData; //! emcal pedestal\r
+ TString fOCDBpath; // Path with OCDB location\r
+\r
+ //Temporal arrays\r
+ TClonesArray *fDigitsArr; //-> digits array\r
+ TObjArray *fClusterArr; //! recpoints array\r
+ TObjArray *fCaloClusterArr; //! CaloClusters array\r
+\r
+ //Clusterizers \r
+ AliEMCALRecParam *fRecParam; //! reconstruction parameters container\r
+ AliEMCALClusterizer *fClusterizer; //! emcal clusterizer\r
+ AliEMCALAfterBurnerUF *fUnfolder; //! unfolding procedure\r
+ Bool_t fJustUnfold; // Just unfold, do not recluster\r
+ \r
+ //AOD\r
+ TClonesArray *fOutputAODBranch; //-> AOD Branch with output clusters \r
+ TString fOutputAODBranchName; // New of output AOD branch\r
+ Bool_t fFillAODFile; // Fill the output AOD file with the new clusters, \r
+ // if not they will be only available for the event they were generated\r
+\r
+ ClassDef(AliAnalysisTaskEMCALClusterize, 1);\r
+};\r
+\r
+#endif //ALIANALYSISTASKEMCALCLUSTERIZE_H\r