BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
RecZddChannelCnv.cxx
Go to the documentation of this file.
1#include "RootCnvSvc/Rec/RecZddChannelCnv.h"
2#include "RootCnvSvc/Rec/RecTrackCnv.h"
3#include "RootCnvSvc/RootAddress.h"
4#include "RootEventData/TRecTrackEvent.h"
5#include "RootEventData/TRecZddChannel.h"
6#include "ZddEvent/RecZddChannel.h"
7
9 m_rootBranchname = "m_recZddChannelCol";
10 m_adresses.push_back( &m_recZddChannelCol );
11 m_recZddChannelCol = 0;
12}
13
14StatusCode RecZddChannelCnv::TObjectToDataObject( DataObject*& refpObject ) {
15 MsgStream log( msgSvc(), "RecZddChannelCnv" );
16 log << MSG::DEBUG << "RecZddChannelCnv::TObjectToDataObject" << endmsg;
17
19 refpObject = zddCol;
20
21 if ( !m_recZddChannelCol ) return StatusCode::SUCCESS;
22
23 // convert
24 TIter zddIter( m_recZddChannelCol );
25 TRecZddChannel* zddRoot = 0;
26 while ( ( zddRoot = (TRecZddChannel*)zddIter.Next() ) )
27 {
28 RecZddChannel* zddTDS = new RecZddChannel;
29 m_common.m_rootRecZddChannelMap[zddRoot] = zddTDS;
30
31 // settings
32 zddTDS->setChannelId( zddRoot->channelId() );
33 zddTDS->setScanCode( zddRoot->scanCode() );
34 zddTDS->setBaseLine( zddRoot->baseLine() );
35 zddTDS->setPhase( zddRoot->phase() );
36 zddTDS->setFragments( zddRoot->fragments() );
37
38 zddCol->push_back( zddTDS );
39 }
40
41 delete m_recZddChannelCol;
42 m_recZddChannelCol = 0;
43
44 return StatusCode::SUCCESS;
45}
46
47StatusCode RecZddChannelCnv::DataObjectToTObject( DataObject* obj, RootAddress* rootaddr ) {
48 MsgStream log( msgSvc(), "RecZddChannelCnv" );
49 log << MSG::DEBUG << "RecZddChannelCnv::DataObjectToTObject" << endmsg;
50
51 RecZddChannelCol* zddCol = dynamic_cast<RecZddChannelCol*>( obj );
52 if ( !zddCol )
53 {
54 log << MSG::ERROR << "Could not downcast to RecZddChannelCol" << endmsg;
55 return StatusCode::FAILURE;
56 }
57
58 DataObject* evt;
59 m_eds->findObject( EventModel::Recon::Event, evt );
60 if ( evt == NULL )
61 {
62 log << MSG::ERROR << "Could not get ReconEvent in TDS" << endmsg;
63 return StatusCode::FAILURE;
64 }
65 IOpaqueAddress* addr;
66 m_cnvSvc->getRecTrackCnv()->createRep( evt, addr );
67 TRecTrackEvent* recEvt = m_cnvSvc->getRecTrackCnv()->getWriteObject();
68
69 const TObjArray* m_recZddChannelCol = recEvt->getRecZddChannelCol();
70 if ( !m_recZddChannelCol ) return StatusCode::SUCCESS;
71
72 // convert
73 recEvt->clearRecZddChannelCol();
74 RecZddChannelCol::const_iterator zdd = zddCol->begin();
75
76 for ( ; zdd != zddCol->end(); ++zdd )
77 {
78 RecZddChannel* pzdd = *zdd;
79 TRecZddChannel* zddRoot = new TRecZddChannel();
80
81 zddRoot->setChannelId( pzdd->channelId() );
82 zddRoot->setBaseLine( pzdd->baseLine() );
83 zddRoot->setPhase( pzdd->phase() );
84 zddRoot->setFragments( pzdd->fragments() );
85
86 recEvt->addRecZddChannel( zddRoot );
87 }
88
89 return StatusCode::SUCCESS;
90}
ObjectVector< RecZddChannel > RecZddChannelCol
IMessageSvc * msgSvc()
RecZddChannelCnv(ISvcLocator *svc)
virtual StatusCode DataObjectToTObject(DataObject *obj, RootAddress *addr)
transformation to root
virtual StatusCode TObjectToDataObject(DataObject *&obj)
transformation from root
void setFragments(const std::vector< FragType > &frags)
const std::vector< FragType > & fragments() const
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)
void addRecZddChannel(TRecZddChannel *dtag)