1 #ifndef ALIANALYSISTASKEMCALCLUSTERIZEFAST_H
2 #define ALIANALYSISTASKEMCALCLUSTERIZEFAST_H
10 class AliEMCALCalibData;
11 class AliCaloCalibPedestal;
12 class AliEMCALClusterizer;
13 class AliEMCALAfterBurnerUF;
14 class AliEMCALRecParam;
15 class AliEMCALRecoUtils;
17 #include "AliAnalysisTaskSE.h"
19 class AliAnalysisTaskEMCALClusterizeFast : public AliAnalysisTaskSE {
30 AliAnalysisTaskEMCALClusterizeFast();
31 AliAnalysisTaskEMCALClusterizeFast(const char *name);
32 virtual ~AliAnalysisTaskEMCALClusterizeFast();
35 virtual void UserCreateOutputObjects();
36 virtual void UserExec(Option_t *option);
38 Bool_t GetAttachClusters() const { return fAttachClusters ; }
39 Bool_t GetRecalibrateOnly() const { return fRecalibOnly ; }
40 Bool_t GetSubBackground() const { return fSubBackground ; }
41 const TObjArray *GetClusters() const { return fClusterArr ; }
42 const TClonesArray *GetDigits() const { return fDigitsArr ; }
43 const TString &GeometryName() const { return fGeomName ; }
44 AliEMCALRecParam *GetRecParam() const { return fRecParam ; }
45 AliEMCALRecoUtils *GetRecoUtils() const { return fRecoUtils ; }
46 AliEMCALCalibData *GetCalibData() const { return fCalibData ; }
47 AliCaloCalibPedestal *GetPedData() const { return fPedestalData ; }
48 TGeoHMatrix *GetGeometryMatrix(Int_t i) const { return fGeomMatrix[i] ; }
49 Bool_t GetOverwrite() const { return fOverwrite ; }
50 const TString &GetNewClusterArrayName() const { return fNewClusterArrayName ; }
51 Int_t GetnPhi() const { return fNPhi ; }
52 Int_t GetnEta() const { return fNEta ; }
53 Int_t GetShiftPhi() const { return fShiftPhi ; }
54 Int_t GetShiftEta() const { return fShiftEta ; }
55 Bool_t GetTRUShift() const { return fTRUShift ; }
56 InputCellType GetInputCellType() const { return fInputCellType ; }
57 void JustUnfold(Bool_t yesno) { fJustUnfold = yesno ; }
58 void LoadOwnGeometryMatrices(Bool_t b) { fLoadGeomMatrices = b ; }
59 void SetAODBranchName(const char *name) { fOutputAODBrName = name ; }
60 void SetAttachClusters(Bool_t b) { fAttachClusters = b ; }
61 void SetCalibData(AliEMCALCalibData *d) { fCalibData = d ; }
62 void SetEMCALRecoUtils(AliEMCALRecoUtils *ru) { fRecoUtils = ru ; }
63 void SetGeometryMatrix(TGeoHMatrix* m, Int_t i) { fGeomMatrix[i] = m ; }
64 void SetGeometryName(const char *name) { fGeomName = name ; }
65 void SetLoadCalib(Bool_t b) { fLoadCalib = b ; }
66 void SetLoadPed(Bool_t b) { fLoadPed = b ; }
67 void SetOCDBPath(const char *path) { fOCDBpath = path ; }
68 void SetPedestalData(AliCaloCalibPedestal *d) { fPedestalData = d ; }
69 void SetRecalibrateCellsOnly(Bool_t b) { fRecalibOnly = b ; }
70 void SetSubBackground(Bool_t b) { fSubBackground = b ; }
71 void SetOverwrite(Bool_t yes) { fOverwrite = yes ; }
72 void SetNewClusterArrayName(const char *name) { fNewClusterArrayName = name ; }
73 void SetnPhi(Int_t n) { fNPhi = n ; }
74 void SetnEta(Int_t n) { fNEta = n ; }
75 void SetShiftPhi(Int_t n) { fShiftPhi = n ; }
76 void SetShiftEta(Int_t n) { fShiftEta = n ; }
77 void SetTRUShift(Bool_t yes) { fTRUShift = yes ; }
78 void SetInputCellType(InputCellType ic) { fInputCellType = ic ; }
79 void SetTrackName(const char *n) { fTrackName = n ; }
82 virtual void Clusterize();
83 virtual void FillDigitsArray();
85 virtual void RecPoints2Clusters(TClonesArray *clus);
86 virtual void UpdateCells();
87 virtual void UpdateClusters();
89 Int_t fRun; //!run number
90 TClonesArray *fDigitsArr; //!digits array
91 TObjArray *fClusterArr; //!recpoints array
92 AliEMCALRecParam *fRecParam; // reconstruction parameters container
93 AliEMCALClusterizer *fClusterizer; //!clusterizer
94 AliEMCALAfterBurnerUF *fUnfolder; //!unfolding procedure
95 Bool_t fJustUnfold; // just unfold, do not recluster
96 TString fGeomName; // name of geometry to use.
97 Bool_t fGeomMatrixSet; // set geometry matrices only once, for the first event.
98 Bool_t fLoadGeomMatrices; // matrices from configuration, not geometry.root nor ESDs/AODs
99 TGeoHMatrix *fGeomMatrix[12]; // geometry matrices with alignments
100 TString fOCDBpath; // path with OCDB location
101 AliEMCALCalibData *fCalibData; // EMCAL calib data
102 AliCaloCalibPedestal *fPedestalData; // EMCAL pedestal
103 TClonesArray *fOutputAODBranch; //!AOD Branch with output clusters
104 TString fOutputAODBrName; // output AOD branch name (none by default)
105 AliEMCALRecoUtils *fRecoUtils; // access to factorized reconstruction algorithms
106 Bool_t fLoadCalib; // access calib object from OCDB (def=off)
107 Bool_t fLoadPed; // access ped object from OCDB (def=off)
108 Bool_t fAttachClusters; // attach clusters to input event (AOD or ESD)
109 Bool_t fRecalibOnly; // only recalibrate cells if true (def=off)
110 Bool_t fSubBackground; // subtract background if true (def=off)
111 Bool_t fOverwrite; // overwrite existing clusters
112 TString fNewClusterArrayName; // if not overwriting, name of the new cluster array
113 Int_t fNPhi; // nPhi (for FixedWindowsClusterizer)
114 Int_t fNEta; // nEta (for FixedWinoswsClusterizer)
115 Int_t fShiftPhi; // shift in phi (for FixedWindowsClusterizer)
116 Int_t fShiftEta; // shift in eta (for FixedWindowsClusterizer)
117 Bool_t fTRUShift; // shifting inside a TRU (true) or through the whole calorimeter (false) (for FixedWindowsClusterizer)
118 InputCellType fInputCellType; // input cells type to make clusters
119 TString fTrackName; // if not null use track collection for track/cluster matching
123 AliAnalysisTaskEMCALClusterizeFast(const AliAnalysisTaskEMCALClusterizeFast&); // not implemented
124 AliAnalysisTaskEMCALClusterizeFast &operator=(const AliAnalysisTaskEMCALClusterizeFast&); // not implemented
126 ClassDef(AliAnalysisTaskEMCALClusterizeFast, 8);
128 #endif //ALIANALYSISTASKEMCALCLUSTERIZEFAST_H