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

#include <MdcKalTrackCnv.h>

Inheritance diagram for MdcKalTrackCnv:

Public Member Functions

virtual ~MdcKalTrackCnv ()
 MdcKalTrackCnv (ISvcLocator *svc)
virtual StatusCode DataObjectToTObject (DataObject *obj, RootAddress *addr)
 transformation to root
virtual StatusCode TObjectToDataObject (DataObject *&obj)
 transformation from root
virtual ~MdcKalTrackCnv ()
 MdcKalTrackCnv (ISvcLocator *svc)
virtual StatusCode DataObjectToTObject (DataObject *obj, RootAddress *addr)
 transformation to root
virtual StatusCode TObjectToDataObject (DataObject *&obj)
 transformation from root
virtual ~MdcKalTrackCnv ()
 MdcKalTrackCnv (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< MdcKalTrackCnv >

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

◆ ~MdcKalTrackCnv() [1/3]

virtual MdcKalTrackCnv::~MdcKalTrackCnv ( )
inlinevirtual

◆ MdcKalTrackCnv() [1/3]

MdcKalTrackCnv::MdcKalTrackCnv ( ISvcLocator * svc)

Definition at line 32 of file MdcKalTrackCnv.cxx.

32 : RootEventBaseCnv( classID(), svc ) {
33 // Here we associate this converter with the /Event path on the TDS.
34 MsgStream log( msgSvc(), "MdcKalTrackCnv" );
35 m_rootBranchname = "m_mdcKalTrackCol";
36 m_adresses.push_back( &m_mdcKalTrackCol );
37 m_mdcKalTrackCol = 0;
38}
IMessageSvc * msgSvc()
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)

◆ ~MdcKalTrackCnv() [2/3]

virtual MdcKalTrackCnv::~MdcKalTrackCnv ( )
inlinevirtual

◆ MdcKalTrackCnv() [2/3]

MdcKalTrackCnv::MdcKalTrackCnv ( ISvcLocator * svc)

◆ ~MdcKalTrackCnv() [3/3]

virtual MdcKalTrackCnv::~MdcKalTrackCnv ( )
inlinevirtual

◆ MdcKalTrackCnv() [3/3]

MdcKalTrackCnv::MdcKalTrackCnv ( ISvcLocator * svc)

Member Function Documentation

◆ classID() [1/3]

const CLID & MdcKalTrackCnv::classID ( )
inlinestatic

Definition at line 19 of file Event/RootCnvSvc/include/RootCnvSvc/Dst/MdcKalTrackCnv.h.

19{ return CLID_DstMdcKalTrackCol; }
const CLID & CLID_DstMdcKalTrackCol

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

◆ classID() [2/3]

const CLID & MdcKalTrackCnv::classID ( )
inlinestatic

◆ classID() [3/3]

const CLID & MdcKalTrackCnv::classID ( )
inlinestatic

◆ DataObjectToTObject() [1/3]

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

transformation to root

Implements RootEventBaseCnv.

Definition at line 304 of file MdcKalTrackCnv.cxx.

