BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtRecTrackCnv Class Reference

#include <EvtRecTrackCnv.h>

Inheritance diagram for EvtRecTrackCnv:

Public Member Functions

virtual ~EvtRecTrackCnv ()
 EvtRecTrackCnv (ISvcLocator *svc)
virtual StatusCode DataObjectToTObject (DataObject *obj, RootAddress *addr)
 transformation to root
virtual StatusCode TObjectToDataObject (DataObject *&obj)
 transformation from root
virtual ~EvtRecTrackCnv ()
 EvtRecTrackCnv (ISvcLocator *svc)
virtual StatusCode DataObjectToTObject (DataObject *obj, RootAddress *addr)
 transformation to root
virtual StatusCode TObjectToDataObject (DataObject *&obj)
 transformation from root
virtual ~EvtRecTrackCnv ()
 EvtRecTrackCnv (ISvcLocator *svc)
virtual StatusCode DataObjectToTObject (DataObject *obj, RootAddress *addr)
 transformation to root
virtual StatusCode TObjectToDataObject (DataObject *&obj)
 transformation from root
Public Member Functions inherited from RootEventBaseCnv
 RootEventBaseCnv (const CLID &clid, ISvcLocator *svc)
virtual ~RootEventBaseCnv ()
virtual long repSvcType () const
virtual StatusCode initialize ()
virtual StatusCode finalize ()
void declareObject (const std::string &fullPath, const CLID &clid, const std::string &treename, const std::string &branchname)
 Store TDS path to link a particular converter to an object on the TDS.
virtual StatusCode createObj (IOpaqueAddress *addr, DataObject *&dat)
 Convert the persistent object to transient.
virtual StatusCode createRep (DataObject *pObject, IOpaqueAddress *&refpAddress)
 Convert the transient object to the requested representation.
virtual StatusCode fillRepRefs (IOpaqueAddress *pAddress, DataObject *pObject)
 Resolve the references of the converted object.
virtual StatusCode fillObjRefs (IOpaqueAddress *pAddress, DataObject *pObject)
 Resolve the references of the converted object.
TObject * getReadObject () const
 get the object to be read
 RootEventBaseCnv (const CLID &clid, ISvcLocator *svc)
virtual ~RootEventBaseCnv ()
virtual long repSvcType () const
virtual StatusCode initialize ()
virtual StatusCode finalize ()
void declareObject (const std::string &fullPath, const CLID &clid, const std::string &treename, const std::string &branchname)
 Store TDS path to link a particular converter to an object on the TDS.
virtual StatusCode createObj (IOpaqueAddress *addr, DataObject *&dat)
 Convert the persistent object to transient.
virtual StatusCode createRep (DataObject *pObject, IOpaqueAddress *&refpAddress)
 Convert the transient object to the requested representation.
virtual StatusCode fillRepRefs (IOpaqueAddress *pAddress, DataObject *pObject)
 Resolve the references of the converted object.
virtual StatusCode fillObjRefs (IOpaqueAddress *pAddress, DataObject *pObject)
 Resolve the references of the converted object.
TObject * getReadObject () const
 get the object to be read
 RootEventBaseCnv (const CLID &clid, ISvcLocator *svc)
virtual ~RootEventBaseCnv ()
virtual long repSvcType () const
virtual StatusCode initialize ()
virtual StatusCode finalize ()
void declareObject (const std::string &fullPath, const CLID &clid, const std::string &treename, const std::string &branchname)
 Store TDS path to link a particular converter to an object on the TDS.
virtual StatusCode createObj (IOpaqueAddress *addr, DataObject *&dat)
 Convert the persistent object to transient.
virtual StatusCode createRep (DataObject *pObject, IOpaqueAddress *&refpAddress)
 Convert the transient object to the requested representation.
virtual StatusCode fillRepRefs (IOpaqueAddress *pAddress, DataObject *pObject)
 Resolve the references of the converted object.
virtual StatusCode fillObjRefs (IOpaqueAddress *pAddress, DataObject *pObject)
 Resolve the references of the converted object.
TObject * getReadObject () const
 get the object to be read
Public Member Functions inherited from Converter< Ty1, Ty2 >
destinationoperator (const source &) const
destinationoperator (const source &) const
destinationoperator (const source &) const

Static Public Member Functions

static const CLID & classID ()
static const CLID & classID ()
static const CLID & classID ()
Static Public Member Functions inherited from RootEventBaseCnv
static const unsigned char storageType ()
 Storage type and class ID.
static const unsigned char storageType ()
 Storage type and class ID.
static const unsigned char storageType ()
 Storage type and class ID.

Friends

class CnvFactory< EvtRecTrackCnv >

Additional Inherited Members

Public Types inherited from Converter< Ty1, Ty2 >
typedef Ty1 source
typedef Ty2 destination
typedef Ty1 source
typedef Ty2 destination
typedef Ty1 source
typedef Ty2 destination
Protected Member Functions inherited from Converter< Ty1, Ty2 >
virtual destinationconvert (const source &) const =0
virtual destinationconvert (const source &) const =0
virtual destinationconvert (const source &) const =0
Protected Attributes inherited from RootEventBaseCnv
IRootCnvSvcm_cnvSvc
std::vector< RootCnvSvc::Leafm_leaves
RootInterfacem_rootInterface
 pointer to the RootInterface
