Gaudi Framework, version v23r0

Home   Generated: Mon Jan 30 2012
Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes

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 <ChronoStatSvc.h>

Inheritance diagram for ChronoStatSvc:
Inheritance graph
[legend]
Collaboration diagram for ChronoStatSvc:
Collaboration graph
[legend]

List of all members.

Public Types

typedef std::map
< IChronoStatSvc::ChronoTag,
ChronoEntity
ChronoMap
 some useful typedefs
typedef std::map
< IChronoStatSvc::StatTag,
StatEntity
StatMap

Public Member Functions

virtual StatusCode initialize ()
 Implementation of IService::initialize()
virtual StatusCode finalize ()
 Implementation of IService::finalize()
virtual ChronoEntitychronoStart (const IChronoStatSvc::ChronoTag &chronoTag)
 Implementation of IChronoStatSvc::chronoStart.
virtual const ChronoEntitychronoStop (const IChronoStatSvc::ChronoTag &chronoTag)
 Implementation of IChronoStatSvc::chronoStop.
virtual IChronoStatSvc::ChronoTime chronoDelta (const IChronoStatSvc::ChronoTag &chronoTag, IChronoStatSvc::ChronoType theType)
 Implementation of IchronoStatSvc::chronoDelta.
virtual void chronoPrint (const IChronoStatSvc::ChronoTag &chronoTag)
 Implementation of IChronoStatSvc::chronoPrint.
virtual ChronoStatus chronoStatus (const IChronoStatSvc::ChronoTag &chronoTag)
 Implementation of IChronoStatSvc::chronoStatus.
virtual void stat (const IChronoStatSvc::StatTag &statTag, const IChronoStatSvc::StatFlag &statFlag)
 Implementation of IChronoStatSvc::stat add statistical information to the entity , tagged by its name.
virtual void statPrint (const IChronoStatSvc::ChronoTag &statTag)
 prints (using message service) info about statistical entity, tagged by its name
virtual const ChronoEntitychrono (const IChronoStatSvc::ChronoTag &t) const
 extract the chrono entity for the given tag (name)
virtual const StatEntitystat (const IChronoStatSvc::StatTag &t) const
 extract the stat entity for the given tag (name)
 ChronoStatSvc (const std::string &name, ISvcLocator *svcloc)
 Default constructor.
virtual ~ChronoStatSvc ()
 Destructor.

Protected Member Functions

void printStats ()

Private Member Functions

 ChronoStatSvc ()
 ChronoStatSvc (const ChronoStatSvc &)
ChronoStatSvcoperator= (const ChronoStatSvc &)
void saveStats ()
 dump the statistics into an ASCII file for offline processing

Private Attributes

ChronoMap m_chronoEntities
 chrono part
int m_intChronoPrintLevel
 level of info printing
MSG::Level m_chronoPrintLevel
bool m_chronoTableFlag
 flag for printing the final table
bool m_chronoCoutFlag
 flag for destination of the the final table
bool m_chronoOrderFlag
 flag for formattion the final statistic table
bool m_printUserTime
 flag for printing User quantities
bool m_printSystemTime
 flag for printing System quantities
bool m_printEllapsedTime
 flag for printing Ellapsed quantities
long m_numberOfSkippedEventsForMemStat
StatMap m_statEntities
 stat part
int m_intStatPrintLevel
 level of info printing
MSG::Level m_statPrintLevel
bool m_statTableFlag
 flag for printing the final table
bool m_statCoutFlag
 flag for destination of the t he final table
bool m_statOrderFlag
 flag for formattion the final statistic table
StringProperty m_statsOutFileName
 Name of the output file where we'll dump the stats.
std::string m_header
 the header row
std::string m_format1
 format for regular statistical printout rows
std::string m_format2
 format for "efficiency" statistical printout rows
bool m_useEffFormat
 flag to use the special "efficiency" format

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.Belyaev@itep.ru : December 1, 1999

Definition at line 36 of file ChronoStatSvc.h.


Member Typedef Documentation

some useful typedefs

Definition at line 40 of file ChronoStatSvc.h.

Definition at line 41 of file ChronoStatSvc.h.


Constructor & Destructor Documentation

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

Default constructor.

Parameters:
nameservice instance name
svclocpointer to servcie locator

decide if the final printout should be performed

define the destination of the table to be printed

print level

if printout is to be performed, should one take care about some ordering?

if User Time information to be printed?

