BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
WriteRawData.cxx
Go to the documentation of this file.
1// Include files.
2#include "WriteRawData.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.
25WriteRawData::WriteRawData( const string& name, ISvcLocator* pSvcLocator )
26 : Algorithm( name, pSvcLocator ) {}
27
28// WriteRawData::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// WriteRawData::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 static int evtnum = 0;
49 static int runnum = 999;
50
51 // Create the Event header and set it as "root" of the event store
53 event->setEventNumber( evtnum++ );
54 event->setRunNumber( runnum );
55
56 IDataManagerSvc* evtmgr = dynamic_cast<IDataManagerSvc*>( eventSvc() );
57 sc = evtmgr->setRoot( EventModel::EventHeader, event );
58 if ( sc.isFailure() )
59 {
60 log << MSG::ERROR << "Unable to register /Event object" << endmsg;
61 return sc;
62 }
63
64 DigiEvent* digi = new DigiEvent;
65 log << MSG::INFO << " DigiEvent clID :: " << digi->clID() << endmsg;
66 sc = eventSvc()->registerObject( EventModel::Digi::Event, digi );
67 if ( sc.isFailure() )
68 {
69 log << MSG::ERROR << "Unable to register /Event/Digi object" << endmsg;
70 return sc;
71 }
72
73 sc = writeMdcDigiData();
74 if ( sc.isFailure() )
75 {
76 log << MSG::ERROR << "Unable to register /Event/Digi/MdcDigiCol object" << endmsg;
77 return sc;
78 }
79
80 sc = writeEmcDigiData();
81 if ( sc.isFailure() )
82 {
83 log << MSG::ERROR << "Unable to register /Event/Digi/EmcDigiCol object" << endmsg;
84 return sc;
85 }
86
87 sc = writeTofDigiData();
88 if ( sc.isFailure() )
89 {
90 log << MSG::ERROR << "Unable to register /Event/Digi/EmcDigiCol object" << endmsg;
91 return sc;
92 }
93
94 sc = writeMucDigiData();
95 if ( sc.isFailure() )
96 {
97 log << MSG::ERROR << "Unable to register /Event/Digi/EmcDigiCol object" << endmsg;
98 return sc;
99 }
100
101 m_count++;
102
103 return StatusCode::SUCCESS;
104}
105
106StatusCode WriteRawData::writeMdcDigiData() {
107 int n = 10;
108 MdcDigiCol* mdcCol = new MdcDigiCol;
109 for ( int i = 0; i < n; i++ )
110 {
111 // Create new MdcDigi
112 MdcDigi* mdcDigi = new MdcDigi( m_count );
113 mdcDigi->setTimeChannel( 8 );
114 mdcDigi->setChargeChannel( 10 );
115 mdcDigi->setOverflow( 0 );
116 // And add the stuff to the container
117 mdcCol->push_back( mdcDigi );
118 }
119
120 StatusCode sc = StatusCode::SUCCESS;
121 sc = eventSvc()->registerObject( EventModel::Digi::MdcDigiCol, mdcCol );
122 return sc;
123}
124
125StatusCode WriteRawData::writeEmcDigiData() {
126 int n = 10;
127 EmcDigiCol* emcCol = new EmcDigiCol;
128 for ( int i = 0; i < n; i++ )
129 {
130 // Create new EmcDigi
131 EmcDigi* emcDigi = new EmcDigi( m_count );
132 emcDigi->setTimeChannel( 9 );
133 emcDigi->setChargeChannel( 9 );
134 emcDigi->setMeasure( 0 );
135 // And add the stuff to the container
136 emcCol->push_back( emcDigi );
137 }
138
139 StatusCode sc = StatusCode::SUCCESS;
140 sc = eventSvc()->registerObject( EventModel::Digi::EmcDigiCol, emcCol );
141 return sc;
142}
143
144StatusCode WriteRawData::writeTofDigiData() {
145 int n = 10;
146 TofDigiCol* tofCol = new TofDigiCol;
147 for ( int i = 0; i < n; i++ )
148 {
149 // Create new TofDigi
150 TofDigi* tofDigi = new TofDigi( m_count );
151 tofDigi->setTimeChannel( 10 );
152 tofDigi->setChargeChannel( 8 );
153 tofDigi->setOverflow( 0 );
154 // And add the stuff to the container
155 tofCol->push_back( tofDigi );
156 }
157
158 StatusCode sc = StatusCode::SUCCESS;
159 sc = eventSvc()->registerObject( EventModel::Digi::TofDigiCol, tofCol );
160 return sc;
161}
162
163StatusCode WriteRawData::writeMucDigiData() {
164 int n = 10;
165 MucDigiCol* mucCol = new MucDigiCol;
166 for ( int i = 0; i < n; i++ )
167 {
168 // Create new MucDigi
169 MucDigi* mucDigi = new MucDigi( m_count );
170 // And add the stuff to the container
171 mucCol->push_back( mucDigi );
172 }
173
174 StatusCode sc = StatusCode::SUCCESS;
175 sc = eventSvc()->registerObject( EventModel::Digi::MucDigiCol, mucCol );
176
177 return sc;
178}
179
180// WriteRawData::finalize().
182
183 MsgStream log( msgSvc(), name() );
184
185 log << MSG::INFO << "In finalize()" << endmsg;
186
187 return StatusCode::SUCCESS;
188}
const Int_t n
ObjectVector< EmcDigi > EmcDigiCol
IMessageSvc * msgSvc()
virtual const CLID & clID() const
Retrieve reference to class definition structure.
void setMeasure(const unsigned int measure)
void setEventNumber(int value)
Update event number.
void setChargeChannel(const unsigned int chargeChannel)
Definition RawData.cxx:24
void setTimeChannel(const unsigned int timeChannel)
Definition RawData.cxx:21
WriteRawData(const std::string &name, ISvcLocator *pSvcLocator)
StatusCode initialize()
StatusCode execute()
StatusCode finalize()