AliPhysics  608b256 (608b256)
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),
118  fBadChannelMapSet(kFALSE),
121  fhcalcEvtTime(0),
122  fhEvtTimeHeader(0),
123  fhEvtTimeDiff(0),
124  fhEventType(0),
126  fhTcellvsTOFT0(0),
127  fhTcellvsTOFT0HD(0),
128  fhTcellvsSM(0),
129  fhEneVsAbsIdHG(0),
130  fhEneVsAbsIdLG(0),
131  fhTimeVsBC(0),
132  fhTimeSumSq(),
133  fhTimeEnt(),
134  fhTimeSum(),
135  fhTimeLGSumSq(),
136  fhTimeLGEnt(),
137  fhTimeLGSum(),
138  fhAllAverageBC(),
140  fhRefRuns(0),
141  fhTimeDsup(),
142  fhTimeDsupBC(),
143  fhTimeDsupLG(),
144  fhTimeDsupLGBC(),
145  fhRawTimeVsIdBC(),
146  fhRawTimeSumBC(),
153  fhRawTimePARs(),
154  fhRawTimeLGPARs(),
157  fhTimeVsIdBC(),
159  { ; }
160 
161  AliAnalysisTaskEMCALTimeCalib(const char *name);
163 
164  // struct for storing PAR info
165  struct PARInfo {
168  std::vector<ULong64_t> PARGlobalBCs;
169  PARInfo() : runNumber(0), numPARs(0), PARGlobalBCs() {}
170  };
171 
172  // virtual void LocalInit();
173  //virtual Bool_t Notify();
174  virtual void NotifyRun();
175  virtual void UserCreateOutputObjects();
176  virtual void UserExec(Option_t *option);
177  virtual void Terminate(Option_t *);
178 
179  // Getters and setters
194  Double_t GetMinTime() { return fMinTime ; }
195  Double_t GetMaxTime() { return fMaxTime ; }
197 
198  void SetRunNumber (Int_t v) { fRunNumber = v ; }
201  void SetMinNcells (Int_t v) { fMinNcells = v ; }
202  void SetMaxNcells (Int_t v) { fMaxNcells = v ; }
203  void SetMinLambda0 (Double_t v) { fMinLambda0 = v ; }
204  void SetMaxLambda0 (Double_t v) { fMaxLambda0 = v ; }
207  void SetMaxRtrack (Double_t v) { fMaxRtrack = v ; }
212  void SetMinTime (Double_t v) { fMinTime = v ; }
213  void SetMaxTime (Double_t v) { fMaxTime = v ; }
215 
216  //histogram settings
219  fRawTimeMin = lower ;
220  fRawTimeMax = upper ;
221  }
224  fPassTimeMin = lower ;
225  fPassTimeMax = upper ;
226  }
229  fEnergyMin = lower ;
230  fEnergyMax = upper ;
231  }
234  fEnergyLGMin = lower ;
235  fEnergyLGMax = upper ;
236  }
237 
239  fFineNbins = nbins;
240  fFineTmin = lower ;
241  fFineTmax = upper ;
242  }
243 
244 
245  // Switches
248 
251 
252  void SwitchOnBadReco() { fBadReco = kTRUE ; }
253  void SwitchOffBadReco() { fBadReco = kFALSE ; }
254 
257 
260 
261  void SetDefaultCuts();
262  void LoadReferenceHistos(); //loaded once per period to the memory
263 
264  void LoadReferenceRunByRunHistos(); //loaded once to the memory at the beginning, phases for all runs
265  void SetL1PhaseReferenceForGivenRun();//set refernce L1phase per run
266 
267  void SetL1PhaseReferencePAR();//set reference L1phase for specific PAR in run
268  void SetPARInfo(TString PARfilename);//for given run, load in PAR info from file
269 
270  void LoadBadChannelMap(); //load bad channel map, main
271  void LoadBadChannelMapFile(); //load bad channel map from file
272  void LoadBadChannelMapOADB();//load bad channel map from OADB
273  Int_t GetEMCALChannelStatus(Int_t iSM , Int_t iCol, Int_t iRow) const {
274  if(fBadChannelMapArray) return (Int_t) ((TH2I*)fBadChannelMapArray->At(iSM))->GetBinContent(iCol,iRow);
275  else return 0;}//Channel is ok by default
277  if(fBadChannelMapArray) return (Int_t) ((TH2I*)fBadChannelMapArray->At(0))->GetBinContent(absId+1);
278  else return 0;}//Channel is ok by default
279 
280  static void ProduceCalibConsts(TString inputFile="time186319testWOL0.root",TString outputFile="Reference.root",Bool_t isFinal=kFALSE, Bool_t isPAR=kFALSE);
281  static void ProduceOffsetForSMsV2(Int_t runNumber,TString inputFile="Reference.root",TString outputFile="ReferenceSM.root",Bool_t offset100=kTRUE, Bool_t justL1phase=kTRUE,TString PARfilename="");
282 
283  private:
284 
285  // variables and functions needed for PAR handling
286  std::vector<PARInfo> fPARvec;
290  void GetPARInfoForRunNumber(Int_t runnum);
291 
292 
293  virtual void PrepareTOFT0maker();
295  Bool_t AcceptCluster(AliVCluster* clus);
296  Bool_t CheckCellRCU(Int_t nSupMod,Int_t icol,Int_t irow);
297  Bool_t IsLowGainCellInCluster(AliVCluster* clus);
298 
299  // data members
301 
302 // /// pointer to get T0 from TOF
303 // AliTOFT0maker *fTOFmaker; //->
304 
307 
309  AliEMCALGeometry *fgeom;
311 
312  // setable variables for cuts
313 
316 
319 
324 
326 
328 
331 
333 
336 
338 
339  //histogram settings
355 
358 
360 
361  // bad channel map
366 
367  // histograms
371  TH1F *fhEventType;
379 
380  // histos for storing the time values per cell for further averaging;
382  TH1F *fhTimeEnt [kNBCmask];
383  TH1F *fhTimeSum [kNBCmask];
387 
388  // histos with reference values after the first iteration
391 
392  // histo with reference values run-by-run after the first iteration
393  TH1C *fhRefRuns;
394 
395  // control histos
400 
401  //main histos for raw time
410 
411  //histos for correction of Raw Time with PAR
412  std::vector<std::vector<TH2F*>> fhRawTimePARs;
413  std::vector<std::vector<TH2F*>> fhRawTimeLGPARs;
414 
415  //histos for raw time after wrong reconstruction correction (100ns and L1 phase)
418 
419  //histos for raw time after wrong reconstruction correction (100ns and L1 phase) and new L1 phase
422 
425 
428 
430  ClassDef(AliAnalysisTaskEMCALTimeCalib, 5) ;
432 };
433 
434 #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
void SetPassTimeHisto(Int_t nbins, Double_t lower, Double_t upper)
Double_t fMinClusterEnergy
minimum cluster energy
Int_t GetEMCALChannelStatus(Int_t absId) const
TObjArray * fBadChannelMapArray
bad channel map array
static void ProduceCalibConsts(TString inputFile="time186319testWOL0.root", TString outputFile="Reference.root", Bool_t isFinal=kFALSE, Bool_t isPAR=kFALSE)
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