00001 #ifndef IOPool_Streamer_StreamerOutputModuleBase_h 00002 #define IOPool_Streamer_StreamerOutputModuleBase_h 00003 00004 #include "FWCore/Framework/interface/OutputModule.h" 00005 #include "IOPool/Streamer/interface/StreamSerializer.h" 00006 #include "IOPool/Streamer/interface/MsgTools.h" 00007 #include "FWCore/Framework/interface/Frameworkfwd.h" 00008 #include <memory> 00009 #include <vector> 00010 00011 class InitMsgBuilder; 00012 class EventMsgBuilder; 00013 namespace edm { 00014 class StreamerOutputModuleBase : public OutputModule { 00015 public: 00016 explicit StreamerOutputModuleBase(ParameterSet const& ps); 00017 virtual ~StreamerOutputModuleBase(); 00018 00019 private: 00020 virtual void beginRun(RunPrincipal const&); 00021 virtual void endRun(RunPrincipal const&); 00022 virtual void beginJob(EventSetup const&); 00023 virtual void endJob(); 00024 virtual void writeRun(RunPrincipal const&); 00025 virtual void writeLuminosityBlock(LuminosityBlockPrincipal const&); 00026 virtual void write(EventPrincipal const& e); 00027 00028 virtual void start() const = 0; 00029 virtual void stop() const = 0; 00030 virtual void doOutputHeader(InitMsgBuilder const& init_message) const = 0; 00031 virtual void doOutputEvent(EventMsgBuilder const& msg) const = 0; 00032 00033 std::auto_ptr<InitMsgBuilder> serializeRegistry(); 00034 std::auto_ptr<EventMsgBuilder> serializeEvent(EventPrincipal const& e); 00035 void setHltMask(EventPrincipal const& e); 00036 void setLumiSection(); 00037 00038 private: 00039 Selections const* selections_; 00040 00041 int maxEventSize_; 00042 bool useCompression_; 00043 int compressionLevel_; 00044 00045 // test luminosity sections 00046 int lumiSectionInterval_; 00047 double timeInSecSinceUTC; 00048 00049 StreamSerializer serializer_; 00050 00051 //Event variables, made class memebers to avoid re instatiation for each event. 00052 unsigned int hltsize_; 00053 uint32 lumi_; 00054 std::vector<bool> l1bit_; 00055 std::vector<unsigned char> hltbits_; 00056 uint32 origSize_; 00057 00058 Strings hltTriggerSelections_; 00059 uint32 outputModuleId_; 00060 }; //end-of-class-def 00061 } // end of namespace-edm 00062 00063 #endif