if System Time information to be printed?

if Ellapsed Time information to be printed?

deside if the final printout should be performed

define the destination of the table to be printed

print level

if printout is to be performed, should one take care about some ordering?

Definition at line 91 of file ChronoStatSvc.cpp.

  : base_class( name , svcloc )
  , m_chronoEntities   ()
  , m_chronoPrintLevel ( MSG::INFO )
  , m_statEntities     ()
  , m_statPrintLevel   ( MSG::INFO )
  //
  // the header row
  , m_header  ( "     Counter     |     #     |    sum     | mean/eff^* | rms/err^*  |     min     |     max     |")
  // format for regular statistical printout rows
  , m_format1 ( " %|-15.15s|%|17t||%|10d| |%|11.7g| |%|#11.5g| |%|#11.5g| |%|#12.5g| |%|#12.5g| |" )
  // format for "efficiency" statistical printout rows
  , m_format2 ( "*%|-15.15s|%|17t||%|10d| |%|11.5g| |(%|#9.7g| +- %|-#9.7g|)%%|   -------   |   -------   |" )
  // flag to use the special "efficiency" format
  , m_useEffFormat ( true )
{
  declareProperty ( "ChronoPrintOutTable"    ,
                    m_chronoTableFlag      = true      );
  declareProperty ( "ChronoDestinationCout"  ,
                    m_chronoCoutFlag       = false     );
  declareProperty ( "ChronoPrintLevel"       ,
                    m_intChronoPrintLevel  = MSG::INFO );
  declareProperty ( "ChronoTableToBeOrdered" ,
                    m_chronoOrderFlag      = true      );
  declareProperty ( "PrintUserTime"          ,
                    m_printUserTime        = true      );
  declareProperty ( "PrintSystemTime"        ,
                    m_printSystemTime      = false     );
  declareProperty ( "PrintEllapsedTime"      ,
                    m_printEllapsedTime    = false     );
  declareProperty ( "StatPrintOutTable"      ,
                    m_statTableFlag        = true      );
  declareProperty ( "StatDestinationCout"    ,
                    m_statCoutFlag         = false     );
  declareProperty ( "StatPrintLevel"         ,
                    m_intStatPrintLevel    = MSG::INFO );
  declareProperty ( "StatTableToBeOrdered"   ,
                    m_statOrderFlag        = true      );

  // specify the number of events to be skipped by the memory auditor
  // in order to better spot memory leak
  declareProperty ( "NumberOfSkippedEventsForMemStat"      ,
                    m_numberOfSkippedEventsForMemStat = -1 ) ;

  declareProperty( "AsciiStatsOutputFile",
                   m_statsOutFileName = "",
                   "Name of the output file storing the stats. If empty, no"
                   " statistics will be saved (default)" );

  declareProperty
    ( "StatTableHeader"        , m_header                          ,
      "The header row for the output Stat-table"                   ) ;
  declareProperty
    ( "RegularRowFormat"       , m_format1                         ,
      "The format for the regular row in the output Stat-table"    ) ;
  declareProperty
    ( "EfficiencyRowFormat"    , m_format2                         ,
      "The format for the regular row in the outptu Stat-table"    ) ;
  declareProperty
    ( "UseEfficiencyRowFormat" , m_useEffFormat                    ,
      "Use the special format for printout of efficiency counters" ) ;
}
ChronoStatSvc::~ChronoStatSvc (  ) [virtual]

Destructor.

Definition at line 170 of file ChronoStatSvc.cpp.

{
  // clear the container of chrono entities
  m_chronoEntities.clear();
  // clear the container of stat   entities
  m_statEntities.clear();
}
ChronoStatSvc::ChronoStatSvc (  ) [private]
ChronoStatSvc::ChronoStatSvc ( const ChronoStatSvc  ) [private]

Member Function Documentation

const ChronoEntity * ChronoStatSvc::chrono ( const IChronoStatSvc::ChronoTag t ) const [virtual]

extract the chrono entity for the given tag (name)

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

Implements IChronoSvc.

Definition at line 472 of file ChronoStatSvc.cpp.

{
  ChronoMap::const_iterator it = m_chronoEntities.find ( t ) ;
  if ( m_chronoEntities.end() != it ) { return &(it->second) ; }
  return 0 ;
}
IChronoStatSvc::ChronoTime ChronoStatSvc::chronoDelta ( const IChronoStatSvc::ChronoTag chronoTag,
IChronoStatSvc::ChronoType  theType 
) [virtual]

