The Gaudi Framework  v33r1 (b1225454)
TimingAuditor Class Reference

Simple auditor which uses SequencerTimerTool for ALL algorithms, including the algorithm from main Gaudi "TopAlg" list and algorithms managed by Data-On-Demand Service. More...

Inheritance diagram for TimingAuditor:
Collaboration diagram for TimingAuditor:

Public Member Functions

void before (StandardEventType evt, INamedInterface *alg) override
 
void after (StandardEventType evt, INamedInterface *alg, const StatusCode &sc) override
 
void before (CustomEventTypeRef evt, const std::string &name) override
 
void after (CustomEventTypeRef evt, const std::string &name, const StatusCode &sc) override
 
void handle (const Incident &) override
 Inform that a new incident has occurred. More...
 
StatusCode initialize () override
 factory: More...
 
StatusCode finalize () override
 
 TimingAuditor ()=delete
 
 TimingAuditor (const TimingAuditor &)=delete
 
TimingAuditoroperator= (const TimingAuditor &)=delete
 
void before (StandardEventType, INamedInterface *) override
 The following methods are meant to be implemented by the child class... More...
 
void before (StandardEventType, const std::string &) override
 
void before (CustomEventTypeRef, INamedInterface *) override
 
void before (CustomEventTypeRef, const std::string &) override
 
void after (StandardEventType, INamedInterface *, const StatusCode &) override
 
void after (StandardEventType, const std::string &, const StatusCode &) override
 
void after (CustomEventTypeRef, INamedInterface *, const StatusCode &) override
 
void after (CustomEventTypeRef, const std::string &, const StatusCode &) override
 
- Public Member Functions inherited from extends< Auditor, IIncidentListener >
void * i_cast (const InterfaceID &tid) const override
 Implementation of IInterface::i_cast. More...
 
StatusCode queryInterface (const InterfaceID &ti, void **pp) override
 Implementation of IInterface::queryInterface. More...
 
std::vector< std::stringgetInterfaceNames () const override
 Implementation of IInterface::getInterfaceNames. More...
 
- Public Member Functions inherited from Auditor
 Auditor (std::string name, ISvcLocator *svcloc)
 Constructor. More...
 
 Auditor (const Auditor &a)=delete
 
Auditoroperator= (const Auditor &rhs)=delete
 
StatusCode sysInitialize () override
 Initialization method invoked by the framework. More...
 
StatusCode sysFinalize () override
 Finalization method invoked by the framework. More...
 
void before (StandardEventType, INamedInterface *) override
 The following methods are meant to be implemented by the child class... More...
 
void before (StandardEventType, const std::string &) override
 
void before (CustomEventTypeRef, INamedInterface *) override
 
void before (CustomEventTypeRef, const std::string &) override
 
void after (StandardEventType, INamedInterface *, const StatusCode &) override
 
void after (StandardEventType, const std::string &, const StatusCode &) override
 
void after (CustomEventTypeRef, INamedInterface *, const StatusCode &) override
 
void after (CustomEventTypeRef, const std::string &, const StatusCode &) override
 
void beforeInitialize (INamedInterface *) override
 
void afterInitialize (INamedInterface *) override
 
void beforeReinitialize (INamedInterface *) override
 
void afterReinitialize (INamedInterface *) override
 
void beforeExecute (INamedInterface *) override
 
void afterExecute (INamedInterface *, const StatusCode &) override
 
void beforeFinalize (INamedInterface *) override
 
void afterFinalize (INamedInterface *) override
 
const std::stringname () const override
 
bool isEnabled () const override
 
SmartIF< ISvcLocator > & serviceLocator () const override
 The standard service locator. More...
 
template<class T >
StatusCode service (std::string_view name, T *&svc, bool createIf=false) const
 Access a service by name, creating it if it doesn't already exist. More...
 
template<class T = IService>
SmartIF< T > service (std::string_view name, bool createIf=false) const
 
StatusCode setProperties ()
 Set the auditor's properties. More...
 
- Public Member Functions inherited from PropertyHolder< CommonMessaging< implements< IAuditor, IProperty > > >
 PropertyHolder ()=default
 
Gaudi::Details::PropertyBasedeclareProperty (Gaudi::Details::PropertyBase &prop)
 Declare a property. More...
 
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. More...
 
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. More...
 
