00001
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
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
00025 ReadRawData::ReadRawData(const string& name, ISvcLocator* pSvcLocator)
00026 : Algorithm(name, pSvcLocator)
00027 {}
00028
00029
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
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
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
00108
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
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 }