The Gaudi Framework  master (37c0b60a)
ChronoStatSvc Class Reference

#include </builds/gaudi/Gaudi/GaudiCommonSvc/src/ChronoStatSvc.h>

Inheritance diagram for ChronoStatSvc:
Collaboration diagram for ChronoStatSvc:

Public Types

using ChronoMap = std::map< IChronoStatSvc::ChronoTag, ChronoEntity >
 some useful typedefs More...
 
using StatMap = std::map< IChronoStatSvc::StatTag, StatEntity >
 
- Public Types inherited from extends< Service, IChronoStatSvc, 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 Service
using Factory = Gaudi::PluginService::Factory< IService *(const std::string &, ISvcLocator *)>
 
- Public Types inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
using PropertyHolderImpl = PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
 Typedef used to refer to this class from derived classes, as in. More...
 
- Public Types inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
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...
 

Public Member Functions

StatusCode initialize () override
 Implementation of IService::initialize() More...
 
StatusCode finalize () override
 Implementation of IService::finalize() More...
 
ChronoEntitychronoStart (const IChronoStatSvc::ChronoTag &chronoTag) override
 Implementation of IChronoStatSvc::chronoStart. More...
 
const ChronoEntitychronoStop (const IChronoStatSvc::ChronoTag &chronoTag) override
 Implementation of IChronoStatSvc::chronoStop. More...
 
IChronoStatSvc::ChronoTime chronoDelta (const IChronoStatSvc::ChronoTag &chronoTag, IChronoStatSvc::ChronoType theType) override
 Implementation of IchronoStatSvc::chronoDelta. More...
 
void chronoPrint (const IChronoStatSvc::ChronoTag &chronoTag) override
 Implementation of IChronoStatSvc::chronoPrint. More...
 
ChronoStatus chronoStatus (const IChronoStatSvc::ChronoTag &chronoTag) override
 Implementation of IChronoStatSvc::chronoStatus. More...
 
void stat (const IChronoStatSvc::StatTag &statTag, const IChronoStatSvc::StatFlag &statFlag) override
 Implementation of IChronoStatSvc::stat add statistical information to the entity , tagged by its name. More...
 
void statPrint (const IChronoStatSvc::ChronoTag &statTag) override
 prints (using message service) info about statistical entity, tagged by its name More...
 
const ChronoEntitychrono (const IChronoStatSvc::ChronoTag &t) const override
 extract the chrono entity for the given tag (name) More...
 
StatEntitystat (const IChronoStatSvc::StatTag &t) override
 extract the stat entity for the given tag (name) More...
 
 ChronoStatSvc (const std::string &name, ISvcLocator *svcloc)
 Default constructor. More...
 
void merge (const ChronoStatSvc &css)
 Compound assignment operator. More...
 
void handle (const Incident &incident) override
 
 ~ChronoStatSvc () override=default
 
- Public Member Functions inherited from extends< Service, IChronoStatSvc, 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 Service
const std::stringname () const override
 Retrieve name of the service
More...
 
StatusCode configure () override
 
StatusCode initialize () override
 
StatusCode start () override
 
StatusCode stop () override
 
StatusCode finalize () override
 
StatusCode terminate () override
 
Gaudi::StateMachine::State FSMState () const override
 
Gaudi::StateMachine::State targetFSMState () const override
 
StatusCode reinitialize () override
 
StatusCode restart () override
 
StatusCode sysInitialize () override
 Initialize Service
More...
 
StatusCode sysStart () override
 Initialize Service
More...
 
StatusCode sysStop () override
 Initialize Service
More...
 
StatusCode sysFinalize () override
 Finalize Service
More...
 
StatusCode sysReinitialize () override
 Re-initialize the Service. More...
 
StatusCode sysRestart () override
 Re-initialize the Service. More...
 
 Service (std::string name, ISvcLocator *svcloc)
 Standard Constructor
More...
 
SmartIF< ISvcLocator > & serviceLocator () const override
 Retrieve pointer to service locator
More...
 
template<class T >
StatusCode service (const std::string &name, const T *&psvc, bool createIf=true) const
 Access a service by name, creating it if it doesn't already exist. More...
 
template<class T >
StatusCode service (const std::string &name, T *&psvc, bool createIf=true) const
 
template<typename IFace = IService>
SmartIF< IFace > service (const std::string &name, bool createIf=true) const
 
template<class T >
StatusCode service (const std::string &svcType, const std::string &svcName, T *&psvc) const
 Access a service by name and type, creating it if it doesn't already exist. More...
 
template<class T >
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, ToolHandle< T > &hndl, const std::string &doc="none")
 
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)
 Declare used tool. More...
 
template<class T >
Gaudi::Details::PropertyBasedeclareProperty (const std::string &name, ToolHandleArray< T > &hndlArr, const std::string &doc="none")
 
template<class T >
void addToolsArray (ToolHandleArray< T > &hndlArr)
 
const std::vector< IAlgTool * > & tools () const
 
SmartIF< IAuditorSvc > & auditorSvc () const
 The standard auditor service.May not be invoked before sysInitialize() has been invoked. More...
 
- Public Member Functions inherited from PropertyHolder< CommonMessaging< implements< IService, IProperty, IStateful > > >
 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 std::string &name, const Gaudi::Details::PropertyBase &p) override
 set the property from another property with a different name More...
 
StatusCode setProperty (const std::string &s) override
 set the property from the formatted string More...
 
StatusCode setProperty (const Gaudi::Details::PropertyBase &p)
 Set the property from a property. More...
 
virtual StatusCode setProperty (const std::string &name, const Gaudi::Details::PropertyBase &p)=0
 Set the property from a property with a different name. More...
 
virtual StatusCode setProperty (const std::string &s)=0
 Set the property by string. More...
 
StatusCode setProperty (const std::string &name, const char *v)
 Special case for string literals. More...
 
StatusCode setProperty (const std::string &name, const std::string &v)
 Special case for std::string. More...
 
StatusCode setProperty (const std::string &name, const TYPE &value)
 set the property form the value More...
 
StatusCode setPropertyRepr (const std::string &n, const std::string &r) override
 set the property from name and value string representation More...
 
StatusCode getProperty (Gaudi::Details::PropertyBase *p) const override
 get the property More...
 