Gaudi::Details::PropertyBasedeclareRemoteProperty (const std::string &name, IProperty *rsvc, const std::string &rname="")
 Declare a remote property. More...
 
StatusCode setProperty (const Gaudi::Details::PropertyBase &p) override
 set the property form another property More...
 
StatusCode setProperty (const std::string &s) override
 set the property from the formatted string More...
 
StatusCode setProperty (const std::string &n, const std::string &v) override
 set the property from name and the value More...
 
StatusCode setProperty (const std::string &name, const TYPE &value)
 set the property form the value More...
 
StatusCode getProperty (Gaudi::Details::PropertyBase *p) const override
 get the property More...
 
const Gaudi::Details::PropertyBasegetProperty (const std::string &name) const override
 get the property by name More...
 
StatusCode getProperty (const std::string &n, std::string &v) const override
 convert the property to the string More...
 
const std::vector< Gaudi::Details::PropertyBase * > & getProperties () const override
 get all properties More...
 
bool hasProperty (const std::string &name) const override
 Return true if we have a property with the given name. More...
 
 PropertyHolder (const PropertyHolder &)=delete
 
PropertyHolderoperator= (const PropertyHolder &)=delete
 
- Public Member Functions inherited from CommonMessaging< implements< IAuditor, IProperty > >
MSG::Level msgLevel () const
 get the cached level (originally extracted from the embedded MsgStream) More...
 
bool msgLevel (MSG::Level lvl) const
 get the output level from the embedded MsgStream More...
 
- Public Member Functions inherited from CommonMessagingBase
virtual ~CommonMessagingBase ()=default
 Virtual destructor. More...
 
const SmartIF< IMessageSvc > & msgSvc () const
 The standard message service. More...
 
MsgStreammsgStream () const
 Return an uninitialized MsgStream. More...
 
MsgStreammsgStream (const MSG::Level level) const
 Predefined configurable message stream for the efficient printouts. More...
 
MsgStreamalways () const
 shortcut for the method msgStream(MSG::ALWAYS) More...
 
MsgStreamfatal () const
 shortcut for the method msgStream(MSG::FATAL) More...
 
MsgStreamerr () const
 shortcut for the method msgStream(MSG::ERROR) More...
 
MsgStreamerror () const
 shortcut for the method msgStream(MSG::ERROR) More...
 
MsgStreamwarning () const
 shortcut for the method msgStream(MSG::WARNING) More...
 
MsgStreaminfo () const
 shortcut for the method msgStream(MSG::INFO) More...
 
MsgStreamdebug () const
 shortcut for the method msgStream(MSG::DEBUG) More...
 
MsgStreamverbose () const
 shortcut for the method msgStream(MSG::VERBOSE) More...
 
MsgStreammsg () const
 shortcut for the method msgStream(MSG::INFO) More...
 

Private Member Functions

void i_beforeInitialize (INamedInterface *alg)
 
void i_afterInitialize (INamedInterface *alg)
 
void i_beforeFinalize (INamedInterface *alg)
 
void i_beforeExecute (INamedInterface *alg)
 
void i_afterExecute (INamedInterface *alg)
 

Private Attributes

SmartIF< IToolSvcm_toolSvc = nullptr
 tool service More...
 
SmartIF< IIncidentSvcm_incSvc = nullptr
 incident service More...
 
ISequencerTimerToolm_timer = nullptr
 the timer tool More...
 
SmartIF< INamedInterfacem_appMgr = nullptr
 ApplicationManager. More...
 
GaudiUtils::VectorMap< const INamedInterface *, int > m_map
 
int m_indent = 0
 indentation level More...
 
bool m_inEvent = false
 "In event" flag More...
 
GaudiUtils::HashMap< std::string, int > m_mapUser
 map used to record user timing events More...
 
bool m_histoSaved = false
 
Gaudi::Property< bool > m_goodForDOD {this, "OptimizedForDOD", false, "enable optimization for Data-On-Demand Service"}
 

Additional Inherited Members

- Public Types inherited from extends< Auditor, IIncidentListener >
using base_class = extends
 Typedef to this class. More...
 
using extend_interfaces_base = extend_interfaces< Interfaces... >
 Typedef to the base of this class. More...
 
