#ifndef HgcrocBoe_HH #define HgcrocBoe_HH #include #include #include class HgcrocBoe { public: HgcrocBoe() { fWord=0x00ff0000; // Non-existant HGCROC value } HgcrocBoe(uint32_t w) { fWord=w; } HgcrocBoe(uint8_t e, uint8_t h, uint8_t b, uint8_t l, uint8_t n, bool s=true) { assert(n<64); fWord=(b<<24)+((18*e+h)<<16)+(l<<8)+(n&0x3f)+(s?0x40:0); } uint8_t bx() const { return fWord>>24; } uint8_t econ() const { return ((fWord>>16)&0xff)/18; } uint8_t hgcroc() const { return ((fWord>>16)&0xff)%18; } uint8_t l1a() const { return (fWord>>8)&0xff; } bool startOfEvent() const { return (fWord&0x40)!=0; } uint8_t numberOfWords() const { return fWord&0x3f; } uint32_t word() const { return fWord; } void word(uint32_t w) { fWord=w; } void print() const { std::cout << "HgcrocBoe::print() Value = 0x" << std::hex << std::setw(8) << std::setfill('0') << fWord << std::dec << std::endl; std::cout << " BX = " << unsigned(bx()) << std::endl; std::cout << " ECON, HGCROC = " << unsigned(econ()) << ", " << unsigned(hgcroc()) << std::endl; std::cout << " L1Accept = " << unsigned(l1a()) << std::endl; std::cout << " Start of event = " << (startOfEvent()?"true":"false") << std::endl; std::cout << " Number of words = " << unsigned(numberOfWords()) << std::endl; } private: uint32_t fWord; }; #endif