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

#include <RecMucTrackCnv.h>

Inheritance diagram for RecMucTrackCnv:

Public Member Functions

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

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

◆ ~RecMucTrackCnv() [1/3]

virtual RecMucTrackCnv::~RecMucTrackCnv ( )
inlinevirtual

◆ RecMucTrackCnv() [1/3]

RecMucTrackCnv::RecMucTrackCnv ( ISvcLocator * svc)

Definition at line 33 of file RecMucTrackCnv.cxx.

33 : RootEventBaseCnv( classID(), svc ) {
34
35 // Here we associate this converter with the /Event path on the TDS.
36 // MsgStream log( msgSvc(), "RecMucTrackCnv" );
37 // log << MSG::DEBUG << "Constructor called for " << objType() << endmsg;
38 // m_rootTreename ="Rec";
39 // RecMucTrack *atrack = new RecMucTrack();
40 // RecMucTrackCol *atrackCol = new RecMucTrackCol;
41 // cout<<"in RecMucTrackCnv "<<atrack->clID()<<" "<<atrackCol->clID()<<"
42 // "<<CLID_ObjectVector<<endl;
43 m_rootBranchname = "m_recMucTrackCol";
44 // declareObject(EventModel::Recon::RecMucTrackCol, objType(), m_rootTreename,
45 // m_rootBranchname);
46 m_adresses.push_back( &m_recMucTrackCol );
47 m_recMucTrackCol = 0;
48}
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)

◆ ~RecMucTrackCnv() [2/3]

virtual RecMucTrackCnv::~RecMucTrackCnv ( )
inlinevirtual

◆ RecMucTrackCnv() [2/3]

RecMucTrackCnv::RecMucTrackCnv ( ISvcLocator * svc)

◆ ~RecMucTrackCnv() [3/3]

virtual RecMucTrackCnv::~RecMucTrackCnv ( )
inlinevirtual

◆ RecMucTrackCnv() [3/3]

RecMucTrackCnv::RecMucTrackCnv ( ISvcLocator * svc)

Member Function Documentation

◆ classID() [1/3]

const CLID & RecMucTrackCnv::classID ( )
inlinestatic

Definition at line 19 of file Event/RootCnvSvc/include/RootCnvSvc/Rec/RecMucTrackCnv.h.

19{ return CLID_RecMucTrackCol; }
const CLID & CLID_RecMucTrackCol

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

◆ classID() [2/3]

const CLID & RecMucTrackCnv::classID ( )
inlinestatic

◆ classID() [3/3]

const CLID & RecMucTrackCnv::classID ( )
inlinestatic

◆ DataObjectToTObject() [1/3]

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

transformation to root

Implements RootEventBaseCnv.

Definition at line 176 of file RecMucTrackCnv.cxx.

