8 #ifndef EventFilter_CSCRawToDigi_CSCTMBData_h
9 #define EventFilter_CSCRawToDigi_CSCTMBData_h
20 #include <boost/dynamic_bitset.hpp>
28 CSCTMBData(
int firmwareVersion,
int firmwareRevision,
int ncfebs = 5);
61 boost::dynamic_bitset<>
pack();
64 std::bitset<22>
nextCRC22_D16(
const std::bitset<16>&
D,
const std::bitset<22>&
C);
bool hasTMBMiniScope() const
check this before using TMB mini scope
CSCTMBTrailer * tmbTrailer()
CSCTMBTrailer theTMBTrailer
static void selfTest()
tests packing
short unsigned int CWordCnt() const
boost::dynamic_bitset pack()
not const because it sets size int TMBTrailer
bool theBlockedCFEBIsPresent
const unsigned short size() const
std::bitset< 22 > nextCRC22_D16(const std::bitset< 16 > &D, const std::bitset< 22 > &C)
bool theTMBMiniScopeIsPresent
bool hasTMBBlockedCFEB() const
check this before TMB Block CFEB
bool hasTMBScope() const
check this before using TMB Scope
std::bitset< 22 > calCRC22(const std::vector< std::bitset< 16 > > &datain)
unsigned int crc22() const
static void setDebug(const bool value)
CSCTMBHeader theTMBHeader
static std::atomic< bool > debug
CSCTMBBlockedCFEB & tmbBlockedCFEB() const
CSCTMBBlockedCFEB * theTMBBlockedCFEB
const uint16_t * theOriginalBuffer
CSCTMBScope & tmbScope() const
CSCComparatorData theComparatorData
CSCTMBMiniScope * theTMBMiniScope
DecomposeProduct< arg, typename Div::arg > D
CSCComparatorData * comparatorData()
bool theTMBScopeIsPresent
The TMB scope is not present in most of data hence its dynamic.
CSCTMBScope * theTMBScope
CSCGEMData * gemData() const
CSCTMBHeader * tmbHeader()
char data[epos_bytes_allocation]
bool hasRPC() const
check this before using RPC
bool checkSize() const
sees if the size adds up to the word count
int UnpackTMB(const uint16_t *buf)
CSCTMBMiniScope & tmbMiniScope() const