20 #include "AliVEventHandler.h"
21 #include "AliEMCALGeometry.h"
22 #include "AliVCaloCells.h"
23 #include "AliVCluster.h"
25 #include "AliMultSelection.h"
26 #include "AliCentrality.h"
27 #include "AliESDEvent.h"
28 #include "AliAnalysisManager.h"
46 fUserConfigurationFilename(
""),
47 fUserConfigurationString(
""),
48 fDefaultConfiguration(),
49 fDefaultConfigurationFilename(
""),
50 fDefaultConfigurationString(
""),
51 fCorrectionComponents(),
54 fRunPeriod(
"noSetRunPeriod"),
55 fConfigurationInitialized(false),
56 fOrderedComponentsToExecute(),
57 fEventInitialized(false),
64 fUseNewCentralityEstimation(kFALSE),
67 fNeedEmcalGeom(kTRUE),
75 AliDebug(3, Form(
"%s", __PRETTY_FUNCTION__));
98 fUserConfigurationFilename(
""),
99 fUserConfigurationString(
""),
100 fDefaultConfiguration(),
101 fDefaultConfigurationFilename(
""),
102 fDefaultConfigurationString(
""),
103 fCorrectionComponents(),
106 fRunPeriod(
"noSetRunPeriod"),
107 fConfigurationInitialized(false),
108 fOrderedComponentsToExecute(),
109 fEventInitialized(false),
116 fUseNewCentralityEstimation(kFALSE),
119 fNeedEmcalGeom(kTRUE),
121 fParticleCollArray(),
127 AliDebug(3, Form(
"%s", __PRETTY_FUNCTION__));
136 DefineInput(0, TChain::Class());
137 DefineOutput(1, TList::Class());
162 AliVEventHandler *evhand = mgr->GetInputEventHandler();
164 if (evhand->InheritsFrom(
"AliESDInputHandler")) {
172 AliError(
"Event handler not found!");
176 AliError(
"Analysis manager not found!");
180 std::string tempName = GetName();
181 std::size_t foundSuffix = tempName.find(
"_");
182 if (foundSuffix != std::string::npos) {
184 fSuffix = tempName.substr(foundSuffix + 1).c_str();
192 AliFatal(
"YAML configuration must be initialized before running (ie. the AddTask, run macro or wagon)!");
265 AliInfo(TString::Format(
"User file at \"%s\" does not exist! All settings will be from the default file!",
fUserConfigurationFilename.c_str()));
271 AliFatal(
"Must pass a run period to the correction task!");
274 TString userRunPeriod =
"kNoUserFile";
284 AliFatal(
"User must specify a period. Leave the period as an empty string to apply to all periods.");
288 AliDebug(3, TString::Format(
"userRunPeriod: %s", userRunPeriod.Data()));
290 userRunPeriod.ToLower();
291 if (userRunPeriod !=
"knouserfile" && userRunPeriod !=
fRunPeriod)
293 AliFatal(TString::Format(
"User run period \"%s\" does not match the run period of \"%s\" passed to the correction task!", userRunPeriod.Data(),
fRunPeriod.Data()));
298 if (userRunPeriod ==
"")
300 AliWarning(
"User run period is an empty string. Settings apply to all run periods!");
305 std::stringstream tempConfiguration;
308 tempConfiguration.str(
"");
331 std::vector <std::string> executionOrder;
337 std::set <std::string> possibleComponents;
339 possibleComponents.insert(node.first.as<std::string>());
342 possibleComponents.insert(node.first.as<std::string>());
346 std::string expectedComponentName =
"";
347 bool foundSuffixComponent =
false;
348 bool foundComponent =
false;
349 bool componentEnabled =
true;
352 for (
auto & execName : executionOrder)
355 expectedComponentName = TString::Format(
"%s_%s", execName.c_str(),
fSuffix.c_str()).
Data();
356 foundComponent =
false;
357 componentEnabled =
false;
365 if (componentEnabled ==
true) {
366 foundSuffixComponent =
true;
367 correctionComponents.push_back(expectedComponentName);
370 AliInfo(TString::Format(
"Component %s is disabled and will not be run!", expectedComponentName.c_str()));
378 expectedComponentName = execName;
383 if (componentEnabled ==
true) {
384 if (foundSuffixComponent ==
true) {
385 AliFatal(TString::Format(
"Found earlier component %s with suffix \"%s\", but could not found component %s with that same suffix!", correctionComponents.back().c_str(),
fSuffix.c_str(), expectedComponentName.c_str()));
389 correctionComponents.push_back(expectedComponentName);
393 AliInfo(TString::Format(
"Component %s is disabled and will not be run!", expectedComponentName.c_str()));
399 AliDebug(2,
"Found EMCal Correction Components: ");
400 for (
auto & component : correctionComponents)
402 component =
"AliEmcalCorrection" + component;
403 AliDebug(2, TString::Format(
"%s", component.c_str()) );
418 std::set <std::string> userPropertyNames;
419 std::set <std::string> defaultPropertyNames;
421 bool foundMatch =
false;
422 std::string tempComponentName =
"";
428 userPropertyNames.clear();
429 defaultPropertyNames.clear();
432 tempComponentName = componentName.substr(componentName.find(
"AliEmcalCorrection")+18);
434 AliDebugStream(2) <<
"Checking component " << componentName <<
" for unmatched user settings" << std::endl;
444 if (tempComponentName.find(
"_") != std::string::npos) {
453 for (
auto userPropertyName : userPropertyNames)
455 AliDebugStream(2) <<
"Checking property " << userPropertyName << std::endl;
457 for (
auto defaultPropertyName : defaultPropertyNames)
459 if (userPropertyName == defaultPropertyName) {
460 AliDebugStream(2) <<
"Found match of " << userPropertyName <<
" with " << defaultPropertyName << std::endl;
464 if (foundMatch ==
false) {
465 AliFatal(TString::Format(
"Property \"%s:%s\" defined in the user configuration file cannot be found in the default configuration file! Check the spelling in your user file!", tempComponentName.c_str(), userPropertyName.c_str()));
483 std::string noPrefixComponentName = componentName.substr(0, componentName.find(
"_" +
fSuffix));
487 AliFatal(TString::Format(
"Failed to create requested component %s!", componentName.c_str()));
491 component->SetName(componentName.c_str());
492 component->SetTitle(componentName.c_str());
511 AliInfo(TString::Format(
"Successfully added correction task: %s", componentName.c_str()));
537 YAML::Node userInputObjectNode;
538 YAML::Node defaultInputObjectNode;
542 AliDebugStream(3) <<
"userInputObjectNode: " << userInputObjectNode << std::endl;
543 AliDebugStream(3) <<
"defaultInputObjectNode: " << defaultInputObjectNode << std::endl;
546 std::set <std::string> requestedContainers;
547 std::vector <std::string> componentRequest;
550 componentRequest.clear();
554 for (
auto & req : componentRequest )
556 AliDebugStream(3) <<
"Component " << componentName <<
" requested container name " << req << std::endl;
557 requestedContainers.insert(req);
561 AliDebugStream(2) << inputObjectName <<
" Containers requested by components: " << std::endl;
562 for (
auto &
str : requestedContainers) {
563 AliDebugStream(2) <<
"\t" <<
str << std::endl;;
567 AliDebug(2, TString::Format(
"Setting up requested containers!"));
582 inputObjectName = inputObjectName +
"Names";
584 std::vector <std::string> inputObjects;
591 for (
auto const &
str : inputObjects)
598 AliDebugStream(2) <<
"Adding cluster container " <<
str <<
" of array " << cont->GetArrayName() <<
" to component " << component->GetName() << std::endl;
601 else if (inputObjectType ==
kTrack)
604 AliDebugStream(2) <<
"Adding particle container " <<
str <<
" of array " << cont->GetArrayName() <<
" to component " << component->GetName() << std::endl;
610 if (inputObjects.size() > 1) {
611 AliFatal(TString::Format(
"Component %s requested more than one cell branch, but this is not supported! Check the configuration!", component->GetName()));
617 AliDebugStream(3) <<
"component GetNumberOfCells: " << component->
GetCaloCells()->GetNumberOfCells() << std::endl;
633 for(
auto & containerName : requestedContainers)
642 AliDebug(2, TString::Format(
"Processing container %s of inputType %d", containerName.c_str(), inputObjectType));
644 SetupContainer(inputObjectType, containerName, userInputObjectNode, defaultInputObjectNode);
647 SetupCellsInfo(containerName, userInputObjectNode, defaultInputObjectNode);
667 AliDebugStream(2) <<
"User: " << std::endl << userNode << std::endl <<
"default: " << std::endl << defaultNode << std::endl;
671 cellObj->
SetName(containerName);
673 std::string tempString =
"";
675 if (tempString ==
"usedefault") {
681 bool tempBool =
false;
709 AliDebugStream(2) <<
"Adding container" << std::endl;
710 AliEmcalContainer * cont =
AddContainer(inputObjectType, containerName, userNode, defaultNode);
711 AliDebugStream(2) <<
"Added container" << std::endl;
723 std::string tempString =
"";
725 bool tempBool =
false;
731 AliDebugStream(2) << cont->GetName() <<
": Setting minPt of " << tempDouble << std::endl;
732 cont->SetMinPt(tempDouble);
737 AliDebugStream(2) << cont->GetName() <<
": Setting minE of " << tempDouble << std::endl;
738 cont->SetMinE(tempDouble);
747 AliDebugStream(2) << cont->GetName() <<
": Setting eta limits of " << tempDouble <<
" to " << tempDouble2 << std::endl;
748 cont->SetEtaLimits(tempDouble, tempDouble2);
758 AliDebugStream(2) << cont->GetName() <<
": Setting phi limits of " << tempDouble <<
" to " << tempDouble2 << std::endl;
759 cont->SetPhiLimits(tempDouble, tempDouble2);
772 if (clusterContainer) {
786 AliDebugStream(2) << clusterContainer->GetName() <<
": Setting clusNonLinCorrEnergyCut of " << tempDouble << std::endl;
793 AliDebugStream(2) << clusterContainer->GetName() <<
": Setting clusHadCorrEnergyCut of " << tempDouble << std::endl;
800 AliDebugStream(2) << clusterContainer->GetName() <<
": Setting Include PHOS to " << (tempBool ?
"enabled" :
"disabled") << std::endl;
807 if (trackContainer) {
810 std::vector <UInt_t> filterBitsVector;
814 for (
int filterBit : filterBitsVector) {
815 filterBits += filterBit;
817 AliDebugStream(2) << trackContainer->GetName() <<
": Setting filterBits of " << filterBits << std::endl;
826 AliDebugStream(2) << trackContainer->GetName() <<
": Setting trackFilterType of " << trackFilterType << std::endl;
834 AliDebugStream(2) << trackContainer->GetName() <<
": Setting track cuts period to " << tempString << std::endl;
860 std::string containerBranch =
"";
862 AliFatal(
"Must specify type of container when requesting branch.");
867 AliDebugStream(2) <<
"User Node: " << userNode << std::endl;
868 AliDebugStream(2) <<
"Default Node: " << defaultNode << std::endl;
877 if (containerBranch ==
"usedefault") {
882 AliEmcalContainer * cont = 0;
888 else if (contType ==
kTrack)
890 if (containerBranch ==
"mcparticles") {
898 cont->SetName(containerName.c_str());
913 AliDebug(3, Form(
"%s", __PRETTY_FUNCTION__));
918 AliFatal(
"YAML configuration must be initialized before running (ie. the AddTask, run macro or wagon)!");
931 AliInfo(
"Reinitializing user configuration from string. Expected if running on grid!");
936 AliInfo(
"Reinitializing default configuration from string. Expected if running on grid!");
942 AliDebugStream(4) <<
"(Re)initialized user configuration: " <<
fUserConfiguration << std::endl;
944 AliDebugStream(4) <<
"(Re)initialized default configuration: " <<
fDefaultConfiguration << std::endl;
968 AliDebug(3, Form(
"%s", __PRETTY_FUNCTION__));
976 component->UserCreateOutputObjects();
978 if (component->GetOutputList() != 0)
985 t->SetName(component->GetName());
988 TIter next(component->GetOutputList());
993 AliDebug(1, TString::Format(
"Added output list from task %s to output.", component->GetName()));
1004 AliDebug(3, Form(
"%s", __PRETTY_FUNCTION__));
1037 if (!InputEvent()) {
1038 AliError(
"Could not retrieve event! Returning!");
1043 fGeom = AliEMCALGeometry::GetInstanceFromRunNumber(InputEvent()->
GetRunNumber());
1045 AliFatal(
"Can not get EMCal geometry instance. If you do not need the EMCal geometry, disable it by setting task->SetNeedEmcalGeometry(kFALSE).");
1054 cont->SetArray(InputEvent());
1061 cont->SetArray(InputEvent());
1083 AliDebug(3, Form(
"%s", __PRETTY_FUNCTION__));
1087 component->SetEMCALGeometry(
fGeom);
1095 component->ExecOnce();
1110 const AliVVertex *vert = InputEvent()->GetPrimaryVertex();
1120 AliMultSelection *MultSelection =
static_cast<AliMultSelection*
>(InputEvent()->FindListObject(
"MultSelection"));
1121 if (MultSelection) {
1122 fCent = MultSelection->GetMultiplicityPercentile(
fCentEst.Data());
1125 AliWarning(
"Could not retrieve centrality information! Assuming 99");
1129 AliCentrality *aliCent = InputEvent()->GetCentrality();
1134 AliWarning(
"Could not retrieve centrality information! Assuming 99");
1144 AliWarning(Form(
"Negative centrality: %f. Assuming 99",
fCent));
1153 else if (
fCent > 90) {
1158 AliWarning(Form(
"Negative centrality: %f. Assuming 99",
fCent));
1171 AliWarning(Form(
"fCentBin too large: cent = %f fCentBin = %d. Assuming 99",
fCent,
fCentBin));
1181 AliEmcalContainer* cont = 0;
1184 while ((cont = static_cast<AliEmcalContainer*>(nextPartColl()))) cont->NextEvent();
1187 while ((cont = static_cast<AliEmcalContainer*>(nextClusColl()))) cont->NextEvent();
1199 AliDebug(3, Form(
"%s", __PRETTY_FUNCTION__));
1202 component->SetEvent(InputEvent());
1203 component->SetMCEvent(MCEvent());
1204 component->SetCentralityBin(
fCentBin);
1205 component->SetCentrality(
fCent);
1222 AliDebug(3, Form(
"%s", __PRETTY_FUNCTION__));
1225 component->UserNotify();
1240 bool returnValue =
false;
1245 std::ofstream outFile(filename);
1247 if (stringToWrite ==
"") {
1248 AliWarning(TString::Format(
"%s configuration is empty!", userConfig ?
"User" :
"Default"));
1250 outFile << stringToWrite;
1257 AliWarning(TString::Format(
"Configuration not properly initialized! Cannot print %s configuration!", userConfig ?
"user" :
"default"));
1263 AliWarning(
"Please pass a valid filename instead of empty quotes!");
1285 std::string returnValue =
"";
1287 if (esdMode ==
true) {
1288 if (returnObjectType ==
true) {
1289 returnValue =
"AliESDCaloCluster";
1292 returnValue =
"CaloClusters";
1296 if (returnObjectType ==
true) {
1297 returnValue =
"AliAODCaloCluster";
1300 returnValue =
"caloClusters";
1304 else if (objType ==
kTrack) {
1305 if (esdMode ==
true) {
1306 if (returnObjectType ==
true) {
1307 returnValue =
"AliESDtrack";
1310 returnValue =
"Tracks";
1314 if (returnObjectType ==
true) {
1315 returnValue =
"AliAODTrack";
1318 returnValue =
"tracks";
1323 if (esdMode ==
true) {
1324 if (returnObjectType ==
true) {
1325 returnValue =
"AliESDCaloCells";
1328 returnValue =
"EMCALCells";
1332 if (returnObjectType ==
true) {
1333 returnValue =
"AliAODCaloCells";
1336 returnValue =
"emcalCells";
1359 AliVEvent *
event = 0;
1384 std::ifstream inFile(filename);
1385 return inFile.good();
1401 filename =
gSystem->ExpandPathName(filename.c_str());
1404 if(filename.find(
"alien://") != std::string::npos)
1406 AliDebug(2, TString::Format(
"Opening file \"%s\" on the grid!", filename.c_str()));
1409 TGrid::Connect(
"alien://");
1413 std::string localFilename =
gSystem->BaseName(filename.c_str());
1415 if (userFile ==
true) {
1416 localFilename =
"user" + localFilename;
1418 TFile::Cp(filename.c_str(), localFilename.c_str());
1421 filename = localFilename;
1434 AliDebugStream(2) <<
"Retrieving cells object " << cellContainer->
GetName() << std::endl;
1438 cellContainer->
SetCells(dynamic_cast<AliVCaloCells *>(event->FindListObject(cellContainer->
GetBranchName().c_str())));
1454 AliVEvent *
event =
GetEvent(InputEvent());
1456 TClonesArray * array =
dynamic_cast<TClonesArray *
>(
event->FindListObject(cont->GetArrayName()));
1458 AliWarning(TString::Format(
"Container %s requested branch %s, but it does not exist! Creating it for you! Please check that this is the proper action!", cont->GetName(), cont->GetArrayName().Data()));
1460 array->SetName(cont->GetArrayName());
1461 event->AddObject(array);
1475 std::string inputObjectName =
"";
1477 inputObjectName =
"clusterContainers";
1479 else if (inputObjectType ==
kTrack) {
1480 inputObjectName =
"trackContainers";
1483 inputObjectName =
"cells";
1486 AliFatal(TString::Format(
"Unrecognized input object type %d", inputObjectType));
1489 return inputObjectName;
1505 bool foundComponent =
false;
1506 for (
auto & possibleComponent : possibleComponents)
1508 if (possibleComponent == name) {
1509 foundComponent =
true;
1514 return foundComponent;
1530 const AliESDRun *run = esd->GetESDRun();
1531 TString beamType = run->GetBeamType();
1532 if (beamType ==
"p-p")
1534 else if (beamType ==
"A-A")
1536 else if (beamType ==
"p-A")
1541 Int_t runNumber = InputEvent()->GetRunNumber();
1542 if ((runNumber >= 136851 && runNumber <= 139517) ||
1543 (runNumber >= 166529 && runNumber <= 170593)) {
1545 }
else if ((runNumber>=188365 && runNumber <= 188366) ||
1546 (runNumber >= 195344 && runNumber <= 196608)) {
1560 AliInfoStream() <<
"Cells info: " << std::endl;
1562 AliInfoStream() <<
"\tName: " << cellInfo->GetName() <<
"\tBranch: " << cellInfo->GetBranchName() <<
"\tIsEmbedding: " << std::boolalpha << cellInfo->GetIsEmbedding() << std::endl;
1565 else if (inputObjectType ==
kCluster || inputObjectType ==
kTrack) {
1566 AliInfoStream() << (inputObjectType ==
kCluster ?
"Cluster" :
"Track") <<
" container info: " << std::endl;
1567 AliEmcalContainer * cont = 0;
1569 cont =
static_cast<AliEmcalContainer *
>(containerInfo);
1570 AliInfoStream() <<
"\tName: " << cont->GetName() <<
"\tBranch: " << cont->GetArrayName() <<
"\tTitle: " << cont->GetTitle() << std::endl;
1576 AliErrorStream() <<
"Unrecognized input object type " << inputObjectType << std::endl;
1595 if (nodeToRetrieveFrom[
"sharedParameters"]) {
1596 inputNode[
"sharedParameters"] = nodeToRetrieveFrom[
"sharedParameters"];
1612 YAML::Node tempNode;
1614 for (
auto propertyName : tempNode)
1616 propertyNames.insert(propertyName.first.as<std::string>());
1629 if (
TString(n).IsNull())
return 0;
1647 if (
TString(n).IsNull())
return 0;
1665 if (
TString(n).IsNull())
return 0;
1683 if (
TString(n).IsNull())
return 0;
1749 if (cellContainer->GetName() == cellsContainerName) {
1750 return cellContainer;
1764 ::Error(
"AddTaskEmcalCorrectionTask",
"No analysis manager to connect to.");
1770 AliVEventHandler* handler = mgr->GetInputEventHandler();
1773 ::Error(
"AddTaskEmcalCorrectionTask",
"This task requires an input event handler");
1777 TString name =
"AliEmcalCorrectionTask";
1779 name += TString::Format(
"_%s", suffix.Data());
1783 if (mgrTask)
return mgrTask;
1792 mgr->AddTask(correctionTask);
1795 AliAnalysisDataContainer* cInput = mgr->GetCommonInputContainer();
1797 TString outputContainerName(name);
1798 outputContainerName +=
"_histos";
1800 AliAnalysisDataContainer * cOutput = mgr->CreateContainer(outputContainerName.Data(),
1802 AliAnalysisManager::kOutputContainer,
1803 Form(
"%s", AliAnalysisManager::GetCommonFileName()));
1805 mgr->ConnectInput(correctionTask, 0, cInput);
1806 mgr->ConnectOutput(correctionTask, 1, cOutput);
1810 return correctionTask;
Int_t fNcentBins
how many centrality bins
void SetBranchName(std::string branchName)
Set the name of the cells branch (NOT the same as the name!)
std::string fSuffix
Suffix of the Correction Task (used to select components)
Steering task for the EMCal correction framework.
AliEMCALGeometry * fGeom
! Emcal geometry
return jsonbuilder str().c_str()
void SetTrackCutsPeriod(const char *period)
static bool DoesFileExist(const std::string &filename)
std::string GetName() const
Get the name of the cells object (NOT the same as the branch!)
void InitializeConfiguration()
AliTrackContainer * AddTrackContainer(const char *n)
void SetClusterContainer(AliClusterContainer *cont)
std::vector< std::string > fOrderedComponentsToExecute
Ordered set of components to execute.
std::string GetInputFieldNameFromInputObjectType(InputObject_t inputObjectType)
AliClusterContainer * GetClusterContainer(Int_t i=0) const
bool CheckPossibleNamesForComponentName(std::string &name, std::set< std::string > &possibleComponents)
std::vector< AliEmcalCorrectionComponent * > fCorrectionComponents
Contains the correction components.
Container with name, TClonesArray and cuts for particles.
void AdoptClusterContainer(AliClusterContainer *cont)
void SetupConfigurationFilePath(std::string &filename, bool userFile=false)
void UserExec(Option_t *option)
void UserCreateOutputObjectsComponents()
YAML::Node fUserConfiguration
! User YAML Configuration
Double_t fMaxCent
max centrality for event selection
Double_t fVertex[3]
! Event vertex
void DetermineComponentsToExecute(std::vector< std::string > &componentsToExecute)
TList * fOutput
! Output for histograms
Wrapper around cells objects for the EMCal Correction Task.
bool fConfigurationInitialized
True if the YAML configuration files are initialized.
Container for particles within the EMCAL framework.
AliEmcalContainer * AddContainer(InputObject_t contType, std::string &containerName, YAML::Node &userNode, YAML::Node &defaultNode)
void SetUserConfiguration(YAML::Node &node)
Make copy to ensure that the nodes do not point to each other (?)
void AddContainersToComponent(AliEmcalCorrectionComponent *component, InputObject_t inputObjectType)
void SetParticleContainer(AliParticleContainer *cont)
bool fEventInitialized
If the event is initialized properly.
TString fCentEst
name of V0 centrality estimator
void SetAODFilterBits(UInt_t bits)
std::string fUserConfigurationFilename
! User YAML configruation filename
std::string fDefaultConfigurationString
Store the default YAML configuration as a string so that it can be streamed.
void SetClusNonLinCorrEnergyCut(Double_t cut)
TString fRunPeriod
Run period (passed by user)
static AliEmcalCorrectionTask * AddTaskEmcalCorrectionTask(TString suffix="")
void SetCells(AliVCaloCells *cells)
Sets the Pointer to the actual CaloCells object.
Double_t fCent
! Event centrality
void ExecOnceComponents()
Base class for correction components in the EMCal correction framework.
BeamType
Switch for the beam type.
AliMCParticleContainer * AddMCParticleContainer(const char *n)
void InitializeComponents()
std::map< std::string, AliEmcalTrackSelection::ETrackFilterType_t > trackFilterTypeMap
Relates string to the track filter enumeration for YAML configuration.
void SetupContainersFromInputNodes(InputObject_t inputObjectType, YAML::Node &userInputObjectNode, YAML::Node &defaultInputObjectNode, std::set< std::string > &requestedContainers)
void SetIncludePHOS(Bool_t b)
static std::string DetermineUseDefaultName(InputObject_t contType, bool esdMode, bool returnObjectType=false)
void SetupContainer(InputObject_t inputObjectType, std::string containerName, YAML::Node &userNode, YAML::Node &defaultNode)
bool WriteConfigurationFile(std::string filename, bool userConfig=false)
Bool_t fNeedEmcalGeom
whether or not the task needs the emcal geometry
void CheckForUnmatchedUserSettings()
std::string GetBranchName() const
Get the name of the cells branch (NOT the same as the name!)
void PrintRequestedContainersInformation(InputObject_t inputObjectType)
void SetCellsObjectInCellContainerBasedOnProperties(AliEmcalCorrectionCellContainer *cellContainer)
Bool_t fUseNewCentralityEstimation
Use new centrality estimation (for 2015 data)
bool GetIsEmbedding() const
True if the cells are located in the event that is being embedded.
void CheckForContainerArray(AliEmcalContainer *cont, InputObject_t objectType)
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
AliEmcalCorrectionCellContainer * GetCellContainer(const std::string &cellsContainerName) const
std::string fDefaultConfigurationFilename
! Default YAML configuration filename
void UserCreateOutputObjects()
void GetNodeForInputObjects(YAML::Node &inputNode, YAML::Node &nodeToRetrieveFrom, std::string &inputObjectName, bool requiredProperty)
TObjArray fParticleCollArray
Particle/track collection array.
TObjArray fClusterCollArray
Cluster collection array.
static AliVEvent * GetEvent(AliVEvent *inputEvent, bool isEmbedding=false)
virtual Bool_t Initialize()
void SetDefaultConfiguration(YAML::Node &node)
virtual ~AliEmcalCorrectionTask()
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
AliParticleContainer * GetParticleContainer(Int_t i=0) const
void AdoptParticleContainer(AliParticleContainer *cont)
void SetIsESD(Bool_t isESD)
AliVCaloCells * GetCaloCells()
void SetIsEmbedding(bool isEmbedded)
Set to true if the cells are located in the event that is being embedded.
void SetCaloCells(AliVCaloCells *cells)
BeamType fBeamType
! Event beam type
Int_t GetRunNumber(TString)
void SetTrackFilterType(ETrackFilterType_t f)
YAML::Node fDefaultConfiguration
! Default YAML Configuration
void SetupCellsInfo(std::string containerName, YAML::Node &userNode, YAML::Node &defaultNode)
Int_t fNVertCont
! Event vertex number of contributors
static AliEmcalCorrectionComponent * createInstance(std::string const &s)
Creates an instance of an object based on the name if the name is registered in the map...
void SetName(std::string name)
Set the name of the cells object (NOT the same as the branch!)
Int_t fCentBin
! Event centrality bin
Double_t fMinCent
min centrality for event selection
AliClusterContainer * AddClusterContainer(const char *n)
std::vector< AliEmcalCorrectionCellContainer * > fCellCollArray
Cells collection array.
Bool_t RetrieveEventObjects()
AliParticleContainer * AddParticleContainer(const char *n)
Container structure for EMCAL clusters.
Container for MC-true particles within the EMCAL framework.
std::string fUserConfigurationString
Store the user YAML configuration as a string so that it can be streamed.
void GetPropertyNamesFromNode(const std::string &componentName, const YAML::Node &node, std::set< std::string > &propertyNames, const bool nodeRequired)
InputObject_t
Type of input object to be created
TList * OpenFile(const char *fname)
void SetClusHadCorrEnergyCut(Double_t cut)
bool GetProperty(std::string propertyName, T &property, bool requiredProperty=true, std::string correctionName="")
Retrieve property.
BeamType fForceBeamType
forced beam type
void CreateInputObjects(InputObject_t inputObjectType)