The Gaudi Framework  v37r0 (b608885e)
Algorithm.h
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2022 CERN for the benefit of the LHCb and ATLAS collaborations *
3 * *
4 * This software is distributed under the terms of the Apache version 2 licence, *
5 * copied verbatim in the file "LICENSE". *
6 * *
7 * In applying this licence, CERN does not waive the privileges and immunities *
8 * granted to it by virtue of its status as an Intergovernmental Organization *
9 * or submit itself to any jurisdiction. *
10 \***********************************************************************************/
11 #pragma once
12 // ============================================================================
13 // Include files
14 // ============================================================================
15 #include "GaudiKernel/IAlgorithm.h"
17 #include "GaudiKernel/IProperty.h"
18 #include "GaudiKernel/IService.h"
19 #include "GaudiKernel/IStateful.h"
22 
23 #include <string>
24 #include <vector>
25 
26 // Extra include files (forward declarations should be sufficient)
28 #include "GaudiKernel/DataObjID.h" // must be include before Property.h, which is included in PropertyHolder.h
38 #include "GaudiKernel/INTupleSvc.h"
40 #include "GaudiKernel/IToolSvc.h"
42 #include "GaudiKernel/System.h"
43 #include "GaudiKernel/ToolHandle.h"
44 #include <Gaudi/PluginService.h>
45 #include <Gaudi/Property.h>
46 
47 // For concurrency
48 #include "GaudiKernel/DataHandle.h"
52 
53 class IAlgTool;
54 class ToolHandleInfo;
55 class AlgorithmManager;
56 
57 #ifndef PACKAGE_VERSION
58 # define PACKAGE_VERSION "unknown"
59 #endif
60 namespace Gaudi {
61  namespace Details {
63  }
64 
89  : public DataHandleHolderBase<
90  PropertyHolder<CommonMessaging<implements<IAlgorithm, IDataHandleHolder, IProperty, IStateful>>>> {
91  public:
92 #ifndef __REFLEX__
93  typedef Gaudi::PluginService::Factory<IAlgorithm*( const std::string&, ISvcLocator* )> Factory;
94 #endif
96 
102  : m_name( std::move( name ) )
103  , m_version( std::move( version ) ) // incremented by AlgResourcePool
104  , m_pSvcLocator( svcloc ) {}
105 
111  StatusCode sysStart() override;
112 
118  StatusCode sysInitialize() override;
119 
125  StatusCode sysReinitialize() override;
126 
131  StatusCode sysRestart() override;
132 
140  StatusCode sysExecute( const EventContext& ctx ) override;
141 
145  StatusCode sysStop() override;
146 
151  StatusCode sysFinalize() override;
152 
160  const std::string& name() const override;
161  const Gaudi::StringKey& nameKey() const override;
162 
165  const std::string& type() const override { return m_type; }
166  void setType( std::string type ) override { m_type = std::move( type ); } // BH, TODO: move to proper place
167 
168  const std::string& version() const override;
169 
170  unsigned int index() const override;
171 
173  StatusCode configure() override { return StatusCode::SUCCESS; }
175  StatusCode terminate() override { return StatusCode::SUCCESS; }
176 
180  StatusCode start() override { return StatusCode::SUCCESS; }
182  StatusCode stop() override { return StatusCode::SUCCESS; }
184  StatusCode finalize() override { return StatusCode::SUCCESS; }
186  StatusCode reinitialize() override;
188  StatusCode restart() override;
190  Gaudi::StateMachine::State FSMState() const override { return m_state; }
192  Gaudi::StateMachine::State targetFSMState() const override { return m_targetState; }
193 
195  bool isEnabled() const override;
196 
198  bool isSequence() const override { return false; }
199 
201  unsigned int errorCount() const;
202 
204  template <class T>
205  StatusCode service( std::string_view name, T*& psvc, bool createIf = true ) const {
206  return service_i( name, createIf, T::interfaceID(), (void**)&psvc );
207  }
208 
210  template <class T>
211  StatusCode service( std::string_view svcType, std::string_view svcName, T*& psvc ) const {
212  return service_i( svcType, svcName, T::interfaceID(), reinterpret_cast<void**>( &psvc ) );
213  }
214 
216  SmartIF<IService> service( std::string_view name, const bool createIf = true, const bool quiet = false ) const;
217 
218  template <class T>
219  SmartIF<T> service( std::string_view name, bool createIf = true, bool quiet = false ) const {
220  return service( name, createIf, quiet ).as<T>();
221  }
222 
226  SmartIF<IAuditorSvc>& auditorSvc() const;
227 
231  SmartIF<IChronoStatSvc>& chronoSvc() const;
232 
236  SmartIF<IDataProviderSvc>& detSvc() const;
237 
241  SmartIF<IConversionSvc>& detCnvSvc() const;
242 
246  SmartIF<IDataProviderSvc>& eventSvc() const;
248  SmartIF<IDataProviderSvc>& evtSvc() const { return eventSvc(); }
249 
253  SmartIF<IConversionSvc>& eventCnvSvc() const;
254 
258  SmartIF<IHistogramSvc>& histoSvc() const;
259 
263  SmartIF<INTupleSvc>& ntupleSvc() const;
264 
268  SmartIF<IRndmGenSvc>& randSvc() const;
269 
271  SmartIF<IToolSvc>& toolSvc() const;
272 
274  SmartIF<IExceptionSvc>& exceptionSvc() const;
275 
277  SmartIF<IAlgContextSvc>& contextSvc() const;
278 
279  SmartIF<ITimelineSvc>& timelineSvc() const;
280 
286  SmartIF<ISvcLocator>& serviceLocator() const override;
288  SmartIF<ISvcLocator>& svcLoc() const { return serviceLocator(); }
289 
291 
292  SmartIF<IAlgExecStateSvc>& algExecStateSvc() const;
293 
295  bool registerContext() const { return m_registerContext; }
296 
297  // ==========================================================================
298  using PropertyHolderImpl::declareProperty;
299 
300  // declare Tools to the Algorithms
301  template <class T>
303  const std::string& doc = "none" ) {
304  this->declareTool( hndl, hndl.typeAndName() ).ignore();
305  return PropertyHolderImpl::declareProperty( name, hndl, doc );
306  }
307 
308  // ==========================================================================
309  // declare ToolHandleArrays to the Algorithms
310 
311  template <class T>
313  const std::string& doc = "none" ) {
314  addToolsArray( hndlArr );
315  return PropertyHolderImpl::declareProperty( name, hndlArr, doc );
316  }
317 
318  // ==========================================================================
329  // If not already located try to locate it without forcing a creation
330  if ( !m_pMonitorSvc ) {
331  m_pMonitorSvc = service( m_monitorSvcName, false, true ); // do not create and be quiet
332  }
333  return m_pMonitorSvc;
334  }
335 
341  template <class T>
342  void declareInfo( const std::string& name, const T& var, const std::string& desc ) const {
343  IMonitorSvc* mS = monitorSvc().get();
344  if ( mS ) mS->declareInfo( name, var, desc, this );
345  }
346 
354  void declareInfo( const std::string& name, const std::string& format, const void* var, int size,
355  const std::string& desc ) const {
356  IMonitorSvc* mS = monitorSvc().get();
357  if ( mS ) mS->declareInfo( name, format, var, size, desc, this );
358  }
359 
360  public:
361  void acceptDHVisitor( IDataHandleVisitor* ) const override;
362 
363  void registerTool( IAlgTool* tool ) const;
364  void deregisterTool( IAlgTool* tool ) const;
365 
366  template <class T>
367  StatusCode declareTool( ToolHandle<T>& handle, bool createIf = true ) {
368  return this->declareTool( handle, handle.typeAndName(), createIf );
369  }
370 
371  template <class T>
372  StatusCode declareTool( ToolHandle<T>& handle, std::string toolTypeAndName, bool createIf = true ) {
373 
374  StatusCode sc = handle.initialize( toolTypeAndName, handle.isPublic() ? nullptr : this, createIf );
375  if ( !sc ) {
376  throw GaudiException{ std::string{ "Cannot create handle for " } +
377  ( handle.isPublic() ? "public" : "private" ) + " tool " + toolTypeAndName,
378  name(), sc };
379  }
380 
381  m_toolHandles.push_back( &handle );
382 
383  return sc;
384  }
385 
386  template <class T>
388  m_toolHandleArrays.push_back( &hndlArr );
389  }
390 
391  const std::vector<IAlgTool*>& tools() const;
392 
393  // Return the blocking flag
394  bool isBlocking() const { return m_blocking; }
395  // Set the blocking flag
396  void setBlocking( bool value ) { m_blocking = value; }
397 
398  protected:
399  std::vector<IAlgTool*>& tools();
400 
401  // // adds declared in- and outputs of subAlgorithms to own DOHs
402  // void addSubAlgorithmDataObjectHandles();
403 
404  private:
405  // place IAlgTools defined via ToolHandles in m_tools
406  void initToolHandles() const;
407 
408  public:
409  // /// Specifies the clonability of the algorithm
410  // bool isClonable() const override { return false; }
411 
413  unsigned int cardinality() const override { return m_cardinality; }
414 
415  const std::vector<std::string>& neededResources() const override { return m_neededResources; }
416 
417  protected:
419  bool isInitialized() const override { return Gaudi::StateMachine::INITIALIZED == m_state; }
420 
422  bool isFinalized() const override { return Gaudi::StateMachine::CONFIGURED == m_state; }
423 
425  void setIndex( const unsigned int& idx ) override;
426 
427  public:
429  AlgExecState& execState( const EventContext& ctx ) const override;
430 
432  std::ostream& toControlFlowExpression( std::ostream& os ) const override;
433 
434  private:
435  unsigned int maxErrors() const { return m_errorMax; }
436 
437  protected:
438  bool isReEntrant() const override { return true; }
439 
440  private:
444  unsigned int m_index = 0;
445 
446  // tools used by algorithm
450 
451  private:
452  template <typename IFace>
453  SmartIF<IFace>& get_svc_( SmartIF<IFace>& p, const char* service_name ) const;
454 
470 
473 
475 
476  protected:
479 
480  private:
481  // Properties
482  Gaudi::Property<int> m_outputLevel{
483  this, "OutputLevel", MSG::NIL,
484  [this]( Gaudi::Details::PropertyBase& ) { this->updateMsgStreamOutputLevel( this->m_outputLevel ); },
485  "output level" };
486  Gaudi::Property<bool> m_isEnabled{ this, "Enable", true, "should the algorithm be executed or not" };
487 
488  Gaudi::Property<unsigned int> m_errorMax{ this, "ErrorMax", 1, "[[deprecated]] max number of errors" };
489 
490  Gaudi::Property<bool> m_auditInit{ this, "AuditAlgorithms", Details::getDefaultAuditorValue( m_pSvcLocator ),
491  "[[deprecated]] unused" };
492  Gaudi::Property<bool> m_auditorInitialize{ this, "AuditInitialize", m_auditInit.value(),
493  "trigger auditor on initialize()" };
494  Gaudi::Property<bool> m_auditorReinitialize{ this, "AuditReinitialize", m_auditInit.value(),
495  "trigger auditor on reinitialize()" };
496  Gaudi::Property<bool> m_auditorRestart{ this, "AuditRestart", m_auditInit.value(), "trigger auditor on restart()" };
497  Gaudi::Property<bool> m_auditorExecute{ this, "AuditExecute", m_auditInit.value(), "trigger auditor on execute()" };
498  Gaudi::Property<bool> m_auditorFinalize{ this, "AuditFinalize", m_auditInit.value(),
499  "trigger auditor on finalize()" };
500  Gaudi::Property<bool> m_auditorStart{ this, "AuditStart", m_auditInit.value(), "trigger auditor on start()" };
501  Gaudi::Property<bool> m_auditorStop{ this, "AuditStop", m_auditInit.value(), "trigger auditor on stop()" };
502 
503  Gaudi::Property<bool> m_doTimeline{ this, "Timeline", true, "send events to TimelineSvc" };
504 
505  Gaudi::Property<std::string> m_monitorSvcName{ this, "MonitorService", "MonitorSvc",
506  "name to use for Monitor Service" };
507 
508  Gaudi::Property<bool> m_registerContext{ this, "RegisterForContextService", false,
509  "flag to enforce the registration for Algorithm Context Service" };
510 
511  Gaudi::Property<int> m_cardinality{ this, "Cardinality", 0,
512  "how many clones to create - 0 means algo is reentrant" };
514  this, "NeededResources", {}, "named resources needed during event looping" };
515 
517  this, "Blocking", false,
518  "if algorithm invokes CPU-blocking system calls (offloads computations to accelerators or "
519  "quantum processors, performs disk or network I/O, is bound by resource synchronization, etc)" };
520 
521  // The default should be changed to "false" for v29
522  Gaudi::Property<bool> m_filterCircDeps{ this, "FilterCircularDependencies", true,
523  "filter out circular data dependencies" };
524 
525  mutable bool m_toolHandlesInit = false;
526 
530 
532  StatusCode service_i( std::string_view svcName, bool createIf, const InterfaceID& iid, void** ppSvc ) const;
533  StatusCode service_i( std::string_view svcType, std::string_view svcName, const InterfaceID& iid,
534  void** ppSvc ) const;
535 
537  Algorithm( const Algorithm& ) = delete;
538 
540  Algorithm& operator=( const Algorithm& ) = delete;
541  };
542 } // namespace Gaudi
Gaudi::Algorithm::m_pSvcLocator
SmartIF< ISvcLocator > m_pSvcLocator
Pointer to service locator service.
Definition: Algorithm.h:474
ITimelineSvc.h
Gaudi::Details::PropertyBase
PropertyBase base class allowing PropertyBase* collections to be "homogeneous".
Definition: PropertyBase.h:35
Gaudi::Algorithm::m_isFinalized
bool m_isFinalized
Algorithm has been finalized flag.
Definition: Algorithm.h:529
Gaudi::Algorithm::m_RGS
SmartIF< IRndmGenSvc > m_RGS
Random Number Generator Service.
Definition: Algorithm.h:464
Gaudi::Algorithm::m_EXS
SmartIF< IExceptionSvc > m_EXS
Exception Handler Service.
Definition: Algorithm.h:465
Gaudi::Algorithm::svcLoc
SmartIF< ISvcLocator > & svcLoc() const
shortcut for method serviceLocator
Definition: Algorithm.h:288
DataHandleHolderBase
Definition: DataHandleHolderBase.h:34
IService.h
std::string
STL class.
IAlgTool
Definition: IAlgTool.h:33
details::size
constexpr auto size(const T &, Args &&...) noexcept
Definition: AnyDataWrapper.h:22
Gaudi::Algorithm::declareProperty
Gaudi::Details::PropertyBase * declareProperty(const std::string &name, ToolHandleArray< T > &hndlArr, const std::string &doc="none")
Definition: Algorithm.h:312
Gaudi::Algorithm::setType
void setType(std::string type) override
Definition: Algorithm.h:166
Gaudi::Algorithm::declareTool
StatusCode declareTool(ToolHandle< T > &handle, std::string toolTypeAndName, bool createIf=true)
Definition: Algorithm.h:372
std::move
T move(T... args)
bug_34121.name
name
Definition: bug_34121.py:20
Gaudi::Algorithm::isBlocking
bool isBlocking() const
Definition: Algorithm.h:394
Gaudi::Algorithm::m_pAuditorSvc
SmartIF< IAuditorSvc > m_pAuditorSvc
Auditor Service.
Definition: Algorithm.h:466
System.h
Gaudi::Algorithm::addToolsArray
void addToolsArray(ToolHandleArray< T > &hndlArr)
Definition: Algorithm.h:387
Gaudi::Algorithm::isInitialized
bool isInitialized() const override
Has the Algorithm already been initialized?
Definition: Algorithm.h:419
Gaudi::Algorithm::type
const std::string & type() const override
The type of the algorithm object.
Definition: Algorithm.h:165
std::vector< IAlgTool * >
ISvcLocator
Definition: ISvcLocator.h:46
Gaudi::Algorithm::initialize
StatusCode initialize() override
the default (empty) implementation of IStateful::initialize() method
Definition: Algorithm.h:178
GaudiException
Definition: GaudiException.h:31
IRndmGenSvc.h
Gaudi::Algorithm::declareProperty
Gaudi::Details::PropertyBase * declareProperty(const std::string &name, ToolHandle< T > &hndl, const std::string &doc="none")
Definition: Algorithm.h:302
Gaudi::Algorithm::m_ptoolSvc
SmartIF< IToolSvc > m_ptoolSvc
ToolSvc Service.
Definition: Algorithm.h:467
Gaudi::Algorithm::m_WB
SmartIF< IHiveWhiteBoard > m_WB
Event data service (whiteboard)
Definition: Algorithm.h:457
Gaudi::Algorithm::m_HDS
SmartIF< IHistogramSvc > m_HDS
Histogram data service.
Definition: Algorithm.h:461
Gaudi::Algorithm::m_CSS
SmartIF< IChronoStatSvc > m_CSS
Chrono & Stat Service.
Definition: Algorithm.h:463
Gaudi::Algorithm::configure
StatusCode configure() override
Dummy implementation of IStateful::configure() method.
Definition: Algorithm.h:173
DataObjID.h
Gaudi::Algorithm::m_updateDataHandles
std::unique_ptr< IDataHandleVisitor > m_updateDataHandles
Hook for for derived classes to provide a custom visitor for data handles.
Definition: Algorithm.h:478
IMonitorSvc
Definition: IMonitorSvc.h:33
Gaudi::Algorithm::start
StatusCode start() override
the default (empty) implementation of IStateful::start() method
Definition: Algorithm.h:180
Gaudi::Algorithm::maxErrors
unsigned int maxErrors() const
Definition: Algorithm.h:435
IMessageSvc.h
Gaudi::Algorithm::service
SmartIF< T > service(std::string_view name, bool createIf=true, bool quiet=false) const
Definition: Algorithm.h:219
IAuditorSvc.h
IDataProviderSvc.h
IExceptionSvc.h
Gaudi::Algorithm::declareTool
StatusCode declareTool(ToolHandle< T > &handle, bool createIf=true)
Definition: Algorithm.h:367
AlgorithmManager
Definition: AlgorithmManager.h:41
Gaudi::Algorithm::isReEntrant
bool isReEntrant() const override
Definition: Algorithm.h:438
IToolSvc.h
Gaudi::Algorithm::cardinality
unsigned int cardinality() const override
Return the cardinality.
Definition: Algorithm.h:413
Gaudi::Algorithm::m_ECS
SmartIF< IConversionSvc > m_ECS
Event conversion service.
Definition: Algorithm.h:458
Gaudi::Algorithm::m_NTS
SmartIF< INTupleSvc > m_NTS
N tuple service.
Definition: Algorithm.h:462
Gaudi::StateMachine::State
State
Allowed states for classes implementing the state machine (ApplicationMgr, Algorithm,...
Definition: StateMachine.h:22
Gaudi::StringKey
Definition: StringKey.h:44
PluginService.h
ToolHandle
Definition: ToolHandle.h:132
bug_34121.tool
tool
Definition: bug_34121.py:17
Gaudi::StateMachine::CONFIGURED
@ CONFIGURED
Definition: StateMachine.h:24
GaudiPython.Pythonizations.ctx
ctx
Definition: Pythonizations.py:588
StatusCode
Definition: StatusCode.h:65
IAlgorithm
Definition: IAlgorithm.h:38
IMonitorSvc::declareInfo
virtual void declareInfo(const std::string &name, const bool &var, const std::string &desc, const IInterface *owner)=0
Declare monitoring information.
Gaudi::Algorithm::FSMState
Gaudi::StateMachine::State FSMState() const override
returns the current state of the algorithm
Definition: Algorithm.h:190
Gaudi::Algorithm::m_contextSvc
SmartIF< IAlgContextSvc > m_contextSvc
Algorithm Context Service.
Definition: Algorithm.h:469
Gaudi::Details::getDefaultAuditorValue
bool getDefaultAuditorValue(ISvcLocator *loc)
Definition: Algorithm.cpp:46
std::ostream
STL class.
ToolHandleInfo
General info and helper functions for toolhandles and arrays.
Definition: ToolHandle.h:42
PACKAGE_VERSION
#define PACKAGE_VERSION
Definition: Algorithm.h:58
conf.version
string version
Definition: conf.py:25
Gaudi::Algorithm
Base class from which all concrete algorithm classes should be derived.
Definition: Algorithm.h:90
ToolHandleArray
Definition: ToolHandle.h:399
Gaudi::Algorithm::setBlocking
void setBlocking(bool value)
Definition: Algorithm.h:396
Gaudi::Property::value
const ValueType & value() const
Definition: Property.h:239
IStateful.h
SmartIF< IService >
CommonMessaging.h
IHiveWhiteBoard.h
Gaudi::Algorithm::m_name
Gaudi::StringKey m_name
Algorithm's name for identification.
Definition: Algorithm.h:441
format
GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".
Definition: MsgStream.cpp:119
Gaudi::Algorithm::Algorithm
Algorithm(const Algorithm &)=delete
delete copy constructor: NO COPY ALLOWED
Gaudi::Algorithm::Factory
Gaudi::PluginService::Factory< IAlgorithm *(const std::string &, ISvcLocator *)> Factory
Definition: Algorithm.h:93
Gaudi::Algorithm::m_EDS
SmartIF< IDataProviderSvc > m_EDS
Event data service.
Definition: Algorithm.h:456
Gaudi
Header file for std:chrono::duration-based Counters.
Definition: __init__.py:1
Gaudi::Algorithm::monitorSvc
SmartIF< IMonitorSvc > & monitorSvc() const
Access the monitor service.
Definition: Algorithm.h:328
IDataHandleVisitor
Definition: IDataHandleHolder.h:46
Gaudi::Algorithm::m_MS
SmartIF< IMessageSvc > m_MS
Message service.
Definition: Algorithm.h:455
ToolHandleInfo::isPublic
bool isPublic() const noexcept
Definition: ToolHandle.h:51
Gaudi::Algorithm::m_tools
std::vector< IAlgTool * > m_tools
Definition: Algorithm.h:447
IMonitorSvc.h
gaudirun.type
type
Definition: gaudirun.py:162
Gaudi::Algorithm::m_toolHandles
std::vector< BaseToolHandle * > m_toolHandles
Definition: Algorithm.h:448
Gaudi::Algorithm::finalize
StatusCode finalize() override
the default (empty) implementation of IStateful::finalize() method
Definition: Algorithm.h:184
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:100
Gaudi::Algorithm::evtSvc
SmartIF< IDataProviderSvc > & evtSvc() const
shortcut for method eventSvc
Definition: Algorithm.h:248
IAlgContextSvc.h
Gaudi::Algorithm::m_toolHandleArrays
std::vector< GaudiHandleArrayBase * > m_toolHandleArrays
Definition: Algorithm.h:449
IChronoStatSvc.h
DataHandleHolderBase.h
EventContext.h
Gaudi::Algorithm::m_timelineSvc
SmartIF< ITimelineSvc > m_timelineSvc
Timeline Service.
Definition: Algorithm.h:471
ToolHandle.h
std
STL namespace.
MSG::NIL
@ NIL
Definition: IMessageSvc.h:25
Gaudi::Algorithm::service
StatusCode service(std::string_view name, T *&psvc, bool createIf=true) const
Access a service by name, creating it if it doesn't already exist.
Definition: Algorithm.h:205
Gaudi::StateMachine::INITIALIZED
@ INITIALIZED
Definition: StateMachine.h:25
EventContext
Definition: EventContext.h:34
Gaudi::Algorithm::AlgorithmManager
friend AlgorithmManager
Definition: Algorithm.h:95
Gaudi::Algorithm::m_version
std::string m_version
Algorithm's version.
Definition: Algorithm.h:443
Gaudi::Algorithm::terminate
StatusCode terminate() override
Dummy implementation of IStateful::terminate() method.
Definition: Algorithm.h:175
Gaudi::Algorithm::m_DDS
SmartIF< IDataProviderSvc > m_DDS
Detector data service.
Definition: Algorithm.h:459
Gaudi::Algorithm::declareInfo
void declareInfo(const std::string &name, const T &var, const std::string &desc) const
Declare monitoring information.
Definition: Algorithm.h:342
Gaudi::Algorithm::neededResources
const std::vector< std::string > & neededResources() const override
Definition: Algorithm.h:415
DataHandle.h
AlgToolsClone.whiteboard
whiteboard
Definition: AlgToolsClone.py:41
Gaudi::Algorithm::service
StatusCode service(std::string_view svcType, std::string_view svcName, T *&psvc) const
Access a service by name and type, creating it if it doesn't already exist.
Definition: Algorithm.h:211
ToolHandle::initialize
StatusCode initialize(const std::string &toolTypeAndName, const IInterface *parent=nullptr, bool createIf=true)
Definition: ToolHandle.h:213
Gaudi::Algorithm::declareInfo
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)
Definition: Algorithm.h:354
IProperty.h
Gaudi::Algorithm::operator=
Algorithm & operator=(const Algorithm &)=delete
delete assignment operator: NO ASSIGNMENT ALLOWED
Gaudi::Algorithm::m_aess
SmartIF< IAlgExecStateSvc > m_aess
Alg execution state mgr.
Definition: Algorithm.h:472
Gaudi::Algorithm::m_pMonitorSvc
SmartIF< IMonitorSvc > m_pMonitorSvc
Online Monitoring Service.
Definition: Algorithm.h:468
ToolHandle::typeAndName
std::string typeAndName() const override
Definition: ToolHandle.h:273
InterfaceID
Definition: IInterface.h:39
Gaudi::Algorithm::Algorithm
Algorithm(std::string name, ISvcLocator *svcloc, std::string version=PACKAGE_VERSION)
Constructor.
Definition: Algorithm.h:101
IAlgorithm.h
AlgExecState
Definition: IAlgExecStateSvc.h:37
IConversionSvc.h
ISvcLocator.h
IAlgExecStateSvc.h
Gaudi::Algorithm::registerContext
bool registerContext() const
register for Algorithm Context Service?
Definition: Algorithm.h:295
std::unique_ptr< IDataHandleVisitor >
Gaudi::Algorithm::m_type
std::string m_type
Algorithm's type.
Definition: Algorithm.h:442
Gaudi::Algorithm::stop
StatusCode stop() override
the default (empty) implementation of IStateful::stop() method
Definition: Algorithm.h:182
PropertyHolder.h
Gaudi::Algorithm::isSequence
bool isSequence() const override
Are we a Sequence?
Definition: Algorithm.h:198
GAUDI_API
#define GAUDI_API
Definition: Kernel.h:81
Gaudi::Property< int >
IHistogramSvc.h
Gaudi::Algorithm::targetFSMState
Gaudi::StateMachine::State targetFSMState() const override
returns the state the algorithm will be in after the ongoing transition
Definition: Algorithm.h:192
Gaudi::Algorithm::isFinalized
bool isFinalized() const override
Has the Algorithm already been finalized?
Definition: Algorithm.h:422
INTupleSvc.h
Property.h
Gaudi::Algorithm::m_DCS
SmartIF< IConversionSvc > m_DCS
Detector conversion service.
Definition: Algorithm.h:460