CMS 3D CMS Logo

FUShmDQMOutputService.h

Go to the documentation of this file.
00001 #ifndef FUShmDQMOutputService_H
00002 #define FUShmDQMOutputService_H
00003 
00015 #include "DQMServices/Core/interface/DQMStore.h"
00016 #include "DQMServices/Core/interface/MonitorElement.h"
00017 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00018 #include "FWCore/ServiceRegistry/interface/ActivityRegistry.h"
00019 #include "FWCore/Framework/interface/Event.h"
00020 #include "FWCore/Framework/interface/EventSetup.h"
00021 #include "IOPool/Streamer/interface/DQMEventMessage.h"
00022 #include "IOPool/Streamer/interface/DQMEventMsgBuilder.h"
00023 #include "DataFormats/Provenance/interface/LuminosityBlockID.h"
00024 #include "IOPool/Streamer/interface/StreamDQMSerializer.h"
00025 #include "IOPool/Streamer/interface/StreamDQMDeserializer.h"
00026 #include "EventFilter/ShmBuffer/interface/FUShmBuffer.h"
00027 
00028 class FUShmDQMOutputService 
00029 {
00030  public:
00031   FUShmDQMOutputService(const edm::ParameterSet &pset,
00032                         edm::ActivityRegistry &actReg);
00033   ~FUShmDQMOutputService(void);
00034 
00035   void postEventProcessing(const edm::Event &event,
00036                            const edm::EventSetup &eventSetup);
00037 
00038   // test routines to check on timing of various signals
00039   void postBeginJobProcessing();
00040   void postEndJobProcessing();
00041   void preSourceProcessing();
00042   void postSourceProcessing();
00043   void preModuleProcessing(const edm::ModuleDescription &modDesc);
00044   void postModuleProcessing(const edm::ModuleDescription &modDesc);
00045   void preSourceConstructionProcessing(const edm::ModuleDescription &modDesc);
00046   void postSourceConstructionProcessing(const edm::ModuleDescription &modDesc);
00047   void preModuleConstructionProcessing(const edm::ModuleDescription &modDesc);
00048   void postModuleConstructionProcessing(const edm::ModuleDescription &modDesc);
00049   void preBeginRun(const edm::RunID &runID, const edm::Timestamp &timestamp);
00050 
00051   bool attachToShm();
00052   bool detachFromShm();
00053 
00054  protected:
00055   DQMStore *bei;
00056 
00057   void findMonitorElements(DQMEvent::TObjectTable &toTable,
00058                            std::string folderPath);
00059 
00060  private:
00061   void writeShmDQMData(DQMEventMsgBuilder const& dqmMsgBuilder);
00062 
00063   std::vector<char> messageBuffer_;
00064   int lumiSectionInterval_;  
00065   double lumiSectionsPerUpdate_;
00066   //edm::LuminosityBlockID lumiSectionOfPreviousUpdate_;
00067   //edm::LuminosityBlockID firstLumiSectionSeen_;
00068   unsigned int lumiSectionOfPreviousUpdate_;
00069   unsigned int firstLumiSectionSeen_;
00070   double timeInSecSinceUTC_;
00071   bool initializationIsNeeded_;
00072   bool useCompression_;
00073   int compressionLevel_;
00074   edm::StreamDQMSerializer serializeWorker_;
00075   edm::StreamDQMDeserializer deserializeWorker_;
00076 
00077   evf::FUShmBuffer* shmBuffer_;
00078 
00079   static bool fuIdsInitialized_;
00080   static uint32 fuProcId_;
00081   static uint32 fuGuidValue_;
00082 };
00083 
00084 #endif

Generated on Tue Jun 9 17:34:42 2009 for CMSSW by  doxygen 1.5.4