Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JDAQEventHeader.hh
Go to the documentation of this file.
1 #ifndef __JDAQEVENTHEADER__
2 #define __JDAQEVENTHEADER__
3 
4 #include "JIO/JSerialisable.hh"
5 #include "JDAQ/JDAQRoot.hh"
6 #include "JDAQ/JDAQHeader.hh"
9 
10 
11 /**
12  * \author mdejong
13  */
14 
15 namespace KM3NETDAQ {
16 
17  using JIO::JReader;
18  using JIO::JWriter;
19 
20 
21  /**
22  * JDAQ event header.
23  */
25  public JDAQHeader,
26  public JDAQTriggerCounter,
27  public JDAQTriggerMask
28  {
29  public:
30  /**
31  * Default constructor.
32  */
34  JDAQHeader(),
37  overlays(0)
38  {}
39 
40 
41  /**
42  * Constructor.
43  *
44  * \param chronometer DAQ chronometer
45  * \param mask trigger mask
46  */
47  JDAQEventHeader(const JDAQChronometer& chronometer,
48  const JDAQTriggerMask& mask = JDAQTriggerMask()) :
49  JDAQHeader(chronometer),
51  JDAQTriggerMask(mask),
52  overlays(0)
53  {}
54 
55 
56  /**
57  * Get DAQ event header.
58  *
59  * \return DAQ event header
60  */
62  {
63  return static_cast<const JDAQEventHeader&>(*this);
64  }
65 
66 
67  /**
68  * Check if header is same.
69  *
70  * \param header DAQ event header
71  * \return true if event headers are same; else false
72  */
73  inline bool is_same(const JDAQEventHeader& header) const
74  {
75  return (this->getDetectorID() == header.getDetectorID() &&
76  this->getRunNumber() == header.getRunNumber() &&
77  this->getFrameIndex() == header.getFrameIndex() &&
78  this->getCounter() == header.getCounter());
79  }
80 
81 
82  /**
83  * Get number of overlays.
84  *
85  * \return number of overlays
86  */
87  unsigned int getOverlays() const
88  {
89  return overlays;
90  }
91 
92 
93  /**
94  * Read DAQ event header from input.
95  *
96  * \param in JReader
97  * \param header JDAQEventHeader
98  * \return JReader
99  */
100  friend inline JReader& operator>>(JReader& in, JDAQEventHeader& header)
101  {
102  in >> static_cast<JDAQHeader&> (header);
103  in >> static_cast<JDAQTriggerCounter&>(header);
104  in >> static_cast<JDAQTriggerMask&> (header);
105  in >> header.overlays;
106 
107  return in;
108  }
109 
110 
111  /**
112  * Write DAQ event header to output.
113  *
114  * \param out JWriter
115  * \param header JDAQEventHeader
116  * \return JWriter
117  */
118  friend inline JWriter& operator<<(JWriter& out, const JDAQEventHeader& header)
119  {
120  out << static_cast<const JDAQHeader&> (header);
121  out << static_cast<const JDAQTriggerCounter&>(header);
122  out << static_cast<const JDAQTriggerMask&> (header);
123  out << header.overlays;
124 
125  return out;
126  }
127 
128 
129  /**
130  * Get size of object.
131  *
132  * \return number of bytes
133  */
134  static int sizeOf()
135  {
136  return (JDAQHeader ::sizeOf() +
139  sizeof(unsigned int));
140  }
141 
142 
144 
145 
146  protected:
147  unsigned int overlays;
148  };
149 
150 
151  /**
152  * Equal operator for DAQ event headers.
153  *
154  * \param first event header
155  * \param second event header
156  * \result true if first event header equal to second; else false
157  */
158  inline bool operator==(const JDAQEventHeader& first,
159  const JDAQEventHeader& second)
160  {
161  return (first.getDAQHeader() == second.getDAQHeader() &&
162  first.getDAQTriggerCounter() == second.getDAQTriggerCounter() &&
163  first.getDAQTriggerMask() == second.getDAQTriggerMask());
164  }
165 
166 
167  /**
168  * Not-equal operator for DAQ event headers.
169  *
170  * \param first event header
171  * \param second event header
172  * \result true if first event header not equal to second; else false
173  */
174  inline bool operator!=(const JDAQEventHeader& first,
175  const JDAQEventHeader& second)
176  {
177  return !(first == second);
178  }
179 }
180 
181 #endif
JDAQTriggerMask()
Default constructor.
bool operator==(const JDAQChronometer &first, const JDAQChronometer &second)
Equal operator for DAQ chronometers.
JDAQEventHeader(const JDAQChronometer &chronometer, const JDAQTriggerMask &mask=JDAQTriggerMask())
Constructor.
Interface for binary output.
static int sizeOf()
Get size of object.
Auxiliary class for trigger mask.
int getDetectorID() const
Get detector identifier.
friend JWriter & operator<<(JWriter &out, const JDAQEventHeader &header)
Write DAQ event header to output.
int getRunNumber() const
Get run number.
int getFrameIndex() const
Get frame index.
unsigned int getOverlays() const
Get number of overlays.
Interface for binary input.
static int sizeOf()
Get size of object.
JDAQEventHeader()
Default constructor.
ClassDef(JDAQEventHeader, 3)
static int sizeOf()
Get size of object.
Definition: JDAQHeader.hh:103
const JDAQHeader & getDAQHeader() const
Get DAQ header.
Definition: JDAQHeader.hh:51
Auxiliary class to count triggers.
bool is_same(const JDAQEventHeader &header) const
Check if header is same.
const JDAQTriggerCounter & getDAQTriggerCounter() const
Get DAQ trigger counter.
static int sizeOf()
Get size of object.
bool operator!=(const JDAQChronometer &first, const JDAQChronometer &second)
Not-equal operator for DAQ chronometers.
const JDAQEventHeader & getDAQEventHeader() const
Get DAQ event header.
JTriggerCounter_t getCounter() const
Get trigger counter.
const JDAQTriggerMask & getDAQTriggerMask() const
Get DAQ trigger mask.
friend JReader & operator>>(JReader &in, JDAQEventHeader &header)
Read DAQ event header from input.