6 #include "AliEMCALGeometry.h"
7 #include "AliOADBContainer.h"
8 #include "AliEMCALRecoUtils.h"
9 #include "AliAODEvent.h"
25 ,fCalibrateTime(kFALSE)
26 ,fCalibrateTimeL1Phase(kFALSE)
27 ,fUseAutomaticTimeCalib(1)
28 ,fCellTimeDistBefore(0)
29 ,fCellTimeDistAfter(0)
48 AliWarning(
"Init EMCAL time calibration");
58 fRecoUtils->SetPositionAlgorithm(AliEMCALRecoUtils::kPosTowerGlobal);
71 fCellTimeDistBefore =
new TH1F(
"hCellTimeDistBefore",
"hCellTimeDistBefore;t_cell",1000,-10e-6,10e-6);
73 fCellTimeDistAfter =
new TH1F(
"hCellTimeDistAfter",
"hCellTimeDistAfter;t_cell",1000,-10e-6,10e-6);
86 AliError(
"Event ptr = 0, returning");
102 fRecoUtils->SwitchOnL1PhaseInTimeRecalibration();
104 fRecoUtils->SwitchOffL1PhaseInTimeRecalibration();
110 AliWarning(Form(
"Number of EMCAL cells = %d, returning",
fCaloCells->GetNumberOfCells()));
140 AliInfo(
"Initialising time calibration map");
143 if (!
fRecoUtils->GetEMCALTimeRecalibrationFactorsArray())
144 fRecoUtils->InitEMCALTimeRecalibrationFactors() ;
148 AliOADBContainer *contBC =
new AliOADBContainer(
"");
151 AliInfo(Form(
"Loading time calibration OADB from given path %s",
fBasePath.Data()));
153 TFile *fbad=
new TFile(Form(
"%s/EMCALTimeCalib.root",
fBasePath.Data()),
"read");
154 if (!fbad || fbad->IsZombie())
156 AliFatal(Form(
"EMCALTimeCalib.root was not found in the path provided: %s",
fBasePath.Data()));
160 if (fbad)
delete fbad;
162 contBC->InitFromFile(Form(
"%s/EMCALTimeCalib.root",
fBasePath.Data()),
"AliEMCALTimeCalib");
166 AliInfo(
"Loading time calibration OADB from $ALICE_PHYSICS/OADB/EMCAL");
168 TFile *fbad=
new TFile(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALTimeCalib.root",
"read");
169 if (!fbad || fbad->IsZombie())
171 AliFatal(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALTimeCalib.root was not found");
175 if (fbad)
delete fbad;
177 contBC->InitFromFile(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALTimeCalib.root",
"AliEMCALTimeCalib");
183 AliError(Form(
"No external time calibration set for run number: %d", runBC));
194 if (
fFilepass==
"spc_calo") pass =
"pass3";
195 if (
fRun > 209121) pass =
"pass1";
200 AliError(Form(
"No external time calibration set for: %d -%s", runBC,pass.Data()));
205 arrayBCpass->Print();
207 for(
Int_t i = 0; i < 4; i++)
209 TH1F *h =
fRecoUtils->GetEMCALChannelTimeRecalibrationFactors(i);
213 h = (TH1F*)arrayBCpass->FindObject(Form(
"hAllTimeAvBC%d",i));
217 AliError(Form(
"Can not get hAllTimeAvBC%d",i));
221 fRecoUtils->SetEMCALChannelTimeRecalibrationFactors(i,h);
239 AliInfo(
"Initialising run-by-run L1 phase in time calibration map");
242 if (!
fRecoUtils->GetEMCALL1PhaseInTimeRecalibrationArray())
243 fRecoUtils->InitEMCALL1PhaseInTimeRecalibration() ;
247 AliOADBContainer *contBC =
new AliOADBContainer(
"");
250 AliInfo(Form(
"Loading time calibration OADB from given path %s",
fBasePath.Data()));
252 TFile *timeFile=
new TFile(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 if (timeFile)
delete timeFile;
261 contBC->InitFromFile(Form(
"%s/EMCALTimeL1PhaseCalib.root",
fBasePath.Data()),
"AliEMCALTimeL1PhaseCalib");
265 AliInfo(
"Loading L1 phase in time calibration OADB from $ALICE_PHYSICS/OADB/EMCAL");
267 TFile *timeFile=
new TFile(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALTimeL1PhaseCalib.root",
"read");
268 if (!timeFile || timeFile->IsZombie())
270 AliFatal(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALTimeL1PhaseCalib.root was not found");
274 if (timeFile)
delete timeFile;
276 contBC->InitFromFile(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALTimeL1PhaseCalib.root",
"AliEMCALTimeL1PhaseCalib");
282 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()));
304 arrayBCpass->Print();
307 TH1C *h =
fRecoUtils->GetEMCALL1PhaseInTimeRecalibrationForAllSM();
310 h = (TH1C*)arrayBCpass->FindObject(Form(
"h%d",runBC));
313 AliFatal(Form(
"There is no calibration histogram h%d for this run",runBC));
316 fRecoUtils->SetEMCALL1PhaseInTimeRecalibrationForAllSM(h);
343 AliError(
"InitTimeCalibration returned false, returning");
346 AliWarning(
"InitTimeCalib OK");
349 AliWarning(Form(
"No external time calibration available: %d - %s",
fEvent->GetRunNumber(),
fFilepass.Data()));
356 if (!initTCL1Phase) {
357 AliError(
"InitTimeCalibrationL1Phase returned false, returning");
359 if (initTCL1Phase==1) {
360 AliWarning(
"InitTimeCalibL1Phase OK");
362 if (initTCL1Phase > 1) {
363 AliWarning(Form(
"No external time calibration L1 phase available: %d - %s",
fEvent->GetRunNumber(),
fFilepass.Data()));
TH1F * fCellTimeDistAfter
! cell energy distribution, after time calibration
void UserCreateOutputObjects()
AliEmcalCorrectionCellTimeCalib()
TH1F * fCellTimeDistBefore
! cell energy distribution, before time calibration
Int_t InitTimeCalibrationL1Phase()
Bool_t CheckIfRunChanged()
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
Flag to make some basic histograms.
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
virtual Bool_t CheckIfRunChanged()
TString fFilepass
Input data pass number.
Int_t InitTimeCalibration()
bool GetProperty(std::string propertyName, T &property, bool requiredProperty=true, std::string correctionName="")
Retrieve property.