AliPhysics  ff1d528 (ff1d528)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliCalorimeterUtils.h
Go to the documentation of this file.
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 */
5 
6 //_________________________________________________________________________
19 //_________________________________________________________________________
20 
21 // --- ROOT system ---
22 #include <TObject.h>
23 #include <TString.h>
24 #include <TObjArray.h>
25 class TArrayF;
26 #include <TH2I.h>
27 #include <TGeoMatrix.h>
28 class AliMCEvent;
29 
30 //--- ANALYSIS system ---
31 class AliVEvent;
32 class AliVTrack;
33 class AliAODPWG4Particle;
34 class AliAODCaloCluster;
35 class AliVCaloCells;
36 class AliPHOSGeoUtils;
37 class AliEMCALGeometry;
38 class AliAODMCParticle;
39 class TParticle;
40 class AliVParticle;
41 
42 #include "AliEMCALRecoUtils.h"
43 
44 class AliCalorimeterUtils : public TObject {
45 
46  public:
47  AliCalorimeterUtils() ; // ctor
48  virtual ~AliCalorimeterUtils() ;//virtual dtor
49 
50  virtual void InitParameters();
51  virtual void Print(const Option_t * opt) const ;
52 
53  virtual Int_t GetDebug() const { return fDebug ; }
54  virtual void SetDebug(Int_t d) { fDebug = d ; }
55 
56  //virtual void Init();
57 
58  // Cluster contents
59 
60  Bool_t AreNeighbours(Int_t calo, Int_t absId1, Int_t absId2) const ;
61 
62  Bool_t IsClusterSharedByTwoSuperModules(const AliEMCALGeometry * geom,
63  AliVCluster* cluster);
64 
65  Bool_t GetFECCorrelatedCellAbsId(Int_t absId, Int_t absIdCorr[4]) const ;
66 
67  Bool_t IsAbsIDsFromTCard(Int_t absId1, Int_t absId2,
68  Int_t & rowDiff, Int_t & colDiff) const ;
69 
70  Int_t GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCaloCells* cells) ;
71 
72  Int_t GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCaloCells* cells,
73  Int_t *absIdList, Float_t *maxEList) ;
74 
75  Float_t GetLocalMaximaCutE() const { return fLocMaxCutE ; }
76  void SetLocalMaximaCutE(Float_t cut) { fLocMaxCutE = cut ; }
77 
80 
81  Int_t GetMaxEnergyCell(AliVCaloCells* cells, AliVCluster* clu, Float_t & fraction) const ;
82 
83  void SplitEnergy(Int_t absId1, Int_t absId2, AliVCluster *cluster, AliVCaloCells* cells,
84  //Float_t & e1, Float_t & e2,
85  AliAODCaloCluster *cluster1, AliAODCaloCluster *cluster2,
86  Int_t nMax, Int_t eventNumber = 0);//, Int_t *absIdList, Float_t *maxEList,
87 
88  void SwitchOnClusterPlot() { fPlotCluster = kTRUE ; }
89  void SwitchOffClusterPlot() { fPlotCluster = kFALSE ; }
90 
91  Float_t GetMCECellClusFracCorrection(Float_t eCell, Float_t eCluster) const ;
93 
97 
98  //------------------------------
99  // Calorimeters Geometry Methods
100  //------------------------------
101 
102  AliEMCALGeometry * GetEMCALGeometry() const { return fEMCALGeo ; }
105  void InitEMCALGeometry() ;
107 
108  AliPHOSGeoUtils * GetPHOSGeometry() const { return fPHOSGeo ; }
109  TString PHOSGeometryName() const { return fPHOSGeoName ; }
110  void SetPHOSGeometryName(TString name) { fPHOSGeoName = name ; }
111  void InitPHOSGeometry() ;
113 
114  void AccessGeometry(AliVEvent* inputEvent) ;
115 
117  TString path = ""){
118  fImportGeometryFromFile = import ;
119  fImportGeometryFilePath = path ; } // EMCAL
120 
121  Bool_t IsMCParticleInCalorimeterAcceptance(Int_t calo, AliVParticle* particle);
122  Bool_t IsMCParticleInCalorimeterAcceptance(Int_t calo, TParticle* particle);
123  Bool_t IsMCParticleInCalorimeterAcceptance(Int_t calo, AliAODMCParticle* particle);
125 
128  void SetEMCALGeometryMatrixInSM(TGeoHMatrix* m, Int_t i) { fEMCALMatrix[i] = m ; }
129 
132  void SetPHOSGeometryMatrixInSM(TGeoHMatrix* m, Int_t i) { fPHOSMatrix[i] = m ; }
133 
134  void GetEMCALSubregion(AliVCluster* clus, AliVCaloCells* cells,
135  Int_t & regEta, Int_t & regPhi) const ;
136 
137  //------------------------------
138  // Bad channels
139  //------------------------------
140 
143  fEMCALRecoUtils->SwitchOnBadChannelsRemoval();
146  fEMCALRecoUtils->SwitchOffBadChannelsRemoval() ; }
147 
149  void SwitchOnDistToBadChannelRecalculation () { fEMCALRecoUtils->SwitchOnDistToBadChannelRecalculation() ; }
150  void SwitchOffDistToBadChannelRecalculation() { fEMCALRecoUtils->SwitchOffDistToBadChannelRecalculation(); }
151 
153 
154  Int_t GetEMCALChannelStatus(Int_t iSM , Int_t iCol, Int_t iRow) const {
155  return fEMCALRecoUtils->GetEMCALChannelStatus(iSM,iCol,iRow); }//Channel is ok by default
156 
157  Int_t GetPHOSChannelStatus (Int_t imod, Int_t iCol, Int_t iRow) const {
158  if(fPHOSBadChannelMap) return (Int_t) ((TH2I*)fPHOSBadChannelMap->At(imod))->GetBinContent(iCol,iRow);
159  else return 0 ; }//Channel is ok by default
160 
161  void SetEMCALChannelStatus(Int_t iSM , Int_t iCol, Int_t iRow, Double_t c = 1) {
162  fEMCALRecoUtils->SetEMCALChannelStatus(iSM,iCol,iRow,c) ; }
163 
164  void SetPHOSChannelStatus (Int_t imod, Int_t iCol, Int_t iRow, Double_t c = 1) {
166  ((TH2I*)fPHOSBadChannelMap->At(imod))->SetBinContent(iCol,iRow,c) ; }
167 
168  void SetEMCALChannelStatusMap(Int_t iSM , TH2I* h) { fEMCALRecoUtils->SetEMCALChannelStatusMap(iSM,h) ; }
169  void SetPHOSChannelStatusMap(Int_t imod , TH2I* h) { fPHOSBadChannelMap ->AddAt(h,imod) ; }
170 
171  TH2I * GetEMCALChannelStatusMap(Int_t iSM) const { return fEMCALRecoUtils->GetEMCALChannelStatusMap(iSM) ; }
172  TH2I * GetPHOSChannelStatusMap(Int_t imod) const { return (TH2I*)fPHOSBadChannelMap->At(imod) ; }
173 
174  void SetEMCALChannelStatusMap(TObjArray *map) { fEMCALRecoUtils->SetEMCALChannelStatusMap(map) ; }
176 
177  Bool_t ClusterContainsBadChannel(Int_t calo,UShort_t* cellList, Int_t nCells);
178  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
179 
180  // Mask clusters in front of frame, EMCAL only
183  if(n > fNMaskCellColumns) { delete [] fMaskCellColumns ; fMaskCellColumns = new Int_t[n] ; }
184  fNMaskCellColumns = n ; }
185  void SetMaskCellColumn(Int_t ipos, Int_t icol) {
186  if(ipos < fNMaskCellColumns) fMaskCellColumns[ipos] = icol;
187  else printf("Not set, position larger than allocated set size first") ; }
188  Bool_t MaskFrameCluster(Int_t iSM, Int_t ieta) const ;
189 
190  //------------------------------
191  // Calorimeter indexes information
192  //------------------------------
193 
194  Int_t GetModuleNumber(AliAODPWG4Particle * particle, AliVEvent* inputEvent) const;
195  Int_t GetModuleNumber(AliVCluster * cluster) const;
196  Int_t GetModuleNumberCellIndexes(Int_t absId, Int_t calo, Int_t & icol, Int_t & irow, Int_t &iRCU) const ;
197  Int_t GetModuleNumberCellIndexesAbsCaloMap(Int_t absId, Int_t calo, Int_t & icol, Int_t & irow, Int_t &iRCU,
198  Int_t & icolAbs, Int_t & irowAbs) const ;
199 
200  //------------------------------
201  // Modules fiducial region
202  //------------------------------
203 
204  Bool_t CheckCellFiducialRegion(AliVCluster* cluster, AliVCaloCells* cells) const ;
205  Bool_t CheckCellFiducialRegion(AliVCluster* cluster, AliVCaloCells* cells, AliVEvent* , Int_t )
206  { return CheckCellFiducialRegion(cluster, cells) ; } // Stupid thing to do but just to avoid compilation break in AliTrackComparisonESD while I find the authors
209  void SetNumberOfCellsFromEMCALBorder(Int_t n) { fEMCALRecoUtils->SetNumberOfCellsFromEMCALBorder(n) ; }
210  Int_t GetNumberOfCellsFromEMCALBorder() const { return fEMCALRecoUtils->GetNumberOfCellsFromEMCALBorder(); }
211  void SwitchOnNoFiducialBorderInEMCALEta0() { fEMCALRecoUtils->SwitchOnNoFiducialBorderInEMCALEta0() ; }
212  void SwitchOffNoFiducialBorderInEMCALEta0() { fEMCALRecoUtils->SwitchOffNoFiducialBorderInEMCALEta0() ; }
213  Bool_t IsEMCALNoBorderAtEta0() const { return fEMCALRecoUtils->IsEMCALNoBorderAtEta0() ; }
214 
215  //------------------------------
216  // Recalibration
217  //------------------------------
218 
221  InitPHOSRecalibrationFactors(); fEMCALRecoUtils->SwitchOnRecalibration() ; }
223  fEMCALRecoUtils->SwitchOffRecalibration() ; }
224 
226 
228  return fEMCALRecoUtils->GetEMCALChannelRecalibrationFactor(iSM , iCol, iRow) ; }
229 
232  return (Float_t) ((TH2F*)fPHOSRecalibrationFactors->At(imod))->GetBinContent(iCol,iRow);
233  else return 1 ; }
234 
236  fEMCALRecoUtils->SetEMCALChannelRecalibrationFactor(iSM,iCol,iRow,c) ; }
237 
240  ((TH2F*)fPHOSRecalibrationFactors->At(imod))->SetBinContent(iCol,iRow,c) ; }
241 
242  void SetEMCALChannelRecalibrationFactors(Int_t iSM , TH2F* h) { fEMCALRecoUtils->SetEMCALChannelRecalibrationFactors(iSM,h) ; }
244 
245  TH2F * GetEMCALChannelRecalibrationFactors(Int_t iSM) const { return fEMCALRecoUtils->GetEMCALChannelRecalibrationFactors(iSM) ; }
247 
248  void SetEMCALChannelRecalibrationFactors(TObjArray *map) { fEMCALRecoUtils->SetEMCALChannelRecalibrationFactors(map) ; }
250 
251  void RecalibrateCellTime (Double_t & time, Int_t calo, Int_t absId, Int_t bunchCrossNumber) const ;
252  void RecalibrateCellTimeL1Phase(Double_t & time, Int_t calo, Int_t iSM, Int_t bunchCrossNumber) const;
253  void RecalibrateCellAmplitude(Float_t & amp, Int_t calo, Int_t absId) const ;
254  Float_t RecalibrateClusterEnergy(AliVCluster* cluster, AliVCaloCells * cells);
255  Float_t RecalibrateClusterEnergyWeightCell(AliVCluster* cluster, AliVCaloCells * cells, Float_t energyOrg);
256 
257  //------------------------------
258  // Run dependent energy calibrations (EMCAL)
259  //------------------------------
260 
263 
264  //------------------------------
265  // Time Recalibration (EMCAL)
266  //------------------------------
267 
268  Bool_t IsTimeRecalibrationOn() const { return fEMCALRecoUtils->IsTimeRecalibrationOn() ; }
269  void SwitchOffTimeRecalibration() { fEMCALRecoUtils->SwitchOffTimeRecalibration() ; }
270  void SwitchOnTimeRecalibration() { fEMCALRecoUtils->SwitchOnTimeRecalibration() ; }
271 
273  { return fEMCALRecoUtils->GetEMCALChannelTimeRecalibrationFactor(bc, absID) ; }
274 
276  { fEMCALRecoUtils->SetEMCALChannelTimeRecalibrationFactor(bc, absID, c) ; }
277 
279  void SetEMCALChannelTimeRecalibrationFactors(TObjArray *map) { fEMCALRecoUtils->SetEMCALChannelTimeRecalibrationFactors(map) ; }
280  void SetEMCALChannelTimeRecalibrationFactors(Int_t bc , TH1F* h) { fEMCALRecoUtils->SetEMCALChannelTimeRecalibrationFactors(bc , h) ; }
281 
282  //------------------------------
283  // Time Recalibration - L1 phase (EMCAL)
284  //------------------------------
285  Bool_t IsL1PhaseInTimeRecalibrationOn() const { return fEMCALRecoUtils->IsL1PhaseInTimeRecalibrationOn() ; }
286  void SwitchOffL1PhaseInTimeRecalibration() { fEMCALRecoUtils->SwitchOffL1PhaseInTimeRecalibration() ; }
287  void SwitchOnL1PhaseInTimeRecalibration() { fEMCALRecoUtils->SwitchOnL1PhaseInTimeRecalibration() ; }
288 
289  Int_t GetEMCALL1PhaseInTimeRecalibrationForSM(Int_t iSM) const { return fEMCALRecoUtils->GetEMCALL1PhaseInTimeRecalibrationForSM(iSM) ; }
290  void SetEMCALL1PhaseInTimeRecalibrationForSM(Int_t iSM, Int_t c = 0) { return fEMCALRecoUtils->SetEMCALL1PhaseInTimeRecalibrationForSM(iSM,c) ; }
291 
292  TH1C * GetEMCALL1PhaseInTimeRecalibrationForAllSM()const { return fEMCALRecoUtils->GetEMCALL1PhaseInTimeRecalibrationForAllSM() ; }
293  void SetEMCALL1PhaseInTimeRecalibrationForAllSM(TObjArray *map) { fEMCALRecoUtils->SetEMCALL1PhaseInTimeRecalibrationForAllSM(map) ; }
294  void SetEMCALL1PhaseInTimeRecalibrationForAllSM(TH1C* h) { fEMCALRecoUtils->SetEMCALL1PhaseInTimeRecalibrationForAllSM(h) ; }
295 
296  //------------------------------
297  // EMCAL specific utils for the moment
298  //------------------------------
299 
300  void SetEMCALRecoUtils(AliEMCALRecoUtils * ru) { fEMCALRecoUtils = ru ; }
301  AliEMCALRecoUtils* GetEMCALRecoUtils() const { return fEMCALRecoUtils ; }
302 
306  void CorrectClusterEnergy(AliVCluster *cl);
307 
311  void RecalculateClusterPosition(AliVCaloCells* cells, AliVCluster* clu);
312  void RecalculateClusterShowerShapeParameters(AliVCaloCells* cells, AliVCluster* clu){
313  fEMCALRecoUtils->RecalculateClusterShowerShapeParameters((AliEMCALGeometry*)fEMCALGeo, cells, clu) ; }
314 
315  void RecalculateClusterDistanceToBadChannel(AliVCaloCells* cells, AliVCluster* clu){
316  fEMCALRecoUtils->RecalculateClusterDistanceToBadChannel((AliEMCALGeometry*)fEMCALGeo, cells, clu) ; }
317 
318  void RecalculateClusterPID(AliVCluster* clu) { fEMCALRecoUtils->RecalculateClusterPID(clu) ; }
319 
320  //------------------------------
321  // *** Track Matching ***
322  //------------------------------
323 
324  AliVTrack * GetMatchedTrack(AliVCluster * cluster, AliVEvent * event, Int_t index = -1) const ;
325 
326  // Recalculation
327 
328  void RecalculateClusterTrackMatching(AliVEvent * event,
329  TObjArray* clusterArray = 0x0,
330  AliMCEvent* mc = 0x0) ;
331 
332  void GetMatchedResiduals(Int_t index, Float_t &dR, Float_t &dZ) {
333  if (fRecalculateMatching) fEMCALRecoUtils->GetMatchedResiduals(index,dR,dZ) ; }
334 
335  //------------------------------
336  // This could be used for PHOS ...
337  //------------------------------
338 
342 
343  Float_t GetCutZ() const { return fCutZ ; } // PHOS only
344  void SetCutZ(Float_t z) { fCutZ = z ; } // PHOS only
345 
346 
347  Float_t GetCutR() const { return fCutR ; } // PHOS and EMCAL
348  void SetCutR(Float_t r) { fCutR = r ; // PHOS and EMCA
349  fEMCALRecoUtils->SetCutR(r) ; }
350 
351  Float_t GetCutEta() const { return fCutEta ; } // EMCAL only
352  void SetCutEta(Float_t e) { fCutEta = e ; // EMCAL only
353  fEMCALRecoUtils->SetCutEta(e) ; }
354 
355  Float_t GetCutPhi() const { return fCutPhi ; } // EMCAL only
356  void SetCutPhi(Float_t p) { fCutPhi = p ; // EMCAL only
357  fEMCALRecoUtils->SetCutPhi(p) ; }
358 
359  //------------------------------
360  // OADB options settings
361  //------------------------------
362 
363  void AccessOADB(AliVEvent * event) ;
364 
365  TString GetPass() ;
366 
367  void SwitchOnEMCALOADB() { fOADBForEMCAL = kTRUE ; }
368  void SwitchOffEMCALOADB() { fOADBForEMCAL = kFALSE ; }
369 
370  void SwitchOnPHOSOADB() { fOADBForPHOS = kTRUE ; }
371  void SwitchOffPHOSOADB() { fOADBForPHOS = kFALSE ; }
372 
375 
376  //------------------------------
377  // Other settings
378  //------------------------------
379 
382 
387 
388 
389  void SetRunNumber(Int_t run) { fRunNumber = run ; }
390  Int_t GetRunNumber() const { return fRunNumber ; }
391 
392  private:
393 
395 
397 
399 
400  AliEMCALGeometry * fEMCALGeo ;
401 
402  AliPHOSGeoUtils * fPHOSGeo ;
403 
405 
407 
409 
410  TGeoHMatrix * fEMCALMatrix[22];
411 
413 
414  TGeoHMatrix * fPHOSMatrix[5];
415 
417 
419 
421 
423 
425  Int_t * fMaskCellColumns; //[fNMaskCellColumns]
426 
428 
430 
432 
433  AliEMCALRecoUtils* fEMCALRecoUtils;
434 
436 
438 
440 
442 
444 
446 
448 
450 
452 
454 
456 
458 
460 
462 
464 
466 
468 
472 
474 
476 
478 
481 
484 
486  ClassDef(AliCalorimeterUtils,20) ;
488 
489 } ;
490 
491 
492 #endif //ALICALORIMETERUTILS_H
493 
494 
495 
void SetCutEta(Float_t e)
Bool_t fRecalculatePosition
Recalculate cluster position.
Float_t GetCutZ() const
void SetNumberOfCellsFromPHOSBorder(Int_t n)
AliEMCALGeometry * fEMCALGeo
! EMCAL geometry pointer.
Bool_t IsMCParticleInCalorimeterAcceptance(Int_t calo, AliVParticle *particle)
Check that a MC AOD is in the calorimeter acceptance.
double Double_t
Definition: External.C:58
void InitPHOSRecalibrationFactors()
Init PHOS recalibration factors.
void SetRunNumber(Int_t run)
Bool_t IsRecalculationOfClusterTrackMatchingOn() const
Definition: External.C:236
TGeoHMatrix * fEMCALMatrix[22]
Geometry matrices with alignments.
Int_t GetPHOSChannelStatus(Int_t imod, Int_t iCol, Int_t iRow) const
void SetFirstSuperModuleUsed(Int_t first)
Float_t fLocMaxCutEDiff
Local maxima cut, when aggregating cells, next can be a bit higher.
Bool_t IsCorrectionOfClusterEnergyOn() const
Bool_t IsAbsIDsFromTCard(Int_t absId1, Int_t absId2, Int_t &rowDiff, Int_t &colDiff) const
void SetEMCALOADBFilePath(TString path)
TGeoHMatrix * fPHOSMatrix[5]
Geometry matrices with alignments.
Bool_t ClusterContainsBadChannel(Int_t calo, UShort_t *cellList, Int_t nCells)
void SwitchOnLoadOwnEMCALGeometryMatrices()
AliPHOSGeoUtils * fPHOSGeo
! PHOS geometry pointer.
TH2F * GetPHOSChannelRecalibrationFactors(Int_t imod) const
Int_t GetLastSuperModuleUsed() const
void SetImportGeometryFromFile(Bool_t import, TString path="")
AliEMCALRecoUtils * GetEMCALRecoUtils() const
void SetLastSuperModuleUsed(Int_t last)
Int_t GetEMCALL1PhaseInTimeRecalibrationForSM(Int_t iSM) const
TString EMCALGeometryName() const
void SetEMCALL1PhaseInTimeRecalibrationForAllSM(TObjArray *map)
void SwitchOnDistToBadChannelRecalculation()
void SwitchOnNoFiducialBorderInEMCALEta0()
void SwitchOnMCECellClusFracCorrection()
Float_t GetCutPhi() const
void SetEMCALChannelStatus(Int_t iSM, Int_t iCol, Int_t iRow, Double_t c=1)
void SetPHOSChannelRecalibrationFactors(Int_t imod, TH2F *h)
AliPHOSGeoUtils * GetPHOSGeometry() const
Bool_t fOADBForEMCAL
Get calibration from OADB for EMCAL.
TString PHOSGeometryName() const
Float_t GetPHOSChannelRecalibrationFactor(Int_t imod, Int_t iCol, Int_t iRow) const
void SetEMCALChannelTimeRecalibrationFactors(Int_t bc, TH1F *h)
void SwitchOffRecalculateClusterPosition()
void SwitchOffDistToBadChannelRecalculation()
Bool_t ClusterContainsBadChannel(TString, UShort_t *, Int_t)
Float_t fLocMaxCutE
Local maxima cut must have more than this energy.
Float_t GetMCECellClusFracCorrection(Float_t eCell, Float_t eCluster) const
void RecalculateClusterDistanceToBadChannel(AliVCaloCells *cells, AliVCluster *clu)
Bool_t CheckCellFiducialRegion(AliVCluster *cluster, AliVCaloCells *cells, AliVEvent *, Int_t)
void SetEMCALChannelStatusMap(Int_t iSM, TH2I *h)
Bool_t fRunDependentCorrection
Switch on or off the recalibration dependent on T.
TCanvas * c
Definition: TestFitELoss.C:172
void SetLocalMaximaCutEDiff(Float_t c)
void SetNumberOfCellsFromEMCALBorder(Int_t n)
TObjArray * fPHOSRecalibrationFactors
Array of histograms with map of recalibration factors, PHOS.
TString fEMCALGeoName
Name of geometry to use for EMCAL.
void SetEMCALL1PhaseInTimeRecalibrationForAllSM(TH1C *h)
TH2F * GetEMCALChannelRecalibrationFactors(Int_t iSM) const
void SetPHOSChannelStatus(Int_t imod, Int_t iCol, Int_t iRow, Double_t c=1)
Bool_t fRecalibration
Switch on or off the recalibration.
Float_t GetEMCALChannelRecalibrationFactor(Int_t iSM, Int_t iCol, Int_t iRow) const
TH1F * GetEMCALChannelTimeRecalibrationFactors(Int_t bc) const
void SwitchOnLoadOwnPHOSGeometryMatrices()
Int_t fDebug
Debugging level.
TH1C * GetEMCALL1PhaseInTimeRecalibrationForAllSM() const
Int_t GetNumberOfCellsFromPHOSBorder() const
Bool_t IsRecalibrationOn() const
void SetMCECellClusFracCorrectionParamters(Int_t i, Float_t param)
void SetPHOSGeometryName(TString name)
virtual void Print(const Option_t *opt) const
Print some relevant parameters set for the analysis.
void SetMaskCellColumn(Int_t ipos, Int_t icol)
void RecalculateClusterPID(AliVCluster *clu)
Float_t GetEMCALChannelTimeRecalibrationFactor(Int_t bc, Int_t absID) const
void SwitchOffRecalculateClusterTrackMatching()
Float_t fCutEta
dEta cut on matching (EMCAL).
Float_t GetLocalMaximaCutE() const
void SetCutPhi(Float_t p)
Int_t GetModuleNumber(AliAODPWG4Particle *particle, AliVEvent *inputEvent) const
Get the EMCAL/PHOS module number that corresponds to this particle.
Bool_t fLoadEMCALMatrices
Matrices set from configuration, not get from geometry.root or from ESDs/AODs.
virtual void SetDebug(Int_t d)
AliEMCALGeometry * GetEMCALGeometry() const
int Int_t
Definition: External.C:63
void RecalculateClusterShowerShapeParameters(AliVCaloCells *cells, AliVCluster *clu)
void SwitchOffMCECellClusFracCorrection()
void SetNMaskCellColumns(Int_t n)
Float_t GetLocalMaximaCutEDiff() const
Bool_t IsL1PhaseInTimeRecalibrationOn() const
Bool_t fRecalculateMatching
Recalculate cluster position.
Bool_t MaskFrameCluster(Int_t iSM, Int_t ieta) const
float Float_t
Definition: External.C:68
AliCalorimeterUtils & operator=(const AliCalorimeterUtils &cu)
Assignment operator not implemented.
Bool_t fOADBForPHOS
Get calibration from OADB for PHOS.
Bool_t IsBadChannelsRemovalSwitchedOn() const
Int_t * fMaskCellColumns
List of masked cells collumn index.
Bool_t fRemoveBadChannels
Check the channel status provided and remove clusters with bad channels.
void InitPHOSBadChannelStatusMap()
Init PHOS bad channels map.
virtual Int_t GetDebug() const
Int_t GetRunNumber() const
void RecalculateClusterTrackMatching(AliVEvent *event, TObjArray *clusterArray=0x0, AliMCEvent *mc=0x0)
AliCalorimeterUtils()
Constructor. Initialize parameters.
void SetEMCALChannelTimeRecalibrationFactor(Int_t bc, Int_t absID, Double_t c=0)
virtual void InitParameters()
Initialize the parameters of the analysis.
void SwitchOnRecalculateClusterTrackMatching()
void SetEMCALChannelRecalibrationFactors(TObjArray *map)
Int_t fNMaskCellColumns
Number of masked columns.
Float_t GetCutR() const
Bool_t IsMCECellClusFracCorrectionOn() const
Int_t fLastSuperModuleUsed
Number of last supermodule to be used in analysis, to activate only certain range (DCal or EMCal) ...
void SetPHOSGeometryMatrixInSM(TGeoHMatrix *m, Int_t i)
Int_t GetNumberOfSuperModulesUsed() const
Bool_t IsEMCALNoBorderAtEta0() const
Bool_t IsClusterSharedByTwoSuperModules(const AliEMCALGeometry *geom, AliVCluster *cluster)
Int_t fFirstSuperModuleUsed
Number of first supermodule to be used in analysis, to activate only certain range (DCal or EMCal) ...
Bool_t IsRecalculationOfClusterPositionOn() const
Float_t fMCECellClusFracCorrParam[4]
Parameters for the function correcting the weight of the cells in the cluster.
Int_t GetNumberOfLocalMaxima(AliVCluster *cluster, AliVCaloCells *cells)
Find the number of local maxima in cluster.
Bool_t fEMCALGeoMatrixSet
Check if the transformation matrix is set for EMCAL.
void SetEMCALGeometryName(TString name)
void SetPHOSOADBFilePath(TString path)
void SetNumberOfSuperModulesUsed(Int_t nSM)
void SwitchOffNoFiducialBorderInEMCALEta0()
TH2I * GetPHOSChannelStatusMap(Int_t imod) const
void SetEMCALChannelRecalibrationFactor(Int_t iSM, Int_t iCol, Int_t iRow, Double_t c=1)
Float_t GetCutEta() const
TString GetPass()
Get passx from filename.
void RecalculateClusterPosition(AliVCaloCells *cells, AliVCluster *clu)
Bool_t fImportGeometryFromFile
Import geometry settings in geometry.root file.
Int_t GetNMaskCellColumns() const
Bool_t fCorrectELinearity
Correct cluster energy linearity.
Bool_t fPHOSGeoMatrixSet
Check if the transformation matrix is set for PHOS.
TString fOADBFilePathPHOS
Default path $ALICE_PHYSICS/OADB/PHOS, if needed change.
void CorrectClusterEnergy(AliVCluster *cl)
Correct cluster energy non linearity.
void SetEMCALGeometryMatrixInSM(TGeoHMatrix *m, Int_t i)
void GetMatchedResiduals(Int_t index, Float_t &dR, Float_t &dZ)
Float_t fCutZ
dZ cut on matching (EMCAL/PHOS).
Bool_t fLoadPHOSMatrices
Matrices set from configuration, not get from geometry.root or from ESDs/AODs.
void SetPHOSChannelStatusMap(Int_t imod, TH2I *h)
Int_t fNCellsFromPHOSBorder
Number of cells from PHOS border the cell with maximum amplitude has to be.
AliVTrack * GetMatchedTrack(AliVCluster *cluster, AliVEvent *event, Int_t index=-1) const
void RecalibrateCellTimeL1Phase(Double_t &time, Int_t calo, Int_t iSM, Int_t bunchCrossNumber) const
Recalculate time L1 phase shift if time recalibration available for EMCAL.
Bool_t fMCECellClusFracCorrOn
Correct or not the weight of cells in cluster.
void SetPHOSChannelStatusMap(TObjArray *map)
Int_t fNSuperModulesUsed
Number of supermodules to be used in analysis, can be different than the real geo, to be used at initialization of histograms.
TString fImportGeometryFilePath
Path fo geometry.root file.
Bool_t fPlotCluster
Plot cluster in splitting method.
Int_t fRunNumber
Run number of the data, take it from data itself unless set by user.
void SwitchOffLoadOwnPHOSGeometryMatrices()
void RecalibrateCellAmplitude(Float_t &amp, Int_t calo, Int_t absId) const
Recalculate cell energy if recalibration factor.
void SetEMCALChannelTimeRecalibrationFactors(TObjArray *map)
Bool_t IsPHOSGeoMatrixSet() const
void SwitchOffLoadOwnEMCALGeometryMatrices()
void SetEMCALChannelStatusMap(TObjArray *map)
Bool_t IsTimeRecalibrationOn() const
Bool_t IsDistanceToBadChannelRecalculated() const
Bool_t fOADBSet
AODB parameters already set.
unsigned short UShort_t
Definition: External.C:28
TObjArray * fPHOSBadChannelMap
Array of histograms with map of bad channels, PHOS.
TString fPHOSGeoName
Name of geometry to use for PHOS.
Bool_t AreNeighbours(Int_t calo, Int_t absId1, Int_t absId2) const
const char Option_t
Definition: External.C:48
Int_t GetEMCALChannelStatus(Int_t iSM, Int_t iCol, Int_t iRow) const
Float_t fCutPhi
dPhi cut on matching (EMCAL).
bool Bool_t
Definition: External.C:53
Bool_t IsEMCALGeoMatrixSet() const
Class with utils specific to calorimeter clusters/cells.
Int_t GetNumberOfCellsFromEMCALBorder() const
void AccessGeometry(AliVEvent *inputEvent)
void SetPHOSChannelRecalibrationFactors(TObjArray *map)
void SetEMCALRecoUtils(AliEMCALRecoUtils *ru)
AliEMCALRecoUtils * fEMCALRecoUtils
EMCAL utils for cluster rereconstruction.
Int_t GetFirstSuperModuleUsed() const
void SetEMCALL1PhaseInTimeRecalibrationForSM(Int_t iSM, Int_t c=0)
void SetEMCALChannelRecalibrationFactors(Int_t iSM, TH2F *h)
void AccessOADB(AliVEvent *event)
TString fOADBFilePathEMCAL
Default path $ALICE_PHYSICS/OADB/EMCAL, if needed change.
void RecalibrateCellTime(Double_t &time, Int_t calo, Int_t absId, Int_t bunchCrossNumber) const
Recalculate time if time recalibration available for EMCAL not ready for PHOS.
Int_t GetMaxEnergyCell(AliVCaloCells *cells, AliVCluster *clu, Float_t &fraction) const
For a given CaloCluster, it gets the absId of the cell with maximum energy deposit.
Float_t fCutR
dR cut on matching (PHOS).
void SwitchOffL1PhaseInTimeRecalibration()
void SetLocalMaximaCutE(Float_t cut)
Float_t RecalibrateClusterEnergyWeightCell(AliVCluster *cluster, AliVCaloCells *cells, Float_t energyOrg)
void SplitEnergy(Int_t absId1, Int_t absId2, AliVCluster *cluster, AliVCaloCells *cells, AliAODCaloCluster *cluster1, AliAODCaloCluster *cluster2, Int_t nMax, Int_t eventNumber=0)
Bool_t GetFECCorrelatedCellAbsId(Int_t absId, Int_t absIdCorr[4]) const
Int_t GetModuleNumberCellIndexes(Int_t absId, Int_t calo, Int_t &icol, Int_t &irow, Int_t &iRCU) const
Get the EMCAL/PHOS module, columns, row and RCU/DDL number that corresponds to this absId...
TH2I * GetEMCALChannelStatusMap(Int_t iSM) const
void SetPHOSChannelRecalibrationFactor(Int_t imod, Int_t iCol, Int_t iRow, Double_t c=1)
Float_t RecalibrateClusterEnergy(AliVCluster *cluster, AliVCaloCells *cells)
Recalibrate the cluster energy, considering the recalibration map and the energy of the cells that co...
void GetEMCALSubregion(AliVCluster *clus, AliVCaloCells *cells, Int_t &regEta, Int_t &regPhi) const
Bool_t CheckCellFiducialRegion(AliVCluster *cluster, AliVCaloCells *cells) const
Int_t GetModuleNumberCellIndexesAbsCaloMap(Int_t absId, Int_t calo, Int_t &icol, Int_t &irow, Int_t &iRCU, Int_t &icolAbs, Int_t &irowAbs) const