File indexing completed on 2023-05-21 22:56:50
0001 #ifndef DQM_BeamMonitor_AlcaBeamMonitor_h
0002 #define DQM_BeamMonitor_AlcaBeamMonitor_h
0003
0004
0005
0006
0007
0008
0009
0010 #include <map>
0011 #include <vector>
0012 #include <string>
0013
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 "DataFormats/VertexReco/interface/Vertex.h"
0023 #include "DataFormats/VertexReco/interface/VertexFwd.h"
0024 #include "CondFormats/DataRecord/interface/BeamSpotObjectsRcd.h"
0025 #include "CondFormats/BeamSpotObjects/interface/BeamSpotObjects.h"
0026
0027 class BeamFitter;
0028 class PVFitter;
0029
0030 namespace alcabeammonitor {
0031 struct BeamSpotInfo {
0032 std::vector<reco::VertexCollection> vertices_;
0033 typedef std::map<std::string, reco::BeamSpot> BeamSpotContainer;
0034 BeamSpotContainer beamSpotMap_;
0035 };
0036 }
0037
0038 class AlcaBeamMonitor : public DQMOneEDAnalyzer<edm::LuminosityBlockCache<alcabeammonitor::BeamSpotInfo>> {
0039 public:
0040 AlcaBeamMonitor(const edm::ParameterSet&);
0041 static void fillDescriptions(edm::ConfigurationDescriptions&);
0042
0043 protected:
0044 void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
0045 void analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) override;
0046 std::shared_ptr<alcabeammonitor::BeamSpotInfo> globalBeginLuminosityBlock(
0047 const edm::LuminosityBlock& iLumi, const edm::EventSetup& iSetup) const override;
0048 void globalEndLuminosityBlock(const edm::LuminosityBlock& iLumi, const edm::EventSetup& iSetup) override;
0049 void dqmEndRun(edm::Run const&, edm::EventSetup const&) override;
0050
0051 private:
0052
0053
0054 typedef std::map<std::string, reco::BeamSpot> BeamSpotContainer;
0055
0056 typedef std::map<std::string, std::map<std::string, std::map<std::string, MonitorElement*>>> HistosContainer;
0057
0058 typedef std::map<std::string, std::map<std::string, std::map<std::string, int>>> PositionContainer;
0059
0060
0061 std::string monitorName_;
0062 const edm::EDGetTokenT<reco::VertexCollection> primaryVertexLabel_;
0063 const edm::EDGetTokenT<reco::TrackCollection> trackLabel_;
0064 const edm::EDGetTokenT<reco::BeamSpot> scalerLabel_;
0065 const edm::ESGetToken<BeamSpotObjects, BeamSpotObjectsRcd> beamSpotToken_;
0066 bool perLSsaving_;
0067
0068
0069 int numberOfValuesToSave_;
0070 std::unique_ptr<BeamFitter> theBeamFitter_;
0071 std::unique_ptr<PVFitter> thePVFitter_;
0072 std::vector<int> processedLumis_;
0073
0074
0075 MonitorElement* hD0Phi0_;
0076 MonitorElement* hDxyBS_;
0077
0078
0079
0080 HistosContainer histosMap_;
0081 PositionContainer positionsMap_;
0082 std::vector<std::string> varNamesV_;
0083 std::multimap<std::string, std::string> histoByCategoryNames_;
0084 };
0085
0086 #endif