#include <DaqEventConverter.h>
Inheritance diagram for DybDaq::DaqEventConverter:
Public Types | |
INVALID_ADDRESS | |
INVALID_OBJECT | |
NO_MEMORY | |
BAD_STORAGE_TYPE | |
NO_SOURCE_OBJECT | |
ICONVERSIONSVC_LAST_ERROR | |
SUCCESS | |
NO_INTERFACE | |
VERSMISMATCH | |
LAST_ERROR | |
enum | Status |
Public Member Functions | |
DaqEventConverter (unsigned char storageType, const CLID &clid, ISvcLocator *svc) | |
Creates an instance of this class. | |
DaqEventConverter (ISvcLocator *svc) | |
Creates an instance of this class. | |
~DaqEventConverter () | |
Destroys the instance of this class. | |
virtual StatusCode | createObj (IOpaqueAddress *addr, DataObject *&pObject) |
Create DataObject based on the supplied IOpaqueAddress. | |
virtual long | repSvcType () const |
Bookkeepting method used by ConverterSvc class. | |
virtual StatusCode | queryInterface (const InterfaceID &riid, void **ppvInterface) |
virtual unsigned long | addRef () |
virtual unsigned long | release () |
virtual StatusCode | initialize () |
virtual StatusCode | finalize () |
virtual StatusCode | setDataProvider (IDataProviderSvc *svc) |
virtual IDataProviderSvc * | dataProvider () const |
virtual StatusCode | setConversionSvc (IConversionSvc *svc) |
virtual IConversionSvc * | conversionSvc () const |
virtual StatusCode | setAddressCreator (IAddressCreator *creator) |
virtual IAddressCreator * | addressCreator () const |
virtual const CLID & | objType () const |
virtual long | i_repSvcType () const |
virtual StatusCode | fillObjRefs (IOpaqueAddress *pAddress, DataObject *pObject) |
virtual StatusCode | updateObj (IOpaqueAddress *pAddress, DataObject *refpObject) |
virtual StatusCode | updateObjRefs (IOpaqueAddress *pAddress, DataObject *pObject) |
virtual StatusCode | createRep (DataObject *pObject, IOpaqueAddress *&refpAddress) |
virtual StatusCode | fillRepRefs (IOpaqueAddress *pAddress, DataObject *pObject) |
virtual StatusCode | updateRep (IOpaqueAddress *pAddress, DataObject *pObject) |
virtual StatusCode | updateRepRefs (IOpaqueAddress *pAddress, DataObject *pObject) |
StatusCode | service (const std::string &name, T *&psvc, bool createIf=false) const |
StatusCode | service (const std::string &type, const std::string &name, T *&psvc) const |
Static Public Member Functions | |
static const long | storageType () |
Required by converter factory. | |
static const CLID & | classID () |
Required by converter factory. | |
static const InterfaceID & | interfaceID () |
Public Attributes | |
INVALID_ADDRESS | |
INVALID_OBJECT | |
NO_MEMORY | |
BAD_STORAGE_TYPE | |
NO_SOURCE_OBJECT | |
ICONVERSIONSVC_LAST_ERROR | |
Protected Member Functions | |
ISvcLocator * | serviceLocator () const |
IMessageSvc * | msgSvc () const |
IMessageSvc * | messageService () const |
IDataManagerSvc * | dataManager () const |
Private Member Functions | |
DaqEventConverter () | |
Suppress default. | |
DaqEventConverter (const DaqEventConverter &rhs) | |
Suppress default. | |
DaqEventConverter & | operator= (const DaqEventConverter &rhs) |
Suppress default. | |
DayaBay::ReadoutHeader * | createReadoutHeader (const DybDaq::EventReadout &event) |
Creates a new ReadoutHeader from the supplied context. | |
Classes | |
class | Address |
Implementation of IOpaqueAddress interface for this class. More... |
Definition at line 27 of file DaqEventConverter.h.
DaqEventConverter::DaqEventConverter | ( | unsigned char | storageType, | |
const CLID & | clid, | |||
ISvcLocator * | svc | |||
) |
Creates an instance of this class.
Definition at line 62 of file DaqEventConverter.cc.
00064 : 00065 Converter(storageType, 00066 clid, 00067 svc) { 00068 }
DaqEventConverter::DaqEventConverter | ( | ISvcLocator * | svc | ) |
Creates an instance of this class.
Definition at line 70 of file DaqEventConverter.cc.
00070 : 00071 Converter(storageType(), 00072 classID(), 00073 svc) { 00074 }
DaqEventConverter::~DaqEventConverter | ( | ) |
DybDaq::DaqEventConverter::DaqEventConverter | ( | ) | [private] |
Suppress default.
DybDaq::DaqEventConverter::DaqEventConverter | ( | const DaqEventConverter & | rhs | ) | [private] |
Suppress default.
const long DaqEventConverter::storageType | ( | ) | [static] |
Required by converter factory.
Definition at line 79 of file DaqEventConverter.cc.
00079 { 00080 return DaqFormatConversionSvc::DAQ_FORMAT_DATA; 00081 }
const CLID & DaqEventConverter::classID | ( | ) | [static] |
Required by converter factory.
Definition at line 83 of file DaqEventConverter.cc.
00083 { 00084 return DayaBay::CLID_ReadoutHeader; 00085 }
StatusCode DaqEventConverter::createObj | ( | IOpaqueAddress * | addr, | |
DataObject *& | pObject | |||
) | [virtual] |
Create DataObject based on the supplied IOpaqueAddress.
Reimplemented from Converter.
Definition at line 87 of file DaqEventConverter.cc.
00088 { 00089 Address* address = dynamic_cast<Address*>(addr); 00090 if (0 == address) { 00091 return StatusCode::FAILURE; 00092 } 00093 const EventReadout* eventReadout = address->context().event(); 00094 if (0 == eventReadout) { 00095 return StatusCode::FAILURE; 00096 } 00097 pObject = createReadoutHeader(*eventReadout); 00098 if (0 == pObject) { 00099 return StatusCode::FAILURE; 00100 } 00101 return StatusCode::SUCCESS; 00102 00103 }
long DaqEventConverter::repSvcType | ( | ) | const [virtual] |
Bookkeepting method used by ConverterSvc class.
Implements Converter.
Definition at line 161 of file DaqEventConverter.cc.
00161 { 00162 return i_repSvcType(); 00163 }
DaqEventConverter& DybDaq::DaqEventConverter::operator= | ( | const DaqEventConverter & | rhs | ) | [private] |
Suppress default.
ReadoutHeader * DaqEventConverter::createReadoutHeader | ( | const DybDaq::EventReadout & | event | ) | [private] |
Creates a new ReadoutHeader from the supplied context.
Definition at line 105 of file DaqEventConverter.cc.
00105 { 00106 00107 const EventHeader& header = event.header(); 00108 const EventTraits& traits = header.eventTraits(); 00109 const unsigned int kFeeModuleType = traits.moduleType(EventTraits::kFeeModule); 00110 const unsigned int kRpcRomModuleType = traits.moduleType(EventTraits::kRpcRomModule); 00111 00112 const EventReadout::RomFragmentPtrList& fragments = event.romFragments(); 00113 EventReadout::RomFragmentPtrList::const_iterator fragment = fragments.begin(); 00114 const unsigned int* crateType = 0; 00115 while(0 == crateType && fragment != fragments.end()) { 00116 if (kFeeModuleType == ((*fragment)->header().moduleType())) { 00117 crateType = &kFeeModuleType; 00118 } 00119 else if ( kRpcRomModuleType == ((*fragment)->header().moduleType())) { 00120 crateType = &kRpcRomModuleType; 00121 } 00122 ++fragment; 00123 } 00124 if (0 == crateType) { 00125 return 0; 00126 } 00127 00128 if ((*crateType) == kFeeModuleType) { 00129 const DaqPmtCrate* pmtCrate = new DaqPmtCrate(&event); 00130 const Detector& detector = pmtCrate->detector(); 00131 const TimeStamp& triggerTime = pmtCrate->triggerTime(); 00132 Context context(detector.site(), 00133 SimFlag::kData, 00134 triggerTime, 00135 detector.detectorId()); 00136 ReadoutHeader* result = new ReadoutHeader(); 00137 result->setContext(context); 00138 result->setEarliest(triggerTime); 00139 result->setLatest(triggerTime); 00140 00141 // Add the readout to the header 00142 result->setDaqCrate(const_cast<DaqPmtCrate*>(pmtCrate)); 00143 00144 return result; 00145 } 00146 else if ((*crateType) == kRpcRomModuleType) { 00147 // FIXME : to set the Context of ReadoutHeader 00148 ReadoutHeader* result = new ReadoutHeader(); 00149 Readout* readout = new Readout(); 00150 readout->setEventReadout(const_cast<EventReadout*>(&event)); 00151 result->setReadout(readout); 00152 return result; 00153 } 00154 00155 MsgStream log(msgSvc(), 00156 "DaqEventConverter"); 00157 log << MSG::ERROR << "Could not determine crate type so, cannot make readout." << endreq; 00158 return 0; 00159 }