| The Gaudi Framework v29r1 (5cd95fa2)

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

DataFlowManager.h
Go to the documentation of this file.
1 #ifndef GAUDIHIVE_DATAFLOWMANAGER_H
2 #define GAUDIHIVE_DATAFLOWMANAGER_H
3
4 // FW includes
5 #include "GaudiKernel/DataObjID.h"
6 #include "GaudiKernel/IAlgorithm.h"
7 #include "GaudiKernel/SmartIF.h"
8
9 // boost
10 #include "boost/dynamic_bitset.hpp"
11
12 // std includes
13 #include <list>
14 #include <set>
15 #include <unordered_map>
16 #include <unordered_set>
17 #include <vector>
18
28 class DataFlowManager
29 {
30
31 public:
33 typedef boost::dynamic_bitset<> dependency_bitset;
34
35 typedef std::vector<DataObjIDColl> algosDependenciesCollection;
37 DataFlowManager( const std::list<IAlgorithm*>& /*algos*/ ) : m_dataObjectsCatalog( 0 ){};
38
40 DataFlowManager( algosDependenciesCollection algoDependencies );
41
43 bool canAlgorithmRun( unsigned int iAlgo );
44
46 void updateDataObjectsCatalog( const DataObjIDColl& newProducts );
47
49 void reset();
50
52 DataObjIDColl content() const;
53
55 DataObjIDColl dataDependencies( unsigned int iAlgo ) const;
56
57 private:
58 DataObjIDColl m_fc;
59
61 dependency_bitset m_dataObjectsCatalog;
63 static std::vector<dependency_bitset> m_algosRequirements;
65 static std::vector<DataObjID> m_productName_vec;
67 typedef DataObjID productName_t;
68
69 static std::unordered_map<productName_t, long int, DataObjID_Hasher> m_productName_index_map;
71 inline long int productName2index( const productName_t& productName )
72 {
73 return m_productName_index_map.count( productName ) > 0 ? m_productName_index_map[productName] : -1;
74 };
76 inline DataObjID& index2productName( const unsigned int i ) { return m_productName_vec[i]; };
77 };
78
79 #endif
DataFlowManager::dependency_bitset
boost::dynamic_bitset dependency_bitset
Type holding the dependencies for one single algorithm.
Definition: DataFlowManager.h:33
DataFlowManager
The DataFlowManager takes care of keeping track of the dependencies of the algorithms in terms of dat...
Definition: DataFlowManager.h:28
DataFlowManager::updateDataObjectsCatalog
void updateDataObjectsCatalog(const DataObjIDColl &newProducts)
Update the catalog of available products in the slot.
Definition: DataFlowManager.cpp:65
DataFlowManager::dataDependencies
DataObjIDColl dataDependencies(unsigned int iAlgo) const
Get the dependencies of a single algo;.
Definition: DataFlowManager.cpp:97
DataObjID
Definition: DataObjID.h:37
IAlgorithm.h
DataFlowManager::m_productName_vec
static std::vector< DataObjID > m_productName_vec
Track the products, assigning an index to them. Static since the same for all events.
Definition: DataFlowManager.h:65
DataFlowManager::content
DataObjIDColl content() const
Get the content of the catalog.
Definition: DataFlowManager.cpp:86
DataFlowManager::m_productName_index_map
static std::unordered_map< productName_t, long int, DataObjID_Hasher > m_productName_index_map
Definition: DataFlowManager.h:69
DataFlowManager::m_fc
DataObjIDColl m_fc
Definition: DataFlowManager.h:58
DataFlowManager::m_algosRequirements
static std::vector< dependency_bitset > m_algosRequirements
Requirements of algos. Static since the same for all events.
Definition: DataFlowManager.h:63
DataFlowManager::index2productName
DataObjID & index2productName(const unsigned int i)
Simple helper method to convert an index to a product name.
Definition: DataFlowManager.h:76
SmartIF.h
std::unordered_set< DataObjID, DataObjID_Hasher >
std::list< IAlgorithm * >
std::unordered_map::count
T count(T...args)
DataObjID.h
DataFlowManager::productName2index
long int productName2index(const productName_t &productName)
Simple helper method to convert the product name into an index.
Definition: DataFlowManager.h:71
std::vector
STL class.
DataFlowManager::algosDependenciesCollection
std::vector< DataObjIDColl > algosDependenciesCollection
Definition: DataFlowManager.h:35
DataFlowManager::reset
void reset()
Reset to default values.
Definition: DataFlowManager.cpp:77
DataFlowManager::m_dataObjectsCatalog
dependency_bitset m_dataObjectsCatalog
Catalog of the products in the whiteboard.
Definition: DataFlowManager.h:61
DataFlowManager::productName_t
DataObjID productName_t
Track the products, assigning an index to them. Static since the same for all events.
Definition: DataFlowManager.h:67
DataFlowManager::DataFlowManager
DataFlowManager(const std::list< IAlgorithm * > &)
Constructor.
Definition: DataFlowManager.h:37
DataFlowManager::canAlgorithmRun
bool canAlgorithmRun(unsigned int iAlgo)
Needed data products are available.
Definition: DataFlowManager.cpp:56
std::unordered_map
STL class.