AliPhysics  master (3d17d9d)
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 #include <fstream>
67 
69 {
70  public:
71 
72  enum { kNSM = 20, kNBCmask = 4 };
73 
75  fPARvec(),
76  fCurrentPARs(),
78  fIsPARRun(0),
79  fRunNumber(-1),
80  fOutputList(0),
81  fgeom(0),
82  fGeometryName(0),
85  fMinNcells(0),
86  fMaxNcells(0),
87  fMinLambda0(0),
88  fMaxLambda0(0),
89  fMinLambda0LG(0),
90  fMaxLambda0LG(0),
91  fMaxRtrack(0),
92  fMinCellEnergy(0),
95  fPileupFromSPD(kFALSE),
96  fMinTime(0),
97  fMaxTime(0),
98  fMostEneCellOnly(kFALSE),
99  fRawTimeNbins (0),
100  fRawTimeMin (0),
101  fRawTimeMax (0),
102  fPassTimeNbins(0),
103  fPassTimeMin (0),
104  fPassTimeMax (0),
105  fEnergyNbins (0),
106  fEnergyMin(0),
107  fEnergyMax(0),
108  fEnergyLGNbins(0),
109  fEnergyLGMin(0),
110  fEnergyLGMax(0),
111  fFineNbins(0),
112  fFineTmin(0),
113  fFineTmax(0),
114  fL1PhaseList(0),
115  fBadReco(kFALSE),
116  fFillHeavyHisto(kFALSE),
117  fOneHistAllBCs(kFALSE),
119  fBadChannelMapSet(kFALSE),
122  fhcalcEvtTime(0),
123  fhEvtTimeHeader(0),
124  fhEvtTimeDiff(0),
125  fhEventType(0),
127  fhTcellvsTOFT0(0),
128  fhTcellvsTOFT0HD(0),
129  fhTcellvsSM(0),
130  fhEneVsAbsIdHG(0),
131  fhEneVsAbsIdLG(0),
132  fhTimeVsBC(0),
133  fhTimeSumSq(),
134  fhTimeEnt(),
135  fhTimeSum(),
136  fhTimeSumSqAllBCs(0x0),
137  fhTimeEntAllBCs(0x0),
138  fhTimeSumAllBCs(0x0),
139  fhTimeLGSumSq(),
140  fhTimeLGEnt(),
141  fhTimeLGSum(),
142  fhTimeLGSumSqAllBCs(0x0),
143  fhTimeLGEntAllBCs(0x0),
144  fhTimeLGSumAllBCs(0x0),
145  fhAllAverageBC(),
147  fhAllAverageAllBCs(0x0),
149  fhRefRuns(0),
150  fhTimeDsup(),
151  fhTimeDsupBC(),
152  fhTimeDsupLG(),
153  fhTimeDsupLGBC(),
154  fhRawTimeVsIdBC(),
155  fhRawTimeSumBC(),
162  fhRawTimePARs(),
163  fhRawTimeLGPARs(),
166  fhTimeVsIdBC(),
167  fhTimeVsIdLGBC(),
168  fhTimeVsIdAllBCs(0x0),
169  fhTimeVsIdLGAllBCs(0x0)
170  { ; }
171 
172  AliAnalysisTaskEMCALTimeCalib(const char *name);
174 
175  // struct for storing PAR info
176  struct PARInfo {
179  std::vector<ULong64_t> PARGlobalBCs;
180  PARInfo() : runNumber(0), numPARs(0), PARGlobalBCs() {}
181  };
182 
183  // virtual void LocalInit();
184  //virtual Bool_t Notify();
185  virtual void NotifyRun();
186  virtual void UserCreateOutputObjects();
187  virtual void UserExec(Option_t *option);
188  virtual void Terminate(Option_t *);
189 
190  // Getters and setters
205  Double_t GetMinTime() { return fMinTime ; }
206  Double_t GetMaxTime() { return fMaxTime ; }
208 
209  void SetRunNumber (Int_t v) { fRunNumber = v ; }
212  void SetMinNcells (Int_t v) { fMinNcells = v ; }
213  void SetMaxNcells (Int_t v) { fMaxNcells = v ; }
214  void SetMinLambda0 (Double_t v) { fMinLambda0 = v ; }
215  void SetMaxLambda0 (Double_t v) { fMaxLambda0 = v ; }
218  void SetMaxRtrack (Double_t v) { fMaxRtrack = v ; }
223  void SetMinTime (Double_t v) { fMinTime = v ; }
224  void SetMaxTime (Double_t v) { fMaxTime = v ; }
226 
227  //histogram settings
230  fRawTimeMin = lower ;
231  fRawTimeMax = upper ;
232  }
235  fPassTimeMin = lower ;
236  fPassTimeMax = upper ;
237  }
240  fEnergyMin = lower ;
241  fEnergyMax = upper ;
242  }
245  fEnergyLGMin = lower ;
246  fEnergyLGMax = upper ;
247  }
248 
250  fFineNbins = nbins;
251  fFineTmin = lower ;
252  fFineTmax = upper ;
253  }
254 
255 
256  // Switches
259 
262 
263  void SwitchOnBadReco() { fBadReco = kTRUE ; }
264  void SwitchOffBadReco() { fBadReco = kFALSE ; }
265 
268 
271 
272  void SetDefaultCuts();
273  void LoadReferenceHistos(); //loaded once per period to the memory
274 
275  void LoadReferenceRunByRunHistos(); //loaded once to the memory at the beginning, phases for all runs
276  void SetL1PhaseReferenceForGivenRun();//set refernce L1phase per run
277 
278  void SetL1PhaseReferencePAR();//set reference L1phase for specific PAR in run
279  void SetPARInfo(TString PARfilename);//for given run, load in PAR info from file
280 
281  void LoadBadChannelMap(); //load bad channel map, main
282  void LoadBadChannelMapFile(); //load bad channel map from file
283  void LoadBadChannelMapOADB();//load bad channel map from OADB
284  Int_t GetEMCALChannelStatus(Int_t iSM , Int_t iCol, Int_t iRow) const {
285  if(fBadChannelMapArray) return (Int_t) ((TH2I*)fBadChannelMapArray->At(iSM))->GetBinContent(iCol,iRow);
286  else return 0;}//Channel is ok by default
288  if(fBadChannelMapArray) return (Int_t) ((TH2I*)fBadChannelMapArray->At(0))->GetBinContent(absId+1);
289  else return 0;}//Channel is ok by default
290 
291  static void ProduceCalibConsts(TString inputFile="time186319testWOL0.root",TString outputFile="Reference.root",Bool_t isFinal=kFALSE, Bool_t oneHistoAllBCs=kFALSE, Bool_t isPAR=kFALSE);
292  static void ProduceOffsetForSMsV2(Int_t runNumber,TString inputFile="Reference.root",TString outputFile="ReferenceSM.root",Bool_t offset100=kTRUE, Bool_t justL1phase=kTRUE,TString PARfilename="");
293 
295 
296  private:
297 
298  // variables and functions needed for PAR handling
299  std::vector<PARInfo> fPARvec;
303  void GetPARInfoForRunNumber(Int_t runnum);
304 
305 
306  virtual void PrepareTOFT0maker();
308  Bool_t AcceptCluster(AliVCluster* clus);
309  Bool_t CheckCellRCU(Int_t nSupMod,Int_t icol,Int_t irow);
310  Bool_t IsLowGainCellInCluster(AliVCluster* clus);
311 
312  // data members
314 
315 // /// pointer to get T0 from TOF
316 // AliTOFT0maker *fTOFmaker; //->
317 
320 
322  AliEMCALGeometry *fgeom;
324 
325  // setable variables for cuts
326 
329 
332 
337 
339 
341 
344 
346 
349 
351 
352  //histogram settings
368 
371 
373 
375 
376  // bad channel map
381 
382  // histograms
386  TH1F *fhEventType;
394 
395  // histos for storing the time values per cell for further averaging;
397  TH1F *fhTimeEnt [kNBCmask];
398  TH1F *fhTimeSum [kNBCmask];
408 
409  // histos with reference values after the first iteration
412 
415 
416  // histo with reference values run-by-run after the first iteration
417  TH1C *fhRefRuns;
418 
419  // control histos
424 
425  //main histos for raw time
434 
435  //histos for correction of Raw Time with PAR
436  std::vector<std::vector<TH2F*>> fhRawTimePARs;
437  std::vector<std::vector<TH2F*>> fhRawTimeLGPARs;
438 
439  //histos for raw time after wrong reconstruction correction (100ns and L1 phase)
442 
443  //histos for raw time after wrong reconstruction correction (100ns and L1 phase) and new L1 phase
448 
451 
454 
456  ClassDef(AliAnalysisTaskEMCALTimeCalib, 7) ;
458 };
459 
460 #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 fCurrentPARIndex
Par Info for current Run Number.
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
std::vector< std::vector< TH2F * > > fhRawTimeLGPARs
!
Double_t fMinTime
minimum cluster time after correction
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
std::vector< std::vector< TH2F * > > fhRawTimePARs
!
Double_t fEnergyMax
upper range of histo with energy HG
Bool_t fOneHistAllBCs
flag to use one histogram for all the BCs instead of four
void SetPassTimeHisto(Int_t nbins, Double_t lower, Double_t upper)
static void ProduceCalibConsts(TString inputFile="time186319testWOL0.root", TString outputFile="Reference.root", Bool_t isFinal=kFALSE, Bool_t oneHistoAllBCs=kFALSE, Bool_t isPAR=kFALSE)
Double_t fMinClusterEnergy
minimum cluster energy
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
std::vector< PARInfo > fPARvec
vector of PAR info for all runs
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 ProduceOffsetForSMsV2(Int_t runNumber, TString inputFile="Reference.root", TString outputFile="ReferenceSM.root", Bool_t offset100=kTRUE, Bool_t justL1phase=kTRUE, TString PARfilename="")
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
Bool_t fIsPARRun
Which PAR the currnt event is after.
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
void GetPARInfoForRunNumber(Int_t runnum)
Does current run have PAR info?
TH2F * fhTimeDsupBC[kNSM][kNBCmask]
! 20 x 4 high gain
TH2F * fhTimeDsupLGBC[kNSM][kNBCmask]
! 20 x 4 low gain