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

#include <RecMdcDedxHitCnv.h>

Inheritance diagram for RecMdcDedxHitCnv:

Public Member Functions

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

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

◆ ~RecMdcDedxHitCnv() [1/3]

virtual RecMdcDedxHitCnv::~RecMdcDedxHitCnv ( )
inlinevirtual

◆ RecMdcDedxHitCnv() [1/3]

RecMdcDedxHitCnv::RecMdcDedxHitCnv ( ISvcLocator * svc)

Definition at line 28 of file RecMdcDedxHitCnv.cxx.

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

◆ ~RecMdcDedxHitCnv() [2/3]

virtual RecMdcDedxHitCnv::~RecMdcDedxHitCnv ( )
inlinevirtual

◆ RecMdcDedxHitCnv() [2/3]

RecMdcDedxHitCnv::RecMdcDedxHitCnv ( ISvcLocator * svc)

◆ ~RecMdcDedxHitCnv() [3/3]

virtual RecMdcDedxHitCnv::~RecMdcDedxHitCnv ( )
inlinevirtual

◆ RecMdcDedxHitCnv() [3/3]

RecMdcDedxHitCnv::RecMdcDedxHitCnv ( ISvcLocator * svc)

Member Function Documentation

◆ classID() [1/3]

const CLID & RecMdcDedxHitCnv::classID ( )
inlinestatic

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

19{ return CLID_RecMdcDedxHitCol; }
const CLID & CLID_RecMdcDedxHitCol

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

◆ classID() [2/3]

const CLID & RecMdcDedxHitCnv::classID ( )
inlinestatic

◆ classID() [3/3]

const CLID & RecMdcDedxHitCnv::classID ( )
inlinestatic

◆ DataObjectToTObject() [1/3]

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

transformation to root

Implements RootEventBaseCnv.

Definition at line 129 of file RecMdcDedxHitCnv.cxx.

