BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtHeaderCnv.cxx
Go to the documentation of this file.
1// File and Version Information:
2// Description:
3// EvtHeaderCnv is the concrete converter for the Rec branch
4//
5
6#ifndef EvtHeaderCnv_CXX
7#define EvtHeaderCnv_CXX
8
9#include "GaudiKernel/DataObject.h"
10#include "GaudiKernel/IDataProviderSvc.h"
11#include "GaudiKernel/ISvcLocator.h"
12#include "GaudiKernel/MsgStream.h"
13#include "GaudiKernel/PropertyMgr.h"
14#include "GaudiKernel/RegistryEntry.h"
15#include "GaudiKernel/SmartDataPtr.h"
16
17#include "GaudiKernel/IOpaqueAddress.h"
18
19#include "EventModel/EventHeader.h"
20#include "EventModel/EventModel.h"
21#include "RootCnvSvc/EvtHeaderCnv.h"
22#include "RootCnvSvc/RootAddress.h"
23#include "RootCnvSvc/RootEvtSelector.h"
24#include "RootEventData/TEvtHeader.h"
25// #include "RootCnvSvc/Util.h"
26
27using namespace DataSvcHelpers;
28
29TEvtHeader* EvtHeaderCnv::m_objWrite = 0;
30
31EvtHeaderCnv::EvtHeaderCnv( ISvcLocator* svc ) : RootEventBaseCnv( classID(), svc ) {
32 // Here we associate this converter with the path on the TDS.
33 MsgStream log( msgSvc(), "EvtHeaderCnv" );
34 log << MSG::DEBUG << " constructor of EvtHeaderCnv " << endmsg;
35 // m_rootTreename ="Event";
36 m_rootBranchname = "m_runId:m_eventId:m_time:m_eventTag:m_flag1:m_flag2:m_etsT1:m_etsT2";
37 // declareObject(EventModel::Dst::Event, objType(), m_rootTreename, m_rootBranchname);
38 m_adresses.push_back( &m_runId );
39 m_adresses.push_back( &m_eventId );
40 m_adresses.push_back( &m_time );
41 m_adresses.push_back( &m_eventTag );
42 m_adresses.push_back( &m_flag1 );
43 m_adresses.push_back( &m_flag2 );
44 m_adresses.push_back( &m_etsT1 );
45 m_adresses.push_back( &m_etsT2 );
46}
47
48StatusCode EvtHeaderCnv::TObjectToDataObject( DataObject*& refpObject ) {
49 // fills the TDS object from the persistent one
50 StatusCode sc = StatusCode::SUCCESS;
51
52 MsgStream log( msgSvc(), "EvtHeaderCnv" );
53 log << MSG::DEBUG << "TObjectToDataObject" << endmsg;
54
56 evt->setEventNumber( m_eventId );
57 evt->setRunNumber( m_runId );
58 evt->setTime( m_time );
59 evt->setEventTag( m_eventTag );
60 evt->setFlag1( m_flag1 );
61 evt->setFlag2( m_flag2 );
62 evt->setEtsT1( m_etsT1 );
63 evt->setEtsT2( m_etsT2 );
64
65 refpObject = evt;
66
67 log << MSG::DEBUG << "TObjectToDataObject eventid = " << m_eventId << " " << m_runId << " "
68 << std::hex << "0x" << m_eventTag << std::dec << endmsg;
69 // cout << MSG::DEBUG << "TObjectToDataObject eventid = "<<m_eventId<<" "<<m_runId
70 // << " "<<std::hex<<"0x"<<m_eventTag<<std::dec<<endl;
71
72 // char dummy;
73 // cin>>dummy;
74
75 return sc;
76}
77
79 MsgStream log( msgSvc(), "EvtHeaderCnv" );
80 log << MSG::DEBUG << "EvtHeaderCnv::initialize" << endmsg;
81
82 StatusCode status = RootEventBaseCnv::initialize();
83
84 // pass dst converter to the conversion service
85 m_cnvSvc->setEvtHeaderCnv( this );
86
87 return status;
88}
89
90StatusCode EvtHeaderCnv::DataObjectToTObject( DataObject* obj, RootAddress* rootaddr ) {
91 // transforms TDS event to Dst event in root format
92 MsgStream log( msgSvc(), "EvtHeaderCnv" );
93 log << MSG::DEBUG << "EvtHeaderCnv::DataObjectToTObject" << endmsg;
94
95 Event::EventHeader* devtTds = dynamic_cast<Event::EventHeader*>( obj );
96 if ( !devtTds )
97 {
98 log << MSG::ERROR << "Could not downcast to TDS EventHeader" << endmsg;
99 return StatusCode::FAILURE;
100 }
101
102 Int_t evtId = devtTds->eventNumber();
103 Int_t runId = devtTds->runNumber();
104 UInt_t time = devtTds->time();
105 UInt_t evtTag = devtTds->eventTag();
106 UInt_t flag1 = devtTds->flag1();
107 UInt_t flag2 = devtTds->flag2();
108 ULong_t etsT1 = devtTds->etsT1();
109 ULong_t etsT2 = devtTds->etsT2();
110
111 if ( evtId == -1 )
112 {
113 // wrong evh
114 return StatusCode::SUCCESS;
115 }
116
117 m_objWrite = new TEvtHeader(); // zoujh
118 m_common.m_EvtHeader = m_objWrite; // zoujh
119
120 log << MSG::DEBUG
121 << "EvtHeaderCnv::DataObjectToTObject tree name: " << rootaddr->getTreename() << endmsg;
122 // create branch if not yet done
123 if ( m_branchNrEvtHeader < 0 )
124 {
125 StatusCode sc = m_rootInterface->createBranch( rootaddr->getTreename(), "TEvtHeader",
126 m_objWrite->ClassName(), &m_objWrite,
128 // StatusCode sc =
129 // m_rootInterface->createBranch("Event","TEvtHeader",m_objWrite->ClassName(),&m_objWrite,m_branchNrEvtHeader);
130 if ( sc.isFailure() )
131 {
132 delete m_objWrite;
133 log << MSG::ERROR << "Could not create branch TEvtHeader" << endmsg;
134 return StatusCode::SUCCESS;
135 // return sc;
136 }
137 }
138
139 m_eventId = evtId;
140 m_runId = runId;
141 m_time = time;
142 m_eventTag = evtTag;
143 m_flag1 = flag1;
144 m_flag2 = flag2;
145 m_etsT1 = etsT1;
146 m_etsT2 = etsT2;
147 log << MSG::DEBUG << "EvtHeaderCnv::DataObjectToTObject eventid = " << evtId << " "
148 << runId << " " << std::hex << evtTag << std::dec << endmsg;
149
150 m_objWrite->initialize( evtId, runId, evtTag );
151 m_objWrite->setTime( time );
152 m_objWrite->setFlag1( flag1 );
153 m_objWrite->setFlag2( flag2 );
154 m_objWrite->setEtsT1( etsT1 );
155 m_objWrite->setEtsT2( etsT2 );
156
157 return StatusCode::SUCCESS;
158}
159#endif
Double_t time
IMessageSvc * msgSvc()
int eventNumber() const
Retrieve event number.
void setRunNumber(int value)
Update run number.
void setFlag1(unsigned int value)
Update flags.
void setEventNumber(int value)
Update event number.
void setEtsT1(unsigned long value)
Update ETS.
void setEventTag(unsigned int value)
Update EventTag.
virtual StatusCode DataObjectToTObject(DataObject *obj, RootAddress *addr)
transformation from TDS object to ROOT
virtual StatusCode TObjectToDataObject(DataObject *&refpObject)
do the transformation from ROOT to TDS object
virtual StatusCode initialize()
EvtHeaderCnv(ISvcLocator *svc)
Definition of a Root address, derived from IOpaqueAddress.
virtual StatusCode initialize()
std::vector< void * > m_adresses
each converter knows the corresponding adresses
RootInterface * m_rootInterface
pointer to the RootInterface
std::string m_rootBranchname
root branchname (may be concatenated of severals)
RootEventBaseCnv(const CLID &clid, ISvcLocator *svc)