File indexing completed on 2026-09-27 09:15:18
0001
0002
0003
0004
0005
0006
0007
0008 #ifndef PANDORA_ALGORITHM_MANAGER_H
0009 #define PANDORA_ALGORITHM_MANAGER_H 1
0010
0011 #include "Pandora/PandoraInternal.h"
0012 #include "Pandora/StatusCodes.h"
0013
0014 namespace pandora
0015 {
0016
0017 class Algorithm;
0018 class AlgorithmTool;
0019 class AlgorithmFactory;
0020 class AlgorithmToolFactory;
0021 class Pandora;
0022 class TiXmlElement;
0023 class TiXmlHandle;
0024
0025
0026
0027
0028
0029
0030 class AlgorithmManager
0031 {
0032 public:
0033
0034
0035
0036
0037
0038 AlgorithmManager(const Pandora *const pPandora);
0039
0040
0041
0042
0043 ~AlgorithmManager();
0044
0045
0046
0047
0048
0049
0050 const StringVector &GetPandoraAlgorithms() const;
0051
0052 private:
0053
0054
0055
0056
0057
0058
0059 StatusCode RegisterAlgorithmFactory(const std::string &algorithmType, AlgorithmFactory *const pAlgorithmFactory);
0060
0061
0062
0063
0064
0065
0066
0067 StatusCode RegisterAlgorithmToolFactory(const std::string &algorithmToolType, AlgorithmToolFactory *const pAlgorithmToolFactory);
0068
0069
0070
0071
0072
0073
0074 StatusCode InitializeAlgorithms(const TiXmlHandle *const pXmlHandle);
0075
0076
0077
0078
0079
0080
0081
0082 StatusCode CreateAlgorithm(TiXmlElement *const pXmlElement, std::string &algorithmName);
0083
0084
0085
0086
0087
0088
0089
0090 StatusCode CreateAlgorithmTool(TiXmlElement *const pXmlElement, AlgorithmTool *&pAlgorithmTool);
0091
0092
0093
0094
0095
0096
0097
0098
0099 StatusCode FindSpecificAlgorithmInstance(TiXmlElement *const pXmlElement, std::string &algorithmName, std::string &xmlInstanceLabel) const;
0100
0101
0102
0103
0104 StatusCode ResetForNextEvent();
0105
0106 typedef std::map<const std::string, Algorithm *const> AlgorithmMap;
0107 typedef std::map<const std::string, AlgorithmFactory *const> AlgorithmFactoryMap;
0108 typedef std::map<const std::string, const std::string> SpecificAlgorithmInstanceMap;
0109
0110 AlgorithmMap m_algorithmMap;
0111 AlgorithmFactoryMap m_algorithmFactoryMap;
0112 SpecificAlgorithmInstanceMap m_specificAlgorithmInstanceMap;
0113 StringVector m_pandoraAlgorithms;
0114
0115 typedef std::map<const std::string, AlgorithmToolFactory *const> AlgorithmToolFactoryMap;
0116
0117 AlgorithmToolVector m_algorithmToolVector;
0118 AlgorithmToolFactoryMap m_algorithmToolFactoryMap;
0119
0120 const Pandora *const m_pPandora;
0121
0122 friend class PandoraApiImpl;
0123 friend class PandoraContentApiImpl;
0124 friend class PandoraImpl;
0125 };
0126
0127
0128
0129 inline const StringVector &AlgorithmManager::GetPandoraAlgorithms() const
0130 {
0131 return m_pandoraAlgorithms;
0132 }
0133
0134 }
0135
0136 #endif