const Gaudi::Details::PropertyBasegetProperty (std::string_view name) const override
 get the property by name More...
 
StatusCode getProperty (std::string_view 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 (std::string_view name) const override
 Return true if we have a property with the given name. More...
 
Gaudi::Details::PropertyBaseproperty (std::string_view name) const
 \fixme property and bindPropertiesTo should be protected More...
 
void bindPropertiesTo (Gaudi::Interfaces::IOptionsSvc &optsSvc)
 
 PropertyHolder (const PropertyHolder &)=delete
 
PropertyHolderoperator= (const PropertyHolder &)=delete
 
- Public Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
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...
 

Protected Member Functions

void printStats ()
 
- Protected Member Functions inherited from Service
std::vector< IAlgTool * > & tools ()
 
 ~Service () override
 Standard Destructor
More...
 
int outputLevel () const
 get the Service's output level More...
 
- Protected Member Functions inherited from CommonMessaging< implements< IService, IProperty, IStateful > >
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...
 

Private Types

using TimeMap = std::map< ChronoTag, std::vector< IChronoSvc::ChronoTime > >
 

Private Member Functions

 ChronoStatSvc ()=delete
 
 ChronoStatSvc (const ChronoStatSvc &)=delete
 
ChronoStatSvcoperator= (const ChronoStatSvc &)=delete
 
void saveStats ()
 dump the statistics into an ASCII file for offline processing More...
 
bool isMT () const
 
ChronoEntitygetEntity (const ChronoTag &chronoTag)
 

Static Private Member Functions

static MSG::Level int2level (int l)
 

Private Attributes

ChronoMap m_chronoEntities
 chrono part More...
 
std::mutex m_mutex
 Mutex protecting m_chronoEntities. More...
 
MSG::Level m_chronoPrintLevel = MSG::INFO
 level of info printing More...
 
StatMap m_statEntities
 stat part More...
 
MSG::Level m_statPrintLevel = MSG::INFO
 level of info printing More...
 
Gaudi::Property< bool > m_chronoTableFlag
 
Gaudi::Property< bool > m_chronoCoutFlag
 
Gaudi::Property< int > m_intChronoPrintLevel
 
Gaudi::Property< bool > m_chronoOrderFlag { this, "ChronoTableToBeOrdered", true, "should the printout be ordered" }
 
Gaudi::Property< bool > m_printUserTime { this, "PrintUserTime", true }
 
Gaudi::Property< bool > m_printSystemTime { this, "PrintSystemTime", false }
 
Gaudi::Property< bool > m_printEllapsedTime { this, "PrintEllapsedTime", false }
 
Gaudi::Property< bool > m_statTableFlag
 
Gaudi::Property< bool > m_statCoutFlag
 
Gaudi::Property< int > m_intStatPrintLevel
 
Gaudi::Property< bool > m_statOrderFlag { this, "StatTableToBeOrdered", true, "should the printout be ordered" }
 
Gaudi::Property< std::stringm_statsOutFileName
 
Gaudi::Property< std::stringm_header
 
Gaudi::Property< bool > m_useEffFormat
 
Gaudi::Property< std::stringm_perEventFile { this, "PerEventFile", "", "File name for per-event deltas" }
 
ServiceHandle< IInterfacem_hiveWhiteBoardSvc { this, "HiveWhiteBoardSvc", "EventDataSvc" }
 
TimeMap m_perEvtTime
 
std::ofstream m_ofd
 

Additional Inherited Members

- Protected Attributes inherited from Service
Gaudi::StateMachine::State m_state = Gaudi::StateMachine::OFFLINE
 Service state
More...
 
Gaudi::StateMachine::State m_targetState = Gaudi::StateMachine::OFFLINE
 Service state
More...
 
Gaudi::Property< int > m_outputLevel { this, "OutputLevel", MSG::NIL, "output level" }
 flag indicating whether ToolHandle tools have been added to m_tools More...
 
Gaudi::Property< bool > m_auditInit { this, "AuditServices", false, "[[deprecated]] unused" }
 
Gaudi::Property< bool > m_auditorInitialize { this, "AuditInitialize", false, "trigger auditor on initialize()" }
 
Gaudi::Property< bool > m_auditorStart { this, "AuditStart", false, "trigger auditor on start()" }
 
Gaudi::Property< bool > m_auditorStop { this, "AuditStop", false, "trigger auditor on stop()" }
 
Gaudi::Property< bool > m_auditorFinalize { this, "AuditFinalize", false, "trigger auditor on finalize()" }
 
Gaudi::Property< bool > m_auditorReinitialize { this, "AuditReinitialize", false, "trigger auditor on reinitialize()" }
 
Gaudi::Property< bool > m_auditorRestart { this, "AuditRestart", false, "trigger auditor on restart()" }
 
Gaudi::Property< bool > m_autoRetrieveTools
 
Gaudi::Property< bool > m_checkToolDeps
 
SmartIF< IAuditorSvcm_pAuditorSvc
 Auditor Service
More...
 

Detailed Description

The Chrono & Stat Sservice: service implements the IChronoStatSvc interface and provides the basic chronometry and some statistical counts needed by all applications

Author
: Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@i.nosp@m.tep..nosp@m.ru @daate: December 1, 1999

Definition at line 46 of file ChronoStatSvc.h.

Member Typedef Documentation

◆ ChronoMap

using ChronoStatSvc::ChronoMap = std::map<IChronoStatSvc::ChronoTag, ChronoEntity>

some useful typedefs

Definition at line 50 of file ChronoStatSvc.h.

◆ StatMap

using ChronoStatSvc::StatMap = std::map<IChronoStatSvc::StatTag, StatEntity>

Definition at line 51 of file ChronoStatSvc.h.

◆ TimeMap

Definition at line 209 of file ChronoStatSvc.h.

Constructor & Destructor Documentation

◆ ChronoStatSvc() [1/3]

ChronoStatSvc::ChronoStatSvc ( const std::string name,
ISvcLocator svcloc 
)
inline

Default constructor.

Parameters
nameservice instance name
svclocpointer to service locator

Definition at line 118 of file ChronoStatSvc.h.

118 : base_class( name, svcloc ) {}

◆ ChronoStatSvc() [2/3]

ChronoStatSvc::ChronoStatSvc ( )
privatedelete

◆ ChronoStatSvc() [3/3]

ChronoStatSvc::ChronoStatSvc ( const ChronoStatSvc )
privatedelete

◆ ~ChronoStatSvc()

ChronoStatSvc::~ChronoStatSvc ( )
overridedefault

Member Function Documentation

◆ chrono()

const ChronoEntity * ChronoStatSvc::chrono ( const IChronoStatSvc::ChronoTag &  t) const
override

extract the chrono entity for the given tag (name)

See also
IChronoStatSvc
Parameters
tchrono tag(name)
Returns
pointer to chrono entity

Definition at line 347 of file ChronoStatSvc.cpp.

347  {
348  auto lock = std::scoped_lock{ m_mutex };
349  auto it = m_chronoEntities.find( t );
350  return m_chronoEntities.end() != it ? &( it->second ) : nullptr;
351 }

◆ chronoDelta()

IChronoStatSvc::ChronoTime ChronoStatSvc::chronoDelta ( const IChronoStatSvc::ChronoTag &  chronoTag,
IChronoStatSvc::ChronoType  theType 
)
override

Implementation of IchronoStatSvc::chronoDelta.

See also
IChronoStatSvc

Definition at line 296 of file ChronoStatSvc.cpp.

297  {
298  return getEntity( chronoTag ).delta( theType );
299 }

◆ chronoPrint()

void ChronoStatSvc::chronoPrint ( const IChronoStatSvc::ChronoTag &  chronoTag)
override

Implementation of IChronoStatSvc::chronoPrint.

See also
IChronoStatSvc

Definition at line 303 of file ChronoStatSvc.cpp.

303  {
304  MsgStream log( msgSvc(), chronoTag );
305  if ( m_printUserTime ) { log << m_chronoPrintLevel << getEntity( chronoTag ).outputUserTime() << endmsg; }
306  if ( m_printSystemTime ) { log << m_chronoPrintLevel << getEntity( chronoTag ).outputSystemTime() << endmsg; }
307 }

◆ chronoStart()

ChronoEntity * ChronoStatSvc::chronoStart ( const IChronoStatSvc::ChronoTag &  chronoTag)
override

Implementation of IChronoStatSvc::chronoStart.

See also
IChronoStatSvc

Definition at line 280 of file ChronoStatSvc.cpp.

280  {
281  ChronoEntity& entity = getEntity( chronoTag );
282  entity.start();
283  return &entity;
284 }

◆ chronoStatus()

IChronoStatSvc::ChronoStatus ChronoStatSvc::chronoStatus ( const IChronoStatSvc::ChronoTag &  chronoTag)
override

Implementation of IChronoStatSvc::chronoStatus.

See also
IChronoStatSvc

Definition at line 311 of file ChronoStatSvc.cpp.

311  {
312  return getEntity( chronoTag ).status();
313 }

◆ chronoStop()

const ChronoEntity * ChronoStatSvc::chronoStop ( const IChronoStatSvc::ChronoTag &  chronoTag)
override

Implementation of IChronoStatSvc::chronoStop.

See also
IChronoStatSvc

Definition at line 288 of file ChronoStatSvc.cpp.

288  {
289  ChronoEntity& entity = getEntity( chronoTag );
290  entity.stop();
291  return &entity;
292 }

◆ finalize()

StatusCode ChronoStatSvc::finalize ( )
override

Implementation of IService::finalize()

stop its own chrono

Is the final chrono table to be printed?

decoration

CONTINUE

CONTINUE

stop chrono (if it is still in RUNNING status)

print to std::cout

print to MsgStream

decoration

CONTINUE

CONTINUE

stop chrono (if it is still in RUNNING status)

print to std::cout

print to MsgStream

decoration

CONTINUE

CONTINUE

stop chrono (if it is still in RUNNING status)

print to std::cout

print to MsgStream

clear the temporary container

the final decoration

Is the final stat table to be printed?

< finalize the base class

Definition at line 126 of file ChronoStatSvc.cpp.

126  {
127  std::string local = name() + ".finalize()";
129  MsgStream main_log( msgSvc(), local );
132  chronoStop( name() );
133 
134  if ( m_ofd.is_open() ) {
135  debug() << "writing per-event timing data to '" << m_perEventFile << "'" << endmsg;
136  for ( const auto& itr : m_perEvtTime ) {
137  m_ofd << itr.first.substr( 0, itr.first.length() - 8 ) << " ";
138  for ( const auto& itt : itr.second ) { m_ofd << " " << (long int)( itt ); }
139  m_ofd << std::endl;
140  }
141 
142  m_ofd.close();
143  }
144 
149  MsgStream log( msgSvc(), "*****Chrono*****" );
150  const std::string stars( ( m_chronoCoutFlag ) ? 126 : 100, '*' );
151  if ( m_chronoCoutFlag ) {
152  std::cout << stars << std::endl;
153  if ( isMT() ) { std::cout << "WARNING: MT job; statistics are unreliable" << std::endl; }
154  std::cout << local << " The Final CPU consumption (Chrono) Table "
155  << ( m_chronoOrderFlag ? "(ordered)" : "(not ordered)" ) << std::endl;
156  std::cout << stars << std::endl;
157  } else {
158  log << m_chronoPrintLevel << stars << endmsg;
159  if ( isMT() ) { log << m_chronoPrintLevel << "WARNING: MT job; statistics are unreliable" << endmsg; }
160  log << m_chronoPrintLevel << " The Final CPU consumption ( Chrono ) Table "
161  << ( m_chronoOrderFlag ? "(ordered)" : "(not ordered)" ) << endmsg;
162  log << m_chronoPrintLevel << stars << endmsg;
163  }
165  { // prepare container for printing
167  tmpCont.reserve( m_chronoEntities.size() );
168  for ( auto& it : m_chronoEntities ) { tmpCont.emplace_back( &it.second, &it.first ); }
169  // sort it
170  if ( m_chronoOrderFlag ) std::sort( tmpCont.begin(), tmpCont.end(), CompareFirstOfPointerPair );
171  // print User Time statistics
172  if ( m_printUserTime ) {
173  for ( auto iter = tmpCont.begin(); tmpCont.end() != iter; ++iter ) {
174  //
175  ChronoEntity* entity = iter->first;
176  if ( !entity ) { continue; }
177  const ChronoTag* tag = iter->second;
178  if ( !tag ) { continue; }
179  entity->stop();
181  if ( m_chronoCoutFlag )
183  {
184  std::cout << *tag << "\t" << entity->outputUserTime() << std::endl;
185  } else
186  {
187  MsgStream( msgSvc(), *tag ) << m_chronoPrintLevel << entity->outputUserTime() << endmsg;
188  }
189  //
190  }
191  }
193  if ( m_printSystemTime ) {
197  std::cout << stars << std::endl;
198  } else if ( m_printUserTime && !m_chronoCoutFlag ) {
199  log << m_chronoPrintLevel << stars << endmsg;
200  }
202  for ( auto iter = tmpCont.begin(); tmpCont.end() != iter; ++iter ) {
204  ChronoEntity* entity = iter->first;
205  if ( !entity ) { continue; }
206  const ChronoTag* tag = iter->second;
207  if ( !tag ) { continue; }
208  entity->stop();
210  if ( m_chronoCoutFlag )
212  {
213  std::cout << *tag << "\t" << entity->outputSystemTime() << std::endl;
214  } else
215  {
216  MsgStream( msgSvc(), *tag ) << m_chronoPrintLevel << entity->outputSystemTime() << endmsg;
217  }
218  //
219  }
220  }
222  if ( m_printEllapsedTime ) {
226  std::cout << stars << std::endl;
227  } else if ( ( m_printUserTime || m_printSystemTime ) && !m_chronoCoutFlag ) {
228  log << m_chronoPrintLevel << stars << endmsg;
229  }
231  for ( const auto& i : tmpCont ) {
233  ChronoEntity* entity = i.first;
234  if ( !entity ) { continue; }
235  const ChronoTag* tag = i.second;
236  if ( !tag ) { continue; }
237  entity->stop();
239  if ( m_chronoCoutFlag )
241  {
242  std::cout << *tag << "\t" << entity->outputElapsedTime() << std::endl;
243  } else
244  {
245  MsgStream( msgSvc(), *tag ) << m_chronoPrintLevel << entity->outputElapsedTime() << endmsg;
246  }
247  //
248  }
249  }
251  tmpCont.clear();
252  }
254  if ( m_chronoCoutFlag ) {
255  std::cout << stars << std::endl;
256  } else {
257  log << m_chronoPrintLevel << stars << endmsg;
258  }
259  }
260 
262 
264  if ( m_statTableFlag ) { printStats(); }
265 
266  if ( !m_statsOutFileName.value().empty() ) { saveStats(); }
267 
268  // clear the maps.
272 
273  main_log << MSG::INFO << " Service finalized successfully " << endmsg;
274 
275  return Service::finalize();
276 }

