Jpp 19.3.0-rc.1
the software that should make you happy
Loading...
Searching...
No Matches
externals/km3net-dataformat/src/JDAQEvent.cc
Go to the documentation of this file.
2
3
4/**
5 * \author mdejong
6 */
7
8namespace KM3NETDAQ {
9
10
11 /**
12 * Get triggered hits.
13 *
14 * \return triggered hits
15 */
16 template<>
21
22
23 /**
24 * Get snapshot hits.
25 *
26 * \return snapshot hits
27 */
28 template<>
30 {
31 return snapshotHits;
32 }
33
34
35 /**
36 * Get triggered hits.
37 *
38 * \return triggered hits
39 */
40 template<>
42 {
43 return triggeredHits;
44 }
45
46
47 /**
48 * Get snapshot hits.
49 *
50 * \return snapshot hits
51 */
52 template<>
54 {
55 return snapshotHits;
56 }
57
58
59 /**
60 * Get begin of triggered hits.
61 *
62 * \return begin triggered hits
63 */
64 template<>
66 {
67 return triggeredHits.begin();
68 }
69
70
71 /**
72 * Get end of triggered hits.
73 *
74 * \return end triggered hits
75 */
76 template<>
78 {
79 return triggeredHits.end();
80 }
81
82
83 /**
84 * Get begin of snapshot hits.
85 *
86 * \return begin snapshot hits
87 */
88 template<>
90 {
91 return snapshotHits.begin();
92 }
93
94
95 /**
96 * Get end of snapshot hits.
97 *
98 * \return end snapshot hits
99 */
100 template<>
102 {
103 return snapshotHits.end();
104 }
105
106
107 /**
108 * Get reverse begin of triggered hits.
109 *
110 * \return begin triggered hits
111 */
112 template<>
114 {
115 return triggeredHits.rbegin();
116 }
117
118
119 /**
120 * Get reverse end of triggered hits.
121 *
122 * \return end triggered hits
123 */
124 template<>
126 {
127 return triggeredHits.rend();
128 }
129
130
131 /**
132 * Get reverse begin of snapshot hits.
133 *
134 * \return begin snapshot hits
135 */
136 template<>
138 {
139 return snapshotHits.rbegin();
140 }
141
142
143 /**
144 * Get reverse end of snapshot hits.
145 *
146 * \return end snapshot hits
147 */
148 template<>
150 {
151 return snapshotHits.rend();
152 }
153
154
155 /**
156 * Get number of triggered hits.
157 *
158 * \return number of triggered hits
159 */
160 template<>
162 {
163 return triggeredHits.size();
164 }
165
166
167 /**
168 * Get number of snapshot hits.
169 *
170 * \return number of snapshot hits
171 */
172 template<>
174 {
175 return snapshotHits.size();
176 }
177
178
179 /**
180 * Check emptyness of triggered data.
181 *
182 * \return emptyness triggered hits
183 */
184 template<>
186 {
187 return triggeredHits.empty();
188 }
189
190
191 /**
192 * Check emptyness of snapshot data.
193 *
194 * \return emptyness snapshot hits
195 */
196 template<>
198 {
199 return snapshotHits.empty();
200 }
201
202
203 /**
204 * Equal operator for DAQ events.
205 *
206 * \param first event
207 * \param second event
208 * \result true if first event equal to second; else false
209 */
210 bool operator==(const JDAQEvent& first,
211 const JDAQEvent& second)
212 {
213 return (first.getDAQEventHeader() == second.getDAQEventHeader() &&
214 first.getHits<JDAQTriggeredHit>() == second.getHits<JDAQTriggeredHit>() &&
215 first.getHits<JDAQSnapshotHit> () == second.getHits<JDAQSnapshotHit> ());
216 }
217
218
219 /**
220 * Print DAQ Event.
221 *
222 * \param out output stream
223 * \param lpr long print
224 * \return output stream
225 */
226 std::ostream& JDAQEvent::print(std::ostream& out, const bool lpr) const
227 {
228 using namespace std;
229
230 out << this->ClassName() << endl;
231 out << dynamic_cast<const JDAQPreamble&> (*this) << endl;
232 out << dynamic_cast<const JDAQChronometer&>(*this) << endl;
233
234 out << "Trigger counter " << this->getCounter() << endl;
235 out << "Trigger mask (hex) " << hex << this->getTriggerMask() << dec << endl;
236 out << "Overlays " << this->getOverlays() << endl;
237 out << "Triggered hits " << this->size<JDAQTriggeredHit>() << endl;
238 out << "Snapshot hits " << this->size<JDAQSnapshotHit> () << endl;
239
240 {
241 typedef JDAQTriggeredHit JHit_t;
242
243 for (JDAQEvent::const_iterator<JHit_t> hit = this->begin<JHit_t>(); hit != this->end<JHit_t>(); ++hit) {
244 out << setw(5) << hit->getModuleID() << ' '
245 << setw(2) << (int) hit->getPMT() << ' '
246 << setw(10) << (int) hit->getT() << ' '
247 << setw(3) << (int) hit->getToT() << ' '
248 << setw(10) << hex << hit->getTriggerMask() << dec << endl;
249 }
250 }
251
252 if (lpr) {
253
254 typedef JDAQSnapshotHit JHit_t;
255
256 for (JDAQEvent::const_iterator<JHit_t> hit = this->begin<JHit_t>(); hit != this->end<JHit_t>(); ++hit) {
257 out << setw(5) << hit->getModuleID() << ' '
258 << setw(2) << (int) hit->getPMT() << ' '
259 << setw(10) << (int) hit->getT() << ' '
260 << setw(3) << (int) hit->getToT() << endl;
261 }
262 }
263
264 return out;
265 }
266
267
268 /**
269 * Get time difference between two events.
270 *
271 * \param first event
272 * \param second event
273 * \result time difference [s]
274 */
275 inline double getTimeDifference(const JDAQEvent& first, const JDAQEvent& second)
276 {
277 double dt = getTimeDifference(first.getTimesliceStart(), second.getTimesliceStart());
278
279 if (!first.empty<JDAQTriggeredHit>() && !second.empty<JDAQTriggeredHit>()) {
280 dt += (second.begin<JDAQTriggeredHit>()->getT() -
281 first .begin<JDAQTriggeredHit>()->getT()) * 1.0e-9;
282 }
283
284 return dt;
285 }
286}
JDAQUTCExtended getTimesliceStart() const
Get start of timeslice.
const JDAQEventHeader & getDAQEventHeader() const
Get DAQ event header.
unsigned int getOverlays() const
Get number of overlays.
Template const_iterator.
Definition JDAQEvent.hh:68
Template const_reverse_iterator.
Definition JDAQEvent.hh:95
const std::vector< T > & getHits() const
Get container with hits.
const_iterator< T > end() const
Get end of data.
unsigned int size() const
Get number of hits.
const_reverse_iterator< T > rend() const
Get reverse end of data.
const_iterator< T > begin() const
Get begin of data.
std::vector< JDAQSnapshotHit > snapshotHits
Definition JDAQEvent.hh:265
JTriggerMask_t getTriggerMask() const
Get trigger mask.
bool empty() const
Check emptyness of hit container.
std::ostream & print(std::ostream &out, const bool lpr=false) const
Print DAQ Event.
std::vector< JDAQTriggeredHit > triggeredHits
Definition JDAQEvent.hh:264
const_reverse_iterator< T > rbegin() const
Get reverse begin of data.
JTDC_t getT() const
Get time.
Definition JDAQHit.hh:86
JTriggerCounter_t getCounter() const
Get trigger counter.
bool operator==(const Head &first, const Head &second)
Equal operator.
Definition JHead.hh:1801
KM3NeT DAQ data structures and auxiliaries.
Definition DataQueue.cc:39
double getTimeDifference(const JDAQChronometer &first, const JDAQChronometer &second)
Get time difference between two chronometers.
Auxiliary class to set-up Hit.
Definition JSirene.hh:58