Pandora
Pandora source code navigator
Loading...
Searching...
No Matches
AlgorithmManager.h
Go to the documentation of this file.
1
8#ifndef PANDORA_ALGORITHM_MANAGER_H
9#define PANDORA_ALGORITHM_MANAGER_H 1
10
12#include "Pandora/StatusCodes.h"
13
14namespace pandora
15{
16
17class Algorithm;
18class AlgorithmTool;
19class AlgorithmFactory;
20class AlgorithmToolFactory;
21class Pandora;
22class TiXmlElement;
23class TiXmlHandle;
24
25//------------------------------------------------------------------------------------------------------------------------------------------
26
31{
32public:
38 AlgorithmManager(const Pandora *const pPandora);
39
44
51
52private:
59 StatusCode RegisterAlgorithmFactory(const std::string &algorithmType, AlgorithmFactory *const pAlgorithmFactory);
60
67 StatusCode RegisterAlgorithmToolFactory(const std::string &algorithmToolType, AlgorithmToolFactory *const pAlgorithmToolFactory);
68
74 StatusCode InitializeAlgorithms(const TiXmlHandle *const pXmlHandle);
75
82 StatusCode CreateAlgorithm(TiXmlElement *const pXmlElement, std::string &algorithmName);
83
90 StatusCode CreateAlgorithmTool(TiXmlElement *const pXmlElement, AlgorithmTool *&pAlgorithmTool);
91
99 StatusCode FindSpecificAlgorithmInstance(TiXmlElement *const pXmlElement, std::string &algorithmName, std::string &xmlInstanceLabel) const;
100
105
106 typedef std::map<const std::string, Algorithm *const> AlgorithmMap;
107 typedef std::map<const std::string, AlgorithmFactory *const> AlgorithmFactoryMap;
108 typedef std::map<const std::string, const std::string> SpecificAlgorithmInstanceMap;
109
114
115 typedef std::map<const std::string, AlgorithmToolFactory *const> AlgorithmToolFactoryMap;
116
119
120 const Pandora *const m_pPandora;
121
122 friend class PandoraApiImpl;
124 friend class PandoraImpl;
125};
126
127//------------------------------------------------------------------------------------------------------------------------------------------
128
133
134} // namespace pandora
135
136#endif // #ifndef PANDORA_ALGORITHM_MANAGER_H
Header file defining relevant internal typedefs, sort and string conversion functions.
Header file defining status codes and relevant preprocessor macros.
Factory class for instantiating algorithms.
Definition Algorithm.h:39
AlgorithmManager class.
StatusCode CreateAlgorithmTool(TiXmlElement *const pXmlElement, AlgorithmTool *&pAlgorithmTool)
Create an algorithm tool, via one of the algorithm tool factories registered with pandora.
StatusCode RegisterAlgorithmToolFactory(const std::string &algorithmToolType, AlgorithmToolFactory *const pAlgorithmToolFactory)
Register an algorithm tool factory.
const StringVector & GetPandoraAlgorithms() const
Get the list of algorithms to be run by pandora.
const Pandora *const m_pPandora
The pandora instance that will run the algorithms.
StatusCode InitializeAlgorithms(const TiXmlHandle *const pXmlHandle)
Initialize algorithms.
std::map< const std::string, AlgorithmFactory *const > AlgorithmFactoryMap
AlgorithmToolVector m_algorithmToolVector
The algorithm tool vector.
std::map< const std::string, const std::string > SpecificAlgorithmInstanceMap
StatusCode ResetForNextEvent()
Call the reset callback in all managed algorithms and algorithm tools.
StatusCode RegisterAlgorithmFactory(const std::string &algorithmType, AlgorithmFactory *const pAlgorithmFactory)
Register an algorithm factory.
SpecificAlgorithmInstanceMap m_specificAlgorithmInstanceMap
The specific algorithm instance map.
AlgorithmMap m_algorithmMap
The algorithm map.
std::map< const std::string, Algorithm *const > AlgorithmMap
StatusCode FindSpecificAlgorithmInstance(TiXmlElement *const pXmlElement, std::string &algorithmName, std::string &xmlInstanceLabel) const
Find the name of a specific algorithm instance, so that it can be re-used.
StatusCode CreateAlgorithm(TiXmlElement *const pXmlElement, std::string &algorithmName)
Create an algorithm, via one of the algorithm factories registered with pandora.
AlgorithmFactoryMap m_algorithmFactoryMap
The algorithm factory map.
AlgorithmToolFactoryMap m_algorithmToolFactoryMap
The algorithm tool factory map.
std::map< const std::string, AlgorithmToolFactory *const > AlgorithmToolFactoryMap
StringVector m_pandoraAlgorithms
The ordered list of names of top-level algorithms, to be run by pandora.
Factory class for instantiating algorithm tools.
AlgorithmTool class. Algorithm tools will tend to be tailored for specific parent algorithms,...
PandoraApiImpl class.
PandoraContentApiImpl class.
Pandora class.
Definition Pandora.h:40
PandoraImpl class.
Definition PandoraImpl.h:18
std::vector< std::string > StringVector
std::vector< AlgorithmTool * > AlgorithmToolVector
StatusCode
The StatusCode enum.