Jpp 19.3.0-rc.1
the software that should make you happy
Loading...
Searching...
No Matches
JDAQChronometer.hh
Go to the documentation of this file.
1#ifndef __JDAQCHRONOMETER__
2#define __JDAQCHRONOMETER__
3
4#include <ostream>
5#include <iomanip>
6
10
11
12/**
13 * \author mdejong
14 */
15
16namespace KM3NETDAQ {
17
18 /**
19 * DAQ chronometer.
20 */
22 {
23 public:
24
27 friend JWriter& operator<<(JWriter&, const JDAQChronometer&);
28
29 /**
30 * Default constructor.
31 */
33 detector_id(0),
34 run (0),
35 frame_index(0),
37 {}
38
39
40 /**
41 * Constructor.
42 *
43 * \param __detector_id detector identifier
44 * \param __run run number
45 * \param __frame_index frame index
46 */
47 JDAQChronometer(const int __detector_id,
48 const int __run,
49 const int __frame_index) :
50 detector_id(__detector_id),
51 run (__run),
52 frame_index(__frame_index),
53 timeslice_start(getTimeOfFrame(__frame_index))
54 {}
55
56
57 /**
58 * Constructor.
59 *
60 * \param __detector_id detector identifier
61 * \param __run run number
62 * \param __frame_index frame index
63 * \param __timeslice_start start of time slice
64 */
65 JDAQChronometer(const int __detector_id,
66 const int __run,
67 const int __frame_index,
68 const JDAQUTCExtended& __timeslice_start) :
69 detector_id(__detector_id),
70 run (__run),
71 frame_index(__frame_index),
72 timeslice_start(__timeslice_start)
73 {}
74
75
76 /**
77 * Virtual destructor.
78 */
80 {}
81
82
83 /**
84 * Get DAQ chronometer.
85 *
86 * \return DAQ chronometer
87 */
89 {
90 return static_cast<const JDAQChronometer&>(*this);
91 }
92
93
94 /**
95 * Set DAQ chronometer.
96 *
97 * \param chronometer DAQ chronometer
98 */
99 void setDAQChronometer(const JDAQChronometer& chronometer)
100 {
101 static_cast<JDAQChronometer&>(*this) = chronometer;
102 }
103
104
105 /**
106 * Get detector identifier.
107 *
108 * \return detector identifier
109 */
110 int getDetectorID() const
111 {
112 return detector_id;
113 }
114
115
116 /**
117 * Get run number.
118 *
119 * \return run number
120 */
121 int getRunNumber() const
122 {
123 return run;
124 }
125
126
127 /**
128 * Get frame index.
129 *
130 * \return frame index
131 */
132 int getFrameIndex() const
133 {
134 return frame_index;
135 }
136
137
138 /**
139 * Get start of timeslice
140 *
141 * \return timeslice start
142 */
143
145 {
146 return timeslice_start;
147 }
148
149
150 /**
151 * Set run number.
152 *
153 * \param run run number
154 */
155 void setRunNumber(const int run)
156 {
157 this->run = run;
158 }
159
160
161 /**
162 * Set frame index.
163 *
164 * \param frame_index frame index
165 */
167 {
168 this->frame_index = frame_index;
169 }
170
171
172 /**
173 * Set timeslice start time
174 *
175 * \param timeslice_start timeslice start time
176 */
178 {
179 this->timeslice_start = timeslice_start;
180 }
181
182
184
185
186 protected:
188 int run;
191 };
192
193
194 /**
195 * Print DAQ chronometer.
196 *
197 * \param out output stream
198 * \param chronometer JDAQChronometer
199 * \return output stream
200 */
201 inline std::ostream& operator<<(std::ostream& out, const JDAQChronometer& chronometer)
202 {
203 using namespace std;
204
205 out << setw(8) << chronometer.getDetectorID();
206 out << ' ';
207 out << setw(8) << chronometer.getRunNumber();
208 out << ' ';
209 out << setw(8) << chronometer.getFrameIndex();
210 out << ' ';
211 out << chronometer.getTimesliceStart();
212
213 return out;
214 }
215
216
217 /**
218 * Get time of last RTS in ns since start of run for a given chronometer.
219 *
220 * \param chronometer chronometer
221 * \return time [ns]
222 */
223 inline double getTimeOfRTS(const JDAQChronometer& chronometer)
224 {
225 return getTimeOfRTS(chronometer.getFrameIndex());
226 }
227
228
229 /**
230 * Equal operator for DAQ chronometers.
231 *
232 * \param first chronometer
233 * \param second chronometer
234 * \result true if first chronometer equal to second; else false
235 */
236 inline bool operator==(const JDAQChronometer& first,
237 const JDAQChronometer& second)
238 {
239 return (first.getDetectorID() == second.getDetectorID() &&
240 first.getRunNumber() == second.getRunNumber() &&
241 first.getFrameIndex() == second.getFrameIndex() &&
242 first.getTimesliceStart() == second.getTimesliceStart());
243 }
244
245
246 /**
247 * Not-equal operator for DAQ chronometers.
248 *
249 * \param first chronometer
250 * \param second chronometer
251 * \result true if first chronometer not equal to second; else false
252 */
253 inline bool operator!=(const JDAQChronometer& first,
254 const JDAQChronometer& second)
255 {
256 return !(first == second);
257 }
258
259
260 /**
261 * Get time difference between two chronometers.
262 *
263 * \param first chronometer
264 * \param second chronometer
265 * \result time difference [s]
266 */
267 inline double getTimeDifference(const JDAQChronometer& first, const JDAQChronometer& second)
268 {
269 return getTimeDifference(first.getTimesliceStart(), second.getTimesliceStart());
270 }
271}
272
273#endif
Interface for binary input.
Interface for binary output.
ClassDef(JDAQChronometer, 3)
JDAQChronometer(const int __detector_id, const int __run, const int __frame_index, const JDAQUTCExtended &__timeslice_start)
Constructor.
int getDetectorID() const
Get detector identifier.
virtual ~JDAQChronometer()
Virtual destructor.
friend JWriter & operator<<(JWriter &, const JDAQChronometer &)
Write DAQ chronometer to output.
const JDAQChronometer & getDAQChronometer() const
Get DAQ chronometer.
void setFrameIndex(const int frame_index)
Set frame index.
int getRunNumber() const
Get run number.
JDAQUTCExtended getTimesliceStart() const
Get start of timeslice.
JDAQChronometer(const int __detector_id, const int __run, const int __frame_index)
Constructor.
JDAQChronometer()
Default constructor.
void setDAQChronometer(const JDAQChronometer &chronometer)
Set DAQ chronometer.
friend JReader & operator>>(JReader &, JDAQChronometer &)
Read DAQ chronometer from input.
void setRunNumber(const int run)
Set run number.
void setTimesliceStart(const JDAQUTCExtended &timeslice_start)
Set timeslice start time.
int getFrameIndex() const
Get frame index.
Data structure for UTC time.
bool operator==(const Head &first, const Head &second)
Equal operator.
Definition JHead.hh:1801
bool operator!=(const JTag &first, const JTag &second)
Not equal operator for JTag.
Definition JTag.hh:291
KM3NeT DAQ data structures and auxiliaries.
Definition DataQueue.cc:39
size_t getSizeof< JDAQChronometer >()
Get size of type.
double getTimeOfRTS(const JDAQChronometer &chronometer)
Get time of last RTS in ns since start of run for a given chronometer.
double getTimeDifference(const JDAQChronometer &first, const JDAQChronometer &second)
Get time difference between two chronometers.
JWriter & operator<<(JWriter &out, const JDAQChronometer &chronometer)
Write DAQ chronometer to output.