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

#include <RecMdcDedxCnv.h>

Inheritance diagram for RecMdcDedxCnv:

Public Member Functions

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

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

◆ ~RecMdcDedxCnv() [1/3]

virtual RecMdcDedxCnv::~RecMdcDedxCnv ( )
inlinevirtual

◆ RecMdcDedxCnv() [1/3]

RecMdcDedxCnv::RecMdcDedxCnv ( ISvcLocator * svc)

Definition at line 30 of file RecMdcDedxCnv.cxx.

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

◆ ~RecMdcDedxCnv() [2/3]

virtual RecMdcDedxCnv::~RecMdcDedxCnv ( )
inlinevirtual

◆ RecMdcDedxCnv() [2/3]

RecMdcDedxCnv::RecMdcDedxCnv ( ISvcLocator * svc)

◆ ~RecMdcDedxCnv() [3/3]

virtual RecMdcDedxCnv::~RecMdcDedxCnv ( )
inlinevirtual

◆ RecMdcDedxCnv() [3/3]

RecMdcDedxCnv::RecMdcDedxCnv ( ISvcLocator * svc)

Member Function Documentation

◆ classID() [1/3]

const CLID & RecMdcDedxCnv::classID ( )
inlinestatic

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

19{ return CLID_RecMdcDedxCol; }
const CLID & CLID_RecMdcDedxCol

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

◆ classID() [2/3]

const CLID & RecMdcDedxCnv::classID ( )
inlinestatic

◆ classID() [3/3]

const CLID & RecMdcDedxCnv::classID ( )
inlinestatic

◆ DataObjectToTObject() [1/3]

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

transformation to root

Implements RootEventBaseCnv.

Definition at line 260 of file RecMdcDedxCnv.cxx.

