18 #include <AliAnalysisManager.h> 19 #include <AliVEventHandler.h> 20 #include <AliESDEvent.h> 21 #include <AliAODEvent.h> 22 #include <AliEMCALGeometry.h> 23 #include <AliVCaloCells.h> 25 #include <AliCentrality.h> 26 #include "AliMultSelection.h" 44 fUserConfigurationFilename(
""),
45 fDefaultConfigurationFilename(
""),
46 fOrderedComponentsToExecute(),
47 fCorrectionComponents(),
48 fConfigurationInitialized(false),
50 fEventInitialized(false),
57 fUseNewCentralityEstimation(kFALSE),
70 AliDebug(3, Form(
"%s", __PRETTY_FUNCTION__));
115 AliDebug(3, Form(
"%s", __PRETTY_FUNCTION__));
120 DefineInput(0, TChain::Class());
121 DefineOutput(1, TList::Class());
149 fNVertCont(task.fNVertCont),
150 fBeamType(task.fBeamType),
151 fForceBeamType(task.fForceBeamType),
152 fNeedEmcalGeom(task.fNeedEmcalGeom),
154 fParticleCollArray(*(static_cast<TObjArray *>(task.fParticleCollArray.Clone()))),
155 fClusterCollArray(*(static_cast<TObjArray *>(task.fClusterCollArray.Clone()))),
156 fOutput(task.fOutput)
159 std::copy(std::begin(task.fVertex), std::end(task.fVertex), std::begin(fVertex));
162 for (
auto cellCont : task.fCellCollArray)
237 AliVEventHandler *evhand = mgr->GetInputEventHandler();
239 if (evhand->InheritsFrom(
"AliESDInputHandler")) {
247 AliError(
"Event handler not found!");
251 AliError(
"Analysis manager not found!");
255 std::string tempName = GetName();
256 std::size_t foundSuffix = tempName.find(
"_");
257 if (foundSuffix != std::string::npos) {
259 fSuffix = tempName.substr(foundSuffix + 1).c_str();
263 AliInfoStream() <<
"Initializing correction task with suffix \"" <<
fSuffix <<
"\"" << std::endl;
271 AliFatal(
"YAML configuration must be initialized before running (ie. in the run macro or wagon)!");
295 if (removeDummyTask ==
true) {
301 std::cout << GetName() <<
" Settings:\n" << *
this;
313 AliErrorStream() <<
"No analysis manager to connect to.\n";
318 std::string dummyTaskName = GetName();
319 dummyTaskName +=
"_dummyTask";
324 AliErrorStream() <<
"Could not remove dummy task \"" << dummyTaskName <<
"\" from analysis manager! Was it added?\n";
327 tasks->Remove(dummyTask);
328 AliDebugStream(1) <<
"Removed dummy task named \"" << dummyTaskName <<
"\".\n";
331 AliErrorStream() <<
"Could not retrieve tasks from the analysis manager.\n";
356 if (returnValue >= 0) {
365 if (returnValue >= 0) {
370 AliFatal(TString::Format(
"User config file at \"%s\" does not exist! Please check the user config filename!",
fUserConfigurationFilename.c_str()));
392 std::vector <std::string> executionOrder;
398 std::set <std::string> possibleComponents;
401 possibleComponents.insert(node.first.as<std::string>());
405 possibleComponents.insert(node.first.as<std::string>());
409 std::string expectedComponentName =
"";
410 bool foundSuffixComponent =
false;
411 bool foundComponent =
false;
412 bool componentEnabled =
true;
415 for (
auto & execName : executionOrder)
418 expectedComponentName = TString::Format(
"%s_%s", execName.c_str(),
fSuffix.c_str()).
Data();
419 foundComponent =
false;
420 componentEnabled =
false;
428 if (componentEnabled ==
true) {
429 foundSuffixComponent =
true;
430 correctionComponents.push_back(expectedComponentName);
433 AliInfo(TString::Format(
"Component %s is disabled and will not be run!", expectedComponentName.c_str()));
441 expectedComponentName = execName;
446 if (componentEnabled ==
true) {
447 if (foundSuffixComponent ==
true) {
448 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()));
452 correctionComponents.push_back(expectedComponentName);
456 AliInfo(TString::Format(
"Component %s is disabled and will not be run!", expectedComponentName.c_str()));
462 AliDebug(2,
"Found EMCal Correction Components: ");
463 for (
auto & component : correctionComponents)
465 component =
"AliEmcalCorrection" + component;
466 AliDebug(2, TString::Format(
"%s", component.c_str()) );
485 std::set <std::string> userPropertyNames;
486 std::set <std::string> defaultPropertyNames;
488 bool foundMatch =
false;
489 std::string tempComponentName =
"";
495 userPropertyNames.clear();
496 defaultPropertyNames.clear();
498 std::string prefix =
"AliEmcalCorrection";
499 tempComponentName = componentName.substr(componentName.find(prefix) + prefix.length());
501 AliDebugStream(2) <<
"Checking component " << componentName <<
" for unmatched user settings" << std::endl;
511 if (tempComponentName.find(
"_") != std::string::npos) {
513 GetPropertyNamesFromNode(
"user", tempComponentName.substr(0, tempComponentName.find(
"_")), userPropertyNames,
false);
516 GetPropertyNamesFromNode(
"default", tempComponentName.substr(0, tempComponentName.find(
"_")), defaultPropertyNames,
true);
520 for (
auto userPropertyName : userPropertyNames)
522 AliDebugStream(2) <<
"Checking property " << userPropertyName << std::endl;
524 for (
auto defaultPropertyName : defaultPropertyNames)
526 if (userPropertyName == defaultPropertyName) {
527 AliDebugStream(2) <<
"Found match of " << userPropertyName <<
" with " << defaultPropertyName << std::endl;
531 if (foundMatch ==
false) {
532 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()));
550 std::string noPrefixComponentName = componentName.substr(0, componentName.find(
"_" +
fSuffix));
554 AliFatal(TString::Format(
"Failed to create requested component %s!", componentName.c_str()));
558 component->SetName(componentName.c_str());
559 component->SetTitle(componentName.c_str());
575 if (component && initialized)
577 AliInfo(TString::Format(
"Successfully added correction task: %s", componentName.c_str()));
603 std::set <std::string> requestedContainers;
604 std::vector <std::string> componentRequest;
607 componentRequest.clear();
609 std::string selectionName =
"AliEmcalCorrection";
611 fYAMLConfig.
GetProperty(std::vector<std::string>{componentName.substr(componentName.find(selectionName) + selectionName.length()), inputObjectName +
"Names"}, componentRequest,
false);
612 for (
auto & req : componentRequest )
614 AliDebugStream(3) <<
"Component " << componentName <<
" requested container name " << req << std::endl;
615 requestedContainers.insert(req);
619 AliDebugStream(2) << inputObjectName <<
" Containers requested by components: " << std::endl;
620 for (
auto & str : requestedContainers) {
621 AliDebugStream(2) <<
"\t" << str << std::endl;;
625 AliDebug(2, TString::Format(
"Setting up requested containers!"));
641 inputObjectName = inputObjectName +
"Names";
643 std::vector <std::string> inputObjects;
646 fYAMLConfig.
GetProperty(std::vector<std::string>{component->GetName(), inputObjectName.c_str()}, inputObjects,
false);
651 for (
auto const & str : inputObjects)
657 AliDebugStream(2) <<
"Adding cluster container " << str <<
" of array " << cont->
GetArrayName() <<
" to component " << component->GetName() << std::endl;
659 if (checkObjectExists && !cont) {
660 AliError(TString::Format(
"%s: Unable to retrieve input object \"%s\" because it is null. Please check your configuration!", GetName(), str.c_str()));
672 AliDebugStream(2) <<
"Adding particle container " << str <<
" of array " << cont->
GetArrayName() <<
" to component " << component->GetName() << std::endl;
674 if (checkObjectExists && !cont) {
675 AliFatal(TString::Format(
"%s: Unable to retrieve input object \"%s\" because it is null. Please check your configuration!", GetName(), str.c_str()));
687 if (inputObjects.size() > 1) {
688 AliFatal(TString::Format(
"Component %s requested more than one cell branch, but this is not supported! Check the configuration!", component->GetName()));
693 AliDebugStream(2) <<
"Adding calo cells \"" << cellCont->
GetName() <<
"\" of branch name \"" << cellCont->
GetBranchName() <<
"\" to component " << component->GetName() << std::endl;
702 if (checkObjectExists && !(cellCont->
GetCells())) {
703 AliFatal(TString::Format(
"%s: Unable to retrieve cells \"%s\" in input object \"%s\" because the cells are null. Please check your configuration!", GetName(), cellCont->
GetBranchName().c_str(), str.c_str()));
714 AliDebugStream(3) <<
"Component GetNumberOfCells(): " << component->
GetCaloCells()->GetNumberOfCells() << std::endl;
734 for(
auto & containerName : requestedContainers)
743 AliDebug(2, TString::Format(
"Processing container %s of inputType %d", containerName.c_str(), inputObjectType));
768 cellObj->
SetName(containerName);
771 std::string tempString =
"";
773 if (tempString ==
"usedefault") {
779 bool tempBool =
false;
805 AliDebugStream(2) <<
"Adding container" << std::endl;
807 AliDebugStream(2) <<
"Added container" << std::endl;
836 std::string tempString =
"";
838 bool tempBool =
false;
844 AliDebugStream(2) << cont->
GetName() <<
": Setting minPt of " << tempDouble << std::endl;
850 AliDebugStream(2) << cont->
GetName() <<
": Setting minE of " << tempDouble << std::endl;
860 AliDebugStream(2) << cont->
GetName() <<
": Setting eta limits of " << tempDouble <<
" to " << tempDouble2 << std::endl;
871 AliDebugStream(2) << cont->
GetName() <<
": Setting phi limits of " << tempDouble <<
" to " << tempDouble2 << std::endl;
878 AliDebugStream(2) << cont->
GetName() <<
": Setting embedding to " << (tempBool ?
"enabled" :
"disabled") << std::endl;
884 if (clusterContainer) {
890 AliDebugStream(2) << clusterContainer->
GetName() <<
": Setting cluster energy type to " << clusterEnergyType << std::endl;
895 result =
fYAMLConfig.
GetProperty(inputObjectPropertiesPath,
"clusNonLinCorrEnergyCut", tempDouble,
false);
897 AliDebugStream(2) << clusterContainer->
GetName() <<
": Setting clusNonLinCorrEnergyCut of " << tempDouble << std::endl;
904 AliDebugStream(2) << clusterContainer->
GetName() <<
": Setting clusHadCorrEnergyCut of " << tempDouble << std::endl;
911 AliDebugStream(2) << clusterContainer->
GetName() <<
": Setting Include PHOS to " << (tempBool ?
"enabled" :
"disabled") << std::endl;
918 if (trackContainer) {
921 std::vector <UInt_t> filterBitsVector;
925 for (
int filterBit : filterBitsVector) {
926 filterBits += filterBit;
928 AliDebugStream(2) << trackContainer->
GetName() <<
": Setting filterBits of " << filterBits << std::endl;
937 AliDebugStream(2) << trackContainer->
GetName() <<
": Setting trackFilterType of " << trackFilterType <<
" (" << tempString <<
")\n";
945 AliDebugStream(2) << trackContainer->
GetName() <<
": Setting track cuts period to " << tempString << std::endl;
969 std::string containerBranch =
"";
971 AliFatal(
"Must specify type of container when requesting branch.");
986 if (containerBranch ==
"usedefault") {
999 if (containerBranch ==
"mcparticles") {
1007 cont->
SetName(containerName.c_str());
1025 AliFatal(
"YAML configuration must be initialized before running (ie. the AddTask, run macro or wagon)!");
1060 component->UserCreateOutputObjects();
1062 if (component->GetOutputList() != 0)
1069 t->SetName(component->GetName());
1072 TIter next(component->GetOutputList());
1073 while (
TObject *obj = next()){
1077 AliDebug(1, TString::Format(
"Added output list from task %s to output.", component->GetName()));
1117 if (!InputEvent()) {
1118 AliError(
"Could not retrieve event! Returning!");
1123 if (dynamic_cast<AliAODEvent*>(InputEvent())) {
1124 AliWarning(
"=============================================================");
1125 AliWarning(
"=== Running on AOD is not equivalent to running on ESD! ===");
1126 AliWarning(
"=============================================================");
1130 fGeom = AliEMCALGeometry::GetInstanceFromRunNumber(InputEvent()->
GetRunNumber());
1132 AliFatal(
"Can not get EMCal geometry instance. If you do not need the EMCal geometry, disable it by setting task->SetNeedEmcalGeometry(kFALSE).");
1162 std::cout <<
"=== NOTE: Additional EMCal Corrections configuration information can be found when the Analysis Manager is configured. For a run macro, see above, while for a LEGO train, see the generation.log ===\n";
1178 component->SetEMCALGeometry(
fGeom);
1185 component->SetInputEvent(InputEvent());
1186 component->SetMCEvent(MCEvent());
1189 component->ExecOnce();
1193 if (!(component->GetCaloCells())) {
1194 AliDebugStream(2) <<
"Re-initializing cells for component " << component->GetName() << std::endl;
1211 const AliVVertex *vert = InputEvent()->GetPrimaryVertex();
1221 AliMultSelection *MultSelection =
static_cast<AliMultSelection*
>(InputEvent()->FindListObject(
"MultSelection"));
1222 if (MultSelection) {
1223 fCent = MultSelection->GetMultiplicityPercentile(
fCentEst.Data());
1226 AliWarning(
"Could not retrieve centrality information! Assuming 99");
1230 AliCentrality *aliCent = InputEvent()->GetCentrality();
1235 AliWarning(
"Could not retrieve centrality information! Assuming 99");
1245 AliWarning(Form(
"Negative centrality: %f. Assuming 99",
fCent));
1254 else if (
fCent > 90) {
1259 AliWarning(Form(
"Negative centrality: %f. Assuming 99",
fCent));
1272 AliWarning(Form(
"fCentBin too large: cent = %f fCentBin = %d. Assuming 99",
fCent,
fCentBin));
1285 while ((cont = static_cast<AliEmcalContainer*>(nextPartColl()))) cont->
NextEvent(InputEvent());
1288 while ((cont = static_cast<AliEmcalContainer*>(nextClusColl()))) cont->
NextEvent(InputEvent());
1302 component->SetInputEvent(InputEvent());
1303 component->SetMCEvent(MCEvent());
1304 component->SetCentralityBin(
fCentBin);
1305 component->SetCentrality(
fCent);
1306 component->SetVertex(
fVertex);
1324 component->UserNotify();
1338 std::string configurationName = userConfig ?
"user" :
"default";
1341 if (configPair.second.IsNull() ==
true) {
1342 AliWarning(TString::Format(
"%s configuration is empty!", configPair.first.c_str()));
1344 in << configPair.second;
1347 in <<
"Configuration \"" << configurationName <<
"\" does not exist!\n";
1378 std::string tempConfigName =
"tempConfig";
1398 AliDebugStream(2) <<
"Retrieving cells object " << cellContainer->
GetName() << std::endl;
1402 cellContainer->
SetCells(dynamic_cast<AliVCaloCells *>(event->FindListObject(cellContainer->
GetBranchName().c_str())));
1418 TClonesArray * array =
dynamic_cast<TClonesArray *
>(
event->FindListObject(cont->
GetArrayName()));
1420 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()));
1423 event->AddObject(array);
1437 std::string inputObjectName =
"";
1439 inputObjectName =
"clusterContainers";
1442 inputObjectName =
"trackContainers";
1445 inputObjectName =
"cells";
1448 AliFatal(TString::Format(
"Unrecognized input object type %d", inputObjectType));
1451 return inputObjectName;
1467 bool foundComponent =
false;
1468 for (
auto & possibleComponent : possibleComponents)
1470 if (possibleComponent == name) {
1471 foundComponent =
true;
1476 return foundComponent;
1492 const AliESDRun *run = esd->GetESDRun();
1493 TString beamType = run->GetBeamType();
1494 if (beamType ==
"p-p")
1496 else if (beamType ==
"A-A")
1498 else if (beamType ==
"p-A")
1503 Int_t runNumber = InputEvent()->GetRunNumber();
1505 if ((runNumber >= 136833 && runNumber <= 139517) ||
1506 (runNumber >= 167693 && runNumber <= 170593) ||
1507 (runNumber >= 244824 && runNumber <= 246994)) {
1509 }
else if ((runNumber >= 188356 && runNumber <= 188366) ||
1510 (runNumber >= 195164 && runNumber <= 197388) ||
1511 (runNumber >= 265015 && runNumber <= 267166)) {
1525 stream <<
"Cells info: " << std::endl;
1527 stream <<
"\tName: " << cellInfo->GetName() <<
"\tBranch: " << cellInfo->GetBranchName() <<
"\tIsEmbedding: " << std::boolalpha << cellInfo->GetIsEmbedding() << std::endl;
1535 stream <<
"\tName: " << cont->
GetName() <<
"\tBranch: " << cont->GetArrayName() <<
"\tTitle: " << cont->GetTitle() <<
"\tIsEmbedding: " << std::boolalpha << cont->GetIsEmbedding() << std::endl;
1539 AliErrorStream() <<
"Unrecognized input object type " << inputObjectType << std::endl;
1558 bool retrievedPropertyNames =
false;
1560 AliDebugStream(3) <<
"Looking for nodes in component \"" << componentName <<
"\" in the \"" << configurationName <<
"\" configuration\n";
1562 if (configPair.second[componentName])
1564 for (
auto propertyName : configPair.second[componentName])
1566 AliDebugStream(4) <<
"Node property name " << propertyName.first.as<std::string>() <<
"\n";
1567 propertyNames.insert(propertyName.first.as<std::string>());
1569 retrievedPropertyNames =
true;
1573 if (retrievedPropertyNames ==
false && nodeRequired) {
1574 std::stringstream message;
1575 message <<
"Failed to retrieve required property \"" 1576 << componentName <<
"\" from the \"" << configurationName <<
"\" configuration!" << std::endl;
1577 AliFatal(message.str().c_str());
1594 if (name == component->GetName()) {
1595 returnComponent = component;
1599 return returnComponent;
1613 if (cellContainer->GetName() == cellsContainerName) {
1614 return cellContainer;
1628 ::Error(
"AddTaskEmcalCorrectionTask",
"No analysis manager to connect to.");
1634 AliVEventHandler* handler = mgr->GetInputEventHandler();
1637 ::Error(
"AddTaskEmcalCorrectionTask",
"This task requires an input event handler");
1641 TString name =
"AliEmcalCorrectionTask";
1643 name += TString::Format(
"_%s", suffix.Data());
1647 if (mgrTask)
return mgrTask;
1656 mgr->AddTask(correctionTask);
1659 AliAnalysisDataContainer* cInput = mgr->GetCommonInputContainer();
1661 TString outputContainerName(name);
1662 outputContainerName +=
"_histos";
1664 AliAnalysisDataContainer * cOutput = mgr->CreateContainer(outputContainerName.Data(),
1666 AliAnalysisManager::kOutputContainer,
1667 Form(
"%s", AliAnalysisManager::GetCommonFileName()));
1669 mgr->ConnectInput(correctionTask, 0, cInput);
1670 mgr->ConnectOutput(correctionTask, 1, cOutput);
1674 return correctionTask;
1684 ::Error(
"ConfigureEmcalCorrectionTaskOnLEGOTrain",
"No analysis manager to connect to.");
1690 const std::string taskName =
"AliEmcalCorrectionTask";
1691 std::string foundTaskName =
"";
1692 bool taskFound =
false;
1693 std::vector<std::string> namesToSearch = {taskName};
1702 std::string suffixName = taskName;
1704 suffixName += suffix.Data();
1705 namesToSearch.insert(namesToSearch.begin(), suffixName);
1709 for (
auto name : namesToSearch)
1712 if (correctionTask !=
nullptr) {
1714 foundTaskName = name;
1720 if (taskFound ==
false) {
1721 AliFatalClassF(
"Could not find correction task, checking for both the suffix \"%s\" and the main task. Did you remember to create it?", suffix.Data());
1724 AliInfoClassStream() <<
"Found correction task named \"" << foundTaskName <<
"\" to configure.\n";
1728 std::string dummyTaskName = foundTaskName +
"_dummyTask";
1731 return correctionTask;
1741 std::stringstream tempSS;
1744 tempSS <<
"Correction components:\n";
1746 tempSS <<
"\t" << component <<
"\n";
1749 tempSS <<
"\nInput objects:\n";
1754 if (includeYAMLConfigurationInfo ==
true) {
1755 tempSS <<
"\nUser Configuration:\n";
1757 tempSS <<
"\n\nDefault Configuration:\n";
1762 return tempSS.str();
1785 std::ostream & result = myTask.
Print(in);
1797 std::string temp(opt);
1798 bool includeYAMLConfig =
false;
1799 if (temp ==
"YAML") {
1800 includeYAMLConfig =
true;
1802 Printf(
"%s",
toString(includeYAMLConfig).c_str());
void AdoptClusterContainer(AliClusterContainer *cont)
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 specialized components)
void PrintRequestedContainersInformation(AliEmcalContainerUtils::InputObject_t inputObjectType, std::ostream &stream) const
Steering task for the EMCal correction framework.
AliEMCALGeometry * fGeom
! Emcal geometry
static const AliVEvent * GetEvent(const AliVEvent *inputEvent, bool isEmbedding=false)
void SetTrackCutsPeriod(const char *period)
static AliEmcalCorrectionTask * ConfigureEmcalCorrectionTaskOnLEGOTrain(TString suffix)
std::string GetName() const
Get the name of the cells object (NOT the same as the branch!)
void InitializeConfiguration()
void SetArray(const AliVEvent *event)
void SetupContainer(const AliEmcalContainerUtils::InputObject_t inputObjectType, const std::string containerName)
AliVCaloCells * GetCaloCells() const
void SetName(const char *n)
Set the name of the class of the objets inside the underlying array.
std::vector< std::string > fOrderedComponentsToExecute
Ordered set of components to execute.
bool WriteConfigurationFile(std::string filename, bool userConfig=false) const
void SetMinE(Double_t min)
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.
std::string GetInputFieldNameFromInputObjectType(AliEmcalContainerUtils::InputObject_t inputObjectType)
void AdoptClusterContainer(AliClusterContainer *cont)
void UserExec(Option_t *option)
AliEmcalCorrectionTask & operator=(AliEmcalCorrectionTask other)
void UserCreateOutputObjectsComponents()
void SetMinPt(Double_t min)
Double_t fMaxCent
max centrality for event selection
Double_t fVertex[3]
! Event vertex
Declaration of class AliAnalysisTaskEmcalEmbeddingHelper.
AliEmcalContainer * AddContainer(const AliEmcalContainerUtils::InputObject_t contType, const std::string containerName)
void DetermineComponentsToExecute(std::vector< std::string > &componentsToExecute)
TList * fOutput
! Output for histograms
bool CompareToStoredConfiguration(std::string filename, bool userConfig=false)
void SetEtaLimits(Double_t min, Double_t max)
Wrapper around cells objects for the EMCal Correction Task.
bool fConfigurationInitialized
True if the YAML configuration files are initialized.
void SetUsingInputEvent(bool b=true)
void CheckForContainerArray(AliEmcalContainer *cont, AliEmcalContainerUtils::InputObject_t objectType)
virtual void NextEvent(const AliVEvent *event)
Preparation for the next event.
AliParticleContainer * GetParticleContainer(Int_t i=0) const
friend void swap(AliEmcalCorrectionTask &first, AliEmcalCorrectionTask &second)
Container for particles within the EMCAL framework.
void SetIsEmbedding(Bool_t b)
Set embedding status.
void SetupCellsInfo(std::string containerName)
PWG::Tools::AliYAMLConfiguration fYAMLConfig
Handles configuration from YAML.
AliVCaloCells * GetCells() const
Pointer to the actual CaloCells object.
bool fEventInitialized
If the event is initialized properly.
TString fCentEst
name of V0 centrality estimator
void SetAODFilterBits(UInt_t bits)
void SetYAMLConfiguration(PWG::Tools::AliYAMLConfiguration config)
Set YAML Configuration.
std::string fUserConfigurationFilename
! User YAML configruation filename
void GetPropertyNamesFromNode(const std::string configurationName, const std::string componentName, std::set< std::string > &propertyNames, const bool nodeRequired)
InputObject_t
Type of input object to be created
AliClusterContainer * GetClusterContainer(Int_t i=0) const
void SetClusNonLinCorrEnergyCut(Double_t cut)
static AliEmcalCorrectionTask * AddTaskEmcalCorrectionTask(TString suffix="")
void SetCells(AliVCaloCells *cells)
Sets the Pointer to the actual CaloCells object.
Double_t fCent
! Event centrality
void ExecOnceComponents()
void CreateInputObjects(AliEmcalContainerUtils::InputObject_t inputObjectType)
Base class for correction components in the EMCal correction framework.
Bool_t GetIsEmbedding() const
Get embedding status.
BeamType
Switch for the beam type.
void AdoptParticleContainer(AliParticleContainer *cont)
void InitializeComponents()
Base class for container structures within the EMCAL framework.
void SetIncludePHOS(Bool_t b)
friend std::ostream & operator<<(std::ostream &in, const AliEmcalCorrectionTask &myTask)
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!)
static const std::map< std::string, AliEmcalTrackSelection::ETrackFilterType_t > fgkTrackFilterTypeMap
Relates string to the track filter enumeration for YAML configuration.
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.
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
BeamType GetBeamType() const
std::string fDefaultConfigurationFilename
! Default YAML configuration filename
const TString & GetArrayName() const
void UserCreateOutputObjects()
TObjArray fParticleCollArray
Particle/track collection array.
const char * GetName() const
TObjArray fClusterCollArray
Cluster collection array.
void RemoveDummyTask() const
virtual Bool_t Initialize()
virtual ~AliEmcalCorrectionTask()
ETrackFilterType_t
Pre-defined track filters.
void AdoptParticleContainer(AliParticleContainer *cont)
void SetIsESD(Bool_t isESD)
AliEmcalCorrectionComponent * GetCorrectionComponent(const std::string &name) const
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
static std::string DetermineUseDefaultName(InputObject_t objType)
void SetArray(const AliVEvent *event)
Int_t GetRunNumber(TString)
void SetTrackFilterType(ETrackFilterType_t f)
std::string toString(bool includeYAMLConfigurationInfo=false) const
std::ostream & PrintConfiguration(std::ostream &in, bool userConfig=false) const
void Print(Option_t *opt="") const
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 SetPhiLimits(Double_t min, Double_t max)
void SetName(std::string name)
Set the name of the cells object (NOT the same as the branch!)
Int_t fCentBin
! Event centrality bin
void SetupContainersFromInputNodes(AliEmcalContainerUtils::InputObject_t inputObjectType, std::set< std::string > &requestedContainers)
Double_t fMinCent
min centrality for event selection
void SetDefaultClusterEnergy(Int_t d)
std::vector< AliEmcalCorrectionCellContainer * > fCellCollArray
Cells collection array.
Bool_t RetrieveEventObjects()
Container structure for EMCAL clusters.
static const std::map< std::string, VCluUserDefEnergy_t > fgkClusterEnergyTypeMap
Relates string to the cluster energy enumeration for YAML configuration.
Container for MC-true particles within the EMCAL framework.
void AddContainersToComponent(AliEmcalCorrectionComponent *component, AliEmcalContainerUtils::InputObject_t inputObjectType, bool checkObjectExists=false)
void Initialize(bool removeDummyTask=false)
TList * OpenFile(const char *fname)
void SetClusHadCorrEnergyCut(Double_t cut)
void swap(AliEmcalCorrectionTask &first, AliEmcalCorrectionTask &second)
BeamType fForceBeamType
forced beam type