304 {
305
306 MsgStream log( msgSvc(), "MdcKalTrackCnv" );
307 log << MSG::DEBUG << "MdcKalTrackCnv::DataObjectToTObject" << endmsg;
308 StatusCode sc = StatusCode::SUCCESS;
309
310 DstMdcKalTrackCol* mdcKalTrackColTds = dynamic_cast<DstMdcKalTrackCol*>( obj );
311 // RecMdcKalTrackCol * mdcKalTrackColTds=dynamic_cast<RecMdcKalTrackCol *> (obj);
312 if ( !mdcKalTrackColTds )
313 {
314 log << MSG::ERROR << "Could not downcast to DstMdcKalTrackCol" << endmsg;
315 return StatusCode::FAILURE;
316 }
317
318 DataObject* evt;
319 m_eds->findObject( EventModel::Dst::Event, evt );
320 if ( evt == NULL )
321 {
322 log << MSG::ERROR << "Could not get ReconEvent in TDS " << endmsg;
323 return StatusCode::FAILURE;
324 }
325
326 DstEvent* devtTds = dynamic_cast<DstEvent*>( evt );
327 if ( !devtTds )
328 { log << MSG::ERROR << "MdcKalTrackCnv:Could not downcast to TDS Dst Event" << endmsg; }
329 IOpaqueAddress* addr;
330
331 m_cnvSvc->getDstCnv()->createRep( evt, addr );
332 TDstEvent* recEvt = m_cnvSvc->getDstCnv()->getWriteObject();
333
334 const TObjArray* m_mdcKalTrackCol = recEvt->getMdcKalTrackCol();
335
336 if ( !m_mdcKalTrackCol ) return sc;
337
338 recEvt->clearMdcKalTrackCol(); // necessary in case there is I/O at the same time since array
339 // is static
340 DstMdcKalTrackCol::const_iterator mdcKalTrackTds;
341
342 for ( mdcKalTrackTds = mdcKalTrackColTds->begin();
343 mdcKalTrackTds != mdcKalTrackColTds->end(); mdcKalTrackTds++ )
344 {
345
346 // Get Data from DST
347
348 // Double_t poca[3];
349 Double_t zhelix[5];
350 Double_t zerror[5][5];
351
352 // Double_t poca_e[3];
353 Double_t zhelix_e[5];
354 Double_t zerror_e[5][5];
355
356 // Double_t poca_mu[3];
357 Double_t zhelix_mu[5];
358 Double_t zerror_mu[5][5];
359
360 // Double_t poca_k[3];
361 Double_t zhelix_k[5];
362 Double_t zerror_k[5][5];
363
364 // Double_t poca_p[3];
365 Double_t zhelix_p[5];
366 Double_t zerror_p[5][5];
367
368 Double_t fhelix[5];
369 Double_t ferror[5][5];
370 Double_t fhelix_e[5];
371 Double_t ferror_e[5][5];
372 Double_t fhelix_mu[5];
373 Double_t ferror_mu[5][5];
374 Double_t fhelix_k[5];
375 Double_t ferror_k[5][5];
376 Double_t fhelix_p[5];
377 Double_t ferror_p[5][5];
378
379 TMdcKalTrack* mdcKalTrackRoot = new TMdcKalTrack();
380 // m_common.m_mdcKalTrackMap[(*mdcKalTrackTds)] = mdcKalTrackRoot;
381 RecMdcKalTrack* recMdcKalTrackTds = (RecMdcKalTrack*)( *mdcKalTrackTds );
382
383 for ( int k = 0; k < 5; k++ )
384 {
385 mdcKalTrackRoot->setStat( ( *mdcKalTrackTds )->getStat( k ), k );
386 mdcKalTrackRoot->setStat2( recMdcKalTrackTds->getStat( 1, k ), k );
387 mdcKalTrackRoot->setChisq( ( *mdcKalTrackTds )->getChisq( k ), k );
388 mdcKalTrackRoot->setNdf( ( *mdcKalTrackTds )->getNdf( k ), k );
389 mdcKalTrackRoot->setNlayer( ( *mdcKalTrackTds )->getNlayer( k ), k );
390 // o mdcKalTrackRoot->setNster((*mdcKalTrackTds)->getNster(k),k);
391 // o mdcKalTrackRoot->setFirstLayer((*mdcKalTrackTds)->getFirstLayer(k),k);
392 // o mdcKalTrackRoot->setLastLayer((*mdcKalTrackTds)->getLastLayer(k),k);
393 }
394
395 // HepPoint3D h_poca = (*mdcKalTrackTds)->getPoca(2);
396 HepVector h_zhelix = ( *mdcKalTrackTds )->getZHelix( 2 );
397 HepSymMatrix h_zerror = ( *mdcKalTrackTds )->getZError( 2 );
398
399 // HepPoint3D h_poca_e = (*mdcKalTrackTds)->getPoca(0);
400 HepVector h_zhelix_e = ( *mdcKalTrackTds )->getZHelix( 0 );
401 HepSymMatrix h_zerror_e = ( *mdcKalTrackTds )->getZError( 0 );
402
403 // HepPoint3D h_poca_mu = (*mdcKalTrackTds)->getPoca(1);
404 HepVector h_zhelix_mu = ( *mdcKalTrackTds )->getZHelix( 1 );
405 HepSymMatrix h_zerror_mu = ( *mdcKalTrackTds )->getZError( 1 );
406
407 // HepPoint3D h_poca_k = (*mdcKalTrackTds)->getPoca(3);
408 HepVector h_zhelix_k = ( *mdcKalTrackTds )->getZHelix( 3 );
409 HepSymMatrix h_zerror_k = ( *mdcKalTrackTds )->getZError( 3 );
410
411 // HepPoint3D h_poca_p = (*mdcKalTrackTds)->getPoca(4);
412 HepVector h_zhelix_p = ( *mdcKalTrackTds )->getZHelix( 4 );
413 HepSymMatrix h_zerror_p = ( *mdcKalTrackTds )->getZError( 4 );
414
415 HepVector h_fhelix = ( *mdcKalTrackTds )->getFHelix( 2 );
416 HepSymMatrix h_ferror = ( *mdcKalTrackTds )->getFError( 2 );
417 HepVector h_fhelix_e = ( *mdcKalTrackTds )->getFHelix( 0 );
418 HepSymMatrix h_ferror_e = ( *mdcKalTrackTds )->getFError( 0 );
419 HepVector h_fhelix_mu = ( *mdcKalTrackTds )->getFHelix( 1 );
420 HepSymMatrix h_ferror_mu = ( *mdcKalTrackTds )->getFError( 1 );
421 HepVector h_fhelix_k = ( *mdcKalTrackTds )->getFHelix( 3 );
422 HepSymMatrix h_ferror_k = ( *mdcKalTrackTds )->getFError( 3 );
423 HepVector h_fhelix_p = ( *mdcKalTrackTds )->getFHelix( 4 );
424 HepSymMatrix h_ferror_p = ( *mdcKalTrackTds )->getFError( 4 );
425
426 mdcKalTrackRoot->setTrackId( ( *mdcKalTrackTds )->getTrackId() );
427
428 /*
429 for(int k=0; k<3; k++){
430 poca[k] = h_poca[k];
431 poca_e[k] = h_poca_e[k];
432 poca_mu[k] = h_poca_mu[k];
433 poca_k[k] = h_poca_k[k];
434 poca_p[k] = h_poca_p[k];
435 }
436 */
437
438 for ( int i = 0; i < 5; i++ )
439 {
440 zhelix[i] = h_zhelix[i];
441 zhelix_e[i] = h_zhelix_e[i];
442 zhelix_mu[i] = h_zhelix_mu[i];
443 zhelix_p[i] = h_zhelix_p[i];
444 zhelix_k[i] = h_zhelix_k[i];
445 fhelix[i] = h_fhelix[i];
446 fhelix_e[i] = h_fhelix_e[i];
447 fhelix_mu[i] = h_fhelix_mu[i];
448 fhelix_p[i] = h_fhelix_p[i];
449 fhelix_k[i] = h_fhelix_k[i];
450 for ( int j = 0; j <= i; j++ )
451 {
452 zerror[i][j] = h_zerror[i][j];
453 zerror_e[i][j] = h_zerror_e[i][j];
454 zerror_mu[i][j] = h_zerror_mu[i][j];
455 zerror_p[i][j] = h_zerror_p[i][j];
456 zerror_k[i][j] = h_zerror_k[i][j];
457 zerror[j][i] = h_zerror[i][j];
458 zerror_e[j][i] = h_zerror_e[i][j];
459 zerror_mu[j][i] = h_zerror_mu[i][j];
460 zerror_p[j][i] = h_zerror_p[i][j];
461 zerror_k[j][i] = h_zerror_k[i][j];
462 ferror[i][j] = h_ferror[i][j];
463 ferror_e[i][j] = h_ferror_e[i][j];
464 ferror_mu[i][j] = h_ferror_mu[i][j];
465 ferror_p[i][j] = h_ferror_p[i][j];
466 ferror_k[i][j] = h_ferror_k[i][j];
467 ferror[j][i] = h_ferror[i][j];
468 ferror_e[j][i] = h_ferror_e[i][j];
469 ferror_mu[j][i] = h_ferror_mu[i][j];
470 ferror_p[j][i] = h_ferror_p[i][j];
471 ferror_k[j][i] = h_ferror_k[i][j];
472 }
473 }
474
475 // mdcKalTrackRoot->setPoca(poca);
476 mdcKalTrackRoot->setZHelix( zhelix );
477 mdcKalTrackRoot->setZError( zerror );
478
479 // mdcKalTrackRoot->setPocaE(poca_e);
480 mdcKalTrackRoot->setZHelixE( zhelix_e );
481 mdcKalTrackRoot->setZErrorE( zerror_e );
482
483 // mdcKalTrackRoot->setPocaMu(poca_mu);
484 mdcKalTrackRoot->setZHelixMu( zhelix_mu );
485 mdcKalTrackRoot->setZErrorMu( zerror_mu );
486
487 // mdcKalTrackRoot->setPocaK(poca_k);
488 mdcKalTrackRoot->setZHelixK( zhelix_k );
489 mdcKalTrackRoot->setZErrorK( zerror_k );
490
491 // mdcKalTrackRoot->setPocaP(poca_p);
492 mdcKalTrackRoot->setZHelixP( zhelix_p );
493 mdcKalTrackRoot->setZErrorP( zerror_p );
494
495 mdcKalTrackRoot->setFHelix( fhelix );
496 mdcKalTrackRoot->setFError( ferror );
497
498 mdcKalTrackRoot->setFHelixE( fhelix_e );
499 mdcKalTrackRoot->setFErrorE( ferror_e );
500
501 mdcKalTrackRoot->setFHelixMu( fhelix_mu );
502 mdcKalTrackRoot->setFErrorMu( ferror_mu );
503
504 mdcKalTrackRoot->setFHelixK( fhelix_k );
505 mdcKalTrackRoot->setFErrorK( ferror_k );
506
507 mdcKalTrackRoot->setFHelixP( fhelix_p );
508 mdcKalTrackRoot->setFErrorP( ferror_p );
509
510 recEvt->addMdcKalTrack( mdcKalTrackRoot );
511 }
512
513 return StatusCode::SUCCESS;
514}
ObjectVector< DstMdcKalTrack > DstMdcKalTrackCol
IDataProviderSvc * m_eds
pointer to eventdataservice
void addMdcKalTrack(TMdcKalTrack *Track)
void setNdf(const Int_t ndf, const Int_t pid)
void setZErrorMu(const Double_t zerror_mu[5][5])
void setFErrorP(const Double_t ferror_p[5][5])
void setChisq(const Double_t chisq, const Int_t pid)
void setZErrorP(const Double_t zerror_p[5][5])
void setZErrorE(const Double_t zerror_e[5][5])
void setZErrorK(const Double_t zerror_k[5][5])
void setNlayer(const Int_t nlayer, const Int_t pid)
void setFErrorMu(const Double_t ferror_mu[5][5])
void setFErrorK(const Double_t ferror_k[5][5])
void setStat2(const Int_t stat, const Int_t pid)
void setStat(const Int_t stat, const Int_t pid)
void setFErrorE(const Double_t ferror_e[5][5])

