BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtRecEventCnv.cxx
Go to the documentation of this file.
1#include "GaudiKernel/MsgStream.h"
2
3#include "EventModel/EventModel.h"
4#include "EvtRecEvent/EvtRecEvent.h"
5#include "EvtRecEvent/EvtRecObject.h"
6#include "RootCnvSvc/EvtRec/EvtRecCnv.h"
7#include "RootCnvSvc/EvtRec/EvtRecEventCnv.h"
8#include "RootCnvSvc/RootAddress.h"
9
11 m_rootBranchname = "m_evtRecEvent";
12 m_adresses.push_back( &m_evtRecEvent );
13 m_evtRecEvent = 0;
14}
15
16StatusCode EvtRecEventCnv::TObjectToDataObject( DataObject*& refpObject ) {
17 MsgStream log( msgSvc(), "EvtRecEventCnv" );
18 log << MSG::DEBUG << "EvtRecEventCnv::TObjectToDataObject" << endmsg;
19
20 // create the TDS location for the EvtRecEvent
21 EvtRecEvent* evtRecEvent = new EvtRecEvent;
22 refpObject = evtRecEvent;
23
24 if ( !m_evtRecEvent ) return StatusCode::SUCCESS;
25 // convert
26 evtRecEvent->setTotalTracks( m_evtRecEvent->totalTracks() );
27 evtRecEvent->setTotalCharged( m_evtRecEvent->totalCharged() );
28 evtRecEvent->setTotalNeutral( m_evtRecEvent->totalNeutral() );
29 evtRecEvent->setNumberOfVee( m_evtRecEvent->numberOfVee() );
30 evtRecEvent->setNumberOfPi0( m_evtRecEvent->numberOfPi0() );
31
32 delete m_evtRecEvent;
33 m_evtRecEvent = 0;
34
35 return StatusCode::SUCCESS;
36}
37
38StatusCode EvtRecEventCnv::DataObjectToTObject( DataObject* obj, RootAddress* rootaddr ) {
39
40 MsgStream log( msgSvc(), "EvtRecEventCnv" );
41 log << MSG::DEBUG << "EvtRecEventCnv::DataObjectToTObject" << endmsg;
42
43 EvtRecEvent* evtRecEvent = dynamic_cast<EvtRecEvent*>( obj );
44 if ( !evtRecEvent )
45 {
46 log << MSG::ERROR << "Could not downcast to EvtRecEvent" << endmsg;
47 return StatusCode::FAILURE;
48 }
49
50 DataObject* evt = NULL;
51 StatusCode sc = m_eds->findObject( EventModel::EvtRec::Event, evt );
52 if ( sc.isFailure() )
53 {
54 log << MSG::ERROR << "Could not get EvtRecObject in TDS" << endmsg;
55 return StatusCode::FAILURE;
56 }
57
58 EvtRecObject* devtTds = dynamic_cast<EvtRecObject*>( evt );
59 if ( !devtTds )
60 { log << MSG::ERROR << "EvtRecEventCnv: Could not downcast to TDS EvtRecObject" << endmsg; }
61
62 IOpaqueAddress* addr;
63 m_cnvSvc->getEvtRecCnv()->createRep( evt, addr );
64 TEvtRecObject* recEvt = m_cnvSvc->getEvtRecCnv()->getWriteObject();
65
66 TEvtRecEvent* m_evtRecEvent = const_cast<TEvtRecEvent*>( recEvt->getEvtRecEvent() );
67
68 m_evtRecEvent->setTotalTracks( evtRecEvent->totalTracks() );
69 m_evtRecEvent->setTotalCharged( evtRecEvent->totalCharged() );
70 m_evtRecEvent->setTotalNeutral( evtRecEvent->totalNeutral() );
71 m_evtRecEvent->setNumberOfVee( evtRecEvent->numberOfVee() );
72 m_evtRecEvent->setNumberOfPi0( evtRecEvent->numberOfPi0() );
73
74 return StatusCode::SUCCESS;
75}
IMessageSvc * msgSvc()
EvtRecEventCnv(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)