4#include "GaudiKernel/DataObject.h"
5#include "GaudiKernel/MsgStream.h"
6#include "GaudiKernel/ObjectVector.h"
8#include "TClonesArray.h"
10#include "DstEvent/DstEvent.h"
11#include "DstEvent/DstMdcDedx.h"
12#include "EventModel/EventModel.h"
13#include "RootEventData/TDstEvent.h"
14#include "RootEventData/TMdcDedx.h"
16#include "RootCnvSvc/Dst/DstCnv.h"
17#include "RootCnvSvc/Dst/MdcDedxCnv.h"
18#include "RootCnvSvc/RootAddress.h"
27 MsgStream log(
msgSvc(),
"MdcDedxCnv" );
38 MsgStream log(
msgSvc(),
"MdcDedxCnv" );
39 log << MSG::DEBUG <<
"MdcDedxCnv::TObjectToDataObject" << endmsg;
40 StatusCode sc = StatusCode::SUCCESS;
44 refpObject = mdcDedxTdsCol;
47 if ( !m_mdcDedxCol )
return sc;
48 TIter mdcDedxIter( m_mdcDedxCol );
50 while ( ( mdcDedxRoot = (
TMdcDedx*)mdcDedxIter.Next() ) )
53 int trackId = mdcDedxRoot->
trackId();
55 int status = mdcDedxRoot->
status();
56 int truncAlg = mdcDedxRoot->
truncAlg();
69 chi[0] = mdcDedxRoot->
chiE();
70 chi[1] = mdcDedxRoot->
chiMu();
71 chi[2] = mdcDedxRoot->
chiPi();
72 chi[3] = mdcDedxRoot->
chiK();
73 chi[4] = mdcDedxRoot->
chiP();
77 double probPH = mdcDedxRoot->
probPH();
78 double normPH = mdcDedxRoot->
normPH();
79 double errorPH = mdcDedxRoot->
errorPH();
80 double twentyPH = mdcDedxRoot->
twentyPH();
86 m_common.m_rootMdcDedxMap[mdcDedxRoot] = mdcDedxTds;
100 mdcDedxTds->
setChi( chi );
113 mdcDedxTdsCol->push_back( mdcDedxTds );
120 return StatusCode::SUCCESS;
125 MsgStream log(
msgSvc(),
"MdcDedxCnv" );
126 log << MSG::DEBUG <<
"MdcDedxCnv::DataObjectToTObject" << endmsg;
127 StatusCode sc = StatusCode::SUCCESS;
130 if ( !mdcDedxColTds )
132 log << MSG::ERROR <<
"Could not downcast to MdcDedxCol" << endmsg;
133 return StatusCode::FAILURE;
140 log << MSG::ERROR <<
"Could not get DstEvent in TDS " << endmsg;
141 return StatusCode::FAILURE;
145 { log << MSG::ERROR <<
"MdcDedxCnv:Could not downcast to TDS DstEvent" << endmsg; }
146 IOpaqueAddress* addr;
148 m_cnvSvc->getDstCnv()->createRep( evt, addr );
152 if ( !m_mdcDedxCol )
return sc;
155 DstMdcDedxCol::const_iterator mdcDedxTds;
157 for ( mdcDedxTds = mdcDedxColTds->begin(); mdcDedxTds != mdcDedxColTds->end(); mdcDedxTds++ )
159 Int_t trackId = ( *mdcDedxTds )->trackId();
160 Int_t particleId = ( *mdcDedxTds )->particleId();
161 Int_t status = ( *mdcDedxTds )->status();
162 Int_t truncAlg = ( *mdcDedxTds )->truncAlg();
168 Double_t chiE = ( *mdcDedxTds )->chi( 0 );
169 Double_t chiMu = ( *mdcDedxTds )->chi( 1 );
170 Double_t chiPi = ( *mdcDedxTds )->chi( 2 );
171 Double_t chiK = ( *mdcDedxTds )->chi( 3 );
172 Double_t chiP = ( *mdcDedxTds )->chi( 4 );
174 Int_t numGoodHits = ( *mdcDedxTds )->numGoodHits();
175 Int_t numTotalHits = ( *mdcDedxTds )->numTotalHits();
177 Double_t probPH = ( *mdcDedxTds )->probPH();
178 Double_t normPH = ( *mdcDedxTds )->normPH();
179 Double_t errorPH = ( *mdcDedxTds )->errorPH();
180 Double_t twentyPH = ( *mdcDedxTds )->twentyPH();
184 log << MSG::INFO <<
"check Reconstrunction root"
185 <<
" particle Id is : " << particleId <<
"track id is : " << trackId
186 <<
" and status is : " << status << endmsg;
212 log << MSG::INFO <<
"check Reconstrunction root"
213 <<
" particle Id is : " << particleId <<
"track id is : " << trackId
214 <<
" and status is : " << status << endmsg;
219 return StatusCode::SUCCESS;
ObjectVector< DstMdcDedx > DstMdcDedxCol
void setTruncAlg(int trunc_alg)
void setStatus(int status)
void setTwentyPH(double twentyPH)
void setNumGoodHits(int numGoodHits)
void setProbPH(double probPH)
void setNormPH(double normPH)
void setParticleId(int particleId)
void setTrackId(int trackId)
void setNumTotalHits(int numTotalHits)
void setErrorPH(double errorPH)
MdcDedxCnv(ISvcLocator *svc)
virtual StatusCode TObjectToDataObject(DataObject *&obj)
transformation from root
virtual StatusCode DataObjectToTObject(DataObject *obj, RootAddress *addr)
transformation to root
static const CLID & classID()
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)
const TObjArray * getMdcDedxCol() const
retrieve the whole TObjArray of Dedx Data
void clearMdcDedxCol()
clear the whole array
void addMdcDedx(TMdcDedx *Track)
Add a Dedx into the TOF Data collection.
void setChiP(const Double_t chiP)
void setNormPH(const Double_t normPH)
void setChiE(const Double_t chiE)
void setChiMu(const Double_t chiMu)
Int_t numTotalHits() const
void setChiPi(const Double_t chiPi)
Int_t numGoodHits() const
void setNumTotalHits(const Int_t numTotalHits)
void setParticleId(const Int_t particleId)
void setProbPH(const Double_t probPH)
void setTwentyPH(const Double_t twentyPH)
void setTrackId(const Int_t trackId)
void setStatus(const Int_t status)
void setTruncAlg(const Int_t trunc_alg)
void setChiK(const Double_t chiK)
void setNumGoodHits(const Int_t numGoodHits)
Double_t twentyPH() const
void setErrorPH(const Double_t errorPH)
_EXTERN_ std::string Event