/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/RootCnvSvc/RootCnvSvc-02-01-12/src/Rec/RecZddChannelCnv.cxx

Go to the documentation of this file.
00001 #include "RootCnvSvc/Rec/RecZddChannelCnv.h"
00002 #include "RootCnvSvc/RootAddress.h"
00003 #include "RootCnvSvc/Rec/RecTrackCnv.h"
00004 #include "ZddEvent/RecZddChannel.h"
00005 #include "RootEventData/TRecTrackEvent.h"
00006 #include "RootEventData/TRecZddChannel.h"
00007 
00008 RecZddChannelCnv::RecZddChannelCnv(ISvcLocator* svc)
00009     : RootEventBaseCnv(classID(), svc)
00010 {
00011     m_rootBranchname = "m_recZddChannelCol";
00012     m_adresses.push_back(&m_recZddChannelCol);
00013     m_recZddChannelCol = 0;
00014 }
00015 
00016 StatusCode RecZddChannelCnv::TObjectToDataObject(DataObject*& refpObject)
00017 {
00018     MsgStream log(msgSvc(), "RecZddChannelCnv");
00019     log << MSG::DEBUG << "RecZddChannelCnv::TObjectToDataObject" << endreq;
00020 
00021     RecZddChannelCol* zddCol = new RecZddChannelCol;
00022     refpObject = zddCol;
00023 
00024     if ( ! m_recZddChannelCol ) return StatusCode::SUCCESS;
00025 
00026     // convert
00027     TIter zddIter(m_recZddChannelCol);
00028     TRecZddChannel* zddRoot = 0;
00029     while ( (zddRoot = (TRecZddChannel*)zddIter.Next()) ) {
00030         RecZddChannel* zddTDS = new RecZddChannel;
00031         m_common.m_rootRecZddChannelMap[zddRoot] = zddTDS;
00032 
00033         // settings
00034         zddTDS->setChannelId(zddRoot->channelId());
00035         zddTDS->setScanCode(zddRoot->scanCode());
00036         zddTDS->setBaseLine(zddRoot->baseLine());
00037         zddTDS->setPhase(zddRoot->phase());
00038         zddTDS->setFragments(zddRoot->fragments());
00039 
00040         zddCol->push_back(zddTDS);
00041     }
00042 
00043     delete m_recZddChannelCol;
00044     m_recZddChannelCol = 0;
00045 
00046     return StatusCode::SUCCESS;
00047 }
00048 
00049 StatusCode RecZddChannelCnv::DataObjectToTObject(DataObject* obj, RootAddress* rootaddr)
00050 {
00051     MsgStream log(msgSvc(), "RecZddChannelCnv");
00052     log << MSG::DEBUG << "RecZddChannelCnv::DataObjectToTObject" << endreq;
00053 
00054     RecZddChannelCol* zddCol = dynamic_cast<RecZddChannelCol*>(obj);
00055     if ( ! zddCol ) {
00056         log << MSG::ERROR << "Could not downcast to RecZddChannelCol" << endreq;
00057         return StatusCode::FAILURE;
00058     }
00059 
00060     DataObject* evt;
00061     m_eds->findObject(EventModel::Recon::Event, evt);
00062     if ( evt == NULL ) {
00063         log << MSG::ERROR << "Could not get ReconEvent in TDS" << endreq;
00064         return StatusCode::FAILURE;
00065     }
00066     IOpaqueAddress *addr;
00067     m_cnvSvc->getRecTrackCnv()->createRep(evt, addr);
00068     TRecTrackEvent* recEvt = m_cnvSvc->getRecTrackCnv()->getWriteObject();
00069 
00070     const TObjArray* m_recZddChannelCol = recEvt->getRecZddChannelCol();
00071     if ( ! m_recZddChannelCol ) return StatusCode::SUCCESS;
00072 
00073     //convert
00074     recEvt->clearRecZddChannelCol();
00075     RecZddChannelCol::const_iterator zdd = zddCol->begin();
00076 
00077     for ( ; zdd != zddCol->end(); ++zdd ) {
00078         RecZddChannel* pzdd = *zdd;
00079         TRecZddChannel* zddRoot = new TRecZddChannel();
00080 
00081         zddRoot->setChannelId(pzdd->channelId());
00082         zddRoot->setBaseLine(pzdd->baseLine());
00083         zddRoot->setPhase(pzdd->phase());
00084         zddRoot->setFragments(pzdd->fragments());
00085 
00086         recEvt->addRecZddChannel(zddRoot);
00087     }
00088 
00089     return StatusCode::SUCCESS;
00090 }

Generated on Tue Nov 29 22:58:54 2016 for BOSS_7.0.2 by  doxygen 1.4.7