#ifndef __JDAQTRIGGERMASK__ #define __JDAQTRIGGERMASK__ #include "JIO/JSerialisable.hh" #include "JDAQ/JDAQRoot.hh" namespace KM3NETDAQ { namespace { using JIO::JReader; using JIO::JWriter; } /** * Type definition of trigger mask. */ typedef unsigned long long int JTriggerMask_t; /** * Number of trigger bits. */ static const unsigned int NUMBER_OF_TRIGGER_BITS = sizeof(JTriggerMask_t) * 8; /** * Convert trigger bit to trigger mask. * * \param bit trigger bit * \return trigger mask */ inline JTriggerMask_t getTriggerMask(const unsigned int bit) { if (bit < NUMBER_OF_TRIGGER_BITS) return JTriggerMask_t(1) << bit; else return 0; } /** * Auxiliary class for trigger mask. */ class JDAQTriggerMask { public: /** * Default constructor. */ JDAQTriggerMask() : trigger_mask(0) {} /** * Constructor. * * \param mask trigger mask */ JDAQTriggerMask(const JTriggerMask_t mask) : trigger_mask(mask) {} /** * Virtual destructor. */ virtual ~JDAQTriggerMask() {} /** * Get trigger bit pattern. * * \return trigger mask */ JTriggerMask_t getTriggerMask() const { return trigger_mask; } /** * Add trigger bit pattern. * * \param mask trigger mask */ JDAQTriggerMask& addTriggerMask(const JTriggerMask_t mask) { trigger_mask |= mask; return *this; } /** * Bit-wise or operator. * This operator adds the trigger mask of the given hit to this trigger mask. * * \param mask triggered mask */ JDAQTriggerMask& operator|=(const JDAQTriggerMask& mask) { return addTriggerMask(mask.getTriggerMask()); } /** * Read JDAQTriggerMask from input. * * \param in JReader * \param mask JDAQTriggerMask * \return JReader */ friend inline JReader& operator>>(JReader& in, JDAQTriggerMask& mask) { in >> mask.trigger_mask; return in; } /** * Write JDAQTriggerMask to output. * * \param out JWriter * \param mask JDAQTriggerMask * \return JWriter */ friend inline JWriter& operator<<(JWriter& out, const JDAQTriggerMask& mask) { out << mask.trigger_mask; return out; } /** * Get size of object. * * \return number of bytes */ static int sizeOf() { return sizeof(JTriggerMask_t); } ClassDef(JDAQTriggerMask,1); protected: JTriggerMask_t trigger_mask; }; } #endif