- Public Types inherited from Auditor
using Factory = Gaudi::PluginService::Factory< IAuditor *(const std::string &, ISvcLocator *)>
 
- Public Types inherited from PropertyHolder< CommonMessaging< implements< IAuditor, IProperty > > >
using PropertyHolderImpl = PropertyHolder< CommonMessaging< implements< IAuditor, IProperty > > >
 Typedef used to refer to this class from derived classes, as in. More...
 
- Public Types inherited from CommonMessaging< implements< IAuditor, IProperty > >
using base_class = CommonMessaging
 
- Public Types inherited from extend_interfaces< Interfaces... >
using ext_iids = typename Gaudi::interface_list_cat< typename Interfaces::ext_iids... >::type
 take union of the ext_iids of all Interfaces... More...
 
- Protected Member Functions inherited from PropertyHolder< CommonMessaging< implements< IAuditor, IProperty > > >
Gaudi::Details::PropertyBaseproperty (const std::string &name) const
 
- Protected Member Functions inherited from CommonMessaging< implements< IAuditor, IProperty > >
MSG::Level setUpMessaging () const
 Set up local caches. More...
 
MSG::Level resetMessaging ()
 Reinitialize internal states. More...
 
void updateMsgStreamOutputLevel (int level)
 Update the output level of the cached MsgStream. More...
 

Detailed Description

Simple auditor which uses SequencerTimerTool for ALL algorithms, including the algorithm from main Gaudi "TopAlg" list and algorithms managed by Data-On-Demand Service.

Author
Vanya BELYAEV ibely.nosp@m.aev@.nosp@m.physi.nosp@m.cs.s.nosp@m.yr.ed.nosp@m.u
Date
2007-01-31

Definition at line 37 of file TimingAuditor.cpp.

Constructor & Destructor Documentation

◆ TimingAuditor() [1/2]

TimingAuditor::TimingAuditor ( )
delete

◆ TimingAuditor() [2/2]

TimingAuditor::TimingAuditor ( const TimingAuditor )
delete

Member Function Documentation

◆ after() [1/6]

void TimingAuditor::after ( StandardEventType  evt,
INamedInterface alg,
const StatusCode sc 
)
override

Definition at line 179 of file TimingAuditor.cpp.

179  {
180  switch ( evt ) {
183  break;
184  case IAuditor::Execute:
185  i_afterExecute( alg );
186  break;
187  default:
188  break;
189  }
190 }
void i_afterInitialize(INamedInterface *alg)
void i_afterExecute(INamedInterface *alg)

◆ after() [2/6]

void Auditor::after
override

Definition at line 108 of file Auditor.cpp.

108  {
109  switch ( evt ) {
110  case Initialize:
111  afterInitialize( obj );
112  break;
113  case ReInitialize:
114  afterReinitialize( obj );
115  break;
116  case Execute:
117  afterExecute( obj, sc );
118  break;
119  case Finalize:
120  afterFinalize( obj );
121  break;
122  case Start:
123  break;
124  case Stop:
125  break;
126  case ReStart:
127  break;
128  default:
129  break; // do nothing
130  }
131 }
void afterExecute(INamedInterface *, const StatusCode &) override
Definition: Auditor.cpp:142
void afterInitialize(INamedInterface *) override
Definition: Auditor.cpp:138
void afterFinalize(INamedInterface *) override
Definition: Auditor.cpp:144
void afterReinitialize(INamedInterface *) override
Definition: Auditor.cpp:140

◆ after() [3/6]

void Auditor::after
override

Definition at line 132 of file Auditor.cpp.

132 {}

◆ after() [4/6]

void Auditor::after
override

Definition at line 134 of file Auditor.cpp.

134 {}

◆ after() [5/6]

void Auditor::after
override

Definition at line 135 of file Auditor.cpp.

135 {}

◆ after() [6/6]

void TimingAuditor::after ( CustomEventTypeRef  evt,
const std::string name,
const StatusCode sc 
)
override

Definition at line 269 of file TimingAuditor.cpp.

