00001 #include "RandomHeaderCnv.h"
00002 #include "PerBaseEvent/HeaderObjectCnv.h"
00003
00004 using namespace DayaBay;
00005 using namespace std;
00006
00007 RandomHeaderCnv::RandomHeaderCnv(ISvcLocator* svc)
00008 : RootIOTypedCnv<PerRandomState,RandomHeader>("PerRandomState",classID(),svc)
00009 {
00010 }
00011
00012 RandomHeaderCnv::~RandomHeaderCnv()
00013 {
00014 }
00015
00016
00017 StatusCode RandomHeaderCnv::PerToTran(const PerRandomState& perobj,DayaBay::RandomHeader& tranobj)
00018 {
00019 StatusCode sc = HeaderObjectCnv::toTran(perobj,tranobj);
00020 if(sc.isFailure()) return sc;
00021
00022 MsgStream log(msgSvc(),"RandomHeaderCnv::PerToTran");
00023
00024
00025 tranobj.setHEPEngine(perobj.Engine);
00026
00027 tranobj.setRndmSeeds(perobj.RndmSeeds);
00028
00029 return sc;
00030 }
00031
00032 StatusCode RandomHeaderCnv::TranToPer(const DayaBay::RandomHeader& tranobj,PerRandomState& perobj )
00033 {
00034 StatusCode sc = HeaderObjectCnv::toPer(tranobj,perobj);
00035 if(sc.isFailure()) return sc;
00036
00037 MsgStream log(msgSvc(),"RandomHeaderCnv::TranToPer");
00038
00039
00040 perobj.Engine = tranobj.hepEngine();
00041
00042 perobj.RndmSeeds = tranobj.RndmSeeds();
00043
00044 return sc;
00045 }
00046
00047 StatusCode RandomHeaderCnv::fillRepRefs(IOpaqueAddress*, DataObject* dobj)
00048 {
00049 MsgStream log(msgSvc(), "RandomHeaderCnv::fillRepRefs");
00050 RandomHeader* gh = dynamic_cast<RandomHeader*>(dobj);
00051
00052 log << MSG::DEBUG
00053 << "Got " << gh->inputHeaders().size() << " headers" << endreq;
00054
00055
00056 StatusCode sc = HeaderObjectCnv::fillPer(m_rioSvc,*gh,*m_perOutObj);
00057 if (sc.isFailure()) {
00058 log << MSG::ERROR << "Failed to fill RandomState part" << endreq;
00059 return sc;
00060 }
00061
00062
00063 return sc;
00064 }
00065
00066 StatusCode RandomHeaderCnv::fillObjRefs(IOpaqueAddress*, DataObject* dobj)
00067 {
00068 MsgStream log(msgSvc(), "GenHeaderCnv::fillObjRefs");
00069 RandomHeader* hobj = dynamic_cast<RandomHeader*>(dobj);
00070 StatusCode sc = HeaderObjectCnv::fillTran(m_rioSvc,*m_perInObj,*hobj);
00071 if (sc.isFailure()) {
00072 log << MSG::ERROR << "Failed to fill RandomHeader part" << endreq;
00073 return sc;
00074 }
00075
00076 log << MSG::INFO
00077 << "Got " << hobj->inputHeaders().size() << " headers" << endreq;
00078
00079
00080 return sc;
00081 }