260 {
261 MsgStream log( msgSvc(), "RecMdcDedxCnv" );
262 log << MSG::DEBUG << "RecMdcDedxCnv::DataObjectToTObject" << endmsg;
263 StatusCode sc = StatusCode::SUCCESS;
264
265 RecMdcDedxCol* recMdcDedxCol = dynamic_cast<RecMdcDedxCol*>( obj );
266 if ( !recMdcDedxCol )
267 {
268 log << MSG::ERROR << "Could not downcast to RecMdcDedxCol" << endmsg;
269 return StatusCode::FAILURE;
270 }
271
272 DataObject* evt;
273 m_eds->findObject( EventModel::Recon::Event, evt );
274 if ( evt == NULL )
275 {
276 log << MSG::ERROR << "Could not get RecEvent in TDS " << endmsg;
277 return StatusCode::FAILURE;
278 }
279 ReconEvent* devtTds = dynamic_cast<ReconEvent*>( evt );
280 if ( !devtTds )
281 { log << MSG::ERROR << "RecMdcDedxCnv:Could not downcast to TDS RecEvent" << endmsg; }
282
283 IOpaqueAddress* addr;
284 m_cnvSvc->getRecTrackCnv()->createRep( evt, addr );
285 TRecTrackEvent* recEvt = m_cnvSvc->getRecTrackCnv()->getWriteObject();
286
287 const TObjArray* m_recMdcDedxCol = recEvt->getRecMdcDedxCol();
288 if ( !m_recMdcDedxCol ) return sc;
289 recEvt->clearRecMdcDedxCol(); // necessary in case there is I/O at the same time since array
290 // is static
291
292 //******************** get according mdcTrack and MdcKalmanTrack of MdcDedx ****************
293
294 RecMdcTrackCol::iterator recMdcTrackColbegin, recMdcTrackColend;
295 RecMdcKalTrackCol::iterator recMdcKalTrackColbegin, recMdcKalTrackColend;
296
297 IDataProviderSvc* dataSvc = 0;
298 sc = serviceLocator()->getService( "EventDataSvc", IDataProviderSvc::interfaceID(),
299 (IInterface*&)dataSvc );
300 if ( sc.isFailure() )
301 {
302 log << MSG::FATAL << "Could not get EventDataSvc in RecMdcDedxCnv" << endmsg;
303 return sc;
304 }
305 SmartDataPtr<RecMdcTrackCol> recMdcTrackCol( dataSvc, EventModel::Recon::RecMdcTrackCol );
306 if ( !recMdcTrackCol )
307 {
308 log << MSG::ERROR << "Could not downcast to RecMdcTrackCol" << endmsg;
309 return StatusCode::FAILURE;
310 }
311 else
312 {
313 recMdcTrackColbegin = recMdcTrackCol->begin();
314 recMdcTrackColend = recMdcTrackCol->end();
315 }
316
317 SmartDataPtr<RecMdcKalTrackCol> recMdcKalTrackCol( dataSvc,
319 if ( !recMdcKalTrackCol )
320 {
321 log << MSG::ERROR << "Could not downcast to RecMdcKalTrackCol" << endmsg;
322 return StatusCode::FAILURE;
323 }
324 else
325 {
326 recMdcKalTrackColbegin = recMdcKalTrackCol->begin();
327 recMdcKalTrackColend = recMdcKalTrackCol->end();
328 }
329 //******************************************************************************
330
331 RecMdcDedxCol::const_iterator recMdcDedx;
332
333 for ( recMdcDedx = recMdcDedxCol->begin(); recMdcDedx != recMdcDedxCol->end(); recMdcDedx++ )
334 {
335 Int_t trackId = ( *recMdcDedx )->trackId();
336 Int_t particleId = ( *recMdcDedx )->particleId();
337 Int_t status = ( *recMdcDedx )->status();
338 Int_t truncAlg = ( *recMdcDedx )->truncAlg();
339 // Double_t pb[5];
340 // for (Int_t i = 0; i < 5; i++)
341 // pb[i] = (*dedxTds)->prob(i);
342 Double_t dedxHit = ( *recMdcDedx )->getDedxHit();
343 Double_t dedxEsat = ( *recMdcDedx )->getDedxEsat();
344 Double_t dedxNoRun = ( *recMdcDedx )->getDedxNoRun();
345 Double_t dedxMoment = ( *recMdcDedx )->getDedxMoment();
346
347 Double_t chiE = ( *recMdcDedx )->chi( 0 );
348 Double_t chiMu = ( *recMdcDedx )->chi( 1 );
349 Double_t chiPi = ( *recMdcDedx )->chi( 2 );
350 Double_t chiK = ( *recMdcDedx )->chi( 3 );
351 Double_t chiP = ( *recMdcDedx )->chi( 4 );
352
353 Int_t numGoodHits = ( *recMdcDedx )->numGoodHits();
354 Int_t numTotalHits = ( *recMdcDedx )->numTotalHits();
355
356 Double_t probPH = ( *recMdcDedx )->probPH();
357 Double_t normPH = ( *recMdcDedx )->normPH();
358 Double_t errorPH = ( *recMdcDedx )->errorPH();
359 Double_t twentyPH = ( *recMdcDedx )->twentyPH();
360 // Double_t fracErrPH = (*dedxTds)-> fracErrPH();
361 // Double_t minIronPH = (*dedxTds)->minIronPH();
362 // Double_t corrPH = (*dedxTds)->corrPH();
363 double dedxExpect[5], sigmaDedx[5], pidProb[5], chi[5];
364 for ( int i = 0; i < 5; i++ )
365 {
366 chi[i] = ( *recMdcDedx )->chi( i );
367 dedxExpect[i] = ( *recMdcDedx )->getDedxExpect( i );
368 sigmaDedx[i] = ( *recMdcDedx )->getSigmaDedx( i );
369 pidProb[i] = ( *recMdcDedx )->getPidProb( i );
370 }
371
372 log << MSG::DEBUG << "DataObjectToTObject: check Reconstrunction of dE/dx::"
373 << " trackId: " << trackId << " particleId: " << particleId << " status: " << status
374 << " truncAlg: " << truncAlg << " chiPi: " << chiPi
375 << " numTotalHits: " << numTotalHits << " probPH: " << probPH
376 << " errorPH: " << errorPH << " dedxExpect[2]: " << dedxExpect[2] << endmsg;
377
378 TRecMdcDedx* recMdcDedxRoot = new TRecMdcDedx();
379 // m_common.m_recMdcDedxMap[(*recMdcDedx)] = recMdcDedxRoot;
380 // std::cout<<"check write to Reconstrunction root particle Id is
381 // "<<dedxRoot->particleId()<<endl;
382 recMdcDedxRoot->setTrackId( trackId );
383 recMdcDedxRoot->setParticleId( particleId );
384 recMdcDedxRoot->setStatus( status );
385 recMdcDedxRoot->setTruncAlg( truncAlg );
386
387 // dedxRoot->setProb(pb);
388 recMdcDedxRoot->setChiE( chiE );
389 recMdcDedxRoot->setChiMu( chiMu );
390 recMdcDedxRoot->setChiPi( chiPi );
391 recMdcDedxRoot->setChiK( chiK );
392 recMdcDedxRoot->setChiP( chiP );
393
394 recMdcDedxRoot->setNumGoodHits( numGoodHits );
395 recMdcDedxRoot->setNumTotalHits( numTotalHits );
396
397 recMdcDedxRoot->setProbPH( probPH );
398 recMdcDedxRoot->setNormPH( normPH );
399 recMdcDedxRoot->setErrorPH( errorPH );
400 recMdcDedxRoot->setTwentyPH( twentyPH );
401 // for (int i=0; i<5; i++){
402 recMdcDedxRoot->setChi( chi );
403 recMdcDedxRoot->setDedxExpect( dedxExpect );
404 recMdcDedxRoot->setSigmaDedx( sigmaDedx );
405 recMdcDedxRoot->setPidProb( pidProb );
406
407 recMdcDedxRoot->setDedxHit( dedxHit );
408 recMdcDedxRoot->setDedxEsat( dedxEsat );
409 recMdcDedxRoot->setDedxNoRun( dedxNoRun );
410 recMdcDedxRoot->setDedxMoment( dedxMoment );
411 //}
412
413 if ( ( *recMdcDedx )->isMdcTrackValid() )
414 {
415 RecMdcTrackCol::iterator it =
416 find( recMdcTrackColbegin, recMdcTrackColend, ( *recMdcDedx )->getMdcTrack() );
417 recMdcDedxRoot->setMdcTrackId( it - recMdcTrackColbegin );
418 }
419 else { recMdcDedxRoot->setMdcTrackId( -1 ); }
420
421 if ( ( *recMdcDedx )->isMdcKalTrackValid() )
422 {
423 RecMdcKalTrackCol::iterator it = find( recMdcKalTrackColbegin, recMdcKalTrackColend,
424 ( *recMdcDedx )->getMdcKalTrack() );
425 recMdcDedxRoot->setMdcKalTrackId( it - recMdcKalTrackColbegin );
426 }
427 else { recMdcDedxRoot->setMdcKalTrackId( -1 ); }
428
429 log << MSG::INFO << "check Reconstrunction root"
430 << " particle Id is : " << particleId << "track id is : " << trackId
431 << " and status is : " << status << endmsg;
432
433 // dedxRoot->setFracErrPH(fracErrPH);
434 // dedxRoot->setMinIronPH(minIronPH);
435 // dedxRoot->setCorrPH(corrPH);
436 recEvt->addRecMdcDedx( recMdcDedxRoot );
437 }
438
439 return StatusCode::SUCCESS;
440}
IDataProviderSvc * m_eds
pointer to eventdataservice
void setDedxMoment(const Double_t dedx_momentum)
void addRecMdcDedx(TRecMdcDedx *Track)
Add a Dedx into the TOF Data collection.
const TObjArray * getRecMdcDedxCol() const
retrieve the whole TObjArray of Dedx Data

◆ DataObjectToTObject() [2/3]

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

transformation to root

Implements RootEventBaseCnv.

◆ DataObjectToTObject() [3/3]

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

transformation to root

Implements RootEventBaseCnv.

◆ TObjectToDataObject() [1/3]

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

transformation from root

Implements RootEventBaseCnv.

Definition at line 43 of file RecMdcDedxCnv.cxx.

43 {
44 // creation of TDS object from root object
45 MsgStream log( msgSvc(), "RecMdcDedxCnv" );
46 log << MSG::DEBUG << "RecMdcDedxCnv::TObjectToDataObject" << endmsg;
47 StatusCode sc = StatusCode::SUCCESS;
48
49 // create the TDS location for the Dedx Collection
50 RecMdcDedxCol* recMdcDedxCol = new RecMdcDedxCol;
51 refpObject = recMdcDedxCol;
52
53 if ( !m_recMdcDedxCol ) return sc;
54
55 //*******************Dst to Rec convert in case of no Rec data in
56 // TDS****************************
57 IDataProviderSvc* dataSvc = 0;
58 sc = serviceLocator()->getService( "EventDataSvc", IDataProviderSvc::interfaceID(),
59 (IInterface*&)dataSvc );
60 if ( sc.isFailure() )
61 {
62 log << MSG::FATAL << "Could not get EventDataSvc in RecMdcDedxCnv" << endmsg;
63 return sc;
64 }
65
66 //----------get hit smartRefVector--------
67 SmartDataPtr<RecMdcDedxHitCol> recMdcDedxHitCol( dataSvc, "/Event/Recon/RecMdcDedxHitCol" );
68 if ( !recMdcDedxHitCol )
69 {
70 log << MSG::FATAL << "Could not find RecMdcDedxHitCol" << endmsg;
71 return ( StatusCode::FAILURE );
72 }
73
74 int trackID;
75 // Retrieve Mdc Track
76 SmartDataPtr<RecMdcTrackCol> mdcTrackCol( dataSvc, EventModel::Recon::RecMdcTrackCol );
77 if ( !mdcTrackCol )
78 {
79 log << MSG::INFO << "Could not find RecMdcTrackCol" << endmsg;
80 SmartDataPtr<DstMdcTrackCol> dstMdcTrackCol( dataSvc, "/Event/Dst/DstMdcTrackCol" );
81 if ( !dstMdcTrackCol ) { log << MSG::INFO << "Could not find DstMdcTrackCol" << endmsg; }
82 else
83 {
84 RecMdcTrackCol* mdcTrackCol = new RecMdcTrackCol();
85 DstMdcTrackCol::iterator iter_mdc = dstMdcTrackCol->begin();
86 trackID = 0;
87 for ( ; iter_mdc != dstMdcTrackCol->end(); iter_mdc++, trackID++ )
88 {
89 RecMdcTrack* recMdcTrack = new RecMdcTrack();
90 *recMdcTrack = **iter_mdc;
91 ( *mdcTrackCol ).push_back( recMdcTrack );
92 log << MSG::INFO << " Mdc Track ID = " << trackID
93 << " Mdc Track Nster = " << ( *iter_mdc )->nster() << endmsg;
94 }
95 sc = dataSvc->registerObject( EventModel::Recon::RecMdcTrackCol, mdcTrackCol );
96 }
97 }
98
99 // Retrieve MdcKal track
100 SmartDataPtr<RecMdcKalTrackCol> mdcKalTrackCol( dataSvc,
102 if ( !mdcKalTrackCol )
103 {
104 log << MSG::INFO << "Could not find RecMdcKalTrackCol" << endmsg;
105 SmartDataPtr<DstMdcKalTrackCol> dstMdcKalTrackCol( dataSvc,
106 "/Event/Dst/DstMdcKalTrackCol" );
107 if ( !dstMdcKalTrackCol )
108 { log << MSG::INFO << "Could not find DstMdcKalTrackCol" << endmsg; }
109 else
110 {
111 RecMdcKalTrackCol* mdcKalTrackCol = new RecMdcKalTrackCol();
112 DstMdcKalTrackCol::iterator iter_mdc = dstMdcKalTrackCol->begin();
113 trackID = 0;
114 for ( ; iter_mdc != dstMdcKalTrackCol->end(); iter_mdc++, trackID++ )
115 {
116 RecMdcKalTrack* recMdcKalTrack = new RecMdcKalTrack();
117 *recMdcKalTrack = **iter_mdc;
118 ( *mdcKalTrackCol ).push_back( recMdcKalTrack );
119 log << MSG::INFO << " MdcKalTrack ID = " << trackID
120 << " MdcKalTrack Nster = " << ( *iter_mdc )->nster()
121 << " MdcKalTrack poca = " << ( *iter_mdc )->poca() << endmsg;
122 }
123 sc = dataSvc->registerObject( EventModel::Recon::RecMdcKalTrackCol, mdcKalTrackCol );
124 }
125 }
126
127 //**********************************************************************
128 // now convert
129 TIter dedxIter( m_recMdcDedxCol );
130 TRecMdcDedx* recMdcDedxRoot = 0;
131 while ( ( recMdcDedxRoot = (TRecMdcDedx*)dedxIter.Next() ) )
132 {
133 double dedxHit = recMdcDedxRoot->dedxHit();
134 double dedxEsat = recMdcDedxRoot->dedxEsat();
135 double dedxNoRun = recMdcDedxRoot->dedxNoRun();
136 double dedxMoment = recMdcDedxRoot->dedxMoment();
137
138 int trackId = recMdcDedxRoot->trackId();
139 int particleId = recMdcDedxRoot->particleId();
140 int status = recMdcDedxRoot->status();
141 int truncAlg = recMdcDedxRoot->truncAlg();
142 // double pb[5];
143 // for ( int i = 0; i < 5; i++)
144 // pb[i] = dedxRoot->prob(i);
145
146 // double numSigmaE = dedxRoot->numSigmaE();
147 // double numSigmaMu = dedxRoot->numSigmaMu();
148 // double numSigmaPi = dedxRoot->numSigmaPi();
149 // double numSigmaK = dedxRoot->numSigmaK();
150 // double numSigmaP = dedxRoot->numSigmaP();
151 double chi[5];
152 chi[0] = recMdcDedxRoot->chiE();
153 chi[1] = recMdcDedxRoot->chiMu();
154 chi[2] = recMdcDedxRoot->chiPi();
155 chi[3] = recMdcDedxRoot->chiK();
156 chi[4] = recMdcDedxRoot->chiP();
157 int numGoodHits = recMdcDedxRoot->numGoodHits();
158 int numTotalHits = recMdcDedxRoot->numTotalHits();
159
160 double probPH = recMdcDedxRoot->probPH();
161 double normPH = recMdcDedxRoot->normPH();
162 double errorPH = recMdcDedxRoot->errorPH();
163 double twentyPH = recMdcDedxRoot->twentyPH();
164 double dedxExpect[5], sigmaDedx[5], pidProb[5];
165
166 for ( int i = 0; i < 5; i++ )
167 {
168 dedxExpect[i] = recMdcDedxRoot->dedxExpect( i );
169 sigmaDedx[i] = recMdcDedxRoot->sigmaDedx( i );
170 pidProb[i] = recMdcDedxRoot->pidProb( i );
171 }
172
173 log << MSG::DEBUG << "TObjectToDataObject: check Reconstrunction of dE/dx root::"
174 << " trackId: " << trackId << " particleId: " << particleId << " status: " << status
175 << " truncAlg: " << truncAlg << " chi[2]: " << chi[2]
176 << " numTotalHits: " << numTotalHits << " probPH: " << probPH
177 << " errorPH: " << errorPH << " dedxExpect[2]: " << dedxExpect[2] << endmsg;
178
179 RecMdcDedx* recMdcDedx = new RecMdcDedx();
180 m_common.m_rootRecMdcDedxMap[recMdcDedxRoot] = recMdcDedx;
181
182 recMdcDedx->setTrackId( trackId );
183 recMdcDedx->setParticleId( particleId );
184 recMdcDedx->setStatus( status );
185 recMdcDedx->setTruncAlg( truncAlg );
186 // dedxTds->setProb(pb);
187 // dedxTds->setNumSigmaE(numSigmaE);
188 // dedxTds->setNumSigmaMu(numSigmaMu);
189 // dedxTds->setNumSigmaPi(numSigmaPi);
190 // dedxTds->setNumSigmaK(numSigmaK);
191 // dedxTds->setNumSigmaP(numSigmaP);
192 recMdcDedx->setChi( chi );
193 recMdcDedx->setNumGoodHits( numGoodHits );
194 recMdcDedx->setNumTotalHits( numTotalHits );
195
196 recMdcDedx->setProbPH( probPH );
197 recMdcDedx->setNormPH( normPH );
198 recMdcDedx->setErrorPH( errorPH );
199 recMdcDedx->setTwentyPH( twentyPH );
200 // for (int i=0; i<5; i++){
201 recMdcDedx->setDedxExpect( dedxExpect );
202 recMdcDedx->setSigmaDedx( sigmaDedx );
203 recMdcDedx->setPidProb( pidProb );
204
205 recMdcDedx->setDedxHit( dedxHit );
206 recMdcDedx->setDedxEsat( dedxEsat );
207 recMdcDedx->setDedxNoRun( dedxNoRun );
208 recMdcDedx->setDedxMoment( dedxMoment );
209 //}
210
211 DedxHitRefVec theDedxHitRefVec;
212 RecMdcDedxHitCol::iterator iter = recMdcDedxHitCol->begin();
213 for ( ; iter != recMdcDedxHitCol->end(); iter++ )
214 {
215 if ( ( *iter )->getTrkId() == trackId )
216 {
217 SmartRef<RecMdcDedxHit> refDedxHit( *iter );
218 theDedxHitRefVec.push_back( refDedxHit );
219 }
220 }
221 recMdcDedx->setVecDedxHits( theDedxHitRefVec );
222 int nhits = recMdcDedx->getVecDedxHits().size();
223 // std::cout<<" mdc hits: "<<nhits<< std::endl;
224 for ( int ii = 0; ii < nhits; ii++ )
225 {
226 Identifier id( recMdcDedx->getVecDedxHits()[ii]->getMdcId() );
227 int layer = MdcID::layer( id );
228 int wire = MdcID::wire( id );
229 // cout<<"layer: "<<layer<<" wire: "<<wire<<endl;
230 }
231
232 int mdcTrackId = recMdcDedxRoot->mdcTrackId();
233 // std::cout << __FILE__ << __LINE__ << " size: " << mdcTrackCol->size() << " id: " <<
234 // mdcTrackId << std::endl;
235 if ( mdcTrackId >= 0 )
236 {
237 recMdcDedx->setMdcTrack(
238 dynamic_cast<RecMdcTrack*>( mdcTrackCol->containedObject( mdcTrackId ) ) );
239 }
240 int mdcKalTrackId = recMdcDedxRoot->mdcKalTrackId();
241 // std::cout << __FILE__ << __LINE__ << " size: " << mdcKalTrackCol->size() << " id: " <<
242 // mdcKalTrackId<< std::endl;
243 if ( mdcKalTrackId >= 0 )
244 {
245 recMdcDedx->setMdcKalTrack(
246 dynamic_cast<RecMdcKalTrack*>( mdcKalTrackCol->containedObject( mdcKalTrackId ) ) );
247 }
248
249 recMdcDedxCol->push_back( recMdcDedx );
250 // delete dedxTds;
251 // dedxTds = NULL;
252 }
253 // m_dedxCol->Delete();
254 delete m_recMdcDedxCol;
255 m_recMdcDedxCol = 0;
256
257 return StatusCode::SUCCESS;
258}
EvtStreamInputIterator< typename Generator::result_type > iter(Generator gen, int N=0)
SmartRefVector< RecMdcDedxHit > DedxHitRefVec
static int layer(const Identifier &id)
Values of different levels (failure returns 0).
Definition MdcID.cxx:47
static int wire(const Identifier &id)
Definition MdcID.cxx:52
void setVecDedxHits(const DedxHitRefVec &vecdedxhit)

◆ TObjectToDataObject() [2/3]

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

transformation from root

Implements RootEventBaseCnv.

◆ TObjectToDataObject() [3/3]

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

transformation from root

Implements RootEventBaseCnv.

◆ CnvFactory< RecMdcDedxCnv >

friend class CnvFactory< RecMdcDedxCnv >
friend

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