◆ DataObjectToTObject() [2/3]

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

transformation to root

Implements RootEventBaseCnv.

◆ DataObjectToTObject() [3/3]

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

transformation to root

Implements RootEventBaseCnv.

◆ TObjectToDataObject() [1/3]

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

transformation from root

Implements RootEventBaseCnv.

Definition at line 40 of file MdcKalTrackCnv.cxx.

40 {
41 // creation of TDS object from root object
42
43 MsgStream log( msgSvc(), "MdcKalTrackCnv" );
44 log << MSG::DEBUG << "MdcKalTrackCnv::TObjectToDataObject" << endmsg;
45 StatusCode sc = StatusCode::SUCCESS;
46
47 // create the TDS location for the MdcKalTrack Collection
48 DstMdcKalTrackCol* mdcKalTrackTdsCol = new DstMdcKalTrackCol;
49 refpObject = mdcKalTrackTdsCol;
50
51 // now convert
52 if ( !m_mdcKalTrackCol ) return sc;
53 TIter mdcKalTrackIter( m_mdcKalTrackCol );
54 TMdcKalTrack* mdcKalTrackRoot = 0;
55 while ( ( mdcKalTrackRoot = (TMdcKalTrack*)mdcKalTrackIter.Next() ) )
56 {
57 std::vector<HepVector> zhelixs;
58 std::vector<HepSymMatrix> zerrors;
59 std::vector<HepPoint3D> pocas;
60 std::vector<HepVector> fhelixs;
61 std::vector<HepSymMatrix> ferrors;
62
63 HepVector zhelix( 5 );
64 HepSymMatrix zerror( 5 );
65 HepPoint3D poca( 0, 0, 0 );
66
67 HepVector zhelix_e( 5 );
68 HepSymMatrix zerror_e( 5 );
69 HepPoint3D poca_e( 0, 0, 0 );
70
71 HepVector zhelix_mu( 5 );
72 HepSymMatrix zerror_mu( 5 );
73 HepPoint3D poca_mu( 0, 0, 0 );
74
75 HepVector zhelix_k( 5 );
76 HepSymMatrix zerror_k( 5 );
77 HepPoint3D poca_k( 0, 0, 0 );
78
79 HepVector zhelix_p( 5 );
80 HepSymMatrix zerror_p( 5 );
81 HepPoint3D poca_p( 0, 0, 0 );
82
83 HepVector fhelix( 5 );
84 HepSymMatrix ferror( 5 );
85
86 HepVector fhelix_e( 5 );
87 HepSymMatrix ferror_e( 5 );
88
89 HepVector fhelix_mu( 5 );
90 HepSymMatrix ferror_mu( 5 );
91
92 HepVector fhelix_k( 5 );
93 HepSymMatrix ferror_k( 5 );
94
95 HepVector fhelix_p( 5 );
96 HepSymMatrix ferror_p( 5 );
97
98 DstMdcKalTrack* mdcKalTrackTds = new DstMdcKalTrack();
99 m_common.m_rootMdcKalTrackMap[mdcKalTrackRoot] = mdcKalTrackTds;
100
101 /*
102 for(int ii=0; ii<3; ii++){
103 poca_e[ii] = mdcKalTrackRoot->getPocaE(ii);
104 poca_mu[ii] = mdcKalTrackRoot->getPocaMu(ii);
105 poca[ii] = mdcKalTrackRoot->getPoca(ii);
106 poca_k[ii] = mdcKalTrackRoot->getPocaK(ii);
107 poca_p[ii] = mdcKalTrackRoot->getPocaP(ii);
108 }
109 */
110
111 log << MSG::DEBUG << "T to DST, poca: " << poca << endmsg;
112
113 for ( int i = 0; i < 5; i++ )
114 {
115 zhelix[i] = mdcKalTrackRoot->getZHelix( i );
116 zhelix_e[i] = mdcKalTrackRoot->getZHelixE( i );
117 zhelix_mu[i] = mdcKalTrackRoot->getZHelixMu( i );
118 zhelix_k[i] = mdcKalTrackRoot->getZHelixK( i );
119 zhelix_p[i] = mdcKalTrackRoot->getZHelixP( i );
120
121 fhelix[i] = mdcKalTrackRoot->getFHelix( i );
122 fhelix_e[i] = mdcKalTrackRoot->getFHelixE( i );
123 fhelix_mu[i] = mdcKalTrackRoot->getFHelixMu( i );
124 fhelix_k[i] = mdcKalTrackRoot->getFHelixK( i );
125 fhelix_p[i] = mdcKalTrackRoot->getFHelixP( i );
126
127 for ( int j = 0; j <= i; j++ )
128 {
129 zerror[i][j] = mdcKalTrackRoot->getZError( i, j );
130 zerror_e[i][j] = mdcKalTrackRoot->getZErrorE( i, j );
131 zerror_mu[i][j] = mdcKalTrackRoot->getZErrorMu( i, j );
132 zerror_k[i][j] = mdcKalTrackRoot->getZErrorK( i, j );
133 zerror_p[i][j] = mdcKalTrackRoot->getZErrorP( i, j );
134
135 zerror[j][i] = zerror[i][j];
136 zerror_e[j][i] = zerror_e[i][j];
137 zerror_mu[j][i] = zerror_mu[i][j];
138 zerror_k[j][i] = zerror_k[i][j];
139 zerror_p[j][i] = zerror_p[i][j];
140
141 ferror[i][j] = mdcKalTrackRoot->getFError( i, j );
142 ferror_e[i][j] = mdcKalTrackRoot->getFErrorE( i, j );
143 ferror_mu[i][j] = mdcKalTrackRoot->getFErrorMu( i, j );
144 ferror_k[i][j] = mdcKalTrackRoot->getFErrorK( i, j );
145 ferror_p[i][j] = mdcKalTrackRoot->getFErrorP( i, j );
146
147 ferror[j][i] = ferror[i][j];
148 ferror_e[j][i] = ferror_e[i][j];
149 ferror_mu[j][i] = ferror_mu[i][j];
150 ferror_k[j][i] = ferror_k[i][j];
151 ferror_p[j][i] = ferror_p[i][j];
152 }
153 }
154
155 double dr = zhelix[0];
156 double phi0 = zhelix[1];
157 double kappa = zhelix[2];
158 double dz = zhelix[3];
159 double tanl = zhelix[4];
160 poca[0] = dr * cos( phi0 );
161 poca[1] = dr * sin( phi0 );
162 poca[2] = dz;
163
164 dr = zhelix_e[0];
165 phi0 = zhelix_e[1];
166 kappa = zhelix_e[2];
167 dz = zhelix_e[3];
168 tanl = zhelix_e[4];
169 poca_e[0] = dr * cos( phi0 );
170 poca_e[1] = dr * sin( phi0 );
171 poca_e[2] = dz;
172
173 dr = zhelix_mu[0];
174 phi0 = zhelix_mu[1];
175 kappa = zhelix_mu[2];
176 dz = zhelix_mu[3];
177 tanl = zhelix_mu[4];
178 poca_mu[0] = dr * cos( phi0 );
179 poca_mu[1] = dr * sin( phi0 );
180 poca_mu[2] = dz;
181
182 dr = zhelix_k[0];
183 phi0 = zhelix_k[1];
184 kappa = zhelix_k[2];
185 dz = zhelix_k[3];
186 tanl = zhelix_k[4];
187 poca_k[0] = dr * cos( phi0 );
188 poca_k[1] = dr * sin( phi0 );
189 poca_k[2] = dz;
190
191 dr = zhelix_p[0];
192 phi0 = zhelix_p[1];
193 kappa = zhelix_p[2];
194 dz = zhelix_p[3];
195 tanl = zhelix_p[4];
196 poca_p[0] = dr * cos( phi0 );
197 poca_p[1] = dr * sin( phi0 );
198 poca_p[2] = dz;
199
200 log << MSG::DEBUG << "T to DST, zhelix: " << zhelix << endmsg;
201 log << MSG::DEBUG << "T to DST, zerror: " << zerror << endmsg;
202
203 zhelixs.push_back( zhelix_e );
204 zhelixs.push_back( zhelix_mu );
205 zhelixs.push_back( zhelix );
206 zhelixs.push_back( zhelix_k );
207 zhelixs.push_back( zhelix_p );
208 zerrors.push_back( zerror_e );
209 zerrors.push_back( zerror_mu );
210 zerrors.push_back( zerror );
211 zerrors.push_back( zerror_k );
212 zerrors.push_back( zerror_p );
213
214 fhelixs.push_back( fhelix_e );
215 fhelixs.push_back( fhelix_mu );
216 fhelixs.push_back( fhelix );
217 fhelixs.push_back( fhelix_k );
218 fhelixs.push_back( fhelix_p );
219 ferrors.push_back( ferror_e );
220 ferrors.push_back( ferror_mu );
221 ferrors.push_back( ferror );
222 ferrors.push_back( ferror_k );
223 ferrors.push_back( ferror_p );
224
225 pocas.push_back( poca_e );
226 pocas.push_back( poca_mu );
227 pocas.push_back( poca );
228 pocas.push_back( poca_k );
229 pocas.push_back( poca_p );
230
231 for ( int m = 0; m < 5; m++ )
232 {
233 int charge;
234 double pxy( 0. ), px( 0. ), py( 0. ), pz( 0. ), ptot( 0. ), dr( 0. ), phi0( 0. ),
235 kappa( 0. ), dz( 0. ), tanl( 0. ), x( 0. ), y( 0. ), z( 0. ), vx0( 0. ), vy0( 0. ),
236 vz0( 0. );
237 dr = zhelixs[m][0];
238 phi0 = zhelixs[m][1];
239 kappa = zhelixs[m][2];
240 dz = zhelixs[m][3];
241 tanl = zhelixs[m][4];
242
243 // x = pocas[m][0];
244 // y = pocas[m][1];
245 // z = pocas[m][2];
246
247 x = dr * cos( phi0 );
248 y = dr * sin( phi0 );
249 z = dz;
250
251 // std::cout<<"x: "<<x<<"y: "<<y<<"z: "<<z<<std::endl;
252
253 if ( kappa > 0.0000000001 ) charge = 1;
254 else if ( kappa < -0.0000000001 ) charge = -1;
255 else charge = 0;
256
257 if ( kappa != 0 ) pxy = 1.0 / fabs( kappa );
258 else pxy = 0;
259
260 px = pxy * ( -sin( phi0 ) );
261 py = pxy * cos( phi0 );
262 pz = pxy * tanl;
263 ptot = sqrt( px * px + py * py + pz * pz );
264
265 mdcKalTrackTds->setCharge( charge, m );
266 mdcKalTrackTds->setPxy( pxy, m );
267 mdcKalTrackTds->setPx( px, m );
268 mdcKalTrackTds->setPy( py, m );
269 mdcKalTrackTds->setPz( pz, m );
270 mdcKalTrackTds->setP( ptot, m );
271 mdcKalTrackTds->setTheta( acos( pz / ptot ), m );
272 mdcKalTrackTds->setPhi( atan2( py, px ), m );
273 mdcKalTrackTds->setX( x, m );
274 mdcKalTrackTds->setY( y, m );
275 mdcKalTrackTds->setZ( z, m );
276 mdcKalTrackTds->setR( sqrt( x * x + y * y ), m );
277
278 mdcKalTrackTds->setStat( mdcKalTrackRoot->getStat( m ), 0, m );
279 mdcKalTrackTds->setStat( mdcKalTrackRoot->getStat2( m ), 1, m );
280 mdcKalTrackTds->setChisq( mdcKalTrackRoot->getChisq( m ), 0, m );
281 mdcKalTrackTds->setNdf( mdcKalTrackRoot->getNdf( m ), 0, m );
282 mdcKalTrackTds->setNlayer( mdcKalTrackRoot->getNlayer( m ), m );
283 }
284
285 mdcKalTrackTds->setTrackId( mdcKalTrackRoot->getTrackId() );
286
287 for ( int jj = 0; jj < 5; jj++ )
288 {
289 mdcKalTrackTds->setZHelix( zhelixs[jj], jj );
290 mdcKalTrackTds->setZError( zerrors[jj], jj );
291 mdcKalTrackTds->setFHelix( fhelixs[jj], jj );
292 mdcKalTrackTds->setFError( ferrors[jj], jj );
293 mdcKalTrackTds->setPoca( pocas[jj], jj );
294 }
295
296 mdcKalTrackTdsCol->push_back( mdcKalTrackTds );
297 }
298 // m_mdcKalTrackCol->Delete(); // wensp add 2005/12/30
299 delete m_mdcKalTrackCol;
300 m_mdcKalTrackCol = 0;
301 return StatusCode::SUCCESS;
302}
HepGeom::Point3D< double > HepPoint3D
Double_t x[10]
void setFHelix(const HepVector &fhelix, const int pid)
void setPhi(const double phi, const int pid)
void setY(const double y, const int pid)
void setPz(const double pz, const int pid)
void setChisq(double chisq, int i, int pid)
void setZError(const HepSymMatrix &error, const int pid)
void setX(const double x, const int pid)
void setP(const double p, const int pid)
void setPoca(const HepPoint3D &poca, const int pid)
void setPx(const double px, const int pid)
void setZ(const double z, const int pid)
void setTheta(const double theta, const int pid)
void setR(const double r, const int pid)
void setPxy(const double pxy, const int pid)
void setPy(const double py, const int pid)
void setFError(const HepSymMatrix &ferror, const int pid)
void setZHelix(const HepVector &helix, const int pid)
void setCharge(const int charge, const int pid)

◆ TObjectToDataObject() [2/3]

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

transformation from root

Implements RootEventBaseCnv.

◆ TObjectToDataObject() [3/3]

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

transformation from root

Implements RootEventBaseCnv.

◆ CnvFactory< MdcKalTrackCnv >

friend class CnvFactory< MdcKalTrackCnv >
friend

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