129 {
130 MsgStream log( msgSvc(), "RecMdcDedxHitCnv" );
131 log << MSG::DEBUG << "RecMdcDedxHitCnv::DataObjectToTObject" << endmsg;
132 StatusCode sc = StatusCode::SUCCESS;
133
134 RecMdcDedxHitCol* recMdcDedxHitCol = dynamic_cast<RecMdcDedxHitCol*>( obj );
135 if ( !recMdcDedxHitCol )
136 {
137 log << MSG::ERROR << "Could not downcast to RecMdcDedxHitCol" << endmsg;
138 return StatusCode::FAILURE;
139 }
140
141 DataObject* evt;
142 m_eds->findObject( EventModel::Recon::Event, evt );
143 if ( evt == NULL )
144 {
145 log << MSG::ERROR << "Could not get RecEvent in TDS " << endmsg;
146 return StatusCode::FAILURE;
147 }
148 ReconEvent* devtTds = dynamic_cast<ReconEvent*>( evt );
149 if ( !devtTds )
150 { log << MSG::ERROR << "RecMdcDedxHitCnv:Could not downcast to TDS RecEvent" << endmsg; }
151 IOpaqueAddress* addr;
152 m_cnvSvc->getRecTrackCnv()->createRep( evt, addr );
153 TRecTrackEvent* recEvt = m_cnvSvc->getRecTrackCnv()->getWriteObject();
154 const TObjArray* m_recMdcDedxHitCol = recEvt->getRecMdcDedxHitCol();
155 if ( !m_recMdcDedxHitCol ) return sc;
156 recEvt->clearRecMdcDedxHitCol(); // necessary in case there is I/O at the same time since
157 // array is static
158
159 //******************** get according mdcHIt and mdcKalHelixSeg of MdcDedxHit ****************
160
161 RecMdcHitCol::iterator recMdcHitColbegin, recMdcHitColend;
162 RecMdcKalHelixSegCol::iterator recMdcKalHelixSegColbegin, recMdcKalHelixSegColend;
163
164 IDataProviderSvc* dataSvc = 0;
165 sc = serviceLocator()->getService( "EventDataSvc", IDataProviderSvc::interfaceID(),
166 (IInterface*&)dataSvc );
167 if ( sc.isFailure() )
168 {
169 log << MSG::FATAL << "Could not get EventDataSvc in RecMdcDedxHitCnv" << endmsg;
170 return sc;
171 }
172
173 // Retrieve Mdc Hit
174 SmartDataPtr<RecMdcHitCol> recMdcHitCol( dataSvc, EventModel::Recon::RecMdcHitCol );
175 if ( !recMdcHitCol )
176 {
177 log << MSG::ERROR << "Could not downcast to RecMdcHitCol" << endmsg;
178 return StatusCode::FAILURE;
179 }
180 else
181 {
182 recMdcHitColbegin = recMdcHitCol->begin();
183 recMdcHitColend = recMdcHitCol->end();
184 }
185
186 SmartDataPtr<RecMdcKalHelixSegCol> recMdcKalHelixSegCol(
188 if ( !recMdcKalHelixSegCol )
189 {
190 log << MSG::ERROR << "Could not downcast to RecMdcKalHelixSegCol" << endmsg;
191 return StatusCode::FAILURE;
192 }
193 else
194 {
195 recMdcKalHelixSegColbegin = recMdcKalHelixSegCol->begin();
196 recMdcKalHelixSegColend = recMdcKalHelixSegCol->end();
197 }
198 //******************************************************************************
199
200 RecMdcDedxHitCol::const_iterator recMdcDedxHit;
201 for ( recMdcDedxHit = recMdcDedxHitCol->begin(); recMdcDedxHit != recMdcDedxHitCol->end();
202 recMdcDedxHit++ )
203 {
204 int trackId = ( *recMdcDedxHit )->getTrkId();
205 int flagLR = ( *recMdcDedxHit )->getFlagLR();
206 UInt_t mdcId = ( *recMdcDedxHit )->getMdcId().get_value();
207 double pathlength = ( *recMdcDedxHit )->getPathLength();
208 double dedx = ( *recMdcDedxHit )->getDedx();
209
210 log << MSG::DEBUG << "DataObjectToTObject: check Reconstrunction of dE/dx Hit::"
211 << " trackId: " << trackId << " flagLR: " << flagLR << " pathlength: " << pathlength
212 << " dedx: " << dedx << endmsg;
213 TRecMdcDedxHit* recMdcDedxHitRoot = new TRecMdcDedxHit();
214 // m_common.m_recMdcDedxHitMap[(*recMdcDedxHit)] = recMdcDedxHitRoot;
215 recMdcDedxHitRoot->setTrkId( trackId );
216 recMdcDedxHitRoot->setFlagLR( flagLR );
217 recMdcDedxHitRoot->setMdcId( mdcId );
218 recMdcDedxHitRoot->setPathLength( pathlength );
219 recMdcDedxHitRoot->setDedx( dedx );
220
221 // int trackId1 = recMdcDedxHitRoot->trkId();
222 // cout<<"trackId: "<<trackId1<<endl;
223 // int flagLR1 = recMdcDedxHitRoot->flagLR();
224 // cout<<"flagLR: "<<flagLR1<<endl;
225 // long int mdcId1(recMdcDedxHitRoot->mdcId());
226 // cout<<"mdcID: "<<mdcId1<<endl;
227 // double pathlength1 = recMdcDedxHitRoot->pathLength();
228 // cout<<"pathlength: " <<pathlength1<<endl;
229 // double dedx1 = recMdcDedxHitRoot->getDedx();
230 // cout<<"dedx: "<<dedx1<<endl;
231
232 if ( ( *recMdcDedxHit )->isMdcHitValid() )
233 {
234 RecMdcHitCol::iterator it =
235 find( recMdcHitColbegin, recMdcHitColend, ( *recMdcDedxHit )->getMdcHit() );
236 recMdcDedxHitRoot->setMdcHitId( it - recMdcHitColbegin );
237 }
238 else { recMdcDedxHitRoot->setMdcHitId( -1 ); }
239
240 if ( ( *recMdcDedxHit )->isMdcKalHelixSegValid() )
241 {
242 RecMdcKalHelixSegCol::iterator it =
243 find( recMdcKalHelixSegColbegin, recMdcKalHelixSegColend,
244 ( *recMdcDedxHit )->getMdcKalHelixSeg() );
245 recMdcDedxHitRoot->setMdcKalHelixSegId( it - recMdcKalHelixSegColbegin );
246 }
247 else { recMdcDedxHitRoot->setMdcKalHelixSegId( -1 ); }
248
249 // log << MSG::DEBUG<<"check Reconstrunction of dE/dx Hit root"<<" pathlength 2 is :
250 // "<<(*recMdcDedxHit)->getPathLength()<<endmsg;
251 recEvt->addRecMdcDedxHit( recMdcDedxHitRoot );
252 }
253
254 return StatusCode::SUCCESS;
255}
IDataProviderSvc * m_eds
pointer to eventdataservice
const TObjArray * getRecMdcDedxHitCol() const
retrieve the whole TObjArray of Dedx Data
void addRecMdcDedxHit(TRecMdcDedxHit *Track)
Add a Dedx into the TOF Data collection.

◆ DataObjectToTObject() [2/3]

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

transformation to root

Implements RootEventBaseCnv.

◆ DataObjectToTObject() [3/3]

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

transformation to root

Implements RootEventBaseCnv.

◆ TObjectToDataObject() [1/3]

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

transformation from root

Implements RootEventBaseCnv.

Definition at line 41 of file RecMdcDedxHitCnv.cxx.

41 {
42 // creation of TDS object from root object
43 MsgStream log( msgSvc(), "RecMdcDedxHitCnv" );
44 log << MSG::DEBUG << "RecMdcDedxHitCnv::TObjectToDataObject" << endmsg;
45 StatusCode sc = StatusCode::SUCCESS;
46 // create the TDS location for the Dedx Collection
47 RecMdcDedxHitCol* recMdcDedxHitCol = new RecMdcDedxHitCol;
48 refpObject = recMdcDedxHitCol;
49
50 //***************************register rec hit data in TDS****************************
51 IDataProviderSvc* dataSvc = 0;
52 sc = serviceLocator()->getService( "EventDataSvc", IDataProviderSvc::interfaceID(),
53 (IInterface*&)dataSvc );
54 if ( sc.isFailure() )
55 {
56 log << MSG::FATAL << "Could not get EventDataSvc in RecMdcDedxHitCnv" << endmsg;
57 return sc;
58 }
59
60 // Retrieve Mdc Hit
61 SmartDataPtr<RecMdcHitCol> mdcHitCol( dataSvc, EventModel::Recon::RecMdcHitCol );
62 if ( !mdcHitCol ) { log << MSG::INFO << "Could not find RecMdcHitCol" << endmsg; }
63
64 // Retrieve MdcKal Helix Segment
65 SmartDataPtr<RecMdcKalHelixSegCol> mdcKalHelixSegCol(
67 if ( !mdcKalHelixSegCol )
68 { log << MSG::INFO << "Could not find RecMdcKalHelixSegCol" << endmsg; }
69 //**********************************************************************
70
71 // now convert
72 if ( !m_recMdcDedxHitCol ) return sc;
73 TIter dedxIter( m_recMdcDedxHitCol );
74 TRecMdcDedxHit* recMdcDedxHitRoot = 0;
75 while ( ( recMdcDedxHitRoot = (TRecMdcDedxHit*)dedxIter.Next() ) )
76 {
77 int trackId = recMdcDedxHitRoot->trkId();
78 // cout<<"trackId: "<<trackId<<endl;
79 int flagLR = recMdcDedxHitRoot->flagLR();
80 // cout<<"flagLR: "<<flagLR<<endl;
81 long int mdcId( recMdcDedxHitRoot->mdcId() );
82 // cout<<"mdcID: "<<mdcId<<endl;
83 double pathlength = recMdcDedxHitRoot->pathLength();
84 // cout<<"pathlength: " <<pathlength<<endl;
85 double dedx = recMdcDedxHitRoot->getDedx();
86 // cout<<"dedx: "<<dedx<<endl;
87
88 log << MSG::DEBUG << "TObjectToDataObject: check Reconstrunction of dE/dx Hit root::"
89 << " trackId: " << trackId << " flagLR: " << flagLR << " pathlength: " << pathlength
90 << " dedx: " << dedx << endmsg;
91 RecMdcDedxHit* recMdcDedxHit = new RecMdcDedxHit();
92 m_common.m_rootRecMdcDedxHitMap[recMdcDedxHitRoot] = recMdcDedxHit;
93 recMdcDedxHit->setTrkId( trackId );
94 recMdcDedxHit->setFlagLR( flagLR );
95 recMdcDedxHit->setMdcId( Identifier( mdcId ) );
96 recMdcDedxHit->setPathLength( pathlength );
97 recMdcDedxHit->setDedx( dedx );
98 // log << MSG::DEBUG<<"check Reconstrunction of dE/dx Hit root"<<" pathlength 2 is :
99 // "<<(*recdedxhit)->getPathLength()<<endmsg;
100
101 int mdcHitId = recMdcDedxHitRoot->mdcHitId();
102 // std::cout << __FILE__ << __LINE__ << " size: " << mdcHitCol->size() << " id: " <<
103 // mdcHitId << std::endl;
104 if ( mdcHitId >= 0 )
105 {
106 recMdcDedxHit->setMdcHit(
107 dynamic_cast<RecMdcHit*>( mdcHitCol->containedObject( mdcHitId ) ) );
108 }
109 int mdcKalHelixSegId = recMdcDedxHitRoot->mdcKalHelixSegId();
110 // std::cout << __FILE__ << __LINE__ << " size: " << mdcKalHelixSegCol->size() << " id: "
111 // << mdcKalHelixSegId << std::endl;
112 if ( mdcKalHelixSegId >= 0 )
113 {
114 recMdcDedxHit->setMdcKalHelixSeg( dynamic_cast<RecMdcKalHelixSeg*>(
115 mdcKalHelixSegCol->containedObject( mdcKalHelixSegId ) ) );
116 }
117
118 recMdcDedxHitCol->push_back( recMdcDedxHit );
119 // delete dedxTds;
120 // dedxTds = NULL;
121 }
122 // m_dedxCol->Delete();
123 delete m_recMdcDedxHitCol;
124 m_recMdcDedxHitCol = 0;
125
126 return StatusCode::SUCCESS;
127}
void setMdcKalHelixSeg(const RecMdcKalHelixSeg *mdcKalHelixSeg)

◆ TObjectToDataObject() [2/3]

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

transformation from root

Implements RootEventBaseCnv.

◆ TObjectToDataObject() [3/3]

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

transformation from root

Implements RootEventBaseCnv.

◆ CnvFactory< RecMdcDedxHitCnv >


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