CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/IOPool/Streamer/interface/StreamerOutputModuleBase.h

Go to the documentation of this file.
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 ParameterSetDescription;
00015   class StreamerOutputModuleBase : public OutputModule {
00016   public:
00017     explicit StreamerOutputModuleBase(ParameterSet const& ps);  
00018     virtual ~StreamerOutputModuleBase();
00019     static void fillDescription(ParameterSetDescription & desc);
00020 
00021   private:
00022     virtual void beginRun(RunPrincipal const&);
00023     virtual void endRun(RunPrincipal const&);
00024     virtual void beginJob();
00025     virtual void endJob();
00026     virtual void writeRun(RunPrincipal const&);
00027     virtual void writeLuminosityBlock(LuminosityBlockPrincipal const&);
00028     virtual void write(EventPrincipal const& e);
00029 
00030     virtual void start() const = 0;
00031     virtual void stop() const = 0;
00032     virtual void doOutputHeader(InitMsgBuilder const& init_message) const = 0;
00033     virtual void doOutputEvent(EventMsgBuilder const& msg) const = 0;
00034 
00035     std::auto_ptr<InitMsgBuilder> serializeRegistry();
00036     std::auto_ptr<EventMsgBuilder> serializeEvent(EventPrincipal const& e); 
00037     void setHltMask(EventPrincipal const& e);
00038     void setLumiSection();
00039 
00040   private:
00041     Selections const* selections_;
00042 
00043     int maxEventSize_;
00044     bool useCompression_;
00045     int compressionLevel_;
00046 
00047     // test luminosity sections
00048     int lumiSectionInterval_;  
00049     double timeInSecSinceUTC;
00050 
00051     StreamSerializer serializer_;
00052 
00053     //Event variables, made class memebers to avoid re instatiation for each event.
00054     unsigned int hltsize_;
00055     uint32 lumi_;
00056     std::vector<bool> l1bit_;
00057     std::vector<unsigned char> hltbits_;
00058     uint32 origSize_;
00059     char host_name_[255];
00060 
00061     Strings hltTriggerSelections_;
00062     uint32 outputModuleId_;
00063   }; //end-of-class-def
00064 } // end of namespace-edm
00065 
00066 #endif