The Gaudi Framework  master (82fdf313)
Loading...
Searching...
No Matches
Gaudi::Algorithm Class Reference

Base class from which all concrete algorithm classes should be derived. More...

#include </builds/gaudi/Gaudi/GaudiKernel/include/Gaudi/Algorithm.h>

Inheritance diagram for Gaudi::Algorithm:
Collaboration diagram for Gaudi::Algorithm:

Public Types

typedef Gaudi::PluginService::Factory< IAlgorithm *(const std::string &, ISvcLocator *)> Factory
 
- Public Types inherited from extends< PropertyHolder< CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > > >, IDataHandleHolder >
using base_class
 Typedef to this class.
 
using extend_interfaces_base
 Typedef to the base of this class.
 
- Public Types inherited from PropertyHolder< CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > > >
using PropertyHolderImpl
 Typedef used to refer to this class from derived classes, as in.
 
- Public Types inherited from CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > >
using base_class
 
- Public Types inherited from extend_interfaces< Interfaces... >
using ext_iids
 take union of the ext_iids of all Interfaces...
 

Public Member Functions

 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::StringKeynameKey () 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< IServiceservice (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::PropertyBasedeclareProperty (const std::string &name, ToolHandle< T > &hndl, const std::string &doc="none")
 
template<class T>
Gaudi::Details::PropertyBasedeclareProperty (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.
 
- Public Member Functions inherited from DataHandleHolderBase< PropertyHolder< CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > > > >
std::vector< Gaudi::DataHandle * > inputHandles () const override
 
std::vector< Gaudi::DataHandle * > outputHandles () const override
 
virtual const DataObjIDCollextraInputDeps () const override
 
virtual const DataObjIDCollextraOutputDeps () const override
 
void declare (Gaudi::DataHandle &handle) override
 
void renounce (Gaudi::DataHandle &handle) override
 
bool renounceInput (const DataObjID &id) override
 
const DataObjIDCollinputDataObjs () const override
 
const DataObjIDColloutputDataObjs () const override
 
void addDependency (const DataObjID &id, const Gaudi::DataHandle::Mode &mode) override
 
- Public Member Functions inherited from extends< PropertyHolder< CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > > >, IDataHandleHolder >
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.
 
- Public Member Functions inherited from PropertyHolder< CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > > >
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::PropertyBasedeclareProperty (Gaudi::Details::PropertyBase &prop)
 Declare a property.
 
Gaudi::Details::PropertyBasedeclareProperty (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::PropertyBasedeclareProperty (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::PropertyBasedeclareRemoteProperty (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::PropertyBasegetProperty (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::PropertyBaseproperty (std::string_view name) const
 \fixme property and bindPropertiesTo should be protected
 
void bindPropertiesTo (Gaudi::Interfaces::IOptionsSvc &optsSvc)
 
 PropertyHolder (const PropertyHolder &)=delete
 
PropertyHolderoperator= (const PropertyHolder &)=delete
 
- Public Member Functions inherited from CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > >
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
 
- Public Member Functions inherited from CommonMessagingBase
virtual ~CommonMessagingBase ()=default
 Virtual destructor.
 
const SmartIF< IMessageSvc > & msgSvc () const
 The standard message service.
 
MsgStreammsgStream () const
 Return an uninitialized MsgStream.
 
MsgStreammsgStream (const MSG::Level level) const
 Predefined configurable message stream for the efficient printouts.
 
MsgStreamalways () const
 shortcut for the method msgStream(MSG::ALWAYS)
 
MsgStreamfatal () const
 shortcut for the method msgStream(MSG::FATAL)
 
MsgStreamerr () const
 shortcut for the method msgStream(MSG::ERROR)
 
MsgStreamerror () const
 shortcut for the method msgStream(MSG::ERROR)
 
MsgStreamwarning () const
 shortcut for the method msgStream(MSG::WARNING)
 
MsgStreaminfo () const
 shortcut for the method msgStream(MSG::INFO)
 
MsgStreamdebug () const
 shortcut for the method msgStream(MSG::DEBUG)
 
MsgStreamverbose () const
 shortcut for the method msgStream(MSG::VERBOSE)
 
MsgStreammsg () const
 shortcut for the method msgStream(MSG::INFO)
 

Public Attributes

friend AlgorithmManager
 

Protected Member Functions

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
 
- Protected Member Functions inherited from DataHandleHolderBase< PropertyHolder< CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > > > >
void initDataHandleHolder ()
 initializes all handles - called by the sysInitialize method of any descendant of this
 
- Protected Member Functions inherited from CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > >
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.
 

Protected Attributes

std::unique_ptr< IDataHandleVisitorm_updateDataHandles
 Hook for for derived classes to provide a custom visitor for data handles.
 
- Protected Attributes inherited from DataHandleHolderBase< PropertyHolder< CommonMessaging< implements< IAlgorithm, IDataHandleHolder, IProperty, IStateful > > > >
DataObjIDColl m_inputDataObjs
 
DataObjIDColl m_outputDataObjs
 

Private Member Functions

void initToolHandles () const
 
unsigned int maxErrors () const
 
template<typename IFace>
SmartIF< IFace > & get_svc_ (SmartIF< IFace > &p, const char *service_name) const
 
 Algorithm (const Algorithm &)=delete
 delete copy constructor: NO COPY ALLOWED
 
Algorithmoperator= (const Algorithm &)=delete
 delete assignment operator: NO ASSIGNMENT ALLOWED
 

Private Attributes

Gaudi::StringKey m_name
 Algorithm's name for identification.
 
std::string m_type
 Algorithm's type.
 
std::string m_version
 Algorithm's version.
 
unsigned int m_index = 0
 Algorithm's index.
 
AlgExecStateRef::AlgKey m_execSvcKey
 identifier of this algorithm in the AlgExecStateSvc
 
std::vector< IAlgTool * > m_tools
 
std::vector< BaseToolHandle * > m_toolHandles
 
std::vector< GaudiHandleArrayBase * > m_toolHandleArrays
 
SmartIF< IMessageSvcm_MS
 Message service.
 
SmartIF< IDataProviderSvcm_EDS
 Event data service.
 
SmartIF< IHiveWhiteBoardm_WB
 Event data service (whiteboard)
 
SmartIF< IConversionSvcm_ECS
 Event conversion service.
 
SmartIF< IDataProviderSvcm_DDS
 Detector data service.
 
SmartIF< IConversionSvcm_DCS
 Detector conversion service.
 
SmartIF< IHistogramSvcm_HDS
 Histogram data service.
 
SmartIF< INTupleSvcm_NTS
 N tuple service.
 
SmartIF< IChronoStatSvcm_CSS
 Chrono & Stat Service.
 
SmartIF< IRndmGenSvcm_RGS
 Random Number Generator Service.
 
SmartIF< IExceptionSvcm_EXS
 Exception Handler Service.
 
SmartIF< IAuditorSvcm_pAuditorSvc
 Auditor Service.
 
SmartIF< IToolSvcm_ptoolSvc
 ToolSvc Service.
 
SmartIF< IMonitorSvcm_pMonitorSvc
 Online Monitoring Service.
 
SmartIF< IAlgContextSvcm_contextSvc
 Algorithm Context Service.
 
SmartIF< ITimelineSvcm_timelineSvc
 Timeline Service.
 
SmartIF< IAlgExecStateSvcm_aess
 Alg execution state mgr.
 
SmartIF< ISvcLocatorm_pSvcLocator
 Pointer to service locator service.
 
Gaudi::Property< int > m_outputLevel
 
Gaudi::Property< bool > m_isEnabled { this, "Enable", true, "should the algorithm be executed or not" }
 
Gaudi::Property< unsigned int > m_errorMax { this, "ErrorMax", 1, "[[deprecated]] max number of errors" }
 
Gaudi::Property< bool > m_auditorInitialize
 
Gaudi::Property< bool > m_auditorReinitialize
 
Gaudi::Property< bool > m_auditorRestart
 
Gaudi::Property< bool > m_auditorExecute
 
Gaudi::Property< bool > m_auditorFinalize
 
Gaudi::Property< bool > m_auditorStart
 
Gaudi::Property< bool > m_auditorStop { this, "AuditStop", m_auditorInitialize.value(), "trigger auditor on stop()" }
 
Gaudi::Property< bool > m_doTimeline { this, "Timeline", true, "send events to TimelineSvc" }
 
Gaudi::Property< std::string > m_monitorSvcName
 
Gaudi::Property< bool > m_registerContext
 
Gaudi::Property< int > m_cardinality
 
Gaudi::Property< std::vector< std::string > > m_neededResources
 
Gaudi::Property< bool > m_asynchronous
 
Gaudi::Property< bool > m_filterCircDeps
 
bool m_toolHandlesInit = false
 
Gaudi::StateMachine::State m_state = Gaudi::StateMachine::CONFIGURED
 flag indicating whether ToolHandle tools have been added to m_tools
 
Gaudi::StateMachine::State m_targetState = Gaudi::StateMachine::CONFIGURED
 Algorithm has been initialized flag.
 

Detailed Description

Base class from which all concrete algorithm classes should be derived.

In order for a concrete algorithm class to do anything useful the methods initialize(), execute() and finalize() should be overridden.

The base class provides utility methods for accessing standard services (event data service etc.); for declaring properties which may be configured by the job options service; and for creating sub algorithms. The only base class functionality which may be used in the constructor of a concrete algorithm is the declaration of member variables as properties. All other functionality, i.e. the use of services and the creation of sub-algorithms, may be used only in initialize() and afterwards (see the Gaudi user guide).

Author
Paul Maley
Pere Mato
David Quarrie
Date
1998

Definition at line 85 of file Algorithm.h.

Member Typedef Documentation

◆ Factory

typedef Gaudi::PluginService::Factory<IAlgorithm*( const std::string&, ISvcLocator* )> Gaudi::Algorithm::Factory

Definition at line 90 of file Algorithm.h.

Constructor & Destructor Documentation

◆ Algorithm() [1/2]

Gaudi::Algorithm::Algorithm ( std::string name,
ISvcLocator * svcloc,
std::string version = PACKAGE_VERSION )
inline

Constructor.

Parameters
nameThe algorithm object's name
svclocA pointer to a service location service

Definition at line 98 of file Algorithm.h.

99 : m_name( std::move( name ) )
100 , m_version( std::move( version ) ) // incremented by AlgResourcePool
101 , m_pSvcLocator( svcloc ) {}
Gaudi::StringKey m_name
Algorithm's name for identification.
Definition Algorithm.h:424
const std::string & version() const override
const std::string & name() const override
The identifying name of the algorithm object.
SmartIF< ISvcLocator > m_pSvcLocator
Pointer to service locator service.
Definition Algorithm.h:460
std::string m_version
Algorithm's version.
Definition Algorithm.h:426

◆ Algorithm() [2/2]

Gaudi::Algorithm::Algorithm ( const Algorithm & )
privatedelete

delete copy constructor: NO COPY ALLOWED

Member Function Documentation

◆ acceptDHVisitor()

void Gaudi::Algorithm::acceptDHVisitor ( IDataHandleVisitor * vis) const
override

Definition at line 183 of file Algorithm.cpp.

183 {
184 vis->visit( this );
185
186 // loop through tools
187 for ( auto tool : tools() ) vis->visit( dynamic_cast<AlgTool*>( tool ) );
188 }
const std::vector< IAlgTool * > & tools() const
virtual void visit(const IDataHandleHolder *)=0

◆ addToolsArray()

template<class T>
void Gaudi::Algorithm::addToolsArray ( ToolHandleArray< T > & hndlArr)
inline

Definition at line 369 of file Algorithm.h.

369 {
370 m_toolHandleArrays.push_back( &hndlArr );
371 }
std::vector< GaudiHandleArrayBase * > m_toolHandleArrays
Definition Algorithm.h:435

◆ algExecStateSvc()

SmartIF< IAlgExecStateSvc > & Gaudi::Algorithm::algExecStateSvc ( ) const

Definition at line 557 of file Algorithm.cpp.

557{ return get_svc_( m_aess, "AlgExecStateSvc" ); }
SmartIF< IFace > & get_svc_(SmartIF< IFace > &p, const char *service_name) const
SmartIF< IAlgExecStateSvc > m_aess
Alg execution state mgr.
Definition Algorithm.h:458

◆ auditorSvc()

SmartIF< IAuditorSvc > & Gaudi::Algorithm::auditorSvc ( ) const

The standard auditor service.May not be invoked before sysInitialize() has been invoked.

Definition at line 558 of file Algorithm.cpp.

558{ return get_svc_( m_pAuditorSvc, "AuditorSvc" ); }
SmartIF< IAuditorSvc > m_pAuditorSvc
Auditor Service.
Definition Algorithm.h:452

◆ cardinality()

unsigned int Gaudi::Algorithm::cardinality ( ) const
inlineoverride

Return the cardinality.

Definition at line 395 of file Algorithm.h.

395{ return m_cardinality; }
Gaudi::Property< int > m_cardinality
Definition Algorithm.h:498

◆ chronoSvc()

SmartIF< IChronoStatSvc > & Gaudi::Algorithm::chronoSvc ( ) const

The standard Chrono & Stat service, Return a pointer to the service if present.

Definition at line 559 of file Algorithm.cpp.

559{ return get_svc_( m_CSS, "ChronoStatSvc" ); }
SmartIF< IChronoStatSvc > m_CSS
Chrono & Stat Service.
Definition Algorithm.h:449

◆ configure()

StatusCode Gaudi::Algorithm::configure ( )
inlineoverride

Dummy implementation of IStateful::configure() method.

Definition at line 170 of file Algorithm.h.

170{ return StatusCode::SUCCESS; }
constexpr static const auto SUCCESS
Definition StatusCode.h:99

◆ contextSvc()

SmartIF< IAlgContextSvc > & Gaudi::Algorithm::contextSvc ( ) const

get Algorithm Context Service

Definition at line 569 of file Algorithm.cpp.

569{ return get_svc_( m_contextSvc, "AlgContextSvc" ); }
SmartIF< IAlgContextSvc > m_contextSvc
Algorithm Context Service.
Definition Algorithm.h:455

◆ declareInfo() [1/2]

void Gaudi::Algorithm::declareInfo ( const std::string & name,
const std::string & format,
const void * var,
int size,
const std::string & desc ) const
inline

Declare monitoring information (special case)

Parameters
nameMonitoring information name known to the external system
formatFormat information
varMonitoring Listener address
sizeMonitoring Listener address size
descTextual description of the information being monitored

Definition at line 336 of file Algorithm.h.

337 {
338 IMonitorSvc* mS = monitorSvc().get();
339 if ( mS ) mS->declareInfo( name, format, var, size, desc, this );
340 }
GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".
Definition MsgStream.cpp:93
SmartIF< IMonitorSvc > & monitorSvc() const
Access the monitor service.
Definition Algorithm.h:310
virtual void declareInfo(const std::string &name, const bool &var, const std::string &desc, const IInterface *owner)=0
Declare monitoring information.
TYPE * get() const
Get interface pointer.
Definition SmartIF.h:82

◆ declareInfo() [2/2]

template<class T>
void Gaudi::Algorithm::declareInfo ( const std::string & name,
const T & var,
const std::string & desc ) const
inline

Declare monitoring information.

Parameters
nameMonitoring information name known to the external system
varMonitoring Listener address (the item to monitor...)
descTextual description of the information being monitored

Definition at line 324 of file Algorithm.h.

324 {
325 IMonitorSvc* mS = monitorSvc().get();
326 if ( mS ) mS->declareInfo( name, var, desc, this );
327 }

◆ declareProperty() [1/2]

template<class T>
Gaudi::Details::PropertyBase * Gaudi::Algorithm::declareProperty ( const std::string & name,
ToolHandle< T > & hndl,
const std::string & doc = "none" )
inline

Definition at line 286 of file Algorithm.h.

287 {
288 this->declareTool( hndl, hndl.typeAndName() ).ignore();
289 return PropertyHolderImpl::declareProperty( name, hndl, doc );
290 }
StatusCode declareTool(ToolHandle< T > &handle, bool createIf=true)
Definition Algorithm.h:349
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Details::PropertyBase &prop)
const StatusCode & ignore() const
Allow discarding a StatusCode without warning.
Definition StatusCode.h:139
std::string typeAndName() const override
Definition ToolHandle.h:273

◆ declareProperty() [2/2]

template<class T>
Gaudi::Details::PropertyBase * Gaudi::Algorithm::declareProperty ( const std::string & name,
ToolHandleArray< T > & hndlArr,
const std::string & doc = "none" )
inline

Definition at line 295 of file Algorithm.h.

296 {
297 addToolsArray( hndlArr );
298 return PropertyHolderImpl::declareProperty( name, hndlArr, doc );
299 }
void addToolsArray(ToolHandleArray< T > &hndlArr)
Definition Algorithm.h:369

◆ declareTool() [1/2]

template<class T>
StatusCode Gaudi::Algorithm::declareTool ( ToolHandle< T > & handle,
bool createIf = true )
inline

Definition at line 349 of file Algorithm.h.

349 {
350 return this->declareTool( handle, handle.typeAndName(), createIf );
351 }

◆ declareTool() [2/2]

template<class T>
StatusCode Gaudi::Algorithm::declareTool ( ToolHandle< T > & handle,
const std::string & toolTypeAndName,
bool createIf = true )
inline

Definition at line 354 of file Algorithm.h.

354 {
355
356 StatusCode sc = handle.initialize( toolTypeAndName, handle.isPublic() ? nullptr : this, createIf );
357 if ( !sc ) {
358 throw GaudiException{ std::string{ "Cannot create handle for " } +
359 ( handle.isPublic() ? "public" : "private" ) + " tool " + toolTypeAndName,
360 name(), sc };
361 }
362
363 m_toolHandles.push_back( &handle );
364
365 return sc;
366 }
std::vector< BaseToolHandle * > m_toolHandles
Definition Algorithm.h:434
StatusCode initialize(const std::string &toolTypeAndName, const IInterface *parent=nullptr, bool createIf=true)
Definition ToolHandle.h:213
bool isPublic() const noexcept
Definition ToolHandle.h:49

◆ deregisterTool()

void Gaudi::Algorithm::deregisterTool ( IAlgTool * tool) const

Definition at line 642 of file Algorithm.cpp.

642 {
643 std::vector<IAlgTool*>::iterator it = std::find( m_tools.begin(), m_tools.end(), tool );
644 if ( it != m_tools.end() ) {
645 if ( msgLevel( MSG::DEBUG ) ) debug() << "De-Registering tool " << tool->name() << endmsg;
646 m_tools.erase( it );
647 } else {
648 if ( msgLevel( MSG::DEBUG ) ) debug() << "Could not de-register tool " << tool->name() << endmsg;
649 }
650 }
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition MsgStream.h:198
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
std::vector< IAlgTool * > m_tools
Definition Algorithm.h:433
@ DEBUG
Definition IMessageSvc.h:22

◆ detCnvSvc()

SmartIF< IConversionSvc > & Gaudi::Algorithm::detCnvSvc ( ) const

The standard detector data persistency conversion service.

May not be invoked before sysInitialize() has been invoked.

Definition at line 561 of file Algorithm.cpp.

561{ return get_svc_( m_DCS, "DetectorPersistencySvc" ); }
SmartIF< IConversionSvc > m_DCS
Detector conversion service.
Definition Algorithm.h:446

◆ detSvc()

SmartIF< IDataProviderSvc > & Gaudi::Algorithm::detSvc ( ) const

The standard detector data service.

May not be invoked before sysInitialize() has been invoked.

Definition at line 560 of file Algorithm.cpp.

560{ return get_svc_( m_DDS, "DetectorDataSvc" ); }
SmartIF< IDataProviderSvc > m_DDS
Detector data service.
Definition Algorithm.h:445

◆ errorCount()

unsigned int Gaudi::Algorithm::errorCount ( ) const

Get the number of failures of the algorithm.

Definition at line 656 of file Algorithm.cpp.

656{ return m_aess->algErrorCount( static_cast<const IAlgorithm*>( this ) ); }

◆ eventCnvSvc()

SmartIF< IConversionSvc > & Gaudi::Algorithm::eventCnvSvc ( ) const

The standard event data persistency conversion service.

May not be invoked before sysInitialize() has been invoked.

Definition at line 563 of file Algorithm.cpp.

563{ return get_svc_( m_ECS, "EventPersistencySvc" ); }
SmartIF< IConversionSvc > m_ECS
Event conversion service.
Definition Algorithm.h:444

◆ eventSvc()

SmartIF< IDataProviderSvc > & Gaudi::Algorithm::eventSvc ( ) const

The standard event data service.

May not be invoked before sysInitialize() has been invoked.

Definition at line 562 of file Algorithm.cpp.

562{ return get_svc_( m_EDS, "EventDataSvc" ); }
SmartIF< IDataProviderSvc > m_EDS
Event data service.
Definition Algorithm.h:442

◆ evtSvc()

SmartIF< IDataProviderSvc > & Gaudi::Algorithm::evtSvc ( ) const
inline

shortcut for method eventSvc

Definition at line 233 of file Algorithm.h.

233{ return eventSvc(); }
SmartIF< IDataProviderSvc > & eventSvc() const
The standard event data service.

◆ exceptionSvc()

SmartIF< IExceptionSvc > & Gaudi::Algorithm::exceptionSvc ( ) const

Get the exception Service.

Definition at line 568 of file Algorithm.cpp.

568{ return get_svc_( m_EXS, "ExceptionSvc" ); }
SmartIF< IExceptionSvc > m_EXS
Exception Handler Service.
Definition Algorithm.h:451

◆ execState()

AlgExecStateRef Gaudi::Algorithm::execState ( const EventContext & ctx) const
override

get the AlgExecStateRef of current algorithm Actually a small wrapper around it, thus the plain object return type

Definition at line 541 of file Algorithm.cpp.

541 {
542 return { *algExecStateSvc(), ctx, m_execSvcKey };
543 }
AlgExecStateRef::AlgKey m_execSvcKey
identifier of this algorithm in the AlgExecStateSvc
Definition Algorithm.h:430
SmartIF< IAlgExecStateSvc > & algExecStateSvc() const

◆ finalize()

StatusCode Gaudi::Algorithm::finalize ( )
inlineoverride

the default (empty) implementation of IStateful::finalize() method

Definition at line 181 of file Algorithm.h.

181{ return StatusCode::SUCCESS; }

◆ FSMState()

Gaudi::StateMachine::State Gaudi::Algorithm::FSMState ( ) const
inlineoverride

returns the current state of the algorithm

Definition at line 187 of file Algorithm.h.

187{ return m_state; }
Gaudi::StateMachine::State m_state
flag indicating whether ToolHandle tools have been added to m_tools
Definition Algorithm.h:512

◆ get_svc_()

template<typename IFace>
SmartIF< IFace > & Gaudi::Algorithm::get_svc_ ( SmartIF< IFace > & p,
const char * service_name ) const
private

Definition at line 546 of file Algorithm.cpp.

546 {
547 if ( !p ) {
548 p = this->service( service_name );
549 if ( !p ) {
550 throw GaudiException( "Service [" + std::string{ service_name } + "] not found", this->name(),
552 }
553 }
554 return p;
555 }
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")
constexpr static const auto FAILURE
Definition StatusCode.h:100

◆ histoSvc()

SmartIF< IHistogramSvc > & Gaudi::Algorithm::histoSvc ( ) const

The standard histogram service.

May not be invoked before sysInitialize() has been invoked.

Definition at line 564 of file Algorithm.cpp.

564{ return get_svc_( m_HDS, "HistogramDataSvc" ); }
SmartIF< IHistogramSvc > m_HDS
Histogram data service.
Definition Algorithm.h:447

◆ index()

unsigned int Gaudi::Algorithm::index ( ) const
override

Definition at line 535 of file Algorithm.cpp.

535{ return m_index; }
unsigned int m_index
Algorithm's index.
Definition Algorithm.h:427

◆ initialize()

StatusCode Gaudi::Algorithm::initialize ( )
inlineoverride

the default (empty) implementation of IStateful::initialize() method

Definition at line 175 of file Algorithm.h.

175{ return StatusCode::SUCCESS; }

◆ initToolHandles()

void Gaudi::Algorithm::initToolHandles ( ) const
private

Definition at line 577 of file Algorithm.cpp.

577 {
578
579 auto init_one = [&]( BaseToolHandle* th ) {
580 if ( !th->isEnabled() ) {
581 if ( msgLevel( MSG::DEBUG ) && !th->typeAndName().empty() )
582 debug() << "ToolHandle " << th->typeAndName() << " not used" << endmsg;
583 return;
584 }
585 if ( !th->get() ) {
586 auto sc = th->retrieve();
587 if ( sc.isFailure() ) {
588 throw GaudiException( "Failed to retrieve tool " + th->typeAndName(), this->name(), StatusCode::FAILURE );
589 }
590 }
591 auto tool = th->get();
592 if ( msgLevel( MSG::DEBUG ) )
593 debug() << "Adding " << ( th->isPublic() ? "public" : "private" ) << " ToolHandle tool " << tool->name() << " ("
594 << tool->type() << ")" << endmsg;
595 m_tools.push_back( tool );
596 };
597
598 for ( auto thArr : m_toolHandleArrays ) {
599 if ( msgLevel( MSG::DEBUG ) )
600 debug() << "Registering all Tools in ToolHandleArray " << thArr->propertyName() << endmsg;
601 // Iterate over its tools:
602 for ( auto toolHandle : thArr->getBaseArray() ) {
603 BaseToolHandle* bth = dynamic_cast<BaseToolHandle*>( toolHandle );
604 if ( bth ) {
605 init_one( bth );
606 } else {
607 error() << "Error retrieving ToolHandle " << toolHandle->typeAndName() << " in ToolHandleArray "
608 << thArr->propertyName() << ". Not registered" << endmsg;
609 }
610 }
611 }
612
613 for ( BaseToolHandle* th : m_toolHandles ) init_one( th );
614
615 m_toolHandlesInit = true;
616 }
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)

◆ isAsynchronous()

bool Gaudi::Algorithm::isAsynchronous ( ) const
inline

Definition at line 376 of file Algorithm.h.

376{ return m_asynchronous; }
Gaudi::Property< bool > m_asynchronous
Definition Algorithm.h:503

◆ isEnabled()

bool Gaudi::Algorithm::isEnabled ( ) const
override

Is this algorithm enabled or disabled?

Definition at line 539 of file Algorithm.cpp.

539{ return m_isEnabled; }
Gaudi::Property< bool > m_isEnabled
Definition Algorithm.h:472

◆ isFinalized()

bool Gaudi::Algorithm::isFinalized ( ) const
inlineoverrideprotected

Has the Algorithm already been finalized?

Definition at line 404 of file Algorithm.h.

◆ isInitialized()

bool Gaudi::Algorithm::isInitialized ( ) const
inlineoverrideprotected

Has the Algorithm already been initialized?

Definition at line 401 of file Algorithm.h.

◆ isReEntrant()

bool Gaudi::Algorithm::isReEntrant ( ) const
inlineoverrideprotected

Definition at line 421 of file Algorithm.h.

421{ return true; }

◆ isSequence()

bool Gaudi::Algorithm::isSequence ( ) const
inlineoverride

Are we a Sequence?

Definition at line 195 of file Algorithm.h.

195{ return false; }

◆ maxErrors()

unsigned int Gaudi::Algorithm::maxErrors ( ) const
inlineprivate

Definition at line 418 of file Algorithm.h.

418{ return m_errorMax; }
Gaudi::Property< unsigned int > m_errorMax
Definition Algorithm.h:474

◆ monitorSvc()

SmartIF< IMonitorSvc > & Gaudi::Algorithm::monitorSvc ( ) const
inline

Access the monitor service.

Attention
Note that this method will return a NULL pointer if no monitor service is configured to be present. You must take this possibility into account when using the pointer
Returns
Pointer to the Monitor service
Return values
NULLNo monitor service is present
non-NULLA monitor service is present and available to be used

Definition at line 310 of file Algorithm.h.

310 {
311 // If not already located try to locate it without forcing a creation
312 if ( !m_pMonitorSvc ) {
313 m_pMonitorSvc = service( m_monitorSvcName, false, true ); // do not create and be quiet
314 }
315 return m_pMonitorSvc;
316 }
Gaudi::Property< std::string > m_monitorSvcName
Definition Algorithm.h:492
SmartIF< IMonitorSvc > m_pMonitorSvc
Online Monitoring Service.
Definition Algorithm.h:454

◆ name()

const std::string & Gaudi::Algorithm::name ( ) const
override

The identifying name of the algorithm object.

This is the name of a particular instantiation of an algorithm object as opposed to the name of the algorithm itself, e.g. "LinearTrackFit" may be the name of a concrete algorithm class, whereas "ApproxTrackFit" and "BestTrackFit" may be two instantiations of the class configured to find tracks with different fit criteria.

Definition at line 529 of file Algorithm.cpp.

529{ return m_name.str(); }

◆ nameKey()

const Gaudi::StringKey & Gaudi::Algorithm::nameKey ( ) const
override

Definition at line 531 of file Algorithm.cpp.

531{ return m_name; }

◆ neededResources()

const std::vector< std::string > & Gaudi::Algorithm::neededResources ( ) const
inlineoverride

Definition at line 397 of file Algorithm.h.

397{ return m_neededResources; }
Gaudi::Property< std::vector< std::string > > m_neededResources
Definition Algorithm.h:500

◆ ntupleSvc()

SmartIF< INTupleSvc > & Gaudi::Algorithm::ntupleSvc ( ) const

The standard N tuple service.

Returns a pointer to the N tuple service if present.

Definition at line 565 of file Algorithm.cpp.

565{ return get_svc_( m_NTS, "NTupleSvc" ); }
SmartIF< INTupleSvc > m_NTS
N tuple service.
Definition Algorithm.h:448

◆ operator=()

Algorithm & Gaudi::Algorithm::operator= ( const Algorithm & )
privatedelete

delete assignment operator: NO ASSIGNMENT ALLOWED

◆ randSvc()

SmartIF< IRndmGenSvc > & Gaudi::Algorithm::randSvc ( ) const

The standard RandomGen service, Return a pointer to the service if present.

Definition at line 566 of file Algorithm.cpp.

566{ return get_svc_( m_RGS, "RndmGenSvc" ); }
SmartIF< IRndmGenSvc > m_RGS
Random Number Generator Service.
Definition Algorithm.h:450

◆ registerContext()

bool Gaudi::Algorithm::registerContext ( ) const
inline

register for Algorithm Context Service?

Definition at line 280 of file Algorithm.h.

280{ return m_registerContext; }
Gaudi::Property< bool > m_registerContext
Definition Algorithm.h:495

◆ registerTool()

void Gaudi::Algorithm::registerTool ( IAlgTool * tool) const

Definition at line 637 of file Algorithm.cpp.

637 {
638 if ( msgLevel( MSG::DEBUG ) ) { debug() << "Registering tool " << tool->name() << endmsg; }
639 m_tools.push_back( tool );
640 }

◆ reinitialize()

StatusCode Gaudi::Algorithm::reinitialize ( )
override

the default (empty) implementation of IStateful::reinitialize() method

Definition at line 494 of file Algorithm.cpp.

494 {
495 /* @TODO
496 * MCl 2008-10-23: the implementation of reinitialize as finalize+initialize
497 * is causing too many problems
498 *
499 // Default implementation is finalize+initialize
500 StatusCode sc = finalize();
501 if (sc.isFailure()) {
502 error() << "reinitialize(): cannot be finalized" << endmsg;
503 return sc;
504 }
505 sc = initialize();
506 if (sc.isFailure()) {
507 error() << "reinitialize(): cannot be initialized" << endmsg;
508 return sc;
509 }
510 */
511 return StatusCode::SUCCESS;
512 }

◆ restart()

StatusCode Gaudi::Algorithm::restart ( )
override

the default (empty) implementation of IStateful::restart() method

Definition at line 514 of file Algorithm.cpp.

514 {
515 // Default implementation is stop+start
516 StatusCode sc = stop();
517 if ( sc.isFailure() ) {
518 error() << "restart(): cannot be stopped" << endmsg;
519 return sc;
520 }
521 sc = start();
522 if ( sc.isFailure() ) {
523 error() << "restart(): cannot be started" << endmsg;
524 return sc;
525 }
526 return StatusCode::SUCCESS;
527 }
StatusCode stop() override
the default (empty) implementation of IStateful::stop() method
Definition Algorithm.h:179
StatusCode start() override
the default (empty) implementation of IStateful::start() method
Definition Algorithm.h:177
bool isFailure() const
Definition StatusCode.h:129

◆ service() [1/2]

template<class T>
SmartIF< T > Gaudi::Algorithm::service ( std::string_view name,
bool createIf = true,
bool quiet = false ) const
inline

Definition at line 204 of file Algorithm.h.

204 {
205 return service( name, createIf, quiet ).as<T>();
206 }
SmartIF< IFace > as() const
return a new SmartIF instance to another interface
Definition SmartIF.h:110

◆ service() [2/2]

SmartIF< IService > Gaudi::Algorithm::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")

Protected Member Functions.

Definition at line 632 of file Algorithm.cpp.

632 {
633 const ServiceLocatorHelper helper( *serviceLocator(), *this );
634 return helper.service( name, quiet, createIf );
635 }
SmartIF< ISvcLocator > & serviceLocator() const override
The standard service locator.

◆ serviceLocator()

SmartIF< ISvcLocator > & Gaudi::Algorithm::serviceLocator ( ) const
override

The standard service locator.

Returns a pointer to the service locator service. This service may be used by an algorithm to request any services it requires in addition to those provided by default.

Definition at line 573 of file Algorithm.cpp.

573 {
574 return *const_cast<SmartIF<ISvcLocator>*>( &m_pSvcLocator );
575 }

◆ setAsynchronous()

void Gaudi::Algorithm::setAsynchronous ( bool value)
inline

Definition at line 378 of file Algorithm.h.

378{ m_asynchronous = value; }

◆ setIndex()

void Gaudi::Algorithm::setIndex ( const unsigned int & idx)
overrideprotected

set instantiation index of Alg

Definition at line 537 of file Algorithm.cpp.

537{ m_index = idx; }

◆ setType()

void Gaudi::Algorithm::setType ( std::string type)
inlineoverride

Definition at line 163 of file Algorithm.h.

163{ m_type = std::move( type ); } // BH, TODO: move to proper place
std::string m_type
Algorithm's type.
Definition Algorithm.h:425
const std::string & type() const override
The type of the algorithm object.
Definition Algorithm.h:162

◆ start()

StatusCode Gaudi::Algorithm::start ( )
inlineoverride

the default (empty) implementation of IStateful::start() method

Definition at line 177 of file Algorithm.h.

177{ return StatusCode::SUCCESS; }

◆ stop()

StatusCode Gaudi::Algorithm::stop ( )
inlineoverride

the default (empty) implementation of IStateful::stop() method

Definition at line 179 of file Algorithm.h.

179{ return StatusCode::SUCCESS; }

◆ svcLoc()

SmartIF< ISvcLocator > & Gaudi::Algorithm::svcLoc ( ) const
inline

shortcut for method serviceLocator

Definition at line 273 of file Algorithm.h.

273{ return serviceLocator(); }

◆ sysExecute()

StatusCode Gaudi::Algorithm::sysExecute ( const EventContext & ctx)
override

The actions to be performed by the algorithm on an event.

This method is invoked once per event for top level algorithms by the application manager. This method invokes execute() method. For sub-algorithms either the sysExecute() method or execute() method must be EXPLICITLY invoked by the parent algorithm.

Definition at line 322 of file Algorithm.cpp.

322 {
323 if ( !isEnabled() ) {
324 if ( msgLevel( MSG::VERBOSE ) ) { verbose() << ".sysExecute(): is not enabled. Skip execution" << endmsg; }
325 return StatusCode::SUCCESS;
326 }
327
328 AlgExecStateRef algState{ *algExecStateSvc(), ctx, m_execSvcKey };
329 algState.setState( AlgExecState::Executing );
330 StatusCode status;
331
332 // Should performance profile be performed ?
333 // invoke execute() method of Algorithm class
334 // and catch all uncaught exceptions
335
336 // lock the context service
337 Gaudi::Utils::AlgContext cnt( this, registerContext() ? contextSvc().get() : nullptr, ctx );
338
339 Gaudi::Guards::AuditorGuard guard( name(),
340 // check if we want to audit the initialize
341 ( m_auditorExecute ) ? auditorSvc().get() : nullptr, IAuditor::Execute, status,
342 ctx );
343
344 try {
345 ITimelineSvc::TimelineRecorder timelineRecoder;
346 if ( m_doTimeline ) { timelineRecoder = timelineSvc()->getRecorder( name(), ctx ); }
347
348 status = execute( ctx );
349
351 algState.setFilterPassed( false );
352 } else if ( status.isFailure() ) {
353 status = exceptionSvc()->handleErr( *this, status );
354 }
355
356 } catch ( const GaudiException& Exception ) {
357
358 if ( Exception.code() == StatusCode::FAILURE ) {
359 fatal();
360 } else {
361 error() << " Recoverable";
362 }
363
364 msgStream() << " Exception with tag=" << Exception.tag() << " is caught " << endmsg;
365
366 error() << Exception << endmsg;
367
368 // Stat stat( chronoSvc() , Exception.tag() ) ;
369 status = exceptionSvc()->handle( *this, Exception );
370 } catch ( const std::exception& Exception ) {
371
372 fatal() << "Standard std::exception is caught in " << __func__ << endmsg;
373 error() << Exception.what() << endmsg;
374 // Stat stat( chronoSvc() , "*std::exception*" ) ;
375 status = exceptionSvc()->handle( *this, Exception );
376 } catch ( ... ) {
377
378 fatal() << "UNKNOWN Exception is caught " << endmsg;
379 // Stat stat( chronoSvc() , "*UNKNOWN Exception*" ) ;
380
381 status = exceptionSvc()->handle( *this );
382 }
383
384 if ( status.isFailure() ) {
385 // Increment the error count
386 unsigned int nerr = m_aess->incrementErrorCount( this );
387 // Check if maximum is exeeded
388 if ( nerr < m_errorMax ) {
389 warning() << "Continuing from error (cnt=" << nerr << ", max=" << m_errorMax << ")" << endmsg;
390 // convert to success
391 status = StatusCode::SUCCESS;
392 } else {
393 error() << "Maximum number of errors (" << m_errorMax << ") reached." << endmsg;
394 }
395 }
396
397 algState.setState( AlgExecState::Done, status );
398
399 return status;
400 }
MsgStream & verbose() const
shortcut for the method msgStream(MSG::VERBOSE)
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
MsgStream & fatal() const
shortcut for the method msgStream(MSG::FATAL)
MsgStream & msgStream() const
Return an uninitialized MsgStream.
SmartIF< IAuditorSvc > & auditorSvc() const
The standard auditor service.May not be invoked before sysInitialize() has been invoked.
Gaudi::Property< bool > m_doTimeline
Definition Algorithm.h:490
SmartIF< IAlgContextSvc > & contextSvc() const
get Algorithm Context Service
bool registerContext() const
register for Algorithm Context Service?
Definition Algorithm.h:280
Gaudi::Property< bool > m_auditorExecute
Definition Algorithm.h:482
SmartIF< ITimelineSvc > & timelineSvc() const
bool isEnabled() const override
Is this algorithm enabled or disabled?
SmartIF< IExceptionSvc > & exceptionSvc() const
Get the exception Service.
static const std::string Execute
Definition IAuditor.h:51
virtual StatusCode handle(const INamedInterface &o, const GaudiException &e) const =0
Handle caught GaudiExceptions.
virtual StatusCode handleErr(const INamedInterface &o, const StatusCode &s) const =0
Handle errors.
virtual TimelineRecorder getRecorder(std::string alg, const EventContext &ctx)=0
get
decorate the vector of properties
Definition decorators.py:94
@ VERBOSE
Definition IMessageSvc.h:22

◆ sysFinalize()

StatusCode Gaudi::Algorithm::sysFinalize ( )
override

System finalization.

This method invokes the finalize() method of a concrete algorithm and the finalize() methods of all of that algorithm's sub algorithms.

Definition at line 447 of file Algorithm.cpp.

447 {
448
449 // Bypass the finalialization if the algorithm hasn't been initilized.
451
453
454 // lock the context service
455 Gaudi::Utils::AlgContext cnt( this, registerContext() ? contextSvc().get() : nullptr );
456
457 StatusCode sc( StatusCode::FAILURE );
458 // Invoke finalize() method of the derived class inside a try/catch clause
459 try {
460 { // limit the scope of the guard
461 Gaudi::Guards::AuditorGuard guard( name(),
462 // check if we want to audit the initialize
463 ( m_auditorFinalize ) ? auditorSvc().get() : nullptr, IAuditor::Finalize );
464 // Invoke the finalize() method of the derived class
465 sc = finalize();
466
467 // Finalize ToolHandles
468 for ( GaudiHandleArrayBase* thArr : m_toolHandleArrays )
469 thArr->release().orThrow( "Cannot release " + thArr->propertyName() );
470 for ( BaseToolHandle* th : m_toolHandles ) th->release().orThrow( "Cannot release " + th->typeAndName() );
471 }
472 if ( sc.isSuccess() ) {
473 // Indicate that this Algorithm has been finalized to prevent duplicate attempts
475 }
476 } catch ( const GaudiException& Exception ) {
477 fatal() << " Exception with tag=" << Exception.tag() << " is caught " << endmsg;
478 error() << Exception << endmsg;
479 Stat stat( chronoSvc(), Exception.tag() );
481 } catch ( const std::exception& Exception ) {
482 fatal() << "Standard std::exception is caught in " << __func__ << endmsg;
483 error() << Exception.what() << endmsg;
484 Stat stat( chronoSvc(), "*std::exception*" );
486 } catch ( ... ) {
487 fatal() << "UNKNOWN Exception is caught " << endmsg;
488 Stat stat( chronoSvc(), "*UNKNOWN Exception*" );
490 }
491 return sc;
492 }
Gaudi::StateMachine::State FSMState() const override
returns the current state of the algorithm
Definition Algorithm.h:187
Gaudi::StateMachine::State m_targetState
Algorithm has been initialized flag.
Definition Algorithm.h:513
StatusCode finalize() override
the default (empty) implementation of IStateful::finalize() method
Definition Algorithm.h:181
SmartIF< IChronoStatSvc > & chronoSvc() const
The standard Chrono & Stat service, Return a pointer to the service if present.
Gaudi::Property< bool > m_auditorFinalize
Definition Algorithm.h:484
static const std::string Finalize
Definition IAuditor.h:53
State GAUDI_API ChangeState(const Transition transition, const State state)
Function to get the new state according to the required transition, checking if the transition is all...

◆ sysInitialize()

StatusCode Gaudi::Algorithm::sysInitialize ( )
override

Initialization method invoked by the framework.

This method is responsible for any bookkeeping of initialization required by the framework itself. It will in turn invoke the initialize() method of the derived algorithm, and of any sub-algorithms which it creates.

Definition at line 53 of file Algorithm.cpp.

53 {
54
55 // Bypass the initialization if the algorithm
56 // has already been initialized.
58
59 // this initializes the messaging, in case property update handlers need to print
60 // and update the property value bypassing the update handler
61 m_outputLevel.value() = setUpMessaging();
62
63 // Set the Algorithm's properties
64 bindPropertiesTo( serviceLocator()->getOptsSvc() );
65
66 // Bypass the initialization if the algorithm is disabled.
67 // Need to do this after setProperties.
68 if ( !isEnabled() ) return StatusCode::SUCCESS;
69
71
72 // TODO: (MCl) where should we do this? initialize or start?
73 // Reset Error count
74 // m_errorCount = 0;
75
76 // lock the context service
77 Gaudi::Utils::AlgContext cnt( this, registerContext() ? contextSvc().get() : nullptr );
78
79 // Get WhiteBoard interface if implemented by EventDataSvc
80 m_WB = service( "EventDataSvc" );
81
82 // check whether timeline should be done
84
85 StatusCode sc;
86 // Invoke initialize() method of the derived class inside a try/catch clause
87 try {
88
89 { // limit the scope of the guard
90 Gaudi::Guards::AuditorGuard guard( name(),
91 // check if we want to audit the initialize
92 ( m_auditorInitialize ) ? auditorSvc().get() : nullptr,
94 // Invoke the initialize() method of the derived class
95 sc = initialize();
96 }
97
98 if ( sc.isSuccess() ) {
99 // Update the state.
101 }
102 } catch ( const GaudiException& Exception ) {
103 fatal() << " Exception with tag=" << Exception.tag() << " is caught " << endmsg;
104 error() << Exception << endmsg;
105 Stat stat( chronoSvc(), Exception.tag() );
107 } catch ( const std::exception& Exception ) {
108 fatal() << "Standard std::exception is caught in " << __func__ << endmsg;
109 error() << Exception.what() << endmsg;
110 Stat stat( chronoSvc(), "*std::exception*" );
112 } catch ( ... ) {
113 fatal() << "UNKNOWN Exception is caught " << endmsg;
114 Stat stat( chronoSvc(), "*UNKNOWN Exception*" );
116 }
117
119
120 //
122 //
123
124 // ignore this step if we're a Sequence
125 if ( this->isSequence() ) { return sc; }
126
127 if ( msgLevel( MSG::DEBUG ) ) {
128 debug() << "input handles: " << inputHandles().size() << endmsg;
129 debug() << "output handles: " << outputHandles().size() << endmsg;
130 }
131
132 // check for explicit circular data dependencies in declared handles
134 for ( auto& h : outputHandles() ) {
135 if ( !h->objKey().empty() ) out.emplace( h->fullKey() );
136 }
137 for ( auto& h : inputHandles() ) {
138 if ( !h->objKey().empty() && out.find( h->fullKey() ) != out.end() ) {
139 // TODO: this case leads to a segfault as the SC, seemingly, is not propagated up properly
140 error() << "Explicit circular data dependency detected for id " << h->fullKey() << endmsg;
142 }
143 }
144
145 if ( !sc ) return sc;
146
148
149 // visit all sub-algs and tools, build full set. First initialize ToolHandles if needed
150 try {
152 } catch ( const GaudiException& Exception ) {
153 error() << "Failing initializing ToolHandles : " << Exception << endmsg;
154 return StatusCode::FAILURE;
155 }
156 DHHVisitor avis( m_inputDataObjs, m_outputDataObjs );
157 acceptDHVisitor( &avis );
158
159 // check for implicit circular data deps from child Algs/AlgTools
160 for ( auto& h : m_outputDataObjs ) {
161 auto i = m_inputDataObjs.find( h );
162 if ( i != m_inputDataObjs.end() ) {
163 if ( m_filterCircDeps ) {
164 warning() << "Implicit circular data dependency detected for id " << h << endmsg;
165 m_inputDataObjs.erase( i );
166 } else {
167 error() << "Implicit circular data dependency detected for id " << h << endmsg;
169 }
170 }
171 }
172
173 if ( !sc ) return sc;
174
175 if ( msgLevel( MSG::DEBUG ) && !avis.empty() ) { debug() << "data dependencies:" << avis << endmsg; }
176
177 // initialize handles
179
180 return sc;
181 }
std::unordered_set< DataObjID, DataObjID_Hasher > DataObjIDColl
Definition DataObjID.h:121
std::unique_ptr< IDataHandleVisitor > m_updateDataHandles
Hook for for derived classes to provide a custom visitor for data handles.
Definition Algorithm.h:464
void acceptDHVisitor(IDataHandleVisitor *) const override
Gaudi::Property< int > m_outputLevel
Definition Algorithm.h:468
StatusCode initialize() override
the default (empty) implementation of IStateful::initialize() method
Definition Algorithm.h:175
void initToolHandles() const
Gaudi::Property< bool > m_filterCircDeps
Definition Algorithm.h:507
SmartIF< IHiveWhiteBoard > m_WB
Event data service (whiteboard)
Definition Algorithm.h:443
Gaudi::Property< bool > m_auditorInitialize
Definition Algorithm.h:476
bool isSequence() const override
Are we a Sequence?
Definition Algorithm.h:195
static const std::string Initialize
Definition IAuditor.h:47
virtual AlgExecStateRef::AlgKey addAlg(const Gaudi::StringKey &algName)=0
adds a new algorithm to the service
virtual bool isEnabled() const =0
bool isSuccess() const
Definition StatusCode.h:314

◆ sysReinitialize()

StatusCode Gaudi::Algorithm::sysReinitialize ( )
override

Reinitialization method invoked by the framework.

This method is responsible for any reinitialization required by the framework itself. It will in turn invoke the reinitialize() method of the derived algorithm, and of any sub-algorithms which it creates.

Definition at line 235 of file Algorithm.cpp.

235 {
236
237 // Bypass the initialization if the algorithm is disabled.
238 if ( !isEnabled() ) return StatusCode::SUCCESS;
239
240 // Check that the current status is the correct one.
242 error() << "sysReinitialize(): cannot reinitialize algorithm not initialized" << endmsg;
243 return StatusCode::FAILURE;
244 }
245
246 // Reset Error count
247 // m_errorCount = 0; // done during start
248
249 // lock the context service
250 Gaudi::Utils::AlgContext cnt( this, registerContext() ? contextSvc().get() : nullptr );
251
252 StatusCode sc( StatusCode::SUCCESS );
253 // Invoke reinitialize() method of the derived class inside a try/catch clause
254 try {
255 Gaudi::Guards::AuditorGuard guard( name(),
256 // check if we want to audit the initialize
257 ( m_auditorReinitialize ) ? auditorSvc().get() : nullptr,
259 // Invoke the reinitialize() method of the derived class
260 sc = reinitialize();
261 } catch ( const GaudiException& Exception ) {
262 fatal() << "sysReinitialize(): Exception with tag=" << Exception.tag() << " is caught" << endmsg;
263 error() << Exception << endmsg;
264 Stat stat( chronoSvc(), Exception.tag() );
266 } catch ( const std::exception& Exception ) {
267 fatal() << "sysReinitialize(): Standard std::exception is caught" << endmsg;
268 error() << Exception.what() << endmsg;
269 Stat stat( chronoSvc(), "*std::exception*" );
271 } catch ( ... ) {
272 fatal() << "sysReinitialize(): UNKNOWN Exception is caught" << endmsg;
273 Stat stat( chronoSvc(), "*UNKNOWN Exception*" );
275 }
276
277 return sc;
278 }
StatusCode reinitialize() override
the default (empty) implementation of IStateful::reinitialize() method
Gaudi::Property< bool > m_auditorReinitialize
Definition Algorithm.h:478
static const std::string ReInitialize
Definition IAuditor.h:48

◆ sysRestart()

StatusCode Gaudi::Algorithm::sysRestart ( )
override

Restart method invoked by the framework.

It will in turn invoke the restart() method of the derived algorithm, and of any sub-algorithms which it creates.

Definition at line 281 of file Algorithm.cpp.

281 {
282
283 // Bypass the initialization if the algorithm is disabled.
284 if ( !isEnabled() ) return StatusCode::SUCCESS;
285
286 // Check that the current status is the correct one.
288 error() << "sysRestart(): cannot restart algorithm not started" << endmsg;
289 return StatusCode::FAILURE;
290 }
291
292 // lock the context service
293 Gaudi::Utils::AlgContext cnt( this, registerContext() ? contextSvc().get() : nullptr );
294
295 StatusCode sc( StatusCode::FAILURE );
296 // Invoke reinitialize() method of the derived class inside a try/catch clause
297 try {
298 Gaudi::Guards::AuditorGuard guard( name(),
299 // check if we want to audit the initialize
300 ( m_auditorRestart ) ? auditorSvc().get() : nullptr, IAuditor::ReStart );
301 // Invoke the reinitialize() method of the derived class
302 sc = restart();
303 } catch ( const GaudiException& Exception ) {
304 fatal() << "sysRestart(): Exception with tag=" << Exception.tag() << " is caught" << endmsg;
305 error() << Exception << endmsg;
306 Stat stat( chronoSvc(), Exception.tag() );
308 } catch ( const std::exception& Exception ) {
309 fatal() << "sysRestart(): Standard std::exception is caught" << endmsg;
310 error() << Exception.what() << endmsg;
311 Stat stat( chronoSvc(), "*std::exception*" );
313 } catch ( ... ) {
314 fatal() << "sysRestart(): UNKNOWN Exception is caught" << endmsg;
315 Stat stat( chronoSvc(), "*UNKNOWN Exception*" );
317 }
318
319 return sc;
320 }
StatusCode restart() override
the default (empty) implementation of IStateful::restart() method
Gaudi::Property< bool > m_auditorRestart
Definition Algorithm.h:480
static const std::string ReStart
Definition IAuditor.h:50

◆ sysStart()

StatusCode Gaudi::Algorithm::sysStart ( )
override

Reinitialization method invoked by the framework.

This method is responsible for any reinitialization required by the framework itself. It will in turn invoke the reinitialize() method of the derived algorithm, and of any sub-algorithms which it creates.

Definition at line 191 of file Algorithm.cpp.

191 {
192
193 // Bypass the startup if already running or disabled.
195
197
198 // lock the context service
199 Gaudi::Utils::AlgContext cnt( this, registerContext() ? contextSvc().get() : nullptr );
200
201 StatusCode sc( StatusCode::FAILURE );
202 // Invoke start() method of the derived class inside a try/catch clause
203 try {
204 { // limit the scope of the guard
205 Gaudi::Guards::AuditorGuard guard( name(),
206 // check if we want to audit the initialize
207 ( m_auditorStart ) ? auditorSvc().get() : nullptr, IAuditor::Start );
208 // Invoke the start() method of the derived class
209 sc = start();
210 }
211 if ( sc.isSuccess() ) {
212 // Update the state.
214 }
215 } catch ( const GaudiException& Exception ) {
216 fatal() << "in sysStart(): exception with tag=" << Exception.tag() << " is caught" << endmsg;
217 error() << Exception << endmsg;
218 Stat stat( chronoSvc(), Exception.tag() );
220 } catch ( const std::exception& Exception ) {
221 fatal() << "in sysStart(): standard std::exception is caught" << endmsg;
222 error() << Exception.what() << endmsg;
223 Stat stat( chronoSvc(), "*std::exception*" );
225 } catch ( ... ) {
226 fatal() << "in sysStart(): UNKNOWN Exception is caught" << endmsg;
227 Stat stat( chronoSvc(), "*UNKNOWN Exception*" );
229 }
230
231 return sc;
232 }
Gaudi::Property< bool > m_auditorStart
Definition Algorithm.h:486
static const std::string Start
Definition IAuditor.h:49

◆ sysStop()

StatusCode Gaudi::Algorithm::sysStop ( )
override

System stop.

This method invokes the stop() method of a concrete algorithm and the stop() methods of all of that algorithm's sub algorithms.

Definition at line 403 of file Algorithm.cpp.

403 {
404
405 // Bypass the startup if already running or disabled.
407
409
410 // lock the context service
411 Gaudi::Utils::AlgContext cnt( this, registerContext() ? contextSvc().get() : nullptr );
412
413 StatusCode sc( StatusCode::FAILURE );
414 // Invoke stop() method of the derived class inside a try/catch clause
415 try {
416 { // limit the scope of the guard
417 Gaudi::Guards::AuditorGuard guard( name(),
418 // check if we want to audit the initialize
419 ( m_auditorStop ) ? auditorSvc().get() : nullptr, IAuditor::Stop );
420
421 // Invoke the stop() method of the derived class
422 sc = stop();
423 }
424 if ( sc.isSuccess() ) {
425 // Update the state.
427 }
428 } catch ( const GaudiException& Exception ) {
429 fatal() << "in sysStop(): exception with tag=" << Exception.tag() << " is caught" << endmsg;
430 error() << Exception << endmsg;
431 Stat stat( chronoSvc(), Exception.tag() );
433 } catch ( const std::exception& Exception ) {
434 fatal() << "in sysStop(): standard std::exception is caught" << endmsg;
435 error() << Exception.what() << endmsg;
436 Stat stat( chronoSvc(), "*std::exception*" );
438 } catch ( ... ) {
439 fatal() << "in sysStop(): UNKNOWN Exception is caught" << endmsg;
440 Stat stat( chronoSvc(), "*UNKNOWN Exception*" );
442 }
443
444 return sc;
445 }
Gaudi::Property< bool > m_auditorStop
Definition Algorithm.h:488
static const std::string Stop
Definition IAuditor.h:52

◆ targetFSMState()

Gaudi::StateMachine::State Gaudi::Algorithm::targetFSMState ( ) const
inlineoverride

returns the state the algorithm will be in after the ongoing transition

Definition at line 189 of file Algorithm.h.

189{ return m_targetState; }

◆ terminate()

StatusCode Gaudi::Algorithm::terminate ( )
inlineoverride

Dummy implementation of IStateful::terminate() method.

Definition at line 172 of file Algorithm.h.

172{ return StatusCode::SUCCESS; }

◆ timelineSvc()

SmartIF< ITimelineSvc > & Gaudi::Algorithm::timelineSvc ( ) const

Definition at line 570 of file Algorithm.cpp.

570{ return get_svc_( m_timelineSvc, "TimelineSvc" ); }
SmartIF< ITimelineSvc > m_timelineSvc
Timeline Service.
Definition Algorithm.h:457

◆ toControlFlowExpression()

std::ostream & Gaudi::Algorithm::toControlFlowExpression ( std::ostream & os) const
override

Produce string represention of the control flow expression.

Definition at line 652 of file Algorithm.cpp.

652 {
653 return os << type() << "('" << name() << "')";
654 }

◆ tools() [1/2]

std::vector< IAlgTool * > & Gaudi::Algorithm::tools ( )
protected

Definition at line 623 of file Algorithm.cpp.

623 {
625 return m_tools;
626 }

◆ tools() [2/2]

const std::vector< IAlgTool * > & Gaudi::Algorithm::tools ( ) const

Definition at line 618 of file Algorithm.cpp.

618 {
620 return m_tools;
621 }

◆ toolSvc()

SmartIF< IToolSvc > & Gaudi::Algorithm::toolSvc ( ) const

The standard ToolSvc service, Return a pointer to the service if present.

Definition at line 567 of file Algorithm.cpp.

567{ return get_svc_( m_ptoolSvc, "ToolSvc" ); }
SmartIF< IToolSvc > m_ptoolSvc
ToolSvc Service.
Definition Algorithm.h:453

◆ type()

const std::string & Gaudi::Algorithm::type ( ) const
inlineoverride

The type of the algorithm object.

Definition at line 162 of file Algorithm.h.

162{ return m_type; }

◆ version()

const std::string & Gaudi::Algorithm::version ( ) const
override

Definition at line 533 of file Algorithm.cpp.

533{ return m_version; }

◆ whiteboard()

SmartIF< IHiveWhiteBoard > & Gaudi::Algorithm::whiteboard ( ) const

Definition at line 571 of file Algorithm.cpp.

571{ return get_svc_( m_WB, "EventDataSvc" ); }

Member Data Documentation

◆ AlgorithmManager

friend Gaudi::Algorithm::AlgorithmManager

Definition at line 92 of file Algorithm.h.

◆ m_aess

SmartIF<IAlgExecStateSvc> Gaudi::Algorithm::m_aess
mutableprivate

Alg execution state mgr.

Definition at line 458 of file Algorithm.h.

◆ m_asynchronous

Gaudi::Property<bool> Gaudi::Algorithm::m_asynchronous
private
Initial value:
{ this, "Asynchronous", false,
"whether algorithm is asynchronous and uses Boost Fiber to suspend "
"while offloaded code is running." }

Definition at line 503 of file Algorithm.h.

503 { this, "Asynchronous", false,
504 "whether algorithm is asynchronous and uses Boost Fiber to suspend "
505 "while offloaded code is running." };

◆ m_auditorExecute

Gaudi::Property<bool> Gaudi::Algorithm::m_auditorExecute
private
Initial value:
{ this, "AuditExecute", m_auditorInitialize.value(),
"trigger auditor on execute()" }

Definition at line 482 of file Algorithm.h.

482 { this, "AuditExecute", m_auditorInitialize.value(),
483 "trigger auditor on execute()" };

◆ m_auditorFinalize

Gaudi::Property<bool> Gaudi::Algorithm::m_auditorFinalize
private
Initial value:
{ this, "AuditFinalize", m_auditorInitialize.value(),
"trigger auditor on finalize()" }

Definition at line 484 of file Algorithm.h.

484 { this, "AuditFinalize", m_auditorInitialize.value(),
485 "trigger auditor on finalize()" };

◆ m_auditorInitialize

Gaudi::Property<bool> Gaudi::Algorithm::m_auditorInitialize
private
Initial value:
{
this, "AuditInitialize", Details::getDefaultAuditorValue( m_pSvcLocator ), "trigger auditor on initialize()" }
bool getDefaultAuditorValue(ISvcLocator *loc)
Definition Algorithm.cpp:44

Definition at line 476 of file Algorithm.h.

476 {
477 this, "AuditInitialize", Details::getDefaultAuditorValue( m_pSvcLocator ), "trigger auditor on initialize()" };

◆ m_auditorReinitialize

Gaudi::Property<bool> Gaudi::Algorithm::m_auditorReinitialize
private
Initial value:
{ this, "AuditReinitialize", m_auditorInitialize.value(),
"trigger auditor on reinitialize()" }

Definition at line 478 of file Algorithm.h.

478 { this, "AuditReinitialize", m_auditorInitialize.value(),
479 "trigger auditor on reinitialize()" };

◆ m_auditorRestart

Gaudi::Property<bool> Gaudi::Algorithm::m_auditorRestart
private
Initial value:
{ this, "AuditRestart", m_auditorInitialize.value(),
"trigger auditor on restart()" }

Definition at line 480 of file Algorithm.h.

480 { this, "AuditRestart", m_auditorInitialize.value(),
481 "trigger auditor on restart()" };

◆ m_auditorStart

Gaudi::Property<bool> Gaudi::Algorithm::m_auditorStart
private
Initial value:
{ this, "AuditStart", m_auditorInitialize.value(),
"trigger auditor on start()" }

Definition at line 486 of file Algorithm.h.

486 { this, "AuditStart", m_auditorInitialize.value(),
487 "trigger auditor on start()" };

◆ m_auditorStop

Gaudi::Property<bool> Gaudi::Algorithm::m_auditorStop { this, "AuditStop", m_auditorInitialize.value(), "trigger auditor on stop()" }
private

Definition at line 488 of file Algorithm.h.

488{ this, "AuditStop", m_auditorInitialize.value(), "trigger auditor on stop()" };

◆ m_cardinality

Gaudi::Property<int> Gaudi::Algorithm::m_cardinality
private
Initial value:
{ this, "Cardinality", 0,
"how many clones to create - 0 means algo is reentrant" }

Definition at line 498 of file Algorithm.h.

498 { this, "Cardinality", 0,
499 "how many clones to create - 0 means algo is reentrant" };

◆ m_contextSvc

SmartIF<IAlgContextSvc> Gaudi::Algorithm::m_contextSvc
mutableprivate

Algorithm Context Service.

Definition at line 455 of file Algorithm.h.

◆ m_CSS

SmartIF<IChronoStatSvc> Gaudi::Algorithm::m_CSS
mutableprivate

Chrono & Stat Service.

Definition at line 449 of file Algorithm.h.

◆ m_DCS

SmartIF<IConversionSvc> Gaudi::Algorithm::m_DCS
mutableprivate

Detector conversion service.

Definition at line 446 of file Algorithm.h.

◆ m_DDS

SmartIF<IDataProviderSvc> Gaudi::Algorithm::m_DDS
mutableprivate

Detector data service.

Definition at line 445 of file Algorithm.h.

◆ m_doTimeline

Gaudi::Property<bool> Gaudi::Algorithm::m_doTimeline { this, "Timeline", true, "send events to TimelineSvc" }
private

Definition at line 490 of file Algorithm.h.

490{ this, "Timeline", true, "send events to TimelineSvc" };

◆ m_ECS

SmartIF<IConversionSvc> Gaudi::Algorithm::m_ECS
mutableprivate

Event conversion service.

Definition at line 444 of file Algorithm.h.

◆ m_EDS

SmartIF<IDataProviderSvc> Gaudi::Algorithm::m_EDS
mutableprivate

Event data service.

Definition at line 442 of file Algorithm.h.

◆ m_errorMax

Gaudi::Property<unsigned int> Gaudi::Algorithm::m_errorMax { this, "ErrorMax", 1, "[[deprecated]] max number of errors" }
private

Definition at line 474 of file Algorithm.h.

474{ this, "ErrorMax", 1, "[[deprecated]] max number of errors" };

◆ m_execSvcKey

AlgExecStateRef::AlgKey Gaudi::Algorithm::m_execSvcKey
private

identifier of this algorithm in the AlgExecStateSvc

Definition at line 430 of file Algorithm.h.

◆ m_EXS

SmartIF<IExceptionSvc> Gaudi::Algorithm::m_EXS
mutableprivate

Exception Handler Service.

Definition at line 451 of file Algorithm.h.

◆ m_filterCircDeps

Gaudi::Property<bool> Gaudi::Algorithm::m_filterCircDeps
private
Initial value:
{ this, "FilterCircularDependencies", true,
"filter out circular data dependencies" }

Definition at line 507 of file Algorithm.h.

507 { this, "FilterCircularDependencies", true,
508 "filter out circular data dependencies" };

◆ m_HDS

SmartIF<IHistogramSvc> Gaudi::Algorithm::m_HDS
mutableprivate

Histogram data service.

Definition at line 447 of file Algorithm.h.

◆ m_index

unsigned int Gaudi::Algorithm::m_index = 0
private

Algorithm's index.

Definition at line 427 of file Algorithm.h.

◆ m_isEnabled

Gaudi::Property<bool> Gaudi::Algorithm::m_isEnabled { this, "Enable", true, "should the algorithm be executed or not" }
private

Definition at line 472 of file Algorithm.h.

472{ this, "Enable", true, "should the algorithm be executed or not" };

◆ m_monitorSvcName

Gaudi::Property<std::string> Gaudi::Algorithm::m_monitorSvcName
private
Initial value:
{ this, "MonitorService", "MonitorSvc",
"name to use for Monitor Service" }

Definition at line 492 of file Algorithm.h.

492 { this, "MonitorService", "MonitorSvc",
493 "name to use for Monitor Service" };

◆ m_MS

SmartIF<IMessageSvc> Gaudi::Algorithm::m_MS
mutableprivate

Message service.

Definition at line 441 of file Algorithm.h.

◆ m_name

Gaudi::StringKey Gaudi::Algorithm::m_name
private

Algorithm's name for identification.

Definition at line 424 of file Algorithm.h.

◆ m_neededResources

Gaudi::Property<std::vector<std::string> > Gaudi::Algorithm::m_neededResources
private
Initial value:
{
this, "NeededResources", {}, "named resources needed during event looping" }

Definition at line 500 of file Algorithm.h.

500 {
501 this, "NeededResources", {}, "named resources needed during event looping" };

◆ m_NTS

SmartIF<INTupleSvc> Gaudi::Algorithm::m_NTS
mutableprivate

N tuple service.

Definition at line 448 of file Algorithm.h.

◆ m_outputLevel

Gaudi::Property<int> Gaudi::Algorithm::m_outputLevel
private
Initial value:
{
this, "OutputLevel", MSG::NIL,
"output level" }
Gaudi::Property< int > m_outputLevel
Definition AlgTool.h:278
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
@ NIL
Definition IMessageSvc.h:22

Definition at line 468 of file Algorithm.h.

468 {
469 this, "OutputLevel", MSG::NIL,
470 [this]( Gaudi::Details::PropertyBase& ) { this->updateMsgStreamOutputLevel( this->m_outputLevel ); },
471 "output level" };

◆ m_pAuditorSvc

SmartIF<IAuditorSvc> Gaudi::Algorithm::m_pAuditorSvc
mutableprivate

Auditor Service.

Definition at line 452 of file Algorithm.h.

◆ m_pMonitorSvc

SmartIF<IMonitorSvc> Gaudi::Algorithm::m_pMonitorSvc
mutableprivate

Online Monitoring Service.

Definition at line 454 of file Algorithm.h.

◆ m_pSvcLocator

SmartIF<ISvcLocator> Gaudi::Algorithm::m_pSvcLocator
private

Pointer to service locator service.

Definition at line 460 of file Algorithm.h.

◆ m_ptoolSvc

SmartIF<IToolSvc> Gaudi::Algorithm::m_ptoolSvc
mutableprivate

ToolSvc Service.

Definition at line 453 of file Algorithm.h.

◆ m_registerContext

Gaudi::Property<bool> Gaudi::Algorithm::m_registerContext
private
Initial value:
{ this, "RegisterForContextService", false,
"flag to enforce the registration for Algorithm Context Service" }

Definition at line 495 of file Algorithm.h.

495 { this, "RegisterForContextService", false,
496 "flag to enforce the registration for Algorithm Context Service" };

◆ m_RGS

SmartIF<IRndmGenSvc> Gaudi::Algorithm::m_RGS
mutableprivate

Random Number Generator Service.

Definition at line 450 of file Algorithm.h.

◆ m_state

Gaudi::StateMachine::State Gaudi::Algorithm::m_state = Gaudi::StateMachine::CONFIGURED
private

flag indicating whether ToolHandle tools have been added to m_tools

Algorithm has been initialized flag

Definition at line 512 of file Algorithm.h.

◆ m_targetState

Gaudi::StateMachine::State Gaudi::Algorithm::m_targetState = Gaudi::StateMachine::CONFIGURED
private

Algorithm has been initialized flag.

Definition at line 513 of file Algorithm.h.

◆ m_timelineSvc

SmartIF<ITimelineSvc> Gaudi::Algorithm::m_timelineSvc
mutableprivate

Timeline Service.

Definition at line 457 of file Algorithm.h.

◆ m_toolHandleArrays

std::vector<GaudiHandleArrayBase*> Gaudi::Algorithm::m_toolHandleArrays
mutableprivate

Definition at line 435 of file Algorithm.h.

◆ m_toolHandles

std::vector<BaseToolHandle*> Gaudi::Algorithm::m_toolHandles
mutableprivate

Definition at line 434 of file Algorithm.h.

◆ m_toolHandlesInit

bool Gaudi::Algorithm::m_toolHandlesInit = false
mutableprivate

Definition at line 510 of file Algorithm.h.

◆ m_tools

std::vector<IAlgTool*> Gaudi::Algorithm::m_tools
mutableprivate

Definition at line 433 of file Algorithm.h.

◆ m_type

std::string Gaudi::Algorithm::m_type
private

Algorithm's type.

Definition at line 425 of file Algorithm.h.

◆ m_updateDataHandles

std::unique_ptr<IDataHandleVisitor> Gaudi::Algorithm::m_updateDataHandles
protected

Hook for for derived classes to provide a custom visitor for data handles.

Definition at line 464 of file Algorithm.h.

◆ m_version

std::string Gaudi::Algorithm::m_version
private

Algorithm's version.

Definition at line 426 of file Algorithm.h.

◆ m_WB

SmartIF<IHiveWhiteBoard> Gaudi::Algorithm::m_WB
mutableprivate

Event data service (whiteboard)

Definition at line 443 of file Algorithm.h.


The documentation for this class was generated from the following files: