00001 #include "MockEvtStructure.h" 00002 #include "MockEvtReadout.h" 00003 #include "MockEvtConversionSvc.h" 00004 00005 #include "GaudiKernel/DataObject.h" 00006 #include "GaudiKernel/GaudiException.h" 00007 #include "GaudiKernel/IDataManagerSvc.h" 00008 #include "GaudiKernel/IRegistry.h" 00009 00010 using namespace MockEvtConverters; 00011 00012 MockEvtStructure::MockEvtStructure(ISvcLocator* svc) : 00013 Converter(MockEvtConversionSvc::MOCK_EVT_DATA, 00014 DayaBay::CLID_MockEvtStructure, 00015 svc) { 00016 } 00017 00018 MockEvtStructure::~MockEvtStructure() { 00019 } 00020 00021 StatusCode MockEvtStructure::createObj(IOpaqueAddress*, 00022 DataObject*& pObject) { 00023 pObject = new DataObject(); 00024 return StatusCode::SUCCESS; 00025 } 00026 00027 StatusCode MockEvtStructure::fillObjRefs(IOpaqueAddress* addr, 00028 DataObject* pObject) { 00029 Address* address = dynamic_cast<Address*>(addr); 00030 if (0 == address) { 00031 return StatusCode::FAILURE; 00032 } 00033 00034 if (address->registry()->identifier() == "/Event/TESDemo") { 00035 IOpaqueAddress* mockEvtAddress = new MockEvtReadout::Address(address->context()); 00036 if (dataManager()->registerAddress(pObject, 00037 "Readout", 00038 mockEvtAddress).isFailure()) { 00039 return StatusCode::FAILURE; 00040 } 00041 return StatusCode::SUCCESS; 00042 } 00043 00044 Address* mockEvtAddress = new Address(address->context()); 00045 if (dataManager()->registerAddress(pObject, 00046 "TESDemo", 00047 mockEvtAddress).isFailure()) { 00048 return StatusCode::FAILURE; 00049 } 00050 00051 return StatusCode::SUCCESS; 00052 } 00053 00054 long MockEvtStructure::repSvcType() const { 00055 return i_repSvcType(); 00056 } 00057 00058 MockEvtStructure::Address::Address(const MockEvtSelector::MockEvtContext* context) : 00059 m_context(context){ 00060 setClID(DayaBay::CLID_MockEvtStructure); 00061 setSvcType(MockEvtConversionSvc::MOCK_EVT_DATA); 00062 } 00063 00064 MockEvtStructure::Address::~Address() { 00065 } 00066 00067 const MockEvtSelector::MockEvtContext* MockEvtStructure::Address::context() const { 00068 return m_context; 00069 } 00070