The Gaudi Framework  v32r2 (46d42edc)
ChronoStatSvc Class Reference

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

#include <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...
 
StatEntity * stat (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...
 
StatusCode setProperties ()
 Method for setting declared properties to the values specified for the job. 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 >
StatusCode declareTool (ToolHandle< T > &handle, std::string toolTypeAndName, bool createIf=true)
 Declare used tool. More...
 
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 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< 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...
 
MSG::Level outputLevel () const
 Backward compatibility function for getting the output level. 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...
 

Protected Member Functions

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

typedef std::lock_guard< std::mutexlock_t
 
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"}
 
Gaudi::Property< bool > m_auditInit {this, "AuditServices", false, " 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()"}
 
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 36 of file ChronoStatSvc.h.

Member Typedef Documentation

◆ ChronoMap

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

some useful typedefs

Definition at line 40 of file ChronoStatSvc.h.

◆ lock_t

Definition at line 155 of file ChronoStatSvc.h.

◆ StatMap

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

Definition at line 41 of file ChronoStatSvc.h.

◆ TimeMap

Definition at line 200 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 108 of file ChronoStatSvc.h.

108 : base_class( name, svcloc ) {}
extends base_class
Typedef to this class.
Definition: extends.h:14
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:274

◆ 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  lock_t lock( m_mutex );
349  auto it = m_chronoEntities.find( t );
350  return m_chronoEntities.end() != it ? &( it->second ) : nullptr;
351 }
std::mutex m_mutex
Mutex protecting m_chronoEntities.
T end(T... args)
T lock(T... args)
T find(T... args)
std::lock_guard< std::mutex > lock_t
ChronoMap m_chronoEntities
chrono part

◆ 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 }
ChronoEntity & getEntity(const ChronoTag &chronoTag)
IChronoSvc::ChronoTime delta(IChronoSvc::ChronoType type) const
return the last delta-time of type "type"
Definition: ChronoEntity.h:261

◆ 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 }
ChronoEntity & getEntity(const ChronoTag &chronoTag)
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
const SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
Gaudi::Property< bool > m_printUserTime
MSG::Level m_chronoPrintLevel
level of info printing
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
std::string outputUserTime() const
print the chrono ;
std::string outputSystemTime() const
print the chrono ;
Gaudi::Property< bool > m_printSystemTime

◆ 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 }
ChronoEntity & getEntity(const ChronoTag &chronoTag)
a small helper class for implementation of ChronoStatSvc service, It also could be used as some local...
Definition: ChronoEntity.h:21
IChronoSvc::ChronoStatus start()
start the current chrono

◆ 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 }
ChronoEntity & getEntity(const ChronoTag &chronoTag)
IChronoSvc::ChronoStatus status() const
return the status of chrono
Definition: ChronoEntity.h:177

◆ 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 }
ChronoEntity & getEntity(const ChronoTag &chronoTag)
a small helper class for implementation of ChronoStatSvc service, It also could be used as some local...
Definition: ChronoEntity.h:21
IChronoSvc::ChronoStatus stop()
stop the chrono

