6 #include "AliEMCALGeometry.h"
7 #include "AliOADBContainer.h"
8 #include "AliEMCALRecoUtils.h"
9 #include "AliAODEvent.h"
23 ,fCalibrateTime(kFALSE)
24 ,fCalibrateTimeL1Phase(kFALSE)
25 ,fUseAutomaticTimeCalib(1)
26 ,fCellTimeDistBefore(0)
27 ,fCellTimeDistAfter(0)
30 AliDebug(3, Form(
"%s", __PRETTY_FUNCTION__));
43 AliDebug(3, Form(
"%s", __PRETTY_FUNCTION__));
49 AliWarning(
"Init EMCAL time calibration");
60 fRecoUtils->SetPositionAlgorithm(AliEMCALRecoUtils::kPosTowerGlobal);
68 AliDebug(3, Form(
"%s", __PRETTY_FUNCTION__));
72 fCellTimeDistBefore =
new TH1F(
"hCellTimeDistBefore",
"hCellTimeDistBefore;t_cell",1000,-10e-6,10e-6);
74 fCellTimeDistAfter =
new TH1F(
"hCellTimeDistAfter",
"hCellTimeDistAfter;t_cell",1000,-10e-6,10e-6);
83 AliDebug(3, Form(
"%s", __PRETTY_FUNCTION__));
87 AliError(
"Event ptr = 0, returning");
96 AliWarning(Form(
"Run changed, initializing parameters for %d",
fRun));
97 if (dynamic_cast<AliAODEvent*>(
fEvent)) {
98 AliWarning(
"=============================================================");
99 AliWarning(
"=== Running on AOD is not equivalent to running on ESD! ===");
100 AliWarning(
"=============================================================");
103 fGeom = AliEMCALGeometry::GetInstanceFromRunNumber(
fRun);
106 AliFatal(
"Can not create geometry");
120 AliError(
"InitTimeCalibration returned false, returning");
122 AliWarning(
"InitTimeCalib OK");
125 AliWarning(Form(
"No external time calibration available: %d - %s",
fEvent->GetRunNumber(),
fFilepass.Data()));
132 AliError(
"InitTimeCalibrationL1Phase returned false, returning");
133 if (initTCL1Phase==1) {
134 AliWarning(
"InitTimeCalibL1Phase OK");
136 if (initTCL1Phase > 1)
137 AliWarning(Form(
"No external time calibration L1 phase available: %d - %s",
fEvent->GetRunNumber(),
fFilepass.Data()));
154 fRecoUtils->SwitchOnL1PhaseInTimeRecalibration();
156 fRecoUtils->SwitchOffL1PhaseInTimeRecalibration();
162 AliWarning(Form(
"Number of EMCAL cells = %d, returning",
fCaloCells->GetNumberOfCells()));
190 AliInfo(
"Initialising time calibration map");
193 if (!
fRecoUtils->GetEMCALTimeRecalibrationFactorsArray())
194 fRecoUtils->InitEMCALTimeRecalibrationFactors() ;
198 AliOADBContainer *contBC =
new AliOADBContainer(
"");
201 AliInfo(Form(
"Loading time calibration OADB from given path %s",
fBasePath.Data()));
203 TFile *fbad=
new TFile(Form(
"%s/EMCALTimeCalib.root",
fBasePath.Data()),
"read");
204 if (!fbad || fbad->IsZombie())
206 AliFatal(Form(
"EMCALTimeCalib.root was not found in the path provided: %s",
fBasePath.Data()));
210 if (fbad)
delete fbad;
212 contBC->InitFromFile(Form(
"%s/EMCALTimeCalib.root",
fBasePath.Data()),
"AliEMCALTimeCalib");
216 AliInfo(
"Loading time calibration OADB from $ALICE_PHYSICS/OADB/EMCAL");
218 TFile *fbad=
new TFile(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALTimeCalib.root",
"read");
219 if (!fbad || fbad->IsZombie())
221 AliFatal(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALTimeCalib.root was not found");
225 if (fbad)
delete fbad;
227 contBC->InitFromFile(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALTimeCalib.root",
"AliEMCALTimeCalib");
233 AliError(Form(
"No external time calibration set for run number: %d", runBC));
240 if (
fFilepass==
"calo_spc") pass =
"pass1";
244 AliError(Form(
"No external time calibration set for: %d -%s", runBC,pass.Data()));
249 arrayBCpass->Print();
251 for(
Int_t i = 0; i < 4; i++)
253 TH1F *h =
fRecoUtils->GetEMCALChannelTimeRecalibrationFactors(i);
257 h = (TH1F*)arrayBCpass->FindObject(Form(
"hAllTimeAvBC%d",i));
261 AliError(Form(
"Can not get hAllTimeAvBC%d",i));
265 fRecoUtils->SetEMCALChannelTimeRecalibrationFactors(i,h);
281 AliInfo(
"Initialising run-by-run L1 phase in time calibration map");
284 if (!
fRecoUtils->GetEMCALL1PhaseInTimeRecalibrationArray())
285 fRecoUtils->InitEMCALL1PhaseInTimeRecalibration() ;
289 AliOADBContainer *contBC =
new AliOADBContainer(
"");
292 AliInfo(Form(
"Loading time calibration OADB from given path %s",
fBasePath.Data()));
294 TFile *timeFile=
new TFile(Form(
"%s/EMCALTimeL1PhaseCalib.root",
fBasePath.Data()),
"read");
295 if (!timeFile || timeFile->IsZombie())
297 AliFatal(Form(
"EMCALTimeL1PhaseCalib.root was not found in the path provided: %s",
fBasePath.Data()));
301 if (timeFile)
delete timeFile;
303 contBC->InitFromFile(Form(
"%s/EMCALTimeL1PhaseCalib.root",
fBasePath.Data()),
"AliEMCALTimeL1PhaseCalib");
307 AliInfo(
"Loading L1 phase in time calibration OADB from $ALICE_PHYSICS/OADB/EMCAL");
309 TFile *timeFile=
new TFile(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALTimeL1PhaseCalib.root",
"read");
310 if (!timeFile || timeFile->IsZombie())
312 AliFatal(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALTimeL1PhaseCalib.root was not found");
316 if (timeFile)
delete timeFile;
318 contBC->InitFromFile(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALTimeL1PhaseCalib.root",
"AliEMCALTimeL1PhaseCalib");
324 AliError(Form(
"No external L1 phase in time calibration set for run number: %d", runBC));
338 AliError(Form(
"No external L1 phase in time calibration set for: %d -%s", runBC,pass.Data()));
343 arrayBCpass->Print();
346 TH1C *h =
fRecoUtils->GetEMCALL1PhaseInTimeRecalibrationForAllSM();
349 h = (TH1C*)arrayBCpass->FindObject(Form(
"h%d",runBC));
352 AliFatal(Form(
"There is no calibration histogram h%d for this run",runBC));
355 fRecoUtils->SetEMCALL1PhaseInTimeRecalibrationForAllSM(h);
TH1F * fCellTimeDistAfter
! cell energy distribution, after time calibration
void UserCreateOutputObjects()
AliEmcalCorrectionCellTimeCalib()
AliEMCALGeometry * fGeom
! Geometry object
TH1F * fCellTimeDistBefore
! cell energy distribution, before time calibration
Int_t InitTimeCalibrationL1Phase()
Bool_t fUseAutomaticTimeCalib
On by default the check in the OADB of the time recalibration.
virtual void UserCreateOutputObjects()
AliVCaloCells * fCaloCells
! Pointer to CaloCells
AliEMCALRecoUtils * fRecoUtils
Pointer to RecoUtils.
Bool_t fCalibrateTimeL1Phase
flag cell time calibration with L1phase shift
Base class for correction components in the EMCal correction framework.
TString fBasePath
Base folder path to get root files.
AliVEvent * fEvent
! Pointer to event
TList * fOutput
! List of output histograms
Bool_t fCreateHisto
Default YAML configuration.
virtual ~AliEmcalCorrectionCellTimeCalib()
Time calibration correction component in the EMCal correction framework.
virtual Bool_t Initialize()
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
Bool_t fCalibrateTime
flag cell time calibration
static RegisterCorrectionComponent< AliEmcalCorrectionCellTimeCalib > reg
TString fFilepass
Input data pass number.
Int_t InitTimeCalibration()
bool GetProperty(std::string propertyName, T &property, bool requiredProperty=true, std::string correctionName="")
Retrieve property.