/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/RawDataCnv/RawDataCnv-00-04-35/src/Util/MucConverter.cxx

Go to the documentation of this file.
00001 #include "RawDataCnv/Util/MucConverter.h"
00002 
00003 MucConverter* MucConverter::s_instance = 0;
00004 
00005 MucConverter* MucConverter::instance()
00006 {
00007    if ( s_instance == 0 ) {
00008       s_instance = new MucConverter();
00009    }
00010 
00011    return s_instance;
00012 }
00013 
00014 void MucConverter::destroy()
00015 {
00016    if ( s_instance != 0 ) {
00017       delete s_instance;
00018       s_instance = 0;
00019    }
00020 }
00021 
00022 StatusCode MucConverter::convert(const BufferHolder& src, MucDigiCol* des)
00023 {
00024    uint32_t REId, TEId, FecData, StrSqc;
00025    uint32_t nbuf = src.nBuf();
00026 
00027    for (uint32_t i = 0; i < nbuf; ++i) {
00028       uint32_t* buf = src(i);
00029       uint32_t  bufSize = src.bufSize(i);
00030       for (uint32_t j = 0; j < bufSize; ++j) {
00031          m_builder.unPack(buf[j], REId, FecData, StrSqc);
00032          TEId = m_builder.getTEID( REId );
00033          if ( TEId == 0xFFFFFFFF )  continue;
00034 
00035          uint32_t teidBase = TEId & 0xFF0FFFFF;
00036          uint32_t teid;
00037          for (uint32_t k = 0; FecData != 0 && k < 16; FecData >>= 1, ++k) {
00038             if ((FecData & 1) == 0) continue;
00039             if (StrSqc == 0) {
00040                teid = teidBase + 15 -k;
00041             }
00042             else {
00043                teid = teidBase + k;
00044             }
00045             MucDigi* mucDigi = new MucDigi(teid);
00046             des->push_back( mucDigi );
00047          }
00048       }
00049    }
00050 
00051    return StatusCode::SUCCESS;
00052 }
00053 
00054 StatusCode MucConverter::convert(MucDigiCol* src, WriteRawEvent*& des)
00055 {
00056    return m_builder.pack(src, des);
00057 }
00058 
00059 MucConverter::MucConverter()
00060 {
00061 }
00062 
00063 MucConverter::~MucConverter()
00064 {
00065 }

Generated on Tue Nov 29 22:58:32 2016 for BOSS_7.0.2 by  doxygen 1.4.7