#include <RawEventReader.h>
Public Member Functions | |
RawEventReader (const std::string &name, ISvcLocator *pSvcLocator) | |
virtual | ~RawEventReader () |
StatusCode | initialize () |
StatusCode | execute () |
StatusCode | finalize () |
StatusCode | readEvent () |
Private Attributes | |
IDataProviderSvc * | m_evtSvc |
MdcConverter * | m_mdcCnv |
TofConverter * | m_tofCnv |
EmcConverter * | m_emcCnv |
MucConverter * | m_mucCnv |
int | m_mdcdigi |
int | m_tofdigi |
int | m_emcdigi |
int | m_mucdigi |
RAWEVENT * | m_raw_event |
std::vector< std::string > | m_inputFiles |
Definition at line 15 of file RawEventReader.h.
RawEventReader::RawEventReader | ( | const std::string & | name, | |
ISvcLocator * | pSvcLocator | |||
) |
Definition at line 31 of file RawEventReader.cxx.
References MucConverter::instance(), EmcConverter::instance(), TofConverter::instance(), MdcConverter::instance(), m_emcCnv, m_emcdigi, m_inputFiles, m_mdcCnv, m_mdcdigi, m_mucCnv, m_mucdigi, m_tofCnv, and m_tofdigi.
00031 : 00032 Algorithm(name, pSvcLocator) 00033 { 00034 m_mdcCnv = MdcConverter::instance(); 00035 m_tofCnv = TofConverter::instance(); 00036 m_emcCnv = EmcConverter::instance(); 00037 m_mucCnv = MucConverter::instance(); 00038 00039 declareProperty("MdcDigi",m_mdcdigi=1); 00040 declareProperty("TofDigi",m_tofdigi=1); 00041 declareProperty("EmcDigi",m_emcdigi=1); 00042 declareProperty("MucDigi",m_mucdigi=1); 00043 declareProperty("InputFiles",m_inputFiles); 00044 00045 }
RawEventReader::~RawEventReader | ( | ) | [virtual] |
Definition at line 47 of file RawEventReader.cxx.
References MucConverter::destroy(), EmcConverter::destroy(), TofConverter::destroy(), and MdcConverter::destroy().
00048 { 00049 MdcConverter::destroy(); 00050 TofConverter::destroy(); 00051 EmcConverter::destroy(); 00052 MucConverter::destroy(); 00053 }
StatusCode RawEventReader::execute | ( | ) |
Definition at line 74 of file RawEventReader.cxx.
References MucConverter::convert(), EmcConverter::convert(), TofConverter::convert(), MdcConverter::convert(), RAWEVENT::getEmcBuf(), RAWEVENT::getMdcBuf(), RAWEVENT::getMucBuf(), RAWEVENT::getTofBuf(), Bes_Common::INFO, m_emcCnv, m_emcdigi, m_evtSvc, m_mdcCnv, m_mdcdigi, m_mucCnv, m_mucdigi, m_raw_event, m_tofCnv, m_tofdigi, EventModel::Digi::MdcDigiCol, msgSvc(), EventModel::Digi::MucDigiCol, readEvent(), RAWEVENT::reset(), and EventModel::Digi::TofDigiCol.
00074 { 00075 00076 MsgStream log(msgSvc(), name()); 00077 log << MSG::INFO << "in execute()" << endreq; 00078 00079 DigiEvent* aDigiEvent = new DigiEvent; 00080 StatusCode sc = m_evtSvc->registerObject("/Event/Digi",aDigiEvent); 00081 if(sc!=StatusCode::SUCCESS) { 00082 std::cout<< "Could not register DigiEvent" <<std::endl; 00083 } 00084 00085 readEvent(); 00086 00087 00088 if(m_mdcdigi) 00089 { 00090 const BufferHolder& mdcBuf = m_raw_event->getMdcBuf(); 00091 00092 MdcDigiCol* mdcDigiCol = new MdcDigiCol; 00093 m_mdcCnv->convert(mdcBuf, mdcDigiCol); 00094 /*MdcDigiCol::const_iterator mdcDigi = mdcDigiCol->begin(); 00095 for(; mdcDigi!=mdcDigiCol->end(); mdcDigi++ ) 00096 { 00097 (*mdcDigi)->getTrackIndex(); 00098 std::cout<<"mdc digi: "<< " trackIndex: "<<(*mdcDigi)->getTrackIndex()<<std::endl; 00099 }*/ 00100 //register MdcDigiCol to TDS... 00101 StatusCode scMdc = m_evtSvc->registerObject("/Event/Digi/MdcDigiCol", mdcDigiCol); 00102 if( scMdc!=StatusCode::SUCCESS ) { 00103 std::cout<< "Could not register MDC digi collection" <<std::endl; 00104 } 00105 } 00106 00107 00108 if(m_tofdigi) 00109 { 00110 const BufferHolder& tofBuf = m_raw_event->getTofBuf(); 00111 00112 TofDigiCol* tofDigiCol = new TofDigiCol; 00113 m_tofCnv->convert(tofBuf, tofDigiCol); 00114 /*TofDigiCol::const_iterator tofDigi = tofDigiCol->begin(); 00115 for(; tofDigi!=tofDigiCol->end(); tofDigi++ ) 00116 { 00117 (*tofDigi)->getTrackIndex(); 00118 const Identifier ident = (*tofDigi)->identify(); 00119 std::cout<<"print tof digi in RawEventReader"<<std::endl; 00120 std::cout<<"partId: "<<TofID::barrel_ec(ident); 00121 std::cout<<" layer: "<<TofID::layer(ident); 00122 std::cout<<" scinNb: "<<TofID::phi_module(ident); 00123 std::cout<<" end: "<<TofID::end(ident); 00124 std::cout<<" charge: "<<(*tofDigi)->getChargeChannel(); 00125 std::cout<<" time: "<<(*tofDigi)->getTimeChannel()<<std::endl; 00126 }*/ 00127 00128 //register TofDigiCol to TDS... 00129 StatusCode scTof = m_evtSvc->registerObject("/Event/Digi/TofDigiCol", tofDigiCol); 00130 if( scTof!=StatusCode::SUCCESS ) { 00131 std::cout<< "Could not register TOF digi collection" <<std::endl; 00132 } 00133 } 00134 00135 if(m_emcdigi) 00136 { 00137 const BufferHolder& emcBuf = m_raw_event->getEmcBuf(); 00138 00139 EmcDigiCol* emcDigiCol = new EmcDigiCol; 00140 m_emcCnv->convert(emcBuf, emcDigiCol); 00141 //register EmcDigiCol to TDS... 00142 StatusCode scEmc = m_evtSvc->registerObject("/Event/Digi/EmcDigiCol", emcDigiCol); 00143 if( scEmc!=StatusCode::SUCCESS ) { 00144 std::cout<< "Could not register EMC digi collection" <<std::endl; 00145 } 00146 } 00147 00148 if(m_mucdigi) 00149 { 00150 const BufferHolder& mucBuf = m_raw_event->getMucBuf(); 00151 00152 MucDigiCol* mucDigiCol = new MucDigiCol; 00153 m_mucCnv->convert(mucBuf, mucDigiCol); 00154 //register MucDigiCol to TDS... 00155 StatusCode scMuc = m_evtSvc->registerObject("/Event/Digi/MucDigiCol", mucDigiCol); 00156 if( scMuc!=StatusCode::SUCCESS ) { 00157 std::cout<< "Could not register MUC digi collection" <<std::endl; 00158 } 00159 } 00160 // clear the Memory Buffer, so that m_raw_event can be used directly during next event loop 00161 m_raw_event->reset(); 00162 00163 return StatusCode::SUCCESS; 00164 }
StatusCode RawEventReader::finalize | ( | ) |
Definition at line 210 of file RawEventReader.cxx.
References Bes_Common::INFO, m_raw_event, and msgSvc().
00210 { 00211 00212 MsgStream log(msgSvc(), name()); 00213 log << MSG::INFO << "in finalize()" << endreq; 00214 00215 //TODO: release ... 00216 delete m_raw_event; 00217 //delete fileReader; 00218 00219 return StatusCode::SUCCESS; 00220 }
StatusCode RawEventReader::initialize | ( | ) |
Definition at line 56 of file RawEventReader.cxx.
References Bes_Common::INFO, MdcConverter::init(), m_evtSvc, m_mdcCnv, m_raw_event, and msgSvc().
00056 { 00057 00058 MsgStream log(msgSvc(), name()); 00059 log << MSG::INFO << "in initialize()" << endreq; 00060 00061 m_raw_event = new RAWEVENT; 00062 00063 m_mdcCnv->init(0, 999999); 00064 00065 ISvcLocator* svcLocator = Gaudi::svcLocator(); 00066 StatusCode sc=svcLocator->service("EventDataSvc", m_evtSvc); 00067 if (sc.isFailure()) 00068 std::cout<<"Could not accesss EventDataSvc!"<<std::endl; 00069 00070 return StatusCode::SUCCESS; 00071 }
StatusCode RawEventReader::readEvent | ( | ) |
Definition at line 166 of file RawEventReader.cxx.
References RAWEVENT::addReEmcDigi(), RAWEVENT::addReMdcDigi(), RAWEVENT::addReMucDigi(), RAWEVENT::addReTofDigi(), eformat::get_robs(), m_inputFiles, m_raw_event, RawFileReader::nextEvent(), and RawFileException::print().
Referenced by execute().
00167 { 00168 static RawFileReader* fileReader = new RawFileReader(m_inputFiles); 00169 const uint32_t* fragment; 00170 00171 try { 00172 fragment = fileReader->nextEvent(); 00173 } 00174 catch (RawFileException& ex) { 00175 ex.print(); 00176 } 00177 catch (...) { 00178 std::cerr << std::endl << "Uncaught unknown exception" << std::endl; 00179 } 00180 00181 RawEvent f(fragment); 00182 uint32_t *robs[64]; 00183 int nrobs = eformat::get_robs(fragment, (const uint32_t **)robs, 64); 00184 for (int robi = 0; robi < nrobs; robi++) { 00185 eformat::ROBFragment<uint32_t*> rob(robs[robi]); 00186 if ((rob.rod_detev_type() & 0x2) != 0) continue; //bad data caogf add 00187 uint32_t* dataptr = NULL; 00188 rob.rod_data(dataptr); 00189 uint32_t source_id_number = rob.rod_source_id(); 00190 source_id_number <<= 8; 00191 source_id_number >>= 24; 00192 switch(source_id_number) { 00193 case 161: 00194 m_raw_event->addReMdcDigi(dataptr, rob.rod_ndata()); 00195 break; 00196 case 163: 00197 m_raw_event->addReEmcDigi(dataptr, rob.rod_ndata()); 00198 break; 00199 case 162: 00200 m_raw_event->addReTofDigi(dataptr, rob.rod_ndata()); 00201 break; 00202 case 164: 00203 m_raw_event->addReMucDigi(dataptr, rob.rod_ndata()); 00204 break; 00205 } 00206 } 00207 return StatusCode::SUCCESS; 00208 }
EmcConverter* RawEventReader::m_emcCnv [private] |
int RawEventReader::m_emcdigi [private] |
IDataProviderSvc* RawEventReader::m_evtSvc [private] |
std::vector<std::string> RawEventReader::m_inputFiles [private] |
MdcConverter* RawEventReader::m_mdcCnv [private] |
Definition at line 28 of file RawEventReader.h.
Referenced by execute(), initialize(), and RawEventReader().
int RawEventReader::m_mdcdigi [private] |
MucConverter* RawEventReader::m_mucCnv [private] |
int RawEventReader::m_mucdigi [private] |
RAWEVENT* RawEventReader::m_raw_event [private] |
Definition at line 39 of file RawEventReader.h.
Referenced by execute(), finalize(), initialize(), and readEvent().
TofConverter* RawEventReader::m_tofCnv [private] |
int RawEventReader::m_tofdigi [private] |