◆ getEntity()

ChronoEntity& ChronoStatSvc::getEntity ( const ChronoTag &  chronoTag)
inlineprivate

Definition at line 150 of file ChronoStatSvc.h.

150  {
151  auto lock = std::scoped_lock{ m_mutex };
152  return m_chronoEntities[chronoTag];
153  }

◆ handle()

void ChronoStatSvc::handle ( const Incident incident)
override

Definition at line 512 of file ChronoStatSvc.cpp.

512  {
513 
514  if ( !m_ofd.is_open() ) return;
515 
516  auto lock = std::scoped_lock{ m_mutex };
517  for ( const auto& itr : m_chronoEntities ) {
518  if ( itr.first.find( ":Execute" ) == std::string::npos ) continue;
519 
520  auto itm = m_perEvtTime.find( itr.first );
521  if ( itm == m_perEvtTime.end() ) {
522  m_perEvtTime[itr.first] = { itr.second.delta( IChronoSvc::ELAPSED ) };
523  } else {
524  itm->second.push_back( itr.second.delta( IChronoSvc::ELAPSED ) );
525  }
526  }
527 }

◆ initialize()

StatusCode ChronoStatSvc::initialize ( )
override

Implementation of IService::initialize()

start its own chrono

Definition at line 94 of file ChronoStatSvc.cpp.

