BOSS 7.0.4
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtRecVeeVertexCnv Class Reference

#include <EvtRecVeeVertexCnv.h>

+ Inheritance diagram for EvtRecVeeVertexCnv:

Public Member Functions

virtual ~EvtRecVeeVertexCnv ()
 
virtual ~EvtRecVeeVertexCnv ()
 
- 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.
 
virtual StatusCode DataObjectToTObject (DataObject *dat, RootAddress *addr)=0
 Do the concrete conversion from TDS to ROOT.
 
virtual StatusCode TObjectToDataObject (DataObject *&dat)=0
 Do the concrete conversion from ROOT to TDS.
 
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.
 
virtual StatusCode DataObjectToTObject (DataObject *dat, RootAddress *addr)=0
 Do the concrete conversion from TDS to ROOT.
 
virtual StatusCode TObjectToDataObject (DataObject *&dat)=0
 Do the concrete conversion from ROOT to TDS.
 
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
 

Static Public Member Functions

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.
 

Protected Member Functions

 EvtRecVeeVertexCnv (ISvcLocator *svc)
 
virtual StatusCode DataObjectToTObject (DataObject *obj, RootAddress *addr)
 transformation to root
 
virtual StatusCode TObjectToDataObject (DataObject *&obj)
 transformation from root
 
 EvtRecVeeVertexCnv (ISvcLocator *svc)
 
virtual StatusCode DataObjectToTObject (DataObject *obj, RootAddress *addr)
 transformation to root
 
virtual StatusCode TObjectToDataObject (DataObject *&obj)
 transformation from root
 
- Protected Member Functions inherited from Converter< Ty1, Ty2 >
virtual destinationconvert (const source &) const =0
 
virtual destinationconvert (const source &) const =0
 

Friends

class CnvFactory< EvtRecVeeVertexCnv >
 

Additional Inherited Members

- Public Types inherited from Converter< Ty1, Ty2 >
typedef Ty1 source
 
typedef Ty2 destination
 
typedef Ty1 source
 
typedef Ty2 destination
 
- Protected Attributes inherited from RootEventBaseCnv
RootCnvSvcm_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

◆ ~EvtRecVeeVertexCnv() [1/2]

virtual EvtRecVeeVertexCnv::~EvtRecVeeVertexCnv ( )
inlinevirtual

◆ EvtRecVeeVertexCnv() [1/2]

EvtRecVeeVertexCnv::EvtRecVeeVertexCnv ( ISvcLocator *  svc)
protected

Definition at line 20 of file EvtRecVeeVertexCnv.cxx.

22{
23 m_rootBranchname = "m_evtRecVeeVertexCol";
24 m_adresses.push_back(&m_evtRecVeeVertexCol);
25 m_evtRecVeeVertexCol = 0;
26}
std::vector< void * > m_adresses
each converter knows the corresponding adresses
std::string m_rootBranchname
root branchname (may be concatenated of severals)

◆ ~EvtRecVeeVertexCnv() [2/2]

virtual EvtRecVeeVertexCnv::~EvtRecVeeVertexCnv ( )
inlinevirtual

◆ EvtRecVeeVertexCnv() [2/2]

EvtRecVeeVertexCnv::EvtRecVeeVertexCnv ( ISvcLocator *  svc)
protected

Member Function Documentation

◆ classID() [1/2]

static const CLID & EvtRecVeeVertexCnv::classID ( )
inlinestatic

Definition at line 19 of file Event/RootCnvSvc/RootCnvSvc-02-01-13/RootCnvSvc/EvtRec/EvtRecVeeVertexCnv.h.

const CLID & CLID_EvtRecVeeVertexCol
Definition: EventModel.cxx:378

◆ classID() [2/2]

static const CLID & EvtRecVeeVertexCnv::classID ( )
inlinestatic

◆ DataObjectToTObject() [1/2]

StatusCode EvtRecVeeVertexCnv::DataObjectToTObject ( DataObject *  obj,
RootAddress addr 
)
protectedvirtual

transformation to root

Implements RootEventBaseCnv.

Definition at line 108 of file EvtRecVeeVertexCnv.cxx.

