From 7e321e5730c8abb512f58b2b5287b3048fd1389c Mon Sep 17 00:00:00 2001 From: gennai Date: Fri, 7 May 2021 14:38:24 +0200 Subject: [PATCH 1/2] added the possibility to lock a record --- DQM/BeamMonitor/plugins/BeamMonitor.cc | 12 +++++++++++- DQM/BeamMonitor/plugins/BeamMonitor.h | 4 +++- DQM/BeamMonitor/plugins/FakeBeamMonitor.cc | 12 +++++++++++- DQM/BeamMonitor/plugins/FakeBeamMonitor.h | 6 ++++-- DQM/BeamMonitor/python/BeamMonitor_Cosmics_cff.py | 1 + DQM/BeamMonitor/python/BeamMonitor_MC_cff.py | 1 + DQM/BeamMonitor/python/BeamMonitor_PixelLess_cff.py | 1 + DQM/BeamMonitor/python/BeamMonitor_Pixel_cff.py | 1 + DQM/BeamMonitor/python/BeamMonitor_cff.py | 1 + DQM/BeamMonitor/python/FakeBeamMonitor_cff.py | 1 + .../python/clients/beam_dqm_sourceclient-live_cfg.py | 5 ++++- .../clients/beamfake_dqm_sourceclient-live_cfg.py | 8 ++++++-- .../clients/beamhlt_dqm_sourceclient-live_cfg.py | 4 ++++ .../clients/beamhltfake_dqm_sourceclient-live_cfg.py | 7 ++++--- DQM/Integration/python/clients/last_lumi.txt | 1 + 15 files changed, 54 insertions(+), 11 deletions(-) create mode 100644 DQM/Integration/python/clients/last_lumi.txt diff --git a/DQM/BeamMonitor/plugins/BeamMonitor.cc b/DQM/BeamMonitor/plugins/BeamMonitor.cc index 38a5105eb0fb2..3471760327667 100644 --- a/DQM/BeamMonitor/plugins/BeamMonitor.cc +++ b/DQM/BeamMonitor/plugins/BeamMonitor.cc @@ -137,6 +137,7 @@ BeamMonitor::BeamMonitor(const ParameterSet& ps) minNrVertices_ = ps.getParameter("PVFitter").getUntrackedParameter("minNrVerticesForFit"); minVtxNdf_ = ps.getParameter("PVFitter").getUntrackedParameter("minVertexNdf"); minVtxWgt_ = ps.getParameter("PVFitter").getUntrackedParameter("minVertexMeanWeight"); + useLockRecords_ = ps.getUntrackedParameter("useLockRecords"); if (!monitorName_.empty()) monitorName_ = monitorName_ + "/"; @@ -203,6 +204,12 @@ namespace { }; } // namespace +void BeamMonitor::dqmBeginRun(edm::Run const&, edm::EventSetup const&) { + if (useLockRecords_ && onlineDbService_.isAvailable()) { + onlineDbService_->lockRecords(); + } +} + void BeamMonitor::bookHistograms(DQMStore::IBooker& iBooker, edm::Run const& iRun, edm::EventSetup const& iSetup) { frun = iRun.run(); ftimestamp = iRun.beginTime().value(); @@ -1544,8 +1551,11 @@ void BeamMonitor::dqmEndRun(const Run& r, const EventSetup& context) { mapLSBSTrkSize.clear(); mapLSPVStoreSize.clear(); mapLSCF.clear(); -} + if (useLockRecords_ && onlineDbService_.isAvailable()) { + onlineDbService_->releaseLocks(); + } +} //-------------------------------------------------------- void BeamMonitor::scrollTH1(TH1* h, time_t ref) { char offsetTime[64]; diff --git a/DQM/BeamMonitor/plugins/BeamMonitor.h b/DQM/BeamMonitor/plugins/BeamMonitor.h index 24b6903739f92..4fbd758c06edc 100644 --- a/DQM/BeamMonitor/plugins/BeamMonitor.h +++ b/DQM/BeamMonitor/plugins/BeamMonitor.h @@ -37,6 +37,8 @@ class BeamMonitor : public DQMOneEDAnalyzer { protected: // BeginRun + void dqmBeginRun(edm::Run const&, edm::EventSetup const&) override; + void bookHistograms(DQMStore::IBooker& i, const edm::Run& r, const edm::EventSetup& c) override; void analyze(const edm::Event& e, const edm::EventSetup& c) override; @@ -114,7 +116,7 @@ class BeamMonitor : public DQMOneEDAnalyzer { int countGapLumi_; bool processed_; - + bool useLockRecords_; // ----------member data --------------------------- // std::vector fBSvector; diff --git a/DQM/BeamMonitor/plugins/FakeBeamMonitor.cc b/DQM/BeamMonitor/plugins/FakeBeamMonitor.cc index 0600349e5c4c8..1d0ec92d83b1b 100644 --- a/DQM/BeamMonitor/plugins/FakeBeamMonitor.cc +++ b/DQM/BeamMonitor/plugins/FakeBeamMonitor.cc @@ -134,6 +134,7 @@ FakeBeamMonitor::FakeBeamMonitor(const ParameterSet& ps) minNrVertices_ = ps.getParameter("PVFitter").getUntrackedParameter("minNrVerticesForFit"); minVtxNdf_ = ps.getParameter("PVFitter").getUntrackedParameter("minVertexNdf"); minVtxWgt_ = ps.getParameter("PVFitter").getUntrackedParameter("minVertexMeanWeight"); + useLockRecords_ = ps.getUntrackedParameter("useLockRecords"); if (!monitorName_.empty()) monitorName_ = monitorName_ + "/"; @@ -196,6 +197,12 @@ namespace { }; } // namespace +void FakeBeamMonitor::dqmBeginRun(edm::Run const&, edm::EventSetup const&) { + if (useLockRecords_ && onlineDbService_.isAvailable()) { + onlineDbService_->lockRecords(); + } +} + void FakeBeamMonitor::bookHistograms(DQMStore::IBooker& iBooker, edm::Run const& iRun, edm::EventSetup const& iSetup) { frun = iRun.run(); ftimestamp = iRun.beginTime().value(); @@ -1499,7 +1506,7 @@ void FakeBeamMonitor::FitAndFill(const LuminosityBlock& lumiSeg, int& lastlumi, } //-------------------------------------------------------- -void FakeBeamMonitor::RestartFitting() { +void FakeBeamMonitor::RestartFitting() { // if (debug_) edm::LogInfo("FakeBeamMonitor") << " RestartingFitting:: Restart Beami everything to a fresh start !!! because Gap is > 10 LS" << endl; @@ -1552,6 +1559,9 @@ void FakeBeamMonitor::dqmEndRun(const Run& r, const EventSetup& context) { mapLSBSTrkSize.clear(); mapLSPVStoreSize.clear(); mapLSCF.clear(); + if (useLockRecords_ && onlineDbService_.isAvailable()) { + onlineDbService_->releaseLocks(); + } } //-------------------------------------------------------- diff --git a/DQM/BeamMonitor/plugins/FakeBeamMonitor.h b/DQM/BeamMonitor/plugins/FakeBeamMonitor.h index e14337dfbda45..934486fbd4ed7 100644 --- a/DQM/BeamMonitor/plugins/FakeBeamMonitor.h +++ b/DQM/BeamMonitor/plugins/FakeBeamMonitor.h @@ -37,7 +37,9 @@ class FakeBeamMonitor : public DQMOneEDAnalyzer ~FakeBeamMonitor() override; protected: - // BeginRun + //BeginRun + void dqmBeginRun(edm::Run const&, edm::EventSetup const&) override; + void bookHistograms(DQMStore::IBooker& i, const edm::Run& r, const edm::EventSetup& c) override; void analyze(const edm::Event& e, const edm::EventSetup& c) override; @@ -109,7 +111,7 @@ class FakeBeamMonitor : public DQMOneEDAnalyzer int countGapLumi_; bool processed_; - + bool useLockRecords_; // ----------member data --------------------------- // std::vector fBSvector; diff --git a/DQM/BeamMonitor/python/BeamMonitor_Cosmics_cff.py b/DQM/BeamMonitor/python/BeamMonitor_Cosmics_cff.py index 59f02f0ea11fa..0462fc89680e0 100644 --- a/DQM/BeamMonitor/python/BeamMonitor_Cosmics_cff.py +++ b/DQM/BeamMonitor/python/BeamMonitor_Cosmics_cff.py @@ -11,6 +11,7 @@ resetPVEveryNLumi = cms.untracked.int32(2), Debug = cms.untracked.bool(False), recordName = cms.untracked.string('BeamSpotOnlineHLTObjectsRcd'), + useLockRecords = cms.untracked.bool(False), BeamFitter = cms.PSet( Debug = cms.untracked.bool(False), TrackCollection = cms.untracked.InputTag('ctfWithMaterialTracksP5'), ## ctfWithMaterialTracksP5 for CRAFT diff --git a/DQM/BeamMonitor/python/BeamMonitor_MC_cff.py b/DQM/BeamMonitor/python/BeamMonitor_MC_cff.py index 209465897fedc..341f51f5393ae 100644 --- a/DQM/BeamMonitor/python/BeamMonitor_MC_cff.py +++ b/DQM/BeamMonitor/python/BeamMonitor_MC_cff.py @@ -12,6 +12,7 @@ resetPVEveryNLumi = cms.untracked.int32(2), Debug = cms.untracked.bool(False), recordName = cms.untracked.string('BeamSpotOnlineHLTObjectsRcd'), + useLockRecords = cms.untracked.bool(False), BeamFitter = cms.PSet( Debug = cms.untracked.bool(False), TrackCollection = cms.untracked.InputTag('generalTracks'), ## ctfWithMaterialTracksP5 for CRAFT diff --git a/DQM/BeamMonitor/python/BeamMonitor_PixelLess_cff.py b/DQM/BeamMonitor/python/BeamMonitor_PixelLess_cff.py index 87e4a7c8142b4..2202dc08e92c8 100644 --- a/DQM/BeamMonitor/python/BeamMonitor_PixelLess_cff.py +++ b/DQM/BeamMonitor/python/BeamMonitor_PixelLess_cff.py @@ -10,6 +10,7 @@ resetPVEveryNLumi = cms.untracked.int32(2), Debug = cms.untracked.bool(False), recordName = cms.untracked.string('BeamSpotOnlineHLTObjectsRcd'), + useLockRecords = cms.untracked.bool(False), BeamFitter = cms.PSet( Debug = cms.untracked.bool(False), TrackCollection = cms.untracked.InputTag('ctfPixelLess'), diff --git a/DQM/BeamMonitor/python/BeamMonitor_Pixel_cff.py b/DQM/BeamMonitor/python/BeamMonitor_Pixel_cff.py index 4365d5850eb4e..3bfeadf0c31ab 100644 --- a/DQM/BeamMonitor/python/BeamMonitor_Pixel_cff.py +++ b/DQM/BeamMonitor/python/BeamMonitor_Pixel_cff.py @@ -13,6 +13,7 @@ Debug = cms.untracked.bool(False), OnlineMode = cms.untracked.bool(True), recordName = cms.untracked.string('BeamSpotOnlineHLTObjectsRcd'), + useLockRecords = cms.untracked.bool(False), BeamFitter = cms.PSet( Debug = cms.untracked.bool(False), TrackCollection = cms.untracked.InputTag('pixelTracks'), diff --git a/DQM/BeamMonitor/python/BeamMonitor_cff.py b/DQM/BeamMonitor/python/BeamMonitor_cff.py index 0494a65b047c6..d3cb006c6f10c 100644 --- a/DQM/BeamMonitor/python/BeamMonitor_cff.py +++ b/DQM/BeamMonitor/python/BeamMonitor_cff.py @@ -13,6 +13,7 @@ Debug = cms.untracked.bool(False), OnlineMode = cms.untracked.bool(True), recordName = cms.untracked.string('BeamSpotOnlineHLTObjectsRcd'), + useLockRecords = cms.untracked.bool(False), BeamFitter = cms.PSet( Debug = cms.untracked.bool(False), TrackCollection = cms.untracked.InputTag('generalTracks'), diff --git a/DQM/BeamMonitor/python/FakeBeamMonitor_cff.py b/DQM/BeamMonitor/python/FakeBeamMonitor_cff.py index 18305eb868507..685fc43bbd93e 100644 --- a/DQM/BeamMonitor/python/FakeBeamMonitor_cff.py +++ b/DQM/BeamMonitor/python/FakeBeamMonitor_cff.py @@ -11,6 +11,7 @@ Debug = cms.untracked.bool(False), OnlineMode = cms.untracked.bool(True), recordName = cms.untracked.string('BeamSpotOnlineHLTObjectsRcd'), + useLockRecords = cms.untracked.bool(False), BeamFitter = cms.PSet( Debug = cms.untracked.bool(False), TrackCollection = cms.untracked.InputTag('pixelTracks'), diff --git a/DQM/Integration/python/clients/beam_dqm_sourceclient-live_cfg.py b/DQM/Integration/python/clients/beam_dqm_sourceclient-live_cfg.py index 316b4cf91c64d..5923c1a0d383f 100644 --- a/DQM/Integration/python/clients/beam_dqm_sourceclient-live_cfg.py +++ b/DQM/Integration/python/clients/beam_dqm_sourceclient-live_cfg.py @@ -7,6 +7,7 @@ BSOnlineTag = 'BeamSpotOnlineTestLegacy' BSOnlineJobName = 'BeamSpotOnlineTestLegacy' BSOnlineOmsServiceUrl = 'http://cmsoms-services.cms:9949/urn:xdaq-application:lid=100/getRunAndLumiSection' +useLockRecords = True #from Configuration.Eras.Era_Run2_2018_cff import Run2_2018 #process = cms.Process("BeamMonitor", Run2_2018) FIXME @@ -19,7 +20,7 @@ BSOnlineTag = BSOnlineTag + 'Playback' BSOnlineJobName = BSOnlineJobName + 'Playback' BSOnlineOmsServiceUrl = '' - + useLockRecords = False # process.MessageLogger = cms.Service("MessageLogger", debugModules = cms.untracked.vstring('*'), @@ -36,6 +37,7 @@ if 'unitTest=True' in sys.argv: live=False unitTest=True + useLockRecords = False. #--------------- # Input sources @@ -303,6 +305,7 @@ process.dqmBeamMonitor.OnlineMode = True process.dqmBeamMonitor.recordName = BSOnlineRecordName +process.dqmBeamMonitor.useLockRecords = cms.untracked.bool(useLockRecords) process.dqmBeamMonitor.resetEveryNLumi = 5 # was 10 for HI process.dqmBeamMonitor.resetPVEveryNLumi = 5 # was 10 for HI diff --git a/DQM/Integration/python/clients/beamfake_dqm_sourceclient-live_cfg.py b/DQM/Integration/python/clients/beamfake_dqm_sourceclient-live_cfg.py index 3765c52e57290..8bba1204ff6ef 100644 --- a/DQM/Integration/python/clients/beamfake_dqm_sourceclient-live_cfg.py +++ b/DQM/Integration/python/clients/beamfake_dqm_sourceclient-live_cfg.py @@ -8,7 +8,7 @@ BSOnlineTag = 'BeamSpotOnlineTestLegacy' BSOnlineJobName = 'BeamSpotOnlineTestLegacy' BSOnlineOmsServiceUrl = 'http://cmsoms-services.cms:9949/urn:xdaq-application:lid=100/getRunAndLumiSection' - +useLockRecords = True import sys from Configuration.Eras.Era_Run2_2018_cff import Run2_2018 process = cms.Process("FakeBeamMonitor", Run2_2018) @@ -18,6 +18,7 @@ BSOnlineTag = BSOnlineTag + 'Playback' BSOnlineJobName = BSOnlineJobName + 'Playback' BSOnlineOmsServiceUrl = '' + useLockRecords = False # process.MessageLogger = cms.Service("MessageLogger", @@ -35,9 +36,11 @@ if 'unitTest=True' in sys.argv: live=False unitTest=True + useLockRecords = False else: time.sleep(48.) + #--------------- # Input sources if unitTest: @@ -83,6 +86,7 @@ process.load("DQM.BeamMonitor.FakeBeamMonitor_cff") + #---------------- # Setup tracking #process.load("Configuration.StandardSequences.GeometryRecoDB_cff") @@ -132,7 +136,7 @@ process.dqmFakeBeamMonitor.resetEveryNLumi = 5 # was 10 for HI process.dqmFakeBeamMonitor.resetPVEveryNLumi = 5 # was 10 for HI - +process.dqmFakeBeamMonitor.useLockRecords = cms.untracked.bool(useLockRecords) #--------- diff --git a/DQM/Integration/python/clients/beamhlt_dqm_sourceclient-live_cfg.py b/DQM/Integration/python/clients/beamhlt_dqm_sourceclient-live_cfg.py index 9fffc4061cba8..c28d3ce966be3 100644 --- a/DQM/Integration/python/clients/beamhlt_dqm_sourceclient-live_cfg.py +++ b/DQM/Integration/python/clients/beamhlt_dqm_sourceclient-live_cfg.py @@ -7,6 +7,7 @@ BSOnlineTag = 'BeamSpotOnlineTestHLT' BSOnlineJobName = 'BeamSpotOnlineTestHLT' BSOnlineOmsServiceUrl = 'http://cmsoms-services.cms:9949/urn:xdaq-application:lid=100/getRunAndLumiSection' +useLockRecords = True #from Configuration.Eras.Era_Run2_2018_cff import Run2_2018 #process = cms.Process("BeamMonitor", Run2_2018) # FIMXE @@ -19,6 +20,7 @@ BSOnlineTag = BSOnlineTag + 'Playback' BSOnlineJobName = BSOnlineJobName + 'Playback' BSOnlineOmsServiceUrl = '' + useLockRecords = False # Message logger #process.load("FWCore.MessageLogger.MessageLogger_cfi") @@ -41,6 +43,7 @@ if 'unitTest=True' in sys.argv: live=False unitTest=True + useLockRecords = False # Common part for PP and H.I Running #----------------------------- @@ -95,6 +98,7 @@ #process.GlobalTag = gtCustomise(process.GlobalTag, 'auto:run2_data', '') # Change Beam Monitor variables +process.dqmBeamMonitor.useLockRecords = cms.untracked.bool(useLockRecords) if process.dqmRunConfig.type.value() is "production": process.dqmBeamMonitor.BeamFitter.WriteAscii = True process.dqmBeamMonitor.BeamFitter.AsciiFileName = '/nfshome0/yumiceva/BeamMonitorDQM/BeamFitResults.txt' diff --git a/DQM/Integration/python/clients/beamhltfake_dqm_sourceclient-live_cfg.py b/DQM/Integration/python/clients/beamhltfake_dqm_sourceclient-live_cfg.py index a32d96c6d7628..de82265a4ced6 100644 --- a/DQM/Integration/python/clients/beamhltfake_dqm_sourceclient-live_cfg.py +++ b/DQM/Integration/python/clients/beamhltfake_dqm_sourceclient-live_cfg.py @@ -7,6 +7,7 @@ BSOnlineTag = 'BeamSpotOnlineTestHLT' BSOnlineJobName = 'BeamSpotOnlineTestHLT' BSOnlineOmsServiceUrl = 'http://cmsoms-services.cms:9949/urn:xdaq-application:lid=100/getRunAndLumiSection' +useLockRecords = True import sys from Configuration.Eras.Era_Run2_2018_cff import Run2_2018 @@ -17,6 +18,7 @@ BSOnlineTag = BSOnlineTag + 'Playback' BSOnlineJobName = BSOnlineJobName + 'Playback' BSOnlineOmsServiceUrl = '' + useLockRecords = False # switch live = True # FIXME @@ -25,7 +27,7 @@ if 'unitTest=True' in sys.argv: live=False unitTest=True - + useLockRecords = False # Common part for PP and H.I Running #----------------------------- @@ -81,7 +83,6 @@ #----------------------------- process.load("DQM.BeamMonitor.FakeBeamMonitor_cff") process.dqmBeamMonitor = process.dqmFakeBeamMonitor.clone() - #--------------- # Calibration #--------------- @@ -106,7 +107,7 @@ process.dqmBeamMonitor.monitorName = 'FakeBeamMonitor' process.dqmBeamMonitor.OnlineMode = True process.dqmBeamMonitor.recordName = BSOnlineRecordName - +process.dqmBeamMonitor.useLockRecords = cms.untracked.bool(useLockRecords) process.dqmBeamMonitor.resetEveryNLumi = 5 process.dqmBeamMonitor.resetPVEveryNLumi = 5 diff --git a/DQM/Integration/python/clients/last_lumi.txt b/DQM/Integration/python/clients/last_lumi.txt new file mode 100644 index 0000000000000..573541ac9702d --- /dev/null +++ b/DQM/Integration/python/clients/last_lumi.txt @@ -0,0 +1 @@ +0 From 1982ccf6b88c83bef8ab0521325d413c0ad13ac4 Mon Sep 17 00:00:00 2001 From: gennai Date: Fri, 7 May 2021 16:41:35 +0200 Subject: [PATCH 2/2] fixed the compilation error --- .../python/clients/beam_dqm_sourceclient-live_cfg.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DQM/Integration/python/clients/beam_dqm_sourceclient-live_cfg.py b/DQM/Integration/python/clients/beam_dqm_sourceclient-live_cfg.py index 5923c1a0d383f..e8d6dd21857d2 100644 --- a/DQM/Integration/python/clients/beam_dqm_sourceclient-live_cfg.py +++ b/DQM/Integration/python/clients/beam_dqm_sourceclient-live_cfg.py @@ -37,7 +37,7 @@ if 'unitTest=True' in sys.argv: live=False unitTest=True - useLockRecords = False. + useLockRecords = False #--------------- # Input sources