94  {
96  if ( sc.isFailure() ) return sc;
97 
98  // only add an EndEvent listener if per-event output requested
99  if ( !m_perEventFile.empty() ) {
101  if ( !m_ofd.is_open() ) {
102  error() << "unable to open per-event output file \"" << m_perEventFile << "\"" << endmsg;
103  return StatusCode::FAILURE;
104  } else {
105  auto ii = serviceLocator()->service<IIncidentSvc>( "IncidentSvc" );
106  if ( !ii ) {
107  error() << "Unable to find IncidentSvc" << endmsg;
108  return StatusCode::FAILURE;
109  }
110  ii->addListener( this, IncidentType::EndEvent );
111  }
112  }
113 
119  chronoStart( name() );
121  return StatusCode::SUCCESS;
122 }

◆ int2level()

static MSG::Level ChronoStatSvc::int2level ( int  l)
inlinestaticprivate

Definition at line 156 of file ChronoStatSvc.h.

156  {
157  return static_cast<MSG::Level>(
158  std::max( std::min( l, static_cast<int>( MSG::FATAL ) ), static_cast<int>( MSG::NIL ) ) );
159  }

◆ isMT()

bool ChronoStatSvc::isMT ( ) const
private

Definition at line 433 of file ChronoStatSvc.cpp.

433  {
434  bool isMT = false;
436  error() << "Cannot retrieve HiveWhiteBoardSvc";
437  } else {
438  // In non-MT mode, `EventDataSvc' does not have an IHiveWhiteBoard interface.
440  if ( wb && wb->getNumberOfStores() > 1 ) { isMT = true; }
441  }
442  return isMT;
443 }

◆ merge()

void ChronoStatSvc::merge ( const ChronoStatSvc css)

Compound assignment operator.

Definition at line 66 of file ChronoStatSvc.cpp.

66  {
67 
68  // Add the content of the maps, leave the rest unchanged
69 
70  auto lock = std::scoped_lock{ m_mutex, css.m_mutex };
71  // Merge Chronomaps
72  for ( auto& item : css.m_chronoEntities ) {
73  const IChronoStatSvc::ChronoTag& key = item.first;
74  const ChronoEntity& val = item.second;
75  if ( m_chronoEntities.count( key ) )
76  m_chronoEntities[key] += val;
77  else
79  }
80 
81  // Merge StatMaps
82  for ( auto& item : css.m_statEntities ) {
83  const IChronoStatSvc::StatTag& key = item.first;
84  const StatEntity& val = item.second;
85  if ( m_statEntities.count( key ) )
86  m_statEntities[key] += val;
87  else
88  m_statEntities.emplace( key, val );
89  }
90 }

