CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_7_hltpatch2/src/EventFilter/ESRawToDigi/interface/ESCrcKchipFast.h

Go to the documentation of this file.
00001 #ifndef ESCrcKchipFast_H
00002 #define ESCrcKchipFast_H
00003 
00004 class ESCrcKchipFast {
00005 
00006    private :
00007 
00008      uint32_t crc;
00009 
00010    public:
00011 
00012       ESCrcKchipFast() {
00013          init();
00014          reset() ;
00015       };
00016 
00017       void init() {
00018         crc = 0x0ffff ;
00019       }
00020 
00021       void reset() {
00022         crc = 0x0ffff ;
00023       } ;
00024 
00025       void add(unsigned int data) {
00026         for (int i=0;i<16;i++)
00027           {
00028             if ((crc&0x0001) == (data&0x0001))
00029               crc=crc>>1;
00030             else
00031               crc=(crc>>1)^0x8408; // flipped 0x1021;
00032             data=(data>>1);
00033           }
00034       };
00035       
00036       uint32_t get_crc() {
00037         return crc ;
00038       };
00039       
00040       bool isCrcOk(unsigned int crcin=0x0000) {
00041           return ((get_crc()==crcin) ? true : false );
00042       };
00043 
00044       ~ESCrcKchipFast() { } ;
00045 
00046 };
00047 
00048 #endif