Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  master (d98a2936)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
AlgorithmManager.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2025 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
11 #pragma once
12 
15 #include <GaudiKernel/IAlgorithm.h>
16 #include <GaudiKernel/IStateful.h>
17 #include <GaudiKernel/Kernel.h>
18 #include <GaudiKernel/SmartIF.h>
19 #include <map>
20 #include <string>
21 #include <unordered_map>
22 #include <vector>
23 
24 class ISvcLocator;
25 class IMessageSvc;
26 
39 class AlgorithmManager : public extends<ComponentManager, IAlgManager> {
40 public:
41  struct AlgorithmItem final {
42  AlgorithmItem( IAlgorithm* s, bool managed = false ) : algorithm( s ), managed( managed ) {}
44  bool managed;
45  bool operator==( const IAlgorithm* ptr ) const { return algorithm == ptr; }
46  };
47 
49  typedef std::map<std::string, std::string, std::less<>> AlgTypeAliasesMap;
50 
52  AlgorithmManager( IInterface* iface );
53 
59  StatusCode createAlgorithm( const std::string& algtype, const std::string& algname, IAlgorithm*& algorithm,
60  bool managed = false, bool checkIfExists = true ) override;
61 
63  bool existsAlgorithm( std::string_view name ) const override;
65  std::vector<IAlgorithm*> getAlgorithms() const override;
66 
68  StatusCode initialize() override;
70  StatusCode start() override;
72  StatusCode stop() override;
74  StatusCode finalize() override;
75 
77  StatusCode reinitialize() override;
79  StatusCode restart() override;
80 
82  const std::string& name() const override {
83  static const std::string _name = "AlgorithmManager";
84  return _name;
85  }
86 
87  SmartIF<IAlgorithm>& algorithm( const Gaudi::Utils::TypeNameString& typeName, const bool createIf = true ) override;
88 
90  const AlgTypeAliasesMap& typeAliases() const { return m_algTypeAliases; }
91 
93  void outputLevelUpdate() override;
94 
95 private:
96  std::vector<AlgorithmItem> m_algs;
97  std::unordered_multimap<std::string, SmartIF<IAlgorithm>> m_algsMap;
98 
101 };
AlgorithmManager::AlgorithmItem::managed
bool managed
Definition: AlgorithmManager.h:44
AlgorithmManager::m_algTypeAliases
AlgTypeAliasesMap m_algTypeAliases
Definition: AlgorithmManager.h:100
IAlgManager.h
ComponentManager.h
AlgorithmManager::m_algsMap
std::unordered_multimap< std::string, SmartIF< IAlgorithm > > m_algsMap
algorithms maintained by AlgorithmManager
Definition: AlgorithmManager.h:97
IMessageSvc
Definition: IMessageSvc.h:34
AlgorithmManager::existsAlgorithm
bool existsAlgorithm(std::string_view name) const override
implementation of IAlgManager::existsAlgorithm
Definition: AlgorithmManager.cpp:114
AlgorithmManager::restart
StatusCode restart() override
Initialization (from RUNNING to RUNNING, via INITIALIZED).
Definition: AlgorithmManager.cpp:190
gaudirun.s
string s
Definition: gaudirun.py:346
AlgorithmManager::AlgorithmItem::AlgorithmItem
AlgorithmItem(IAlgorithm *s, bool managed=false)
Definition: AlgorithmManager.h:42
AlgorithmManager::AlgorithmItem::algorithm
IAlgorithm * algorithm
Definition: AlgorithmManager.h:43
AlgorithmManager::AlgTypeAliasesMap
std::map< std::string, std::string, std::less<> > AlgTypeAliasesMap
typedefs and classes
Definition: AlgorithmManager.h:49
ISvcLocator
Definition: ISvcLocator.h:42
AlgorithmManager::outputLevelUpdate
void outputLevelUpdate() override
Function to call to update the outputLevel of the components (after a change in MessageSvc).
Definition: AlgorithmManager.cpp:212
AlgorithmManager
Definition: AlgorithmManager.h:39
AlgorithmManager::finalize
StatusCode finalize() override
Finalize (from INITIALIZED to CONFIGURED).
Definition: AlgorithmManager.cpp:156
ManySmallAlgs.alg
alg
Definition: ManySmallAlgs.py:81
SmartIF.h
Gaudi::Utils::TypeNameString
Helper class to parse a string of format "type/name".
Definition: TypeNameString.h:19
StatusCode
Definition: StatusCode.h:64
IAlgorithm
Definition: IAlgorithm.h:36
AlgorithmManager::initialize
StatusCode initialize() override
Initialization (from CONFIGURED to INITIALIZED).
Definition: AlgorithmManager.cpp:126
AlgorithmManager::getAlgorithms
std::vector< IAlgorithm * > getAlgorithms() const override
implementation of IAlgManager::getAlgorithms
Definition: AlgorithmManager.cpp:118
AlgorithmManager::removeAlgorithm
StatusCode removeAlgorithm(IAlgorithm *alg) override
implementation of IAlgManager::removeAlgorithm
Definition: AlgorithmManager.cpp:35
IStateful.h
SmartIF< IAlgorithm >
AlgorithmManager::start
StatusCode start() override
Start (from INITIALIZED to RUNNING).
Definition: AlgorithmManager.cpp:136
extends
Base class used to extend a class implementing other interfaces.
Definition: extends.h:19
AlgorithmManager::m_algs
std::vector< AlgorithmItem > m_algs
algorithms maintained by AlgorithmManager
Definition: AlgorithmManager.h:96
AlgorithmManager::name
const std::string & name() const override
Return the name of the manager (implementation of INamedInterface)
Definition: AlgorithmManager.h:82
AlgorithmManager::algorithm
SmartIF< IAlgorithm > & algorithm(const Gaudi::Utils::TypeNameString &typeName, const bool createIf=true) override
Definition: AlgorithmManager.cpp:100
AlgorithmManager::AlgorithmItem
Definition: AlgorithmManager.h:41
AlgorithmManager::addAlgorithm
StatusCode addAlgorithm(IAlgorithm *alg) override
implementation of IAlgManager::addAlgorithm
Definition: AlgorithmManager.cpp:29
GaudiDict::typeName
std::string typeName(const std::type_info &typ)
Definition: Dictionary.cpp:31
AlgorithmManager::AlgorithmItem::operator==
bool operator==(const IAlgorithm *ptr) const
Definition: AlgorithmManager.h:45
Kernel.h
IInterface
Definition: IInterface.h:225
AlgorithmManager::AlgorithmManager
AlgorithmManager(IInterface *iface)
default creator
Definition: AlgorithmManager.cpp:25
AlgorithmManager::typeAliases
const AlgTypeAliasesMap & typeAliases() const
Definition: AlgorithmManager.h:90
IAlgorithm.h
AlgorithmManager::typeAliases
AlgTypeAliasesMap & typeAliases()
Definition: AlgorithmManager.h:89
AlgorithmManager::reinitialize
StatusCode reinitialize() override
Initialization (from INITIALIZED or RUNNING to INITIALIZED, via CONFIGURED).
Definition: AlgorithmManager.cpp:177
AlgorithmManager::stop
StatusCode stop() override
Stop (from RUNNING to INITIALIZED).
Definition: AlgorithmManager.cpp:146
AlgorithmManager::createAlgorithm
StatusCode createAlgorithm(const std::string &algtype, const std::string &algname, IAlgorithm *&algorithm, bool managed=false, bool checkIfExists=true) override
implementation of IAlgManager::createAlgorithm
Definition: AlgorithmManager.cpp:48