Gaudi Framework, version v20r2

Generated: 18 Jul 2008

ChronoStatSvc.h

Go to the documentation of this file.
00001 // $Id: ChronoStatSvc.h,v 1.13 2008/05/13 12:37:19 marcocle Exp $ 
00002 // ============================================================================
00003 // CVS tag $Name: v17r1 $, version $Revision: 1.13 $ 
00004 // ============================================================================
00005 #ifndef      GAUDISVC_CHRONOSTATSVC_H__
00006 #define      GAUDISVC_CHRONOSTATSVC_H__
00007 // ============================================================================
00008 // include files 
00009 // ============================================================================
00010 // STD & STL 
00011 // ============================================================================
00012 #include <string> 
00013 #include <map> 
00014 #include <functional> 
00015 // ============================================================================
00016 // GaudiKernel
00017 // ============================================================================
00018 #include "GaudiKernel/SvcFactory.h" 
00019 #include "GaudiKernel/Kernel.h" 
00020 #include "GaudiKernel/Service.h" 
00021 #include "GaudiKernel/IChronoStatSvc.h"
00022 // ============================================================================
00024 // ============================================================================
00025 class ISvcLocator  ;
00026 class IMessageSvc  ;
00027 // ============================================================================
00036 class ChronoStatSvc: virtual public IChronoStatSvc, 
00037                      public Service 
00038 {
00039 public: 
00040   // ============================================================================
00042   typedef std::map<IChronoStatSvc::ChronoTag,ChronoEntity>  ChronoMap ; 
00043   typedef std::map<IChronoStatSvc::StatTag,StatEntity>      StatMap   ;
00044   // ============================================================================ 
00045 public:
00046   // ============================================================================
00048   virtual StatusCode initialize();  
00050   virtual StatusCode finalize();
00052   virtual StatusCode    queryInterface 
00053   ( const InterfaceID& riid, void** ppvi );
00054   // ============================================================================
00055 public:
00056   // ============================================================================
00060   virtual       ChronoEntity* chronoStart 
00061   ( const IChronoStatSvc::ChronoTag& chronoTag );
00062   // ============================================================================
00066   virtual const ChronoEntity* chronoStop  
00067   ( const IChronoStatSvc::ChronoTag& chronoTag );
00068   // ============================================================================  
00072   virtual IChronoStatSvc::ChronoTime chronoDelta
00073   ( const IChronoStatSvc::ChronoTag& chronoTag,
00074     IChronoStatSvc::ChronoType theType );
00075   // ============================================================================  
00079   virtual void    chronoPrint  
00080   ( const IChronoStatSvc::ChronoTag& chronoTag );
00081   // ============================================================================  
00085   virtual ChronoStatus  chronoStatus 
00086   ( const IChronoStatSvc::ChronoTag& chronoTag );
00087   // ============================================================================
00092   virtual void     stat          
00093   ( const IChronoStatSvc::StatTag    &  statTag    , 
00094     const IChronoStatSvc::StatFlag   &  statFlag   ) ; 
00095   // ============================================================================  
00100   virtual void     statPrint     
00101   (  const IChronoStatSvc::ChronoTag& statTag) ;
00102   // ============================================================================  
00108   virtual const ChronoEntity* chrono 
00109   ( const IChronoStatSvc::ChronoTag& t ) const  ;
00110   // ============================================================================
00116   virtual const StatEntity*   stat   
00117   ( const IChronoStatSvc::StatTag&   t ) const ;
00118   // ============================================================================  
00123   ChronoStatSvc ( const std::string& name, ISvcLocator* svcloc );
00125   virtual ~ChronoStatSvc();
00126   // ============================================================================
00127 protected:
00128   // ============================================================================
00129   // print the "Stat" part of the ChronoStatSvc
00130   void printStats() ;
00131   // ============================================================================
00132 private:
00133   // ============================================================================
00134   // default constructor is disabled 
00135   ChronoStatSvc() ;
00136   // copy constructor is disabled
00137   ChronoStatSvc( const  ChronoStatSvc& ) ;
00138   // assignement operator constructor is disabled  
00139   ChronoStatSvc& operator=( const  ChronoStatSvc& ) ;
00140   // ============================================================================  
00142   void saveStats();
00143   // ============================================================================  
00144 private: 
00145   // ============================================================================
00147   ChronoMap      m_chronoEntities;
00149   int            m_intChronoPrintLevel ;
00150   MSG::Level     m_chronoPrintLevel    ; 
00152   bool           m_chronoTableFlag     ;   
00154   bool           m_chronoCoutFlag      ;   
00156   bool           m_chronoOrderFlag     ;
00158   bool           m_printUserTime       ; 
00160   bool           m_printSystemTime     ; 
00162   bool           m_printEllapsedTime   ; 
00163   
00164   // property
00165   long m_numberOfSkippedEventsForMemStat ;
00166   
00168   StatMap        m_statEntities; 
00169   
00171   int            m_intStatPrintLevel ;
00172   MSG::Level     m_statPrintLevel    ; 
00174   bool           m_statTableFlag     ;   
00176   bool           m_statCoutFlag      ;   
00178   bool           m_statOrderFlag     ;
00180 
00182   StringProperty m_statsOutFileName;
00183   
00184   // the header row
00185   std::string    m_header  ; 
00186   // format for regular statistical printout rows
00187   std::string    m_format1 ; 
00188   // format for "efficiency" statistical printout rows
00189   std::string    m_format2 ; 
00190   // flag to use the special "efficiency" format 
00191   bool           m_useEffFormat ; 
00192   // ============================================================================  
00193 };
00194 // ============================================================================
00195 // The END 
00196 // ============================================================================
00197 #endif   //  GAUDISVC_CHRONOSTATSVC_H
00198 // ============================================================================
00199 
00200 

Generated at Fri Jul 18 11:59:23 2008 for Gaudi Framework, version v20r2 by Doxygen version 1.5.1 written by Dimitri van Heesch, © 1997-2004