IDataProviderSvc * m_eds
 pointer to eventdataservice
int m_branchNr
 the branchNr of this converter for writing
int m_branchNrDst
int m_branchNrMc
int m_branchNrRecon
int m_branchNrEvtRec
int m_branchNrEvtHeader
int m_branchNrEvtNavigator
TObject * m_objRead
 the object that was read
CLID CLID_top
 the CLID of the upper converter if any
TArrayS * m_branchNumbers
 array with number of branches for reading
std::string m_rootBranchname
 root branchname (may be concatenated of severals)
std::string m_rootTreename
 each converter knows it's treename
std::string m_currentFileName
std::vector< void * > m_adresses
 each converter knows the corresponding adresses
RootEvtSelectorm_evtsel

Detailed Description

Constructor & Destructor Documentation

◆ ~EvtRecTrackCnv() [1/3]

virtual EvtRecTrackCnv::~EvtRecTrackCnv ( )
inlinevirtual

◆ EvtRecTrackCnv() [1/3]

EvtRecTrackCnv::EvtRecTrackCnv ( ISvcLocator * svc)

Definition at line 15 of file EvtRecTrackCnv.cxx.

15 : RootEventBaseCnv( classID(), svc ) {
16 m_rootBranchname = "m_evtRecTrackCol";
17 m_adresses.push_back( &m_evtRecTrackCol );
18 m_evtRecTrackCol = 0;
19}
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)

◆ ~EvtRecTrackCnv() [2/3]

virtual EvtRecTrackCnv::~EvtRecTrackCnv ( )
inlinevirtual

◆ EvtRecTrackCnv() [2/3]

EvtRecTrackCnv::EvtRecTrackCnv ( ISvcLocator * svc)

◆ ~EvtRecTrackCnv() [3/3]

virtual EvtRecTrackCnv::~EvtRecTrackCnv ( )
inlinevirtual

◆ EvtRecTrackCnv() [3/3]

EvtRecTrackCnv::EvtRecTrackCnv ( ISvcLocator * svc)

Member Function Documentation

◆ classID() [1/3]

const CLID & EvtRecTrackCnv::classID ( )
inlinestatic

Definition at line 19 of file Event/RootCnvSvc/include/RootCnvSvc/EvtRec/EvtRecTrackCnv.h.

19{ return CLID_EvtRecTrackCol; }
const CLID & CLID_EvtRecTrackCol

Referenced by RootCnvSvc::createConverter(), and EvtRecTrackCnv().

◆ classID() [2/3]

const CLID & EvtRecTrackCnv::classID ( )
inlinestatic

◆ classID() [3/3]

const CLID & EvtRecTrackCnv::classID ( )
inlinestatic

◆ DataObjectToTObject() [1/3]

StatusCode EvtRecTrackCnv::DataObjectToTObject ( DataObject * obj,
RootAddress * addr )
virtual

transformation to root

Implements RootEventBaseCnv.

Definition at line 319 of file EvtRecTrackCnv.cxx.

319 {
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< EvtRecTrack > EvtRecTrackCol
IMessageSvc * msgSvc()
SmartRefVector< RecTofTrack > tofTrack()
IDataProviderSvc * m_eds
pointer to eventdataservice
void addEvtRecTrack(TEvtRecTrack *track)

◆ DataObjectToTObject() [2/3]

virtual StatusCode EvtRecTrackCnv::DataObjectToTObject ( DataObject * obj,
RootAddress * addr )
virtual

transformation to root

Implements RootEventBaseCnv.

◆ DataObjectToTObject() [3/3]

virtual StatusCode EvtRecTrackCnv::DataObjectToTObject ( DataObject * obj,
RootAddress * addr )
virtual

transformation to root

Implements RootEventBaseCnv.

◆ TObjectToDataObject() [1/3]

StatusCode EvtRecTrackCnv::TObjectToDataObject ( DataObject *& obj)
virtual

transformation from root

Implements RootEventBaseCnv.

Definition at line 21 of file EvtRecTrackCnv.cxx.

21 {
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}
ObjectVector< RecEmcShower > RecEmcShowerCol
ObjectVector< RecExtTrack > RecExtTrackCol
void setMdcKalTrack(const RecMdcKalTrack *trk)
void setEmcShower(const RecEmcShower *shower)
void addTofTrack(const SmartRef< RecTofTrack > trk)
const std::vector< Int_t > & tofTrackIds() const

◆ TObjectToDataObject() [2/3]

virtual StatusCode EvtRecTrackCnv::TObjectToDataObject ( DataObject *& obj)
virtual

transformation from root

Implements RootEventBaseCnv.

◆ TObjectToDataObject() [3/3]

virtual StatusCode EvtRecTrackCnv::TObjectToDataObject ( DataObject *& obj)
virtual

transformation from root

Implements RootEventBaseCnv.

◆ CnvFactory< EvtRecTrackCnv >

friend class CnvFactory< EvtRecTrackCnv >
friend

The documentation for this class was generated from the following files: