23 MsgStream log(
msgSvc(),
"EvtRecTrackCnv" );
24 log << MSG::DEBUG <<
"EvtRecTrackCnv::TObjectToDataObject" << endmsg;
28 refpObject = evtRecTrackCol;
30 if ( !m_evtRecTrackCol )
return StatusCode::SUCCESS;
32 IDataProviderSvc* dataSvc = 0;
33 StatusCode sc = serviceLocator()->getService(
34 "EventDataSvc", IDataProviderSvc::interfaceID(), (IInterface*&)dataSvc );
37 log << MSG::FATAL <<
"Could not get EventDataSvc in EvtRecTrackCnv" << endmsg;
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; }
89 DstMdcTrackCol::iterator iter_mdc = dstMdcTrackCol->begin();
91 for ( ; iter_mdc != dstMdcTrackCol->end(); iter_mdc++, trackID++ )
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;
104 SmartDataPtr<RecMdcKalTrackCol> mdcKalTrackCol( dataSvc,
106 if ( !mdcKalTrackCol )
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; }
116 DstMdcKalTrackCol::iterator iter_mdc = dstMdcKalTrackCol->begin();
118 for ( ; iter_mdc != dstMdcKalTrackCol->end(); iter_mdc++, trackID++ )
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;
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; }
141 DstMdcDedxCol::iterator iter_mdc = dstMdcDedxCol->begin();
143 for ( ; iter_mdc != dstMdcDedxCol->end(); iter_mdc++, trackID++ )
146 *recMdcDedx = **iter_mdc;
147 ( *mdcDedxCol ).push_back( recMdcDedx );
148 log << MSG::INFO <<
" MdcDedx ID = " << trackID <<
" MdcDedx " << endmsg;
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; }
164 DstExtTrackCol::iterator iter_ext = dstExtTrackCol->begin();
166 for ( ; iter_ext != dstExtTrackCol->end(); iter_ext++, trackID++ )
169 *recExtTrack = **iter_ext;
170 ( *extTrackCol ).push_back( recExtTrack );
171 log << MSG::INFO <<
" ExtTrack ID = " << trackID << endmsg;
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; }
187 DstTofTrackCol::iterator iter_tof = dstTofTrackCol->begin();
188 for ( ; iter_tof != dstTofTrackCol->end(); iter_tof++ )
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;
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; }
212 DstEmcShowerCol::iterator iter_emc = dstEmcShowerCol->begin();
214 for ( ; iter_emc != dstEmcShowerCol->end(); iter_emc++, trackID++ )
217 *recEmcShower = **iter_emc;
218 ( *emcShowerCol ).push_back( recEmcShower );
219 log << MSG::INFO <<
" EmcShower ID = " << trackID
220 <<
" EmcShower energy = " << ( *iter_emc )->
energy() << endmsg;
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; }
236 DstMucTrackCol::iterator iter_muc = dstMucTrackCol->begin();
238 for ( ; iter_muc != dstMucTrackCol->end(); iter_muc++, trackID++ )
241 *recMucTrack = **iter_muc;
242 ( *mucTrackCol ).push_back( recMucTrack );
243 log << MSG::INFO <<
" MucTrack ID = " << trackID << endmsg;
250 TIter evtRecTrackIter( m_evtRecTrackCol );
252 while ( ( evtRecTrackRoot = (
TEvtRecTrack*)evtRecTrackIter.Next() ) )
255 m_common.m_rootEvtRecTrackMap[evtRecTrackRoot] = evtRecTrack;
261 int mdcTrackId = evtRecTrackRoot->
mdcTrackId();
262 if ( mdcTrackId >= 0 )
265 dynamic_cast<RecMdcTrack*
>( mdcTrackCol->containedObject( mdcTrackId ) ) );
269 if ( mdcKalTrackId >= 0 )
272 dynamic_cast<RecMdcKalTrack*
>( mdcKalTrackCol->containedObject( mdcKalTrackId ) ) );
275 int mdcDedxId = evtRecTrackRoot->
mdcDedxId();
276 if ( mdcDedxId >= 0 )
279 dynamic_cast<RecMdcDedx*
>( mdcDedxCol->containedObject( mdcDedxId ) ) );
282 int extTrackId = evtRecTrackRoot->
extTrackId();
283 if ( extTrackId >= 0 )
286 dynamic_cast<RecExtTrack*
>( extTrackCol->containedObject( extTrackId ) ) );
289 const std::vector<int>& tofTrackIds = evtRecTrackRoot->
tofTrackIds();
290 for (
unsigned int i = 0; i < tofTrackIds.size(); i++ )
293 dynamic_cast<RecTofTrack*
>( tofTrackCol->containedObject( tofTrackIds[i] ) );
298 if ( emcShowerId >= 0 )
301 dynamic_cast<RecEmcShower*
>( emcShowerCol->containedObject( emcShowerId ) ) );
304 int mucTrackId = evtRecTrackRoot->
mucTrackId();
305 if ( mucTrackId >= 0 )
308 dynamic_cast<RecMucTrack*
>( mucTrackCol->containedObject( mucTrackId ) ) );
311 evtRecTrackCol->push_back( evtRecTrack );
314 delete m_evtRecTrackCol;
315 m_evtRecTrackCol = 0;
316 return StatusCode::SUCCESS;
320 MsgStream log(
msgSvc(),
"EvtRecTrackCnv" );
321 log << MSG::DEBUG <<
"EvtRecTrackCnv::DataObjectToTObject" << endmsg;
324 if ( !evtRecTrackCol )
326 log << MSG::ERROR <<
"Could not downcast to EvtRecTrackCol" << endmsg;
327 return StatusCode::FAILURE;
330 DataObject* evt = NULL;
332 if ( sc.isFailure() )
334 log << MSG::ERROR <<
"Could not get EvtRecObject in TDS" << endmsg;
335 return StatusCode::FAILURE;
339 { log << MSG::ERROR <<
"EvtRecTrackCnv: Could not downcast to TDS EvtRecObject" << endmsg; }
341 IOpaqueAddress* addr;
342 m_cnvSvc->getEvtRecCnv()->createRep( evt, addr );
346 if ( !m_evtRecTrackCol )
return StatusCode::SUCCESS;
348 IDataProviderSvc* dataSvc = 0;
349 sc = serviceLocator()->getService(
"EventDataSvc", IDataProviderSvc::interfaceID(),
350 (IInterface*&)dataSvc );
351 if ( sc.isFailure() )
353 log << MSG::FATAL <<
"Could not get EventDataSvc in EvtRecTrackCnv" << endmsg;
357 RecMdcTrackCol::iterator mdcTrackColbegin, mdcTrackColend;
358 RecMdcKalTrackCol::iterator mdcKalTrackColbegin, mdcKalTrackColend;
359 RecMdcDedxCol::iterator mdcDedxColbegin, mdcDedxColend;
360 RecExtTrackCol::iterator extTrackColbegin, extTrackColend;
361 RecTofTrackCol::iterator tofTrackColbegin, tofTrackColend;
362 RecEmcShowerCol::iterator emcShowerColbegin, emcShowerColend;
363 RecMucTrackCol::iterator mucTrackColbegin, mucTrackColend;
366 if ( !mdcTrackCol ) { log << MSG::INFO <<
"Could not find RecMdcTrackCol" << endmsg; }
369 mdcTrackColbegin = mdcTrackCol->begin();
370 mdcTrackColend = mdcTrackCol->end();
373 SmartDataPtr<RecMdcKalTrackCol> mdcKalTrackCol( dataSvc,
375 if ( !mdcKalTrackCol ) { log << MSG::INFO <<
"Could not find RecMdcKalTrackCol" << endmsg; }
378 mdcKalTrackColbegin = mdcKalTrackCol->begin();
379 mdcKalTrackColend = mdcKalTrackCol->end();
383 if ( !mdcDedxCol ) { log << MSG::INFO <<
"Could not find RecMdcDedxCol" << endmsg; }
386 mdcDedxColbegin = mdcDedxCol->begin();
387 mdcDedxColend = mdcDedxCol->end();
391 if ( !extTrackCol ) { log << MSG::INFO <<
"Could not find RecExtTrackCol" << endmsg; }
394 extTrackColbegin = extTrackCol->begin();
395 extTrackColend = extTrackCol->end();
399 if ( !tofTrackCol ) { log << MSG::INFO <<
"Could not find RecTofTrackCol" << endmsg; }
402 tofTrackColbegin = tofTrackCol->begin();
403 tofTrackColend = tofTrackCol->end();
407 if ( !emcShowerCol ) { log << MSG::INFO <<
"Could not find RecEmcShowerCol" << endmsg; }
410 emcShowerColbegin = emcShowerCol->begin();
411 emcShowerColend = emcShowerCol->end();
415 if ( !mucTrackCol ) { log << MSG::INFO <<
"Could not find RecMucTrackCol" << endmsg; }
418 mucTrackColbegin = mucTrackCol->begin();
419 mucTrackColend = mucTrackCol->end();
424 EvtRecTrackCol::const_iterator evtRecTrack = evtRecTrackCol->begin();
426 for ( ; evtRecTrack != evtRecTrackCol->end(); evtRecTrack++ )
437 RecMdcTrackCol::iterator it = find( mdcTrackColbegin, mdcTrackColend, ptr->
mdcTrack() );
442 RecMdcKalTrackCol::iterator it =
443 find( mdcKalTrackColbegin, mdcKalTrackColend, ptr->
mdcKalTrack() );
448 RecMdcDedxCol::iterator it = find( mdcDedxColbegin, mdcDedxColend, ptr->
mdcDedx() );
453 RecExtTrackCol::iterator it = find( extTrackColbegin, extTrackColend, ptr->
extTrack() );
458 SmartRefVector<RecTofTrack> tofTrackVec = ptr->
tofTrack();
459 for (
unsigned int i = 0; i < tofTrackVec.size(); i++ )
461 RecTofTrackCol::iterator it = find( tofTrackColbegin, tofTrackColend, tofTrackVec[i] );
467 RecEmcShowerCol::iterator it =
468 find( emcShowerColbegin, emcShowerColend, ptr->
emcShower() );
473 RecMucTrackCol::iterator it = find( mucTrackColbegin, mucTrackColend, ptr->
mucTrack() );
480 return StatusCode::SUCCESS;