1#ifndef RecEmcHitCnv_CXX
2#define RecEmcHitCnv_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 "EmcRecEventModel/RecEmcHit.h"
13#include "ReconEvent/ReconEvent.h"
15#include "RootEventData/TRecEmcHit.h"
16#include "RootEventData/TRecTrackEvent.h"
18#include "RootCnvSvc/Rec/RecEmcHitCnv.h"
19#include "RootCnvSvc/Rec/RecTrackCnv.h"
20#include "RootCnvSvc/RootAddress.h"
35 MsgStream log(
msgSvc(),
"RecEmcHitCnv" );
48 MsgStream log(
msgSvc(),
"RecEmcHitCnv" );
49 log << MSG::DEBUG <<
"RecEmcHitCnv::TObjectToDataObject" << endmsg;
51 StatusCode sc = StatusCode::SUCCESS;
55 refpObject = emcHitTdsCol;
58 if ( !m_recEmcHitCol )
return sc;
59 TIter emcHitIter( m_recEmcHitCol );
61 while ( ( emcHitRoot = (
TRecEmcHit*)emcHitIter.Next() ) )
70 m_common.m_rootRecEmcHitMap[emcHitRoot] = emcHitTds;
74 emcHitTdsCol->push_back( emcHitTds );
77 delete m_recEmcHitCol;
80 return StatusCode::SUCCESS;
85 MsgStream log(
msgSvc(),
"RecEmcHitCnv" );
86 log << MSG::DEBUG <<
"RecEmcHitCnv::DataObjectToTObject" << endmsg;
88 StatusCode sc = StatusCode::SUCCESS;
93 log << MSG::ERROR <<
"Could not downcast to RecEmcHitCol" << endmsg;
94 return StatusCode::FAILURE;
101 log << MSG::ERROR <<
"Could not get RecEvent in TDS " << endmsg;
102 return StatusCode::FAILURE;
106 { log << MSG::ERROR <<
"RecEmcHitCnv:Could not downcast to TDS DstEvent" << endmsg; }
107 IOpaqueAddress* addr;
109 m_cnvSvc->getRecTrackCnv()->createRep( evt, addr );
113 if ( !m_emcHitCol )
return sc;
118 RecEmcHitCol::const_iterator emcHitTds;
120 for ( emcHitTds = emcHitColTds->begin(); emcHitTds != emcHitColTds->end(); emcHitTds++ )
122 Int_t cellId = ( *emcHitTds )->getCellId();
123 Double_t
energy = ( *emcHitTds )->getEnergy();
124 Double_t
time = ( *emcHitTds )->getTime();
135 return StatusCode::SUCCESS;
ObjectVector< RecEmcHit > RecEmcHitCol
************Class m_ypar INTEGER m_KeyWgt INTEGER m_KeyIHVP INTEGER m_KeyGPS INTEGER m_IsBeamPolarized INTEGER m_EvtGenInterface DOUBLE PRECISION m_Emin DOUBLE PRECISION m_sphot DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_q2 DOUBLE PRECISION m_PolBeam2 DOUBLE PRECISION m_xErrPb *COMMON c_KK2f $ !CMS energy average $ !Spin Polarization vector first beam $ !Spin Polarization vector second beam $ !Beam energy spread[GeV] $ !minimum hadronization energy[GeV] $ !input READ never touch them !$ !debug facility $ !maximum weight $ !inverse alfaQED $ !minimum real photon energy
virtual StatusCode DataObjectToTObject(DataObject *obj, RootAddress *addr)
transformation to root
RecEmcHitCnv(ISvcLocator *svc)
static const CLID & classID()
virtual StatusCode TObjectToDataObject(DataObject *&obj)
transformation from root
void Assign(const RecEmcID &CellId, const RecEmcEnergy &Energy, const RecEmcTime &Time)
Definition of a Root address, derived from IOpaqueAddress.
std::string m_rootTreename
each converter knows it's treename
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 setCellId(const Int_t id)
void setEnergy(const Double_t e)
void setTime(const Double_t time)
void addEmcHit(TRecEmcHit *Track)
Add a TkrTrack into the Emc data collection */.
void clearEmcHitCol()
clear the whole array (necessary because of the consts-s) */
const TObjArray * getEmcHitCol() const
retrieve the whole TObjArray of EmcHit Data
_EXTERN_ std::string Event