|
ATLAS Offline Software
|
ClassName: AthSequencer.
More...
#include <AthSequencer.h>
|
| AthSequencer (const std::string &name, ISvcLocator *svcloc) |
| Constructor(s) More...
|
|
virtual | ~AthSequencer () |
| Destructor. More...
|
|
virtual StatusCode | initialize () override |
| Initialization of a sequencer. More...
|
|
virtual StatusCode | reinitialize () override |
| AthSequencer Reinitialization. More...
|
|
virtual StatusCode | execute (const EventContext &ctx) const override |
| The actions to be performed by the sequencer on an event. More...
|
|
virtual StatusCode | start () override |
| Start (from INITIALIZED to RUNNING). More...
|
|
virtual StatusCode | stop () override |
| Stop (from RUNNING to INITIALIZED). More...
|
|
virtual void | resetExecuted (const EventContext &ctx) const |
| Reset the AthSequencer executed state for the current event. More...
|
|
virtual bool | isStopOverride () const |
| Has the StopOverride mode been set? More...
|
|
StatusCode | append (Gaudi::Algorithm *pAlgorithm) |
| Append an algorithm to the sequencer. More...
|
|
StatusCode | createAndAppend (const std::string &type, const std::string &name, Gaudi::Algorithm *&pAlgorithm) |
| Create a algorithm and append it to the sequencer. More...
|
|
StatusCode | remove (Gaudi::Algorithm *pAlgorithm) |
| Remove the specified algorithm from the sequencer. More...
|
|
StatusCode | remove (const std::string &name) |
|
StatusCode | decodeMemberNames () |
| Decode Member Name list. More...
|
|
void | membershipHandler (Gaudi::Details::PropertyBase &theProp) |
| "Members" property handler More...
|
|
StatusCode | decodeBranchMemberNames () |
| Decode branch member naem list. More...
|
|
void | branchMembershipHandler (Gaudi::Details::PropertyBase &theProp) |
| "BranchMembers" propertry handler More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysInitialize () override |
| Perform system initialization for an algorithm. More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
|
StatusCode | append (Gaudi::Algorithm *pAlgorithm, std::vector< Gaudi::Algorithm * > *theAlgs) |
| Append an algorithm to the sequencer. More...
|
|
StatusCode | createAndAppend (const std::string &type, const std::string &name, Gaudi::Algorithm *&pAlgorithm, std::vector< Gaudi::Algorithm * > *theAlgs) |
| Create a algorithm and append it to the sequencer. More...
|
|
StatusCode | decodeNames (Gaudi::Property< std::vector< std::string >> &theNames, std::vector< Gaudi::Algorithm * > *theAlgs) |
| Decode algorithm names, creating or appending algorithms as appropriate. More...
|
|
StatusCode | remove (const std::string &algname, std::vector< Gaudi::Algorithm * > *theAlgs) |
| Remove the specified algorithm from the sequencer. More...
|
|
void | renounceArray (SG::VarHandleKeyArray &handlesArray) |
| remove all handles from I/O resolution More...
|
|
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > | renounce (T &h) |
|
void | extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps) |
| Add StoreName to extra input/output deps as needed. More...
|
|
ClassName: AthSequencer.
Description: An AthSequencer is essentially a list of Algorithms and is responsible for their management. Note that Sequences may themselves contain other Sequences. The default execute( ) implementation loops over the members of the sequence, calling their execute( ) methods. However, this can be modified if a member is disabled, has already been executed, or a member indicates that it's filter fails. The the former two cases the execution of the member is bypassed. In the latter case, the loop is terminated and the AthSequencer assumes the same filtered state as the last member.
Definition at line 38 of file AthSequencer.h.
◆ StoreGateSvc_t
◆ AthSequencer()
AthSequencer::AthSequencer |
( |
const std::string & |
name, |
|
|
ISvcLocator * |
svcloc |
|
) |
| |
◆ ~AthSequencer()
AthSequencer::~AthSequencer |
( |
| ) |
|
|
virtual |
◆ append() [1/2]
StatusCode AthSequencer::append |
( |
Gaudi::Algorithm * |
pAlgorithm | ) |
|
Append an algorithm to the sequencer.
Definition at line 247 of file AthSequencer.cxx.
249 return append( pAlgorithm, subAlgorithms( ) );
◆ append() [2/2]
StatusCode AthSequencer::append |
( |
Gaudi::Algorithm * |
pAlgorithm, |
|
|
std::vector< Gaudi::Algorithm * > * |
theAlgs |
|
) |
| |
|
protected |
Append an algorithm to the sequencer.
Protected Member Functions.
Definition at line 290 of file AthSequencer.cxx.
293 bool all_good =
true;
296 for (Gaudi::Algorithm* theAlgorithm : *theAlgs) {
297 if ( theAlgorithm == pAlgorithm ) {
303 theAlgs->push_back( pAlgorithm );
304 pAlgorithm->addRef();
306 return all_good ? StatusCode::SUCCESS : StatusCode::FAILURE;
◆ branchMembershipHandler()
void AthSequencer::branchMembershipHandler |
( |
Gaudi::Details::PropertyBase & |
theProp | ) |
|
"BranchMembers" propertry handler
◆ createAndAppend() [1/2]
StatusCode AthSequencer::createAndAppend |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
Gaudi::Algorithm *& |
pAlgorithm |
|
) |
| |
Create a algorithm and append it to the sequencer.
A call to this method creates a child algorithm object. Note that the returned pointer is to Algorithm (as opposed to IAlgorithm), and thus the methods of IProperty are also available for the direct setting of the algorithm's properties. Using this mechanism instead of creating algorithms directly via the new operator is preferred since then the framework may take care of all of the necessary book-keeping.
Definition at line 253 of file AthSequencer.cxx.
◆ createAndAppend() [2/2]
StatusCode AthSequencer::createAndAppend |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
Gaudi::Algorithm *& |
pAlgorithm, |
|
|
std::vector< Gaudi::Algorithm * > * |
theAlgs |
|
) |
| |
|
protected |
Create a algorithm and append it to the sequencer.
A call to this method creates a child algorithm object. Note that the returned pointer is to Algorithm (as opposed to IAlgorithm), and thus the methods of IProperty are also available for the direct setting of the algorithm's properties. Using this mechanism instead of creating algorithms directly via the new operator is preferred since then the framework may take care of all of the necessary book-keeping.
Definition at line 310 of file AthSequencer.cxx.
315 SmartIF<IAlgManager> theAlgMgr(Gaudi::svcLocator()->as<IAlgManager>());
316 IAlgorithm*
tmp =
nullptr;
319 pAlgorithm =
dynamic_cast<Gaudi::Algorithm*
>(
tmp);
320 theAlgs->push_back( pAlgorithm );
322 return StatusCode::SUCCESS;
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ decodeBranchMemberNames()
StatusCode AthSequencer::decodeBranchMemberNames |
( |
| ) |
|
Decode branch member naem list.
◆ decodeMemberNames()
StatusCode AthSequencer::decodeMemberNames |
( |
| ) |
|
◆ decodeNames()
StatusCode AthSequencer::decodeNames |
( |
Gaudi::Property< std::vector< std::string >> & |
theNames, |
|
|
std::vector< Gaudi::Algorithm * > * |
theAlgs |
|
) |
| |
|
protected |
Decode algorithm names, creating or appending algorithms as appropriate.
Definition at line 326 of file AthSequencer.cxx.
329 SmartIF<IAlgManager> theAlgMgr(Gaudi::svcLocator()->as<IAlgManager>());
337 for (
const std::string&
name : theNames.value()) {
340 Gaudi::Utils::TypeNameString tn(
name);
344 SmartIF<IAlgorithm>& theIAlg = theAlgMgr->algorithm(tn.name(),
false);
345 Gaudi::Algorithm* theAlgorithm =
nullptr;
347 theAlgorithm =
dynamic_cast<Gaudi::Algorithm*
>(theIAlg.get());
348 if ( theAlgorithm ) {
351 if (
append(theAlgorithm, theAlgs).isSuccess( ) ) {
352 ATH_MSG_DEBUG (tn.name() <<
" already exists - appended to member list");
355 result = StatusCode::FAILURE;
359 ATH_MSG_WARNING (tn.name() <<
" is not an Algorithm - Failed dynamic cast");
360 result = StatusCode::FAILURE;
366 if (
createAndAppend(tn.type(), tn.name(), theAlgorithm, theAlgs).isSuccess( ) ) {
367 ATH_MSG_DEBUG (tn.name() <<
" doesn't exist - created and appended to member list");
370 result = StatusCode::FAILURE;
377 if (
result.isSuccess() && !theAlgs->empty() ) {
381 for (Gaudi::Algorithm*
alg : *theAlgs) {
386 if (
alg->name() == System::typeinfoName(
typeid(*
alg)))
389 msg() << System::typeinfoName(
typeid(*
alg)) <<
"/" <<
alg->name();
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ execute()
StatusCode AthSequencer::execute |
( |
const EventContext & |
ctx | ) |
const |
|
overridevirtual |
The actions to be performed by the sequencer on an event.
This method is invoked once per event.
Definition at line 114 of file AthSequencer.cxx.
121 auto& state = execState( ctx );
124 if ( isEnabled( ) && state.state() != AlgExecState::State::Done ) {
127 state.setState( AlgExecState::State::Executing );
133 const std::vector<Gaudi::Algorithm*>* subAlgms = subAlgorithms( );
134 for (
auto theAlgorithm : *subAlgms) {
135 if ( theAlgorithm->isEnabled( ) ) {
140 if (
sc.isSuccess() ) {
144 const bool passed = theAlgorithm->execState( ctx ).filterPassed();
145 state.setFilterPassed(
passed );
157 ATH_MSG_INFO (
"execute of [" << theAlgorithm->name() <<
"] did NOT succeed");
166 state.setState( AlgExecState::State::Done );
◆ executeAlgorithm()
StatusCode AthSequencer::executeAlgorithm |
( |
Gaudi::Algorithm * |
theAlgorithm, |
|
|
const EventContext & |
ctx |
|
) |
| const |
|
private |
Run one algorithm.
Definition at line 172 of file AthSequencer.cxx.
179 s_abortTimer = std::make_unique<Athena::AlgorithmTimer>(0);
191 << theAlgorithm->name() <<
"> : " << remaining);
◆ extraDeps_update_handler()
Add StoreName to extra input/output deps as needed.
use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given
◆ initialize()
StatusCode AthSequencer::initialize |
( |
| ) |
|
|
overridevirtual |
Initialization of a sequencer.
Typically things like histogram creation, setting up of data structures etc, should be done here. If a sequence has properties specified in the job options file, they will be set to the requested values BEFORE the initialize() method is invoked.
Definition at line 51 of file AthSequencer.cxx.
55 if ( RUNNING_ON_VALGRIND ) {
56 ATH_MSG_WARNING (
"### detected running inside Valgrind, disabling algorithm timeout ###");
61 ATH_MSG_ERROR (
"Unable to configure one or more sequencer members ");
62 return StatusCode::FAILURE;
68 for (Gaudi::Algorithm* theAlgorithm : *subAlgorithms()) {
69 if (!theAlgorithm->sysInitialize( ).isSuccess()) {
71 << theAlgorithm->type() <<
"/" << theAlgorithm->name());
72 sc= StatusCode::FAILURE;
80 ATH_MSG_DEBUG(
"Allow dynamic data consumers to update their data dependencies.");
◆ inputHandles()
Return this algorithm's input handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ isStopOverride()
bool AthSequencer::isStopOverride |
( |
| ) |
const |
|
virtual |
◆ membershipHandler()
void AthSequencer::membershipHandler |
( |
Gaudi::Details::PropertyBase & |
theProp | ) |
|
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
Return this algorithm's output handles.
We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.
◆ reinitialize()
StatusCode AthSequencer::reinitialize |
( |
| ) |
|
|
overridevirtual |
AthSequencer Reinitialization.
Definition at line 91 of file AthSequencer.cxx.
99 for (Gaudi::Algorithm* theAlgorithm : *subAlgorithms()) {
100 if ( theAlgorithm->isEnabled( ) ) {
101 if (theAlgorithm->sysReinitialize( ).isFailure()) {
103 << theAlgorithm->type () <<
"/"
104 << theAlgorithm->name());
105 sc = StatusCode::FAILURE;
◆ remove() [1/3]
StatusCode AthSequencer::remove |
( |
const std::string & |
algname, |
|
|
std::vector< Gaudi::Algorithm * > * |
theAlgs |
|
) |
| |
|
protected |
Remove the specified algorithm from the sequencer.
Definition at line 398 of file AthSequencer.cxx.
402 return StatusCode::FAILURE;
◆ remove() [2/3]
StatusCode AthSequencer::remove |
( |
const std::string & |
name | ) |
|
◆ remove() [3/3]
StatusCode AthSequencer::remove |
( |
Gaudi::Algorithm * |
pAlgorithm | ) |
|
Remove the specified algorithm from the sequencer.
Definition at line 261 of file AthSequencer.cxx.
263 return remove (pAlgorithm->name());
◆ renounce()
◆ renounceArray()
◆ resetExecuted()
void AthSequencer::resetExecuted |
( |
const EventContext & |
ctx | ) |
const |
|
virtual |
Reset the AthSequencer executed state for the current event.
Definition at line 229 of file AthSequencer.cxx.
231 execState(ctx).reset();
235 for (Gaudi::Algorithm* theAlgorithm : *subAlgorithms()) {
236 theAlgorithm->execState(ctx).reset();
◆ start()
StatusCode AthSequencer::start |
( |
| ) |
|
|
overridevirtual |
Start (from INITIALIZED to RUNNING).
IStateful::start
Definition at line 197 of file AthSequencer.cxx.
201 for (Gaudi::Algorithm* theAlgorithm : *subAlgorithms()) {
202 if (!theAlgorithm->sysStart( ).isSuccess()) {
204 << theAlgorithm->type () <<
"/"
205 << theAlgorithm->name());
206 sc = StatusCode::FAILURE;
◆ stop()
StatusCode AthSequencer::stop |
( |
| ) |
|
|
overridevirtual |
Stop (from RUNNING to INITIALIZED).
Definition at line 213 of file AthSequencer.cxx.
217 for (Gaudi::Algorithm* theAlgorithm : *subAlgorithms()) {
218 if (theAlgorithm->sysStop( ).isFailure()) {
220 << theAlgorithm->type () <<
"/"
221 << theAlgorithm->name());
222 sc = StatusCode::FAILURE;
◆ sysInitialize()
Perform system initialization for an algorithm.
We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_clidSvc
◆ m_detStore
◆ m_evtStore
◆ m_ignoreFilter
Gaudi::Property<bool> AthSequencer::m_ignoreFilter |
|
private |
Initial value:{this, "IgnoreFilterPassed", false,
"Always continue sequence ignoring filterPassed of member algorithms"}
Definition at line 184 of file AthSequencer.h.
◆ m_maxPass
const unsigned int AthSequencer::m_maxPass {100} |
|
private |
◆ m_modeOR
Gaudi::Property<bool> AthSequencer::m_modeOR |
|
private |
Initial value:{this, "ModeOR", false,
"Use OR logic instead of AND"}
Definition at line 181 of file AthSequencer.h.
◆ m_names
Gaudi::Property<std::vector<std::string> > AthSequencer::m_names |
|
private |
Initial value:{this, "Members",{},
"Algorithm names (of the form '<cppType>/<instanceName>')","SubAlgorithm"}
Definition at line 178 of file AthSequencer.h.
◆ m_runPostInitialize
Gaudi::Property<bool> AthSequencer::m_runPostInitialize |
|
private |
Initial value:{this, "ProcessDynamicDataDependencies", false,
"Run the post initialization step, to dynamically create and gather extra data dependencies. "
"Should be enabled for the top most sequence."}
Definition at line 200 of file AthSequencer.h.
◆ m_sequential
Gaudi::Property<bool> AthSequencer::m_sequential |
|
private |
Initial value:{this, "Sequential", false,
"Concurrent or (strict) Sequential ordering of algorithms"}
Definition at line 190 of file AthSequencer.h.
◆ m_stopOverride
Gaudi::Property<bool> AthSequencer::m_stopOverride |
|
private |
Initial value:{this, "StopOverride", false,
"Continue even if algorithm filter fails"}
Definition at line 187 of file AthSequencer.h.
◆ m_timeout
Gaudi::Property<double> AthSequencer::m_timeout |
|
private |
Initial value:{this, "TimeOut", 0,
"Abort job after one algorithm or sequence reaches the time out. Timeout given in Nanoseconds "
"(official ATLAS units), despite its millisecond resolution"}
Definition at line 193 of file AthSequencer.h.
◆ m_timeoutMilliseconds
unsigned int AthSequencer::m_timeoutMilliseconds {0} |
|
private |
◆ m_undeclaredOutputData
Gaudi::Property<std::vector<std::string> > AthSequencer::m_undeclaredOutputData |
|
private |
Initial value:{this, "ExtraDataForDynamicConsumers", {},
"Pass these extra output data IDs, which are not declared by any of the algorithms or tools, to dynamic data consumers."}
Definition at line 197 of file AthSequencer.h.
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
StatusCode append(Gaudi::Algorithm *pAlgorithm)
Append an algorithm to the sequencer.
ServiceHandle< IClassIDSvc > m_clidSvc
bool passed(DecisionID id, const DecisionIDContainer &idSet)
checks if required decision ID is in the set of IDs in the container
Helper class to gather all declared data IDs and propagate them to components which declare data depe...
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
StatusCode decodeMemberNames()
Decode Member Name list.
const std::string & algName(ID id)
Converts a JetAlgorithmType::ID into a string.
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool msgLvl(const MSG::Level lvl) const
const unsigned int m_maxPass
virtual void setOwner(IDataHandleHolder *o)=0
Gaudi::Property< bool > m_modeOR
Gaudi::Property< bool > m_runPostInitialize
Gaudi::Property< std::vector< std::string > > m_undeclaredOutputData
thread_local std::unique_ptr< Athena::AlgorithmTimer > s_abortTimer
timer will abort job once timeout for any algorithm or sequence is reached
::StatusCode StatusCode
StatusCode definition for legacy code.
Gaudi::Property< bool > m_ignoreFilter
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
void membershipHandler(Gaudi::Details::PropertyBase &theProp)
"Members" property handler
virtual void renounce()=0
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...
StatusCode remove(Gaudi::Algorithm *pAlgorithm)
Remove the specified algorithm from the sequencer.
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Gaudi::Property< std::vector< std::string > > m_names
StatusCode executeAlgorithm(Gaudi::Algorithm *theAlgorithm, const EventContext &ctx) const
Run one algorithm.
StatusCode createAndAppend(const std::string &type, const std::string &name, Gaudi::Algorithm *&pAlgorithm)
Create a algorithm and append it to the sequencer.
#define ATH_MSG_WARNING(x)
StatusCode decodeNames(Gaudi::Property< std::vector< std::string >> &theNames, std::vector< Gaudi::Algorithm * > *theAlgs)
Decode algorithm names, creating or appending algorithms as appropriate.
unsigned int m_timeoutMilliseconds
timeout converted to ms
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
void updateDataNeeds(unsigned int max_pass, MsgStream &out)
Update the data dependencies of all components which dynamically declare tehm.
Gaudi::Property< bool > m_stopOverride
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
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.
Gaudi::Property< double > m_timeout