21 {
22
23 MsgStream log(
msgSvc(),
"EvtRecTrackCnv" );
24 log << MSG::DEBUG << "EvtRecTrackCnv::TObjectToDataObject" << endmsg;
25
26
28 refpObject = evtRecTrackCol;
29
30 if ( !m_evtRecTrackCol ) return StatusCode::SUCCESS;
31
32 IDataProviderSvc* dataSvc = 0;
33 StatusCode sc = serviceLocator()->getService(
34 "EventDataSvc", IDataProviderSvc::interfaceID(), (IInterface*&)dataSvc );
35 if ( sc.isFailure() )
36 {
37 log << MSG::FATAL << "Could not get EventDataSvc in EvtRecTrackCnv" << endmsg;
38 return sc;
39 }
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 int trackID;
78
79
81 if ( !mdcTrackCol )
82 {
83 log << MSG::INFO << "Could not find RecMdcTrackCol" << endmsg;
84 SmartDataPtr<DstMdcTrackCol> dstMdcTrackCol( dataSvc, "/Event/Dst/DstMdcTrackCol" );
85 if ( !dstMdcTrackCol ) { log << MSG::INFO << "Could not find DstMdcTrackCol" << endmsg; }
86 else
87 {
89 DstMdcTrackCol::iterator iter_mdc = dstMdcTrackCol->begin();
90 trackID = 0;
91 for ( ; iter_mdc != dstMdcTrackCol->end(); iter_mdc++, trackID++ )
92 {
93 RecMdcTrack* recMdcTrack = new RecMdcTrack();
94 *recMdcTrack = **iter_mdc;
95 ( *mdcTrackCol ).push_back( recMdcTrack );
96 log << MSG::INFO << " Mdc Track ID = " << trackID
97 <<
" Mdc Track Nster = " << ( *iter_mdc )->
nster() << endmsg;
98 }
100 }
101 }
102
103
104 SmartDataPtr<RecMdcKalTrackCol> mdcKalTrackCol( dataSvc,
106 if ( !mdcKalTrackCol )
107 {
108 log << MSG::INFO << "Could not find RecMdcKalTrackCol" << endmsg;
109 SmartDataPtr<DstMdcKalTrackCol> dstMdcKalTrackCol( dataSvc,
110 "/Event/Dst/DstMdcKalTrackCol" );
111 if ( !dstMdcKalTrackCol )
112 { log << MSG::INFO << "Could not find DstMdcKalTrackCol" << endmsg; }
113 else
114 {
116 DstMdcKalTrackCol::iterator iter_mdc = dstMdcKalTrackCol->begin();
117 trackID = 0;
118 for ( ; iter_mdc != dstMdcKalTrackCol->end(); iter_mdc++, trackID++ )
119 {
120 RecMdcKalTrack* recMdcKalTrack = new RecMdcKalTrack();
121 *recMdcKalTrack = **iter_mdc;
122 ( *mdcKalTrackCol ).push_back( recMdcKalTrack );
123 log << MSG::INFO << " MdcKalTrack ID = " << trackID
124 <<
" MdcKalTrack Nster = " << ( *iter_mdc )->
nster()
125 << " MdcKalTrack poca = " << ( *iter_mdc )->poca() << endmsg;
126 }
128 }
129 }
130
131
133 if ( !mdcDedxCol )
134 {
135 log << MSG::INFO << "Could not find RecMdcDedxCol" << endmsg;
136 SmartDataPtr<DstMdcDedxCol> dstMdcDedxCol( dataSvc, "/Event/Dst/DstMdcDedxCol" );
137 if ( !dstMdcDedxCol ) { log << MSG::INFO << "Could not find DstMdcDedxCol" << endmsg; }
138 else
139 {
141 DstMdcDedxCol::iterator iter_mdc = dstMdcDedxCol->begin();
142 trackID = 0;
143 for ( ; iter_mdc != dstMdcDedxCol->end(); iter_mdc++, trackID++ )
144 {
145 RecMdcDedx* recMdcDedx = new RecMdcDedx();
146 *recMdcDedx = **iter_mdc;
147 ( *mdcDedxCol ).push_back( recMdcDedx );
148 log << MSG::INFO << " MdcDedx ID = " << trackID << " MdcDedx " << endmsg;
149 }
151 }
152 }
153
154
156 if ( !extTrackCol )
157 {
158 log << MSG::INFO << "Could not find RecExtTrackCol" << endmsg;
159 SmartDataPtr<DstExtTrackCol> dstExtTrackCol( dataSvc, "/Event/Dst/DstExtTrackCol" );
160 if ( !dstExtTrackCol ) { log << MSG::INFO << "Could not find DstExtTrackCol" << endmsg; }
161 else
162 {
164 DstExtTrackCol::iterator iter_ext = dstExtTrackCol->begin();
165 trackID = 0;
166 for ( ; iter_ext != dstExtTrackCol->end(); iter_ext++, trackID++ )
167 {
168 RecExtTrack* recExtTrack = new RecExtTrack();
169 *recExtTrack = **iter_ext;
170 ( *extTrackCol ).push_back( recExtTrack );
171 log << MSG::INFO << " ExtTrack ID = " << trackID << endmsg;
172 }
174 }
175 }
176
177
179 if ( !tofTrackCol )
180 {
181 log << MSG::INFO << "Could not find TofTrackCol" << endmsg;
182 SmartDataPtr<DstTofTrackCol> dstTofTrackCol( dataSvc, "/Event/Dst/DstTofTrackCol" );
183 if ( !dstTofTrackCol ) { log << MSG::INFO << "Could not find DstTofTrackCol" << endmsg; }
184 else
185 {
187 DstTofTrackCol::iterator iter_tof = dstTofTrackCol->begin();
188 for ( ; iter_tof != dstTofTrackCol->end(); iter_tof++ )
189 {
190 RecTofTrack* recTofTrack = new RecTofTrack();
191 *recTofTrack = **iter_tof;
192 ( *tofTrackCol ).push_back( recTofTrack );
193 log << MSG::INFO <<
"Tof Track ID = " << ( *iter_tof )->
tofTrackID()
194 << " Track ID = " << ( *iter_tof )->trackID()
195 << " Tof Counter ID = " << ( *iter_tof )->tofID()
196 << " Quality = " << ( *iter_tof )->quality() << endmsg;
197 }
199 }
200 }
201
202
204 if ( !emcShowerCol )
205 {
206 log << MSG::INFO << "Could not find RecEmcShowerCol" << endmsg;
207 SmartDataPtr<DstEmcShowerCol> dstEmcShowerCol( dataSvc, "/Event/Dst/DstEmcShowerCol" );
208 if ( !dstEmcShowerCol ) { log << MSG::INFO << "Could not find DstEmcShowerCol" << endmsg; }
209 else
210 {
212 DstEmcShowerCol::iterator iter_emc = dstEmcShowerCol->begin();
213 trackID = 0;
214 for ( ; iter_emc != dstEmcShowerCol->end(); iter_emc++, trackID++ )
215 {
216 RecEmcShower* recEmcShower = new RecEmcShower();
217 *recEmcShower = **iter_emc;
218 ( *emcShowerCol ).push_back( recEmcShower );
219 log << MSG::INFO << " EmcShower ID = " << trackID
220 <<
" EmcShower energy = " << ( *iter_emc )->
energy() << endmsg;
221 }
223 }
224 }
225
226
228 if ( !mucTrackCol )
229 {
230 log << MSG::INFO << "Could not find RecMucTrackCol" << endmsg;
231 SmartDataPtr<DstMucTrackCol> dstMucTrackCol( dataSvc, "/Event/Dst/DstMucTrackCol" );
232 if ( !dstMucTrackCol ) { log << MSG::INFO << "Could not find DstMucTrackCol" << endmsg; }
233 else
234 {
236 DstMucTrackCol::iterator iter_muc = dstMucTrackCol->begin();
237 trackID = 0;
238 for ( ; iter_muc != dstMucTrackCol->end(); iter_muc++, trackID++ )
239 {
240 RecMucTrack* recMucTrack = new RecMucTrack();
241 *recMucTrack = **iter_muc;
242 ( *mucTrackCol ).push_back( recMucTrack );
243 log << MSG::INFO << " MucTrack ID = " << trackID << endmsg;
244 }
246 }
247 }
248
249
250 TIter evtRecTrackIter( m_evtRecTrackCol );
251 TEvtRecTrack* evtRecTrackRoot = 0;
252 while ( ( evtRecTrackRoot = (TEvtRecTrack*)evtRecTrackIter.Next() ) )
253 {
254 EvtRecTrack* evtRecTrack = new EvtRecTrack();
255 m_common.m_rootEvtRecTrackMap[evtRecTrackRoot] = evtRecTrack;
256
260
261 int mdcTrackId = evtRecTrackRoot->
mdcTrackId();
262 if ( mdcTrackId >= 0 )
263 {
265 dynamic_cast<RecMdcTrack*>( mdcTrackCol->containedObject( mdcTrackId ) ) );
266 }
267
269 if ( mdcKalTrackId >= 0 )
270 {
272 dynamic_cast<RecMdcKalTrack*>( mdcKalTrackCol->containedObject( mdcKalTrackId ) ) );
273 }
274
275 int mdcDedxId = evtRecTrackRoot->
mdcDedxId();
276 if ( mdcDedxId >= 0 )
277 {
279 dynamic_cast<RecMdcDedx*>( mdcDedxCol->containedObject( mdcDedxId ) ) );
280 }
281
282 int extTrackId = evtRecTrackRoot->
extTrackId();
283 if ( extTrackId >= 0 )
284 {
286 dynamic_cast<RecExtTrack*>( extTrackCol->containedObject( extTrackId ) ) );
287 }
288
289 const std::vector<int>& tofTrackIds = evtRecTrackRoot->
tofTrackIds();
290 for ( unsigned int i = 0; i < tofTrackIds.size(); i++ )
291 {
292 RecTofTrack* tofTrack =
293 dynamic_cast<RecTofTrack*>( tofTrackCol->containedObject( tofTrackIds[i] ) );
295 }
296
298 if ( emcShowerId >= 0 )
299 {
301 dynamic_cast<RecEmcShower*>( emcShowerCol->containedObject( emcShowerId ) ) );
302 }
303
304 int mucTrackId = evtRecTrackRoot->
mucTrackId();
305 if ( mucTrackId >= 0 )
306 {
308 dynamic_cast<RecMucTrack*>( mucTrackCol->containedObject( mucTrackId ) ) );
309 }
310
311 evtRecTrackCol->push_back( evtRecTrack );
312 }
313
314 delete m_evtRecTrackCol;
315 m_evtRecTrackCol = 0;
316 return StatusCode::SUCCESS;
317}
ObjectVector< RecEmcShower > RecEmcShowerCol
ObjectVector< RecExtTrack > RecExtTrackCol
ObjectVector< RecMdcDedx > RecMdcDedxCol
ObjectVector< RecMdcKalTrack > RecMdcKalTrackCol
ObjectVector< RecMdcTrack > RecMdcTrackCol
ObjectVector< RecMucTrack > RecMucTrackCol
ObjectVector< RecTofTrack > RecTofTrackCol
void setMucTrack(const RecMucTrack *trk)
void setQuality(const int quality)
void setPartId(const int partId)
void setMdcTrack(const RecMdcTrack *trk)
void setTrackId(const int trkId)
void setMdcKalTrack(const RecMdcKalTrack *trk)
void setMdcDedx(const RecMdcDedx *trk)
void setEmcShower(const RecEmcShower *shower)
void addTofTrack(const SmartRef< RecTofTrack > trk)
void setExtTrack(const RecExtTrack *trk)
Int_t emcShowerId() const
Int_t mdcKalTrackId() const
const std::vector< Int_t > & tofTrackIds() const