Implementation of IchronoStatSvc::chronoDelta.

See also:
IChronoStatSvc

Implements IChronoSvc.

Definition at line 400 of file ChronoStatSvc.cpp.

{
  return m_chronoEntities[ chronoTag ].delta( theType );
}
void ChronoStatSvc::chronoPrint ( const IChronoStatSvc::ChronoTag chronoTag ) [virtual]

Implementation of IChronoStatSvc::chronoPrint.

See also:
IChronoStatSvc

Implements IChronoSvc.

Definition at line 409 of file ChronoStatSvc.cpp.

{
  MsgStream log ( msgSvc() , chronoTag );
  if( m_printUserTime   ) {
    log << (MSG::Level) m_chronoPrintLevel
        << m_chronoEntities[ chronoTag ].outputUserTime  ()
        << endmsg;
  }
  if( m_printSystemTime ) {
    log << (MSG::Level) m_chronoPrintLevel
        << m_chronoEntities[ chronoTag ].outputSystemTime()
        << endmsg;
  }
}
ChronoEntity * ChronoStatSvc::chronoStart ( const IChronoStatSvc::ChronoTag chronoTag ) [virtual]

Implementation of IChronoStatSvc::chronoStart.

See also:
IChronoStatSvc

Implements IChronoSvc.

Definition at line 378 of file ChronoStatSvc.cpp.

{
  ChronoEntity& entity = m_chronoEntities [ chronoTag ] ;
  entity.start() ;
  return &entity ;
}
IChronoStatSvc::ChronoStatus ChronoStatSvc::chronoStatus ( const IChronoStatSvc::ChronoTag chronoTag ) [virtual]

Implementation of IChronoStatSvc::chronoStatus.

See also:
IChronoStatSvc

Implements IChronoSvc.

Definition at line 428 of file ChronoStatSvc.cpp.

{ return m_chronoEntities[ chronoTag ].status(); }
const ChronoEntity * ChronoStatSvc::chronoStop ( const IChronoStatSvc::ChronoTag chronoTag ) [virtual]

Implementation of IChronoStatSvc::chronoStop.

See also:
IChronoStatSvc

Implements IChronoSvc.

Definition at line 389 of file ChronoStatSvc.cpp.

{
  ChronoEntity& entity = m_chronoEntities [ chronoTag ] ;
  entity.stop() ;
  return &entity ;
}
StatusCode ChronoStatSvc::finalize (  ) [virtual]

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

Reimplemented from Service.

Definition at line 228 of file ChronoStatSvc.cpp.

