CMS 3D CMS Logo

Functions
bitset_utilities Namespace Reference

this file contains additional dynamic_bitset methods More...

Functions

boost::dynamic_bitset append (const boost::dynamic_bitset<> &bs1, const boost::dynamic_bitset<> &bs2)
 this method takes two bitsets bs1 and bs2 and returns result of bs2 appended to the end of bs1 More...
 
void bitsetToChar (const boost::dynamic_bitset<> &bs, unsigned char *result)
 this method takes bitset obj and returns char * array More...
 
void printWords (const boost::dynamic_bitset<> &bs)
 
boost::dynamic_bitset ushortToBitset (const unsigned int numberOfBits, unsigned short *buf)
 this method takes numberOfBits bits from unsigned short * array and returns them in the bitset obj. More...
 

Detailed Description

this file contains additional dynamic_bitset methods

Function Documentation

◆ append()

boost::dynamic_bitset bitset_utilities::append ( const boost::dynamic_bitset<> &  bs1,
const boost::dynamic_bitset<> &  bs2 
)

this method takes two bitsets bs1 and bs2 and returns result of bs2 appended to the end of bs1

Definition at line 10 of file bitset_append.cc.

References mps_fire::i, and mps_fire::result.

Referenced by CSCDCCEventData::pack(), CSCDDUEventData::pack(), CSCTMBData::pack(), CSCEventData::pack(), and CSCALCTHeader::pack().

10  {
11  boost::dynamic_bitset<> result(bs1.size() + bs2.size());
12  unsigned size1 = bs1.size();
13  for (unsigned i = 0; i < size1; ++i) {
14  result[i] = bs1[i];
15  }
16  for (unsigned i = 0; i < bs2.size(); ++i) {
17  result[size1 + i] = bs2[i];
18  }
19  return result;
20  }

◆ bitsetToChar()

void bitset_utilities::bitsetToChar ( const boost::dynamic_bitset<> &  bs,
unsigned char *  result 
)

this method takes bitset obj and returns char * array

Definition at line 32 of file bitset_append.cc.

References cms::cuda::bs, mps_fire::i, and mps_fire::result.

Referenced by CSCDigiToRaw::createFedBuffers(), cscClassPackerCompare(), cscPackAndUnpack(), CSCALCTHeader::pack(), and printWords().

32  {
33  for (unsigned i = 0; i < bs.size(); ++i) {
34  result[i / 8] = (bs[i + 7] << 7) + (bs[i + 6] << 6) + (bs[i + 5] << 5) + (bs[i + 4] << 4) + (bs[i + 3] << 3) +
35  (bs[i + 2] << 2) + (bs[i + 1] << 1) + bs[i];
36  i += 7;
37  }
38  }

◆ printWords()

void bitset_utilities::printWords ( const boost::dynamic_bitset<> &  bs)

Definition at line 40 of file bitset_append.cc.

References bitsetToChar(), cms::cuda::bs, visDQMUpload::buf, and mps_fire::i.

Referenced by cscClassPackerCompare().

40  {
41  constexpr unsigned int nShorts = 30000;
42  unsigned char words[nShorts * 2];
43  bitsetToChar(bs, words);
44  unsigned short *buf = (unsigned short *)words;
45  for (int unsigned i = 0; i < bs.size() / 16 && i + 3 < nShorts; ++i) {
46  printf("%04x %04x %04x %04x\n", buf[i + 3], buf[i + 2], buf[i + 1], buf[i]);
47  i += 3;
48  }
49  }
void bitsetToChar(const boost::dynamic_bitset<> &bs, unsigned char *result)
this method takes bitset obj and returns char * array

◆ ushortToBitset()

boost::dynamic_bitset bitset_utilities::ushortToBitset ( const unsigned int  numberOfBits,
unsigned short *  buf 
)

this method takes numberOfBits bits from unsigned short * array and returns them in the bitset obj.

Definition at line 23 of file bitset_append.cc.

References visDQMUpload::buf, mps_fire::i, and mps_fire::result.

Referenced by CSCDCCEventData::pack(), CSCDDUEventData::pack(), CSCTMBData::pack(), CSCEventData::pack(), and CSCALCTHeader::pack().

23  {
24  boost::dynamic_bitset<> result(numberOfBits);
25  for (unsigned i = 0; i < result.size(); ++i) {
26  result[i] = (buf[i / 16] >> (i % 16)) & 0x1;
27  }
28  return result;
29  }