Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JDAQTriggerMask.hh
Go to the documentation of this file.
1#ifndef __JDAQTRIGGERMASK__
2#define __JDAQTRIGGERMASK__
3
4#include <string>
5#include <istream>
6#include <ostream>
7
9
10
11/**
12 * \author mdejong
13 */
14
15namespace KM3NETDAQ {
16
17
18 /**
19 * Type definition of trigger mask.
20 */
21 typedef unsigned long long int JTriggerMask_t;
22
23
24 /**
25 * Number of trigger bits.
26 */
27 static const unsigned int NUMBER_OF_TRIGGER_BITS = sizeof(JTriggerMask_t) * 8;
28
29
30 /**
31 * Convert trigger bit to trigger mask.
32 *
33 * \param bit trigger bit
34 * \return trigger mask
35 */
36 inline JTriggerMask_t getTriggerMask(const unsigned int bit)
37 {
38 if (bit < NUMBER_OF_TRIGGER_BITS)
39 return JTriggerMask_t(1) << bit;
40 else
41 return 0;
42 }
43
44
45 /**
46 * Auxiliary class for trigger mask.
47 */
49 public:
50
53 friend JWriter& operator<<(JWriter&, const JDAQTriggerMask&);
54
55 /**
56 * Default constructor.
57 */
61
62
63 /**
64 * Constructor.
65 *
66 * \param mask trigger mask
67 */
69 trigger_mask(mask)
70 {}
71
72
73 /**
74 * Constructor.
75 *
76 * \param buffer trigger bit pattern (i.e. sequence of '0' and '1').
77 */
78 JDAQTriggerMask(const std::string& buffer) :
79 trigger_mask(valueOf(buffer).getTriggerMask())
80 {}
81
82
83 /**
84 * Virtual destructor.
85 */
87 {}
88
89
90 /**
91 * Get DAQ trigger mask.
92 *
93 * \return DAQ trigger mask
94 */
96 {
97 return static_cast<const JDAQTriggerMask&>(*this);
98 }
99
100
101 /**
102 * Get trigger mask.
103 *
104 * \return trigger mask
105 */
107 {
108 return trigger_mask;
109 }
110
111
112 /**
113 * Set trigger mask.
114 *
115 * \param mask trigger mask
116 */
118 {
120 }
121
122
123 /**
124 * Set trigger mask.
125 *
126 * \param mask trigger mask
127 */
129 {
130 trigger_mask = mask;
131 }
132
133
134 /**
135 * Add trigger bit pattern.
136 *
137 * \param mask trigger mask
138 * \return trigger mask
139 */
141 {
143
144 return *this;
145 }
146
147
148 /**
149 * Has trigger bit pattern.
150 *
151 * \param mask trigger mask
152 * \return true if one of the bits is set; else false
153 */
154 inline bool hasTriggerMask(const JDAQTriggerMask& mask) const
155 {
156 return trigger_mask & mask.trigger_mask;
157 }
158
159
160 /**
161 * Add trigger bit.
162 *
163 * \param bit trigger bit
164 * \return trigger mask
165 */
166 inline JDAQTriggerMask& addTriggerBit(const unsigned int bit)
167 {
169
170 return *this;
171 }
172
173
174 /**
175 * Check trigger bit.
176 *
177 * \param bit trigger bit
178 * \return true if bit is set; else false
179 */
180 inline bool hasTriggerBit(const unsigned int bit) const
181 {
183 }
184
185
186 /**
187 * Extract trigger mask.
188 *
189 * \param buffer trigger bit pattern (i.e. sequence of '0' and '1').
190 * \return trigger mask
191 */
192 static JDAQTriggerMask valueOf(const std::string& buffer)
193 {
195
196 unsigned int bit = 0;
197
198 for (std::string::const_reverse_iterator i = buffer.rbegin(); i != buffer.rend() && bit != NUMBER_OF_TRIGGER_BITS; ++i, ++bit) {
199 if (*i == '1') {
200 trigger_mask.addTriggerBit(bit);
201 }
202 }
203
204 return trigger_mask;
205 }
206
207
208 /**
209 * Convert trigger mask.
210 *
211 * \return trigger bit pattern (i.e. sequence of '0' and '1').
212 */
213 std::string toString() const
214 {
215 std::string buffer(NUMBER_OF_TRIGGER_BITS, '0');
216
217 unsigned int bit = 0;
218
219 for (std::string::reverse_iterator i = buffer.rbegin(); i != buffer.rend() && bit != NUMBER_OF_TRIGGER_BITS; ++i, ++bit) {
220 if (hasTriggerBit(bit)) {
221 *i = '1';
222 }
223 }
224
225 return buffer;
226 }
227
228
229 /**
230 * Read JDAQTriggerMask from input stream.
231 *
232 * \param in input stream
233 * \param mask JDAQTriggerMask
234 * \return input stream
235 */
236 friend inline std::istream& operator>>(std::istream& in, JDAQTriggerMask& mask)
237 {
238 std::string buffer;
239
240 if (in >> buffer) {
241 mask= JDAQTriggerMask::valueOf(buffer);
242 }
243
244 return in;
245 }
246
247
248 /**
249 * Write JDAQTriggerMask to output stream.
250 *
251 * \param out output stream
252 * \param mask JDAQTriggerMask
253 * \return output stream
254 */
255 friend inline std::ostream& operator<<(std::ostream& out, const JDAQTriggerMask& mask)
256 {
257 out << mask.toString();
258
259 return out;
260 }
261
262
264
265
266 protected:
268 };
269
270
271 static const JDAQTriggerMask TRIGGER_MASK_ON = JDAQTriggerMask(~JTriggerMask_t(0)); //!< Trigger mask on;
272 static const JDAQTriggerMask TRIGGER_MASK_OFF = JDAQTriggerMask( JTriggerMask_t(0)); //!< Trigger mask off;
273
274
275 /**
276 * Equal operator for DAQ trigger masks.
277 *
278 * \param first trigger mask
279 * \param second trigger mask
280 * \result true if first trigger mask equal to second; else false
281 */
282 inline bool operator==(const JDAQTriggerMask& first,
283 const JDAQTriggerMask& second)
284 {
285 return (first.getTriggerMask() == second.getTriggerMask());
286 }
287
288
289 /**
290 * Not-equal operator for DAQ trigger masks.
291 *
292 * \param first trigger mask
293 * \param second trigger mask
294 * \result true if first trigger mask not equal to second; else false
295 */
296 inline bool operator!=(const JDAQTriggerMask& first,
297 const JDAQTriggerMask& second)
298 {
299 return !(first == second);
300 }
301}
302
303#endif
Interface for binary input.
Interface for binary output.
Auxiliary class for trigger mask.
JDAQTriggerMask & addTriggerMask(const JDAQTriggerMask &mask)
Add trigger bit pattern.
friend std::istream & operator>>(std::istream &in, JDAQTriggerMask &mask)
Read JDAQTriggerMask from input stream.
const JDAQTriggerMask & getDAQTriggerMask() const
Get DAQ trigger mask.
JDAQTriggerMask(const std::string &buffer)
Constructor.
JDAQTriggerMask()
Default constructor.
void setDAQTriggerMask(const JDAQTriggerMask &mask)
Set trigger mask.
bool hasTriggerMask(const JDAQTriggerMask &mask) const
Has trigger bit pattern.
ClassDef(JDAQTriggerMask, 1)
std::string toString() const
Convert trigger mask.
friend JReader & operator>>(JReader &, JDAQTriggerMask &)
Read DAQ trigger mask from input.
static JDAQTriggerMask valueOf(const std::string &buffer)
Extract trigger mask.
JTriggerMask_t getTriggerMask() const
Get trigger mask.
JDAQTriggerMask(const JTriggerMask_t mask)
Constructor.
friend JWriter & operator<<(JWriter &, const JDAQTriggerMask &)
Write DAQ trigger mask to output.
JDAQTriggerMask & addTriggerBit(const unsigned int bit)
Add trigger bit.
void setTriggerMask(const JTriggerMask_t mask)
Set trigger mask.
friend std::ostream & operator<<(std::ostream &out, const JDAQTriggerMask &mask)
Write JDAQTriggerMask to output stream.
bool hasTriggerBit(const unsigned int bit) const
Check trigger bit.
virtual ~JDAQTriggerMask()
Virtual destructor.
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
static const JDAQTriggerMask TRIGGER_MASK_ON
Trigger mask on;.
size_t getSizeof< JDAQTriggerMask >()
Get size of type.
JTriggerMask_t getTriggerMask(const unsigned int bit)
Convert trigger bit to trigger mask.
static const JDAQTriggerMask TRIGGER_MASK_OFF
Trigger mask off;.
unsigned long long int JTriggerMask_t
Type definition of trigger mask.