00001 #ifndef RawEventHeaderCnv_H
00002 #define RawEventHeaderCnv_H
00003
00004 #include <string>
00005 #include "GaudiKernel/ClassID.h"
00006 #include "GaudiKernel/Converter.h"
00007 #include "GaudiKernel/ISvcLocator.h"
00008 #include "GaudiKernel/DataObject.h"
00009 #include "GaudiKernel/MsgStream.h"
00010
00011 #include "Event/RawRomFee.h"
00012 #include "Event/RawPmtChannel.h"
00013 #include "Event/RawRomLtb.h"
00014 #include "Event/RawLtbFrame.h"
00015 #include "Event/RawLtbFrameUTC.h"
00016 #include "Event/RawLtbFrameUnix.h"
00017 #include "RawDataEvent.h"
00018
00019 using namespace std;
00020
00021 class IRawDataInputSvc;
00022 namespace DayaBay {
00023 class RawEvent;
00024 class LocalTriggerData;
00025 class RawDataReader;
00026 class Detector;
00027 class ReadoutPmtCrate;
00028 }
00029
00030 extern const long int RAWDATA_StorageType;
00031
00032 class RawEventHeaderCnv : public Converter
00033 {
00034
00035 public:
00036 RawEventHeaderCnv(ISvcLocator*&);
00037 RawEventHeaderCnv(unsigned char storageType, const CLID& clid, ISvcLocator* svc);
00038
00039 virtual ~RawEventHeaderCnv() {}
00040
00041
00042 virtual long repSvcType() const {
00043 return RAWDATA_StorageType;
00044 }
00045 static const long storageType() {
00046 return RAWDATA_StorageType;
00047 }
00048
00049 static const CLID& classID() {
00050 return DayaBay::CLID_RawEventHeader;
00051 }
00052
00053
00054 virtual StatusCode initialize();
00055 virtual StatusCode finalize();
00056
00057 void declareObject(const string& fullPath, const CLID& clid, const string& bank, long par = 0);
00058
00059 virtual StatusCode createRep(DataObject* pObject, IOpaqueAddress*& refpAddr);
00060 virtual StatusCode updateObj(IOpaqueAddress*, DataObject*);
00061 virtual StatusCode createObj(IOpaqueAddress*, DataObject*&);
00062
00063 virtual StatusCode fillRepRefs(IOpaqueAddress* , DataObject* ) {
00064 return StatusCode::SUCCESS;
00065 }
00066 virtual StatusCode updateRep(IOpaqueAddress* , DataObject* ) {
00067 return StatusCode::SUCCESS;
00068 }
00069 virtual StatusCode updateRepRefs(IOpaqueAddress* , DataObject* ) {
00070 return StatusCode::SUCCESS;
00071 }
00072
00073 public:
00074 DayaBay::RawRom* convertRomFee(const RawDataEvent::RomFee* romFee);
00075 DayaBay::RawPmtChannel* convertPmtChannel(const RawDataEvent::PmtChannel& pmtChannel);
00076
00077 DayaBay::RawRom* convertRomLtb(const RawDataEvent::RomLtb* romLtb);
00078 DayaBay::RawLtbFrameUTC* convertLtbFrameUTC(const RawDataEvent::LtbFrameUTC *ltbFrame);
00079 DayaBay::RawLtbFrameUnix* convertLtbFrameUnix(const RawDataEvent::LtbFrameUnix *ltbFrame);
00080
00081
00082 StatusCode unpackEvent(DayaBay::RawEvent* event,
00083 DayaBay::RawEventHeader* rawEventHeader);
00084 DayaBay::RawRom* unpackLtbModule(DayaBay::RawModule* module);
00085 DayaBay::RawRom* unpackFeeModule(DayaBay::RawModule* module);
00086
00087 private:
00088 mutable MsgStream m_log;
00089 IRawDataInputSvc* m_inputSvc;
00090 };
00091
00092 #endif