◆ operator=()

ChronoStatSvc& ChronoStatSvc::operator= ( const ChronoStatSvc )
privatedelete

◆ printStats()

void ChronoStatSvc::printStats ( )
protected

nothing to print?

CONTINUE

CONTINUE

decoration

Definition at line 447 of file ChronoStatSvc.cpp.

447  {
449  if ( m_statEntities.empty() ) { return; }
450 
451  MsgStream log( msgSvc(), "******Stat******" );
453  const std::string stars( ( m_statCoutFlag ) ? 126 : 100, '*' );
455  if ( m_statCoutFlag ) {
456  std::cout << stars << std::endl;
457  if ( isMT() ) { std::cout << "WARNING: MT job; statistics are unreliable" << std::endl; }
458  std::cout << " The Final stat Table " << ( m_statOrderFlag ? "(ordered)" : "(not ordered)" ) << std::endl;
459  std::cout << stars << std::endl;
460  } else {
461  log << m_statPrintLevel << stars << endmsg;
462  if ( isMT() ) { log << (MSG::Level)m_chronoPrintLevel << "WARNING: MT job; statistics are unreliable" << endmsg; }
463  log << m_statPrintLevel << " The Final stat Table " << ( m_statOrderFlag ? "(ordered)" : "(not ordered)" )
464  << endmsg;
465  log << m_statPrintLevel << stars << endmsg;
466  }
467 
468  {
469  // prepare container for printing
471  typedef std::vector<SPair> SCont;
472  SCont tmpCont;
474  []( StatMap::const_reference i ) { return std::make_pair( &i.second, &i.first ); } );
475  // sort it
476  if ( m_statOrderFlag ) std::sort( tmpCont.begin(), tmpCont.end(), CompareFirstOfPointerPair );
477  // print the table header
478  if ( m_statCoutFlag ) {
480  } else {
482  }
483 
484  // loop over counters and print them:
485  for ( const auto& iter : tmpCont ) {
487  const StatEntity* entity = iter.first;
488  if ( !entity ) { continue; }
489  const StatTag* tag = iter.second;
490  if ( !tag ) { continue; }
491  if ( m_statCoutFlag ) {
493  entity->print( std::cout, true, *tag, m_useEffFormat, "%|-15.15s|%|17t|" );
494  } else {
495  std::ostringstream ost;
496  entity->print( ost, true, *tag, m_useEffFormat, "%|-15.15s|%|17t|" );
497  log << m_statPrintLevel << ost.str() << endmsg;
498  }
499  }
500  tmpCont.clear();
501  }
503  if ( m_statCoutFlag ) {
504  std::cout << stars << std::endl;
505  } else {
506  log << m_statPrintLevel << stars << endmsg;
507  }
508 }

◆ saveStats()

void ChronoStatSvc::saveStats ( )
private

dump the statistics into an ASCII file for offline processing

CONTINUE

CONTINUE

Definition at line 366 of file ChronoStatSvc.cpp.

366  {
367  std::ofstream out( m_statsOutFileName.value(), std::ios_base::out | std::ios_base::trunc );
368  if ( !out.good() ) {
369  info() << "Could not open the output file for writing chrono statistics [" << m_statsOutFileName.value() << "]"
370  << endmsg;
371  return;
372  } else {
373  // format it our way
375  }
376 
377  // ChronoEntity
379  {
380  auto lock = std::scoped_lock{ m_mutex };
381  chronos.reserve( m_chronoEntities.size() );
383  []( ChronoMap::const_reference i ) { return std::make_pair( &i.second, &i.first ); } );
384  }
385 
386  // sort it
387  std::sort( std::begin( chronos ), std::end( chronos ), CompareFirstOfPointerPair );
388 
389  // print User Time statistics
390  for ( const auto& iter : chronos ) {
391  //
392  const ChronoEntity* entity = iter.first;
393  if ( !entity ) { continue; }
394 
395  const ChronoTag* tag = iter.second;
396  if ( !tag ) { continue; }
397 
398  // create an entry in the .INI-like table
399  out << "\n[" << *tag << "]\n";
400 
401  // user
402  out << "cpu_user_total = " << entity->uTotalTime() << "\n";
403  out << "cpu_user_min = " << entity->uMinimalTime() << "\n";
404  out << "cpu_user_mean = " << entity->uMeanTime() << "\n";
405  out << "cpu_user_RMS = " << entity->uRMSTime() << "\n";
406  out << "cpu_user_max = " << entity->uMaximalTime() << "\n";
407  out << "cpu_user_nbr = " << entity->nOfMeasurements() << "\n";
408 
409  // system
410  out << "\n"; // just for clarity
411  out << "cpu_system_total = " << entity->kTotalTime() << "\n";
412  out << "cpu_system_min = " << entity->kMinimalTime() << "\n";
413  out << "cpu_system_mean = " << entity->kMeanTime() << "\n";
414  out << "cpu_system_RMS = " << entity->kRMSTime() << "\n";
415  out << "cpu_system_max = " << entity->kMaximalTime() << "\n";
416  out << "cpu_system_nbr = " << entity->nOfMeasurements() << "\n";
417 
418  // real
419  out << "\n"; // just for clarity
420  out << "cpu_real_total = " << entity->eTotalTime() << "\n";
421  out << "cpu_real_min = " << entity->eMinimalTime() << "\n";
422  out << "cpu_real_mean = " << entity->eMeanTime() << "\n";
423  out << "cpu_real_RMS = " << entity->eRMSTime() << "\n";
424  out << "cpu_real_max = " << entity->eMaximalTime() << "\n";
425  out << "cpu_real_nbr = " << entity->nOfMeasurements() << "\n";
426  }
427 
428  out << std::endl;
429 }

◆ stat() [1/2]

void ChronoStatSvc::stat ( const IChronoStatSvc::StatTag &  statTag,
const IChronoStatSvc::StatFlag &  statFlag 
)
override

Implementation of IChronoStatSvc::stat add statistical information to the entity , tagged by its name.