◆ 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 }
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
T empty(T... args)
const SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
StatusCode finalize() override
Definition: Service.cpp:164
StatMap m_statEntities
stat part
a small helper class for implementation of ChronoStatSvc service, It also could be used as some local...
Definition: ChronoEntity.h:21
T endl(T... args)
Gaudi::Property< bool > m_chronoOrderFlag
Gaudi::Property< bool > m_printUserTime
T end(T... args)
STL class.
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:274
void saveStats()
dump the statistics into an ASCII file for offline processing
constexpr struct CompareFirstOfPointerPair_t CompareFirstOfPointerPair
void clear(STATE_TYPE _i=std::ios_base::failbit)
Definition: MsgStream.h:171
TimeMap m_perEvtTime
T close(T... args)
const ChronoEntity * chronoStop(const IChronoStatSvc::ChronoTag &chronoTag) override
Implementation of IChronoStatSvc::chronoStop.
MsgStream & debug() const
shortcut for the method msgStream(MSG::DEBUG)
Gaudi::Property< bool > m_chronoTableFlag
T clear(T... args)
std::ofstream m_ofd
MSG::Level m_chronoPrintLevel
level of info printing
Gaudi::Property< bool > m_printEllapsedTime
T size(T... args)
STL class.
T begin(T... args)
Gaudi::Property< bool > m_statTableFlag
bool isMT() const
Gaudi::Property< std::string > m_statsOutFileName
Gaudi::Property< bool > m_chronoCoutFlag
T sort(T... args)
T is_open(T... args)
IChronoSvc::ChronoStatus stop()
stop the chrono
std::string outputElapsedTime() const
print the chrono ;
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
std::string outputUserTime() const
print the chrono ;
std::string outputSystemTime() const
print the chrono ;
T reserve(T... args)
ChronoMap m_chronoEntities
chrono part
T emplace_back(T... args)
Gaudi::Property< bool > m_printSystemTime
Gaudi::Property< std::string > m_perEventFile

◆ getEntity()

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

Definition at line 140 of file ChronoStatSvc.h.

140  {
141  lock_t lock( m_mutex );
142  return m_chronoEntities[chronoTag];
143  }
std::mutex m_mutex
Mutex protecting m_chronoEntities.
T lock(T... args)
std::lock_guard< std::mutex > lock_t
ChronoMap m_chronoEntities
chrono part

◆ 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  lock_t 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 }
std::mutex m_mutex
Mutex protecting m_chronoEntities.
T end(T... args)
TimeMap m_perEvtTime
T lock(T... args)
std::ofstream m_ofd
T find(T... args)
std::lock_guard< std::mutex > lock_t
T is_open(T... args)
ChronoMap m_chronoEntities
chrono part

◆ initialize()

StatusCode ChronoStatSvc::initialize ( )
override

Implementation of IService::initialize()

start its own chrono

Definition at line 86 of file ChronoStatSvc.cpp.

86  {
88  if ( sc.isFailure() ) return sc;
90  // Set my own properties
91  sc = setProperties();
92 
93  if ( sc.isFailure() ) {
94  error() << "setting my properties" << endmsg;
95  return StatusCode::FAILURE;
96  }
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 }
StatusCode initialize() override
Definition: Service.cpp:60
SmartIF< ISvcLocator > & serviceLocator() const override
Retrieve pointer to service locator.
Definition: Service.cpp:277
T open(T... args)
constexpr static const auto SUCCESS
Definition: StatusCode.h:85
Gaudi::Property< bool > m_printUserTime
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
Definition: ISvcLocator.h:76
const std::string & name() const override
Retrieve name of the service.
Definition: Service.cpp:274
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:50
Gaudi::Property< bool > m_chronoTableFlag
std::ofstream m_ofd
StatusCode setProperties()
Method for setting declared properties to the values specified for the job.
Definition: Service.cpp:280
Gaudi::Property< bool > m_printEllapsedTime
ChronoEntity * chronoStart(const IChronoStatSvc::ChronoTag &chronoTag) override
Implementation of IChronoStatSvc::chronoStart.
constexpr static const auto FAILURE
Definition: StatusCode.h:86
bool isFailure() const
Definition: StatusCode.h:130
T is_open(T... args)
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
The interface implemented by the IncidentSvc service.
Definition: IIncidentSvc.h:23
Gaudi::Property< bool > m_printSystemTime
Gaudi::Property< std::string > m_perEventFile

◆ int2level()

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

Definition at line 146 of file ChronoStatSvc.h.

146  {
147  return static_cast<MSG::Level>(
148  std::max( std::min( l, static_cast<int>( MSG::FATAL ) ), static_cast<int>( MSG::NIL ) ) );
149  };
T min(T... args)
T max(T... args)
dictionary l
Definition: gaudirun.py:523

