Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/global/management/include/G4Timer.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /global/management/include/G4Timer.hh (Version 11.3.0) and /global/management/include/G4Timer.hh (Version ReleaseNotes)


** Warning: Cannot open xref database.

  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26 // G4Timer                                        
 27 //                                                
 28 // Class description:                             
 29 //                                                
 30 // Class for timer objects, able to measure el    
 31 //                                                
 32 // Note: Uses <sys/times.h> & <unistd.h> - POS    
 33 //       If used, this header must be included    
 34 //       must be the first header file to be i    
 35 //                                                
 36 // Member functions:                              
 37 //                                                
 38 // G4Timer()                                      
 39 //   Construct a timer object                     
 40 // Start()                                        
 41 //   Start timing                                 
 42 // Stop()                                         
 43 //   Stop timing                                  
 44 // G4bool IsValid()                               
 45 //   Return true if have a valid time (ie star    
 46 // G4double GetRealElapsed()                      
 47 //   Return the elapsed real time between last    
 48 // G4double GetSystemElapsed()                    
 49 //   Return the elapsed system time between la    
 50 // G4double GetUserElapsed()                      
 51 //   Return the elapsed user time between last    
 52 //                                                
 53 // Operators:                                     
 54 //                                                
 55 // std::ostream& operator << (std::ostream& os    
 56 //   Print the elapsed real,system and usertim    
 57 //   if !IsValid                                  
 58 //                                                
 59 // Member data:                                   
 60 //                                                
 61 // G4bool fValidTimes                             
 62 //   True after start and stop have both been     
 63 //   an equal number of times                     
 64 // clock_t fStartRealTime,fEndRealTime            
 65 //   Real times (arbitrary time 0)                
 66 // tms fStartTimes,fEndTimes                      
 67 //   Timing structures (see times(2)) for star    
 68                                                   
 69 // Author: P.Kent, 21.08.95 - First implementa    
 70 // Revision: G.Cosmo, 29.04.97 - Added timings    
 71 // -------------------------------------------    
 72 #ifndef G4TIMER_HH                                
 73 #define G4TIMER_HH 1                              
 74                                                   
 75 #if !(defined(WIN32) || defined(__MINGW32__))     
 76 #  include <sys/times.h>                          
 77 #  include <unistd.h>                             
 78 #else                                             
 79 #  include <time.h>                               
 80 #  define _SC_CLK_TCK 1                           
 81                                                   
 82 extern "C"                                        
 83 {                                                 
 84   int sysconf(int);                               
 85 };                                                
 86                                                   
 87 // Structure returned by times()                  
 88                                                   
 89 struct tms                                        
 90 {                                                 
 91   clock_t tms_utime;  /* user time */             
 92   clock_t tms_stime;  /* system time */           
 93   clock_t tms_cutime; /* user time, children *    
 94   clock_t tms_cstime; /* system time, children    
 95 };                                                
 96                                                   
 97 extern "C"                                        
 98 {                                                 
 99   extern clock_t times(struct tms*);              
100 };                                                
101 #endif /* WIN32 */                                
102                                                   
103 #include "G4Types.hh"                             
104 #include "G4ios.hh"                               
105                                                   
106 #include <chrono>                                 
107                                                   
108 class G4Timer                                     
109 {                                                 
110  public:                                          
111   inline void Start();                            
112   inline void Stop();                             
113   inline G4bool IsValid() const;                  
114   inline const char* GetClockTime() const;        
115   G4double GetRealElapsed() const;                
116   G4double GetSystemElapsed() const;              
117   G4double GetUserElapsed() const;                
118                                                   
119  private:                                         
120   G4bool fValidTimes{false};                      
121   using clock_type = std::chrono::high_resolut    
122   std::chrono::time_point<clock_type> fStartRe    
123   tms fStartTimes, fEndTimes;                     
124 };                                                
125                                                   
126 std::ostream& operator<<(std::ostream& os, con    
127                                                   
128 #include "G4Timer.icc"                            
129                                                   
130 #endif                                            
131