2#define MucTrackCnv_CXX 1
4#include "GaudiKernel/DataObject.h"
5#include "GaudiKernel/MsgStream.h"
6#include "GaudiKernel/ObjectVector.h"
8#include "TClonesArray.h"
10#include "EventModel/EventModel.h"
12#include "DstEvent/DstEvent.h"
13#include "DstEvent/DstMucTrack.h"
14#include "RootEventData/TDstEvent.h"
15#include "RootEventData/TMucTrack.h"
17#include "RootCnvSvc/Dst/DstCnv.h"
18#include "RootCnvSvc/Dst/MucTrackCnv.h"
19#include "RootCnvSvc/RootAddress.h"
32 MsgStream log(
msgSvc(),
"MucTrackCnv" );
44 MsgStream log(
msgSvc(),
"MucTrackCnv" );
45 log << MSG::DEBUG <<
"MucTrackCnv::TObjectToDataObject" << endmsg;
46 StatusCode sc = StatusCode::SUCCESS;
50 refpObject = mucTrackTdsCol;
53 if ( !m_mucTrackCol )
return sc;
54 TIter mucTrackIter( m_mucTrackCol );
56 while ( ( mucTrackRoot = (
TMucTrack*)mucTrackIter.Next() ) )
59 int trackId = mucTrackRoot->
trackId();
60 int id = mucTrackRoot->
id();
61 int st = mucTrackRoot->
status();
64 int startPart = mucTrackRoot->
startPart();
65 int endPart = mucTrackRoot->
endPart();
68 int numHits = mucTrackRoot->
numHits();
69 int numLayers = mucTrackRoot->
numLayers();
72 double depth = mucTrackRoot->
depth();
73 double chi2 = mucTrackRoot->
chi2();
74 int dof = mucTrackRoot->
dof();
75 double rms = mucTrackRoot->
rms();
77 double xPos = mucTrackRoot->
xPos();
78 double yPos = mucTrackRoot->
yPos();
79 double zPos = mucTrackRoot->
zPos();
81 double xPosSigma = mucTrackRoot->
xPosSigma();
82 double yPosSigma = mucTrackRoot->
yPosSigma();
83 double zPosSigma = mucTrackRoot->
zPosSigma();
85 double px = mucTrackRoot->
px();
86 double py = mucTrackRoot->
py();
87 double pz = mucTrackRoot->
pz();
89 double distance = mucTrackRoot->
distance();
90 double deltaphi = mucTrackRoot->
deltaPhi();
93 double krechi2 = mucTrackRoot->
kalRechi2();
94 int kdof = mucTrackRoot->
kaldof();
95 double kdepth = mucTrackRoot->
kaldepth();
101 m_common.m_rootMucTrackMap[mucTrackRoot] = mucTrackTds;
104 mucTrackTds->
setId(
id );
118 mucTrackTds->
setDof( dof );
119 mucTrackTds->
setRms( rms );
129 mucTrackTds->
setPx( px );
130 mucTrackTds->
setPy( py );
131 mucTrackTds->
setPz( pz );
144 mucTrackTdsCol->push_back( mucTrackTds );
150 delete m_mucTrackCol;
152 return StatusCode::SUCCESS;
157 MsgStream log(
msgSvc(),
"MucTrackCnv" );
158 log << MSG::DEBUG <<
"MucTrackCnv::DataObjectToTObject" << endmsg;
159 StatusCode sc = StatusCode::SUCCESS;
162 if ( !mucTrackColTds )
164 log << MSG::ERROR <<
"Could not downcast to MucTrackCol" << endmsg;
165 return StatusCode::FAILURE;
172 log << MSG::ERROR <<
"Could not get DstEvent in TDS " << endmsg;
173 return StatusCode::FAILURE;
177 { log << MSG::ERROR <<
"MucTrackCnv:Could not downcast to TDS DigiEvent" << endmsg; }
178 IOpaqueAddress* addr;
180 m_cnvSvc->getDstCnv()->createRep( evt, addr );
184 if ( !m_mucTrackCol )
return sc;
187 DstMucTrackCol::const_iterator mucTrackTds;
189 for ( mucTrackTds = mucTrackColTds->begin(); mucTrackTds != mucTrackColTds->end();
192 Int_t trackId = ( *mucTrackTds )->trackId();
193 Int_t
id = ( *mucTrackTds )->id();
194 Int_t st = ( *mucTrackTds )->status();
195 Int_t
type = ( *mucTrackTds )->
type();
197 Int_t startPart = ( *mucTrackTds )->startPart();
198 Int_t endPart = ( *mucTrackTds )->endPart();
199 Int_t brLastLayer = ( *mucTrackTds )->brLastLayer();
200 Int_t ecLastLayer = ( *mucTrackTds )->ecLastLayer();
201 Int_t numHits = ( *mucTrackTds )->numHits();
202 Int_t numLayers = ( *mucTrackTds )->numLayers();
203 Int_t maxHitsInLayer = ( *mucTrackTds )->maxHitsInLayer();
205 Double_t depth = ( *mucTrackTds )->depth();
206 Double_t chi2 = ( *mucTrackTds )->chi2();
207 Int_t dof = ( *mucTrackTds )->dof();
208 Double_t rms = ( *mucTrackTds )->rms();
210 Double_t xPos = ( *mucTrackTds )->xPos();
211 Double_t yPos = ( *mucTrackTds )->yPos();
212 Double_t zPos = ( *mucTrackTds )->zPos();
214 Double_t xPosSigma = ( *mucTrackTds )->xPosSigma();
215 Double_t yPosSigma = ( *mucTrackTds )->yPosSigma();
216 Double_t zPosSigma = ( *mucTrackTds )->zPosSigma();
218 Double_t px = ( *mucTrackTds )->px();
219 Double_t py = ( *mucTrackTds )->py();
220 Double_t pz = ( *mucTrackTds )->pz();
222 Double_t distance = ( *mucTrackTds )->distance();
223 Double_t deltaphi = ( *mucTrackTds )->deltaPhi();
225 Double_t krechi2 = ( *mucTrackTds )->kalRechi2();
226 Int_t kdof = ( *mucTrackTds )->kaldof();
227 Double_t kdepth = ( *mucTrackTds )->kaldepth();
228 Int_t kbrlay = ( *mucTrackTds )->kalbrLastLayer();
229 Int_t keclay = ( *mucTrackTds )->kalecLastLayer();
238 mucTrackRoot->
setId(
id );
252 mucTrackRoot->
setDof( dof );
253 mucTrackRoot->
setRms( rms );
263 mucTrackRoot->
setPx( px );
264 mucTrackRoot->
setPy( py );
265 mucTrackRoot->
setPz( pz );
281 return StatusCode::SUCCESS;
ObjectVector< DstMucTrack > DstMucTrackCol
void setDistance(double dist)
void setkalbrLastLayer(int br)
void setMaxHitsInLayer(int maxHits)
void setEcLastLayer(int layer)
void setBrLastLayer(int layer)
void setYPosSigma(double ysigma)
void setDepth(double depth)
void setZPosSigma(double zsigma)
void setTrackId(int trackId)
void setkalecLastLayer(int ec)
void setXPosSigma(double xsigma)
void setStartPart(int part)
void setDeltaPhi(double dphi)
void setNumLayers(int numLayers)
void setNumHits(int numHits)
void setChi2(double chi2)
void setkalRechi2(double ch)
void setkalDepth(double de)
void setEndPart(int part)
static const CLID & classID()
MucTrackCnv(ISvcLocator *svc)
virtual StatusCode TObjectToDataObject(DataObject *&obj)
transformation from root
virtual StatusCode DataObjectToTObject(DataObject *obj, RootAddress *addr)
transformation to root
Definition of a Root address, derived from IOpaqueAddress.
IDataProviderSvc * m_eds
pointer to eventdataservice
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)
void clearMucTrackCol()
clear the whole array
void addMucTrack(TMucTrack *Track)
Add a MucTrack into the TOF Data collection.
const TObjArray * getMucTrackCol() const
retrieve the whole TObjArray of MucTrack Data
void setNumHits(Int_t numHits)
void setTrackId(Int_t trackId)
void setkalecLastLayer(Int_t ec)
void setEndPart(Int_t part)
void setBrLastLayer(Int_t layer)
void setDeltaPhi(double dphi)
Int_t kalbrLastLayer() const
Int_t brLastLayer() const
void setXPosSigma(Double_t x)
void setMaxHitsInLayer(Int_t maxHits)
Double_t deltaPhi() const
Double_t zPosSigma() const
void setkalRechi2(Double_t ch)
Int_t kalecLastLayer() const
Double_t kalRechi2() const
void setYPosSigma(Double_t y)
Double_t yPosSigma() const
void setkalDepth(Double_t de)
Double_t xPosSigma() const
void setDepth(Double_t depth)
void setStartPart(Int_t part)
void setChi2(Double_t chi2)
Double_t distance() const
void setkalbrLastLayer(Int_t br)
Int_t maxHitsInLayer() const
void setEcLastLayer(Int_t layer)
void setRms(Double_t rms)
void setDistance(double dist)
void setZPosSigma(Double_t z)
void setNumLayers(Int_t numLayers)
Int_t ecLastLayer() const
Double_t kaldepth() const
_EXTERN_ std::string Event