269  {
270  // Ignore obvious mistakes
271  if ( name.empty() && evt.empty() ) { return; }
272 
273  // look for the user timer in the map
274  std::string nick = std::string{name}.append( ":" ).append( evt );
275  auto found = m_mapUser.find( nick );
276 
277  // We cannot do much if the timer is not available
278  if ( m_mapUser.end() == found ) {
279  warning() << "Trying to stop the measure of the timing for '" << nick
280  << "' but it was never started. Check the code" << endmsg;
281  return;
282  }
283  m_timer->stop( found->second );
284 }
GaudiUtils::HashMap< std::string, int > m_mapUser
map used to record user timing events
T empty(T... args)
MsgStream & warning() const
shortcut for the method msgStream(MSG::WARNING)
STL class.
iterator end()
Definition: Map.h:140
T append(T... args)
iterator find(const key_type &key)
Definition: Map.h:157
const std::string & name() const override
Definition: Auditor.cpp:188
ISequencerTimerTool * m_timer
the timer tool
virtual double stop(int index)=0
stop the counter, return the elapsed time
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202

◆ before() [1/6]

void TimingAuditor::before ( StandardEventType  evt,
INamedInterface alg 
)
override

Definition at line 163 of file TimingAuditor.cpp.

163  {
164  switch ( evt ) {
167  break;
168  case IAuditor::Execute:
169  i_beforeExecute( alg );
170  break;
171  case IAuditor::Finalize:
173  break;
174  default:
175  break;
176  }
177 }
void i_beforeInitialize(INamedInterface *alg)
void i_beforeExecute(INamedInterface *alg)
void i_beforeFinalize(INamedInterface *alg)

◆ before() [2/6]

void Auditor::before
override

Definition at line 105 of file Auditor.cpp.

105 {}

◆ before() [3/6]

void Auditor::before
override

Definition at line 104 of file Auditor.cpp.

104 {}

◆ before() [4/6]

void Auditor::before
override

The following methods are meant to be implemented by the child class...

Definition at line 78 of file Auditor.cpp.

78  {
79  switch ( evt ) {
80  case Initialize:
81  beforeInitialize( obj );
82  break;
83  case ReInitialize:
84  beforeReinitialize( obj );
85  break;
86  case Execute:
87  beforeExecute( obj );
88  break;
89  case Finalize:
90  beforeFinalize( obj );
91  break;
92  case Start:
93  break;
94  case Stop:
95  break;
96  case ReStart:
97  break;
98  default:
99  break; // do nothing
100  }
101 }
void beforeInitialize(INamedInterface *) override
Definition: Auditor.cpp:137
void beforeExecute(INamedInterface *) override
Definition: Auditor.cpp:141
void beforeReinitialize(INamedInterface *) override
Definition: Auditor.cpp:139
void beforeFinalize(INamedInterface *) override
Definition: Auditor.cpp:143

◆ before() [5/6]

void Auditor::before
override

Definition at line 102 of file Auditor.cpp.

102 {}

◆ before() [6/6]

void TimingAuditor::before ( CustomEventTypeRef  evt,
const std::string name 
)
override

Definition at line 250 of file TimingAuditor.cpp.

250  {
251  // Ignore obvious mistakes
252  if ( name.empty() && evt.empty() ) { return; }
253 
254  // look for the user timer in the map
255  int timer = 0;
256  std::string nick = std::string{name}.append( ":" ).append( evt );
257  auto found = m_mapUser.find( nick );
258 
259  if ( m_mapUser.end() == found ) {
260  // add a new timer if not yet available
261  timer = m_timer->addTimer( nick );
262  m_mapUser[nick] = timer;
263  } else {
264  timer = found->second;
265  }
266  m_timer->start( timer );
267 }
GaudiUtils::HashMap< std::string, int > m_mapUser
map used to record user timing events
T empty(T... args)
virtual int addTimer(const std::string &name)=0
add a timer entry with the specified name
STL class.
iterator end()
Definition: Map.h:140
T append(T... args)
iterator find(const key_type &key)
Definition: Map.h:157
virtual void start(int index)=0
start the counter, i.e.
const std::string & name() const override
Definition: Auditor.cpp:188
ISequencerTimerTool * m_timer
the timer tool

◆ finalize()

StatusCode TimingAuditor::finalize ( )
overridevirtual

Reimplemented from Auditor.

Definition at line 142 of file TimingAuditor.cpp.

