00001 #ifndef DYBIO_DAQROOTWRITER_H 00002 #define DYBIO_DAQROOTWRITER_H 00003 00004 /* 00005 * DaqRootWriter.h 00006 * DaqFormatModules 00007 * 00008 * Created by Simon Patton on 8/5/10. 00009 * Copyright 2010 DayaBay Collaboration. All rights reserved. 00010 * 00011 */ 00012 00013 namespace DybDaq { 00014 class DaqToOStream; 00015 class FileTraits; 00016 class DaqToStrStream; 00017 } 00018 00019 namespace DayaBay { 00020 class DaqBlock; 00021 class DaqCrate; 00022 } 00023 00024 class IDybStorageSvc; 00025 00026 #include "DaqFormatModules/DaqFormatWriter.h" 00027 00028 class DaqRootWriter : public DybDaq::DaqFormatWriter { 00029 00030 public: 00031 00032 DaqRootWriter(const std::string& name, 00033 ISvcLocator* pSvcLocator); 00034 virtual ~DaqRootWriter(); 00035 00036 virtual StatusCode initialize(); 00037 00038 virtual StatusCode finalize(); 00039 00040 protected: 00041 00045 virtual DybDaq::DaqToOStream* createDaqToOStream(const DybDaq::FileTraits& traits); 00046 00050 virtual StatusCode writeData(const DayaBay::DaqCrate* daqCrate); 00051 00055 virtual void wroteFileHead(); 00056 00060 virtual void wroteData(); 00061 00065 virtual void wroteFileFoot(); 00066 00067 private: 00068 00072 DayaBay::DaqBlock* createDaqBlock(); 00073 00077 StatusCode writeDaqBlock(DayaBay::DaqBlock* daqBlock, 00078 unsigned int deltaEvents); 00079 00083 std::string m_daqBlockLocation; 00084 00088 DybDaq::DaqToStrStream* m_strStream; 00089 00093 IDybStorageSvc* m_storageSvc; 00094 }; 00095 00096 #endif // DYBIO_DAQROOTWRITER_H