{
  std::string local = name()+".finalize()";
  MsgStream main_log( msgSvc() , local );
  chronoStop( name() ) ;

  if ( m_chronoTableFlag &&
       !m_chronoEntities.empty() &&
       ( m_printUserTime || m_printSystemTime ) )
    {
      MsgStream log( msgSvc() , "*****Chrono*****" );
      const std::string stars( ( m_chronoCoutFlag ) ? 126 : 100  , '*' );
      if( m_chronoCoutFlag  )
        {
          std::cout << stars << std::endl;
          std::cout << local <<  " The Final CPU consumption (Chrono) Table "
                    << ( m_chronoOrderFlag ? "(ordered)" : "(not ordered)" ) << std::endl;
          std::cout << stars << std::endl;
        }
      else
        {
          log << (MSG::Level) m_chronoPrintLevel
        << stars << endmsg;
          log << (MSG::Level) m_chronoPrintLevel
        << " The Final CPU consumption ( Chrono ) Table "
              << ( m_chronoOrderFlag ? "(ordered)" : "(not ordered)" ) << endmsg;
          log << (MSG::Level) m_chronoPrintLevel << stars << endmsg;
        }
      {  // prepare container for printing
        typedef std::pair<ChronoEntity*,const ChronoTag*>        MPair;
        typedef std::vector<MPair>                               MCont;
        MCont tmpCont;
        for( ChronoMap::iterator it = m_chronoEntities.begin() ;
       m_chronoEntities.end() != it ;  ++it )
          { tmpCont.push_back( MPair( &(it->second) , &(it->first) ) ) ; }
        // sort it
        if( m_chronoOrderFlag )
  { std::sort( tmpCont.begin() ,
               tmpCont.end()   ,
               ComparePairOfChronoEntityAndChronoTag() ); }
        // print User Time statistics
        if( m_printUserTime   )
          {
            for( MCont::iterator iter = tmpCont.begin() ;  tmpCont.end() != iter ; ++iter )
              {
                //
                ChronoEntity*    entity = iter->first  ; if( 0 == entity ) { continue ; } 
                const ChronoTag* tag    = iter->second ; if( 0 == tag    ) { continue ; } 

                entity->stop();              

                if     ( m_chronoCoutFlag )  
                  { std::cout << *tag << "\t"  << entity->outputUserTime  () << std::endl ; }
                else                         
                  {
                    MsgStream(msgSvc(), *tag)
          << m_chronoPrintLevel << entity->outputUserTime  () << endmsg ;
                  }
                //
              }
          }
        if( m_printSystemTime )
          {
            if      ( m_printUserTime && m_chronoCoutFlag   )
              { std::cout << stars << std::endl;                           }
            else if ( m_printUserTime && !m_chronoCoutFlag  )
              { log << (MSG::Level) m_chronoPrintLevel << stars << endmsg; }
            for( MCont::iterator iter = tmpCont.begin() ;  tmpCont.end() != iter ; ++iter )
              {
                ChronoEntity*    entity = iter->first  ; if( 0 == entity ) { continue ; } 
                const ChronoTag* tag    = iter->second ; if( 0 == tag    ) { continue ; } 

                entity->stop();              

                if     ( m_chronoCoutFlag )  
                  { std::cout << *tag << "\t"  << entity->outputSystemTime() << std::endl ; }
                else                         
                  {
                    MsgStream(msgSvc(), *tag)
          << m_chronoPrintLevel << entity->outputSystemTime() << endmsg ;
                  }
                //
              }
          }
        if( m_printEllapsedTime )
          {
            if      ( ( m_printUserTime || m_printSystemTime ) &&  m_chronoCoutFlag  )
              { std::cout << stars << std::endl;                           }
            else if ( ( m_printUserTime || m_printSystemTime ) && !m_chronoCoutFlag  )
              { log << (MSG::Level) m_chronoPrintLevel << stars << endmsg; }
            for( MCont::iterator iter = tmpCont.begin() ;  tmpCont.end() != iter ; ++iter )
              {
                ChronoEntity*    entity = iter->first  ; if( 0 == entity ) { continue ; } 
                const ChronoTag* tag    = iter->second ; if( 0 == tag    ) { continue ; } 

                entity->stop();              

                if     ( m_chronoCoutFlag )  
                  { std::cout << *tag << "\t"  << entity->outputElapsedTime() << std::endl ; }
                else                         
                  {
                    MsgStream(msgSvc(), *tag)
          << m_chronoPrintLevel << entity->outputElapsedTime() << endmsg ;
                  }
                //
              }
          }
        tmpCont.clear();   
      }
      if( m_chronoCoutFlag  ) { std::cout << stars << std::endl;              }
      else                    { log << m_chronoPrintLevel << stars << endmsg; }
    }


  if ( m_statTableFlag ) { printStats () ; }

  if ( !m_statsOutFileName.value().empty() ) {
    saveStats();
  }

  main_log << MSG::INFO << " Service finalized successfully " << endmsg;

  return Service::finalize(); 
}
StatusCode ChronoStatSvc::initialize (  ) [virtual]

Implementation of IService::initialize()

redefine some "properties"

start its own chrono

Reimplemented from Service.

Definition at line 180 of file ChronoStatSvc.cpp.

ChronoStatSvc& ChronoStatSvc::operator= ( const ChronoStatSvc  ) [private]
void ChronoStatSvc::printStats (  ) [protected]

nothing to print?

CONTINUE

CONTINUE

decoration

Definition at line 573 of file ChronoStatSvc.cpp.

