1#ifndef RecMucTrackCnv_CXX
2#define RecMucTrackCnv_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 "MucRecEvent/RecMucTrack.h"
13#include "ReconEvent/ReconEvent.h"
16#include "RootEventData/TRecMucTrack.h"
18#include "RootEventData/TRecTrackEvent.h"
20#include "RootCnvSvc/Rec/RecMucTrackCnv.h"
21#include "RootCnvSvc/Rec/RecTrackCnv.h"
22#include "RootCnvSvc/RootAddress.h"
53 MsgStream log(
msgSvc(),
"RecMucTrackCnv" );
54 log << MSG::DEBUG <<
"RecMucTrackCnv::TObjectToDataObject" << endmsg;
55 StatusCode sc = StatusCode::SUCCESS;
59 refpObject = mucTrackTdsCol;
62 if ( !m_recMucTrackCol )
return sc;
63 TIter mucTrackIter( m_recMucTrackCol );
65 while ( ( mucTrackRoot = (
TRecMucTrack*)mucTrackIter.Next() ) )
68 int trackId = mucTrackRoot->
trackId();
69 int id = mucTrackRoot->
id();
70 int st = mucTrackRoot->
status();
73 int startPart = mucTrackRoot->
startPart();
74 int endPart = mucTrackRoot->
endPart();
77 int numHits = mucTrackRoot->
numHits();
78 int numLayers = mucTrackRoot->
numLayers();
81 double depth = mucTrackRoot->
depth();
82 double chi2 = mucTrackRoot->
chi2();
83 int dof = mucTrackRoot->
dof();
84 double rms = mucTrackRoot->
rms();
86 double xPos = mucTrackRoot->
xPos();
87 double yPos = mucTrackRoot->
yPos();
88 double zPos = mucTrackRoot->
zPos();
90 double xPosSigma = mucTrackRoot->
xPosSigma();
91 double yPosSigma = mucTrackRoot->
yPosSigma();
92 double zPosSigma = mucTrackRoot->
zPosSigma();
94 double px = mucTrackRoot->
px();
95 double py = mucTrackRoot->
py();
96 double pz = mucTrackRoot->
pz();
98 double distance = mucTrackRoot->
distance();
99 double deltaphi = mucTrackRoot->
deltaPhi();
102 vector<int> vecHits = mucTrackRoot->
vecHits();
103 vector<int> expHits = mucTrackRoot->
expHits();
104 vector<float> distHits = mucTrackRoot->
distHits();
107 double krechi2 = mucTrackRoot->
kalRechi2();
108 int kdof = mucTrackRoot->
kaldof();
109 double kdepth = mucTrackRoot->
kaldepth();
117 m_common.m_rootRecMucTrackMap[mucTrackRoot] = mucTrackTds;
120 mucTrackTds->
setId(
id );
134 mucTrackTds->
setDof( dof );
135 mucTrackTds->
setRms( rms );
145 mucTrackTds->
setPx( px );
146 mucTrackTds->
setPy( py );
147 mucTrackTds->
setPz( pz );
165 mucTrackTdsCol->push_back( mucTrackTds );
171 delete m_recMucTrackCol;
172 m_recMucTrackCol = 0;
173 return StatusCode::SUCCESS;
178 MsgStream log(
msgSvc(),
"RecMucTrackCnv" );
179 log << MSG::DEBUG <<
"RecMucTrackCnv::DataObjectToTObject" << endmsg;
180 StatusCode sc = StatusCode::SUCCESS;
183 if ( !mucTrackColTds )
185 log << MSG::ERROR <<
"Could not downcast to RecMucTrackCol" << endmsg;
186 return StatusCode::FAILURE;
193 log << MSG::ERROR <<
"Could not get RecEvent in TDS " << endmsg;
194 return StatusCode::FAILURE;
198 { log << MSG::ERROR <<
"RecMucTrackCnv:Could not downcast to TDS DigiEvent" << endmsg; }
199 IOpaqueAddress* addr;
201 m_cnvSvc->getRecTrackCnv()->createRep( evt, addr );
205 if ( !m_recMucTrackCol )
return sc;
208 RecMucTrackCol::const_iterator mucTrackTds;
210 for ( mucTrackTds = mucTrackColTds->begin(); mucTrackTds != mucTrackColTds->end();
213 Int_t trackId = ( *mucTrackTds )->trackId();
214 Int_t
id = ( *mucTrackTds )->id();
215 Int_t st = ( *mucTrackTds )->status();
216 Int_t
type = ( *mucTrackTds )->
type();
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();
226 Double_t depth = ( *mucTrackTds )->depth();
227 Double_t chi2 = ( *mucTrackTds )->chi2();
228 Int_t dof = ( *mucTrackTds )->dof();
229 Double_t rms = ( *mucTrackTds )->rms();
231 Double_t xPos = ( *mucTrackTds )->xPos();
232 Double_t yPos = ( *mucTrackTds )->yPos();
233 Double_t zPos = ( *mucTrackTds )->zPos();
235 Double_t xPosSigma = ( *mucTrackTds )->xPosSigma();
236 Double_t yPosSigma = ( *mucTrackTds )->yPosSigma();
237 Double_t zPosSigma = ( *mucTrackTds )->zPosSigma();
239 Double_t distance = ( *mucTrackTds )->distance();
240 Double_t deltaphi = ( *mucTrackTds )->deltaPhi();
242 Double_t px = ( *mucTrackTds )->px();
243 Double_t py = ( *mucTrackTds )->py();
244 Double_t pz = ( *mucTrackTds )->pz();
246 vector<Int_t> vecHits = ( *mucTrackTds )->getVecHits();
247 vector<Int_t> expHits = ( *mucTrackTds )->getExpHits();
248 vector<Float_t> distHits = ( *mucTrackTds )->getDistHits();
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();
276 mucTrackRoot->
setId(
id );
290 mucTrackRoot->
setDof( dof );
291 mucTrackRoot->
setRms( rms );
308 mucTrackRoot->
setPx( px );
309 mucTrackRoot->
setPy( py );
310 mucTrackRoot->
setPz( pz );
326 return StatusCode::SUCCESS;
ObjectVector< RecMucTrack > RecMucTrackCol
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 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)
RecMucTrackCnv(ISvcLocator *svc)
virtual StatusCode TObjectToDataObject(DataObject *&obj)
transformation from root
virtual StatusCode DataObjectToTObject(DataObject *obj, RootAddress *addr)
transformation to root
static const CLID & classID()
void setDistHits(vector< float > &disthits)
void setExpHits(vector< MucRecHit * > &pHits)
void setTrackId(const int trackId)
set the index for this track.
void setVecHits(vector< MucRecHit * > &pHits)
reload setVecHits
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)
Double_t zPosSigma() const
Int_t brLastLayer() const
void setRms(Double_t rms)
void setMaxHitsInLayer(Int_t maxHits)
void setkalbrLastLayer(Int_t br)
void setEcLastLayer(Int_t layer)
void setDistHits(vector< Float_t > &distHits)
Double_t kalRechi2() const
void setExpHits(vector< Int_t > &expHits)
Double_t distance() const
void setVecHits(vector< Int_t > &vecHits)
void setYPosSigma(Double_t y)
vector< Int_t > vecHits() const
void setkalecLastLayer(Int_t ec)
vector< Int_t > expHits() const
Int_t maxHitsInLayer() const
void setStartPart(Int_t part)
Double_t xPosSigma() const
void setNumHits(Int_t numHits)
void setBrLastLayer(Int_t layer)
vector< Float_t > distHits() const
void setDeltaPhi(Double_t dphi)
void setEndPart(Int_t part)
void setTrackId(Int_t trackId)
Int_t ecLastLayer() const
void setkalRechi2(Double_t ch)
void setNumLayers(Int_t numLayers)
Double_t deltaPhi() const
void setDepth(Double_t depth)
void setXPosSigma(Double_t x)
Int_t kalecLastLayer() const
void setChi2(Double_t chi2)
Int_t kalbrLastLayer() const
Double_t kaldepth() const
void setZPosSigma(Double_t z)
void setkalDepth(Double_t de)
Double_t yPosSigma() const
void setDistance(Double_t dist)
void addMucTrack(TRecMucTrack *Track)
Add a MucTrack into the TOF Data collection.
void clearMucTrackCol()
clear the whole array
const TObjArray * getMucTrackCol() const
retrieve the whole TObjArray of MucTrack Data
_EXTERN_ std::string Event