◆ 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 }
MsgStream & error() const
shortcut for the method msgStream(MSG::ERROR)
StatusCode retrieve() const
Retrieve the Service.
Definition: ServiceHandle.h:70
ServiceHandle< IInterface > m_hiveWhiteBoardSvc
T * get() const
Release the Service.
Definition: ServiceHandle.h:81
bool isMT() const
bool isFailure() const
Definition: StatusCode.h:130

◆ merge()

void ChronoStatSvc::merge ( const ChronoStatSvc css)

Compound assignment operator.

Definition at line 56 of file ChronoStatSvc.cpp.

56  {
57 
58  // Add the content of the maps, leave the rest unchanged
59 
60  lock_t lock( m_mutex );
61  lock_t otherLock( css.m_mutex );
62 
63  // Merge Chronomaps
64  for ( auto& item : css.m_chronoEntities ) {
65  const IChronoStatSvc::ChronoTag& key = item.first;
66  const ChronoEntity& val = item.second;
67  if ( m_chronoEntities.count( key ) )
68  m_chronoEntities[key] += val;
69  else
71  }
72 
73  // Merge StatMaps
74  for ( auto& item : css.m_statEntities ) {
75  const IChronoStatSvc::StatTag& key = item.first;
76  const StatEntity& val = item.second;
77  if ( m_statEntities.count( key ) )
78  m_statEntities[key] += val;
79  else
80  m_statEntities.emplace( key, val );
81  }
82 }
StatMap m_statEntities
stat part
a small helper class for implementation of ChronoStatSvc service, It also could be used as some local...
Definition: ChronoEntity.h:21
std::mutex m_mutex
Mutex protecting m_chronoEntities.
T lock(T... args)
T count(T... args)
T insert(T... args)
std::lock_guard< std::mutex > lock_t
T emplace(T... args)
ChronoMap m_chronoEntities
chrono part

◆ 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 ) {
479  std::cout << m_header.value() << std::endl;
480  } else {
481  log << m_statPrintLevel << m_header.value() << endmsg;
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 }
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
T empty(T... args)
const SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
Gaudi::Property< std::string > m_header
StatMap m_statEntities
stat part
Gaudi::Property< bool > m_statCoutFlag
T endl(T... args)
T end(T... args)
STL class.
Gaudi::Property< bool > m_useEffFormat
constexpr struct CompareFirstOfPointerPair_t CompareFirstOfPointerPair
void clear(STATE_TYPE _i=std::ios_base::failbit)
Definition: MsgStream.h:171
Gaudi::Property< bool > m_statOrderFlag
T str(T... args)
T make_pair(T... args)
MSG::Level m_chronoPrintLevel
level of info printing
STL class.
T begin(T... args)
T back_inserter(T... args)
bool isMT() const
MSG::Level m_statPrintLevel
level of info printing
T sort(T... args)
T transform(T... args)
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192

