Jpp  18.0.0-rc.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 
15 namespace 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 
51  friend size_t getSizeof<JDAQTriggerMask>();
53  friend JWriter& operator<<(JWriter&, const JDAQTriggerMask&);
54 
55  /**
56  * Default constructor.
57  */
59  trigger_mask(0)
60  {}
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) :
80  {}
81 
82 
83  /**
84  * Virtual destructor.
85  */
86  virtual ~JDAQTriggerMask()
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  {
119  trigger_mask = mask.trigger_mask;
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  {
142  trigger_mask |= mask.trigger_mask;
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  */
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
JDAQTriggerMask()
Default constructor.
void setDAQTriggerMask(const JDAQTriggerMask &mask)
Set trigger mask.
bool operator==(const JDAQChronometer &first, const JDAQChronometer &second)
Equal operator for DAQ chronometers.
bool hasTriggerBit(const unsigned int bit) const
Check trigger bit.
Interface for binary output.
JTriggerMask_t getTriggerMask(const unsigned int bit)
Convert trigger bit to trigger mask.
ClassDef(JDAQTriggerMask, 1)
static const unsigned int NUMBER_OF_TRIGGER_BITS
Number of trigger bits.
JTriggerMask_t getTriggerMask() const
Get trigger mask.
Auxiliary class for trigger mask.
static const JDAQTriggerMask TRIGGER_MASK_OFF
Trigger mask off;.
friend JWriter & operator<<(JWriter &, const JDAQTriggerMask &)
Write DAQ trigger mask to output.
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
static const JDAQTriggerMask TRIGGER_MASK_ON
Trigger mask on;.
unsigned long long int JTriggerMask_t
Type definition of trigger mask.
then awk string
bool hasTriggerMask(const JDAQTriggerMask &mask) const
Has trigger bit pattern.
void setTriggerMask(const JTriggerMask_t mask)
Set trigger mask.
JDAQTriggerMask(const JTriggerMask_t mask)
Constructor.
JDAQTriggerMask & addTriggerBit(const unsigned int bit)
Add trigger bit.
Interface for binary input.
friend std::ostream & operator<<(std::ostream &out, const JDAQTriggerMask &mask)
Write JDAQTriggerMask to output stream.
std::string toString() const
Convert trigger mask.
friend JReader & operator>>(JReader &, JDAQTriggerMask &)
Read DAQ trigger mask from input.
virtual ~JDAQTriggerMask()
Virtual destructor.
size_t getSizeof< JDAQTriggerMask >()
Get size of type.
JDAQTriggerMask(const std::string &buffer)
Constructor.
bool operator!=(const JDAQChronometer &first, const JDAQChronometer &second)
Not-equal operator for DAQ chronometers.
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:46
friend std::istream & operator>>(std::istream &in, JDAQTriggerMask &mask)
Read JDAQTriggerMask from input stream.
JDAQTriggerMask & addTriggerMask(const JDAQTriggerMask &mask)
Add trigger bit pattern.
static JDAQTriggerMask valueOf(const std::string &buffer)
Extract trigger mask.
const JDAQTriggerMask & getDAQTriggerMask() const
Get DAQ trigger mask.