RawEventReader Class Reference

#include <RawEventReader.h>

List of all members.

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
MdcConverterm_mdcCnv
TofConverterm_tofCnv
EmcConverterm_emcCnv
MucConverterm_mucCnv
int m_mdcdigi
int m_tofdigi
int m_emcdigi
int m_mucdigi
RAWEVENTm_raw_event
std::vector< std::stringm_inputFiles


Detailed Description

Definition at line 15 of file RawEventReader.h.


Constructor & Destructor Documentation

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 }


Member Function Documentation

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 }


Member Data Documentation

EmcConverter* RawEventReader::m_emcCnv [private]

Definition at line 30 of file RawEventReader.h.

Referenced by execute(), and RawEventReader().

int RawEventReader::m_emcdigi [private]

Definition at line 35 of file RawEventReader.h.

Referenced by execute(), and RawEventReader().

IDataProviderSvc* RawEventReader::m_evtSvc [private]

Definition at line 26 of file RawEventReader.h.

Referenced by execute(), and initialize().

std::vector<std::string> RawEventReader::m_inputFiles [private]

Definition at line 40 of file RawEventReader.h.

Referenced by RawEventReader(), and readEvent().

MdcConverter* RawEventReader::m_mdcCnv [private]

Definition at line 28 of file RawEventReader.h.

Referenced by execute(), initialize(), and RawEventReader().

int RawEventReader::m_mdcdigi [private]

Definition at line 33 of file RawEventReader.h.

Referenced by execute(), and RawEventReader().

MucConverter* RawEventReader::m_mucCnv [private]

Definition at line 31 of file RawEventReader.h.

Referenced by execute(), and RawEventReader().

int RawEventReader::m_mucdigi [private]

Definition at line 36 of file RawEventReader.h.

Referenced by execute(), and RawEventReader().

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]

Definition at line 29 of file RawEventReader.h.

Referenced by execute(), and RawEventReader().

int RawEventReader::m_tofdigi [private]

Definition at line 34 of file RawEventReader.h.

Referenced by execute(), and RawEventReader().


Generated on Tue Nov 29 23:20:47 2016 for BOSS_7.0.2 by  doxygen 1.4.7