Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-03-08 03:04:04

0001 #ifndef DQM_BeamMonitor_OnlineBeamMonitor_h
0002 #define DQM_BeamMonitor_OnlineBeamMonitor_h
0003 
0004 /** \class OnlineBeamMonitor
0005  * *
0006  *  \author   Simone Gennai INFN/Bicocca
0007  */
0008 // C++
0009 #include <map>
0010 #include <vector>
0011 #include <string>
0012 #include <fstream>
0013 // CMS
0014 #include "FWCore/Framework/interface/Frameworkfwd.h"
0015 #include "FWCore/Framework/interface/Event.h"
0016 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0017 #include "FWCore/Utilities/interface/ESGetToken.h"
0018 #include "DQMServices/Core/interface/DQMStore.h"
0019 #include "DQMServices/Core/interface/DQMOneEDAnalyzer.h"
0020 #include "DataFormats/Provenance/interface/LuminosityBlockID.h"
0021 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
0022 #include "CondFormats/BeamSpotObjects/interface/BeamSpotObjects.h"
0023 #include "CondFormats/BeamSpotObjects/interface/BeamSpotOnlineObjects.h"
0024 #include "CondFormats/DataRecord/interface/BeamSpotOnlineLegacyObjectsRcd.h"
0025 #include "CondFormats/DataRecord/interface/BeamSpotOnlineHLTObjectsRcd.h"
0026 
0027 namespace onlinebeammonitor {
0028   struct BeamSpotInfo {
0029     typedef std::map<std::string, reco::BeamSpot> BeamSpotContainer;
0030     BeamSpotContainer beamSpotsMap_;
0031   };
0032 }  // namespace onlinebeammonitor
0033 
0034 class OnlineBeamMonitor : public DQMOneEDAnalyzer<edm::LuminosityBlockCache<onlinebeammonitor::BeamSpotInfo>> {
0035 public:
0036   OnlineBeamMonitor(const edm::ParameterSet&);
0037   static void fillDescriptions(edm::ConfigurationDescriptions&);
0038   void analyze(edm::Event const&, edm::EventSetup const&) override;
0039 
0040 protected:
0041   void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
0042   std::shared_ptr<onlinebeammonitor::BeamSpotInfo> globalBeginLuminosityBlock(
0043       const edm::LuminosityBlock& iLumi, const edm::EventSetup& iSetup) const override;
0044   void fetchBeamSpotInformation(const edm::Event& iEvent, const edm::EventSetup& iSetup);
0045   void globalEndLuminosityBlock(const edm::LuminosityBlock& iLumi, const edm::EventSetup& iSetup) override;
0046   void dqmEndRun(edm::Run const&, edm::EventSetup const&) override;
0047 
0048 private:
0049   //Typedefs
0050   //                BF,BS...
0051   typedef std::map<std::string, reco::BeamSpot> BeamSpotContainer;
0052   //                x,y,z,sigmax(y,z)... [run,lumi]          Histo name
0053   typedef std::map<std::string, std::map<std::string, std::map<std::string, MonitorElement*>>> HistosContainer;
0054   //                x,y,z,sigmax(y,z)... [run,lumi]          Histo name
0055   typedef std::map<std::string, std::map<std::string, std::map<std::string, int>>> PositionContainer;
0056 
0057   //Parameters
0058   std::string monitorName_;
0059   edm::EDGetTokenT<reco::BeamSpot> bsOnlineToken_;
0060   edm::ESGetToken<BeamSpotOnlineObjects, BeamSpotOnlineHLTObjectsRcd> bsHLTToken_;
0061   edm::ESGetToken<BeamSpotOnlineObjects, BeamSpotOnlineLegacyObjectsRcd> bsLegacyToken_;
0062   std::ofstream fasciiDIP;
0063 
0064   //Service variables
0065   int numberOfValuesToSave_;
0066   std::vector<int> processedLumis_;
0067   // MonitorElements:
0068   MonitorElement* bsChoice_;
0069 
0070   //Containers
0071   HistosContainer histosMap_;
0072   PositionContainer positionsMap_;
0073   std::vector<std::string> varNamesV_;                            //x,y,z,sigmax(y,z)
0074   std::multimap<std::string, std::string> histoByCategoryNames_;  //run, lumi
0075 
0076   //For File Writing
0077   bool appendRunTxt_;
0078   bool writeDIPTxt_;
0079   std::string outputDIPTxt_;
0080 
0081   bool shouldReadEvent_;
0082 };
0083 
0084 #endif