BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
ReadRawData.cxx
Go to the documentation of this file.
1// Include files.
2#include "ReadRawData.h"
3#include "GaudiKernel/IDataManagerSvc.h"
4#include "GaudiKernel/IDataProviderSvc.h"
5#include "GaudiKernel/ISvcLocator.h"
6#include "GaudiKernel/MsgStream.h"
7#include "GaudiKernel/PropertyMgr.h"
8#include "GaudiKernel/SmartDataPtr.h"
9#include "RawDataCnv/EventManagement/RAWEVENT.h"
10#include <vector>
11
12// Event Model related classes
13#include "EmcRawEvent/EmcDigi.h"
14#include "EventModel/Event.h"
15#include "MdcRawEvent/MdcDigi.h"
16#include "MucRawEvent/MucDigi.h"
17#include "RawEvent/DigiEvent.h"
18#include "TofRawEvent/TofDigi.h"
19
20#include "EventModel/EventModel.h"
21
22using namespace std;
23
24// Constructor.
25ReadRawData::ReadRawData( const string& name, ISvcLocator* pSvcLocator )
26 : Algorithm( name, pSvcLocator ) {}
27
28// ReadRawData::initialize().
30
31 MsgStream log( msgSvc(), name() );
32 m_count = 0;
33
34 log << MSG::INFO << "in initialize()" << endmsg;
35
36 return StatusCode::SUCCESS;
37}
38
39// ReadRawData::execute().
41 StatusCode sc;
42 MsgStream log( msgSvc(), name() );
43
44 log << MSG::INFO << "================================================" << endmsg;
45 log << MSG::INFO << "In execute()" << endmsg;
46 log << MSG::INFO << "++++++++++++++++++++++++++++++++++++++++++++++++" << endmsg;
47
48 SmartDataPtr<Event::EventHeader> evt( eventSvc(), EventModel::EventHeader );
49 if ( !evt )
50 {
51 log << MSG::ERROR << "Did not retrieve event" << endmsg;
52 return StatusCode::FAILURE;
53 }
54 // Check event header
55
56 int eventNo = evt->eventNumber();
57 int runNo = evt->runNumber();
58
59 log << MSG::INFO << "ReadRawData: retrieved event: " << eventNo << " run: " << runNo
60 << endmsg;
61
62 log << MSG::INFO << "ReadRawData: start to read MdcDigiData" << endmsg;
63 sc = readMdcDigiData();
64
65 log << MSG::INFO << "ReadRawData: start to read EmcDigiData" << endmsg;
66 sc = readEmcDigiData();
67
68 log << MSG::INFO << "ReadRawData: start to read TofDigiData" << endmsg;
69 sc = readTofDigiData();
70
71 log << MSG::INFO << "ReadRawData: start to read MucDigiData" << endmsg;
72 sc = readMucDigiData();
73 if ( sc.isFailure() ) { return sc; }
74
75 m_count++;
76
77 return StatusCode::SUCCESS;
78}
79
80StatusCode ReadRawData::readMdcDigiData() {
81 MsgStream log( msgSvc(), name() );
82 StatusCode sc = StatusCode::SUCCESS;
83
84 SmartDataPtr<DigiEvent> digiEvt( eventSvc(), EventModel::Digi::Event );
85 if ( !digiEvt )
86 {
87 log << MSG::ERROR << "Did not retrieve DigiEvent" << endmsg;
88 return StatusCode::FAILURE;
89 }
90
91 SmartDataPtr<MdcDigiCol> digiCol( eventSvc(), EventModel::Digi::MdcDigiCol );
92
93 if ( digiCol == 0 )
94 {
95 log << "no MdcDigiCol found" << endmsg;
96 return sc;
97 }
98 else
99 {
100 log << "Event No. " << m_count << " ---> " << digiCol->size() << " Mdc digis found "
101 << endmsg;
102
103 log << MSG::INFO << "Detailed dump of this event: " << endmsg;
104 int ndigi = 0;
105 MdcDigiCol::const_iterator pMdcDigi = digiCol->begin();
106 for ( ; pMdcDigi != digiCol->end(); pMdcDigi++ )
107 {
108 log << MSG::INFO << "Digi " << ndigi++ << " ";
109 // output the digi proper: " << digi " no longer works because
110 // "digi" now returns an integer sort order
111 ( **pMdcDigi ).fillStream( log.stream() );
112 log << endmsg;
113 }
114 }
115
116 return StatusCode::SUCCESS;
117}
118
119StatusCode ReadRawData::readEmcDigiData() {
120 MsgStream log( msgSvc(), name() );
121 StatusCode sc = StatusCode::SUCCESS;
122
123 SmartDataPtr<EmcDigiCol> digiCol( eventSvc(), EventModel::Digi::EmcDigiCol );
124
125 if ( digiCol == 0 )
126 {
127 log << "no EmcDigiCol found" << endmsg;
128 return sc;
129 }
130 else
131 {
132 log << "Event No. " << m_count << " ---> " << digiCol->size() << " Emc digis found "
133 << endmsg;
134 log << MSG::INFO << "Detailed dump of this event: " << endmsg;
135 int ndigi = 0;
136 EmcDigiCol::const_iterator pEmcDigi = digiCol->begin();
137 for ( ; pEmcDigi != digiCol->end(); pEmcDigi++ )
138 {
139 log << MSG::INFO << "Digi " << ndigi++ << " ";
140 ( **pEmcDigi ).fillStream( log.stream() );
141 log << endmsg;
142 }
143 }
144
145 return StatusCode::SUCCESS;
146}
147
148StatusCode ReadRawData::readTofDigiData() {
149 MsgStream log( msgSvc(), name() );
150 StatusCode sc = StatusCode::SUCCESS;
151
152 SmartDataPtr<TofDigiCol> digiCol( eventSvc(), EventModel::Digi::TofDigiCol );
153
154 if ( digiCol == 0 )
155 {
156 log << "no TofDigiCol found" << endmsg;
157 return sc;
158 }
159 else
160 {
161 log << "Event No. " << m_count << " ---> " << digiCol->size() << " Tof digis found "
162 << endmsg;
163 log << MSG::INFO << "Detailed dump of this event: " << endmsg;
164 int ndigi = 0;
165 TofDigiCol::const_iterator pTofDigi = digiCol->begin();
166 for ( ; pTofDigi != digiCol->end(); pTofDigi++ )
167 {
168 log << MSG::INFO << "Digi " << ndigi++ << " ";
169 ( **pTofDigi ).fillStream( log.stream() );
170 log << endmsg;
171 }
172 }
173
174 return StatusCode::SUCCESS;
175}
176
177StatusCode ReadRawData::readMucDigiData() {
178 MsgStream log( msgSvc(), name() );
179 StatusCode sc = StatusCode::SUCCESS;
180
181 SmartDataPtr<MucDigiCol> digiCol( eventSvc(), EventModel::Digi::MucDigiCol );
182
183 if ( digiCol == 0 )
184 {
185 log << "no MucDigiCol found" << endmsg;
186 return sc;
187 }
188 else
189 {
190 log << "Event No. " << m_count << " ---> " << digiCol->size() << " Muc digis found "
191 << endmsg;
192 log << MSG::INFO << "Detailed dump of this event: " << endmsg;
193 int ndigi = 0;
194 MucDigiCol::const_iterator pMucDigi = digiCol->begin();
195 for ( ; pMucDigi != digiCol->end(); pMucDigi++ )
196 {
197 log << MSG::INFO << "Digi " << ndigi++ << " ";
198 ( **pMucDigi ).fillStream( log.stream() );
199 log << endmsg;
200 }
201 }
202
203 return StatusCode::SUCCESS;
204}
205
206// ReadRawData::finalize().
208
209 MsgStream log( msgSvc(), name() );
210
211 log << MSG::INFO << "In finalize()" << endmsg;
212
213 return StatusCode::SUCCESS;
214}
int runNo
Definition DQA_TO_DB.cxx:13
int eventNo
IMessageSvc * msgSvc()
StatusCode finalize()
ReadRawData(const std::string &name, ISvcLocator *pSvcLocator)
StatusCode execute()
StatusCode initialize()