]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/CaloTrackCorrBase/AliCalorimeterUtils.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWG / CaloTrackCorrBase / AliCalorimeterUtils.h
CommitLineData
765d44e7 1#ifndef ALICALORIMETERUTILS_H
2#define ALICALORIMETERUTILS_H
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
765d44e7 5
6//_________________________________________________________________________
7// Class utility for Calorimeter specific selection methods ///
8//
9//
10//
11//-- Author: Gustavo Conesa (LPSC-Grenoble)
12//////////////////////////////////////////////////////////////////////////////
13
14// --- ROOT system ---
de0b770d 15#include <TObject.h>
16#include <TString.h>
17#include <TObjArray.h>
765d44e7 18class TArrayF;
de0b770d 19#include <TH2I.h>
20#include <TGeoMatrix.h>
765d44e7 21
22//--- ANALYSIS system ---
23class AliVEvent;
d832b695 24class AliVTrack;
765d44e7 25class AliAODPWG4Particle;
3c1d9afb 26class AliAODCaloCluster;
c8fe2783 27class AliVCaloCells;
c5693f62 28class AliPHOSGeoUtils;
29class AliEMCALGeometry;
4eb65103 30class AliAODMCParticle;
31class TParticle;
32
19db8f8c 33#include "AliEMCALRecoUtils.h"
765d44e7 34
35class AliCalorimeterUtils : public TObject {
36
78219bac 37 public:
765d44e7 38 AliCalorimeterUtils() ; // ctor
765d44e7 39 virtual ~AliCalorimeterUtils() ;//virtual dtor
765d44e7 40
a5fb4114 41 virtual void InitParameters();
42 virtual void Print(const Option_t * opt) const ;
765d44e7 43
a5fb4114 44 virtual Int_t GetDebug() const { return fDebug ; }
45 virtual void SetDebug(Int_t d) { fDebug = d ; }
765d44e7 46
47 //virtual void Init();
48
7db7dcb6 49 // Cluster contents
50
9dcf63c2 51 Bool_t AreNeighbours(Int_t calo, Int_t absId1, Int_t absId2) const ;
7db7dcb6 52
e1d24b6a 53 Bool_t IsClusterSharedByTwoSuperModules(const AliEMCALGeometry * geom,
54 AliVCluster* cluster);
55
71e3889f 56 Int_t GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCaloCells* cells) ;
57
7db7dcb6 58 Int_t GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCaloCells* cells,
59 Int_t *absIdList, Float_t *maxEList) ;
60
61 Float_t GetLocalMaximaCutE() const { return fLocMaxCutE ; }
62 void SetLocalMaximaCutE(Float_t cut) { fLocMaxCutE = cut ; }
63
64 Float_t GetLocalMaximaCutEDiff() const { return fLocMaxCutEDiff ; }
65 void SetLocalMaximaCutEDiff(Float_t c) { fLocMaxCutEDiff = c ; }
66
c5693f62 67 Int_t GetMaxEnergyCell(AliVCaloCells* cells, const AliVCluster* clu, Float_t & fraction) const ;
13cd2872 68
8a2dbbff 69 void SplitEnergy(Int_t absId1, Int_t absId2, AliVCluster *cluster, AliVCaloCells* cells,
55d66f31 70 //Float_t & e1, Float_t & e2,
8a2dbbff 71 AliAODCaloCluster *cluster1, AliAODCaloCluster *cluster2,
72 Int_t nMax, Int_t eventNumber = 0);//, Int_t *absIdList, Float_t *maxEList,
3c1d9afb 73
74 void SwitchOnClusterPlot() { fPlotCluster = kTRUE ; }
75 void SwitchOffClusterPlot() { fPlotCluster = kFALSE ; }
76
e1d24b6a 77 Float_t GetMCECellClusFracCorrection(Float_t eCell, Float_t eCluster) const ;
78 void SetMCECellClusFracCorrectionParamters(Int_t i, Float_t param) { if(i<4) fMCECellClusFracCorrParam[i] = param; }
79
80 Bool_t IsMCECellClusFracCorrectionOn() const { return fMCECellClusFracCorrOn ; }
81 void SwitchOnMCECellClusFracCorrection() { fMCECellClusFracCorrOn = kTRUE ; }
82 void SwitchOffMCECellClusFracCorrection() { fMCECellClusFracCorrOn = kFALSE ; }
83
84
765d44e7 85 //Calorimeters Geometry Methods
a5fb4114 86 AliEMCALGeometry * GetEMCALGeometry() const { return fEMCALGeo ; }
87 TString EMCALGeometryName() const { return fEMCALGeoName ; }
88 void SetEMCALGeometryName(TString name) { fEMCALGeoName = name ; }
55d66f31 89 void InitEMCALGeometry(Int_t runnumber = 180000) ;
a5fb4114 90 Bool_t IsEMCALGeoMatrixSet() const { return fEMCALGeoMatrixSet ; }
765d44e7 91
a5fb4114 92 AliPHOSGeoUtils * GetPHOSGeometry() const { return fPHOSGeo ; }
93 TString PHOSGeometryName() const { return fPHOSGeoName ; }
94 void SetPHOSGeometryName(TString name) { fPHOSGeoName = name ; }
55d66f31 95 void InitPHOSGeometry(Int_t runnumber = 180000) ;
a5fb4114 96 Bool_t IsPHOSGeoMatrixSet() const { return fPHOSGeoMatrixSet ; }
765d44e7 97
55d66f31 98 void AccessGeometry(AliVEvent* inputEvent) ;
765d44e7 99
9e536695 100 void SetImportGeometryFromFile(Bool_t import,
101 TString path = ""){
102 fImportGeometryFromFile = import ;
103 fImportGeometryFilePath = path ; } // EMCAL
104
9dcf63c2 105 Bool_t IsMCParticleInCalorimeterAcceptance(Int_t calo, TParticle* particle);
106 Bool_t IsMCParticleInCalorimeterAcceptance(Int_t calo, AliAODMCParticle* particle);
107 Bool_t IsMCParticleInCalorimeterAcceptance(Int_t calo, Float_t eta, Float_t theta, Float_t phi, Int_t & absID);
4eb65103 108
a5fb4114 109 void SwitchOnLoadOwnEMCALGeometryMatrices() { fLoadEMCALMatrices = kTRUE ; }
110 void SwitchOffLoadOwnEMCALGeometryMatrices() { fLoadEMCALMatrices = kFALSE ; }
111 void SetEMCALGeometryMatrixInSM(TGeoHMatrix* m, Int_t i) { fEMCALMatrix[i] = m ; }
3b13c34c 112
a5fb4114 113 void SwitchOnLoadOwnPHOSGeometryMatrices() { fLoadPHOSMatrices = kTRUE ; }
114 void SwitchOffLoadOwnPHOSGeometryMatrices() { fLoadPHOSMatrices = kFALSE ; }
115 void SetPHOSGeometryMatrixInSM(TGeoHMatrix* m, Int_t i) { fPHOSMatrix[i] = m ; }
3b13c34c 116
765d44e7 117 // Bad channels
a5fb4114 118 Bool_t IsBadChannelsRemovalSwitchedOn() const { return fRemoveBadChannels ; }
119 void SwitchOnBadChannelsRemoval () { fRemoveBadChannels = kTRUE ;
120 fEMCALRecoUtils->SwitchOnBadChannelsRemoval();
121 if(!fPHOSBadChannelMap) InitPHOSBadChannelStatusMap() ; }
122 void SwitchOffBadChannelsRemoval() { fRemoveBadChannels = kFALSE ;
123 fEMCALRecoUtils->SwitchOffBadChannelsRemoval() ; }
c0b85449 124
a5fb4114 125 Bool_t IsDistanceToBadChannelRecalculated() const { return IsDistanceToBadChannelRecalculated() ; }
126 void SwitchOnDistToBadChannelRecalculation () { fEMCALRecoUtils->SwitchOnDistToBadChannelRecalculation() ; }
127 void SwitchOffDistToBadChannelRecalculation() { fEMCALRecoUtils->SwitchOffDistToBadChannelRecalculation(); }
c0b85449 128
a5fb4114 129 void InitPHOSBadChannelStatusMap () ;
765d44e7 130
a5fb4114 131 Int_t GetEMCALChannelStatus(Int_t iSM , Int_t iCol, Int_t iRow) const {
132 return fEMCALRecoUtils->GetEMCALChannelStatus(iSM,iCol,iRow); }//Channel is ok by default
765d44e7 133
a5fb4114 134 Int_t GetPHOSChannelStatus (Int_t imod, Int_t iCol, Int_t iRow) const {
8a2dbbff 135 if(fPHOSBadChannelMap) return (Int_t) ((TH2I*)fPHOSBadChannelMap->At(imod))->GetBinContent(iCol,iRow);
a5fb4114 136 else return 0 ; }//Channel is ok by default
765d44e7 137
a5fb4114 138 void SetEMCALChannelStatus(Int_t iSM , Int_t iCol, Int_t iRow, Double_t c = 1) {
139 fEMCALRecoUtils->SetEMCALChannelStatus(iSM,iCol,iRow,c) ; }
765d44e7 140
a5fb4114 141 void SetPHOSChannelStatus (Int_t imod, Int_t iCol, Int_t iRow, Double_t c = 1) {
142 if(!fPHOSBadChannelMap) InitPHOSBadChannelStatusMap() ;
143 ((TH2I*)fPHOSBadChannelMap->At(imod))->SetBinContent(iCol,iRow,c) ; }
765d44e7 144
a5fb4114 145 void SetEMCALChannelStatusMap(Int_t iSM , TH2I* h) { fEMCALRecoUtils->SetEMCALChannelStatusMap(iSM,h) ; }
146 void SetPHOSChannelStatusMap(Int_t imod , TH2I* h) { fPHOSBadChannelMap ->AddAt(h,imod) ; }
05b8f25a 147
a5fb4114 148 TH2I * GetEMCALChannelStatusMap(Int_t iSM) const { return fEMCALRecoUtils->GetEMCALChannelStatusMap(iSM) ; }
149 TH2I * GetPHOSChannelStatusMap(Int_t imod) const { return (TH2I*)fPHOSBadChannelMap->At(imod) ; }
765d44e7 150
a5fb4114 151 void SetEMCALChannelStatusMap(TObjArray *map) { fEMCALRecoUtils->SetEMCALChannelStatusMap(map) ; }
152 void SetPHOSChannelStatusMap (TObjArray *map) { fPHOSBadChannelMap = map ; }
765d44e7 153
9dcf63c2 154 Bool_t ClusterContainsBadChannel(Int_t calo,UShort_t* cellList, Int_t nCells);
9e5f7975 155 Bool_t ClusterContainsBadChannel(TString /*calo*/,UShort_t* /*cellList*/, Int_t /*nCells*/) {return kFALSE;} // Stupid thing to do but just to avoid compilation break in AliTrackComparisonESD while I find the authors
765d44e7 156
a5fb4114 157 // Mask clusters in front of frame, EMCAL only
158 Int_t GetNMaskCellColumns() const { return fNMaskCellColumns;}
159 void SetNMaskCellColumns(Int_t n) {
160 if(n > fNMaskCellColumns) { delete [] fMaskCellColumns ; fMaskCellColumns = new Int_t[n] ; }
161 fNMaskCellColumns = n ; }
162 void SetMaskCellColumn(Int_t ipos, Int_t icol) {
163 if(ipos < fNMaskCellColumns) fMaskCellColumns[ipos] = icol;
164 else printf("Not set, position larger than allocated set size first") ; }
8a2dbbff 165 Bool_t MaskFrameCluster(Int_t iSM, Int_t ieta) const ;
a5fb4114 166
167
765d44e7 168 //Calorimeter indexes information
a5fb4114 169 Int_t GetModuleNumber(AliAODPWG4Particle * particle, AliVEvent* inputEvent) const;
170 Int_t GetModuleNumber(AliVCluster * cluster) const;
9dcf63c2 171 Int_t GetModuleNumberCellIndexes(Int_t absId, Int_t calo, Int_t & icol, Int_t & irow, Int_t &iRCU) const ;
765d44e7 172
173 //Modules fiducial region
6b28ddba 174 Bool_t CheckCellFiducialRegion(AliVCluster* cluster, AliVCaloCells* cells) const ;
58007db9 175 Bool_t CheckCellFiducialRegion(AliVCluster* cluster, AliVCaloCells* cells, AliVEvent* /**/, Int_t /**/)
176 { return CheckCellFiducialRegion(cluster, cells) ; } // Stupid thing to do but just to avoid compilation break in AliTrackComparisonESD while I find the authors
a5fb4114 177 void SetNumberOfCellsFromPHOSBorder(Int_t n) { fNCellsFromPHOSBorder = n ; }
178 Int_t GetNumberOfCellsFromPHOSBorder() const { return fNCellsFromPHOSBorder ; }
179 void SetNumberOfCellsFromEMCALBorder(Int_t n) { fEMCALRecoUtils->SetNumberOfCellsFromEMCALBorder(n) ; }
180 Int_t GetNumberOfCellsFromEMCALBorder() const { return fEMCALRecoUtils->GetNumberOfCellsFromEMCALBorder(); }
181 void SwitchOnNoFiducialBorderInEMCALEta0() { fEMCALRecoUtils->SwitchOnNoFiducialBorderInEMCALEta0() ; }
182 void SwitchOffNoFiducialBorderInEMCALEta0() { fEMCALRecoUtils->SwitchOffNoFiducialBorderInEMCALEta0() ; }
183 Bool_t IsEMCALNoBorderAtEta0() const { return fEMCALRecoUtils->IsEMCALNoBorderAtEta0() ; }
247abff4 184
09e819c9 185 // Recalibration
a5fb4114 186 Bool_t IsRecalibrationOn() const { return fRecalibration ; }
187 void SwitchOnRecalibration() { fRecalibration = kTRUE ;
188 InitPHOSRecalibrationFactors(); fEMCALRecoUtils->SwitchOnRecalibration() ; }
189 void SwitchOffRecalibration() { fRecalibration = kFALSE;
190 fEMCALRecoUtils->SwitchOffRecalibration() ; }
09e819c9 191
a5fb4114 192 void InitPHOSRecalibrationFactors () ;
09e819c9 193
a5fb4114 194 Float_t GetEMCALChannelRecalibrationFactor(Int_t iSM , Int_t iCol, Int_t iRow) const {
195 return fEMCALRecoUtils->GetEMCALChannelRecalibrationFactor(iSM , iCol, iRow) ; }
78219bac 196
a5fb4114 197 Float_t GetPHOSChannelRecalibrationFactor (Int_t imod, Int_t iCol, Int_t iRow) const {
198 if(fPHOSRecalibrationFactors)
199 return (Float_t) ((TH2F*)fPHOSRecalibrationFactors->At(imod))->GetBinContent(iCol,iRow);
200 else return 1 ; }
78219bac 201
a5fb4114 202 void SetEMCALChannelRecalibrationFactor(Int_t iSM , Int_t iCol, Int_t iRow, Double_t c = 1) {
203 fEMCALRecoUtils->SetEMCALChannelRecalibrationFactor(iSM,iCol,iRow,c) ; }
09e819c9 204
a5fb4114 205 void SetPHOSChannelRecalibrationFactor (Int_t imod, Int_t iCol, Int_t iRow, Double_t c = 1) {
206 if(!fPHOSRecalibrationFactors) InitPHOSRecalibrationFactors();
207 ((TH2F*)fPHOSRecalibrationFactors->At(imod))->SetBinContent(iCol,iRow,c) ; }
09e819c9 208
a5fb4114 209 void SetEMCALChannelRecalibrationFactors(Int_t iSM , TH2F* h) { fEMCALRecoUtils->SetEMCALChannelRecalibrationFactors(iSM,h) ; }
210 void SetPHOSChannelRecalibrationFactors(Int_t imod , TH2F* h) { fPHOSRecalibrationFactors ->AddAt(h,imod) ; }
09e819c9 211
a5fb4114 212 TH2F * GetEMCALChannelRecalibrationFactors(Int_t iSM) const { return fEMCALRecoUtils->GetEMCALChannelRecalibrationFactors(iSM) ; }
213 TH2F * GetPHOSChannelRecalibrationFactors(Int_t imod) const { return (TH2F*)fPHOSRecalibrationFactors->At(imod) ; }
09e819c9 214
a5fb4114 215 void SetEMCALChannelRecalibrationFactors(TObjArray *map) { fEMCALRecoUtils->SetEMCALChannelRecalibrationFactors(map) ; }
216 void SetPHOSChannelRecalibrationFactors (TObjArray *map) { fPHOSRecalibrationFactors = map;}
09e819c9 217
9dcf63c2 218 void RecalibrateCellTime (Double_t & time, Int_t calo, Int_t absId, Int_t bunchCrossNumber) const ;
219 void RecalibrateCellAmplitude(Float_t & amp, Int_t calo, Int_t absId) const ;
a5fb4114 220 Float_t RecalibrateClusterEnergy(AliVCluster* cluster, AliVCaloCells * cells);
e1d24b6a 221 Float_t RecalibrateClusterEnergyWeightCell(AliVCluster* cluster, AliVCaloCells * cells, Float_t energyOrg);
765d44e7 222
55d66f31 223 // Run dependent energy calibrations (EMCAL)
224
7bf608c9 225 void SwitchOffRunDepCorrection() { fRunDependentCorrection = kFALSE ; }
226 void SwitchOnRunDepCorrection() { fRunDependentCorrection = kTRUE ; }
55d66f31 227
228 // Time Recalibration (EMCAL)
229
230 Bool_t IsTimeRecalibrationOn() const { return fEMCALRecoUtils->IsTimeRecalibrationOn() ; }
231 void SwitchOffTimeRecalibration() { fEMCALRecoUtils->SwitchOffTimeRecalibration() ; }
232 void SwitchOnTimeRecalibration() { fEMCALRecoUtils->SwitchOnTimeRecalibration() ; }
233
8a2dbbff 234 Float_t GetEMCALChannelTimeRecalibrationFactor(Int_t bc, Int_t absID) const
eeeed2bc 235 { return fEMCALRecoUtils->GetEMCALChannelTimeRecalibrationFactor(bc, absID) ; }
55d66f31 236
8a2dbbff 237 void SetEMCALChannelTimeRecalibrationFactor(Int_t bc, Int_t absID, Double_t c = 0)
55d66f31 238 { fEMCALRecoUtils->SetEMCALChannelTimeRecalibrationFactor(bc, absID, c) ; }
239
8a2dbbff 240 TH1F * GetEMCALChannelTimeRecalibrationFactors(Int_t bc) const { return fEMCALRecoUtils-> GetEMCALChannelTimeRecalibrationFactors(bc) ; }
241 void SetEMCALChannelTimeRecalibrationFactors(TObjArray *map) { fEMCALRecoUtils->SetEMCALChannelTimeRecalibrationFactors(map) ; }
242 void SetEMCALChannelTimeRecalibrationFactors(Int_t bc , TH1F* h) { fEMCALRecoUtils->SetEMCALChannelTimeRecalibrationFactors(bc , h) ; }
55d66f31 243
f2ccb5b8 244 //EMCAL specific utils for the moment
a5fb4114 245 void SetEMCALRecoUtils(AliEMCALRecoUtils * ru) { fEMCALRecoUtils = ru ; }
246 AliEMCALRecoUtils* GetEMCALRecoUtils() const { return fEMCALRecoUtils ; }
9584c261 247
a5fb4114 248 Bool_t IsCorrectionOfClusterEnergyOn() const { return fCorrectELinearity ; }
249 void SwitchOnCorrectClusterLinearity() { fCorrectELinearity = kTRUE ; }
250 void SwitchOffCorrectClusterLinearity() { fCorrectELinearity = kFALSE ; }
251 void CorrectClusterEnergy(AliVCluster *cl);
9584c261 252
a5fb4114 253 Bool_t IsRecalculationOfClusterPositionOn() const { return fRecalculatePosition ; }
254 void SwitchOnRecalculateClusterPosition() { fRecalculatePosition = kTRUE ; }
255 void SwitchOffRecalculateClusterPosition() { fRecalculatePosition = kFALSE ; }
256 void RecalculateClusterPosition(AliVCaloCells* cells, AliVCluster* clu);
257 void RecalculateClusterShowerShapeParameters(AliVCaloCells* cells, AliVCluster* clu){
258 fEMCALRecoUtils->RecalculateClusterShowerShapeParameters((AliEMCALGeometry*)fEMCALGeo, cells, clu) ; }
3b13c34c 259
a5fb4114 260 void RecalculateClusterDistanceToBadChannel(AliVCaloCells* cells, AliVCluster* clu){
261 fEMCALRecoUtils->RecalculateClusterDistanceToBadChannel((AliEMCALGeometry*)fEMCALGeo, cells, clu) ; }
3b13c34c 262
a5fb4114 263 void RecalculateClusterPID(AliVCluster* clu) { fEMCALRecoUtils->RecalculateClusterPID(clu) ; }
9584c261 264
d832b695 265 // *** Track Matching ***
266
8a2dbbff 267 AliVTrack * GetMatchedTrack(AliVCluster * cluster, AliVEvent * event, Int_t index = 0) const ;
d832b695 268
269 // Recalculation
cb5780f4 270 void RecalculateClusterTrackMatching(AliVEvent * event, TObjArray* clusterArray = 0x0) ;
271
a5fb4114 272 void GetMatchedResiduals(Int_t index, Float_t &dR, Float_t &dZ) {
273 if (fRecalculateMatching) fEMCALRecoUtils->GetMatchedResiduals(index,dR,dZ) ; }
9e8998b1 274
f2ccb5b8 275 //This could be used for PHOS ...
a5fb4114 276 void SwitchOnRecalculateClusterTrackMatching() { fRecalculateMatching = kTRUE ; }
277 void SwitchOffRecalculateClusterTrackMatching() { fRecalculateMatching = kFALSE ; }
278 Bool_t IsRecalculationOfClusterTrackMatchingOn() const { return fRecalculateMatching ; }
f2ccb5b8 279
9e8998b1 280 Float_t GetCutZ() const { return fCutZ ; } // PHOS only
281 void SetCutZ(Float_t z) { fCutZ = z ; } // PHOS only
282
283
284 Float_t GetCutR() const { return fCutR ; } // PHOS and EMCAL
285 void SetCutR(Float_t r) { fCutR = r ; // PHOS and EMCA
286 fEMCALRecoUtils->SetCutR(r) ; }
287
288 Float_t GetCutEta() const { return fCutEta ; } // EMCAL only
289 void SetCutEta(Float_t e) { fCutEta = e ; // EMCAL only
290 fEMCALRecoUtils->SetCutEta(e) ; }
291
292 Float_t GetCutPhi() const { return fCutPhi ; } // EMCAL only
293 void SetCutPhi(Float_t p) { fCutPhi = p ; // EMCAL only
294 fEMCALRecoUtils->SetCutPhi(p) ; }
55d66f31 295 // OADB options settings
296
297 void AccessOADB(AliVEvent * event) ;
298
299 TString GetPass() ;
300
301 void SwitchOnEMCALOADB() { fOADBForEMCAL = kTRUE ; }
302 void SwitchOffEMCALOADB() { fOADBForEMCAL = kFALSE ; }
303
304 void SwitchOnPHOSOADB() { fOADBForPHOS = kTRUE ; }
305 void SwitchOffPHOSOADB() { fOADBForPHOS = kFALSE ; }
306
307 void SetEMCALOADBFilePath(TString path) { fOADBFilePathEMCAL = path ; }
308 void SetPHOSOADBFilePath (TString path) { fOADBFilePathPHOS = path ; }
309
190f6f2d 310 void SetNumberOfSuperModulesUsed(Int_t nSM) { fNSuperModulesUsed = nSM ; }
311 Int_t GetNumberOfSuperModulesUsed() const { return fNSuperModulesUsed ; }
f2ccb5b8 312
9dcf63c2 313 enum detector { kEMCAL = 0, kPHOS = 1, kCTS = 2, kDCAL = 3, kDCALPHOS = 4 };
314
765d44e7 315 private:
316
09e819c9 317 Int_t fDebug; // Debugging level
318 TString fEMCALGeoName; // Name of geometry to use for EMCAL.
319 TString fPHOSGeoName; // Name of geometry to use for PHOS.
a38a48f2 320 AliEMCALGeometry * fEMCALGeo ; //! EMCAL geometry pointer
09e819c9 321 AliPHOSGeoUtils * fPHOSGeo ; //! PHOS geometry pointer
322 Bool_t fEMCALGeoMatrixSet; // Check if the transformation matrix is set for EMCAL
323 Bool_t fPHOSGeoMatrixSet ; // Check if the transformation matrix is set for PHOS
3b13c34c 324 Bool_t fLoadEMCALMatrices; // Matrices set from configuration, not get from geometry.root or from ESDs/AODs
90e32961 325 TGeoHMatrix * fEMCALMatrix[12]; // Geometry matrices with alignments
3b13c34c 326 Bool_t fLoadPHOSMatrices; // Matrices set from configuration, not get from geometry.root or from ESDs/AODs
327 TGeoHMatrix * fPHOSMatrix[5]; // Geometry matrices with alignments
09e819c9 328 Bool_t fRemoveBadChannels; // Check the channel status provided and remove clusters with bad channels
2be3914b 329 TObjArray * fPHOSBadChannelMap; // Array of histograms with map of bad channels, PHOS
09e819c9 330 Int_t fNCellsFromPHOSBorder; // Number of cells from PHOS border the cell with maximum amplitude has to be.
a5fb4114 331 Int_t fNMaskCellColumns; // Number of masked columns
332 Int_t* fMaskCellColumns; //[fNMaskCellColumns] list of masked cell collumn
09e819c9 333 Bool_t fRecalibration; // Switch on or off the recalibration
7bf608c9 334 Bool_t fRunDependentCorrection;// Switch on or off the recalibration dependent on T
2be3914b 335 TObjArray * fPHOSRecalibrationFactors; // Array of histograms with map of recalibration factors, PHOS
9584c261 336 AliEMCALRecoUtils* fEMCALRecoUtils; // EMCAL utils for cluster rereconstruction
3b13c34c 337 Bool_t fRecalculatePosition; // Recalculate cluster position
338 Bool_t fCorrectELinearity ; // Correct cluster energy linearity
339 Bool_t fRecalculateMatching; // Recalculate cluster position
9e8998b1 340 Float_t fCutR; // dR cut on matching (PHOS)
341 Float_t fCutZ; // dZ cut on matching (EMCAL/PHOS)
342 Float_t fCutEta; // dEta cut on matching (EMCAL)
343 Float_t fCutPhi; // dPhi cut on matching (EMCAL)
7db7dcb6 344 Float_t fLocMaxCutE; // Local maxima cut must have more than this energy
345 Float_t fLocMaxCutEDiff; // Local maxima cut, when aggregating cells, next can be a bit higher
3c1d9afb 346 Bool_t fPlotCluster; // Plot cluster in splitting method
55d66f31 347 Bool_t fOADBSet ; // AODB parameters already set
348 Bool_t fOADBForEMCAL ; // Get calibration from OADB for EMCAL
349 Bool_t fOADBForPHOS ; // Get calibration from OADB for PHOS
350 TString fOADBFilePathEMCAL ; // Default path $ALICE_ROOT/OADB/EMCAL, if needed change
351 TString fOADBFilePathPHOS ; // Default path $ALICE_ROOT/OADB/PHOS, if needed change
9e536695 352 Bool_t fImportGeometryFromFile;// Import geometry settings in geometry.root file
353 TString fImportGeometryFilePath;// path fo geometry.root file
354
190f6f2d 355 Int_t fNSuperModulesUsed; // Number of supermodules to be used in analysis, can be different than the real geo,
356 // to be used at initialization of histograms
357
4eb65103 358 Bool_t fMCECellClusFracCorrOn; // Correct or not the weight of cells in cluster
e1d24b6a 359 Float_t fMCECellClusFracCorrParam[4]; // Parameters for the function correcting the weight of the cells in the cluster
190f6f2d 360
90e32961 361 AliCalorimeterUtils( const AliCalorimeterUtils & cu) ; // cpy ctor
362 AliCalorimeterUtils & operator = (const AliCalorimeterUtils & cu) ; // cpy assignment
c5693f62 363
e1d24b6a 364 ClassDef(AliCalorimeterUtils,17)
765d44e7 365} ;
366
367
368#endif //ALICALORIMETERUTILS_H
369
370
371