142  {
143  if ( m_incSvc ) {
144  m_incSvc->removeListener( this, IncidentType::BeginEvent );
145  m_incSvc->removeListener( this, IncidentType::EndEvent );
146  m_incSvc.reset();
147  }
148  if ( m_toolSvc ) {
149  // the 2 following line are commented out: it is
150  // is a temporary hack which prevent a crash due to a problem in
151  // the reference counting
152  // if ( 0 != m_timer )
153  // { m_toolSvc -> releaseTool ( m_timer ) . ignore() ; m_timer = 0 ; }
154  m_toolSvc.reset();
155  }
156  m_appMgr.reset();
157  // clear the map
158  m_map.clear();
159  // finalize the base class
160  return Auditor::finalize();
161 }
virtual StatusCode finalize()
Definition: Auditor.cpp:186
GaudiUtils::VectorMap< const INamedInterface *, int > m_map
SmartIF< INamedInterface > m_appMgr
ApplicationManager.
SmartIF< IIncidentSvc > m_incSvc
incident service
void clear()
clear the container
Definition: VectorMap.h:476
SmartIF< IToolSvc > m_toolSvc
tool service
void reset(TYPE *ptr=nullptr)
Set the internal pointer to the passed one disposing of the old one.
Definition: SmartIF.h:96
virtual void removeListener(IIncidentListener *lis, const std::string &type="")=0
Remove listener.

◆ handle()

void TimingAuditor::handle ( const Incident i)
override

Inform that a new incident has occurred.

Definition at line 286 of file TimingAuditor.cpp.

286  {
287  if ( IncidentType::BeginEvent == i.type() ) {
288  m_timer->start( m_map[m_appMgr.get()] );
289  ++m_indent;
290  m_inEvent = true;
291  } else if ( IncidentType::EndEvent == i.type() ) {
292  m_timer->stop( m_map[m_appMgr.get()] );
293  --m_indent;
294  m_inEvent = false;
295  }
296 }
const std::string & type() const
Access to the incident type.
Definition: Incident.h:48
bool m_inEvent
"In event" flag
GaudiUtils::VectorMap< const INamedInterface *, int > m_map
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:86
int m_indent
indentation level
SmartIF< INamedInterface > m_appMgr
ApplicationManager.
virtual void start(int index)=0
start the counter, i.e.
ISequencerTimerTool * m_timer
the timer tool
virtual double stop(int index)=0
stop the counter, return the elapsed time

◆ i_afterExecute()

void TimingAuditor::i_afterExecute ( INamedInterface alg)
private

Definition at line 242 of file TimingAuditor.cpp.

242  {
243  if ( !alg ) { return; }
244  auto found = m_map.find( alg );
245  if ( m_map.end() == found ) { return; }
246  m_timer->stop( found->second );
247  --m_indent;
248 }
GaudiUtils::VectorMap< const INamedInterface *, int > m_map
iterator end() const
"end" iterator for sequential access (const-only version!)
Definition: VectorMap.h:198
int m_indent
indentation level
iterator find(const key_type &key) const
find the element by key
Definition: VectorMap.h:440
ISequencerTimerTool * m_timer
the timer tool
virtual double stop(int index)=0
stop the counter, return the elapsed time

◆ i_afterInitialize()

void TimingAuditor::i_afterInitialize ( INamedInterface alg)
private

Definition at line 219 of file TimingAuditor.cpp.

219  {
220  if ( m_goodForDOD || !alg ) { return; }
221  --m_indent;
222 }
int m_indent
indentation level
Gaudi::Property< bool > m_goodForDOD

◆ i_beforeExecute()

void TimingAuditor::i_beforeExecute ( INamedInterface alg)
private

Definition at line 224 of file TimingAuditor.cpp.

