8 #include "AliEMCALGeometry.h" 9 #include "AliOADBContainer.h" 11 #include "AliAODEvent.h" 12 #include "AliDataFile.h" 28 ,fCellTimeDistBefore(0)
29 ,fCellTimeDistAfter(0)
30 ,fCalibrateTime(kFALSE)
31 ,fCalibrateTimeL1Phase(kFALSE)
32 ,fUseAutomaticTimeCalib(1)
51 AliWarning(
"Init EMCAL time calibration");
72 fCellTimeDistBefore =
new TH1F(
"hCellTimeDistBefore",
"hCellTimeDistBefore;t_{cell} (s)",1000,-10e-6,10e-6);
74 fCellTimeDistAfter =
new TH1F(
"hCellTimeDistAfter",
"hCellTimeDistAfter;t_{cell} (s)",1000,-10e-6,10e-6);
87 AliError(
"Event ptr = 0, returning");
111 AliWarning(Form(
"Number of EMCAL cells = %d, returning",
fCaloCells->GetNumberOfCells()));
141 AliInfo(
"Initialising time calibration map");
149 std::unique_ptr<AliOADBContainer> contTimeCalib;
150 std::unique_ptr<TFile> timeCalibFile;
153 AliInfo(Form(
"Loading time calibration OADB from given path %s",
fBasePath.Data()));
155 timeCalibFile = std::unique_ptr<TFile>(TFile::Open(Form(
"%s/EMCALTimeCalib.root",
fBasePath.Data()),
"read"));
156 if (!timeCalibFile || timeCalibFile->IsZombie())
158 AliFatal(Form(
"EMCALTimeCalib.root was not found in the path provided: %s",
fBasePath.Data()));
162 contTimeCalib = std::unique_ptr<AliOADBContainer>(
static_cast<AliOADBContainer *
>(timeCalibFile->Get(
"AliEMCALTimeCalib")));
166 AliInfo(
"Loading time calibration OADB from $ALICE_PHYSICS/OADB/EMCAL");
168 timeCalibFile = std::unique_ptr<TFile>(TFile::Open(AliDataFile::GetFileNameOADB(
"EMCAL/EMCALTimeCalib.root").data(),
"read"));
169 if (!timeCalibFile || timeCalibFile->IsZombie())
171 AliFatal(
"OADB/EMCAL/EMCALTimeCalib.root was not found");
175 contTimeCalib = std::unique_ptr<AliOADBContainer>(
static_cast<AliOADBContainer *
>(timeCalibFile->Get(
"AliEMCALTimeCalib")));
178 AliError(
"No OADB container found");
181 contTimeCalib->SetOwner(
true);
186 AliError(Form(
"No external time calibration set for run number: %d", runBC));
196 if (
fFilepass==
"spc_calo") pass =
"pass3";
197 if (
fRun > 209121) pass =
"pass1";
202 AliError(Form(
"No external time calibration set for: %d -%s", runBC,pass.Data()));
206 arrayBCpass->Print();
208 for(
Int_t i = 0; i < 4; i++)
214 h = (TH1F*)arrayBCpass->FindObject(Form(
"hAllTimeAvBC%d",i));
218 AliError(Form(
"Can not get hAllTimeAvBC%d",i));
238 AliInfo(
"Initialising run-by-run L1 phase in time calibration map");
246 std::unique_ptr<AliOADBContainer> contTimeCalib;
247 std::unique_ptr<TFile> timeFile;
250 AliInfo(Form(
"Loading time calibration OADB from given path %s",
fBasePath.Data()));
252 timeFile = std::unique_ptr<TFile>(TFile::Open(Form(
"%s/EMCALTimeL1PhaseCalib.root",
fBasePath.Data()),
"read"));
253 if (!timeFile || timeFile->IsZombie())
255 AliFatal(Form(
"EMCALTimeL1PhaseCalib.root was not found in the path provided: %s",
fBasePath.Data()));
259 contTimeCalib = std::unique_ptr<AliOADBContainer>(
static_cast<AliOADBContainer *
>(timeFile->Get(
"AliEMCALTimeL1PhaseCalib")));
263 AliInfo(
"Loading L1 phase in time calibration OADB from OADB/EMCAL");
265 timeFile = std::unique_ptr<TFile>(TFile::Open(AliDataFile::GetFileNameOADB(
"EMCAL/EMCALTimeL1PhaseCalib.root").data(),
"read"));
266 if (!timeFile || timeFile->IsZombie())
268 AliFatal(
"OADB/EMCAL/EMCALTimeL1PhaseCalib.root was not found");
272 contTimeCalib = std::unique_ptr<AliOADBContainer>(
static_cast<AliOADBContainer *
>(timeFile->Get(
"AliEMCALTimeL1PhaseCalib")));
275 AliError(
"No OADB container found");
278 contTimeCalib->SetOwner(
true);
283 AliError(Form(
"No external L1 phase in time calibration set for run number: %d", runBC));
299 AliError(Form(
"No external L1 phase in time calibration set for: %d -%s", runBC,pass.Data()));
303 arrayBCpass->Print();
309 h = (TH1C*)arrayBCpass->FindObject(Form(
"h%d",runBC));
312 AliFatal(Form(
"There is no calibration histogram h%d for this run",runBC));
340 AliError(
"InitTimeCalibration returned false, returning");
343 AliWarning(
"InitTimeCalib OK");
353 if (!initTCL1Phase) {
354 AliError(
"InitTimeCalibrationL1Phase returned false, returning");
356 if (initTCL1Phase==1) {
357 AliWarning(
"InitTimeCalibL1Phase OK");
359 if (initTCL1Phase > 1) {
TH1F * fCellTimeDistAfter
! cell energy distribution, after time calibration
void UserCreateOutputObjects()
TH1F * GetEMCALChannelTimeRecalibrationFactors(Int_t bc) const
AliEmcalCorrectionCellTimeCalib()
TH1F * fCellTimeDistBefore
! cell energy distribution, before time calibration
void InitEMCALL1PhaseInTimeRecalibration()
TH1C * GetEMCALL1PhaseInTimeRecalibrationForAllSM() const
Int_t InitTimeCalibrationL1Phase()
Bool_t CheckIfRunChanged()
Bool_t fUseAutomaticTimeCalib
On by default the check in the OADB of the time recalibration.
virtual void UserCreateOutputObjects()
AliVEvent * InputEvent() const
AliVCaloCells * fCaloCells
! Pointer to CaloCells
Some utilities for cluster and cell treatment.
TObjArray * GetEMCALL1PhaseInTimeRecalibrationArray() const
AliEMCALRecoUtils * fRecoUtils
Pointer to RecoUtils.
void SwitchOnL1PhaseInTimeRecalibration()
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.
void SetPositionAlgorithm(Int_t alg)
void SwitchOffL1PhaseInTimeRecalibration()
TList * fOutput
! List of output histograms
Bool_t fCreateHisto
Flag to make some basic histograms.
virtual ~AliEmcalCorrectionCellTimeCalib()
void InitEMCALTimeRecalibrationFactors()
Time calibration correction component in the EMCal correction framework.
virtual Bool_t Initialize()
void SetEMCALL1PhaseInTimeRecalibrationForAllSM(const TObjArray *map)
AliEmcalCorrectionEventManager fEventManager
Minimal task which inherits from AliAnalysisTaskSE and manages access to the event.
void SwitchOffTimeRecalibration()
Bool_t fCalibrateTime
flag cell time calibration
TObjArray * GetEMCALTimeRecalibrationFactorsArray() const
static RegisterCorrectionComponent< AliEmcalCorrectionCellTimeCalib > reg
virtual Bool_t CheckIfRunChanged()
void SetEMCALChannelTimeRecalibrationFactors(const TObjArray *map)
void ResetCellsCalibrated()
void SwitchOnTimeRecalibration()
TString fFilepass
Input data pass number.
Int_t InitTimeCalibration()