{
  if ( m_statEntities.empty() ) { return ; }

  MsgStream log ( msgSvc() , "******Stat******" ) ;
  const std::string stars( ( m_statCoutFlag ) ? 126 : 100  , '*' ) ;
  if ( m_statCoutFlag  )
        {
          std::cout << stars << std::endl;
          std::cout <<  " The Final stat Table "
              << ( m_statOrderFlag ? "(ordered)" : "(not ordered)" ) << std::endl;
          std::cout << stars << std::endl;
        }
  else
  {
          log << m_statPrintLevel << stars << endmsg;
          log <<  m_statPrintLevel << " The Final stat Table "
              << ( m_statOrderFlag ? "(ordered)" : "(not ordered)" ) << endmsg;
          log << m_statPrintLevel << stars << endmsg;
        }

  {
    // prepare container for printing
    typedef std::pair<const StatEntity*,const StatTag*>  SPair;
    typedef std::vector<SPair>                           SCont;
    SCont tmpCont;
    for( StatMap::const_iterator it = m_statEntities.begin();
         it != m_statEntities.end(); it++ )
    { tmpCont.push_back( SPair( &(it->second) , &(it->first) ) ) ; }
    // sort it
    if ( m_statOrderFlag )
    { std::sort( tmpCont.begin() ,
                 tmpCont.end()   ,
                 ComparePairOfStatEntityAndStatTag() ); }


    {
      // print the table header
      if ( m_statCoutFlag ) { std::cout <<                     m_header << std::endl ; }
      else                  { log       << m_statPrintLevel << m_header << endmsg    ; }
    }
    // loop over counters and print them:
    for ( SCont::iterator iter = tmpCont.begin() ; tmpCont.end() != iter ; ++iter )
          {
      const StatEntity* entity = iter->first  ;
      if ( 0 == entity ) { continue ; } 
      const StatTag*    tag    = iter->second ;
      if ( 0 == tag    ) { continue ; } 

            if ( m_statCoutFlag )
      {
        std::cout
          << Gaudi::Utils::formatAsTableRow
          ( *tag , *entity , m_useEffFormat , m_format1 , m_format2 )
          << std::endl;
      }
            else
      {
        log
          << m_statPrintLevel
          << Gaudi::Utils::formatAsTableRow
          ( *tag , *entity , m_useEffFormat , m_format1 , m_format2 )
          << endmsg ;
      }
          }
    tmpCont.clear();
  }
  if ( m_statCoutFlag  ) { std::cout << stars << std::endl;            }
  else                   { log << m_statPrintLevel << stars << endmsg; }
}
void ChronoStatSvc::saveStats (  ) [private]

dump the statistics into an ASCII file for offline processing

CONTINUE

CONTINUE

Definition at line 495 of file ChronoStatSvc.cpp.

{
  std::ofstream out( m_statsOutFileName.value().c_str(),
                     std::ios_base::out | std::ios_base::trunc );
  if ( !out.good() ) {
    MsgStream msg( msgSvc() , name() );
    msg << MSG::INFO
        << "Could not open the output file for writing chrono statistics ["
        << m_statsOutFileName.value() << "]"
        << endmsg;
    return;
  } else {
    // format it our way
    out << std::scientific << std::setprecision(8) ;
  }

  // ChronoEntity
  typedef std::pair<ChronoEntity*, const ChronoTag*> MPair;
  typedef std::vector<MPair>                         MCont;
  MCont chronos;

  for( ChronoMap::iterator it = m_chronoEntities.begin() ;
       m_chronoEntities.end() != it ;  ++it ) {
    chronos.push_back( MPair( &(it->second) , &(it->first) ) ) ;
  }

  // sort it
  std::sort( chronos.begin() ,
             chronos.end()   ,
             ComparePairOfChronoEntityAndChronoTag() );

  // print User Time statistics
  for( MCont::iterator iter = chronos.begin() ;
       chronos.end() != iter;
       ++iter ) {
    //
    const ChronoEntity*    entity = iter->first;
    if( 0 == entity ) { continue ; } 

    const ChronoTag* tag    = iter->second ;
    if( 0 == tag    ) { continue ; } 

    // create an entry in the .INI-like table
    out << "\n[" << *tag << "]\n";

    // user
    out << "cpu_user_total = " << entity->uTotalTime() << "\n";
    out << "cpu_user_min = "   << entity->uMinimalTime() << "\n";
    out << "cpu_user_mean = "  << entity->uMeanTime() << "\n";
    out << "cpu_user_RMS = "   << entity->uRMSTime() << "\n";
    out << "cpu_user_max = "   << entity->uMaximalTime() << "\n";
    out << "cpu_user_nbr = "   << entity->nOfMeasurements() << "\n";

    // system
    out << "\n"; // just for clarity
    out << "cpu_system_total = " << entity->kTotalTime() << "\n";
    out << "cpu_system_min = "   << entity->kMinimalTime() << "\n";
    out << "cpu_system_mean = "  << entity->kMeanTime() << "\n";
    out << "cpu_system_RMS = "   << entity->kRMSTime() << "\n";
    out << "cpu_system_max = "   << entity->kMaximalTime() << "\n";
    out << "cpu_system_nbr = "   << entity->nOfMeasurements() << "\n";

    // real
    out << "\n"; // just for clarity
    out << "cpu_real_total = " << entity->eTotalTime() << "\n";
    out << "cpu_real_min = "   << entity->eMinimalTime() << "\n";
    out << "cpu_real_mean = "  << entity->eMeanTime() << "\n";
    out << "cpu_real_RMS = "   << entity->eRMSTime() << "\n";
    out << "cpu_real_max = "   << entity->eMaximalTime() << "\n";
    out << "cpu_real_nbr = "   << entity->nOfMeasurements() << "\n";

  }

  out << std::endl;
}
void ChronoStatSvc::stat ( const IChronoStatSvc::StatTag statTag,
const IChronoStatSvc::StatFlag statFlag 
) [virtual]

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