108 {
109 MsgStream log(msgSvc(), "EvtRecVeeVertexCnv");
110 log << MSG::DEBUG << "EvtRecVeeVertexCnv::DataObjectToTObject" << endreq;
111
112 EvtRecVeeVertexCol* evtRecVeeVertexCol = dynamic_cast<EvtRecVeeVertexCol*> (obj);
113 if ( ! evtRecVeeVertexCol ) {
114 log << MSG::ERROR << "Could not downcast to EvtRecVeeVertexCol" << endreq;
115 return StatusCode::FAILURE;
116 }
117
118 DataObject* evt;
119 m_eds->findObject(EventModel::EvtRec::Event, evt);
120 if ( evt == NULL ) {
121 log << MSG::ERROR << "Could not get EvtRecObject in TDS" << endreq;
122 return StatusCode::FAILURE;
123 }
124 EvtRecObject* devtTds = dynamic_cast<EvtRecObject*> (evt);
125 if ( ! devtTds ) {
126 log << MSG::ERROR << "EvtRecVeeVertexCnv: Could not downcast to TDS EvtRecObject" << endreq;
127 }
128
129 IOpaqueAddress *addr;
130 m_cnvSvc->getEvtRecCnv()->createRep(evt, addr);
132
133 const TObjArray* m_evtRecVeeVertexCol = recEvt->getEvtRecVeeVertexCol();
134 if ( ! m_evtRecVeeVertexCol ) return StatusCode::SUCCESS;
135
136 IDataProviderSvc* dataSvc = 0;
137 StatusCode sc = serviceLocator()->getService("EventDataSvc",
138 IDataProviderSvc::interfaceID(), (IInterface*&)dataSvc);
139 if ( sc.isFailure() ) {
140 log << MSG::FATAL << "Could not get EventDataSvc in EvtRecVeeVertexCnv" << endreq;
141 return sc;
142 }
143
144 EvtRecTrackCol::iterator evtRecTrackColbegin, evtRecTrackColend;
145
146 SmartDataPtr<EvtRecTrackCol> evtRecTrackCol(dataSvc, EventModel::EvtRec::EvtRecTrackCol);
147 if ( ! evtRecTrackCol) {
148 log << MSG::INFO << "Could not find EvtRecTrackCol" << endreq;
149 }
150 else {
151 evtRecTrackColbegin = evtRecTrackCol->begin();
152 evtRecTrackColend = evtRecTrackCol->end();
153 }
154
155 // convert
156 recEvt->clearEvtRecVeeVertexCol();
157 EvtRecVeeVertexCol::const_iterator evtRecVeeVertex = evtRecVeeVertexCol->begin();
158
159 for ( ; evtRecVeeVertex != evtRecVeeVertexCol->end(); evtRecVeeVertex++) {
160 EvtRecVeeVertex* ptr = *evtRecVeeVertex;
161 TEvtRecVeeVertex* evtRecVeeVertexRoot = new TEvtRecVeeVertex();
162 // set ...
163 evtRecVeeVertexRoot->setVertexId( ptr->vertexId() );
164 evtRecVeeVertexRoot->setVertexType( ptr->vertexType() );
165 evtRecVeeVertexRoot->setChi2( ptr->chi2() );
166 evtRecVeeVertexRoot->setNdof( ptr->ndof() );
167 evtRecVeeVertexRoot->setMass( ptr->mass() );
168
169 double wTrackParameter[7];
170 for (int i = 0; i < 7; i++) {
171 wTrackParameter[i] = ptr->w()[i];
172 }
173 evtRecVeeVertexRoot->setW( wTrackParameter );
174 double EwTrackParameter[28];
175 int i = 0;
176 for (int j = 0; j < 7; j++) {
177 for (int k = j; k < 7; k++) {
178 EwTrackParameter[i] = ptr->Ew()[j][k];
179 i++;
180 }
181 }
182 assert(i == 28);
183 evtRecVeeVertexRoot->setEw( EwTrackParameter );
184 int pairId[2];
185 pairId[0] = ptr->pair(0);
186 pairId[1] = ptr->pair(1);
187 evtRecVeeVertexRoot->setPair( pairId );
188 evtRecVeeVertexRoot->setNCharge( ptr->nCharge() );
189 evtRecVeeVertexRoot->setNTracks( ptr->nTracks() );
190
191 int daughterId[2];
192 if ( ptr->daughter(0).target() != NULL && ptr->daughter(1).target() != NULL ) {
193 assert(evtRecTrackColbegin != evtRecTrackColend);
194 EvtRecTrackCol::iterator it0 = find(evtRecTrackColbegin,
195 evtRecTrackColend, ptr->daughter(0).target());
196 EvtRecTrackCol::iterator it1 = find(evtRecTrackColbegin,
197 evtRecTrackColend, ptr->daughter(1).target());
198 assert(it0 != evtRecTrackColend);
199 assert(it1 != evtRecTrackColend);
200 daughterId[0] = it0 - evtRecTrackColbegin;
201 daughterId[1] = it1 - evtRecTrackColbegin;
202 evtRecVeeVertexRoot->setDaughter( daughterId );
203 }
204 recEvt->addEvtRecVeeVertex(evtRecVeeVertexRoot);
205 }
206
207 return StatusCode::SUCCESS;
208}
ObjectVector< EvtRecVeeVertex > EvtRecVeeVertexCol
IDataProviderSvc * m_eds
pointer to eventdataservice
virtual StatusCode createRep(DataObject *pObject, IOpaqueAddress *&refpAddress)
Convert the transient object to the requested representation.
void addEvtRecVeeVertex(TEvtRecVeeVertex *veeVertex)

◆ DataObjectToTObject() [2/2]

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

transformation to root

Implements RootEventBaseCnv.

◆ TObjectToDataObject() [1/2]

StatusCode EvtRecVeeVertexCnv::TObjectToDataObject ( DataObject *&  obj)
protectedvirtual

transformation from root

