00001 /* 00002 * \class ReadoutEventCnv 00003 * 00004 * \brief ReadoutEvent Converter 00005 * 00006 * bseilhan@iit.edu Tue Oct 7 11:44:19 PDT 2008 00007 * 00008 */ 00009 00010 #ifndef READOUTEVENTCNV 00011 #define READOUTEVENTCNV 1 00012 00013 #include "RootIOSvc/RootIOTypedCnv.h" 00014 00015 #include "DaqReadoutFormat/DaqBuffer.h" 00016 00017 #include "Event/ReadoutHeader.h" 00018 #include "Event/Readout.h" 00019 #include "Event/ReadoutPmtChannel.h" 00020 #include "Event/ReadoutPmtCrate.h" 00021 #include "Event/ReadoutRpcChannel.h" 00022 #include "Event/ReadoutRpcCrate.h" 00023 #include "Event/ReadoutTriggerDataPkg.h" 00024 #include "Event/ReadoutTriggerDataFrame.h" 00025 00026 #include "PerReadoutEvent/PerReadoutHeader.h" 00027 #include "PerReadoutEvent/PerReadout.h" 00028 #include "PerReadoutEvent/PerReadoutPmtChannel.h" 00029 #include "PerReadoutEvent/PerReadoutPmtCrate.h" 00030 #include "PerReadoutEvent/PerReadoutRpcChannel.h" 00031 #include "PerReadoutEvent/PerReadoutRpcCrate.h" 00032 #include "PerReadoutEvent/PerReadoutTriggerDataPkg.h" 00033 #include "PerReadoutEvent/PerReadoutTriggerDataFrame.h" 00034 00035 namespace DayaBay { 00036 class DaqCrate; 00037 } 00038 00039 class ReadoutHeaderCnv : public RootIOTypedCnv<PerReadoutHeader, 00040 DayaBay::ReadoutHeader> 00041 { 00042 public: 00043 static const CLID& classID() { 00044 return DayaBay::CLID_ReadoutHeader; 00045 } 00046 00047 ReadoutHeaderCnv(ISvcLocator* svc); 00048 virtual ~ReadoutHeaderCnv(); 00049 00052 StatusCode PerToTran(const PerReadoutHeader& perobj, 00053 DayaBay::ReadoutHeader& tranobj); 00054 00057 StatusCode TranToPer(const DayaBay::ReadoutHeader& tranobj, 00058 PerReadoutHeader& perobj); 00059 00060 StatusCode fillRepRefs(IOpaqueAddress* addr, DataObject* dobj); 00061 StatusCode fillObjRefs(IOpaqueAddress* addr, DataObject* dobj); 00062 00063 PerReadout* convert(const DayaBay::Readout& roRo); 00064 PerReadoutPmtCrate* convert(const DayaBay::ReadoutPmtCrate& roPmtCrate); 00065 PerReadoutPmtChannel* convert(const DayaBay::ReadoutPmtChannel& roPmtChannel); 00066 PerReadoutTriggerDataPkg* convert(const DayaBay::ReadoutTriggerDataPkg& roPmtTDP); 00067 PerReadoutTriggerDataFrame* convert(const DayaBay::ReadoutTriggerDataFrame& roPmtTDF); 00068 // PerReadoutRpcCrate* convert(const DayaBay::ReadoutRpcCrate& roRpcCrate); 00069 // PerReadoutRpcChannel* convert(const DayaBay::ReadoutRpcChannel& rpRpcChannel); 00070 00071 DayaBay::Readout* convert(const PerReadout& perRo); 00072 DayaBay::ReadoutPmtCrate* convert(const PerReadoutPmtCrate& perRoPcr); 00073 DayaBay::ReadoutPmtChannel convert(const PerReadoutPmtChannel& perRoPch); 00074 DayaBay::ReadoutTriggerDataPkg* convert(const PerReadoutTriggerDataPkg& perRoPmtTDP); 00075 DayaBay::ReadoutTriggerDataFrame* convert(const PerReadoutTriggerDataFrame& perToPmtTDF); 00076 // DayaBay::ReadoutRpcCrate* convert(const PerReadoutRpcCrate& perRoRcr); 00077 // DayaBay::ReadoutRpcChannel convert(const PerReadoutRpcChannel& perRoRch); 00078 00079 bool m_writefadc; 00080 00081 private: 00082 00083 StatusCode TranToPer(const DayaBay::DaqCrate& tranobj, 00084 PerReadoutHeader& perobj); 00085 00089 DybDaq::DaqBuffer::OutputBufferList* m_buffers; 00090 00091 }; 00092 00093 #endif // READOUTEVENTCNV