Jpp  18.0.0-rc.4
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
externals/km3net-dataformat/src/JDAQEvent.cc
Go to the documentation of this file.
2 
3 
4 /**
5  * \author mdejong
6  */
7 
8 namespace KM3NETDAQ {
9 
10 
11  /**
12  * Get triggered hits.
13  *
14  * \return triggered hits
15  */
16  template<>
17  const std::vector<JDAQTriggeredHit>& JDAQEvent::getHits<JDAQTriggeredHit>() const
18  {
19  return triggeredHits;
20  }
21 
22 
23  /**
24  * Get snapshot hits.
25  *
26  * \return snapshot hits
27  */
28  template<>
29  const std::vector<JDAQKeyHit>& JDAQEvent::getHits<JDAQSnapshotHit>() const
30  {
31  return snapshotHits;
32  }
33 
34 
35  /**
36  * Get triggered hits.
37  *
38  * \return triggered hits
39  */
40  template<>
41  std::vector<JDAQTriggeredHit>& JDAQEvent::getHits<JDAQTriggeredHit>()
42  {
43  return triggeredHits;
44  }
45 
46 
47  /**
48  * Get snapshot hits.
49  *
50  * \return snapshot hits
51  */
52  template<>
53  std::vector<JDAQKeyHit>& JDAQEvent::getHits<JDAQSnapshotHit>()
54  {
55  return snapshotHits;
56  }
57 
58 
59  /**
60  * Get begin of triggered hits.
61  *
62  * \return begin triggered hits
63  */
64  template<>
65  JDAQEvent::const_iterator<JDAQTriggeredHit> JDAQEvent::begin<JDAQTriggeredHit>() const
66  {
67  return triggeredHits.begin();
68  }
69 
70 
71  /**
72  * Get end of triggered hits.
73  *
74  * \return end triggered hits
75  */
76  template<>
77  JDAQEvent::const_iterator<JDAQTriggeredHit> JDAQEvent::end<JDAQTriggeredHit>() const
78  {
79  return triggeredHits.end();
80  }
81 
82 
83  /**
84  * Get begin of snapshot hits.
85  *
86  * \return begin snapshot hits
87  */
88  template<>
89  JDAQEvent::const_iterator<JDAQSnapshotHit> JDAQEvent::begin<JDAQKeyHit>() const
90  {
91  return snapshotHits.begin();
92  }
93 
94 
95  /**
96  * Get end of snapshot hits.
97  *
98  * \return end snapshot hits
99  */
100  template<>
101  JDAQEvent::const_iterator<JDAQSnapshotHit> JDAQEvent::end<JDAQKeyHit>() const
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<>
113  JDAQEvent::const_reverse_iterator<JDAQTriggeredHit> JDAQEvent::rbegin<JDAQTriggeredHit>() const
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<>
125  JDAQEvent::const_reverse_iterator<JDAQTriggeredHit> JDAQEvent::rend<JDAQTriggeredHit>() const
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<>
137  JDAQEvent::const_reverse_iterator<JDAQSnapshotHit> JDAQEvent::rbegin<JDAQKeyHit>() const
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<>
149  JDAQEvent::const_reverse_iterator<JDAQSnapshotHit> JDAQEvent::rend<JDAQKeyHit>() const
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<>
161  unsigned int JDAQEvent::size<JDAQTriggeredHit>() const
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<>
173  unsigned int JDAQEvent::size<JDAQSnapshotHit>() const
174  {
175  return snapshotHits.size();
176  }
177 
178 
179  /**
180  * Check emptyness of triggered data.
181  *
182  * \return emptyness triggered hits
183  */
184  template<>
185  bool JDAQEvent::empty<JDAQTriggeredHit>() const
186  {
187  return triggeredHits.empty();
188  }
189 
190 
191  /**
192  * Check emptyness of snapshot data.
193  *
194  * \return emptyness snapshot hits
195  */
196  template<>
197  bool JDAQEvent::empty<JDAQSnapshotHit>() const
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  */
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 }
bool operator==(const JDAQChronometer &first, const JDAQChronometer &second)
Equal operator for DAQ chronometers.
DAQ key hit.
Definition: JDAQKeyHit.hh:19
JDAQUTCExtended getTimesliceStart() const
Get start of timeslice.
JTriggerMask_t getTriggerMask() const
Get trigger mask.
bool empty() const
Check emptyness of hit container.
Template const_iterator.
Definition: JDAQEvent.hh:68
Template const_reverse_iterator.
Definition: JDAQEvent.hh:95
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
std::ostream & print(std::ostream &out, const bool lpr=false) const
Print DAQ Event.
const std::vector< T > & getHits() const
Get container with hits.
const_iterator< T > begin() const
Get begin of data.
double getTimeDifference(const JDAQChronometer &first, const JDAQChronometer &second)
Get time difference between two chronometers.
unsigned int getOverlays() const
Get number of overlays.
Auxiliary class to set-up Hit.
Definition: JSirene.hh:57
const JDAQEventHeader & getDAQEventHeader() const
Get DAQ event header.
JTriggerCounter_t getCounter() const
Get trigger counter.