ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Control
AthenaBaseComps
AthenaBaseComps
DynamicDataHelper.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3
*/
4
/* Dear emacs, this is -*-c++-*- */
5
#ifndef _DynamicDataHelper_H_
6
#define _DynamicDataHelper_H_
7
8
#include "
AthenaBaseComps/GaudiComponentVisitor.h
"
9
#include "
AthenaBaseComps/IDynamicDataConsumer.h
"
10
#include "GaudiKernel/StatusCode.h"
11
12
// @TODO extend Gaudi's tool visitor to allow for an externally provided list of tools which have been visited already.
13
namespace
Ath
{
14
15
struct
DataObjID_PtrHasher
{
16
std::size_t
operator()
(
const
DataObjID* k )
const
{
return
DataObjID_Hasher()(*k); }
17
};
18
struct
DataObjID_PtrEqual
{
19
std::size_t
operator()
(
const
DataObjID*
a
,
const
DataObjID* b)
const
{
return
*
a
== *b; }
20
};
21
using
DataObjIDPtrColl
= std::unordered_set<const DataObjID *, DataObjID_PtrHasher, DataObjID_PtrEqual>;
22
25
class
DynamicDataHelper
{
26
public
:
33
void
gatherDataHandlesAndDynamicConsumers
(
const
std::string &parent_name, Gaudi::Algorithm *theAlgorithm);
34
40
StatusCode
addExtraDependencies
(IClassIDSvc& clid_svc, std::vector<std::string> &undeclared_output_data, MsgStream &out);
41
48
void
updateDataNeeds
(
unsigned
int
max_pass,
49
MsgStream &out);
50
51
protected
:
59
bool
updateDataNeeds
(
const
std::vector<const DataObjID *> &input_data_in,
60
const
std::vector<const DataObjID *> &output_data_in,
61
std::vector<const DataObjID *> &input_data_out,
62
std::vector<const DataObjID *> &output_data_out,
63
MsgStream &out);
64
65
std::vector<DataObjID>
m_extraOutputIDs
;
66
DataObjIDPtrColl
m_inputHandles
;
67
DataObjIDPtrColl
m_outputHandles
;
68
69
std::unordered_map< IDynamicDataConsumer *,std::vector<Gaudi::Algorithm *> >
m_dynDataConsumer
;
70
71
};
72
}
73
#endif
GaudiComponentVisitor.h
IDynamicDataConsumer.h
a
static Double_t a
Definition
LArPhysWaveHECTool.cxx:38
Ath::DynamicDataHelper
Helper class to gather all declared data IDs and propagate them to components which declare data depe...
Definition
DynamicDataHelper.h:25
Ath::DynamicDataHelper::addExtraDependencies
StatusCode addExtraDependencies(IClassIDSvc &clid_svc, std::vector< std::string > &undeclared_output_data, MsgStream &out)
Add extra output data which is not declared by any of the gathered components.
Definition
DynamicDataHelper.cxx:26
Ath::DynamicDataHelper::gatherDataHandlesAndDynamicConsumers
void gatherDataHandlesAndDynamicConsumers(const std::string &parent_name, Gaudi::Algorithm *theAlgorithm)
Gather the input and output data declared by the given algorithm, its child algorithms and their tool...
Definition
DynamicDataHelper.cxx:65
Ath::DynamicDataHelper::updateDataNeeds
void updateDataNeeds(unsigned int max_pass, MsgStream &out)
Update the data dependencies of all components which dynamically declare tehm.
Definition
DynamicDataHelper.cxx:100
Ath::DynamicDataHelper::m_extraOutputIDs
std::vector< DataObjID > m_extraOutputIDs
Definition
DynamicDataHelper.h:65
Ath::DynamicDataHelper::m_inputHandles
DataObjIDPtrColl m_inputHandles
Definition
DynamicDataHelper.h:66
Ath::DynamicDataHelper::m_outputHandles
DataObjIDPtrColl m_outputHandles
Definition
DynamicDataHelper.h:67
Ath::DynamicDataHelper::m_dynDataConsumer
std::unordered_map< IDynamicDataConsumer *, std::vector< Gaudi::Algorithm * > > m_dynDataConsumer
Definition
DynamicDataHelper.h:69
Ath
Definition
DynamicDataHelper.h:13
Ath::DataObjIDPtrColl
std::unordered_set< const DataObjID *, DataObjID_PtrHasher, DataObjID_PtrEqual > DataObjIDPtrColl
Definition
DynamicDataHelper.h:21
Ath::DataObjID_PtrEqual
Definition
DynamicDataHelper.h:18
Ath::DataObjID_PtrEqual::operator()
std::size_t operator()(const DataObjID *a, const DataObjID *b) const
Definition
DynamicDataHelper.h:19
Ath::DataObjID_PtrHasher
Definition
DynamicDataHelper.h:15
Ath::DataObjID_PtrHasher::operator()
std::size_t operator()(const DataObjID *k) const
Definition
DynamicDataHelper.h:16
Generated on
for ATLAS Offline Software by
1.17.0