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