Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

EmcConverter Class Reference

#include <EmcConverter.h>

List of all members.

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 ()
EmcConverterinstance (int runMode=2)
EmcConverterinstance (int runMode=2)

Private Member Functions

 EmcConverter ()
 EmcConverter (int runMode)
 EmcConverter ()
 EmcConverter (int runMode)
 ~EmcConverter ()
 ~EmcConverter ()

Private Attributes

EmcBuilder m_builder
EmcRawDataProviderm_EmcProvider
 pointer of EmcRawDataProvider, only OnlineMode //fucd
EmcRawDataProviderm_EmcProvider
 pointer of EmcRawDataProvider, only OnlineMode //fucd
int m_runMode

Static Private Attributes

EmcConverters_instance
EmcConverters_instance = 0


Constructor & Destructor Documentation

EmcConverter::EmcConverter int  runMode  )  [private]
 

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 }

EmcConverter::~EmcConverter  )  [private]
 

00086 {
00087 }

EmcConverter::EmcConverter  )  [private]
 

EmcConverter::EmcConverter int  runMode  )  [private]
 

EmcConverter::~EmcConverter  )  [private]
 

EmcConverter::EmcConverter  )  [private]
 


Member Function Documentation

StatusCode EmcConverter::convert EmcDigiCol src,
WriteRawEvent *&  des
 

StatusCode EmcConverter::convert const BufferHolder src,
EmcDigiCol des
 

StatusCode EmcConverter::convert EmcDigiCol src,
WriteRawEvent *&  des
 

00060 {
00061    return m_builder.pack(src, des);
00062 }

StatusCode EmcConverter::convert const BufferHolder src,
EmcDigiCol des
 

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 }

void EmcConverter::destroy  )  [static]
 

void EmcConverter::destroy  )  [static]
 

00019 {
00020    if ( s_instance != 0 ) {
00021       delete s_instance;
00022       s_instance = 0;
00023    }
00024 }

EmcConverter* EmcConverter::instance int  runMode = 2  )  [static]
 

EmcConverter * EmcConverter::instance int  runMode = 2  )  [static]
 

00010 {
00011    if ( s_instance == 0 ) {
00012       s_instance = new EmcConverter(runMode);
00013    }
00014 
00015    return s_instance;
00016 }


Member Data Documentation

EmcBuilder EmcConverter::m_builder [private]
 

EmcRawDataProvider* EmcConverter::m_EmcProvider [private]
 

pointer of EmcRawDataProvider, only OnlineMode //fucd

EmcRawDataProvider* EmcConverter::m_EmcProvider [private]
 

pointer of EmcRawDataProvider, only OnlineMode //fucd

int EmcConverter::m_runMode [private]
 

EmcConverter* EmcConverter::s_instance [static, private]
 

EmcConverter * EmcConverter::s_instance = 0 [static, private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:01:12 2011 for BOSS6.5.5 by  doxygen 1.3.9.1