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

#include <RecExtTrackCnv.h>

Inheritance diagram for RecExtTrackCnv:

Public Member Functions

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

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

◆ ~RecExtTrackCnv() [1/3]

virtual RecExtTrackCnv::~RecExtTrackCnv ( )
inlinevirtual

◆ RecExtTrackCnv() [1/3]

RecExtTrackCnv::RecExtTrackCnv ( ISvcLocator * svc)

Definition at line 33 of file RecExtTrackCnv.cxx.

33 : RootEventBaseCnv( classID(), svc ) {
34
35 // Here we associate this converter with the /Event path on the TDS.
36 MsgStream log( msgSvc(), "RecExtTrackCnv" );
37 // log << MSG::DEBUG << "Constructor called for " << objType() << endmsg;
38 // m_rootTreename ="Rec";
39 // m_rootBranchname ="m_RecExtTrackCol";
40 m_rootBranchname = "m_extTrackCol";
41 // declareObject(EventModel::Recon::ExtTrackCol, objType(), m_rootTreename,
42 // m_rootBranchname);
43 m_adresses.push_back( &m_extTrackCol );
44 m_extTrackCol = 0;
45}
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)

◆ ~RecExtTrackCnv() [2/3]

virtual RecExtTrackCnv::~RecExtTrackCnv ( )
inlinevirtual

◆ RecExtTrackCnv() [2/3]

RecExtTrackCnv::RecExtTrackCnv ( ISvcLocator * svc)

◆ ~RecExtTrackCnv() [3/3]

virtual RecExtTrackCnv::~RecExtTrackCnv ( )
inlinevirtual

◆ RecExtTrackCnv() [3/3]

RecExtTrackCnv::RecExtTrackCnv ( ISvcLocator * svc)

Member Function Documentation

◆ classID() [1/3]

const CLID & RecExtTrackCnv::classID ( )
inlinestatic

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

19{ return CLID_RecExtTrackCol; }
const CLID & CLID_RecExtTrackCol

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

◆ classID() [2/3]

const CLID & RecExtTrackCnv::classID ( )
inlinestatic

◆ classID() [3/3]

const CLID & RecExtTrackCnv::classID ( )
inlinestatic

◆ DataObjectToTObject() [1/3]

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

transformation to root

Implements RootEventBaseCnv.

Definition at line 219 of file RecExtTrackCnv.cxx.