176 {
177
178 MsgStream log( msgSvc(), "RecMucTrackCnv" );
179 log << MSG::DEBUG << "RecMucTrackCnv::DataObjectToTObject" << endmsg;
180 StatusCode sc = StatusCode::SUCCESS;
181
182 RecMucTrackCol* mucTrackColTds = dynamic_cast<RecMucTrackCol*>( obj );
183 if ( !mucTrackColTds )
184 {
185 log << MSG::ERROR << "Could not downcast to RecMucTrackCol" << endmsg;
186 return StatusCode::FAILURE;
187 }
188
189 DataObject* evt;
190 m_eds->findObject( EventModel::Recon::Event, evt );
191 if ( evt == NULL )
192 {
193 log << MSG::ERROR << "Could not get RecEvent in TDS " << endmsg;
194 return StatusCode::FAILURE;
195 }
196 ReconEvent* devtTds = dynamic_cast<ReconEvent*>( evt );
197 if ( !devtTds )
198 { log << MSG::ERROR << "RecMucTrackCnv:Could not downcast to TDS DigiEvent" << endmsg; }
199 IOpaqueAddress* addr;
200
201 m_cnvSvc->getRecTrackCnv()->createRep( evt, addr );
202 TRecTrackEvent* recEvt = m_cnvSvc->getRecTrackCnv()->getWriteObject();
203
204 const TObjArray* m_recMucTrackCol = recEvt->getMucTrackCol();
205 if ( !m_recMucTrackCol ) return sc;
206 recEvt->clearMucTrackCol(); // necessary in case there is I/O at the same time since array is
207 // static
208 RecMucTrackCol::const_iterator mucTrackTds;
209
210 for ( mucTrackTds = mucTrackColTds->begin(); mucTrackTds != mucTrackColTds->end();
211 mucTrackTds++ )
212 {
213 Int_t trackId = ( *mucTrackTds )->trackId();
214 Int_t id = ( *mucTrackTds )->id();
215 Int_t st = ( *mucTrackTds )->status();
216 Int_t type = ( *mucTrackTds )->type();
217
218 Int_t startPart = ( *mucTrackTds )->startPart();
219 Int_t endPart = ( *mucTrackTds )->endPart();
220 Int_t brLastLayer = ( *mucTrackTds )->brLastLayer();
221 Int_t ecLastLayer = ( *mucTrackTds )->ecLastLayer();
222 Int_t numHits = ( *mucTrackTds )->numHits();
223 Int_t numLayers = ( *mucTrackTds )->numLayers();
224 Int_t maxHitsInLayer = ( *mucTrackTds )->maxHitsInLayer();
225
226 Double_t depth = ( *mucTrackTds )->depth();
227 Double_t chi2 = ( *mucTrackTds )->chi2();
228 Int_t dof = ( *mucTrackTds )->dof();
229 Double_t rms = ( *mucTrackTds )->rms();
230
231 Double_t xPos = ( *mucTrackTds )->xPos();
232 Double_t yPos = ( *mucTrackTds )->yPos();
233 Double_t zPos = ( *mucTrackTds )->zPos();
234
235 Double_t xPosSigma = ( *mucTrackTds )->xPosSigma();
236 Double_t yPosSigma = ( *mucTrackTds )->yPosSigma();
237 Double_t zPosSigma = ( *mucTrackTds )->zPosSigma();
238
239 Double_t distance = ( *mucTrackTds )->distance();
240 Double_t deltaphi = ( *mucTrackTds )->deltaPhi();
241
242 Double_t px = ( *mucTrackTds )->px();
243 Double_t py = ( *mucTrackTds )->py();
244 Double_t pz = ( *mucTrackTds )->pz();
245
246 vector<Int_t> vecHits = ( *mucTrackTds )->getVecHits();
247 vector<Int_t> expHits = ( *mucTrackTds )->getExpHits();
248 vector<Float_t> distHits = ( *mucTrackTds )->getDistHits();
249 // added by LI Chunhua
250 Double_t krechi2 = ( *mucTrackTds )->kalRechi2();
251 Int_t kdof = ( *mucTrackTds )->kaldof();
252 Double_t kdepth = ( *mucTrackTds )->kaldepth();
253 Int_t kbrlay = ( *mucTrackTds )->kalbrLastLayer();
254 Int_t keclay = ( *mucTrackTds )->kalecLastLayer();
255 //*********************
256
257 /*
258 cout<<"in RecMucTrackCnv "<<vecHits.size()<<endl;
259 for(int i = 0; i < vecHits.size(); i++){
260 cout<<" vec i = "<<i<<" "<<vecHits[i]<<endl;
261 }
262
263 for(int i = 0; i < expHits.size(); i++){
264 cout<<" exp i = "<<i<<" "<<expHits[i]<<endl;
265 }
266
267 for(int i = 0; i < distHits.size(); i++){
268 cout<<" dist i = "<<i<<" "<<distHits[i]<<endl;
269 }
270 */
271
272 TRecMucTrack* mucTrackRoot = new TRecMucTrack(); // liangyt
273 // m_common.m_RecMucTrackMap[(*mucTrackTds)] = mucTrackRoot;
274
275 mucTrackRoot->setTrackId( trackId );
276 mucTrackRoot->setId( id );
277 mucTrackRoot->setStatus( st );
278 mucTrackRoot->setType( type );
279
280 mucTrackRoot->setStartPart( startPart );
281 mucTrackRoot->setEndPart( endPart );
282 mucTrackRoot->setBrLastLayer( brLastLayer );
283 mucTrackRoot->setEcLastLayer( ecLastLayer );
284 mucTrackRoot->setNumHits( numHits );
285 mucTrackRoot->setNumLayers( numLayers );
286 mucTrackRoot->setMaxHitsInLayer( maxHitsInLayer );
287
288 mucTrackRoot->setDepth( depth );
289 mucTrackRoot->setChi2( chi2 );
290 mucTrackRoot->setDof( dof );
291 mucTrackRoot->setRms( rms );
292
293 mucTrackRoot->setXPos( xPos );
294 mucTrackRoot->setYPos( yPos );
295 mucTrackRoot->setZPos( zPos );
296
297 mucTrackRoot->setXPosSigma( xPosSigma );
298 mucTrackRoot->setYPosSigma( yPosSigma );
299 mucTrackRoot->setZPosSigma( zPosSigma );
300
301 mucTrackRoot->setDistance( distance );
302 mucTrackRoot->setDeltaPhi( deltaphi );
303
304 // cout<<"in RecMucTrackCnv xyz = "<<xPos<<" "<<yPos<<" "<<zPos<<" depth= "<<depth<<"
305 // "<<maxHitsInLayer<<"
306 // "<<deltaphi<<endl;
307
308 mucTrackRoot->setPx( px );
309 mucTrackRoot->setPy( py );
310 mucTrackRoot->setPz( pz );
311
312 mucTrackRoot->setVecHits( vecHits );
313 mucTrackRoot->setExpHits( expHits );
314 mucTrackRoot->setDistHits( distHits );
315
316 // added by LI Chunhua 2013/02/01
317 mucTrackRoot->setkalRechi2( krechi2 );
318 mucTrackRoot->setkalDof( kdof );
319 mucTrackRoot->setkalDepth( kdepth );
320 mucTrackRoot->setkalbrLastLayer( kbrlay );
321 mucTrackRoot->setkalecLastLayer( keclay );
322 //******************
323 recEvt->addMucTrack( mucTrackRoot );
324 }
325
326 return StatusCode::SUCCESS;
327}
IMessageSvc * msgSvc()
IDataProviderSvc * m_eds
pointer to eventdataservice
void addMucTrack(TRecMucTrack *Track)
Add a MucTrack into the TOF Data collection.
const TObjArray * getMucTrackCol() const
retrieve the whole TObjArray of MucTrack Data