See also
IChronoStatSvc

Definition at line 317 of file ChronoStatSvc.cpp.

317  {
318  auto theIter = m_statEntities.find( statTag );
319 
320  StatEntity* theStat = nullptr;
321  // if new entity, specify the number of events to be skipped
322  if ( theIter == m_statEntities.end() ) {
323  // new stat entity
324  StatEntity& theSe = m_statEntities[statTag];
325  theStat = &theSe;
326  } else {
327  // existing stat entity
328  theStat = &theIter->second;
329  }
330 
331  theStat->addFlag( statFlag );
332 }

◆ stat() [2/2]

StatEntity * ChronoStatSvc::stat ( const IChronoStatSvc::StatTag &  t)
override

extract the stat entity for the given tag (name)

See also
IChronoStatSvc
Parameters
tstat tag(name)
Returns
pointer to stat entity

Definition at line 359 of file ChronoStatSvc.cpp.

359  {
360  auto it = m_statEntities.find( t );
361  return m_statEntities.end() != it ? &( it->second ) : nullptr;
362 }

◆ statPrint()

void ChronoStatSvc::statPrint ( const IChronoStatSvc::ChronoTag &  statTag)
override

prints (using message service) info about statistical entity, tagged by its name

See also
IChronoStatSvc

Definition at line 336 of file ChronoStatSvc.cpp.

336  {
337  MsgStream log( msgSvc(), statTag );
338  log << m_statPrintLevel << m_statEntities[statTag] << endmsg;
339 }

Member Data Documentation

◆ m_chronoCoutFlag

Gaudi::Property<bool> ChronoStatSvc::m_chronoCoutFlag
private
Initial value:
{ this, "ChronoDestinationCout", false,
"define the destination of the table to be printed" }

Definition at line 176 of file ChronoStatSvc.h.

◆ m_chronoEntities

ChronoMap ChronoStatSvc::m_chronoEntities
private

chrono part

Definition at line 162 of file ChronoStatSvc.h.

◆ m_chronoOrderFlag

Gaudi::Property<bool> ChronoStatSvc::m_chronoOrderFlag { this, "ChronoTableToBeOrdered", true, "should the printout be ordered" }
private

Definition at line 181 of file ChronoStatSvc.h.

◆ m_chronoPrintLevel

MSG::Level ChronoStatSvc::m_chronoPrintLevel = MSG::INFO
private

level of info printing

Definition at line 167 of file ChronoStatSvc.h.

◆ m_chronoTableFlag

Gaudi::Property<bool> ChronoStatSvc::m_chronoTableFlag
private
Initial value:
{ this, "ChronoPrintOutTable", true,
"decide if the final printout should be performed" }

Definition at line 174 of file ChronoStatSvc.h.

◆ m_header

Gaudi::Property<std::string> ChronoStatSvc::m_header
private
Initial value:
{
this, "StatTableHeader",
" | Counter | # | sum | mean/eff^* | rms/err^* | min | max |",
"The header row for the output Stat-table" }

Definition at line 198 of file ChronoStatSvc.h.

◆ m_hiveWhiteBoardSvc

ServiceHandle<IInterface> ChronoStatSvc::m_hiveWhiteBoardSvc { this, "HiveWhiteBoardSvc", "EventDataSvc" }
private

Definition at line 207 of file ChronoStatSvc.h.

◆ m_intChronoPrintLevel

Gaudi::Property<int> ChronoStatSvc::m_intChronoPrintLevel
private
Initial value:
{
this, "ChronoPrintLevel", MSG::INFO, [this]( auto& ) { m_chronoPrintLevel = int2level( m_intChronoPrintLevel ); },
"print level" }

Definition at line 178 of file ChronoStatSvc.h.

◆ m_intStatPrintLevel

Gaudi::Property<int> ChronoStatSvc::m_intStatPrintLevel
private
Initial value:
{ this, "StatPrintLevel", MSG::INFO,
[this]( auto& ) { m_statPrintLevel = int2level( m_intStatPrintLevel ); },
"print level" }

Definition at line 189 of file ChronoStatSvc.h.

◆ m_mutex

std::mutex ChronoStatSvc::m_mutex
mutableprivate

Mutex protecting m_chronoEntities.

Definition at line 164 of file ChronoStatSvc.h.

◆ m_ofd

std::ofstream ChronoStatSvc::m_ofd
private

Definition at line 211 of file ChronoStatSvc.h.

◆ m_perEventFile

Gaudi::Property<std::string> ChronoStatSvc::m_perEventFile { this, "PerEventFile", "", "File name for per-event deltas" }
private

Definition at line 205 of file ChronoStatSvc.h.

◆ m_perEvtTime

TimeMap ChronoStatSvc::m_perEvtTime
private

Definition at line 210 of file ChronoStatSvc.h.

◆ m_printEllapsedTime

Gaudi::Property<bool> ChronoStatSvc::m_printEllapsedTime { this, "PrintEllapsedTime", false }
private

Definition at line 184 of file ChronoStatSvc.h.

◆ m_printSystemTime

Gaudi::Property<bool> ChronoStatSvc::m_printSystemTime { this, "PrintSystemTime", false }
private

Definition at line 183 of file ChronoStatSvc.h.

◆ m_printUserTime

Gaudi::Property<bool> ChronoStatSvc::m_printUserTime { this, "PrintUserTime", true }
private

Definition at line 182 of file ChronoStatSvc.h.

◆ m_statCoutFlag

Gaudi::Property<bool> ChronoStatSvc::m_statCoutFlag
private
Initial value:
{ this, "StatDestinationCout", false,
"define the destination of the table to be printed" }

Definition at line 187 of file ChronoStatSvc.h.

◆ m_statEntities

StatMap ChronoStatSvc::m_statEntities
private

stat part

Definition at line 170 of file ChronoStatSvc.h.

◆ m_statOrderFlag

Gaudi::Property<bool> ChronoStatSvc::m_statOrderFlag { this, "StatTableToBeOrdered", true, "should the printout be ordered" }
private

Definition at line 192 of file ChronoStatSvc.h.

◆ m_statPrintLevel

MSG::Level ChronoStatSvc::m_statPrintLevel = MSG::INFO
private

level of info printing

Definition at line 172 of file ChronoStatSvc.h.