219 {
220
221 MsgStream log( msgSvc(), "RecExtTrackCnv" );
222 log << MSG::DEBUG << "RecExtTrackCnv::DataObjectToTObject" << endmsg;
223 StatusCode sc = StatusCode::SUCCESS;
224
225 RecExtTrackCol* extTrackColTds = dynamic_cast<RecExtTrackCol*>( obj );
226 if ( !extTrackColTds )
227 {
228 log << MSG::ERROR << "Could not downcast to RecExtTrackCol" << endmsg;
229 return StatusCode::FAILURE;
230 }
231
232 DataObject* evt;
233 m_eds->findObject( EventModel::Recon::Event, evt );
234 if ( evt == NULL )
235 {
236 log << MSG::ERROR << "Could not get ReconEvent in TDS " << endmsg;
237 return StatusCode::FAILURE;
238 }
239
240 ReconEvent* devtTds = dynamic_cast<ReconEvent*>( evt );
241 if ( !devtTds )
242 { log << MSG::ERROR << "RecExtTrackCnv:Could not downcast to TDS Rec Event" << endmsg; }
243 IOpaqueAddress* addr;
244
245 m_cnvSvc->getRecTrackCnv()->createRep( evt, addr );
246 TRecTrackEvent* recEvt = m_cnvSvc->getRecTrackCnv()->getWriteObject();
247
248 const TObjArray* m_extTrackCol = recEvt->getExtTrackCol();
249
250 if ( !m_extTrackCol ) return sc;
251
252 recEvt->clearExtTrackCol(); // necessary in case there is I/O at the same time since array is
253 // static
254 RecExtTrackCol::const_iterator extTrackTds;
255
256 for ( extTrackTds = extTrackColTds->begin(); extTrackTds != extTrackColTds->end();
257 extTrackTds++ )
258 {
259 // Get Data from TDS
260 Int_t trackId = ( *extTrackTds )->GetTrackId();
261 TRecExtTrack* extTrackRoot = new TRecExtTrack;
262 // Set to Root
263 extTrackRoot->SetTrackId( trackId );
264 for ( int iPart = 0; iPart < 5; iPart++ )
265 {
266 // Tof layer1
267 Double_t p1x = ( *extTrackTds )->tof1Position( iPart ).x();
268 Double_t p1y = ( *extTrackTds )->tof1Position( iPart ).y();
269 Double_t p1z = ( *extTrackTds )->tof1Position( iPart ).z();
270 Double_t m1x = ( *extTrackTds )->tof1Momentum( iPart ).x();
271 Double_t m1y = ( *extTrackTds )->tof1Momentum( iPart ).y();
272 Double_t m1z = ( *extTrackTds )->tof1Momentum( iPart ).z();
273
274 TString v1s = ( *extTrackTds )->tof1VolumeName( iPart );
275 Int_t v1n = ( *extTrackTds )->tof1VolumeNumber( iPart );
276 Double_t tof1 = ( *extTrackTds )->tof1( iPart );
277 Double_t tof1p = ( *extTrackTds )->tof1Path( iPart );
278 Double_t z1 = ( *extTrackTds )->tof1PosSigmaAlongZ( iPart );
279 Double_t t1 = ( *extTrackTds )->tof1PosSigmaAlongT( iPart );
280 Double_t x1 = ( *extTrackTds )->tof1PosSigmaAlongX( iPart );
281 Double_t y1 = ( *extTrackTds )->tof1PosSigmaAlongY( iPart );
282 Double_t e1m[6][6];
283 HepSymMatrix e1mTds = ( *extTrackTds )->tof1ErrorMatrix( iPart );
284 for ( int i = 0; i < 6; i++ )
285 for ( int j = 0; j < 6; j++ ) e1m[i][j] = e1mTds[i][j];
286
287 // Tof llayer2
288 Double_t p2x = ( *extTrackTds )->tof2Position( iPart ).x();
289 Double_t p2y = ( *extTrackTds )->tof2Position( iPart ).y();
290 Double_t p2z = ( *extTrackTds )->tof2Position( iPart ).z();
291 Double_t m2x = ( *extTrackTds )->tof2Momentum( iPart ).x();
292 Double_t m2y = ( *extTrackTds )->tof2Momentum( iPart ).y();
293 Double_t m2z = ( *extTrackTds )->tof2Momentum( iPart ).z();
294
295 TString v2s = ( *extTrackTds )->tof2VolumeName( iPart );
296 Int_t v2n = ( *extTrackTds )->tof2VolumeNumber( iPart );
297 Double_t tof2 = ( *extTrackTds )->tof2( iPart );
298 Double_t tof2p = ( *extTrackTds )->tof2Path( iPart );
299 Double_t z2 = ( *extTrackTds )->tof2PosSigmaAlongZ( iPart );
300 Double_t t2 = ( *extTrackTds )->tof2PosSigmaAlongT( iPart );
301 Double_t x2 = ( *extTrackTds )->tof2PosSigmaAlongX( iPart );
302 Double_t y2 = ( *extTrackTds )->tof2PosSigmaAlongY( iPart );
303 Double_t e2m[6][6];
304 HepSymMatrix e2mTds = ( *extTrackTds )->tof2ErrorMatrix( iPart );
305 for ( int i = 0; i < 6; i++ )
306 for ( int j = 0; j < 6; j++ ) e2m[i][j] = e2mTds[i][j];
307 // Emc
308 Double_t pEx = ( *extTrackTds )->emcPosition( iPart ).x();
309 Double_t pEy = ( *extTrackTds )->emcPosition( iPart ).y();
310 Double_t pEz = ( *extTrackTds )->emcPosition( iPart ).z();
311 Double_t mEx = ( *extTrackTds )->emcMomentum( iPart ).x();
312 Double_t mEy = ( *extTrackTds )->emcMomentum( iPart ).y();
313 Double_t mEz = ( *extTrackTds )->emcMomentum( iPart ).z();
314
315 TString vEs = ( *extTrackTds )->emcVolumeName( iPart );
316 Int_t vEn = ( *extTrackTds )->emcVolumeNumber( iPart );
317
318 Double_t theta = ( *extTrackTds )->emcPosSigmaAlongTheta( iPart );
319 Double_t phi = ( *extTrackTds )->emcPosSigmaAlongPhi( iPart );
320
321 Double_t eEm[6][6];
322 HepSymMatrix eEmTds = ( *extTrackTds )->emcErrorMatrix( iPart );
323 for ( int i = 0; i < 6; i++ )
324 for ( int j = 0; j < 6; j++ ) eEm[i][j] = eEmTds[i][j];
325 Double_t emcPath = ( *extTrackTds )->emcPath( iPart );
326
327 // Muc
328 Double_t pMx = ( *extTrackTds )->mucPosition( iPart ).x();
329 Double_t pMy = ( *extTrackTds )->mucPosition( iPart ).y();
330 Double_t pMz = ( *extTrackTds )->mucPosition( iPart ).z();
331 Double_t mMx = ( *extTrackTds )->mucMomentum( iPart ).x();
332 Double_t mMy = ( *extTrackTds )->mucMomentum( iPart ).y();
333 Double_t mMz = ( *extTrackTds )->mucMomentum( iPart ).z();
334
335 TString vMs = ( *extTrackTds )->mucVolumeName( iPart );
336 Int_t vMn = ( *extTrackTds )->mucVolumeNumber( iPart );
337
338 Double_t zM = ( *extTrackTds )->mucPosSigmaAlongZ( iPart );
339 Double_t tM = ( *extTrackTds )->mucPosSigmaAlongT( iPart );
340 Double_t xM = ( *extTrackTds )->mucPosSigmaAlongX( iPart );
341 Double_t yM = ( *extTrackTds )->mucPosSigmaAlongY( iPart );
342
343 Double_t eMm[6][6];
344 HepSymMatrix eMmTds = ( *extTrackTds )->mucErrorMatrix( iPart );
345 for ( int i = 0; i < 6; i++ )
346 for ( int j = 0; j < 6; j++ ) eMm[i][j] = eMmTds[i][j];
347
348 // ExtMucHitVec
349 ExtMucHitVec vecHit = ( *extTrackTds )->GetExtMucHitVec( iPart );
350 Int_t size = vecHit.size();
351
352 // m_common.m_extTrackMap[(*extTrackTds)] = extTrackRoot;
353
354 // Set to Root
355
356 // ExtMucHitVec
357 extTrackRoot->SetSize( size, iPart );
358 for ( int i = 0; i < size; i++ )
359 {
360 Double_t px = vecHit[i].GetPosition().x();
361 Double_t py = vecHit[i].GetPosition().y();
362 Double_t pz = vecHit[i].GetPosition().z();
363 Double_t mx = vecHit[i].GetMomentum().x();
364 Double_t my = vecHit[i].GetMomentum().y();
365 Double_t mz = vecHit[i].GetMomentum().z();
366 TString vs = vecHit[i].GetVolumeName();
367 Int_t vn = vecHit[i].GetVolumeNumber();
368 Double_t z = vecHit[i].GetPosSigmaAlongZ();
369 Double_t t = vecHit[i].GetPosSigmaAlongT();
370 Double_t x = vecHit[i].GetPosSigmaAlongX();
371 Double_t y = vecHit[i].GetPosSigmaAlongY();
372 Double_t m[6][6];
373 HepSymMatrix mTds = vecHit[i].GetErrorMatrix();
374 for ( int j = 0; j < 6; j++ )
375 for ( int k = 0; k < 6; k++ ) m[j][k] = mTds[j][k];
376
377 extTrackRoot->SetExtMucHit( px, py, pz, mx, my, mz, vs, vn, z, t, x, y, m, iPart );
378 }
379
380 // Tof layer1
381 extTrackRoot->SetTof1PositionX( p1x, iPart );
382 extTrackRoot->SetTof1PositionY( p1y, iPart );
383 extTrackRoot->SetTof1PositionZ( p1z, iPart );
384 extTrackRoot->SetTof1MomentumX( m1x, iPart );
385 extTrackRoot->SetTof1MomentumY( m1y, iPart );
386 extTrackRoot->SetTof1MomentumZ( m1z, iPart );
387
388 extTrackRoot->SetTof1VolumeName( v1s, iPart );
389 extTrackRoot->SetTof1VolumeNumber( v1n, iPart );
390
391 extTrackRoot->SetTof1( tof1, iPart );
392 extTrackRoot->SetTof1Path( tof1p, iPart );
393
394 extTrackRoot->SetTof1PosSigmaAlongZ( z1, iPart );
395 extTrackRoot->SetTof1PosSigmaAlongT( t1, iPart );
396 extTrackRoot->SetTof1PosSigmaAlongX( x1, iPart );
397 extTrackRoot->SetTof1PosSigmaAlongY( y1, iPart );
398
399 extTrackRoot->SetTof1ErrorMatrix( e1m, iPart );
400 // Tof layer2
401 extTrackRoot->SetTof2PositionX( p2x, iPart );
402 extTrackRoot->SetTof2PositionY( p2y, iPart );
403 extTrackRoot->SetTof2PositionZ( p2z, iPart );
404 extTrackRoot->SetTof2MomentumX( m2x, iPart );
405 extTrackRoot->SetTof2MomentumY( m2y, iPart );
406 extTrackRoot->SetTof2MomentumZ( m2z, iPart );
407
408 extTrackRoot->SetTof2VolumeName( v2s, iPart );
409 extTrackRoot->SetTof2VolumeNumber( v2n, iPart );
410
411 extTrackRoot->SetTof2( tof2, iPart );
412 extTrackRoot->SetTof2Path( tof2p, iPart );
413
414 extTrackRoot->SetTof2PosSigmaAlongZ( z2, iPart );
415 extTrackRoot->SetTof2PosSigmaAlongT( t2, iPart );
416 extTrackRoot->SetTof2PosSigmaAlongX( x2, iPart );
417 extTrackRoot->SetTof2PosSigmaAlongY( y2, iPart );
418
419 extTrackRoot->SetTof2ErrorMatrix( e2m, iPart );
420 // Emc
421 extTrackRoot->SetEmcPositionX( pEx, iPart );
422 extTrackRoot->SetEmcPositionY( pEy, iPart );
423 extTrackRoot->SetEmcPositionZ( pEz, iPart );
424 extTrackRoot->SetEmcMomentumX( mEx, iPart );
425 extTrackRoot->SetEmcMomentumY( mEy, iPart );
426 extTrackRoot->SetEmcMomentumZ( mEz, iPart );
427
428 extTrackRoot->SetEmcVolumeName( vEs, iPart );
429 extTrackRoot->SetEmcVolumeNumber( vEn, iPart );
430
431 extTrackRoot->SetEmcPosSigmaAlongTheta( theta, iPart );
432 extTrackRoot->SetEmcPosSigmaAlongPhi( phi, iPart );
433
434 extTrackRoot->SetEmcErrorMatrix( eEm, iPart );
435 extTrackRoot->SetEmcPath( emcPath, iPart );
436 // Muc
437 extTrackRoot->SetMucPositionX( pMx, iPart );
438 extTrackRoot->SetMucPositionY( pMy, iPart );
439 extTrackRoot->SetMucPositionZ( pMz, iPart );
440 extTrackRoot->SetMucMomentumX( mMx, iPart );
441 extTrackRoot->SetMucMomentumY( mMy, iPart );
442 extTrackRoot->SetMucMomentumZ( mMz, iPart );
443
444 extTrackRoot->SetMucVolumeName( vMs, iPart );
445 extTrackRoot->SetMucVolumeNumber( vMn, iPart );
446
447 extTrackRoot->SetMucPosSigmaAlongZ( zM, iPart );
448 extTrackRoot->SetMucPosSigmaAlongT( tM, iPart );
449 extTrackRoot->SetMucPosSigmaAlongX( xM, iPart );
450 extTrackRoot->SetMucPosSigmaAlongY( yM, iPart );
451
452 extTrackRoot->SetMucErrorMatrix( eMm, iPart );
453 }
454 recEvt->addExtTrack( extTrackRoot );
455 }
456
457 return StatusCode::SUCCESS;
458}
Double_t x[10]
vector< ExtMucHit > ExtMucHitVec
ObjectVector< RecExtTrack > RecExtTrackCol
IDataProviderSvc * m_eds
pointer to eventdataservice
void SetTof2VolumeName(const TString Tof2VolumeName, const Int_t i=2)
void SetTof1VolumeNumber(const Int_t Tof1VolumeNumber, const Int_t i=2)
void SetTof2PosSigmaAlongZ(const Double_t Tof2PosSigmaAlongZ, const Int_t i=2)
void SetTof1MomentumZ(const Double_t Tof1MomentumZ, const Int_t i=2)
void SetExtMucHit(Double_t PositionX, Double_t PositionY, Double_t PositionZ, Double_t MomentumX, Double_t MomentumY, Double_t MomentumZ, TString VolumeName, Int_t VolumeNumber, Double_t PosSigmaAlongZ, Double_t PosSigmaAlongT, Double_t PosSigmaAlongX, Double_t PosSigmaAlongY, Double_t ErrorMatrix[6][6], const Int_t k=2)
void SetTof2(const Double_t Tof2, const Int_t i=2)
void SetEmcVolumeNumber(const Int_t EmcVolumeNumber, const Int_t i=2)
void SetTof1Path(const Double_t Tof1Path, const Int_t i=2)
void SetTof2PosSigmaAlongX(const Double_t Tof2PosSigmaAlongX, const Int_t i=2)
void SetTof1PosSigmaAlongY(const Double_t Tof1PosSigmaAlongY, const Int_t i=2)
void SetEmcMomentumX(const Double_t EmcMomentumX, const Int_t i=2)
void SetTof2MomentumY(const Double_t Tof2MomentumY, const Int_t i=2)
void SetMucPositionZ(const Double_t MucPositionZ, const Int_t i=2)
void SetTof2MomentumX(const Double_t Tof2MomentumX, const Int_t i=2)
void SetMucPositionX(const Double_t MucPositionX, const Int_t i=2)
void SetMucPosSigmaAlongX(const Double_t MucPosSigmaAlongX, const Int_t i=2)
void SetMucVolumeName(const TString MucVolumeName, const Int_t i=2)
void SetTof2PosSigmaAlongY(const Double_t Tof2PosSigmaAlongY, const Int_t i=2)
void SetTof1MomentumX(const Double_t Tof1MomentumX, const Int_t i=2)
void SetTof1PositionZ(const Double_t Tof1PositionZ, const Int_t i=2)
void SetMucPosSigmaAlongY(const Double_t MucPosSigmaAlongY, const Int_t i=2)
void SetEmcMomentumY(const Double_t EmcMomentumY, const Int_t i=2)
void SetTof2ErrorMatrix(const Double_t Tof2ErrorMatrix[6][6], const Int_t k=2)
void SetTof2Path(const Double_t Tof2Path, const Int_t i=2)
void SetMucMomentumY(const Double_t MucMomentumY, const Int_t i=2)
void SetMucPosSigmaAlongT(const Double_t MucPosSigmaAlongT, const Int_t i=2)
void SetTof1(const Double_t Tof1, const Int_t i=2)
void SetMucMomentumZ(const Double_t MucMomentumZ, const Int_t i=2)
void SetEmcErrorMatrix(const Double_t EmcErrorMatrix[6][6], const Int_t k=2)
void SetEmcMomentumZ(const Double_t EmcMomentumZ, const Int_t i=2)
void SetTof1ErrorMatrix(const Double_t Tof1ErrorMatrix[6][6], const Int_t k=2)
void SetTof1PosSigmaAlongX(const Double_t Tof1PosSigmaAlongX, const Int_t i=2)
void SetEmcPosSigmaAlongTheta(const Double_t EmcPosSigmaAlongTheta, const Int_t i=2)
void SetTof2PosSigmaAlongT(const Double_t Tof2PosSigmaAlongT, const Int_t i=2)
void SetTof1PosSigmaAlongT(const Double_t Tof1PosSigmaAlongT, const Int_t i=2)
void SetTof1MomentumY(const Double_t Tof1MomentumY, const Int_t i=2)
void SetEmcPositionX(const Double_t EmcPositionX, const Int_t i=2)
void SetEmcPositionZ(const Double_t EmcPositionZ, const Int_t i=2)
void SetMucPositionY(const Double_t MucPositionY, const Int_t i=2)
void SetTof2MomentumZ(const Double_t Tof2MomentumZ, const Int_t i=2)
void SetMucErrorMatrix(const Double_t MucErrorMatrix[6][6], const Int_t k=2)
void SetEmcVolumeName(const TString EmcVolumeName, const Int_t i=2)
void SetTof2PositionY(const Double_t Tof2PositionY, const Int_t i=2)
void SetTof1PosSigmaAlongZ(const Double_t Tof1PosSigmaAlongZ, const Int_t i=2)
void SetMucPosSigmaAlongZ(const Double_t MucPosSigmaAlongZ, const Int_t i=2)
void SetTof1VolumeName(const TString Tof1VolumeName, const Int_t i=2)
void SetMucMomentumX(const Double_t MucMomentumX, const Int_t i=2)
void SetTof1PositionX(const Double_t Tof1PositionX, const Int_t i=2)
void SetTof2PositionZ(const Double_t Tof2PositionZ, const Int_t i=2)
void SetEmcPosSigmaAlongPhi(const Double_t EmcPosSigmaAlongPhi, const Int_t i=2)
void SetTof2PositionX(const Double_t Tof2PositionX, const Int_t i=2)
void SetEmcPath(Double_t path, const Int_t i=2)
void SetEmcPositionY(const Double_t EmcPositionY, const Int_t i=2)
void SetTof2VolumeNumber(const Int_t Tof2VolumeNumber, const Int_t i=2)
void SetMucVolumeNumber(const Int_t MucVolumeNumber, const Int_t i=2)
void SetTof1PositionY(const Double_t Tof1PositionY, const Int_t i=2)
void addExtTrack(TRecExtTrack *Track)
Add a ExtTrack into the Ext Data collection.
int t()
Definition t.c:1

