EUDAQ
 All Classes Namespaces Files Functions Variables Pages
Timer.hh
1 #ifndef EUDAQ_INCLUDED_Timer
2 #define EUDAQ_INCLUDED_Timer
3 
4 #include "eudaq/Time.hh"
5 
6 namespace eudaq {
7 
8  class Timer {
9  public:
10  Timer() : m_start(Time::Current()), m_stop(0) {}
11  void Restart() {
12  m_stop = Time(0);
13  m_start = Time::Current();
14  }
15  void Stop() { m_stop = Time::Current(); }
16  Time Elapsed() const { return StopTime() - m_start; }
17  double Seconds() const { return Elapsed().Seconds(); }
18  double mSeconds() const { return 1e3 * Seconds(); }
19  double uSeconds() const { return 1e6 * Seconds(); }
20  std::string
21  Formatted(const std::string &format = TIME_DEFAULT_FORMAT) const {
22  return Elapsed().Formatted(format);
23  }
24 
25  private:
26  Time StopTime() const {
27  return m_stop == Time(0) ? Time::Current() : m_stop;
28  }
29  Time m_start, m_stop;
30  };
31 }
32 
33 #endif // EUDAQ_INCLUDED_Timer
Definition: Time.hh:32
Definition: Timer.hh:8