From 68d78599cd0ff57265e4501b052b4597b5e88485 Mon Sep 17 00:00:00 2001 From: Marco Musich Date: Tue, 23 Sep 2025 11:45:07 +0200 Subject: [PATCH] add HLT vertexing resolution monitoring (by split vertex method) --- .../src/PrimaryVertexResolution.cc | 4 ++ .../python/DQMOffline_SecondStep_cff.py | 6 +-- .../PrimaryVertexMonitoring_Client_cff.py | 27 ++++++++++ .../python/PrimaryVertexMonitoring_cff.py | 50 ++++++++++++++++++- 4 files changed, 81 insertions(+), 6 deletions(-) create mode 100644 DQMOffline/Trigger/python/PrimaryVertexMonitoring_Client_cff.py diff --git a/DQM/TrackingMonitor/src/PrimaryVertexResolution.cc b/DQM/TrackingMonitor/src/PrimaryVertexResolution.cc index 1c9bd64817867..30cd52deb0f32 100644 --- a/DQM/TrackingMonitor/src/PrimaryVertexResolution.cc +++ b/DQM/TrackingMonitor/src/PrimaryVertexResolution.cc @@ -391,6 +391,10 @@ void PrimaryVertexResolution::bookHistograms(DQMStore::IBooker& iBooker, edm::Ru void PrimaryVertexResolution::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) { edm::Handle hvertices = iEvent.getHandle(vertexSrc_); + if (!hvertices.isValid()) { + return; + } + const reco::VertexCollection& vertices = *hvertices; if (vertices.empty()) return; diff --git a/DQMOffline/Configuration/python/DQMOffline_SecondStep_cff.py b/DQMOffline/Configuration/python/DQMOffline_SecondStep_cff.py index 1217835e093d9..ab5db6c9cb575 100644 --- a/DQMOffline/Configuration/python/DQMOffline_SecondStep_cff.py +++ b/DQMOffline/Configuration/python/DQMOffline_SecondStep_cff.py @@ -17,6 +17,7 @@ from DQMOffline.L1Trigger.L1TriggerDqmOffline_cff import * from DQM.SiTrackerPhase2.Phase2TrackerDQMHarvesting_cff import * from DQM.SiPixelHeterogeneous.SiPixelHeterogenousDQMHarvesting_cff import * +from DQMOffline.Trigger.PrimaryVertexMonitoring_Client_cff import * DQMNone = cms.Sequence() @@ -129,10 +130,7 @@ DQMOffline_SecondStep_PrePOG * DQMMessageLoggerClientSeq ) - - - -HLTMonitoringClient = cms.Sequence(trackingMonitorClientHLT * trackEfficiencyMonitoringClientHLT * trackingForDisplacedJetMonitorClientHLT) +HLTMonitoringClient = cms.Sequence(trackingMonitorClientHLT * trackEfficiencyMonitoringClientHLT * trackingForDisplacedJetMonitorClientHLT * hltVerticesMonitoringClient) HLTMonitoringClientPA= cms.Sequence(trackingMonitorClientHLT * PAtrackingMonitorClientHLT) DQMOffline_SecondStep = cms.Sequence( diff --git a/DQMOffline/Trigger/python/PrimaryVertexMonitoring_Client_cff.py b/DQMOffline/Trigger/python/PrimaryVertexMonitoring_Client_cff.py new file mode 100644 index 0000000000000..08941bb37fc04 --- /dev/null +++ b/DQMOffline/Trigger/python/PrimaryVertexMonitoring_Client_cff.py @@ -0,0 +1,27 @@ +import FWCore.ParameterSet.Config as cms + +from DQM.TrackingMonitorClient.primaryVertexResolutionClient_cfi import primaryVertexResolutionClient as _primaryVertexResolutionClient + +hltPixelVertexResolutionClient = _primaryVertexResolutionClient.clone( + subDirs = ["HLT/Vertexing/hltPixelVertices/Resolution/*"] +) + +hltTrimmedPixelVertexResolutionClient = _primaryVertexResolutionClient.clone( + subDirs = ["HLT/Vertexing/hltTrimmedPixelVertices/Resolution/*"] +) + +hltFullVertexResolutionClient = _primaryVertexResolutionClient.clone( + subDirs = ["HLT/Vertexing/hltVerticesPFFilter/Resolution/*"] +) + +from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker +phase2_tracker.toModify(hltFullVertexResolutionClient, + subDirs = ["HLT/Vertexing/hltFullVertices/Resolution/*"]) + +hltVerticesMonitoringClient = cms.Sequence(hltPixelVertexResolutionClient+ + hltTrimmedPixelVertexResolutionClient+ + hltFullVertexResolutionClient) + +phase2_tracker.toReplaceWith(hltVerticesMonitoringClient, + cms.Sequence(hltPixelVertexResolutionClient+ + hltFullVertexResolutionClient)) diff --git a/DQMOffline/Trigger/python/PrimaryVertexMonitoring_cff.py b/DQMOffline/Trigger/python/PrimaryVertexMonitoring_cff.py index b74ed868c61fb..a7aaf4ae1a551 100644 --- a/DQMOffline/Trigger/python/PrimaryVertexMonitoring_cff.py +++ b/DQMOffline/Trigger/python/PrimaryVertexMonitoring_cff.py @@ -49,10 +49,56 @@ vertexLabel = "hltVerticesL3PFBjets", useHPforAlignmentPlots = False ) + +#### vertexing resolution plots + +from DQM.TrackingMonitor.primaryVertexResolution_cfi import primaryVertexResolution as _primaryVertexResolution + +hltPixelVertexResolution = _primaryVertexResolution.clone( + vertexSrc = "hltPixelVertices", + rootFolder = "HLT/Vertexing/hltPixelVertices/Resolution" +) + +pp_on_PbPb_run3.toModify(hltPixelVertexResolution, + vertexSrc = "hltPixelVerticesPPOnAA") + + +phase2_tracker.toModify(hltPixelVertexResolution, + vertexSrc = "hltPhase2PixelVertices") + +hltTrimmedPixelVertexResolution = _primaryVertexResolution.clone( + vertexSrc = "hltTrimmedPixelVertices", + rootFolder = "HLT/Vertexing/hltTrimmedPixelVertices/Resolution" +) + +pp_on_PbPb_run3.toModify(hltTrimmedPixelVertexResolution, + vertexSrc = "hltTrimmedPixelVerticesPPOnAA") + +hltVerticesPFFilterResolution = _primaryVertexResolution.clone( + vertexSrc = "hltVerticesPFFilter", + rootFolder = "HLT/Vertexing/hltVerticesPFFilter/Resolution" +) + +pp_on_PbPb_run3.toModify(hltVerticesPFFilterResolution, + vertexSrc = "hltVerticesPFFilterPPOnAA") + +phase2_tracker.toModify(hltVerticesPFFilterResolution, + rootFolder = "HLT/Vertexing/hltFullVertices/Resolution", + vertexSrc = "hltOfflinePrimaryVertices") + +### the sequence + vertexingMonitorHLT = cms.Sequence( hltPixelVerticesMonitoring + hltTrimmedPixelVerticesMonitoring + - hltVerticesPFFilterMonitoring + hltVerticesPFFilterMonitoring + + hltPixelVertexResolution + + hltTrimmedPixelVertexResolution + + hltVerticesPFFilterResolution ) -phase2_tracker.toReplaceWith(vertexingMonitorHLT, cms.Sequence(hltPixelVerticesMonitoring + hltVerticesMonitoring)) +phase2_tracker.toReplaceWith(vertexingMonitorHLT, cms.Sequence(hltPixelVerticesMonitoring + + hltVerticesMonitoring + + hltPixelVertexResolution + + hltVerticesPFFilterResolution + ))