◆ 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
374  out << std::scientific << std::setprecision( 8 );
375  }
376 
377  // ChronoEntity
379  {
380  lock_t 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 }
double eRMSTime() const
r.m.s Elapsed Time
Definition: ChronoEntity.h:245
a small helper class for implementation of ChronoStatSvc service, It also could be used as some local...
Definition: ChronoEntity.h:21
T endl(T... args)
std::mutex m_mutex
Mutex protecting m_chronoEntities.
double uMinimalTime() const
minimal measurement for user time
Definition: ChronoEntity.h:185
T end(T... args)
MsgStream & info() const
shortcut for the method msgStream(MSG::INFO)
double kRMSTime() const
r.m.s Kernel Time
Definition: ChronoEntity.h:237
STL class.
double eMaximalTime() const
maximal measurement for elapsed time
Definition: ChronoEntity.h:205
double uTotalTime() const
total user time
Definition: ChronoEntity.h:209
constexpr struct CompareFirstOfPointerPair_t CompareFirstOfPointerPair
unsigned long nOfMeasurements() const
number of chrono measurements
Definition: ChronoEntity.h:181
double eMinimalTime() const
minimal measurement for elapsed time
Definition: ChronoEntity.h:193
T lock(T... args)
double uMeanTime() const
average User Time
Definition: ChronoEntity.h:229
double kMeanTime() const
average Kernel Time
Definition: ChronoEntity.h:225
T make_pair(T... args)
double eTotalTime() const
total Elapsed time
Definition: ChronoEntity.h:217
T scientific(T... args)
T size(T... args)
STL class.
double kTotalTime() const
total Kernel time
Definition: ChronoEntity.h:213
T begin(T... args)
T back_inserter(T... args)
std::lock_guard< std::mutex > lock_t
double uMaximalTime() const
maximal measurement for user time
Definition: ChronoEntity.h:197
double kMinimalTime() const
minimal measurement for kernel time
Definition: ChronoEntity.h:189
Gaudi::Property< std::string > m_statsOutFileName
T sort(T... args)
T transform(T... args)
double eMeanTime() const
average Elapsed Time
Definition: ChronoEntity.h:233
T setprecision(T... args)
double kMaximalTime() const
maximal measurement for kernel time
Definition: ChronoEntity.h:201
double uRMSTime() const
r.m.s User Time
Definition: ChronoEntity.h:241
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192
T reserve(T... args)
ChronoMap m_chronoEntities
chrono part

◆ 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 }
StatMap m_statEntities
stat part
T end(T... args)
T find(T... args)

◆ 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 }
StatMap m_statEntities
stat part
T end(T... args)
T find(T... args)

◆ 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 }
Definition of the MsgStream class used to transmit messages.
Definition: MsgStream.h:24
const SmartIF< IMessageSvc > & msgSvc() const
The standard message service.
StatMap m_statEntities
stat part
MSG::Level m_statPrintLevel
level of info printing
MsgStream & endmsg(MsgStream &s)
MsgStream Modifier: endmsg. Calls the output method of the MsgStream.
Definition: MsgStream.h:192

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 167 of file ChronoStatSvc.h.

◆ m_chronoEntities

ChronoMap ChronoStatSvc::m_chronoEntities
private

chrono part

Definition at line 149 of file ChronoStatSvc.h.

◆ m_chronoOrderFlag

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

Definition at line 172 of file ChronoStatSvc.h.

◆ m_chronoPrintLevel

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

level of info printing

Definition at line 158 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 165 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 189 of file ChronoStatSvc.h.

◆ m_hiveWhiteBoardSvc

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

Definition at line 198 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 169 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 180 of file ChronoStatSvc.h.

◆ m_mutex

std::mutex ChronoStatSvc::m_mutex
mutableprivate

Mutex protecting m_chronoEntities.

Definition at line 154 of file ChronoStatSvc.h.

◆ m_ofd

std::ofstream ChronoStatSvc::m_ofd
private

Definition at line 202 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 196 of file ChronoStatSvc.h.

◆ m_perEvtTime

TimeMap ChronoStatSvc::m_perEvtTime
private

Definition at line 201 of file ChronoStatSvc.h.

◆ m_printEllapsedTime

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

Definition at line 175 of file ChronoStatSvc.h.

◆ m_printSystemTime

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

Definition at line 174 of file ChronoStatSvc.h.

◆ m_printUserTime

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

Definition at line 173 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 178 of file ChronoStatSvc.h.

◆ m_statEntities

StatMap ChronoStatSvc::m_statEntities
private

stat part

Definition at line 161 of file ChronoStatSvc.h.

◆ m_statOrderFlag

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

Definition at line 183 of file ChronoStatSvc.h.

◆ m_statPrintLevel

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

level of info printing

Definition at line 163 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 185 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 176 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 193 of file ChronoStatSvc.h.


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