AliPhysics  70cdb53 (70cdb53)
AliAnalysisTaskEMCALTimeCalib.h
Go to the documentation of this file.
1 #ifndef AliAnalysisTaskEMCALTimeCalib_h
2 #define AliAnalysisTaskEMCALTimeCalib_h
3 
4 //_________________________________________________________________________
50 //_________________________________________________________________________
51 
52 class TH1F;
53 class TH1D;
54 class TH2D;
55 class TH1C;
56 
57 //class AliESDEvent;
58 //class AliESDCaloCluster;
59 //class AliAODCaloCluster;
60 class AliVCluster;
61 //class AliAODEvent;
62 class AliVEvent;
63 class AliTOFT0maker;
64 
65 #include "AliAnalysisTaskSE.h"
66 
68 {
69  public:
70 
71  enum { kNSM = 20, kNBCmask = 4 };
72 
74  fRunNumber(-1),
75  fTOFmaker(0),
76  fOutputList(0),
77  fgeom(0),
78  fGeometryName(0),
81  fMinNcells(0),
82  fMaxNcells(0),
83  fMinLambda0(0),
84  fMaxLambda0(0),
85  fMinLambda0LG(0),
86  fMaxLambda0LG(0),
87  fMaxRtrack(0),
88  fMinCellEnergy(0),
91  fPileupFromSPD(kFALSE),
92  fMinTime(0),
93  fMaxTime(0),
94  fMostEneCellOnly(kFALSE),
95  fRawTimeNbins (0),
96  fRawTimeMin (0),
97  fRawTimeMax (0),
98  fPassTimeNbins(0),
99  fPassTimeMin (0),
100  fPassTimeMax (0),
101  fEnergyNbins (0),
102  fEnergyMin(0),
103  fEnergyMax(0),
104  fEnergyLGNbins (0),
105  fEnergyLGMin(0),
106  fEnergyLGMax(0),
107  fFineNbins(0),
108  fFineTmin(0),
109  fFineTmax(0),
110  fL1PhaseList(0),
111  fBadReco(kFALSE),
112  fFillHeavyHisto(kFALSE),
114  fBadChannelMapSet(kFALSE),
117  fhcalcEvtTime(0),
118  fhEvtTimeHeader(0),
119  fhEvtTimeDiff(0),
120  fhEventType(0),
122  fhTcellvsTOFT0(0),
123  fhTcellvsTOFT0HD(0),
124  fhTcellvsSM(0),
125  fhEneVsAbsIdHG(0),
126  fhEneVsAbsIdLG(0),
127  fhTimeVsBC(0),
128  fhTimeSumSq(),
129  fhTimeEnt(),
130  fhTimeSum(),
131  fhTimeLGSumSq(),
132  fhTimeLGEnt(),
133  fhTimeLGSum(),
134  fhAllAverageBC(),
136  fhRefRuns(0),
137  fhTimeDsup(),
138  fhTimeDsupBC(),
139  fhTimeDsupLG(),
140  fhTimeDsupLGBC(),
141  fhRawTimeVsIdBC(),
142  fhRawTimeSumBC(),
151  fhTimeVsIdBC(),
153  { ; }
154 
155  AliAnalysisTaskEMCALTimeCalib(const char *name);
157 
158  // virtual void LocalInit();
159  //virtual Bool_t Notify();
160  virtual void NotifyRun();
161  virtual void UserCreateOutputObjects();
162  virtual void UserExec(Option_t *option);
163  virtual void Terminate(Option_t *);
164 
165  // Getters and setters
180  Double_t GetMinTime() { return fMinTime ; }
181  Double_t GetMaxTime() { return fMaxTime ; }
183 
184  void SetRunNumber (Int_t v) { fRunNumber = v ; }
187  void SetMinNcells (Int_t v) { fMinNcells = v ; }
188  void SetMaxNcells (Int_t v) { fMaxNcells = v ; }
189  void SetMinLambda0 (Double_t v) { fMinLambda0 = v ; }
190  void SetMaxLambda0 (Double_t v) { fMaxLambda0 = v ; }
193  void SetMaxRtrack (Double_t v) { fMaxRtrack = v ; }
198  void SetMinTime (Double_t v) { fMinTime = v ; }
199  void SetMaxTime (Double_t v) { fMaxTime = v ; }
201 
202  //histogram settings
205  fRawTimeMin = lower ;
206  fRawTimeMax = upper ;
207  }
210  fPassTimeMin = lower ;
211  fPassTimeMax = upper ;
212  }
215  fEnergyMin = lower ;
216  fEnergyMax = upper ;
217  }
220  fEnergyLGMin = lower ;
221  fEnergyLGMax = upper ;
222  }
223 
225  fFineNbins = nbins;
226  fFineTmin = lower ;
227  fFineTmax = upper ;
228  }
229 
230 
231  // Switches
234 
237 
238  void SwitchOnBadReco() { fBadReco = kTRUE ; }
239  void SwitchOffBadReco() { fBadReco = kFALSE ; }
240 
243 
246 
247  void SetDefaultCuts();
248  void LoadReferenceHistos(); //loaded once per period to the memory
249 
250  void LoadReferenceRunByRunHistos(); //loaded once to the memory at the beginning, phases for all runs
251  void SetL1PhaseReferenceForGivenRun();//set refernce L1phase per run
252 
253  void LoadBadChannelMap(); //load bad channel map, main
254  void LoadBadChannelMapFile(); //load bad channel map from file
255  void LoadBadChannelMapOADB();//load bad channel map from OADB
256  Int_t GetEMCALChannelStatus(Int_t iSM , Int_t iCol, Int_t iRow) const {
257  if(fBadChannelMapArray) return (Int_t) ((TH2I*)fBadChannelMapArray->At(iSM))->GetBinContent(iCol,iRow);
258  else return 0;}//Channel is ok by default
260  if(fBadChannelMapArray) return (Int_t) ((TH2I*)fBadChannelMapArray->At(0))->GetBinContent(absId+1);
261  else return 0;}//Channel is ok by default
262 
263  static void ProduceCalibConsts(TString inputFile="time186319testWOL0.root",TString outputFile="Reference.root",Bool_t isFinal=kFALSE);
264  static void ProduceOffsetForSMsV2(Int_t runNumber,TString inputFile="Reference.root",TString outputFile="ReferenceSM.root",Bool_t offset100=kTRUE, Bool_t justL1phase=kTRUE);
265 
266  private:
267 
268  virtual void PrepareTOFT0maker();
270  Bool_t AcceptCluster(AliVCluster* clus);
271  Bool_t CheckCellRCU(Int_t nSupMod,Int_t icol,Int_t irow);
272  Bool_t IsLowGainCellInCluster(AliVCluster* clus);
273 
274  // data members
276 
278  AliTOFT0maker *fTOFmaker; //->
279 
282 
284  AliEMCALGeometry *fgeom;
286 
287  // setable variables for cuts
288 
291 
294 
299 
301 
303 
306 
308 
311 
313 
314  //histogram settings
330 
333 
335 
336  // bad channel map
341 
342  // histograms
346  TH1F *fhEventType;
354 
355  // histos for storing the time values per cell for further averaging;
357  TH1F *fhTimeEnt [kNBCmask];
358  TH1F *fhTimeSum [kNBCmask];
362 
363  // histos with reference values after the first iteration
366 
367  // histo with reference values run-by-run after the first iteration
368  TH1C *fhRefRuns;
369 
370  // control histos
375 
376  //main histos for raw time
385 
386  //histos for raw time after wrong reconstruction correction (100ns and L1 phase)
389 
390  //histos for raw time after wrong reconstruction correction (100ns and L1 phase) and new L1 phase
393 
396 
399 
401  ClassDef(AliAnalysisTaskEMCALTimeCalib, 3) ;
403 };
404 
405 #endif
Bool_t SetEMCalGeometry()
Set the EMCal Geometry.
TH1F * fhRawTimeEntriesLGBC[kNBCmask]
! 4 BCmask LG
TH2F * fhEneVsAbsIdHG
! energy of each cell for high gain cells with strange time
Double_t fPassTimeMax
upper range of histo with time in passX
TH1F * fhRawTimeSumLGBC[kNBCmask]
! 4 BCmask LG
void SetRawTimeHisto(Int_t nbins, Double_t lower, Double_t upper)
Bool_t AcceptCluster(AliVCluster *clus)
Selection criteria of good cluster are set here.
TH2F * fhRawTimeVsIdBC[kNBCmask]
! 4 BCmask HG
double Double_t
Definition: External.C:58
Int_t fFineNbins
number of bins of histo with T0 time
Definition: External.C:236
TH1F * fhRawTimeSumSqBC[kNBCmask]
! 4 BCmask HG
Double_t fMinLambda0
minimum cluster lambda0
Int_t fEnergyLGNbins
number of bins of histo with energy LG
Int_t GetEMCALChannelStatus(Int_t iSM, Int_t iCol, Int_t iRow) const
TH1F * fhcalcEvtTime
! spectrum calcolot0[0]
Bool_t fBadReco
flag to apply 100ns shift and L1 shift
Double_t fEnergyMin
lower range of histo with energy HG
TString fReferenceRunByRunFileName
name of reference file (run-by-run)
TObjArray * fL1PhaseList
array with phases for set of runs
Double_t fMinTime
minimum cluster time after correction
AliTOFT0maker * fTOFmaker
pointer to get T0 from TOF
Double_t fFineTmax
upper range of histo with T0 time
void SetDefaultCuts()
Set default cuts for calibration.
Int_t fSetBadChannelMapSource
switch to load BC map 0-no BC,1-OADB,2-file
AliAnalysisTaskEMCALTimeCalib & operator=(const AliAnalysisTaskEMCALTimeCalib &)
Assignment operator not implemented.
void LoadBadChannelMap()
Load Bad Channel Map from different source.
Double_t fRawTimeMin
lower range of histo with raw time
TH2F * fhTimeDsupLG[kNSM]
! 20 SM low gain
TH1F * fhRawTimeSumSqLGBC[kNBCmask]
! 4 BCmask LG
void SetEnergyHistoLG(Int_t nbins, Double_t lower, Double_t upper)
Double_t fMaxRtrack
maximum cluster track distance
Double_t fMaxLambda0
maximum cluster lambda0
AliEMCALGeometry * fgeom
pointer to EMCal geometry
Double_t fRawTimeMax
upper range of histo with raw time
TH2F * fhTcellvsTOFT0HD
! time of cell vs TOF T0 time for higher energy threshold
TH2F * fhRawCorrTimeVsIdBC[kNBCmask]
! 4 BCmask HG
Bool_t fMostEneCellOnly
flag to use calibration on most energetic cell in cluster only
TH2F * fhRawCorrTimeVsIdLGBC[kNBCmask]
! 4 BCmask LG
Bool_t IsLowGainCellInCluster(AliVCluster *clus)
Check if low gain cell is in a cluster.
Double_t fMaxTime
maximum cluster time after correction
int Int_t
Definition: External.C:63
Double_t fEnergyMax
upper range of histo with energy HG
void SetPassTimeHisto(Int_t nbins, Double_t lower, Double_t upper)
Double_t fMinClusterEnergy
minimum cluster energy
static void ProduceOffsetForSMsV2(Int_t runNumber, TString inputFile="Reference.root", TString outputFile="ReferenceSM.root", Bool_t offset100=kTRUE, Bool_t justL1phase=kTRUE)
Int_t GetEMCALChannelStatus(Int_t absId) const
TObjArray * fBadChannelMapArray
bad channel map array
Double_t fEnergyLGMax
upper range of histo with energy LG
Double_t fFineTmin
lower range of histo with T0 time
TString fReferenceFileName
! name of reference file (for one period)
Int_t fMaxNcells
maximum number of cells in cluster
Definition: External.C:228
Definition: External.C:212
virtual void UserExec(Option_t *option)
Main loop executed for each event.
virtual void PrepareTOFT0maker()
Get T0 time from TOF.
TH1F * fhTOFT0vsEventNumber
! TOF T0 evolution as a function of time
Bool_t fPileupFromSPD
flag to set PileupFromSPD
TH1F * fhRawTimeSumBC[kNBCmask]
! 4 BCmask HG
Double_t fMinCellEnergy
minimum cell energy
Int_t fMinNcells
minimum number of cells in cluster
Double_t fEnergyLGMin
lower range of histo with energy LG
Task to work on Time Calibration for EMCal/DCal.
Double_t fMinLambda0LG
minimum cluster lambda0 Low Gain
Double_t fMaxClusterEnergy
maximum cluster energy
Bool_t fBadChannelMapSet
flag whether bad channel map is set
TH1F * fhEvtTimeHeader
! spectrum time from header
TH1F * fhEvtTimeDiff
! spectrum time difference
void SetFineT0Histo(Int_t nbins, Double_t lower, Double_t upper)
TH2F * fhTcellvsTOFT0
! time of cell vs TOF T0 time
Double_t fPassTimeMin
lower range of histo with time in passX
Double_t fMaxLambda0LG
maximum cluster lambda0 Low Gain
static void ProduceCalibConsts(TString inputFile="time186319testWOL0.root", TString outputFile="Reference.root", Bool_t isFinal=kFALSE)
TH2F * fhEneVsAbsIdLG
! energy of each cell for low gain cells with strange time
Int_t fPassTimeNbins
number of bins of histo with time in passX
TList * fOutputList
pointer to output list
TH1F * fhRawTimeEntriesBC[kNBCmask]
! 4 BCmask HG
TH2F * fhTimeVsIdBC[kNBCmask]
! 4 BCmask HG
void SetEnergyHistoHG(Int_t nbins, Double_t lower, Double_t upper)
TH2F * fhTimeVsIdLGBC[kNBCmask]
! 4 BCmask LG
const char Option_t
Definition: External.C:48
Bool_t CheckCellRCU(Int_t nSupMod, Int_t icol, Int_t irow)
Check RCU for cell given by Super Module, column index, row index.
TH2F * fhRawTimeVsIdLGBC[kNBCmask]
! 4 BCmask LG
void LoadReferenceHistos()
Load reference Histograms (for one period) from file.
const Int_t nbins
bool Bool_t
Definition: External.C:53
TString fBadChannelFileName
name of file with bad channels
TH1F * fhAllAverageLGBC[kNBCmask]
4 BCmask High gain
Bool_t fFillHeavyHisto
flag to fill heavy histograms
Int_t fEnergyNbins
number of bins of histo with energy HG
Int_t fRawTimeNbins
number of bins of histo with raw time
TH2F * fhTimeDsup[kNSM]
! 20 SM high gain
TH2F * fhTimeDsupBC[kNSM][kNBCmask]
! 20 x 4 high gain
TH2F * fhTimeDsupLGBC[kNSM][kNBCmask]
! 20 x 4 low gain