diff --git a/Configuration/AlCa/python/autoCond.py b/Configuration/AlCa/python/autoCond.py index 3816ce9494b82..a7f6fc14dd79b 100644 --- a/Configuration/AlCa/python/autoCond.py +++ b/Configuration/AlCa/python/autoCond.py @@ -68,15 +68,15 @@ # GlobalTag for MC production with perfectly aligned and calibrated detector for Phase1 2021 'phase1_2021_design' : '121X_mcRun3_2021_design_v6', # GlobalTag for MC production with realistic conditions for Phase1 2021 - 'phase1_2021_realistic' : '121X_mcRun3_2021_realistic_v7', + 'phase1_2021_realistic' : '121X_mcRun3_2021_realistic_v8', # GlobalTag for MC production (cosmics) with realistic conditions for Phase1 2021, Strip tracker in DECO mode - 'phase1_2021_cosmics' : '121X_mcRun3_2021cosmics_realistic_deco_v7', + 'phase1_2021_cosmics' : '121X_mcRun3_2021cosmics_realistic_deco_v8', # GlobalTag for MC production with realistic conditions for Phase1 2021 detector for Heavy Ion - 'phase1_2021_realistic_hi' : '121X_mcRun3_2021_realistic_HI_v7', + 'phase1_2021_realistic_hi' : '121X_mcRun3_2021_realistic_HI_v8', # GlobalTag for MC production with realistic conditions for Phase1 2023 - 'phase1_2023_realistic' : '121X_mcRun3_2023_realistic_v6', + 'phase1_2023_realistic' : '121X_mcRun3_2023_realistic_v7', # GlobalTag for MC production with realistic conditions for Phase1 2024 - 'phase1_2024_realistic' : '121X_mcRun3_2024_realistic_v6', + 'phase1_2024_realistic' : '121X_mcRun3_2024_realistic_v7', # GlobalTag for MC production with realistic conditions for Phase2 'phase2_realistic' : '121X_mcRun4_realistic_v4' } diff --git a/Configuration/DataProcessing/python/RecoTLR.py b/Configuration/DataProcessing/python/RecoTLR.py index 8396ff1d71711..bfc099512a375 100644 --- a/Configuration/DataProcessing/python/RecoTLR.py +++ b/Configuration/DataProcessing/python/RecoTLR.py @@ -5,6 +5,11 @@ # common utilities ############################################################################## def _swapOfflineBSwithOnline(process): + import RecoVertex.BeamSpotProducer.onlineBeamSpotESProducer_cfi as _mod + process.BeamSpotESProducer = _mod.onlineBeamSpotESProducer.clone( + timeThreshold = 999999 # for express allow >48h old payloads for replays. DO NOT CHANGE + ) + from RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi import onlineBeamSpotProducer process.offlineBeamSpot = onlineBeamSpotProducer.clone() return process diff --git a/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py b/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py index f5ff92debab2c..cb0d6673f762c 100644 --- a/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py +++ b/Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py @@ -1104,7 +1104,7 @@ def condition(self, fragment, stepList, key, hasHarvest): class UpgradeWorkflow_DD4hepDB(UpgradeWorkflow): def setup_(self, step, stepName, stepDict, k, properties): if 'Run3' in stepDict[step][k]['--era']: - stepDict[stepName][k] = merge([{'--conditions': '120X_mcRun3_2021_realistic_dd4hep_v1', '--geometry': 'DB:Extended', '--procModifiers': 'dd4hep'}, stepDict[step][k]]) + stepDict[stepName][k] = merge([{'--conditions': '121X_mcRun3_2021_realistic_dd4hep_v3', '--geometry': 'DB:Extended', '--procModifiers': 'dd4hep'}, stepDict[step][k]]) def condition(self, fragment, stepList, key, hasHarvest): return '2021' in key upgradeWFs['DD4hepDB'] = UpgradeWorkflow_DD4hepDB( diff --git a/DQM/BeamMonitor/python/AlcaBeamMonitorHeavyIons_cff.py b/DQM/BeamMonitor/python/AlcaBeamMonitorHeavyIons_cff.py index e6fbaa6a674b7..4ef737f37899f 100644 --- a/DQM/BeamMonitor/python/AlcaBeamMonitorHeavyIons_cff.py +++ b/DQM/BeamMonitor/python/AlcaBeamMonitorHeavyIons_cff.py @@ -11,6 +11,11 @@ from Configuration.ProcessModifiers.dqmPerLSsaving_cff import dqmPerLSsaving dqmPerLSsaving.toModify(AlcaBeamMonitor, perLSsaving=True) +import RecoVertex.BeamSpotProducer.onlineBeamSpotESProducer_cfi as _mod +BeamSpotESProducer = _mod.onlineBeamSpotESProducer.clone( + timeThreshold = 999999 # accept even old payloads for MC/Data ReReco. DO NOT CHANGE +) + import RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi scalerBeamSpot = RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi.onlineBeamSpotProducer.clone() alcaBeamMonitor = cms.Sequence( scalerBeamSpot*AlcaBeamMonitor ) diff --git a/DQM/BeamMonitor/python/AlcaBeamMonitor_cff.py b/DQM/BeamMonitor/python/AlcaBeamMonitor_cff.py index 392d5125c2f8e..67b994824c378 100644 --- a/DQM/BeamMonitor/python/AlcaBeamMonitor_cff.py +++ b/DQM/BeamMonitor/python/AlcaBeamMonitor_cff.py @@ -5,6 +5,11 @@ from Configuration.ProcessModifiers.dqmPerLSsaving_cff import dqmPerLSsaving dqmPerLSsaving.toModify(AlcaBeamMonitor, perLSsaving=True) +import RecoVertex.BeamSpotProducer.onlineBeamSpotESProducer_cfi as _mod +BeamSpotESProducer = _mod.onlineBeamSpotESProducer.clone( + timeThreshold = 999999 # accept even old payloads for MC/Data ReReco. DO NOT CHANGE +) + import RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi scalerBeamSpot = RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi.onlineBeamSpotProducer.clone() diff --git a/DQM/Integration/python/clients/pixel_dqm_sourceclient-live_cfg.py b/DQM/Integration/python/clients/pixel_dqm_sourceclient-live_cfg.py index 1662356049622..3831cd32a456c 100644 --- a/DQM/Integration/python/clients/pixel_dqm_sourceclient-live_cfg.py +++ b/DQM/Integration/python/clients/pixel_dqm_sourceclient-live_cfg.py @@ -128,6 +128,9 @@ else: process.load("Configuration.StandardSequences.Reconstruction_cff") +import RecoVertex.BeamSpotProducer.onlineBeamSpotESProducer_cfi as _mod +process.BeamSpotESProducer = _mod.onlineBeamSpotESProducer.clone() + import RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi process.offlineBeamSpot = RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi.onlineBeamSpotProducer.clone() diff --git a/DQM/Integration/python/clients/sistrip_dqm_sourceclient-live_cfg.py b/DQM/Integration/python/clients/sistrip_dqm_sourceclient-live_cfg.py index afac4d725764c..ed8b9fde3f8c7 100644 --- a/DQM/Integration/python/clients/sistrip_dqm_sourceclient-live_cfg.py +++ b/DQM/Integration/python/clients/sistrip_dqm_sourceclient-live_cfg.py @@ -116,6 +116,9 @@ else: process.load("Configuration.StandardSequences.Reconstruction_cff") +import RecoVertex.BeamSpotProducer.onlineBeamSpotESProducer_cfi as _mod +process.BeamSpotESProducer = _mod.onlineBeamSpotESProducer.clone() + import RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi process.offlineBeamSpot = RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi.onlineBeamSpotProducer.clone() diff --git a/RecoVertex/BeamSpotProducer/plugins/BeamSpotOnlineProducer.cc b/RecoVertex/BeamSpotProducer/plugins/BeamSpotOnlineProducer.cc index 26414f1d13977..ff6889904d88e 100644 --- a/RecoVertex/BeamSpotProducer/plugins/BeamSpotOnlineProducer.cc +++ b/RecoVertex/BeamSpotProducer/plugins/BeamSpotOnlineProducer.cc @@ -10,21 +10,22 @@ ________________________________________________________________**/ +#include "CondFormats/BeamSpotObjects/interface/BeamSpotObjects.h" +#include "CondFormats/DataRecord/interface/BeamSpotObjectsRcd.h" +#include "CondFormats/DataRecord/interface/BeamSpotTransientObjectsRcd.h" #include "DataFormats/BeamSpot/interface/BeamSpot.h" #include "DataFormats/Common/interface/Handle.h" #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerEvmReadoutRecord.h" #include "DataFormats/Scalers/interface/BeamSpotOnline.h" -#include "CondFormats/BeamSpotObjects/interface/BeamSpotObjects.h" -#include "CondFormats/DataRecord/interface/BeamSpotObjectsRcd.h" -#include "CondFormats/DataRecord/interface/BeamSpotTransientObjectsRcd.h" -#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" -#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/Framework/interface/ESWatcher.h" #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/Framework/interface/stream/EDProducer.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" #include "FWCore/Utilities/interface/ESGetToken.h" class BeamSpotOnlineProducer : public edm::stream::EDProducer<> { @@ -48,6 +49,9 @@ class BeamSpotOnlineProducer : public edm::stream::EDProducer<> { const edm::ESGetToken beamToken_; const edm::ESGetToken beamTransientToken_; + // watch IOV transition to emit warnings + edm::ESWatcher beamTransientRcdESWatcher_; + const unsigned int theBeamShoutMode; }; @@ -99,7 +103,7 @@ void BeamSpotOnlineProducer::produce(Event& iEvent, const EventSetup& iSetup) { if (useTransientRecord_) { auto const& spotDB = iSetup.getData(beamTransientToken_); if (spotDB.GetBeamType() != 2) { - if (shoutMODE) { + if (shoutMODE && beamTransientRcdESWatcher_.check(iSetup)) { edm::LogWarning("BeamSpotFromDB") << "Online Beam Spot producer falls back to DB value because the ESProducer returned a fake beamspot "; } diff --git a/RecoVertex/BeamSpotProducer/plugins/OnlineBeamSpotESProducer.cc b/RecoVertex/BeamSpotProducer/plugins/OnlineBeamSpotESProducer.cc index 5eae0bfa46791..ebccb1276e1c0 100644 --- a/RecoVertex/BeamSpotProducer/plugins/OnlineBeamSpotESProducer.cc +++ b/RecoVertex/BeamSpotProducer/plugins/OnlineBeamSpotESProducer.cc @@ -1,23 +1,22 @@ -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/ModuleFactory.h" -#include "FWCore/Framework/interface/ESProducer.h" -#include "FWCore/Utilities/interface/do_nothing_deleter.h" -#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" -#include "DataFormats/BeamSpot/interface/BeamSpot.h" -#include "CondFormats/DataRecord/interface/BeamSpotObjectsRcd.h" #include "CondFormats/BeamSpotObjects/interface/BeamSpotOnlineObjects.h" -#include "CondFormats/DataRecord/interface/BeamSpotOnlineLegacyObjectsRcd.h" +#include "CondFormats/DataRecord/interface/BeamSpotObjectsRcd.h" #include "CondFormats/DataRecord/interface/BeamSpotOnlineHLTObjectsRcd.h" +#include "CondFormats/DataRecord/interface/BeamSpotOnlineLegacyObjectsRcd.h" #include "CondFormats/DataRecord/interface/BeamSpotTransientObjectsRcd.h" -#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" - -#include "FWCore/Framework/interface/ESProductHost.h" -#include "FWCore/Utilities/interface/ReusableObjectHolder.h" +#include "DataFormats/BeamSpot/interface/BeamSpot.h" +#include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/Framework/interface/ESProducer.h" #include "FWCore/Framework/interface/ESProducer.h" +#include "FWCore/Framework/interface/ESProductHost.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/ModuleFactory.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Utilities/interface/ReusableObjectHolder.h" +#include "FWCore/Utilities/interface/do_nothing_deleter.h" #include -#include #include using namespace edm; @@ -86,25 +85,32 @@ const BeamSpotOnlineObjects* OnlineBeamSpotESProducer::compareBS(const BeamSpotO // 3. If both are newer than the limit threshold return // the BS that converged and has larger sigmaZ if (diffBStime1 > limitTime && diffBStime2 > limitTime) { + edm::LogInfo("OnlineBeamSpotESProducer") << "Defaulting to fake becuase both payloads are too old."; return nullptr; } else if (diffBStime2 > limitTime) { if (bs1->GetSigmaZ() > sigmaZThreshold_ && bs1->GetBeamType() == 2) { return bs1; } else { + edm::LogInfo("OnlineBeamSpotESProducer") + << "Defaulting to fake because the legacy Beam Spot is not suitable and HLT one is too old."; return nullptr; } } else if (diffBStime1 > limitTime) { if (bs2->GetSigmaZ() > sigmaZThreshold_ && bs2->GetBeamType() == 2) { return bs2; } else { + edm::LogInfo("OnlineBeamSpotESProducer") + << "Defaulting to fake because the HLT Beam Spot is not suitable and the legacy one too old."; return nullptr; } } else { if (bs1->GetSigmaZ() > bs2->GetSigmaZ() && bs1->GetBeamType() == 2) { return bs1; - } else if (bs2->GetSigmaZ() > bs1->GetSigmaZ() && bs2->GetBeamType() == 2) { + } else if (bs2->GetSigmaZ() >= bs1->GetSigmaZ() && bs2->GetBeamType() == 2) { return bs2; } else { + edm::LogInfo("OnlineBeamSpotESProducer") + << "Defaulting to fake because despite both payloads are young enough, none has the right BeamType."; return nullptr; } } @@ -134,6 +140,7 @@ std::shared_ptr OnlineBeamSpotESProducer::produce(const B auto legacyRec = iRecord.tryToGetRecord(); auto hltRec = iRecord.tryToGetRecord(); if (not legacyRec and not hltRec) { + edm::LogInfo("OnlineBeamSpotESProducer") << "None of the Beam Spots in ES are available! \n returning a fake one."; return std::shared_ptr(&fakeBS_, edm::do_nothing_deleter()); } @@ -149,6 +156,8 @@ std::shared_ptr OnlineBeamSpotESProducer::produce(const B return std::shared_ptr(best, edm::do_nothing_deleter()); } else { return std::shared_ptr(&fakeBS_, edm::do_nothing_deleter()); + edm::LogInfo("OnlineBeamSpotESProducer") + << "None of the Online BeamSpots in the ES is suitable, \n returning a fake one. "; } }; diff --git a/RecoVertex/BeamSpotProducer/python/BeamSpotOnline_cff.py b/RecoVertex/BeamSpotProducer/python/BeamSpotOnline_cff.py index 24141df7742ab..bda1a1fd3784f 100644 --- a/RecoVertex/BeamSpotProducer/python/BeamSpotOnline_cff.py +++ b/RecoVertex/BeamSpotProducer/python/BeamSpotOnline_cff.py @@ -1,13 +1,8 @@ import FWCore.ParameterSet.Config as cms -from RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi import * - -#scalers = cms.EDProducer('ScalersRawToDigi') import RecoVertex.BeamSpotProducer.onlineBeamSpotESProducer_cfi as _mod BeamSpotESProducer = _mod.onlineBeamSpotESProducer.clone() -from Configuration.Eras.Modifier_run3_common_cff import run3_common -run3_common.toModify(onlineBeamSpotProducer, useTransientRecord = True) - +from RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi import * onlineBeamSpot = cms.Sequence( onlineBeamSpotProducer ) diff --git a/RecoVertex/BeamSpotProducer/python/BeamSpotOnline_cfi.py b/RecoVertex/BeamSpotProducer/python/BeamSpotOnline_cfi.py index 3d53a9d2a7b5e..f71348bd486f0 100644 --- a/RecoVertex/BeamSpotProducer/python/BeamSpotOnline_cfi.py +++ b/RecoVertex/BeamSpotProducer/python/BeamSpotOnline_cfi.py @@ -6,3 +6,5 @@ gtEvmLabel = 'gtEvmDigis' ) +from Configuration.Eras.Modifier_run3_common_cff import run3_common +run3_common.toModify(onlineBeamSpotProducer, useTransientRecord = True)