◆ DataObjectToTObject() [2/3]

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

transformation to root

Implements RootEventBaseCnv.

◆ DataObjectToTObject() [3/3]

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

transformation to root

Implements RootEventBaseCnv.

◆ TObjectToDataObject() [1/3]

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

transformation from root

Implements RootEventBaseCnv.

Definition at line 47 of file RecExtTrackCnv.cxx.

47 {
48 // creation of TDS object from root object
49 MsgStream log( msgSvc(), "RecExtTrackCnv" );
50 log << MSG::DEBUG << "RecExtTrackCnv::TObjectToDataObject" << endmsg;
51 StatusCode sc = StatusCode::SUCCESS;
52
53 // create the TDS location for the ExtTrack Collection
54 RecExtTrackCol* extTrackTdsCol = new RecExtTrackCol;
55 refpObject = extTrackTdsCol;
56
57 // now convert
58 if ( !m_extTrackCol ) return sc;
59 TIter extTrackIter( m_extTrackCol );
60 TRecExtTrack* extTrackRoot = 0;
61 while ( ( extTrackRoot = (TRecExtTrack*)extTrackIter.Next() ) )
62 {
63
64 RecExtTrack* extTrackTds = new RecExtTrack();
65 m_common.m_rootExtTrackMap[extTrackRoot] = extTrackTds;
66 int trackId = extTrackRoot->GetTrackId();
67 extTrackTds->SetTrackId( trackId );
68 for ( int iPart = 0; iPart < 5; iPart++ )
69 {
70 extTrackTds->SetParType( iPart );
71 // Tof layer1:
72 double p1x = extTrackRoot->GetTof1PositionX( iPart );
73 double p1y = extTrackRoot->GetTof1PositionY( iPart );
74 double p1z = extTrackRoot->GetTof1PositionZ( iPart );
75 double m1x = extTrackRoot->GetTof1MomentumX( iPart );
76 double m1y = extTrackRoot->GetTof1MomentumY( iPart );
77 double m1z = extTrackRoot->GetTof1MomentumZ( iPart );
78 Hep3Vector tof1p( p1x, p1y, p1z );
79 Hep3Vector tof1m( m1x, m1y, m1z );
80
81 // char * pTof1 = extTrackRoot->GetTof1VolumeName().Data();
82 string v1s = extTrackRoot->GetTof1VolumeName( iPart ).Data();
83 int v1n = extTrackRoot->GetTof1VolumeNumber( iPart );
84 double tof1 = extTrackRoot->GetTof1( iPart );
85 double tof1path = extTrackRoot->GetTof1Path( iPart );
86 double z1 = extTrackRoot->GetTof1PosSigmaAlongZ( iPart );
87 double t1 = extTrackRoot->GetTof1PosSigmaAlongT( iPart );
88 double x1 = extTrackRoot->GetTof1PosSigmaAlongX( iPart );
89 double y1 = extTrackRoot->GetTof1PosSigmaAlongY( iPart );
90 HepSymMatrix e1m( 6 );
91 for ( int i = 0; i < 6; i++ )
92 for ( int j = 0; j < 6; j++ )
93 e1m[i][j] = extTrackRoot->GetTof1ErrorMatrix( i, j, iPart );
94
95 // Tof layer2:
96 double p2x = extTrackRoot->GetTof2PositionX( iPart );
97 double p2y = extTrackRoot->GetTof2PositionY( iPart );
98 double p2z = extTrackRoot->GetTof2PositionZ( iPart );
99 double m2x = extTrackRoot->GetTof2MomentumX( iPart );
100 double m2y = extTrackRoot->GetTof2MomentumY( iPart );
101 double m2z = extTrackRoot->GetTof2MomentumZ( iPart );
102 Hep3Vector tof2p( p2x, p2y, p2z );
103 Hep3Vector tof2m( m2x, m2y, m2z );
104
105 string v2s = extTrackRoot->GetTof2VolumeName( iPart ).Data();
106 int v2n = extTrackRoot->GetTof2VolumeNumber( iPart );
107 double tof2 = extTrackRoot->GetTof2( iPart );
108 double tof2path = extTrackRoot->GetTof2Path( iPart );
109 double z2 = extTrackRoot->GetTof2PosSigmaAlongZ( iPart );
110 double t2 = extTrackRoot->GetTof2PosSigmaAlongT( iPart );
111 double x2 = extTrackRoot->GetTof2PosSigmaAlongX( iPart );
112 double y2 = extTrackRoot->GetTof2PosSigmaAlongY( iPart );
113 HepSymMatrix e2m( 6 );
114 for ( int i = 0; i < 6; i++ )
115 for ( int j = 0; j < 6; j++ )
116 e2m[i][j] = extTrackRoot->GetTof2ErrorMatrix( i, j, iPart );
117
118 // Emc
119 double pEx = extTrackRoot->GetEmcPositionX( iPart );
120 double pEy = extTrackRoot->GetEmcPositionY( iPart );
121 double pEz = extTrackRoot->GetEmcPositionZ( iPart );
122 double mEx = extTrackRoot->GetEmcMomentumX( iPart );
123 double mEy = extTrackRoot->GetEmcMomentumY( iPart );
124 double mEz = extTrackRoot->GetEmcMomentumZ( iPart );
125 Hep3Vector Ep( pEx, pEy, pEz );
126 Hep3Vector Em( mEx, mEy, mEz );
127
128 string vEs = extTrackRoot->GetEmcVolumeName( iPart ).Data();
129 int vEn = extTrackRoot->GetEmcVolumeNumber( iPart );
130 double theta = extTrackRoot->GetEmcPosSigmaAlongTheta( iPart );
131 double phi = extTrackRoot->GetEmcPosSigmaAlongPhi( iPart );
132 HepSymMatrix eEm( 6 );
133 for ( int i = 0; i < 6; i++ )
134 for ( int j = 0; j < 6; j++ )
135 eEm[i][j] = extTrackRoot->GetEmcErrorMatrix( i, j, iPart );
136 double emcPath = extTrackRoot->emcPath( iPart );
137
138 // Muc
139 double pMx = extTrackRoot->GetMucPositionX( iPart );
140 double pMy = extTrackRoot->GetMucPositionY( iPart );
141 double pMz = extTrackRoot->GetMucPositionZ( iPart );
142 double mMx = extTrackRoot->GetMucMomentumX( iPart );
143 double mMy = extTrackRoot->GetMucMomentumY( iPart );
144 double mMz = extTrackRoot->GetMucMomentumZ( iPart );
145 Hep3Vector Mp( pMx, pMy, pMz );
146 Hep3Vector Mm( mMx, mMy, mMz );
147
148 string vMs = extTrackRoot->GetMucVolumeName( iPart ).Data();
149 int vMn = extTrackRoot->GetMucVolumeNumber( iPart );
150
151 double zM = extTrackRoot->GetMucPosSigmaAlongZ( iPart );
152 double tM = extTrackRoot->GetMucPosSigmaAlongT( iPart );
153 double xM = extTrackRoot->GetMucPosSigmaAlongX( iPart );
154 double yM = extTrackRoot->GetMucPosSigmaAlongY( iPart );
155 HepSymMatrix eMm( 6 );
156 for ( int i = 0; i < 6; i++ )
157 for ( int j = 0; j < 6; j++ )
158 eMm[i][j] = extTrackRoot->GetMucErrorMatrix( i, j, iPart );
159
160 // ExtMucHitVec
161 int size = extTrackRoot->GetSize( iPart );
162 ExtMucHit aExtMucHit;
163 // Hep3Vector p(0,0,0);
164 // Hep3Vector m(0,0,0);
165 string vs;
166 int vn;
167 double z;
168 double t;
169 double x;
170 double y;
171 HepSymMatrix matrix( 6 );
172
173 for ( int i = 0; i < size; i++ )
174 {
175 double px = extTrackRoot->GetPositionX( i, iPart );
176 double py = extTrackRoot->GetPositionY( i, iPart );
177 double pz = extTrackRoot->GetPositionZ( i, iPart );
178 Hep3Vector p( px, py, pz );
179 double mx = extTrackRoot->GetMomentumX( i, iPart );
180 double my = extTrackRoot->GetMomentumY( i, iPart );
181 double mz = extTrackRoot->GetMomentumZ( i, iPart );
182 Hep3Vector m( mx, my, mz );
183 vs = extTrackRoot->GetVolumeName( i, iPart ).Data();
184 vn = extTrackRoot->GetVolumeNumber( i, iPart );
185 z = extTrackRoot->GetPosSigmaAlongZ( i, iPart );
186 t = extTrackRoot->GetPosSigmaAlongT( i, iPart );
187 x = extTrackRoot->GetPosSigmaAlongX( i, iPart );
188 y = extTrackRoot->GetPosSigmaAlongY( i, iPart );
189 std::vector<double> vecError = extTrackRoot->GetErrorMatrix( i, iPart );
190 for ( int k = 0; k < 6; k++ )
191 {
192 for ( int j = 0; j < 6; j++ ) { matrix[k][j] = vecError[k * 6 + j]; }
193 }
194 aExtMucHit.SetExtMucHit( p, m, vs, vn, matrix, z, t, x, y );
195 extTrackTds->AddExtMucHit( aExtMucHit );
196 }
197
198 // DstExtTrack *extTrackTds = new DstExtTrack();
199 extTrackTds->SetTof1Data( tof1p, tof1m, v1s, v1n, tof1, tof1path, e1m, z1, t1, x1, y1 );
200 extTrackTds->SetTof2Data( tof2p, tof2m, v2s, v2n, tof2, tof2path, e2m, z2, t2, x2, y2 );
201 extTrackTds->SetEmcData( Ep, Em, vEs, vEn, theta, phi, eEm );
202 extTrackTds->SetEmcPath( emcPath );
203 extTrackTds->SetMucData( Mp, Mm, vMs, vMn, eMm, zM, tM, xM, yM );
204
205 extTrackTdsCol->push_back( extTrackTds );
206
207 // delete extTrackTds; // wensp add 2005/12/31
208 // extTrackTds = NULL;
209 }
210 extTrackTds->SetParType( 2 ); // default particle: pion
211 }
212 // m_extTrackCol->Delete(); // wensp add 2005/12/30
213 delete m_extTrackCol;
214 m_extTrackCol = 0;
215
216 return StatusCode::SUCCESS;
217}
void SetTof1Data(Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName, int aVolumeNumber, double aTof, double aPath, HepSymMatrix aErrorMatrix, double aZSigma=0., double aTSigma=0., double aXSigma=0., double aYSigma=0.)
void SetEmcData(Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName, int aVolumeNumber, double aThetaSigma, double aPhiSigma, HepSymMatrix aErrorMatrix)
void SetTof2Data(Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName, int aVolumeNumber, double aTof, double aPath, HepSymMatrix aErrorMatrix, double aZSigma=0., double aTSigma=0., double aXSigma=0., double aYSigma=0.)
void SetMucData(Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName, int aVolumeNumber, HepSymMatrix aErrorMatrix, double aZSigma=0., double aTSigma=0., double aXSigma=0., double aYSigma=0.)
void SetExtMucHit(Hep3Vector aPosition, Hep3Vector aMomentum, string aVolumeName, int aVolumeNumber, HepSymMatrix aErrorMatrix, double aZSigma=0., double aTSigma=0., double aXSigma=0., double aYSigma=0.)
Definition ExtMucHit.cxx:25
void AddExtMucHit(ExtMucHit aExtMucHit)
Double_t GetTof2PosSigmaAlongX(const Int_t i=2) const
Double_t GetPositionX(Int_t i, const Int_t k=2) const
Double_t GetPositionZ(Int_t i, const Int_t k=2) const
Double_t GetTof1PosSigmaAlongY(const Int_t i=2) const
TString GetVolumeName(Int_t i, const Int_t k=2) const
Double_t GetMomentumX(Int_t i, const Int_t k=2) const
vector< Double_t > GetErrorMatrix(Int_t i, const Int_t k=2) const
Double_t GetTof1ErrorMatrix(Int_t i, Int_t j, const Int_t k=2) const
Double_t GetTof1PosSigmaAlongZ(const Int_t i=2) const
Double_t GetPosSigmaAlongY(Int_t i, const Int_t k=2) const
Double_t GetTof2PosSigmaAlongY(const Int_t i=2) const
Double_t GetPosSigmaAlongX(Int_t i, const Int_t k=2) const
Double_t GetPosSigmaAlongZ(Int_t i, const Int_t k=2) const
Int_t GetVolumeNumber(Int_t i, const Int_t k=2) const
Double_t GetTof2PosSigmaAlongZ(const Int_t i=2) const
Double_t GetEmcErrorMatrix(Int_t i, Int_t j, const Int_t k=2) const
Double_t GetPositionY(Int_t i, const Int_t k=2) const
Double_t GetTof2ErrorMatrix(Int_t i, Int_t j, const Int_t k=2) const
Double_t GetTof1PosSigmaAlongX(const Int_t i=2) const
Double_t GetEmcPosSigmaAlongPhi(const Int_t i=2) const
Double_t GetTof1PosSigmaAlongT(const Int_t i=2) const
Double_t GetMomentumZ(Int_t i, const Int_t k=2) const
Double_t GetMomentumY(Int_t i, const Int_t k=2) const
Double_t GetEmcPosSigmaAlongTheta(const Int_t i=2) const
Double_t GetMucPosSigmaAlongX(const Int_t i=2) const
Double_t GetMucErrorMatrix(Int_t i, Int_t j, const Int_t k=2) const
Double_t GetMucPosSigmaAlongT(const Int_t i=2) const
Double_t GetTof2PosSigmaAlongT(const Int_t i=2) const
Double_t GetPosSigmaAlongT(Int_t i, const Int_t k=2) const
Double_t GetMucPosSigmaAlongZ(const Int_t i=2) const
Double_t GetMucPosSigmaAlongY(const Int_t i=2) const

◆ TObjectToDataObject() [2/3]

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

transformation from root

Implements RootEventBaseCnv.

◆ TObjectToDataObject() [3/3]

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

transformation from root

Implements RootEventBaseCnv.

◆ CnvFactory< RecExtTrackCnv >

friend class CnvFactory< RecExtTrackCnv >
friend

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