See also:
IChronoStatSvc

Implements IStatSvc.

Definition at line 434 of file ChronoStatSvc.cpp.

{
  StatMap::iterator theIter=m_statEntities.find(statTag);

  StatEntity * theStat=0 ;
  // if new entity, specify the neumber of events to be skipped
  if (theIter==m_statEntities.end()){
    // new stat entity
    StatEntity& theSe = m_statEntities[ statTag ];
    theStat=& theSe;
    theStat->setnEntriesBeforeReset(m_numberOfSkippedEventsForMemStat);
  }
  else
  {
    //existing stat entity
    theStat=&((*theIter).second);
  }

  theStat->addFlag ( statFlag ) ;
}
const StatEntity * ChronoStatSvc::stat ( const IChronoStatSvc::StatTag t ) const [virtual]

extract the stat entity for the given tag (name)

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

Implements IStatSvc.

Definition at line 486 of file ChronoStatSvc.cpp.

{
  StatMap::const_iterator it = m_statEntities.find ( t ) ;
  if ( m_statEntities.end() != it ) { return &(it->second) ; }
  return 0 ;
}
void ChronoStatSvc::statPrint ( const IChronoStatSvc::ChronoTag statTag ) [virtual]

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

See also:
IChronoStatSvc

Implements IStatSvc.

Definition at line 459 of file ChronoStatSvc.cpp.

{
  MsgStream log ( msgSvc() , statTag ) ;
  log << (MSG::Level) m_statPrintLevel << m_statEntities[ statTag ] << endmsg;
}

Member Data Documentation

flag for destination of the the final table

Definition at line 149 of file ChronoStatSvc.h.

chrono part

Definition at line 142 of file ChronoStatSvc.h.

flag for formattion the final statistic table

Definition at line 151 of file ChronoStatSvc.h.

Definition at line 145 of file ChronoStatSvc.h.

flag for printing the final table

Definition at line 147 of file ChronoStatSvc.h.

format for regular statistical printout rows

Definition at line 182 of file ChronoStatSvc.h.

format for "efficiency" statistical printout rows

Definition at line 184 of file ChronoStatSvc.h.

the header row

Definition at line 180 of file ChronoStatSvc.h.

level of info printing

Definition at line 144 of file ChronoStatSvc.h.

level of info printing

Definition at line 166 of file ChronoStatSvc.h.

Definition at line 160 of file ChronoStatSvc.h.

flag for printing Ellapsed quantities

Definition at line 157 of file ChronoStatSvc.h.

flag for printing System quantities

Definition at line 155 of file ChronoStatSvc.h.

flag for printing User quantities

Definition at line 153 of file ChronoStatSvc.h.

flag for destination of the t he final table

Definition at line 171 of file ChronoStatSvc.h.

stat part

Definition at line 163 of file ChronoStatSvc.h.

flag for formattion the final statistic table

Definition at line 173 of file ChronoStatSvc.h.

Definition at line 167 of file ChronoStatSvc.h.

Name of the output file where we'll dump the stats.

Definition at line 177 of file ChronoStatSvc.h.

flag for printing the final table

Definition at line 169 of file ChronoStatSvc.h.

flag to use the special "efficiency" format

Definition at line 186 of file ChronoStatSvc.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines

Generated at Mon Jan 30 2012 13:53:10 for Gaudi Framework, version v23r0 by Doxygen version 1.7.2 written by Dimitri van Heesch, © 1997-2004