00001 /* 00002 * SingleLoader 00003 * Convert SimReadout to Readout. 00004 * Buffer them and output them one at a time 00005 * 00006 * Zhe Wang, Jan 26 2009 00007 * 00008 */ 00009 00010 #ifndef _SINGLE_LOADER_H_ 00011 #define _SINGLE_LOADER_H_ 00012 00013 #include "Stage/StageProcessor.h" 00014 #include "Event/SimReadoutHeader.h" 00015 #include "Event/ReadoutHeader.h" 00016 00018 #include "Stage/IStage.h" 00019 #include "Stage/FFTimeStamp.h" 00020 #include "Stage/HeaderStageData.h" 00021 00022 using namespace DayaBay; 00023 00024 class SingleLoader : public StageProcessor<DayaBay::ReadoutHeader> 00025 { 00026 public: 00027 SingleLoader(const std::string& name,ISvcLocator* pSvcLocator); 00028 virtual ~SingleLoader(); 00029 00030 virtual StatusCode initialize(); 00031 virtual StatusCode execute(); 00032 virtual StatusCode finalize(); 00033 00034 private: 00035 00037 FFTimeStamp m_currentTime; 00038 00040 StatusCode fillPipeline(SimReadoutHeader* pSimReadoutHeader); 00041 00042 typedef HeaderStageData<SimReadoutHeader> SimReadoutData; 00043 typedef HeaderStageData<ReadoutHeader> ReadoutData; 00044 00045 private: 00046 // Readout pipeline 00047 typedef std::multimap<TimeStamp,Readout*, std::less<TimeStamp> > ReadoutMultimap; 00048 ReadoutMultimap m_readoutMultimap; 00049 00050 // keep the current SimReadoutHeader 00051 SimReadoutHeader* m_pCurrentSRHeader; 00052 00053 }; 00054 00055 #endif // _SINGLE_LOADER_H_