9 #include "Pandora/AlgorithmHeaders.h" 26 StreamingAlgorithm::StreamingAlgorithm() : m_listType{
"cluster"}
44 const ClusterList *pClusterList{
nullptr};
46 PandoraContentApi::ReplaceCurrentList<Cluster>(*
this, listName);
47 StatusCode
code{PandoraContentApi::GetCurrentList(*
this, pClusterList)};
48 if (
code == STATUS_CODE_SUCCESS)
52 PandoraContentApi::GetCurrentList(*
this, pClusterList);
53 if (!pClusterList->empty())
55 PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, PandoraContentApi::RunDaughterAlgorithm(*
this, alg));
64 else if (
code != STATUS_CODE_NOT_INITIALIZED)
75 return STATUS_CODE_SUCCESS;
82 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
"ListType",
m_listType));
86 std::cout <<
"StreamingAlgorithm::ReadSettings - Error: Only Cluster list type is supported at this time" <<
std::endl;
87 return STATUS_CODE_INVALID_PARAMETER;
90 PANDORA_RETURN_RESULT_IF(STATUS_CODE_SUCCESS, !=, XmlHelper::ReadVectorOfValues(xmlHandle,
"InputListNames",
m_inputListNames));
93 std::cout <<
"StreamingAlgorithm::ReadSettings - Error: No input lists found" <<
std::endl;
94 return STATUS_CODE_NOT_FOUND;
97 PANDORA_RETURN_RESULT_IF_AND_IF(STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadValue(xmlHandle,
"OutputListName",
m_outputListName));
98 PANDORA_RETURN_RESULT_IF_AND_IF(
99 STATUS_CODE_SUCCESS, STATUS_CODE_NOT_FOUND, !=, XmlHelper::ReadVectorOfValues(xmlHandle,
"OutputListNames",
m_outputListNames));
102 std::cout <<
"StreamingAlgorithm::ReadSettings - Error: You must provide either a single output list name OR a list of output list names" 104 return STATUS_CODE_NOT_FOUND;
108 std::cout <<
"StreamingAlgorithm::ReadSettings - Error: When providing a list of output lists, there should be a one-to-one " 109 <<
"correspondence with the list of input lists" <<
std::endl;
110 return STATUS_CODE_INVALID_PARAMETER;
115 std::string algStreamName{
"Algorithms" + listName};
118 std::cout <<
"StreamingAlgorithm::ReadSettings - Error: Duplicate stream name found" <<
std::endl;
119 return STATUS_CODE_INVALID_PARAMETER;
121 PANDORA_RETURN_RESULT_IF(
122 STATUS_CODE_SUCCESS, !=, XmlHelper::ProcessAlgorithmList(*
this, xmlHandle, algStreamName,
m_streamAlgorithmMap[algStreamName]));
125 std::cout <<
"StreamingAlgorithm::ReadSettings - Error: Found no algorithms for \'" << algStreamName <<
"\'" <<
std::endl;
126 return STATUS_CODE_NOT_FOUND;
130 return STATUS_CODE_SUCCESS;
pandora::StringVector m_inputListNames
The names of the input lists.
virtual ~StreamingAlgorithm()
Header file for the lar calo hit class.
pandora::StringVector m_outputListNames
Names of the output lists if not combining into a single list at the end.
Header file for the lar monitoring helper helper class.
Header file for the lar monte carlo particle helper helper class.
pandora::StatusCode Run()
CodeOutputInterface * code
StreamAlgorithmMap m_streamAlgorithmMap
A map from individual streams to the algorithms that stream should run.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
std::string m_listType
The type of the input lists (currently only Cluster is supported)
QTextStream & endl(QTextStream &s)
std::string m_outputListName
The name of the output list.