Fix Coverity
[u/mrichter/AliRoot.git] / PWG4 / CaloCalib / AliAnalysisTaskEMCALPi0CalibSelection.h
CommitLineData
375cec9b 1#ifndef ALIANALYSISTASKEMCALPI0CALIBSELECTION_H
2#define ALIANALYSISTASKEMCALPI0CALIBSELECTION_H
3
4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
7//---------------------------------------------------------------------------//
8// Fill histograms with two-cluster invariant mass //
9// using calibration coefficients of the previous iteration. //
10//---------------------------------------------------------------------------//
11
12// Root includes
13class TH1F;
6eb2a715 14#include "TH2I.h"
15#include "TObjArray.h"
375cec9b 16
17// AliRoot includes
18#include "AliAnalysisTaskSE.h"
19class AliEMCALGeometry;
375cec9b 20#include "AliEMCALGeoParams.h"
9584c261 21class AliEMCALRecoUtils;
375cec9b 22
23class AliAnalysisTaskEMCALPi0CalibSelection : public AliAnalysisTaskSE
24{
25public:
26
375cec9b 27 AliAnalysisTaskEMCALPi0CalibSelection(const char* name);
375cec9b 28 virtual ~AliAnalysisTaskEMCALPi0CalibSelection();
29
9584c261 30private:
31
32 AliAnalysisTaskEMCALPi0CalibSelection(const AliAnalysisTaskEMCALPi0CalibSelection&);
33 AliAnalysisTaskEMCALPi0CalibSelection& operator=(const AliAnalysisTaskEMCALPi0CalibSelection&);
34
35public:
36
375cec9b 37 // Implementation of interface methods
afaaef51 38 void UserCreateOutputObjects();
39
40 void UserExec(Option_t * opt);
41
42 void LocalInit() ;
43
44 void PrintInfo();
45
46 void GetMaxEnergyCellPosAndClusterPos(AliVCaloCells* cells, AliVCluster* clu, Int_t& iSM, Int_t& ieta, Int_t& iphi);
47
48 // Analysis parameter setting
49
50 void SetPairDTimeCut(Float_t t) { fDTimeCut = t ; }
51 void SetAsymmetryCut(Float_t asy) { fAsyCut = asy ; }
52 void SetClusterMinEnergy(Float_t emin) { fEmin = emin ; }
53 void SetClusterMaxEnergy(Float_t emax) { fEmax = emax ; }
49b53920 54 void SetClusterLambda0Cuts(Float_t min, Float_t max){ fL0max = max ;
55 fL0min = min ; }
afaaef51 56 void SetClusterMinNCells(Int_t n) { fMinNCells = n ; }
57 void SetNCellsGroup(Int_t n) { fGroupNCells = n ; }
58 void SetLogWeight(Float_t w) { fLogWeight = w ; }
59
a7e5a381 60 void SetPairMinMassCut(Float_t min) { fInvMassCutMin = min ; }
61 void SetPairMaxMassCut(Float_t max) { fInvMassCutMax = max ; }
62
afaaef51 63 void SwitchOnSameSM() { fSameSM = kTRUE ; }
64 void SwitchOffSameSM() { fSameSM = kFALSE ; }
65
66 void UseFilteredEventAsInput() { fFilteredInput = kTRUE ; }
67 void UseNormalEventAsInput() { fFilteredInput = kFALSE ; }
68
69 void SetTriggerName(TString name) { fTriggerName = name ; }
49b53920 70
42b19289 71 //Geometry setters
afaaef51 72
73 void SetGeometryName(TString name) { fEMCALGeoName = name ; }
74 TString GeometryName() const { return fEMCALGeoName ; }
75 void SwitchOnLoadOwnGeometryMatrices() { fLoadMatrices = kTRUE ; }
76 void SwitchOffLoadOwnGeometryMatrices() { fLoadMatrices = kFALSE ; }
77 void SetGeometryMatrixInSM(TGeoHMatrix* m, Int_t i) { fMatrix[i] = m ; }
42b19289 78
79 // Cluster recalculation
afaaef51 80 void SwitchOnClusterCorrection() { fCorrectClusters = kTRUE ; }
81 void SwitchOffClusterCorrection() { fCorrectClusters = kFALSE ; }
82 void SetEMCALRecoUtils(AliEMCALRecoUtils * ru) { fRecoUtils = ru ; }
83 AliEMCALRecoUtils* GetEMCALRecoUtils() const { return fRecoUtils ; }
2dfb1428 84
42b19289 85 void SetInvariantMassHistoBinRange(Int_t nBins, Float_t minbin, Float_t maxbin){
a7e5a381 86 fNbins = nBins ; fMinBin = minbin ; fMaxBin = maxbin ; }
87
88 void SetTimeHistoBinRange (Int_t nBins, Float_t minbin, Float_t maxbin){
89 fNTimeBins = nBins ; fMinTimeBin = minbin ; fMaxTimeBin = maxbin ; }
42b19289 90
a7e5a381 91
42b19289 92 // Mask clusters
93 void SetNMaskCellColumns(Int_t n) {
94 if(n > fNMaskCellColumns){ delete [] fMaskCellColumns ; fMaskCellColumns = new Int_t[n] ; }
95 fNMaskCellColumns = n ; }
96 void SetMaskCellColumn(Int_t ipos, Int_t icol) { if(ipos < fNMaskCellColumns) fMaskCellColumns[ipos] = icol ;
97 else printf("Not set, position larger than allocated set size first") ; }
98 Bool_t MaskFrameCluster(const Int_t iSM, const Int_t ieta) const;
3b13c34c 99
375cec9b 100private:
101
cf028690 102 AliEMCALGeometry * fEMCALGeo; //! EMCAL geometry
375cec9b 103
49b53920 104 Float_t fEmin; // min. cluster energy (GeV)
105 Float_t fEmax; // max. cluster energy (GeV)
106 Float_t fL0min; // min. cluster L0
107 Float_t fL0max; // max. cluster L0
108
109 Float_t fDTimeCut; // Maximum difference between time of cluster pairs (ns)
110 Float_t fAsyCut; // Asymmetry cut
111 Int_t fMinNCells; // min. ncells in cluster
112 Int_t fGroupNCells; // group n cells
113 Float_t fLogWeight; // log weight used in cluster recalibration
114 Bool_t fSameSM; // Combine clusters in channels on same SM
115 Bool_t fFilteredInput; // Read input produced with filter.
116 Bool_t fCorrectClusters; // Correct clusters energy, position etc.
117
118 TString fEMCALGeoName; // Name of geometry to use.
119 TString fTriggerName; // Trigger name must contain this name
120
121 AliEMCALRecoUtils * fRecoUtils; // Access to reconstruction utilities
afaaef51 122
49b53920 123 TList * fCuts ; //! List with analysis cuts
124 Bool_t fLoadMatrices; // Matrices set from configuration, not get from geometry.root or from ESDs/AODs
125 TGeoHMatrix * fMatrix[AliEMCALGeoParams::fgkEMCALModules]; // Geometry matrices with alignments
afaaef51 126
49b53920 127 Int_t fNMaskCellColumns; // Number of masked columns
128 Int_t* fMaskCellColumns; //[fNMaskCellColumns] list of masked cell collumn
afaaef51 129
a7e5a381 130 // Pi0 clusters selection
131
132 Float_t fInvMassCutMin; // Min mass cut for clusters to fill time or other histograms
133 Float_t fInvMassCutMax; // Mas mass cut for clusters to fill time or other histograms
134
375cec9b 135 //Output histograms
a7e5a381 136
137 TList* fOutputContainer; //!histogram container
138
49b53920 139 Int_t fNbins; // N mass bins of invariant mass histograms
140 Float_t fMinBin; // Minimum mass bins of invariant mass histograms
141 Float_t fMaxBin; // Maximum mass bins of invariant mass histograms
a7e5a381 142
143 Int_t fNTimeBins; // N time bins of invariant mass histograms
144 Float_t fMinTimeBin; // Minimum time bins of invariant mass histograms
145 Float_t fMaxTimeBin; // Maximum time bins of invariant mass histograms
49b53920 146
cf028690 147 TH1F* fHmpi0[AliEMCALGeoParams::fgkEMCALModules][AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows];//! two-cluster inv. mass assigned to each cell.
9584c261 148
49b53920 149 TH2F* fHmgg; //! two-cluster inv.mass vs pt of pair
150 TH2F* fHmggDifferentSM; //! two-cluster inv.mass vs pt of pair, each cluster in different SM
151 TH2F* fHmggSM[AliEMCALGeoParams::fgkEMCALModules]; //! two-cluster inv.mass per SM
152 TH2F* fHmggPairSameSectorSM[AliEMCALGeoParams::fgkEMCALModules/2]; //! two-cluster inv.mass per Pair
153 TH2F* fHmggPairSameSideSM [AliEMCALGeoParams::fgkEMCALModules-2]; //! two-cluster inv.mass per Pair
154
155 TH2F* fHmggMaskFrame; //! two-cluster inv.mass vs pt of pair, mask clusters facing frames
156 TH2F* fHmggDifferentSMMaskFrame; //! two-cluster inv.mass vs pt of pair, each cluster in different SM,mask clusters facing frames
157 TH2F* fHmggSMMaskFrame[AliEMCALGeoParams::fgkEMCALModules]; //! two-cluster inv.mass per SM, mask clusters facing frames
158 TH2F* fHmggPairSameSectorSMMaskFrame[AliEMCALGeoParams::fgkEMCALModules/2]; //! two-cluster inv.mass per Pair, mask clusters facing frames
159 TH2F* fHmggPairSameSideSMMaskFrame [AliEMCALGeoParams::fgkEMCALModules-2]; //! two-cluster inv.mass per Pair, mask clusters facing frames
160
161 TH2F* fHOpeningAngle; //! two-cluster opening angle vs pt of pair, with mass close to pi0
162 TH2F* fHOpeningAngleDifferentSM; //! two-cluster opening angle vs pt of pair, each cluster in different SM, with mass close to pi0
163 TH2F* fHOpeningAngleSM[AliEMCALGeoParams::fgkEMCALModules]; //! two-cluster opening angle vs pt per SM,with mass close to pi0
164 TH2F* fHOpeningAnglePairSM[AliEMCALGeoParams::fgkEMCALModules]; //! two-cluster opening angle vs pt per Pair,with mass close to pi0
165
166 TH2F* fHIncidentAngle; //! cluster incident angle vs pt of pair, with mass close to pi0
167 TH2F* fHIncidentAngleDifferentSM; //! cluster incident angle vs pt of pair, each cluster in different SM, with mass close to pi0
168 TH2F* fHIncidentAngleSM[AliEMCALGeoParams::fgkEMCALModules]; //! cluster incident angle vs pt per SM,with mass close to pi0
169 TH2F* fHIncidentAnglePairSM[AliEMCALGeoParams::fgkEMCALModules]; //! cluster incident angle vs pt per Pair,with mass close to pi0
170
171 TH2F* fHAsymmetry; //! two-cluster asymmetry vs pt of pair, with mass close to pi0
172 TH2F* fHAsymmetryDifferentSM; //! two-cluster asymmetry vs pt of pair, each cluster in different SM, with mass close to pi0
173 TH2F* fHAsymmetrySM[AliEMCALGeoParams::fgkEMCALModules]; //! two-cluster asymmetry vs pt per SM,with mass close to pi0
174 TH2F* fHAsymmetryPairSM[AliEMCALGeoParams::fgkEMCALModules]; //! two-cluster asymmetry vs pt per Pair,with mass close to pi0
175
176 TH2F* fhTowerDecayPhotonHit[AliEMCALGeoParams::fgkEMCALModules] ; //! Cells ordered in column/row for different module, number of times a decay photon hits
177 TH2F* fhTowerDecayPhotonEnergy[AliEMCALGeoParams::fgkEMCALModules] ; //! Cells ordered in column/row for different module, accumulated energy in the tower by decay photons.
178 TH2F* fhTowerDecayPhotonAsymmetry[AliEMCALGeoParams::fgkEMCALModules] ; //! Cells ordered in column/row for different module, accumulated asymmetry in the tower by decay photons.
179 TH2F* fhTowerDecayPhotonHitMaskFrame[AliEMCALGeoParams::fgkEMCALModules] ; //! Cells ordered in column/row for different module, number of times a decay photon hits
180
181 TH1I* fhNEvents; //! Number of events counter histogram
afaaef51 182
af2d7c9b 183 //Time
a7e5a381 184 TH2F* fHTpi0[4]; //! Time of cell under pi0 mass, for 4 bunch crossings
49b53920 185 TH2F* fhClusterTime ; //! Timing of clusters vs energy
186 TH2F* fhClusterTimeSM[AliEMCALGeoParams::fgkEMCALModules] ; //! Timing of clusters vs energy per SM
187 TH2F* fhClusterPairDiffTime; //! Diference in time of clusters
188 TH2F* fhClusterPairDiffTimeSameSM[AliEMCALGeoParams::fgkEMCALModules]; //! Diference in time of clusters same SM
189 TH2F* fhClusterPairDiffTimeSameSector[AliEMCALGeoParams::fgkEMCALModules/2]; //! Diference in time of clusters same sector
190 TH2F* fhClusterPairDiffTimeSameSide[AliEMCALGeoParams::fgkEMCALModules-2]; //! Diference in time of clusters same side
191
a7e5a381 192 ClassDef(AliAnalysisTaskEMCALPi0CalibSelection,17);
375cec9b 193
194};
195
196#endif //ALIANALYSISTASKEMCALPI0CALIBSELECTION_H