Go to the documentation of this file.00001
00002
00003 #include "EventFilter/CSCRawToDigi/src/bitset_append.h"
00004 #include <iostream>
00005 #include <cstdio>
00006
00007 namespace bitset_utilities {
00008
00010 boost::dynamic_bitset<> append(const boost::dynamic_bitset<> & bs1,
00011 const boost::dynamic_bitset<> & bs2)
00012 {
00013 boost::dynamic_bitset<> result(bs1.size()+bs2.size());
00014 unsigned size1 = bs1.size();
00015 for(unsigned i = 0; i < size1; ++i)
00016 {
00017 result[i] = bs1[i];
00018 }
00019 for(unsigned i = 0; i < bs2.size(); ++i)
00020 {
00021 result[size1+i] = bs2[i];
00022 }
00023 return result;
00024 }
00025
00027 boost::dynamic_bitset<> ushortToBitset(const unsigned int numberOfBits,
00028 unsigned short * buf)
00029 {
00030 boost::dynamic_bitset<> result(numberOfBits);
00031 for(unsigned i = 0; i < result.size(); ++i)
00032 {
00033 result[i] = (buf[i/16]>>(i%16)) & 0x1;
00034 }
00035 return result;
00036 }
00037
00038
00040 void bitsetToChar(const boost::dynamic_bitset<> & bs, unsigned char * result)
00041 {
00042 for(unsigned i = 0; i < bs.size(); ++i)
00043 {
00044 result[i/8] = (bs[i+7]<<7)+
00045 (bs[i+6]<<6)+
00046 (bs[i+5]<<5)+
00047 (bs[i+4]<<4)+
00048 (bs[i+3]<<3)+
00049 (bs[i+2]<<2)+
00050 (bs[i+1]<<1)+
00051 bs[i];
00052 i+=7;
00053 }
00054 }
00055
00056 void printWords(const boost::dynamic_bitset<> & bs)
00057 {
00058 unsigned char words[60000];
00059 bitsetToChar(bs, words);
00060 unsigned short * buf= (unsigned short *) words;
00061 for (int unsigned i=0;i<bs.size()/16;++i) {
00062 printf("%04x %04x %04x %04x\n",buf[i+3],buf[i+2],buf[i+1],buf[i]);
00063 i+=3;
00064 }
00065 }
00066 }