◆ m_statsOutFileName

Gaudi::Property<std::string> ChronoStatSvc::m_statsOutFileName
private
Initial value:
{
this, "AsciiStatsOutputFile", "",
"Name of the output file storing the stats. If empty, no statistics will be saved (default)" }

Definition at line 194 of file ChronoStatSvc.h.

◆ m_statTableFlag

Gaudi::Property<bool> ChronoStatSvc::m_statTableFlag
private
Initial value:
{ this, "StatPrintOutTable", true,
"decide if the final printout should be performed" }

Definition at line 185 of file ChronoStatSvc.h.

◆ m_useEffFormat

Gaudi::Property<bool> ChronoStatSvc::m_useEffFormat
private
Initial value:
{ this, "UseEfficiencyRowFormat", true,
"Use the special format for printout of efficiency counters" }

Definition at line 202 of file ChronoStatSvc.h.


The documentation for this class was generated from the following files:
ChronoStatSvc::m_header
Gaudi::Property< std::string > m_header
Definition: ChronoStatSvc.h:198
std::setprecision
T setprecision(T... args)
std::lock
T lock(T... args)
ChronoStatSvc::m_printSystemTime
Gaudi::Property< bool > m_printSystemTime
Definition: ChronoStatSvc.h:183
Service::initialize
StatusCode initialize() override
Definition: Service.cpp:118
ChronoStatSvc::m_chronoOrderFlag
Gaudi::Property< bool > m_chronoOrderFlag
Definition: ChronoStatSvc.h:181
ChronoStatSvc::m_intStatPrintLevel
Gaudi::Property< int > m_intStatPrintLevel
Definition: ChronoStatSvc.h:189
std::string
STL class.
ChronoEntity::eMinimalTime
double eMinimalTime() const
minimal measurement for elapsed time
Definition: ChronoEntity.h:203
ChronoEntity
Definition: ChronoEntity.h:31
Gaudi.Configuration.log
log
Definition: Configuration.py:28
ChronoEntity::uMinimalTime
double uMinimalTime() const
minimal measurement for user time
Definition: ChronoEntity.h:195
ChronoEntity::stop
IChronoSvc::ChronoStatus stop()
stop the chrono
Definition: ChronoEntity.cpp:61
ChronoEntity::eRMSTime
double eRMSTime() const
r.m.s Elapsed Time
Definition: ChronoEntity.h:255
MSG::INFO
@ INFO
Definition: IMessageSvc.h:25
std::pair
std::vector::reserve
T reserve(T... args)
ChronoStatSvc::getEntity
ChronoEntity & getEntity(const ChronoTag &chronoTag)
Definition: ChronoStatSvc.h:150
IChronoSvc::ELAPSED
@ ELAPSED
Definition: IChronoSvc.h:56
ChronoStatSvc::m_chronoEntities
ChronoMap m_chronoEntities
chrono part
Definition: ChronoStatSvc.h:162
std::vector
STL class.
std::map::find
T find(T... args)
std::map::size
T size(T... args)
StatEntity
backward compatible StatEntity class.
Definition: StatEntity.h:23
std::back_inserter
T back_inserter(T... args)
ChronoStatSvc::m_statCoutFlag
Gaudi::Property< bool > m_statCoutFlag
Definition: ChronoStatSvc.h:187
std::map::emplace
T emplace(T... args)
ChronoEntity::eMeanTime
double eMeanTime() const
average Elapsed Time
Definition: ChronoEntity.h:243
ChronoEntity::delta
IChronoSvc::ChronoTime delta(IChronoSvc::ChronoType type) const
return the last delta-time of type "type"
Definition: ChronoEntity.h:271
ChronoStatSvc::m_statEntities
StatMap m_statEntities
stat part
Definition: ChronoStatSvc.h:170
ChronoEntity::eTotalTime
double eTotalTime() const
total Elapsed time
Definition: ChronoEntity.h:227
ChronoEntity::kMinimalTime
double kMinimalTime() const
minimal measurement for kernel time
Definition: ChronoEntity.h:199
std::sort
T sort(T... args)
Service::finalize
StatusCode finalize() override
Definition: Service.cpp:222
extends< Service, IChronoStatSvc, IIncidentListener >::base_class
extends base_class
Typedef to this class.
Definition: extends.h:24
std::map::clear
T clear(T... args)
AvalancheSchedulerErrorTest.msgSvc
msgSvc
Definition: AvalancheSchedulerErrorTest.py:80
ChronoEntity::start
IChronoSvc::ChronoStatus start()
start the current chrono
Definition: ChronoEntity.cpp:46
ChronoEntity::nOfMeasurements
unsigned long nOfMeasurements() const
number of chrono measurements
Definition: ChronoEntity.h:191
ChronoStatSvc::chronoStop
const ChronoEntity * chronoStop(const IChronoStatSvc::ChronoTag &chronoTag) override
Implementation of IChronoStatSvc::chronoStop.
Definition: ChronoStatSvc.cpp:288
ChronoEntity::uMeanTime
double uMeanTime() const
average User Time
Definition: ChronoEntity.h:239
bug_34121.t
t
Definition: bug_34121.py:31
ChronoEntity::outputSystemTime
std::string outputSystemTime() const
print the chrono ;
Definition: ChronoEntity.cpp:89
ChronoStatSvc::saveStats
void saveStats()
dump the statistics into an ASCII file for offline processing
Definition: ChronoStatSvc.cpp:366
ChronoStatSvc::m_printUserTime
Gaudi::Property< bool > m_printUserTime
Definition: ChronoStatSvc.h:182
ChronoStatSvc::m_mutex
std::mutex m_mutex
Mutex protecting m_chronoEntities.
Definition: ChronoStatSvc.h:164
ServiceHandle::get
T * get() const
Allow non const access to the service, even from a const handle...
Definition: ServiceHandle.h:89
Service::name
const std::string & name() const override
Retrieve name of the service
Definition: Service.cpp:332
StatusCode
Definition: StatusCode.h:65
StatEntity::print
std::ostream & print(std::ostream &o, bool tableFormat, std::string_view name, bool flag=true, std::string_view fmtHead="%|-48.48s|%|27t|") const
Definition: StatEntity.h:160
ChronoEntity::kRMSTime
double kRMSTime() const
r.m.s Kernel Time
Definition: ChronoEntity.h:247
ChronoEntity::kTotalTime
double kTotalTime() const
total Kernel time
Definition: ChronoEntity.h:223
ChronoEntity::outputElapsedTime
std::string outputElapsedTime() const
print the chrono ;
Definition: ChronoEntity.cpp:95
ChronoStatSvc::int2level
static MSG::Level int2level(int l)
Definition: ChronoStatSvc.h:156
std::cout
ChronoStatSvc::printStats
void printStats()
Definition: ChronoStatSvc.cpp:447
ChronoEntity::outputUserTime
std::string outputUserTime() const
print the chrono ;
Definition: ChronoEntity.cpp:82
std::ofstream
STL class.
ChronoStatSvc::m_printEllapsedTime
Gaudi::Property< bool > m_printEllapsedTime
Definition: ChronoStatSvc.h:184
ChronoStatSvc::m_chronoTableFlag
Gaudi::Property< bool > m_chronoTableFlag
Definition: ChronoStatSvc.h:174
Gaudi::Property::value
const ValueType & value() const
Definition: Property.h:237
std::ofstream::close
T close(T... args)
ChronoStatSvc::m_useEffFormat
Gaudi::Property< bool > m_useEffFormat
Definition: ChronoStatSvc.h:202
std::ofstream::open
T open(T... args)
SmartIF< IHiveWhiteBoard >
MsgStream::clear
void clear(STATE_TYPE _i=std::ios_base::failbit)
Definition: MsgStream.h:181
endmsg
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:202
ChronoEntity::status
IChronoSvc::ChronoStatus status() const
return the status of chrono
Definition: ChronoEntity.h:187
ChronoStatSvc::m_chronoPrintLevel
MSG::Level m_chronoPrintLevel
level of info printing
Definition: ChronoStatSvc.h:167
ServiceHandle::retrieve
StatusCode retrieve(T *&service) const override
Do the real retrieval of the Service.
Definition: ServiceHandle.h:97
ChronoStatSvc::isMT
bool isMT() const
Definition: ChronoStatSvc.cpp:433
ChronoStatSvc::m_perEvtTime
TimeMap m_perEvtTime
Definition: ChronoStatSvc.h:210
std::transform
T transform(T... args)
MsgStream
Definition: MsgStream.h:33
MSG::FATAL
@ FATAL
Definition: IMessageSvc.h:25
ChronoEntity::kMaximalTime
double kMaximalTime() const
maximal measurement for kernel time
Definition: ChronoEntity.h:211
ChronoEntity::uRMSTime
double uRMSTime() const
r.m.s User Time
Definition: ChronoEntity.h:251
ChronoStatSvc::m_intChronoPrintLevel
Gaudi::Property< int > m_intChronoPrintLevel
Definition: ChronoStatSvc.h:178
std::min
T min(T... args)
StatEntity::addFlag
unsigned long addFlag(const double v)
Definition: StatEntity.h:84
std::ostringstream
STL class.
ChronoStatSvc::m_ofd
std::ofstream m_ofd
Definition: ChronoStatSvc.h:211
StatusCode::isFailure
bool isFailure() const
Definition: StatusCode.h:129
ChronoStatSvc::m_hiveWhiteBoardSvc
ServiceHandle< IInterface > m_hiveWhiteBoardSvc
Definition: ChronoStatSvc.h:207
MSG::Level
Level
Definition: IMessageSvc.h:25
ChronoStatSvc::m_statTableFlag
Gaudi::Property< bool > m_statTableFlag
Definition: ChronoStatSvc.h:185
std::vector::emplace_back
T emplace_back(T... args)
ChronoStatSvc::chronoStart
ChronoEntity * chronoStart(const IChronoStatSvc::ChronoTag &chronoTag) override
Implementation of IChronoStatSvc::chronoStart.
Definition: ChronoStatSvc.cpp:280
StatusCode::SUCCESS
constexpr static const auto SUCCESS
Definition: StatusCode.h:100
std::endl
T endl(T... args)
ChronoStatSvc::m_statOrderFlag
Gaudi::Property< bool > m_statOrderFlag
Definition: ChronoStatSvc.h:192
gaudirun.l
dictionary l
Definition: gaudirun.py:583
std::vector::begin
T begin(T... args)
std::map::insert
T insert(T... args)
MSG::NIL
@ NIL
Definition: IMessageSvc.h:25
ChronoStatSvc::m_chronoCoutFlag
Gaudi::Property< bool > m_chronoCoutFlag
Definition: ChronoStatSvc.h:176
ChronoStatSvc::m_statPrintLevel
MSG::Level m_statPrintLevel
level of info printing
Definition: ChronoStatSvc.h:172
std::map::count
T count(T... args)
std::scientific
T scientific(T... args)
std::map::empty
T empty(T... args)
ChronoEntity::kMeanTime
double kMeanTime() const
average Kernel Time
Definition: ChronoEntity.h:235
std::ostringstream::str
T str(T... args)
ChronoStatSvc::m_perEventFile
Gaudi::Property< std::string > m_perEventFile
Definition: ChronoStatSvc.h:205
std::make_pair
T make_pair(T... args)
std::map::end
T end(T... args)
ChronoEntity::uMaximalTime
double uMaximalTime() const
maximal measurement for user time
Definition: ChronoEntity.h:207
StatusCode::FAILURE
constexpr static const auto FAILURE
Definition: StatusCode.h:101
std::max
T max(T... args)
IIncidentSvc
Definition: IIncidentSvc.h:33
ChronoStatSvc::m_statsOutFileName
Gaudi::Property< std::string > m_statsOutFileName
Definition: ChronoStatSvc.h:194
ProduceConsume.key
key
Definition: ProduceConsume.py:84
std::ofstream::is_open
T is_open(T... args)
ChronoEntity::eMaximalTime
double eMaximalTime() const
maximal measurement for elapsed time
Definition: ChronoEntity.h:215
ChronoEntity::uTotalTime
double uTotalTime() const
total user time
Definition: ChronoEntity.h:219
CompareFirstOfPointerPair
constexpr struct CompareFirstOfPointerPair_t CompareFirstOfPointerPair
Service::serviceLocator
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator
Definition: Service.cpp:335
PrepareBase.out
out
Definition: PrepareBase.py:20