File indexing completed on 2024-04-06 12:06:50
0001 #ifndef BeamMonitor_H
0002 #define BeamMonitor_H
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include <string>
0012 #include <memory>
0013
0014 #include "FWCore/Framework/interface/Frameworkfwd.h"
0015 #include "FWCore/Framework/interface/Event.h"
0016 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0017 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
0018 #include "DataFormats/VertexReco/interface/Vertex.h"
0019 #include "DataFormats/VertexReco/interface/VertexFwd.h"
0020 #include "DataFormats/TrackReco/interface/Track.h"
0021 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0022 #include "DataFormats/Common/interface/TriggerResults.h"
0023 #include "DQMServices/Core/interface/DQMStore.h"
0024 #include "DQMServices/Core/interface/DQMOneEDAnalyzer.h"
0025 #include "RecoVertex/BeamSpotProducer/interface/BSTrkParameters.h"
0026 #include "RecoVertex/BeamSpotProducer/interface/BeamFitter.h"
0027 #include "CondCore/DBOutputService/interface/OnlineDBOutputService.h"
0028 #include "DataFormats/TCDS/interface/BSTRecord.h"
0029 #include "DataFormats/TCDS/interface/TCDSRecord.h"
0030 #include <fstream>
0031
0032
0033
0034
0035
0036 class BeamMonitor : public DQMOneEDAnalyzer<edm::one::WatchLuminosityBlocks> {
0037 public:
0038 BeamMonitor(const edm::ParameterSet&);
0039
0040 protected:
0041
0042 void dqmBeginRun(edm::Run const&, edm::EventSetup const&) override;
0043
0044 void bookHistograms(DQMStore::IBooker& i, const edm::Run& r, const edm::EventSetup& c) override;
0045
0046 void analyze(const edm::Event& e, const edm::EventSetup& c) override;
0047
0048 void beginLuminosityBlock(const edm::LuminosityBlock& lumiSeg, const edm::EventSetup& context) override;
0049
0050 void endLuminosityBlock(const edm::LuminosityBlock& lumiSeg, const edm::EventSetup& c) override;
0051
0052 void dqmEndRun(const edm::Run& r, const edm::EventSetup& c) override;
0053
0054 private:
0055 void FitAndFill(const edm::LuminosityBlock& lumiSeg, int&, int&, int&);
0056 void RestartFitting();
0057 void scrollTH1(TH1*, std::time_t);
0058 bool testScroll(std::time_t&, std::time_t&);
0059 void formatFitTime(char*, const std::time_t&);
0060 std::string getGMTstring(const std::time_t&);
0061
0062 const int dxBin_;
0063 const double dxMin_;
0064 const double dxMax_;
0065
0066 const int vxBin_;
0067 const double vxMin_;
0068 const double vxMax_;
0069
0070 const int phiBin_;
0071 const double phiMin_;
0072 const double phiMax_;
0073
0074 const int dzBin_;
0075 const double dzMin_;
0076 const double dzMax_;
0077 std::string monitorName_;
0078 std::string recordName_;
0079 edm::EDGetTokenT<reco::BeamSpot> bsSrc_;
0080 edm::EDGetTokenT<reco::TrackCollection> tracksLabel_;
0081 edm::EDGetTokenT<reco::VertexCollection> pvSrc_;
0082 edm::EDGetTokenT<edm::TriggerResults> hltSrc_;
0083 edm::Service<cond::service::OnlineDBOutputService> onlineDbService_;
0084 int DBloggerReturn_;
0085
0086 int fitNLumi_;
0087 int fitPVNLumi_;
0088 int resetFitNLumi_;
0089 int resetPVNLumi_;
0090 int intervalInSec_;
0091 bool debug_;
0092 bool onlineMode_;
0093 std::vector<std::string> jetTrigger_;
0094
0095 std::unique_ptr<BeamFitter> theBeamFitter;
0096
0097 int countEvt_;
0098 int countLumi_;
0099 int beginLumiOfBSFit_;
0100 int endLumiOfBSFit_;
0101 int beginLumiOfPVFit_;
0102 int endLumiOfPVFit_;
0103 int lastlumi_;
0104 int nextlumi_;
0105 std::time_t refBStime[2];
0106 std::time_t refPVtime[2];
0107 unsigned int nthBSTrk_;
0108 int nFitElements_;
0109 int nFits_;
0110 double deltaSigCut_;
0111 unsigned int min_Ntrks_;
0112 double maxZ_;
0113 unsigned int minNrVertices_;
0114 double minVtxNdf_;
0115 double minVtxWgt_;
0116
0117 bool resetHistos_;
0118 bool StartAverage_;
0119 int firstAverageFit_;
0120 int countGapLumi_;
0121
0122 bool processed_;
0123 bool useLockRecords_;
0124
0125 int nAnalyzedLS_;
0126 int nLS_for_upload_;
0127
0128 edm::EDGetTokenT<TCDSRecord> tcdsToken_;
0129 bool logToDb_;
0130 bool loggerActive_;
0131
0132
0133
0134
0135 reco::BeamSpot refBS;
0136 reco::BeamSpot preBS;
0137
0138
0139 MonitorElement* h_nTrk_lumi;
0140 MonitorElement* h_nVtx_lumi;
0141 MonitorElement* h_nVtx_lumi_all;
0142 MonitorElement* h_d0_phi0;
0143 MonitorElement* h_trk_z0;
0144 MonitorElement* h_vx_vy;
0145 MonitorElement* h_vx_dz;
0146 MonitorElement* h_vy_dz;
0147 MonitorElement* h_trkPt;
0148 MonitorElement* h_trkVz;
0149 MonitorElement* fitResults;
0150 MonitorElement* h_x0;
0151 MonitorElement* h_y0;
0152 MonitorElement* h_z0;
0153 MonitorElement* h_sigmaX0;
0154 MonitorElement* h_sigmaY0;
0155 MonitorElement* h_sigmaZ0;
0156 MonitorElement* h_nVtx;
0157 MonitorElement* h_nVtx_st;
0158 MonitorElement* h_PVx[2];
0159 MonitorElement* h_PVy[2];
0160 MonitorElement* h_PVz[2];
0161 MonitorElement* h_PVxz;
0162 MonitorElement* h_PVyz;
0163 MonitorElement* pvResults;
0164 std::vector<MonitorElement*> hs;
0165
0166
0167 std::map<int, std::vector<float> > mapPVx, mapPVy, mapPVz;
0168 std::map<int, std::vector<int> > mapNPV;
0169
0170 std::map<int, int> mapBeginBSLS, mapBeginPVLS;
0171 std::map<int, std::time_t> mapBeginBSTime, mapBeginPVTime;
0172
0173 std::map<int, std::size_t> mapLSBSTrkSize;
0174 std::map<int, size_t> mapLSPVStoreSize;
0175
0176 std::map<int, TH1F> mapLSCF;
0177
0178
0179 Float_t reportSummary_;
0180 Float_t summarySum_;
0181 Float_t summaryContent_[3];
0182 MonitorElement* reportSummary;
0183 MonitorElement* reportSummaryContents[3];
0184 MonitorElement* reportSummaryMap;
0185 MonitorElement* cutFlowTable;
0186
0187
0188
0189 std::time_t tmpTime;
0190 std::time_t startTime;
0191 std::time_t refTime;
0192 edm::TimeValue_t ftimestamp;
0193
0194 int frun;
0195 int lastNZbin;
0196 };
0197
0198 #endif
0199
0200
0201
0202
0203