224  {
225  if ( !alg ) { return; }
226  ++m_indent;
227  auto found = m_map.find( alg );
228  if ( m_map.end() == found ) {
229  debug() << "Insert non-structural component '" << alg->name() << "' of type '"
230  << System::typeinfoName( typeid( *alg ) ) << "' at level " << m_indent << endmsg;
231  std::string nick = alg->name();
232  if ( 0 < m_indent ) { nick = std::string( m_indent, ' ' ) + nick; }
233  if ( !m_goodForDOD ) { nick[0] = '*'; }
234  int timer = m_timer->addTimer( nick );
235  m_map.insert( alg, timer );
236  m_timer->start( timer );
237  return;
238  }
239  m_timer->start( found->second );
240 }
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:308
virtual int addTimer(const std::string &name)=0
add a timer entry with the specified name
GaudiUtils::VectorMap< const INamedInterface *, int > m_map
iterator end() const
"end" iterator for sequential access (const-only version!)
Definition: VectorMap.h:198
result_type insert(const key_type &key, const mapped_type &mapped)
insert the (key,value) pair into the container
Definition: VectorMap.h:312
STL class.
int m_indent
indentation level
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
virtual void start(int index)=0
start the counter, i.e.
iterator find(const key_type &key) const
find the element by key
Definition: VectorMap.h:440
ISequencerTimerTool * m_timer
the timer tool
Gaudi::Property< bool > m_goodForDOD
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202

◆ i_beforeFinalize()

void TimingAuditor::i_beforeFinalize ( INamedInterface alg)
private

Definition at line 192 of file TimingAuditor.cpp.

192  {
193  if ( !m_histoSaved ) {
195  m_histoSaved = true;
196  }
197 }
virtual void saveHistograms()=0
prepares and saves the timing histograms
ISequencerTimerTool * m_timer
the timer tool

◆ i_beforeInitialize()

void TimingAuditor::i_beforeInitialize ( INamedInterface alg)
private

Definition at line 200 of file TimingAuditor.cpp.

200  {
201  if ( m_goodForDOD ) { return; }
202  //
203  if ( !alg ) { return; }
204  auto found = m_map.find( alg );
205  if ( m_map.end() != found ) { return; }
206  ++m_indent;
207  std::string nick = alg->name();
208  if ( 0 < m_indent ) { nick = std::string( m_indent, ' ' ) + nick; }
209  if ( m_inEvent ) {
210  nick[0] = '*';
211  debug() << "Insert non-structural component '" << alg->name() << "' of type '"
212  << System::typeinfoName( typeid( *alg ) ) << "' at level " << m_indent << endmsg;
213  }
214  int timer = m_timer->addTimer( nick );
215  m_map.insert( alg, timer );
216  m_timer->start( timer );
217 }
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:308
virtual int addTimer(const std::string &name)=0
add a timer entry with the specified name
bool m_inEvent
"In event" flag
GaudiUtils::VectorMap< const INamedInterface *, int > m_map
iterator end() const
"end" iterator for sequential access (const-only version!)
Definition: VectorMap.h:198
result_type insert(const key_type &key, const mapped_type &mapped)
insert the (key,value) pair into the container
Definition: VectorMap.h:312
STL class.
int m_indent
indentation level
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
virtual void start(int index)=0
start the counter, i.e.
iterator find(const key_type &key) const
find the element by key
Definition: VectorMap.h:440
ISequencerTimerTool * m_timer
the timer tool
Gaudi::Property< bool > m_goodForDOD
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202

◆ initialize()

StatusCode TimingAuditor::initialize ( )
overridevirtual

factory:

Reimplemented from Auditor.

Definition at line 98 of file TimingAuditor.cpp.