Implements RootEventBaseCnv.

Definition at line 28 of file EvtRecVeeVertexCnv.cxx.

28 {
29 // creation of TDS object from root object
30 MsgStream log(msgSvc(), "EvtRecVeeVertexCnv");
31 log << MSG::DEBUG << "EvtRecVeeVertexCnv::TObjectToDataObject" << endreq;
32
33 // create the TDS location for the EvtRecVeeVertex Collection
34 EvtRecVeeVertexCol* evtRecVeeVertexCol = new EvtRecVeeVertexCol;
35 refpObject = evtRecVeeVertexCol;
36
37 if ( ! m_evtRecVeeVertexCol ) return StatusCode::SUCCESS;
38
39 IDataProviderSvc* dataSvc = 0;
40 StatusCode sc = serviceLocator()->getService("EventDataSvc",
41 IDataProviderSvc::interfaceID(), (IInterface*&)dataSvc);
42 if ( sc.isFailure() ) {
43 log << MSG::FATAL << "Could not get EventDataSvc in EvtRecVeeVertexCnv" << endreq;
44 return sc;
45 }
46
47 SmartDataPtr<EvtRecTrackCol> evtRecTrackCol(dataSvc, EventModel::EvtRec::EvtRecTrackCol);
48 if ( ! evtRecTrackCol) {
49 log << MSG::INFO << "Could not find EvtRecTrackCol" << endreq;
50 }
51
52 // convert
53 TIter evtRecVeeVertexIter(m_evtRecVeeVertexCol);
54 TEvtRecVeeVertex* evtRecVeeVertexRoot = 0;
55 while ( (evtRecVeeVertexRoot = (TEvtRecVeeVertex*)evtRecVeeVertexIter.Next() ) ) {
56 EvtRecVeeVertex* evtRecVeeVertex = new EvtRecVeeVertex();
57 m_common.m_rootEvtRecVeeVertexMap[evtRecVeeVertexRoot] = evtRecVeeVertex;
58 // set ....
59 evtRecVeeVertex->setVertexId( evtRecVeeVertexRoot->vertexId() );
60 evtRecVeeVertex->setVertexType( evtRecVeeVertexRoot->vertexType() );
61 evtRecVeeVertex->setChi2( evtRecVeeVertexRoot->chi2() );
62 evtRecVeeVertex->setNdof( evtRecVeeVertexRoot->ndof() );
63 evtRecVeeVertex->setMass( evtRecVeeVertexRoot->mass() );
64
65 HepVector wTrackParameter(7, 0);
66 for (int i = 0; i < 7; i++) {
67 wTrackParameter[i] = evtRecVeeVertexRoot->w(i);
68 }
69 evtRecVeeVertex->setW( wTrackParameter );
70
71 HepSymMatrix EwTrackParameter(7, 0);
72 int i = 0;
73 for (int j = 0; j < 7; j++) {
74 for (int k = j; k < 7; k++) {
75 EwTrackParameter[j][k] = EwTrackParameter[k][j] = evtRecVeeVertexRoot->Ew(i);
76 i++;
77 }
78 }
79 evtRecVeeVertex->setEw( EwTrackParameter );
80
81 std::pair<int, int> pairId;
82 pairId.first = evtRecVeeVertexRoot->pair(0);
83 pairId.second = evtRecVeeVertexRoot->pair(1);
84 evtRecVeeVertex->setPair( pairId );
85 evtRecVeeVertex->setNCharge( evtRecVeeVertexRoot->nCharge() );
86 evtRecVeeVertex->setNTracks( evtRecVeeVertexRoot->nTracks() );
87 int evtRecTrackId0 = evtRecVeeVertexRoot->daughter(0);
88 if ( evtRecTrackId0 >= 0) {
89 evtRecVeeVertex->addDaughter(
90 dynamic_cast<EvtRecTrack*>(evtRecTrackCol->containedObject(evtRecTrackId0)), 0
91 );
92 }
93 int evtRecTrackId1 = evtRecVeeVertexRoot->daughter(1);
94 if ( evtRecTrackId1 >= 0) {
95 evtRecVeeVertex->addDaughter(
96 dynamic_cast<EvtRecTrack*>(evtRecTrackCol->containedObject(evtRecTrackId1)), 1
97 );
98 }
99
100 evtRecVeeVertexCol->push_back(evtRecVeeVertex);
101 }
102
103 delete m_evtRecVeeVertexCol;
104 m_evtRecVeeVertexCol = 0;
105 return StatusCode::SUCCESS;
106}
void addDaughter(const SmartRef< EvtRecTrack > &track, int i)
static std::map< const TObject *, const EvtRecVeeVertex * > m_rootEvtRecVeeVertexMap

◆ TObjectToDataObject() [2/2]

virtual StatusCode EvtRecVeeVertexCnv::TObjectToDataObject ( DataObject *&  obj)
protectedvirtual

transformation from root

Implements RootEventBaseCnv.

Friends And Related Function Documentation

◆ CnvFactory< EvtRecVeeVertexCnv >


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