#ifndef CESQ_HH #define CESQ_HH #include #include "Edm/StreamableObject.hh" #include "Rtypes.h" #ifndef EDMUTILITIES_BITMASK_HH #include "EdmUtilities/BitMask.hh" #endif typedef unsigned short int uint2; class CESQ : public StreamableObject { public: CESQ(); CESQ( const CESQ& ); // Copy Constructor CESQ( uint2 Chid, uint2 Energy); virtual ~CESQ(){} void print(std::ostream& = std::cout ) const; uint2 chid() const; uint2 energy() const; int module() const; int stripNo() const; int stripType() const; int i_ew() const; /*=========================================================================*\ * StreamableObject requirements \*=========================================================================*/ virtual void Streamer(TBuffer& iobuffer) ; virtual bool postread( EventRecord* p_record) ; virtual bool prewrite( EventRecord* p_record) ; enum { module_nbits = 5, module_mask = BitMask::nbits05, module_shift = 0, module_loval = 0, module_hival = module_mask } ; enum { stripType_nbits = 1, stripType_mask = BitMask::nbits01, stripType_shift = 5, stripType_loval = 0, stripType_hival = stripType_mask } ; enum { stripNo_nbits = 7, stripNo_mask = BitMask::nbits07, stripNo_shift = 6, stripNo_loval = 0, stripNo_hival = stripNo_mask } ; enum { i_ew_nbits = 1, i_ew_mask = BitMask::nbits01, i_ew_shift = 13, i_ew_loval = 0, i_ew_hival = i_ew_mask } ; private: uint2 _chid; uint2 _energy; // EDM VERSION : static const Version_t _VERSION; }; inline uint2 CESQ::chid() const{ return(_chid);} inline uint2 CESQ::energy() const{ return(_energy);} inline std::ostream& operator << (std::ostream& os, const CESQ& inter) { inter.print(os); return os; } inline int CESQ::module() const { return( (_chid >> module_shift) & module_mask ) ; } inline int CESQ::stripNo() const { return( (_chid >> stripNo_shift) & stripNo_mask ) ; } inline int CESQ::stripType() const { return( (_chid >> stripType_shift) & stripType_mask ) ; } inline int CESQ::i_ew() const { return( (_chid >> i_ew_shift) & i_ew_mask ) ; } #endif