98  {
100  if ( sc.isFailure() ) { return sc; } // RETURN
101 
102  // get tool service
103  if ( !m_toolSvc ) {
104  m_toolSvc = Auditor::service( "ToolSvc" );
105  if ( !m_toolSvc ) {
106  error() << "Could not retrieve 'ToolSvc' " << endmsg;
107  return StatusCode::FAILURE; // RETURN
108  }
109  if ( !m_timer ) {
110  sc = m_toolSvc->retrieveTool( "SequencerTimerTool/TIMER", m_timer, this, true );
111  if ( sc.isFailure() ) {
112  error() << "Could not retrieve ISequencerTimerTool" << endmsg;
113  return sc;
114  }
115  }
116  }
117  // get incident service
118  if ( !m_incSvc ) {
119  m_incSvc = Auditor::service( "IncidentSvc" );
120  if ( !m_incSvc ) {
121  error() << "Could not retrieve 'IncidentSvc'" << endmsg;
122  return StatusCode::FAILURE;
123  }
124  m_incSvc->addListener( this, IncidentType::BeginEvent );
125  m_incSvc->addListener( this, IncidentType::EndEvent );
126  }
127  // get the application manager
128  if ( !m_appMgr ) {
129  m_appMgr = Auditor::service( "ApplicationMgr" );
130  if ( !m_appMgr ) {
131  error() << "Could not retrieve 'ApplicationMgr'" << endmsg;
132  return sc;
133  }
134  if ( m_map.end() == m_map.find( m_appMgr.get() ) ) {
135  m_map.insert( m_appMgr.get(), m_timer->addTimer( "EVENT LOOP" ) );
136  }
137  }
138  //
139  return StatusCode::SUCCESS;
140 }
virtual int addTimer(const std::string &name)=0
add a timer entry with the specified name
GaudiUtils::VectorMap< const INamedInterface *, int > m_map
iterator end() const
"end" iterator for sequential access (const-only version!)
Definition: VectorMap.h:198
constexpr static const auto SUCCESS
Definition: StatusCode.h:100
result_type insert(const key_type &key, const mapped_type &mapped)
insert the (key,value) pair into the container
Definition: VectorMap.h:312
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:86
StatusCode service(std::string_view name, T *&svc, bool createIf=false) const
Access a service by name, creating it if it doesn't already exist.
Definition: Auditor.h:109
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
SmartIF< INamedInterface > m_appMgr
ApplicationManager.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:61
SmartIF< IIncidentSvc > m_incSvc
incident service
StatusCode retrieveTool(std::string_view type, T *&tool, const IInterface *parent=nullptr, bool createIf=true)
Retrieve specified tool sub-type with tool dependent part of the name automatically assigned.
Definition: IToolSvc.h:148
virtual void addListener(IIncidentListener *lis, const std::string &type="", long priority=0, bool rethrow=false, bool singleShot=false)=0
Add listener.
constexpr static const auto FAILURE
Definition: StatusCode.h:101
SmartIF< IToolSvc > m_toolSvc
tool service
iterator find(const key_type &key) const
find the element by key
Definition: VectorMap.h:440
ISequencerTimerTool * m_timer
the timer tool
virtual StatusCode initialize()
Definition: Auditor.cpp:75
bool isFailure() const
Definition: StatusCode.h:145
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202

◆ operator=()

TimingAuditor& TimingAuditor::operator= ( const TimingAuditor )
delete

Member Data Documentation

◆ m_appMgr

SmartIF<INamedInterface> TimingAuditor::m_appMgr = nullptr
private

ApplicationManager.

Definition at line 78 of file TimingAuditor.cpp.

◆ m_goodForDOD

Gaudi::Property<bool> TimingAuditor::m_goodForDOD {this, "OptimizedForDOD", false, "enable optimization for Data-On-Demand Service"}
private

Definition at line 91 of file TimingAuditor.cpp.

◆ m_histoSaved

bool TimingAuditor::m_histoSaved = false
private

Definition at line 89 of file TimingAuditor.cpp.

◆ m_incSvc

SmartIF<IIncidentSvc> TimingAuditor::m_incSvc = nullptr
private

incident service

Definition at line 74 of file TimingAuditor.cpp.

◆ m_indent

int TimingAuditor::m_indent = 0
private

indentation level

Definition at line 82 of file TimingAuditor.cpp.

◆ m_inEvent

bool TimingAuditor::m_inEvent = false
private

"In event" flag

Definition at line 84 of file TimingAuditor.cpp.

◆ m_map

GaudiUtils::VectorMap<const INamedInterface*, int> TimingAuditor::m_map
private

Definition at line 80 of file TimingAuditor.cpp.

◆ m_mapUser

GaudiUtils::HashMap<std::string, int> TimingAuditor::m_mapUser
private

map used to record user timing events

Definition at line 86 of file TimingAuditor.cpp.

◆ m_timer

ISequencerTimerTool* TimingAuditor::m_timer = nullptr
private

the timer tool

Definition at line 76 of file TimingAuditor.cpp.

◆ m_toolSvc

SmartIF<IToolSvc> TimingAuditor::m_toolSvc = nullptr
private

tool service

Definition at line 72 of file TimingAuditor.cpp.


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