◆ DataObjectToTObject() [2/3]

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

transformation to root

Implements RootEventBaseCnv.

◆ DataObjectToTObject() [3/3]

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

transformation to root

Implements RootEventBaseCnv.

◆ TObjectToDataObject() [1/3]

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

transformation from root

Implements RootEventBaseCnv.

Definition at line 50 of file RecMucTrackCnv.cxx.

50 {
51 // creation of TDS object from root object
52
53 MsgStream log( msgSvc(), "RecMucTrackCnv" );
54 log << MSG::DEBUG << "RecMucTrackCnv::TObjectToDataObject" << endmsg;
55 StatusCode sc = StatusCode::SUCCESS;
56
57 // create the TDS location for the MucTrack Collection
58 RecMucTrackCol* mucTrackTdsCol = new RecMucTrackCol;
59 refpObject = mucTrackTdsCol;
60
61 // now convert
62 if ( !m_recMucTrackCol ) return sc;
63 TIter mucTrackIter( m_recMucTrackCol );
64 TRecMucTrack* mucTrackRoot = 0;
65 while ( ( mucTrackRoot = (TRecMucTrack*)mucTrackIter.Next() ) )
66 {
67
68 int trackId = mucTrackRoot->trackId();
69 int id = mucTrackRoot->id();
70 int st = mucTrackRoot->status();
71 int type = mucTrackRoot->type();
72
73 int startPart = mucTrackRoot->startPart();
74 int endPart = mucTrackRoot->endPart();
75 int brLastLayer = mucTrackRoot->brLastLayer();
76 int ecLastLayer = mucTrackRoot->ecLastLayer();
77 int numHits = mucTrackRoot->numHits();
78 int numLayers = mucTrackRoot->numLayers();
79 int maxHitsInLayer = mucTrackRoot->maxHitsInLayer();
80
81 double depth = mucTrackRoot->depth();
82 double chi2 = mucTrackRoot->chi2();
83 int dof = mucTrackRoot->dof();
84 double rms = mucTrackRoot->rms();
85
86 double xPos = mucTrackRoot->xPos();
87 double yPos = mucTrackRoot->yPos();
88 double zPos = mucTrackRoot->zPos();
89
90 double xPosSigma = mucTrackRoot->xPosSigma();
91 double yPosSigma = mucTrackRoot->yPosSigma();
92 double zPosSigma = mucTrackRoot->zPosSigma();
93
94 double px = mucTrackRoot->px();
95 double py = mucTrackRoot->py();
96 double pz = mucTrackRoot->pz();
97
98 double distance = mucTrackRoot->distance();
99 double deltaphi = mucTrackRoot->deltaPhi();
100 // cout<<"in RecMucTrackCnv distance = "<<distance<<" xpos= "<<xPos<<endl;
101
102 vector<int> vecHits = mucTrackRoot->vecHits();
103 vector<int> expHits = mucTrackRoot->expHits();
104 vector<float> distHits = mucTrackRoot->distHits();
105
106 // added by LI Chunhua
107 double krechi2 = mucTrackRoot->kalRechi2();
108 int kdof = mucTrackRoot->kaldof();
109 double kdepth = mucTrackRoot->kaldepth();
110 int kbrlay = mucTrackRoot->kalbrLastLayer();
111 int keclay = mucTrackRoot->kalecLastLayer();
112 //*********************
113 // cout<<"in RecMucTrackCnv size = "<<vecHits.size()<<" "<<expHits.size()<<"
114 // "<<distHits.size()<<endl;
115
116 RecMucTrack* mucTrackTds = new RecMucTrack();
117 m_common.m_rootRecMucTrackMap[mucTrackRoot] = mucTrackTds;
118
119 mucTrackTds->setTrackId( trackId );
120 mucTrackTds->setId( id );
121 mucTrackTds->setStatus( st );
122 mucTrackTds->setType( type );
123
124 mucTrackTds->setStartPart( startPart );
125 mucTrackTds->setEndPart( endPart );
126 mucTrackTds->setBrLastLayer( brLastLayer );
127 mucTrackTds->setEcLastLayer( ecLastLayer );
128 mucTrackTds->setNumHits( numHits );
129 mucTrackTds->setNumLayers( numLayers );
130 mucTrackTds->setMaxHitsInLayer( maxHitsInLayer );
131
132 mucTrackTds->setDepth( depth );
133 mucTrackTds->setChi2( chi2 );
134 mucTrackTds->setDof( dof );
135 mucTrackTds->setRms( rms );
136
137 mucTrackTds->setXPos( xPos );
138 mucTrackTds->setYPos( yPos );
139 mucTrackTds->setZPos( zPos );
140
141 mucTrackTds->setXPosSigma( xPosSigma );
142 mucTrackTds->setYPosSigma( yPosSigma );
143 mucTrackTds->setZPosSigma( zPosSigma );
144
145 mucTrackTds->setPx( px );
146 mucTrackTds->setPy( py );
147 mucTrackTds->setPz( pz );
148
149 mucTrackTds->setDistance( distance );
150 mucTrackTds->setDeltaPhi( deltaphi );
151 mucTrackTds->setVecHits( vecHits ); // need fix
152 mucTrackTds->setExpHits( expHits );
153 mucTrackTds->setDistHits( distHits );
154
155 // added by LI Chunhua 2013/02/01
156 mucTrackTds->setkalRechi2( krechi2 );
157 mucTrackTds->setkalDof( kdof );
158 mucTrackTds->setkalDepth( kdepth );
159 mucTrackTds->setkalbrLastLayer( kbrlay );
160 mucTrackTds->setkalecLastLayer( keclay );
161 //******************
162
163 // cout<<"in RecMucTrackCnv::T->D set mucpos"<<endl;
164
165 mucTrackTdsCol->push_back( mucTrackTds );
166 // delete mucTrackTds; // wensp add 2005/12/31
167 // mucTrackTds = NULL;
168 }
169
170 // m_mucTrackCol->Delete(); // wensp add 2005/12/30
171 delete m_recMucTrackCol;
172 m_recMucTrackCol = 0;
173 return StatusCode::SUCCESS;
174}
void setExpHits(vector< MucRecHit * > &pHits)
void setTrackId(const int trackId)
set the index for this track.
void setVecHits(vector< MucRecHit * > &pHits)
reload setVecHits

◆ TObjectToDataObject() [2/3]

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

transformation from root

Implements RootEventBaseCnv.

◆ TObjectToDataObject() [3/3]

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

transformation from root

Implements RootEventBaseCnv.

◆ CnvFactory< RecMucTrackCnv >

friend class CnvFactory< RecMucTrackCnv >
friend

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