/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/RawDataCnv/RawDataCnv-00-04-35/test/ReadRawData.cxx

Go to the documentation of this file.
00001 // Include files.
00002 #include <vector>
00003 #include "ReadRawData.h"
00004 #include "GaudiKernel/MsgStream.h"
00005 #include "GaudiKernel/ISvcLocator.h"
00006 #include "GaudiKernel/PropertyMgr.h"
00007 #include "GaudiKernel/SmartDataPtr.h"
00008 #include "RawDataCnv/EventManagement/RAWEVENT.h"
00009 #include "GaudiKernel/IDataProviderSvc.h"
00010 #include "GaudiKernel/IDataManagerSvc.h"
00011  
00012 // Event Model related classes
00013 #include "EventModel/Event.h"
00014 #include "RawEvent/DigiEvent.h"
00015 #include "MdcRawEvent/MdcDigi.h"
00016 #include "EmcRawEvent/EmcDigi.h"
00017 #include "TofRawEvent/TofDigi.h"
00018 #include "MucRawEvent/MucDigi.h"
00019 
00020 #include "EventModel/EventModel.h"
00021 
00022 using namespace std;
00023 
00024 // Constructor.
00025 ReadRawData::ReadRawData(const string& name, ISvcLocator* pSvcLocator)
00026    : Algorithm(name, pSvcLocator)
00027 {}
00028 
00029 // ReadRawData::initialize().
00030 StatusCode ReadRawData::initialize()
00031 {
00032 
00033    MsgStream log(msgSvc(), name());
00034    m_count = 0; 
00035 
00036    log << MSG::INFO << "in initialize()" << endreq;
00037 
00038    return StatusCode::SUCCESS;
00039 }
00040 
00041 // ReadRawData::execute().
00042 StatusCode ReadRawData::execute() 
00043 {
00044    StatusCode sc;   
00045    MsgStream log( msgSvc(), name() );
00046 
00047    log << MSG::INFO << "================================================" << endreq;
00048    log << MSG::INFO << "In execute()" << endreq;
00049    log << MSG::INFO << "++++++++++++++++++++++++++++++++++++++++++++++++" << endreq;
00050 
00051    SmartDataPtr<Event::EventHeader> evt(eventSvc(), EventModel::EventHeader);
00052    if (!evt) {
00053        log << MSG::ERROR << "Did not retrieve event" << endreq;
00054        return StatusCode::FAILURE;
00055    }
00056    //Check event header
00057  
00058    int eventNo = evt->eventNumber();
00059    int runNo   = evt->runNumber();
00060 
00061    log << MSG::INFO << "ReadRawData: retrieved event: " << eventNo << "  run: " << runNo << endreq;
00062 
00063    log << MSG::INFO << "ReadRawData: start to read MdcDigiData" << endreq;
00064    sc = readMdcDigiData(); 
00065 
00066    log << MSG::INFO << "ReadRawData: start to read EmcDigiData" << endreq;
00067    sc = readEmcDigiData();
00068 
00069    log << MSG::INFO << "ReadRawData: start to read TofDigiData" << endreq;
00070    sc = readTofDigiData();
00071 
00072    log << MSG::INFO << "ReadRawData: start to read MucDigiData" << endreq;
00073    sc = readMucDigiData();
00074    if (sc.isFailure()) {
00075        return sc;
00076    }
00077 
00078    m_count++;
00079  
00080 
00081   return StatusCode::SUCCESS;
00082 }
00083 
00084 StatusCode ReadRawData::readMdcDigiData() {
00085     MsgStream log(msgSvc(), name());
00086     StatusCode sc = StatusCode::SUCCESS;
00087 
00088     SmartDataPtr<DigiEvent> digiEvt(eventSvc(), EventModel::Digi::Event);
00089     if (!digiEvt) {
00090         log << MSG::ERROR << "Did not retrieve DigiEvent" << endreq;
00091         return StatusCode::FAILURE;
00092     }
00093 
00094     SmartDataPtr<MdcDigiCol> digiCol(eventSvc(), EventModel::Digi::MdcDigiCol);
00095 
00096     if (digiCol == 0) {
00097         log << "no MdcDigiCol found" << endreq;
00098         return sc;
00099     } else {
00100         log << "Event No. " << m_count << " --->   " << digiCol->size() << " Mdc digis found " << endreq;
00101 
00102         log << MSG::INFO << "Detailed dump of this event: " << endreq;
00103         int ndigi = 0;
00104         MdcDigiCol::const_iterator pMdcDigi = digiCol->begin();
00105         for ( ; pMdcDigi!= digiCol->end(); pMdcDigi++) {
00106             log << MSG::INFO << "Digi " << ndigi++ << " ";
00107             // output the digi proper:  " << digi " no longer works because
00108             // "digi" now returns an integer sort order
00109             (**pMdcDigi).fillStream(log.stream());
00110             log << endreq;
00111         }
00112     }
00113     
00114 
00115     return StatusCode::SUCCESS;
00116 }
00117 
00118 StatusCode ReadRawData::readEmcDigiData() {
00119     MsgStream log(msgSvc(), name());
00120     StatusCode sc = StatusCode::SUCCESS;
00121 
00122  
00123     SmartDataPtr<EmcDigiCol> digiCol(eventSvc(), EventModel::Digi::EmcDigiCol);
00124 
00125  
00126     if (digiCol == 0) {
00127         log << "no EmcDigiCol found" << endreq;
00128         return sc;
00129     } else {
00130         log << "Event No. " << m_count << " --->  " << digiCol->size() << " Emc digis found " << endreq;
00131         log << MSG::INFO << "Detailed dump of this event: " << endreq;
00132         int ndigi = 0;
00133         EmcDigiCol::const_iterator pEmcDigi = digiCol->begin();
00134         for ( ; pEmcDigi != digiCol->end(); pEmcDigi++) {
00135             log <<MSG::INFO << "Digi " << ndigi++ << " ";
00136             (**pEmcDigi).fillStream(log.stream());
00137             log << endreq;
00138         }
00139     }
00140  
00141  
00142     return StatusCode::SUCCESS;
00143 }
00144 
00145 StatusCode ReadRawData::readTofDigiData() {
00146     MsgStream log(msgSvc(), name());
00147     StatusCode sc = StatusCode::SUCCESS;
00148  
00149     SmartDataPtr<TofDigiCol> digiCol(eventSvc(), EventModel::Digi::TofDigiCol);
00150  
00151     if (digiCol == 0) {
00152         log << "no TofDigiCol found" << endreq;
00153         return sc;
00154     } else {
00155         log << "Event No. " << m_count << " --->  " << digiCol->size() << " Tof digis found " << endreq;
00156         log << MSG::INFO << "Detailed dump of this event: " << endreq;
00157         int ndigi = 0;
00158         TofDigiCol::const_iterator pTofDigi = digiCol->begin();
00159         for ( ; pTofDigi!= digiCol->end(); pTofDigi++) {
00160             log <<MSG::INFO << "Digi " << ndigi++ << " ";
00161             (**pTofDigi).fillStream(log.stream());
00162             log << endreq;
00163         }
00164     }
00165  
00166  
00167     return StatusCode::SUCCESS;
00168 }
00169 
00170 StatusCode ReadRawData::readMucDigiData() {
00171     MsgStream log(msgSvc(), name());
00172     StatusCode sc = StatusCode::SUCCESS;
00173  
00174     SmartDataPtr<MucDigiCol> digiCol(eventSvc(), EventModel::Digi::MucDigiCol);
00175  
00176     if (digiCol == 0) {
00177         log << "no MucDigiCol found" << endreq;
00178         return sc;
00179     } else {
00180         log << "Event No. " << m_count << " --->  " << digiCol->size() << " Muc digis found " << endreq;
00181         log << MSG::INFO << "Detailed dump of this event: " << endreq;
00182         int ndigi = 0;
00183         MucDigiCol::const_iterator pMucDigi = digiCol->begin();
00184         for ( ; pMucDigi!= digiCol->end(); pMucDigi++) {
00185             log <<MSG::INFO << "Digi " << ndigi++ << " ";
00186             (**pMucDigi).fillStream(log.stream());
00187             log << endreq;
00188         }
00189     }
00190  
00191  
00192     return StatusCode::SUCCESS;
00193 }
00194 
00195   
00196 // ReadRawData::finalize().
00197 StatusCode ReadRawData::finalize() 
00198 {
00199 
00200    MsgStream log(msgSvc(), name());
00201 
00202    log << MSG::INFO << "In finalize()" << endreq;
00203 
00204    return StatusCode::SUCCESS;
00205 }

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