BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtRecTrackCnv.cxx
Go to the documentation of this file.
1#include "GaudiKernel/MsgStream.h"
2#include <algorithm>
3
4#include "EventModel/EventModel.h"
5#include "EvtRecEvent/EvtRecObject.h"
6#include "EvtRecEvent/EvtRecTrack.h"
7
8#include "RootEventData/TEvtRecObject.h"
9#include "RootEventData/TEvtRecTrack.h"
10
11#include "RootCnvSvc/EvtRec/EvtRecCnv.h"
12#include "RootCnvSvc/EvtRec/EvtRecTrackCnv.h"
13#include "RootCnvSvc/RootAddress.h"
14
16 m_rootBranchname = "m_evtRecTrackCol";
17 m_adresses.push_back( &m_evtRecTrackCol );
18 m_evtRecTrackCol = 0;
19}
20
21StatusCode EvtRecTrackCnv::TObjectToDataObject( DataObject*& refpObject ) {
22 // creation of TDS object from root object
23 MsgStream log( msgSvc(), "EvtRecTrackCnv" );
24 log << MSG::DEBUG << "EvtRecTrackCnv::TObjectToDataObject" << endmsg;
25
26 // create the TDS location for the EvtRecTrack Collection
27 EvtRecTrackCol* evtRecTrackCol = new EvtRecTrackCol;
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 /*SmartDataPtr<RecMdcTrackCol> mdcTrackCol(dataSvc, EventModel::Recon::RecMdcTrackCol);
42 if ( ! mdcTrackCol ) {
43 log << MSG::INFO << "Could not find RecMdcTrackCol" << endmsg;
44 }
45
46 SmartDataPtr<RecMdcKalTrackCol> mdcKalTrackCol(dataSvc,
47 EventModel::Recon::RecMdcKalTrackCol); if ( ! mdcKalTrackCol ) { log << MSG::INFO << "Could
48 not find RecMdcKalTrackCol" << endmsg;
49 }
50
51 SmartDataPtr<RecMdcDedxCol> mdcDedxCol(dataSvc, EventModel::Recon::RecMdcDedxCol);
52 if ( ! mdcDedxCol ) {
53 log << MSG::INFO << "Could not find RecMdcDedxCol" << endmsg;
54 }
55
56 SmartDataPtr<RecExtTrackCol> extTrackCol(dataSvc, EventModel::Recon::RecExtTrackCol);
57 if ( ! extTrackCol ) {
58 log << MSG::INFO << "Could not find RecExtTrackCol" << endmsg;
59 }
60
61 SmartDataPtr<RecTofTrackCol> tofTrackCol(dataSvc, EventModel::Recon::RecTofTrackCol);
62 if ( ! tofTrackCol ) {
63 log << MSG::INFO << "Could not find RecTofTrackCol" << endmsg;
64 }
65
66 SmartDataPtr<RecEmcShowerCol> emcShowerCol(dataSvc, EventModel::Recon::RecEmcShowerCol);
67 if ( ! emcShowerCol ) {
68 log << MSG::INFO << "Could not find RecEmcShowerCol" << endmsg;
69 }
70
71 SmartDataPtr<RecMucTrackCol> mucTrackCol(dataSvc, EventModel::Recon::RecMucTrackCol);
72 if ( ! mucTrackCol ) {
73 log << MSG::INFO << "Could not find RecMucTrackCol" << endmsg;
74 }*/
75
76 //-----------------Dst to Rec convert in case of no Rec data in TDS
77 int trackID;
78
79 // Retrieve Mdc Track
80 SmartDataPtr<RecMdcTrackCol> mdcTrackCol( dataSvc, EventModel::Recon::RecMdcTrackCol );
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 {
88 RecMdcTrackCol* mdcTrackCol = new RecMdcTrackCol();
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 }
99 sc = dataSvc->registerObject( EventModel::Recon::RecMdcTrackCol, mdcTrackCol );
100 }
101 }
102
103 // Retrieve MdcKal track
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 {
115 RecMdcKalTrackCol* mdcKalTrackCol = new RecMdcKalTrackCol();
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 }
127 sc = dataSvc->registerObject( EventModel::Recon::RecMdcKalTrackCol, mdcKalTrackCol );
128 }
129 }
130
131 // Retrieve MdcDedx
132 SmartDataPtr<RecMdcDedxCol> mdcDedxCol( dataSvc, EventModel::Recon::RecMdcDedxCol );
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 {
140 RecMdcDedxCol* mdcDedxCol = new RecMdcDedxCol();
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 }
150 sc = dataSvc->registerObject( EventModel::Recon::RecMdcDedxCol, mdcDedxCol );
151 }
152 }
153
154 // Retrieve Ext track
155 SmartDataPtr<RecExtTrackCol> extTrackCol( dataSvc, EventModel::Recon::RecExtTrackCol );
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 {
163 RecExtTrackCol* extTrackCol = new RecExtTrackCol();
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 }
173 sc = dataSvc->registerObject( EventModel::Recon::RecExtTrackCol, extTrackCol );
174 }
175 }
176
177 // Retrieve Tof Track
178 SmartDataPtr<RecTofTrackCol> tofTrackCol( dataSvc, EventModel::Recon::RecTofTrackCol );
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 {
186 RecTofTrackCol* tofTrackCol = new RecTofTrackCol();
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 }
198 sc = dataSvc->registerObject( EventModel::Recon::RecTofTrackCol, tofTrackCol );
199 }
200 }
201
202 // Retrieve Emc shower
203 SmartDataPtr<RecEmcShowerCol> emcShowerCol( dataSvc, EventModel::Recon::RecEmcShowerCol );
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 {
211 RecEmcShowerCol* emcShowerCol = new RecEmcShowerCol();
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 }
222 sc = dataSvc->registerObject( EventModel::Recon::RecEmcShowerCol, emcShowerCol );
223 }
224 }
225
226 // Retrieve Muc Track
227 SmartDataPtr<RecMucTrackCol> mucTrackCol( dataSvc, EventModel::Recon::RecMucTrackCol );
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 {
235 RecMucTrackCol* mucTrackCol = new RecMucTrackCol();
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 }
245 sc = dataSvc->registerObject( EventModel::Recon::RecMucTrackCol, mucTrackCol );
246 }
247 }
248
249 // convert
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 // set ....
257 evtRecTrack->setTrackId( evtRecTrackRoot->trackId() );
258 evtRecTrack->setPartId( evtRecTrackRoot->partId() );
259 evtRecTrack->setQuality( evtRecTrackRoot->quality() );
260
261 int mdcTrackId = evtRecTrackRoot->mdcTrackId();
262 if ( mdcTrackId >= 0 )
263 {
264 evtRecTrack->setMdcTrack(
265 dynamic_cast<RecMdcTrack*>( mdcTrackCol->containedObject( mdcTrackId ) ) );
266 }
267
268 int mdcKalTrackId = evtRecTrackRoot->mdcKalTrackId();
269 if ( mdcKalTrackId >= 0 )
270 {
271 evtRecTrack->setMdcKalTrack(
272 dynamic_cast<RecMdcKalTrack*>( mdcKalTrackCol->containedObject( mdcKalTrackId ) ) );
273 }
274
275 int mdcDedxId = evtRecTrackRoot->mdcDedxId();
276 if ( mdcDedxId >= 0 )
277 {
278 evtRecTrack->setMdcDedx(
279 dynamic_cast<RecMdcDedx*>( mdcDedxCol->containedObject( mdcDedxId ) ) );
280 }
281
282 int extTrackId = evtRecTrackRoot->extTrackId();
283 if ( extTrackId >= 0 )
284 {
285 evtRecTrack->setExtTrack(
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] ) );
294 evtRecTrack->addTofTrack( tofTrack );
295 }
296
297 int emcShowerId = evtRecTrackRoot->emcShowerId();
298 if ( emcShowerId >= 0 )
299 {
300 evtRecTrack->setEmcShower(
301 dynamic_cast<RecEmcShower*>( emcShowerCol->containedObject( emcShowerId ) ) );
302 }
303
304 int mucTrackId = evtRecTrackRoot->mucTrackId();
305 if ( mucTrackId >= 0 )
306 {
307 evtRecTrack->setMucTrack(
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}
318
319StatusCode EvtRecTrackCnv::DataObjectToTObject( DataObject* obj, RootAddress* rootaddr ) {
320 MsgStream log( msgSvc(), "EvtRecTrackCnv" );
321 log << MSG::DEBUG << "EvtRecTrackCnv::DataObjectToTObject" << endmsg;
322
323 EvtRecTrackCol* evtRecTrackCol = dynamic_cast<EvtRecTrackCol*>( obj );
324 if ( !evtRecTrackCol )
325 {
326 log << MSG::ERROR << "Could not downcast to EvtRecTrackCol" << endmsg;
327 return StatusCode::FAILURE;
328 }
329
330 DataObject* evt = NULL;
331 StatusCode sc = m_eds->findObject( EventModel::EvtRec::Event, evt );
332 if ( sc.isFailure() )
333 {
334 log << MSG::ERROR << "Could not get EvtRecObject in TDS" << endmsg;
335 return StatusCode::FAILURE;
336 }
337 EvtRecObject* devtTds = dynamic_cast<EvtRecObject*>( evt );
338 if ( !devtTds )
339 { log << MSG::ERROR << "EvtRecTrackCnv: Could not downcast to TDS EvtRecObject" << endmsg; }
340
341 IOpaqueAddress* addr;
342 m_cnvSvc->getEvtRecCnv()->createRep( evt, addr );
343 TEvtRecObject* recEvt = m_cnvSvc->getEvtRecCnv()->getWriteObject();
344
345 const TObjArray* m_evtRecTrackCol = recEvt->getEvtRecTrackCol();
346 if ( !m_evtRecTrackCol ) return StatusCode::SUCCESS;
347
348 IDataProviderSvc* dataSvc = 0;
349 sc = serviceLocator()->getService( "EventDataSvc", IDataProviderSvc::interfaceID(),
350 (IInterface*&)dataSvc );
351 if ( sc.isFailure() )
352 {
353 log << MSG::FATAL << "Could not get EventDataSvc in EvtRecTrackCnv" << endmsg;
354 return sc;
355 }
356
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;
364
365 SmartDataPtr<RecMdcTrackCol> mdcTrackCol( dataSvc, EventModel::Recon::RecMdcTrackCol );
366 if ( !mdcTrackCol ) { log << MSG::INFO << "Could not find RecMdcTrackCol" << endmsg; }
367 else
368 {
369 mdcTrackColbegin = mdcTrackCol->begin();
370 mdcTrackColend = mdcTrackCol->end();
371 }
372
373 SmartDataPtr<RecMdcKalTrackCol> mdcKalTrackCol( dataSvc,
375 if ( !mdcKalTrackCol ) { log << MSG::INFO << "Could not find RecMdcKalTrackCol" << endmsg; }
376 else
377 {
378 mdcKalTrackColbegin = mdcKalTrackCol->begin();
379 mdcKalTrackColend = mdcKalTrackCol->end();
380 }
381
382 SmartDataPtr<RecMdcDedxCol> mdcDedxCol( dataSvc, EventModel::Recon::RecMdcDedxCol );
383 if ( !mdcDedxCol ) { log << MSG::INFO << "Could not find RecMdcDedxCol" << endmsg; }
384 else
385 {
386 mdcDedxColbegin = mdcDedxCol->begin();
387 mdcDedxColend = mdcDedxCol->end();
388 }
389
390 SmartDataPtr<RecExtTrackCol> extTrackCol( dataSvc, EventModel::Recon::RecExtTrackCol );
391 if ( !extTrackCol ) { log << MSG::INFO << "Could not find RecExtTrackCol" << endmsg; }
392 else
393 {
394 extTrackColbegin = extTrackCol->begin();
395 extTrackColend = extTrackCol->end();
396 }
397
398 SmartDataPtr<RecTofTrackCol> tofTrackCol( dataSvc, EventModel::Recon::RecTofTrackCol );
399 if ( !tofTrackCol ) { log << MSG::INFO << "Could not find RecTofTrackCol" << endmsg; }
400 else
401 {
402 tofTrackColbegin = tofTrackCol->begin();
403 tofTrackColend = tofTrackCol->end();
404 }
405
406 SmartDataPtr<RecEmcShowerCol> emcShowerCol( dataSvc, EventModel::Recon::RecEmcShowerCol );
407 if ( !emcShowerCol ) { log << MSG::INFO << "Could not find RecEmcShowerCol" << endmsg; }
408 else
409 {
410 emcShowerColbegin = emcShowerCol->begin();
411 emcShowerColend = emcShowerCol->end();
412 }
413
414 SmartDataPtr<RecMucTrackCol> mucTrackCol( dataSvc, EventModel::Recon::RecMucTrackCol );
415 if ( !mucTrackCol ) { log << MSG::INFO << "Could not find RecMucTrackCol" << endmsg; }
416 else
417 {
418 mucTrackColbegin = mucTrackCol->begin();
419 mucTrackColend = mucTrackCol->end();
420 }
421
422 // convert
423 recEvt->clearEvtRecTrackCol();
424 EvtRecTrackCol::const_iterator evtRecTrack = evtRecTrackCol->begin();
425
426 for ( ; evtRecTrack != evtRecTrackCol->end(); evtRecTrack++ )
427 {
428 EvtRecTrack* ptr = *evtRecTrack;
429 TEvtRecTrack* evtRecTrackRoot = new TEvtRecTrack();
430 // set ...
431 evtRecTrackRoot->setTrackId( ptr->trackId() );
432 evtRecTrackRoot->setPartId( ptr->partId() );
433 evtRecTrackRoot->setQuality( ptr->quality() );
434
435 if ( ptr->isMdcTrackValid() )
436 {
437 RecMdcTrackCol::iterator it = find( mdcTrackColbegin, mdcTrackColend, ptr->mdcTrack() );
438 evtRecTrackRoot->setMdcTrackId( it - mdcTrackColbegin );
439 }
440 if ( ptr->isMdcKalTrackValid() )
441 {
442 RecMdcKalTrackCol::iterator it =
443 find( mdcKalTrackColbegin, mdcKalTrackColend, ptr->mdcKalTrack() );
444 evtRecTrackRoot->setMdcKalTrackId( it - mdcKalTrackColbegin );
445 }
446 if ( ptr->isMdcDedxValid() )
447 {
448 RecMdcDedxCol::iterator it = find( mdcDedxColbegin, mdcDedxColend, ptr->mdcDedx() );
449 evtRecTrackRoot->setMdcDedxId( it - mdcDedxColbegin );
450 }
451 if ( ptr->isExtTrackValid() )
452 {
453 RecExtTrackCol::iterator it = find( extTrackColbegin, extTrackColend, ptr->extTrack() );
454 evtRecTrackRoot->setExtTrackId( it - extTrackColbegin );
455 }
456 if ( ptr->isTofTrackValid() )
457 {
458 SmartRefVector<RecTofTrack> tofTrackVec = ptr->tofTrack();
459 for ( unsigned int i = 0; i < tofTrackVec.size(); i++ )
460 {
461 RecTofTrackCol::iterator it = find( tofTrackColbegin, tofTrackColend, tofTrackVec[i] );
462 evtRecTrackRoot->addTofTrackId( it - tofTrackColbegin );
463 }
464 }
465 if ( ptr->isEmcShowerValid() )
466 {
467 RecEmcShowerCol::iterator it =
468 find( emcShowerColbegin, emcShowerColend, ptr->emcShower() );
469 evtRecTrackRoot->setEmcShowerId( it - emcShowerColbegin );
470 }
471 if ( ptr->isMucTrackValid() )
472 {
473 RecMucTrackCol::iterator it = find( mucTrackColbegin, mucTrackColend, ptr->mucTrack() );
474 evtRecTrackRoot->setMucTrackId( it - mucTrackColbegin );
475 }
476
477 recEvt->addEvtRecTrack( evtRecTrackRoot );
478 }
479
480 return StatusCode::SUCCESS;
481}
ObjectVector< RecEmcShower > RecEmcShowerCol
ObjectVector< EvtRecTrack > EvtRecTrackCol
ObjectVector< RecExtTrack > RecExtTrackCol
IMessageSvc * msgSvc()
EvtRecTrackCnv(ISvcLocator *svc)
virtual StatusCode TObjectToDataObject(DataObject *&obj)
transformation from root
virtual StatusCode DataObjectToTObject(DataObject *obj, RootAddress *addr)
transformation to root
void setMdcKalTrack(const RecMdcKalTrack *trk)
SmartRefVector< RecTofTrack > tofTrack()
void setEmcShower(const RecEmcShower *shower)
void addTofTrack(const SmartRef< RecTofTrack > trk)
Definition of a Root address, derived from IOpaqueAddress.
IDataProviderSvc * m_eds
pointer to eventdataservice
std::vector< void * > m_adresses
each converter knows the corresponding adresses
std::string m_rootBranchname
root branchname (may be concatenated of severals)
RootEventBaseCnv(const CLID &clid, ISvcLocator *svc)
void addEvtRecTrack(TEvtRecTrack *track)
const std::vector< Int_t > & tofTrackIds() const