ToolDAQFramework
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
TimeDelta.h
Go to the documentation of this file.
1 #ifndef TIMEDELTA_H
2 #define TIMEDELTA_H
3 
4 #include <iostream>
5 #include <vector>
6 #include <stdint.h>
7 
26 class TimeDelta{
27 
28  public:
32  TimeDelta(const TimeDelta&) = default;
34  TimeDelta(double naive_ns);
35 
37  typedef float short_time_t;
39  typedef int64_t long_time_t;
40 
45 
47  static constexpr double s_long_time_unit = 1.;
48 
50  void Normalize();
51 
52  // Unit constants:
53 
55  static const TimeDelta ps;
57  static const TimeDelta ns;
59  static const TimeDelta us;
61  static const TimeDelta ms;
63  static const TimeDelta s;
64 
65 };
66 
67 // Operators
68 TimeDelta operator*(const TimeDelta& old_delta, double factor);
69 TimeDelta operator*(double factor, const TimeDelta& old_delta);
70 double operator/(const TimeDelta& left_delta, const TimeDelta& right_delta);
71 TimeDelta operator+(const TimeDelta& left_delta, const TimeDelta& right_delta);
72 TimeDelta operator-(const TimeDelta& left_delta, const TimeDelta& right_delta);
73 bool operator<(const TimeDelta& left_delta, const TimeDelta& right_delta);
74 bool operator<=(const TimeDelta& left_delta, const TimeDelta& right_delta);
75 bool operator>(const TimeDelta& left_delta, const TimeDelta& right_delta);
76 bool operator>=(const TimeDelta& left_delta, const TimeDelta& right_delta);
77 bool operator==(const TimeDelta& left_delta, const TimeDelta& right_delta);
78 bool operator!=(const TimeDelta& left_delta, const TimeDelta& right_delta);
79 TimeDelta& operator+=(TimeDelta& left_delta, const TimeDelta& right_delta);
80 TimeDelta& operator-=(TimeDelta& left_delta, const TimeDelta& right_delta);
81 std::ostream& operator<<(std::ostream& outs, const TimeDelta& delta);
82 
83 #endif
static const TimeDelta ps
TimeDelta of 1 ps.
Definition: TimeDelta.h:55
float short_time_t
Type for relative hit times within a SubSample. Unit = ns.
Definition: TimeDelta.h:37
double operator/(const TimeDelta &left_delta, const TimeDelta &right_delta)
Definition: TimeDelta.cpp:37
static constexpr double s_long_time_unit
Relative unit of long time member, i.e. long_unit / short_unit, both ns so = 1.
Definition: TimeDelta.h:47
bool operator>(const TimeDelta &left_delta, const TimeDelta &right_delta)
Definition: TimeDelta.cpp:88
bool operator>=(const TimeDelta &left_delta, const TimeDelta &right_delta)
Definition: TimeDelta.cpp:92
void Normalize()
Ensure that the time difference stored in m_short_time is small and positive.
Definition: TimeDelta.cpp:14
static const TimeDelta ms
TimeDelta of 1 ms.
Definition: TimeDelta.h:61
static const TimeDelta us
TimeDelta of 1 us.
Definition: TimeDelta.h:59
TimeDelta operator-(const TimeDelta &left_delta, const TimeDelta &right_delta)
Definition: TimeDelta.cpp:53
bool operator==(const TimeDelta &left_delta, const TimeDelta &right_delta)
Definition: TimeDelta.cpp:67
long_time_t m_long_time
Member for long time delta.
Definition: TimeDelta.h:44
bool operator<(const TimeDelta &left_delta, const TimeDelta &right_delta)
Definition: TimeDelta.cpp:75
bool operator<=(const TimeDelta &left_delta, const TimeDelta &right_delta)
Definition: TimeDelta.cpp:84
static const TimeDelta ns
TimeDelta of 1 ns.
Definition: TimeDelta.h:57
int64_t long_time_t
Type for absolute timestamps of a SubSample. Unit = ns.
Definition: TimeDelta.h:39
TimeDelta()
Default constructor (sets all times to 0)
Definition: TimeDelta.h:30
TimeDelta operator+(const TimeDelta &left_delta, const TimeDelta &right_delta)
Definition: TimeDelta.cpp:45
TimeDelta & operator-=(TimeDelta &left_delta, const TimeDelta &right_delta)
Definition: TimeDelta.cpp:62
std::ostream & operator<<(std::ostream &outs, const TimeDelta &delta)
Definition: TimeDelta.cpp:100
bool operator!=(const TimeDelta &left_delta, const TimeDelta &right_delta)
Definition: TimeDelta.cpp:96
TimeDelta & operator+=(TimeDelta &left_delta, const TimeDelta &right_delta)
Definition: TimeDelta.cpp:57
short_time_t m_short_time
Member for short time deltas.
Definition: TimeDelta.h:42
static const TimeDelta s
TimeDelta of 1 s.
Definition: TimeDelta.h:63
TimeDelta operator*(const TimeDelta &old_delta, double factor)
Definition: TimeDelta.cpp:20