10 #include "AliEMCALRecoUtils.h"
11 #include "AliAnalysisManager.h"
12 #include "AliVEvent.h"
17 #include "AliOADBContainer.h"
30 TNamed(
"AliEmcalCorrectionComponent",
"AliEmcalCorrectionComponent"),
35 fGetPassFromFileName(kTRUE),
70 fGetPassFromFileName(kTRUE),
108 std::string tempString =
"";
116 AliError(
"Received \"default\" as pass value. Defaulting to \"pass1\"! In the case of MC, the user should set the proper pass value in their configuration file! For data, empty quotes should be set so that the pass is automatically set.");
182 Double_t veta = t->GetTrackEtaOnEMCal();
183 Double_t vphi = t->GetTrackPhiOnEMCal();
191 phidiff=TVector2::Phi_mpi_pi(vphi-cphi);
221 AliWarning(Form(
"Run changed, initializing parameters for %d",
fRun));
224 fGeom = AliEMCALGeometry::GetInstanceFromRunNumber(
fRun);
227 AliFatal(
"Can not create geometry");
240 TTree *inputTree = mgr->GetTree();
244 AliError(
"Pointer to tree = 0, returning");
248 TFile *inputFile = inputTree->GetCurrentFile();
250 AliError(
"Null pointer input file, returning");
254 TString fname(inputFile->GetName());
256 else if (fname.Contains(
"pass3_lowIR_pidfix"))
fFilepass =
TString(
"pass3_lowIR_pidfix");
257 else if (fname.Contains(
"pass4_lowIR_pidfix_cookdedx"))
fFilepass =
TString(
"pass4_lowIR_pidfix_cookdedx");
263 else if (fname.Contains(
"LHC11c") && fname.Contains(
"spc_calo"))
fFilepass =
TString(
"spc_calo");
264 else if (fname.Contains(
"calo") || fname.Contains(
"high_lumi"))
266 Printf(
"%s: Path contains <calo> or <high-lumi>, set as <pass1>", GetName());
269 else if (fname.Contains(
"LHC14a1a"))
271 AliInfo(
"Energy calibration activated for this MC production!");
276 AliFatal(Form(
"Pass number string not found: %s. Please set the pass number in the configuration!", fname.Data()));
293 for (
Int_t iCell = 0; iCell <
fCaloCells->GetNumberOfCells(); iCell++){
295 fCaloCells->GetCell(iCell, absId, ecell, tcell, mclabel, efrac);
296 if(name.Contains(
"Energy")){
299 else if(name.Contains(
"Time")){
315 AliInfo(
"Initialising Bad channel map");
318 if (!
fRecoUtils->GetEMCALBadChannelStatusMapArray())
323 AliOADBContainer *contBC =
new AliOADBContainer(
"");
326 AliInfo(Form(
"Loading Bad Channels OADB from given path %s",
fBasePath.Data()));
328 TFile *fbad=
new TFile(Form(
"%s/EMCALBadChannels.root",
fBasePath.Data()),
"read");
329 if (!fbad || fbad->IsZombie())
331 AliFatal(Form(
"EMCALBadChannels.root was not found in the path provided: %s",
fBasePath.Data()));
335 if (fbad)
delete fbad;
337 contBC->InitFromFile(Form(
"%s/EMCALBadChannels.root",
fBasePath.Data()),
"AliEMCALBadChannels");
341 AliInfo(
"Loading Bad Channels OADB from $ALICE_PHYSICS/OADB/EMCAL");
343 TFile *fbad=
new TFile(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALBadChannels.root",
"read");
344 if (!fbad || fbad->IsZombie())
346 AliFatal(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALBadChannels.root was not found");
350 if (fbad)
delete fbad;
352 contBC->InitFromFile(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALBadChannels.root",
"AliEMCALBadChannels");
358 AliError(Form(
"No external hot channel set for run number: %d", runBC));
363 Int_t sms =
fGeom->GetEMCGeometry()->GetNumberOfSuperModules();
364 for (
Int_t i=0; i<sms; ++i)
366 TH2I *h =
fRecoUtils->GetEMCALChannelStatusMap(i);
369 h=(TH2I*)arrayBC->FindObject(Form(
"EMCALBadChannelMap_Mod%d",i));
373 AliError(Form(
"Can not get EMCALBadChannelMap_Mod%d",i));
AliEMCALGeometry * fGeom
! Geometry object
virtual ~AliEmcalCorrectionComponent()
virtual Bool_t UserNotify()
virtual void UserCreateOutputObjects()
AliVEvent * InputEvent() const
bool UseEmbeddingEvent() const
True if the embedding event should be used.
AliVCaloCells * fCaloCells
! Pointer to CaloCells
AliEMCALRecoUtils * fRecoUtils
Pointer to RecoUtils.
Base class for correction components in the EMCal correction framework.
static map_type * componentMap
Contains the map to all of the components.
std::map< std::string, AliEmcalCorrectionComponent *(*)()> map_type
Double_t fVertex[3]
! Event vertex
TString fBasePath
Base folder path to get root files.
TList * fOutput
! List of output histograms
Enhanced TList-derived class that implements correct merging for pt_hard binned production.
Bool_t fGetPassFromFileName
Get fFilepass from file name.
virtual Bool_t Initialize()
AliEmcalCorrectionEventManager fEventManager
Minimal task which inherits from AliAnalysisTaskSE and manages access to the event.
PWG::Tools::AliYAMLConfiguration fYAMLConfig
Contains the YAML configuration used to configure the component.
virtual Bool_t CheckIfRunChanged()
AliEmcalCorrectionComponent()
void GetEtaPhiDiff(const AliVTrack *t, const AliVCluster *v, Double_t &phidiff, Double_t &etadiff)
TString fFilepass
Input data pass number.