10 #include "AliEMCALRecoUtils.h"
11 #include "AliAnalysisManager.h"
12 #include "AliVEvent.h"
17 #include "AliOADBContainer.h"
30 TNamed(
"AliEmcalCorrectionComponent",
"AliEmcalCorrectionComponent"),
32 fDefaultConfiguration(),
36 fGetPassFromFileName(kTRUE),
68 fDefaultConfiguration(),
72 fGetPassFromFileName(kTRUE),
110 std::string tempString =
"";
117 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.");
180 Double_t veta = t->GetTrackEtaOnEMCal();
181 Double_t vphi = t->GetTrackPhiOnEMCal();
189 phidiff=TVector2::Phi_mpi_pi(vphi-cphi);
201 Int_t bunchCrossNo =
fEvent->GetBunchCrossNumber();
219 AliWarning(Form(
"Run changed, initializing parameters for %d",
fRun));
222 fGeom = AliEMCALGeometry::GetInstanceFromRunNumber(
fRun);
225 AliFatal(
"Can not create geometry");
243 std::size_t sharedParameterLocation = value.find(
"sharedParameters:");
244 if (sharedParameterLocation != std::string::npos)
247 value.erase(sharedParameterLocation, sharedParameterLocation + 17);
260 TTree *inputTree = mgr->GetTree();
264 AliError(
"Pointer to tree = 0, returning");
268 TFile *inputFile = inputTree->GetCurrentFile();
270 AliError(
"Null pointer input file, returning");
274 TString fname(inputFile->GetName());
276 else if (fname.Contains(
"pass3_lowIR_pidfix"))
fFilepass =
TString(
"pass3_lowIR_pidfix");
277 else if (fname.Contains(
"pass4_lowIR_pidfix_cookdedx"))
fFilepass =
TString(
"pass4_lowIR_pidfix_cookdedx");
283 else if (fname.Contains(
"LHC11c") && fname.Contains(
"spc_calo"))
fFilepass =
TString(
"spc_calo");
284 else if (fname.Contains(
"calo") || fname.Contains(
"high_lumi"))
286 Printf(
"%s: Path contains <calo> or <high-lumi>, set as <pass1>", GetName());
289 else if (fname.Contains(
"LHC14a1a"))
291 AliInfo(
"Energy calibration activated for this MC production!");
296 AliFatal(Form(
"Pass number string not found: %s. Please set the pass number in the configuration!", fname.Data()));
313 for (
Int_t iCell = 0; iCell <
fCaloCells->GetNumberOfCells(); iCell++){
315 fCaloCells->GetCell(iCell, absId, ecell, tcell, mclabel, efrac);
316 if(name.Contains(
"Energy")){
319 else if(name.Contains(
"Time")){
335 AliInfo(
"Initialising Bad channel map");
338 if (!
fRecoUtils->GetEMCALBadChannelStatusMapArray())
343 AliOADBContainer *contBC =
new AliOADBContainer(
"");
346 AliInfo(Form(
"Loading Bad Channels OADB from given path %s",
fBasePath.Data()));
348 TFile *fbad=
new TFile(Form(
"%s/EMCALBadChannels.root",
fBasePath.Data()),
"read");
349 if (!fbad || fbad->IsZombie())
351 AliFatal(Form(
"EMCALBadChannels.root was not found in the path provided: %s",
fBasePath.Data()));
355 if (fbad)
delete fbad;
357 contBC->InitFromFile(Form(
"%s/EMCALBadChannels.root",
fBasePath.Data()),
"AliEMCALBadChannels");
361 AliInfo(
"Loading Bad Channels OADB from $ALICE_PHYSICS/OADB/EMCAL");
363 TFile *fbad=
new TFile(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALBadChannels.root",
"read");
364 if (!fbad || fbad->IsZombie())
366 AliFatal(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALBadChannels.root was not found");
370 if (fbad)
delete fbad;
372 contBC->InitFromFile(
"$ALICE_PHYSICS/OADB/EMCAL/EMCALBadChannels.root",
"AliEMCALBadChannels");
378 AliError(Form(
"No external hot channel set for run number: %d", runBC));
383 Int_t sms =
fGeom->GetEMCGeometry()->GetNumberOfSuperModules();
384 for (
Int_t i=0; i<sms; ++i)
386 TH2I *h =
fRecoUtils->GetEMCALChannelStatusMap(i);
389 h=(TH2I*)arrayBC->FindObject(Form(
"EMCALBadChannelMap_Mod%d",i));
393 AliError(Form(
"Can not get EMCALBadChannelMap_Mod%d",i));
AliEMCALGeometry * fGeom
! Geometry object
virtual ~AliEmcalCorrectionComponent()
virtual Bool_t UserNotify()
virtual void UserCreateOutputObjects()
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.
AliVEvent * fEvent
! Pointer to event
TList * fOutput
! List of output histograms
Enhanced TList-derived class that implements correct merging for pt_hard binned production.
static bool IsSharedValue(std::string &value)
Bool_t fGetPassFromFileName
Get fFilepass from file name.
virtual Bool_t Initialize()
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
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.
bool GetProperty(std::string propertyName, T &property, bool requiredProperty=true, std::string correctionName="")
Retrieve property.