![]() |
The Gaudi Framework
master (ff829712)
|
A Sequencer is essentially a list of Algorithms and is responsible for their management. More...
#include </builds/gaudi/Gaudi/GaudiKernel/include/Gaudi/Sequencer.h>
Public Member Functions | |
StatusCode | initialize () override |
Initialization of a sequencer. | |
StatusCode | reinitialize () override |
Sequencer Reinitialization. | |
StatusCode | start () override |
Sequencer finalization. | |
StatusCode | execute (const EventContext &ctx) const override |
The actions to be performed by the sequencer on an event. | |
StatusCode | stop () override |
Sequencer stop. | |
StatusCode | finalize () override |
Sequencer finalization. | |
bool | branchFilterPassed (const EventContext &ctx) const |
Was the branch filter passed for the last event? | |
void | setBranchFilterPassed (const EventContext &ctx, bool state) const |
Set the branch filter passed flag for the last event. | |
StatusCode | append (Gaudi::Algorithm *pAlgorithm) |
Append an algorithm to the sequencer. | |
StatusCode | appendToBranch (Gaudi::Algorithm *pAlgorithm) |
Append an algorithm to the sequencer branch. | |
StatusCode | createAndAppend (const std::string &type, const std::string &name, Gaudi::Algorithm *&pAlgorithm) |
Create a algorithm and append it to the sequencer. | |
StatusCode | createAndAppendToBranch (const std::string &type, const std::string &name, Gaudi::Algorithm *&pAlgorithm) |
Create a algorithm and append it to the sequencer branch. | |
StatusCode | remove (Gaudi::Algorithm *pAlgorithm) |
Remove the specified algorithm from the sequencer. | |
StatusCode | remove (const std::string &name) |
StatusCode | removeFromBranch (Gaudi::Algorithm *pAlgorithm) |
StatusCode | removeFromBranch (const std::string &name) |
const std::vector< Gaudi::Algorithm * > & | branchAlgorithms () const |
List of branch algorithms. | |
std::vector< Gaudi::Algorithm * > & | branchAlgorithms () |
StatusCode | decodeMemberNames () |
Decode Member Name list. | |
StatusCode | decodeBranchMemberNames () |
Decode branch member name list. | |
std::ostream & | toControlFlowExpression (std::ostream &os) const override |
Produce string representation of the control flow expression. | |
![]() | |
bool | isSequence () const override final |
Are we a Sequence? | |
StatusCode | createSubAlgorithm (const std::string &type, const std::string &name, Algorithm *&pSubAlg) |
Create a sub algorithm. | |
const std::vector< Algorithm * > * | subAlgorithms () const |
List of sub-algorithms. Returns a pointer to a vector of (sub) Algorithms. | |
std::vector< Algorithm * > * | subAlgorithms () |
List of sub-algorithms. Returns a pointer to a vector of (sub) Algorithms. | |
StatusCode | start () override |
System start. | |
StatusCode | initialize () override |
Initialization method invoked by the framework. | |
StatusCode | reinitialize () override |
Reinitialization method invoked by the framework. | |
StatusCode | restart () override |
Restart method invoked by the framework. | |
StatusCode | stop () override |
System stop. | |
StatusCode | finalize () override |
System finalization. | |
void | acceptDHVisitor (IDataHandleVisitor *) const override |
Algorithm (std::string name, ISvcLocator *svcloc, std::string version=PACKAGE_VERSION) | |
Constructor. | |
![]() | |
Algorithm (std::string name, ISvcLocator *svcloc, std::string version=PACKAGE_VERSION) | |
Constructor. | |
StatusCode | sysStart () override |
Reinitialization method invoked by the framework. | |
StatusCode | sysInitialize () override |
Initialization method invoked by the framework. | |
StatusCode | sysReinitialize () override |
Reinitialization method invoked by the framework. | |
StatusCode | sysRestart () override |
Restart method invoked by the framework. | |
StatusCode | sysExecute (const EventContext &ctx) override |
The actions to be performed by the algorithm on an event. | |
StatusCode | sysStop () override |
System stop. | |
StatusCode | sysFinalize () override |
System finalization. | |
const std::string & | name () const override |
The identifying name of the algorithm object. | |
const Gaudi::StringKey & | nameKey () const override |
const std::string & | type () const override |
The type of the algorithm object. | |
void | setType (std::string type) override |
const std::string & | version () const override |
unsigned int | index () const override |
StatusCode | configure () override |
Dummy implementation of IStateful::configure() method. | |
StatusCode | terminate () override |
Dummy implementation of IStateful::terminate() method. | |
StatusCode | initialize () override |
the default (empty) implementation of IStateful::initialize() method | |
StatusCode | start () override |
the default (empty) implementation of IStateful::start() method | |
StatusCode | stop () override |
the default (empty) implementation of IStateful::stop() method | |
StatusCode | finalize () override |
the default (empty) implementation of IStateful::finalize() method | |
StatusCode | reinitialize () override |
the default (empty) implementation of IStateful::reinitialize() method | |
StatusCode | restart () override |
the default (empty) implementation of IStateful::restart() method | |
Gaudi::StateMachine::State | FSMState () const override |
returns the current state of the algorithm | |
Gaudi::StateMachine::State | targetFSMState () const override |
returns the state the algorithm will be in after the ongoing transition | |
bool | isEnabled () const override |
Is this algorithm enabled or disabled? | |
bool | isSequence () const override |
Are we a Sequence? | |
unsigned int | errorCount () const |
Get the number of failures of the algorithm. | |
SmartIF< IService > | service (std::string_view name, const bool createIf=true, const bool quiet=false) const |
Return a pointer to the service identified by name (or "type/name") | |
template<class T> | |
SmartIF< T > | service (std::string_view name, bool createIf=true, bool quiet=false) const |
SmartIF< IAuditorSvc > & | auditorSvc () const |
The standard auditor service.May not be invoked before sysInitialize() has been invoked. | |
SmartIF< IChronoStatSvc > & | chronoSvc () const |
The standard Chrono & Stat service, Return a pointer to the service if present. | |
SmartIF< IDataProviderSvc > & | detSvc () const |
The standard detector data service. | |
SmartIF< IConversionSvc > & | detCnvSvc () const |
The standard detector data persistency conversion service. | |
SmartIF< IDataProviderSvc > & | eventSvc () const |
The standard event data service. | |
SmartIF< IDataProviderSvc > & | evtSvc () const |
shortcut for method eventSvc | |
SmartIF< IConversionSvc > & | eventCnvSvc () const |
The standard event data persistency conversion service. | |
SmartIF< IHistogramSvc > & | histoSvc () const |
The standard histogram service. | |
SmartIF< INTupleSvc > & | ntupleSvc () const |
The standard N tuple service. | |
SmartIF< IRndmGenSvc > & | randSvc () const |
The standard RandomGen service, Return a pointer to the service if present. | |
SmartIF< IToolSvc > & | toolSvc () const |
The standard ToolSvc service, Return a pointer to the service if present. | |
SmartIF< IExceptionSvc > & | exceptionSvc () const |
Get the exception Service. | |
SmartIF< IAlgContextSvc > & | contextSvc () const |
get Algorithm Context Service | |
SmartIF< ITimelineSvc > & | timelineSvc () const |
SmartIF< ISvcLocator > & | serviceLocator () const override |
The standard service locator. | |
SmartIF< ISvcLocator > & | svcLoc () const |
shortcut for method serviceLocator | |
SmartIF< IHiveWhiteBoard > & | whiteboard () const |
SmartIF< IAlgExecStateSvc > & | algExecStateSvc () const |
bool | registerContext () const |
register for Algorithm Context Service? | |
template<class T> | |
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, ToolHandle< T > &hndl, const std::string &doc="none") |
template<class T> | |
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, ToolHandleArray< T > &hndlArr, const std::string &doc="none") |
SmartIF< IMonitorSvc > & | monitorSvc () const |
Access the monitor service. | |
template<class T> | |
void | declareInfo (const std::string &name, const T &var, const std::string &desc) const |
Declare monitoring information. | |
void | declareInfo (const std::string &name, const std::string &format, const void *var, int size, const std::string &desc) const |
Declare monitoring information (special case) | |
void | acceptDHVisitor (IDataHandleVisitor *) const override |
void | registerTool (IAlgTool *tool) const |
void | deregisterTool (IAlgTool *tool) const |
template<class T> | |
StatusCode | declareTool (ToolHandle< T > &handle, bool createIf=true) |
template<class T> | |
StatusCode | declareTool (ToolHandle< T > &handle, const std::string &toolTypeAndName, bool createIf=true) |
template<class T> | |
void | addToolsArray (ToolHandleArray< T > &hndlArr) |
const std::vector< IAlgTool * > & | tools () const |
bool | isAsynchronous () const |
void | setAsynchronous (bool value) |
unsigned int | cardinality () const override |
Return the cardinality. | |
const std::vector< std::string > & | neededResources () const override |
AlgExecStateRef | execState (const EventContext &ctx) const override |
get the AlgExecStateRef of current algorithm Actually a small wrapper around it, thus the plain object return type | |
std::ostream & | toControlFlowExpression (std::ostream &os) const override |
Produce string represention of the control flow expression. | |
![]() | |
std::vector< Gaudi::DataHandle * > | inputHandles () const override |
std::vector< Gaudi::DataHandle * > | outputHandles () const override |
virtual const DataObjIDColl & | extraInputDeps () const override |
virtual const DataObjIDColl & | extraOutputDeps () const override |
void | declare (Gaudi::DataHandle &handle) override |
void | renounce (Gaudi::DataHandle &handle) override |
bool | renounceInput (const DataObjID &id) override |
const DataObjIDColl & | inputDataObjs () const override |
const DataObjIDColl & | outputDataObjs () const override |
void | addDependency (const DataObjID &id, const Gaudi::DataHandle::Mode &mode) override |
![]() | |
void const * | i_cast (const InterfaceID &tid) const override |
Implementation of IInterface::i_cast. | |
StatusCode | queryInterface (const InterfaceID &ti, void **pp) override |
Implementation of IInterface::queryInterface. | |
std::vector< std::string > | getInterfaceNames () const override |
Implementation of IInterface::getInterfaceNames. | |
![]() | |
StatusCode | setProperty (const Gaudi::Details::PropertyBase &p) |
Set the property from a property. | |
StatusCode | setProperty (const std::string &name, const char *v) |
Special case for string literals. | |
StatusCode | setProperty (const std::string &name, const std::string &v) |
Special case for std::string. | |
StatusCode | setProperty (const std::string &name, const TYPE &value) |
set the property form the value | |
PropertyHolder ()=default | |
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Details::PropertyBase &prop) |
Declare a property. | |
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, TYPE &value, const std::string &doc="none") |
Helper to wrap a regular data member and use it as a regular property. | |
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, Gaudi::Property< TYPE, VERIFIER, HANDLERS > &prop, const std::string &doc="none") |
Declare a PropertyBase instance setting name and documentation. | |
Gaudi::Details::PropertyBase * | declareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="") |
Declare a remote property. | |
StatusCode | setProperty (const std::string &name, const Gaudi::Details::PropertyBase &p) override |
set the property from another property with a different name | |
StatusCode | setProperty (const std::string &s) override |
set the property from the formatted string | |
StatusCode | setProperty (const Gaudi::Details::PropertyBase &p) |
Set the property from a property. | |
StatusCode | setProperty (const std::string &name, const char *v) |
Special case for string literals. | |
StatusCode | setProperty (const std::string &name, const std::string &v) |
Special case for std::string. | |
StatusCode | setProperty (const std::string &name, const TYPE &value) |
set the property form the value | |
StatusCode | setPropertyRepr (const std::string &n, const std::string &r) override |
set the property from name and value string representation | |
StatusCode | getProperty (Gaudi::Details::PropertyBase *p) const override |
get the property | |
const Gaudi::Details::PropertyBase & | getProperty (std::string_view name) const override |
get the property by name | |
StatusCode | getProperty (std::string_view n, std::string &v) const override |
convert the property to the string | |
const std::vector< Gaudi::Details::PropertyBase * > & | getProperties () const override |
get all properties | |
bool | hasProperty (std::string_view name) const override |
Return true if we have a property with the given name. | |
Gaudi::Details::PropertyBase * | property (std::string_view name) const |
\fixme property and bindPropertiesTo should be protected | |
void | bindPropertiesTo (Gaudi::Interfaces::IOptionsSvc &optsSvc) |
PropertyHolder (const PropertyHolder &)=delete | |
PropertyHolder & | operator= (const PropertyHolder &)=delete |
![]() | |
MSG::Level | msgLevel () const |
get the cached level (originally extracted from the embedded MsgStream) | |
bool | msgLevel (MSG::Level lvl) const |
get the output level from the embedded MsgStream | |
![]() | |
virtual | ~CommonMessagingBase ()=default |
Virtual destructor. | |
const SmartIF< IMessageSvc > & | msgSvc () const |
The standard message service. | |
MsgStream & | msgStream () const |
Return an uninitialized MsgStream. | |
MsgStream & | msgStream (const MSG::Level level) const |
Predefined configurable message stream for the efficient printouts. | |
MsgStream & | always () const |
shortcut for the method msgStream(MSG::ALWAYS) | |
MsgStream & | fatal () const |
shortcut for the method msgStream(MSG::FATAL) | |
MsgStream & | err () const |
shortcut for the method msgStream(MSG::ERROR) | |
MsgStream & | error () const |
shortcut for the method msgStream(MSG::ERROR) | |
MsgStream & | warning () const |
shortcut for the method msgStream(MSG::WARNING) | |
MsgStream & | info () const |
shortcut for the method msgStream(MSG::INFO) | |
MsgStream & | debug () const |
shortcut for the method msgStream(MSG::DEBUG) | |
MsgStream & | verbose () const |
shortcut for the method msgStream(MSG::VERBOSE) | |
MsgStream & | msg () const |
shortcut for the method msgStream(MSG::INFO) | |
Protected Member Functions | |
StatusCode | append (Gaudi::Algorithm *pAlgorithm, std::vector< Gaudi::Algorithm * > &theAlgs) |
Append an algorithm to the sequencer. | |
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. | |
StatusCode | decodeNames (Gaudi::Property< std::vector< std::string > > &theNames, std::vector< Gaudi::Algorithm * > &theAlgs, std::vector< bool > &theLogic) |
Decode algorithm names, creating or appending algorithms as appropriate. | |
StatusCode | execute (const EventContext &ctx, const std::vector< Gaudi::Algorithm * > &theAlgs, const std::vector< bool > &theLogic, Gaudi::Algorithm *&lastAlgorithm, std::size_t first=0) const |
Execute the members in the specified list. | |
StatusCode | executeMember (Gaudi::Algorithm *theAlgorithm, const EventContext &context) const |
Execute member algorithm. | |
StatusCode | remove (const std::string &algname, std::vector< Gaudi::Algorithm * > &theAlgs) |
Remove the specified algorithm from the sequencer. | |
Sequencer (const Sequencer &a)=delete | |
Sequencer & | operator= (const Sequencer &rhs)=delete |
![]() | |
std::vector< IAlgTool * > & | tools () |
bool | isInitialized () const override |
Has the Algorithm already been initialized? | |
bool | isFinalized () const override |
Has the Algorithm already been finalized? | |
void | setIndex (const unsigned int &idx) override |
set instantiation index of Alg | |
bool | isReEntrant () const override |
![]() | |
void | initDataHandleHolder () |
initializes all handles - called by the sysInitialize method of any descendant of this | |
![]() | |
MSG::Level | setUpMessaging () const |
Set up local caches. | |
MSG::Level | resetMessaging () |
Reinitialize internal states. | |
void | updateMsgStreamOutputLevel (int level) |
Update the output level of the cached MsgStream. | |
Private Attributes | |
Gaudi::Property< std::vector< std::string > > | m_names |
Gaudi::Property< std::vector< std::string > > | m_branchNames |
Gaudi::Property< bool > | m_shortCircuit { this, "ShortCircuit", true, "stop processing as soon as possible" } |
Gaudi::Property< bool > | m_sequential { this, "Sequential", false, "execute members one at a time" } |
Gaudi::Property< bool > | m_modeOR { this, "ModeOR", false, "use OR logic instead of AND" } |
Gaudi::Property< bool > | m_ignoreFilter { this, "IgnoreFilterPassed", false, "always continue" } |
Gaudi::Property< bool > | m_invert { this, "Invert", false, "invert the logic result of the sequencer" } |
Gaudi::Property< std::vector< std::string > > | m_vetoObjs |
Gaudi::Property< std::vector< std::string > > | m_requireObjs |
std::vector< bool > | m_isInverted |
std::vector< Gaudi::Algorithm * > | m_branchAlgs |
std::vector< bool > | m_isBranchInverted |
std::mutex | m_branchFilterMutex |
std::map< EventContext::ContextID_t, bool > | m_branchFilterPassed |
A Sequencer 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 Sequencer assumes the same filtered state as the last member.
Definition at line 28 of file Sequencer.h.
|
protecteddelete |
StatusCode Gaudi::Sequencer::append | ( | Gaudi::Algorithm * | pAlgorithm | ) |
Append an algorithm to the sequencer.
Definition at line 161 of file Sequencer.cpp.
|
protected |
Append an algorithm to the sequencer.
Protected Member Functions.
Definition at line 205 of file Sequencer.cpp.
StatusCode Gaudi::Sequencer::appendToBranch | ( | Gaudi::Algorithm * | pAlgorithm | ) |
Append an algorithm to the sequencer branch.
Definition at line 163 of file Sequencer.cpp.
std::vector< Gaudi::Algorithm * > & Gaudi::Sequencer::branchAlgorithms | ( | ) |
Definition at line 189 of file Sequencer.cpp.
const std::vector< Gaudi::Algorithm * > & Gaudi::Sequencer::branchAlgorithms | ( | ) | const |
List of branch algorithms.
These are the algorithms that would get executed if a filter algorithm indicated a failure. The branch is located within the main sequence by the first element, which is the filter algorithm.
Definition at line 187 of file Sequencer.cpp.
bool Gaudi::Sequencer::branchFilterPassed | ( | const EventContext & | ctx | ) | const |
Was the branch filter passed for the last event?
Definition at line 151 of file Sequencer.cpp.
StatusCode Gaudi::Sequencer::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 167 of file Sequencer.cpp.
|
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 215 of file Sequencer.cpp.
StatusCode Gaudi::Sequencer::createAndAppendToBranch | ( | const std::string & | type, |
const std::string & | name, | ||
Gaudi::Algorithm *& | pAlgorithm ) |
Create a algorithm and append it to the sequencer branch.
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 172 of file Sequencer.cpp.
StatusCode Gaudi::Sequencer::decodeBranchMemberNames | ( | ) |
Decode branch member name list.
Definition at line 196 of file Sequencer.cpp.
StatusCode Gaudi::Sequencer::decodeMemberNames | ( | ) |
Decode Member Name list.
Definition at line 191 of file Sequencer.cpp.
|
protected |
Decode algorithm names, creating or appending algorithms as appropriate.
Definition at line 235 of file Sequencer.cpp.
|
override |
The actions to be performed by the sequencer on an event.
Definition at line 71 of file Sequencer.cpp.
|
protected |
Execute the members in the specified list.
Definition at line 336 of file Sequencer.cpp.
|
protected |
Execute member algorithm.
Definition at line 399 of file Sequencer.cpp.
|
override |
Sequencer finalization.
Definition at line 116 of file Sequencer.cpp.
|
override |
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 28 of file Sequencer.cpp.
|
override |
Sequencer Reinitialization.
Definition at line 58 of file Sequencer.cpp.
|
protected |
Remove the specified algorithm from the sequencer.
Definition at line 409 of file Sequencer.cpp.
StatusCode Gaudi::Sequencer::remove | ( | const std::string & | name | ) |
Definition at line 179 of file Sequencer.cpp.
StatusCode Gaudi::Sequencer::remove | ( | Gaudi::Algorithm * | pAlgorithm | ) |
Remove the specified algorithm from the sequencer.
Definition at line 177 of file Sequencer.cpp.
StatusCode Gaudi::Sequencer::removeFromBranch | ( | const std::string & | name | ) |
Definition at line 185 of file Sequencer.cpp.
StatusCode Gaudi::Sequencer::removeFromBranch | ( | Gaudi::Algorithm * | pAlgorithm | ) |
Definition at line 181 of file Sequencer.cpp.
void Gaudi::Sequencer::setBranchFilterPassed | ( | const EventContext & | ctx, |
bool | state ) const |
Set the branch filter passed flag for the last event.
Definition at line 156 of file Sequencer.cpp.
|
override |
Sequencer finalization.
Definition at line 126 of file Sequencer.cpp.
|
override |
|
override |
Produce string representation of the control flow expression.
Definition at line 426 of file Sequencer.cpp.
|
private |
Definition at line 204 of file Sequencer.h.
|
mutableprivate |
Definition at line 207 of file Sequencer.h.
|
mutableprivate |
Definition at line 208 of file Sequencer.h.
|
private |
Definition at line 182 of file Sequencer.h.
|
private |
Definition at line 195 of file Sequencer.h.
|
private |
Definition at line 196 of file Sequencer.h.
|
private |
Definition at line 205 of file Sequencer.h.
|
private |
Definition at line 203 of file Sequencer.h.
|
private |
Definition at line 194 of file Sequencer.h.
|
private |
Definition at line 173 of file Sequencer.h.
|
private |
Definition at line 200 of file Sequencer.h.
|
private |
Definition at line 193 of file Sequencer.h.
|
private |
Definition at line 192 of file Sequencer.h.
|
private |
Definition at line 198 of file Sequencer.h.