#ifndef CPRQ_HH #define CPRQ_HH /******************************************************************* Description: CPRQ class header file CPRQ is a Streamable Object - to be stored in PADS Author List: 01/10/2000 Tania Moulik : created Revision History: *******************************************************************/ #include #include "Edm/StreamableObject.hh" #include "Rtypes.h" #include "EdmUtilities/BitMask.hh" class CPRQ; typedef unsigned short int uint2; class CPRQ : public StreamableObject { public: CPRQ(); CPRQ( const CPRQ& ); // Copy Constructor CPRQ( uint2 Chid, uint2 Energy); virtual ~CPRQ(){} void print(std::ostream& = std::cout ) const; uint2 chid() const; uint2 energy() const; int module() const; int wireNo() const; int i_ew() const; /*=========================================================================*\ * StreamableObject requirements \*=========================================================================*/ void Streamer(TBuffer& iobuffer) ; virtual bool postread( EventRecord* p_record) ; virtual bool prewrite( EventRecord* p_record) ; //----------------------------------------------------------------------------- // Enumerated constants describing the start word/cluster width bitfields //----------------------------------------------------------------------------- enum { wire_nbits = 5, wire_mask = BitMask::nbits05, wire_shift = 0 }; enum { module_nbits = 5, module_mask = BitMask::nbits05, module_shift = 5 }; enum { i_ew_nbits = 1, i_ew_mask = BitMask::nbits01, i_ew_shift = 10 }; private: uint2 _chid; uint2 _energy; }; inline uint2 CPRQ::chid() const{ return(_chid);} inline std::ostream& operator << (std::ostream& os, const CPRQ& inter) { inter.print(os); return os; } inline int CPRQ::module() const { return( (_chid >> module_shift) & module_mask ) ; } inline int CPRQ::wireNo() const { return( (_chid >> wire_shift) & wire_mask ) ; } inline int CPRQ::i_ew() const { return( (_chid >> i_ew_shift) & i_ew_mask ) ; } inline uint2 CPRQ::energy() const { return(_energy); } #endif