The Gaudi Framework  master (d98a2936)
AlgTool.cpp
Go to the documentation of this file.
1 /***********************************************************************************\
2 * (c) Copyright 1998-2025 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 #include <Gaudi/Algorithm.h>
12 #include <Gaudi/Auditor.h>
13 #include <GaudiKernel/AlgTool.h>
16 #include <GaudiKernel/Guards.h>
20 #include <GaudiKernel/Service.h>
22 #include <GaudiKernel/System.h>
23 #include <GaudiKernel/ToolHandle.h>
24 
25 namespace {
26  template <typename FUN>
27  StatusCode attempt( AlgTool& tool, const char* label, FUN&& fun ) {
28  try {
29  return fun();
30  } catch ( const GaudiException& Exception ) {
31  MsgStream log( tool.msgSvc(), tool.name() + "." + label );
32  log << MSG::FATAL << " Exception with tag=" << Exception.tag() << " is caught" << endmsg;
33  log << MSG::ERROR << Exception << endmsg;
34  } catch ( const std::exception& Exception ) {
35  MsgStream log( tool.msgSvc(), tool.name() + "." + label );
36  log << MSG::FATAL << " Standard std::exception is caught" << endmsg;
37  log << MSG::ERROR << Exception.what() << endmsg;
38  } catch ( ... ) {
39  MsgStream log( tool.msgSvc(), tool.name() + "." + label );
40  log << MSG::FATAL << "UNKNOWN Exception is caught" << endmsg;
41  }
42  return StatusCode::FAILURE;
43  }
44 } // namespace
45 
46 StatusCode AlgTool::queryInterface( const InterfaceID& riid, void** ppvi ) {
47  if ( !ppvi ) { return StatusCode::FAILURE; }
48  StatusCode sc = base_class::queryInterface( riid, ppvi );
49  if ( sc.isSuccess() ) return sc;
50  auto i = std::find_if( std::begin( m_interfaceList ), std::end( m_interfaceList ),
51  [&]( const std::pair<InterfaceID, void*>& item ) { return item.first.versionMatch( riid ); } );
52  if ( i == std::end( m_interfaceList ) ) {
53  *ppvi = nullptr;
54  return Status::NO_INTERFACE;
55  }
56  *ppvi = i->second;
57  addRef();
58  return StatusCode::SUCCESS;
59 }
60 
61 void const* AlgTool::i_cast( const InterfaceID& riid ) const {
62  if ( auto output = base_class::i_cast( riid ) ) { return output; }
63  if ( auto i =
65  [&]( const std::pair<InterfaceID, void*>& item ) { return item.first.versionMatch( riid ); } );
66  i != std::end( m_interfaceList ) ) {
67  return i->second;
68  }
69  return nullptr;
70 }
71 
72 const std::string& AlgTool::name() const { return m_name; }
73 
74 const std::string& AlgTool::type() const { return m_type; }
75 
76 const IInterface* AlgTool::parent() const { return m_parent; }
77 
79 
81  if ( !m_evtSvc ) {
82  m_evtSvc = service( "EventDataSvc", true );
83  if ( !m_evtSvc ) { throw GaudiException( "Service [EventDataSvc] not found", name(), StatusCode::FAILURE ); }
84  }
85  return m_evtSvc.get();
86 }
88  if ( !m_ptoolSvc ) {
89  m_ptoolSvc = service( "ToolSvc", true );
90  if ( !m_ptoolSvc ) { throw GaudiException( "Service [ToolSvc] not found", name(), StatusCode::FAILURE ); }
91  }
92  return m_ptoolSvc.get();
93 }
94 
95 AlgTool::AlgTool( std::string type, std::string name, const IInterface* parent )
96  : m_type( std::move( type ) ), m_name( std::move( name ) ), m_parent( parent ) {
97  addRef(); // Initial count set to 1
98 
99  IInterface* _p = const_cast<IInterface*>( parent );
100 
101  if ( Gaudi::Algorithm* _alg = dynamic_cast<Gaudi::Algorithm*>( _p ) ) {
102  m_svcLocator = _alg->serviceLocator();
103  } else if ( Service* _svc = dynamic_cast<Service*>( _p ) ) {
104  m_svcLocator = _svc->serviceLocator();
105  } else if ( AlgTool* _too = dynamic_cast<AlgTool*>( _p ) ) {
106  m_svcLocator = _too->serviceLocator();
107  } else if ( Gaudi::Auditor* _aud = dynamic_cast<Gaudi::Auditor*>( _p ) ) {
108  m_svcLocator = _aud->serviceLocator();
109  } else {
110  throw GaudiException( "Failure to create tool '" + m_type + "/" + m_name + "': illegal parent type '" +
111  System::typeinfoName( typeid( *_p ) ) + "'",
112  "AlgTool", StatusCode::FAILURE );
113  }
114 
115  // inherit output level from parent
116  // get the "OutputLevel" property from parent
117  if ( SmartIF<IProperty> pprop( _p ); pprop && pprop->hasProperty( "OutputLevel" ) ) {
118  m_outputLevel.assign( pprop->getProperty( "OutputLevel" ) );
119  }
120 
121  // Auditor monitoring properties
122  // Initialize the default value from ApplicationMgr AuditAlgorithms
123  Gaudi::Property<bool> audit( "AuditTools", false );
124  // note that here we need that the service locator is already defined
125  if ( auto appMgr = serviceLocator()->service<IProperty>( "ApplicationMgr" ) ) {
126  appMgr->getProperty( &audit ).ignore();
127  }
128 
129  m_auditorInitialize = audit;
130  m_auditorStart = audit;
131  m_auditorStop = audit;
132  m_auditorFinalize = audit;
133  m_auditorReinitialize = audit;
134  m_auditorRestart = audit;
135 }
136 
138  return attempt( *this, "sysInitialize", [&]() {
141  // check if we want to audit the initialize
143  StatusCode sc = initialize();
144  if ( !sc ) return sc;
145 
148 
149  // check for explicit circular data dependencies in declared handles
151  for ( auto& h : outputHandles() ) {
152  if ( !h->objKey().empty() ) out.emplace( h->fullKey() );
153  }
154  for ( auto& h : inputHandles() ) {
155  if ( !h->objKey().empty() && out.find( h->fullKey() ) != out.end() ) {
156  error() << "Explicit circular data dependency found for id " << h->fullKey() << endmsg;
157  sc = StatusCode::FAILURE;
158  }
159  }
160 
161  if ( !sc ) return sc;
162 
163  // visit all sub-tools, build full set
165  acceptDHVisitor( &avis );
166 
167  // initialize handles
168  initDataHandleHolder(); // this should 'freeze' the handle configuration.
169 
170  return sc;
171  } );
172 }
174  // For the time being there is nothing to be done here.
175  // Setting the properties is done by the ToolSvc calling setProperties()
176  // explicitly.
177  return StatusCode::SUCCESS;
178 }
179 
181  return attempt( *this, "sysStart", [&]() {
184  // check if we want to audit the initialize
186  StatusCode sc = start();
187  if ( sc.isSuccess() ) m_state = m_targetState;
188  return sc;
189  } );
190 }
191 
193  // For the time being there is nothing to be done here.
194  return StatusCode::SUCCESS;
195 }
196 
198  return attempt( *this, "sysStop", [&]() {
201  // check if we want to audit the initialize
203  StatusCode sc = stop();
204  if ( sc.isSuccess() ) m_state = m_targetState;
205  return sc;
206  } );
207 }
208 
210  // For the time being there is nothing to be done here.
211  return StatusCode::SUCCESS;
212 }
213 
215  return attempt( *this, "sysFinalize", [&]() {
218  // check if we want to audit the initialize
220  StatusCode sc = finalize();
221  if ( sc.isSuccess() ) m_state = m_targetState;
222  return sc;
223  } );
224 }
226  // For the time being there is nothing to be done here.
227  return StatusCode::SUCCESS;
228 }
229 
231 
232  // Check that the current status is the correct one.
234  error() << "sysReinitialize(): cannot reinitialize tool not initialized" << endmsg;
235  return StatusCode::FAILURE;
236  }
237 
238  return attempt( *this, "SysReinitialize()", [&]() {
240  // check if we want to audit the initialize
242  return reinitialize();
243  } );
244 }
245 
247  /* @TODO
248  * MCl 2008-10-23: the implementation of reinitialize as finalize+initialize
249  * is causing too many problems
250  *
251  // Default implementation is finalize+initialize
252  StatusCode sc = finalize();
253  if (sc.isFailure()) {
254  error() << "reinitialize(): cannot be finalized" << endmsg;
255  return sc;
256  }
257  sc = initialize();
258  if (sc.isFailure()) {
259  error() << "reinitialize(): cannot be initialized" << endmsg;
260  return sc;
261  }
262  */
263  return StatusCode::SUCCESS;
264 }
265 
267 
268  // Check that the current status is the correct one.
270  error() << "sysRestart(): cannot reinitialize tool not started" << endmsg;
271  return StatusCode::FAILURE;
272  }
273 
274  return attempt( *this, "sysRestart", [&]() {
277  // check if we want to audit the initialize
279  return restart();
280  } );
281 }
282 
284  // Default implementation is stop+start
285  StatusCode sc = stop();
286  if ( sc.isFailure() ) {
287  error() << "restart(): cannot be stopped" << endmsg;
288  return sc;
289  }
290  sc = start();
291  if ( sc.isFailure() ) {
292  error() << "restart(): cannot be started" << endmsg;
293  return sc;
294  }
295  return StatusCode::SUCCESS;
296 }
297 
299  if ( m_pMonitorSvc ) { m_pMonitorSvc->undeclareAll( this ); }
300 }
301 
303  auto init_one = [&]( BaseToolHandle* th ) {
304  if ( !th->isEnabled() ) {
305  if ( msgLevel( MSG::DEBUG ) && !th->typeAndName().empty() )
306  debug() << "ToolHandle " << th->typeAndName() << " not used" << endmsg;
307  return;
308  }
309  if ( !th->get() ) {
310  auto sc = th->retrieve();
311  if ( sc.isFailure() ) {
312  throw GaudiException( "Failed to retrieve tool " + th->typeAndName(), this->name(), StatusCode::FAILURE );
313  }
314  }
315  auto* tool = th->get();
316  if ( msgLevel( MSG::DEBUG ) )
317  debug() << "Adding " << ( th->isPublic() ? "public" : "private" ) << " ToolHandle tool " << tool->name() << " ("
318  << tool->type() << ")" << endmsg;
319  m_tools.push_back( tool );
320  };
321 
322  for ( auto thArr : m_toolHandleArrays ) {
323  if ( msgLevel( MSG::DEBUG ) )
324  debug() << "Registering all Tools in ToolHandleArray " << thArr->propertyName() << endmsg;
325  // Iterate over its tools:
326  for ( auto toolHandle : thArr->getBaseArray() ) {
327  // Try to cast it into a BaseToolHandle pointer:
328  BaseToolHandle* bth = dynamic_cast<BaseToolHandle*>( toolHandle );
329  if ( bth ) {
330  init_one( bth );
331  } else {
332  error() << "Error retrieving Tool " << toolHandle->typeAndName() << " in ToolHandleArray "
333  << thArr->propertyName() << ". Not registered" << endmsg;
334  }
335  }
336  }
337 
338  for ( BaseToolHandle* th : m_toolHandles ) init_one( th );
339 
340  m_toolHandlesInit = true;
341 }
342 
343 const std::vector<IAlgTool*>& AlgTool::tools() const {
345 
346  return m_tools;
347 }
348 
349 std::vector<IAlgTool*>& AlgTool::tools() {
351 
352  return m_tools;
353 }
354 
355 SmartIF<IService> AlgTool::service( std::string_view name, const bool createIf, const bool quiet ) const {
356  const ServiceLocatorHelper helper( *serviceLocator(), *this );
357  return helper.service( name, quiet, createIf );
358 }
359 
361  if ( !m_pAuditorSvc ) {
362  m_pAuditorSvc = service( "AuditorSvc", true );
363  if ( !m_pAuditorSvc ) { throw GaudiException( "Service [AuditorSvc] not found", name(), StatusCode::FAILURE ); }
364  }
365  return m_pAuditorSvc.get();
366 }
367 
369  vis->visit( this );
370 
371  for ( auto tool : tools() ) vis->visit( dynamic_cast<AlgTool*>( tool ) );
372 }
ServiceLocatorHelper::service
SmartIF< IService > service(std::string_view name, const bool quiet=false, const bool createIf=true) const
Definition: ServiceLocatorHelper.cpp:50
MSG::DEBUG
@ DEBUG
Definition: IMessageSvc.h:22
AlgTool::m_auditorFinalize
Gaudi::Property< bool > m_auditorFinalize
Definition: AlgTool.h:289
Gaudi::IAuditor::Initialize
static const std::string Initialize
Definition: IAuditor.h:47
AlgTool::m_auditorRestart
Gaudi::Property< bool > m_auditorRestart
Definition: AlgTool.h:291
AlgTool::m_pMonitorSvc
SmartIF< IMonitorSvc > m_pMonitorSvc
Online Monitoring Service.
Definition: AlgTool.h:271
Gaudi.Configuration.log
log
Definition: Configuration.py:28
AlgTool::m_toolHandles
std::vector< BaseToolHandle * > m_toolHandles
Definition: AlgTool.h:295
AlgTool::sysFinalize
StatusCode sysFinalize() override
Finalize AlgTool.
Definition: AlgTool.cpp:214
AlgTool::m_state
Gaudi::StateMachine::State m_state
flag indicating whether ToolHandle tools have been added to m_tools
Definition: AlgTool.h:299
StatusCode::isSuccess
bool isSuccess() const
Definition: StatusCode.h:314
GaudiPartProp.decorators.std
std
Definition: decorators.py:32
AlgTool::m_updateDataHandles
std::unique_ptr< IDataHandleVisitor > m_updateDataHandles
Hook for for derived classes to provide a custom visitor for data handles.
Definition: AlgTool.h:209
AlgTool::m_toolHandlesInit
bool m_toolHandlesInit
Definition: AlgTool.h:297
System.h
AlgTool::m_auditorStop
Gaudi::Property< bool > m_auditorStop
Definition: AlgTool.h:288
AlgTool::m_auditorReinitialize
Gaudi::Property< bool > m_auditorReinitialize
Definition: AlgTool.h:290
GaudiException.h
AlgTool::parent
const IInterface * parent() const override
Retrieve parent of the sub-algtool.
Definition: AlgTool.cpp:76
Gaudi::StateMachine::FINALIZE
@ FINALIZE
Definition: StateMachine.h:37
AlgTool::m_svcLocator
SmartIF< ISvcLocator > m_svcLocator
Pointer to Service Locator service.
Definition: AlgTool.h:268
AlgTool::restart
StatusCode restart() override
Definition: AlgTool.cpp:283
AlgTool::AlgTool
AlgTool(std::string type, std::string name, const IInterface *parent)
Standard Constructor.
Definition: AlgTool.cpp:95
GaudiException
Definition: GaudiException.h:29
AlgTool::m_evtSvc
SmartIF< IDataProviderSvc > m_evtSvc
Event data service.
Definition: AlgTool.h:269
AlgTool::m_auditorInitialize
Gaudi::Property< bool > m_auditorInitialize
Definition: AlgTool.h:286
Gaudi::IAuditor::ReInitialize
static const std::string ReInitialize
Definition: IAuditor.h:48
AlgTool::type
const std::string & type() const override
Retrieve type (concrete class) of the sub-algtool.
Definition: AlgTool.cpp:74
AlgTool::reinitialize
StatusCode reinitialize() override
Definition: AlgTool.cpp:246
DataHandleHolderBase< PropertyHolder< CommonMessaging< implements< IAlgTool, IDataHandleHolder, IProperty, IStateful > > > >::outputHandles
std::vector< Gaudi::DataHandle * > outputHandles() const override
Definition: DataHandleHolderBase.h:40
AlgTool::acceptDHVisitor
void acceptDHVisitor(IDataHandleVisitor *) const override
Definition: AlgTool.cpp:368
Gaudi::Property::assign
bool assign(const Details::PropertyBase &source) override
get the value from another property
Definition: Property.h:361
System::typeinfoName
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:260
AlgTool::m_tools
std::vector< IAlgTool * > m_tools
Definition: AlgTool.h:294
AlgTool::sysInitialize
StatusCode sysInitialize() override
Initialize AlgTool.
Definition: AlgTool.cpp:137
AlgTool::initialize
StatusCode initialize() override
Definition: AlgTool.cpp:173
gaudirun.output
output
Definition: gaudirun.py:521
AlgTool::m_targetState
Gaudi::StateMachine::State m_targetState
state of the Tool
Definition: AlgTool.h:300
AlgTool::sysReinitialize
StatusCode sysReinitialize() override
Initialize AlgTool.
Definition: AlgTool.cpp:230
DHHVisitor
Definition: DataHandleHolderVisitor.h:20
IMessageSvc.h
CommonMessaging< implements< IAlgTool, IDataHandleHolder, IProperty, IStateful > >::msgLevel
MSG::Level msgLevel() const
get the cached level (originally extracted from the embedded MsgStream)
Definition: CommonMessaging.h:147
AlgTool::auditorSvc
IAuditorSvc * auditorSvc() const
Access the auditor service.
Definition: AlgTool.cpp:360
AlgTool::FSMState
Gaudi::StateMachine::State FSMState() const override
Definition: AlgTool.h:84
AlgTool::name
const std::string & name() const override
Retrieve full identifying name of the concrete tool object.
Definition: AlgTool.cpp:72
Service
Definition: Service.h:39
DataHandleHolderBase< PropertyHolder< CommonMessaging< implements< IAlgTool, IDataHandleHolder, IProperty, IStateful > > > >::m_outputDataObjs
DataObjIDColl m_outputDataObjs
Definition: DataHandleHolderBase.h:97
Gaudi::Guards::AuditorGuard
Definition: Guards.h:203
Gaudi::StateMachine::INITIALIZE
@ INITIALIZE
Definition: StateMachine.h:34
Gaudi::IAuditor::Start
static const std::string Start
Definition: IAuditor.h:49
AlgTool::m_parent
const IInterface * m_parent
AlgTool parent.
Definition: AlgTool.h:266
AlgTool::service
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")
Definition: AlgTool.cpp:355
bug_34121.tool
tool
Definition: bug_34121.py:18
Gaudi::Utils::begin
AttribStringParser::Iterator begin(const AttribStringParser &parser)
Definition: AttribStringParser.h:135
AlgTool::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition: AlgTool.cpp:78
DataHandleHolderBase< PropertyHolder< CommonMessaging< implements< IAlgTool, IDataHandleHolder, IProperty, IStateful > > > >::initDataHandleHolder
void initDataHandleHolder()
initializes all handles - called by the sysInitialize method of any descendant of this
Definition: DataHandleHolderBase.h:93
StatusCode
Definition: StatusCode.h:64
Gaudi::Algorithm
Base class from which all concrete algorithm classes should be derived.
Definition: Algorithm.h:87
AlgSequencer.h
h
Definition: AlgSequencer.py:31
AlgTool::m_type
std::string m_type
AlgTool type (concrete class name)
Definition: AlgTool.h:264
DataHandleHolderVisitor.h
AlgTool::i_cast
void const * i_cast(const InterfaceID &riid) const override
Definition: AlgTool.cpp:61
DataHandleHolderBase< PropertyHolder< CommonMessaging< implements< IAlgTool, IDataHandleHolder, IProperty, IStateful > > > >::m_inputDataObjs
DataObjIDColl m_inputDataObjs
Definition: DataHandleHolderBase.h:97
ServiceLocatorHelper
an helper to share the implementation of service() among the various kernel base classes
Definition: ServiceLocatorHelper.h:26
AlgTool::sysStop
StatusCode sysStop() override
Stop AlgTool.
Definition: AlgTool.cpp:197
AlgTool::m_ptoolSvc
SmartIF< IToolSvc > m_ptoolSvc
Tool service.
Definition: AlgTool.h:270
AlgTool::m_toolHandleArrays
std::vector< GaudiHandleArrayBase * > m_toolHandleArrays
Definition: AlgTool.h:296
Algorithm.h
SmartIF< ISvcLocator >
AlgTool::sysRestart
StatusCode sysRestart() override
Start AlgTool.
Definition: AlgTool.cpp:266
DataObjIDColl
std::unordered_set< DataObjID, DataObjID_Hasher > DataObjIDColl
Definition: DataObjID.h:122
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:198
AlgTool::toolSvc
IToolSvc * toolSvc() const
The standard ToolSvc service, Return a pointer to the service if present.
Definition: AlgTool.cpp:87
Gaudi::StateMachine::RUNNING
@ RUNNING
Definition: StateMachine.h:25
MsgStream
Definition: MsgStream.h:29
MSG::FATAL
@ FATAL
Definition: IMessageSvc.h:22
IDataHandleVisitor
Definition: IDataHandleHolder.h:45
Service.h
DataHandleHolderBase< PropertyHolder< CommonMessaging< implements< IAlgTool, IDataHandleHolder, IProperty, IStateful > > > >::inputHandles
std::vector< Gaudi::DataHandle * > inputHandles() const override
Definition: DataHandleHolderBase.h:37
Gaudi::StateMachine::ChangeState
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...
Definition: StateMachine.cpp:19
StatusCode::isFailure
bool isFailure() const
Definition: StatusCode.h:129
AlgTool::m_interfaceList
InterfaceList m_interfaceList
Interface list.
Definition: AlgTool.h:274
gaudirun.type
type
Definition: gaudirun.py:160
ConditionsStallTest.name
name
Definition: ConditionsStallTest.py:77
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:99
IAuditorSvc
The interface implemented by the IAuditorSvc base class.
Definition: IAuditorSvc.h:24
AlgTool
Definition: AlgTool.h:55
BaseToolHandle
Definition: ToolHandle.h:78
SmartIF::get
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:82
AlgTool::evtSvc
IDataProviderSvc * evtSvc() const
accessor to event service service
Definition: AlgTool.cpp:80
Gaudi::IAuditor::Stop
static const std::string Stop
Definition: IAuditor.h:52
AlgTool::tools
const std::vector< IAlgTool * > & tools() const
Definition: AlgTool.cpp:343
ServiceLocatorHelper.h
AlgTool::queryInterface
StatusCode queryInterface(const InterfaceID &riid, void **ppvUnknown) override
Query for a given interface.
Definition: AlgTool.cpp:46
ToolHandle.h
Gaudi::StateMachine::INITIALIZED
@ INITIALIZED
Definition: StateMachine.h:24
MSG::ERROR
@ ERROR
Definition: IMessageSvc.h:22
IInterface
Definition: IInterface.h:225
Gaudi::StateMachine::START
@ START
Definition: StateMachine.h:35
Gaudi::IAuditor::Finalize
static const std::string Finalize
Definition: IAuditor.h:53
AlgTool::sysStart
StatusCode sysStart() override
Start AlgTool.
Definition: AlgTool.cpp:180
AlgTool::m_name
const std::string m_name
AlgTool full name.
Definition: AlgTool.h:265
AlgTool::m_pAuditorSvc
SmartIF< IAuditorSvc > m_pAuditorSvc
Auditor Service.
Definition: AlgTool.h:272
Gaudi::IAuditor::ReStart
static const std::string ReStart
Definition: IAuditor.h:50
AlgTool.h
IDataProviderSvc
Definition: IDataProviderSvc.h:48
InterfaceID
Definition: IInterface.h:38
IOTest.end
end
Definition: IOTest.py:125
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:100
Guards.h
Gaudi::Auditor
Base class from which all concrete auditor classes should be derived.
Definition: Auditor.h:33
ISvcLocator.h
Gaudi::Details::Property::ParsingErrorPolicy::Exception
@ Exception
AlgTool::stop
StatusCode stop() override
Definition: AlgTool.cpp:209
AlgTool::m_outputLevel
Gaudi::Property< int > m_outputLevel
Definition: AlgTool.h:278
IToolSvc
Definition: IToolSvc.h:28
AlgTool::~AlgTool
~AlgTool() override
Definition: AlgTool.cpp:298
IOTest.appMgr
appMgr
Definition: IOTest.py:105
AlgTool::m_auditorStart
Gaudi::Property< bool > m_auditorStart
Definition: AlgTool.h:287
Gaudi::Property< bool >
IDataManagerSvc.h
AlgTool::start
StatusCode start() override
Definition: AlgTool.cpp:192
Gaudi::StateMachine::STOP
@ STOP
Definition: StateMachine.h:36
IDataHandleVisitor::visit
virtual void visit(const IDataHandleHolder *)=0
AlgTool::initToolHandles
void initToolHandles() const
Definition: AlgTool.cpp:302
Gaudi::Functional::details::out
OptOut && out
Definition: details.h:179
Auditor.h
AlgTool::finalize
StatusCode finalize() override
Definition: AlgTool.cpp:225