#include <EmcConverter.h>
Public Member Functions | |
StatusCode | convert (EmcDigiCol *src, WriteRawEvent *&des) |
StatusCode | convert (const BufferHolder &src, EmcDigiCol *des) |
StatusCode | convert (EmcDigiCol *src, WriteRawEvent *&des) |
StatusCode | convert (const BufferHolder &src, EmcDigiCol *des) |
Static Public Member Functions | |
void | destroy () |
void | destroy () |
EmcConverter * | instance (int runMode=2) |
EmcConverter * | instance (int runMode=2) |
Private Member Functions | |
EmcConverter () | |
EmcConverter (int runMode) | |
EmcConverter () | |
EmcConverter (int runMode) | |
~EmcConverter () | |
~EmcConverter () | |
Private Attributes | |
EmcBuilder | m_builder |
EmcRawDataProvider * | m_EmcProvider |
pointer of EmcRawDataProvider, only OnlineMode //fucd | |
EmcRawDataProvider * | m_EmcProvider |
pointer of EmcRawDataProvider, only OnlineMode //fucd | |
int | m_runMode |
Static Private Attributes | |
EmcConverter * | s_instance |
EmcConverter * | s_instance = 0 |
|
00065 : m_runMode(runMode), 00066 m_EmcProvider(0) 00067 { 00068 if ( m_runMode == 1 ) { 00069 // by fucd: only when online mode, use raw data provider here 00070 IService* svc ; 00071 StatusCode sc = Gaudi::svcLocator()->getService("RawDataProviderSvc", svc); 00072 //if ( sc.isFailure() ) { 00073 // log << MSG::ERROR << "Cannot get Raw Data Provider Service!" << endreq; 00074 //} 00075 IRawDataProviderSvc* rawSvc = dynamic_cast<IRawDataProviderSvc*> (svc); 00076 if ( rawSvc != 0 ) { 00077 m_EmcProvider = rawSvc->getEmcProvider(); 00078 } 00079 else { 00080 std::cerr << "Failed to get the RawDataProviderSvc" << std::endl; 00081 } 00082 } 00083 }
|
|
00086 { 00087 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
00027 { 00028 uint32_t REId, TEId, TETDC, TEADC, measure; 00029 uint32_t nbuf = src.nBuf(); 00030 00031 for (uint32_t i = 0; i < nbuf; ++i) { //loop the buffer 00032 uint32_t* buf = src(i); 00033 uint32_t* bufend = buf + src.bufSize(i); 00034 for (; buf < bufend; ++buf) { //loop the digit 00035 00036 m_builder.unPack(*buf, REId, TETDC, TEADC, measure); 00037 00038 TEId = m_builder.getTEID(REId); 00039 if ( TEId == 0xFFFFFFFF ) continue; 00040 00041 if ( m_EmcProvider ) { 00042 // by fucd: if not good digi, reject. Only for online mode now 00043 if(!m_EmcProvider->isGoodEmcDigi(EmcRawDataProvider::DropLow|EmcRawDataProvider::CutTime 00044 |EmcRawDataProvider::DropHot,TEId,measure,TEADC,TETDC)) continue; 00045 Identifier id(TEId); 00046 m_EmcProvider->doCalib(id, measure, TEADC); 00047 } 00048 00049 // create and set the DataObject 00050 EmcDigi* emcDigi = new EmcDigi(Identifier(TEId), TETDC, TEADC); 00051 emcDigi->setMeasure(measure); 00052 des->push_back(emcDigi); 00053 } 00054 } 00055 00056 return StatusCode::SUCCESS; 00057 }
|
|
|
|
00019 { 00020 if ( s_instance != 0 ) { 00021 delete s_instance; 00022 s_instance = 0; 00023 } 00024 }
|
|
|
|
00010 { 00011 if ( s_instance == 0 ) { 00012 s_instance = new EmcConverter(runMode); 00013 } 00014 00015 return s_instance; 00016 }
|
|
|
|
pointer of EmcRawDataProvider, only OnlineMode //fucd
|
|
pointer of EmcRawDataProvider, only OnlineMode //fucd
|
|
|
|
|
|
|