diff --git a/Configuration/EventContent/python/EventContent_cff.py b/Configuration/EventContent/python/EventContent_cff.py index d5525c3dc94ec..4d598315884a4 100644 --- a/Configuration/EventContent/python/EventContent_cff.py +++ b/Configuration/EventContent/python/EventContent_cff.py @@ -645,6 +645,11 @@ def SwapKeepAndDrop(l): 'keep *_hltSiStripClusters2ApproxClusters_*_*', 'keep DetIds_hltSiStripRawToDigi_*_*' ]) +phase2_tracker.toModify(FEVTDEBUGHLTEventContent, + outputCommands = FEVTDEBUGHLTEventContent.outputCommands+[ + 'keep *_hltPhase2PixelTracks_*_*', + 'keep *_hltPhase2PixelVertices_*_*' + ]) phase2_muon.toModify(FEVTDEBUGHLTEventContent, outputCommands = FEVTDEBUGHLTEventContent.outputCommands + ['keep recoMuons_muons1stStep_*_*']) diff --git a/DQM/SiTrackerPhase2/plugins/Phase2ITMonitorCluster.cc b/DQM/SiTrackerPhase2/plugins/Phase2ITMonitorCluster.cc index 54d7ab6e8d1d0..f58172a12aa5a 100644 --- a/DQM/SiTrackerPhase2/plugins/Phase2ITMonitorCluster.cc +++ b/DQM/SiTrackerPhase2/plugins/Phase2ITMonitorCluster.cc @@ -102,6 +102,12 @@ void Phase2ITMonitorCluster::dqmBeginRun(const edm::Run& iRun, const edm::EventS void Phase2ITMonitorCluster::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) { // Getting the clusters const auto& itPixelClusterHandle = iEvent.getHandle(itPixelClusterToken_); + + if (!itPixelClusterHandle.isValid()) { + edm::LogWarning("Phase2ITMonitorCluster") << "No SiPixelCluster Collection found in the event. Skipping!"; + return; + } + // Number of clusters std::map nClsmap; unsigned int nclusGlobal = 0; diff --git a/DQM/SiTrackerPhase2/plugins/Phase2OTMonitorCluster.cc b/DQM/SiTrackerPhase2/plugins/Phase2OTMonitorCluster.cc index 9c890fe79b52e..8b190388aba3b 100644 --- a/DQM/SiTrackerPhase2/plugins/Phase2OTMonitorCluster.cc +++ b/DQM/SiTrackerPhase2/plugins/Phase2OTMonitorCluster.cc @@ -105,6 +105,12 @@ void Phase2OTMonitorCluster::dqmBeginRun(const edm::Run& iRun, const edm::EventS void Phase2OTMonitorCluster::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) { // Getting the clusters const auto& clusterHandle = iEvent.getHandle(clustersToken_); + + if (!clusterHandle.isValid()) { + edm::LogWarning("Phase2OTMonitorCluster") << "No Phase2TrackerCluster1D Collection found in the event. Skipping!"; + return; + } + // Number of clusters std::map nClustersCounter_P; //map of detidkey vs #cls std::map nClustersCounter_S; //map of detidkey vs #cls diff --git a/DQMOffline/Configuration/python/autoDQM.py b/DQMOffline/Configuration/python/autoDQM.py index 3bf98bc3dc8fa..9f5fc4e8fb8a1 100644 --- a/DQMOffline/Configuration/python/autoDQM.py +++ b/DQMOffline/Configuration/python/autoDQM.py @@ -249,7 +249,7 @@ 'DQMNone'], } -_phase2_allowed = ['trackingOnlyDQM','outerTracker', 'trackerPhase2', 'muon','hcal','hcal2','egamma','L1TMonPhase2'] +_phase2_allowed = ['trackingOnlyDQM','outerTracker', 'trackerPhase2', 'muon','hcal','hcal2','egamma','L1TMonPhase2','HLTMon'] autoDQM['phase2'] = ['','',''] for i in [0,2]: autoDQM['phase2'][i] = '+'.join([autoDQM[m][i] for m in _phase2_allowed]) diff --git a/DQMOffline/Trigger/python/DQMOffline_Trigger_cff.py b/DQMOffline/Trigger/python/DQMOffline_Trigger_cff.py index 0d4a2b40475b7..383b141d445ed 100644 --- a/DQMOffline/Trigger/python/DQMOffline_Trigger_cff.py +++ b/DQMOffline/Trigger/python/DQMOffline_Trigger_cff.py @@ -49,7 +49,6 @@ from DQMOffline.Trigger.TrackingMonitoringPA_cff import* from DQMOffline.Trigger.TrackToTrackMonitoring_cff import * - # hcal from DQMOffline.Trigger.HCALMonitoring_cff import * @@ -59,6 +58,9 @@ # pixel from DQMOffline.Trigger.SiPixel_OfflineMonitoring_cff import * +# phase2 tracker +from DQMOffline.Trigger.SiTrackerPhase2_OfflineMonitoring_cff import * + # B2G from DQMOffline.Trigger.B2GMonitoring_cff import * @@ -204,6 +206,18 @@ particleNetMonitoringHLT # HIG: monitoring of HLT PNET taggers (incl. comparisons to Offline PNET) ) +_offlineHLTSource4HLTMonitorPDPh2 = cms.Sequence( + dqmInfoHLTMon * + HLTtrackerphase2DQMSource * # phase-2 IT and OT clusters + trackingMonitorHLT * # tracking + hltToOfflineTrackValidatorSequence * # Relative Online to Offline performace + vertexingMonitorHLT # vertexing +) + +# remove Strip HLT monitoring in the phase-2 sequence +from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker +phase2_tracker.toReplaceWith(offlineHLTSource4HLTMonitorPD,_offlineHLTSource4HLTMonitorPDPh2) + # sequences run @tier0 on HLTMonitor PD OfflineHLTMonitoring = cms.Sequence( offlineHLTSource4HLTMonitorPD diff --git a/DQMOffline/Trigger/python/PrimaryVertexMonitoring_cff.py b/DQMOffline/Trigger/python/PrimaryVertexMonitoring_cff.py index c661ff15cdd2f..a6d008906f177 100644 --- a/DQMOffline/Trigger/python/PrimaryVertexMonitoring_cff.py +++ b/DQMOffline/Trigger/python/PrimaryVertexMonitoring_cff.py @@ -5,12 +5,22 @@ hltVerticesMonitoring = pvMonitor.clone( beamSpotLabel = "hltOnlineBeamSpot" ) + +from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker +phase2_tracker.toModify(hltVerticesMonitoring, + TopFolderName = "HLT/Vertexing/hltFullVertices", + vertexLabel = cms.InputTag("offlinePrimaryVertices","","HLT")) + hltPixelVerticesMonitoring = hltVerticesMonitoring.clone( TopFolderName = "HLT/Vertexing/hltPixelVertices", vertexLabel = "hltPixelVertices", ndof = 1, useHPforAlignmentPlots = False ) + +phase2_tracker.toModify(hltPixelVerticesMonitoring, + vertexLabel = "hltPhase2PixelVertices") + hltTrimmedPixelVerticesMonitoring = hltVerticesMonitoring.clone( TopFolderName = "HLT/Vertexing/hltTrimmedPixelVertices", vertexLabel = "hltTrimmedPixelVertices", @@ -34,3 +44,4 @@ # + hltVerticesL3PFBjets ) +phase2_tracker.toReplaceWith(vertexingMonitorHLT, cms.Sequence(hltPixelVerticesMonitoring + hltVerticesMonitoring)) diff --git a/DQMOffline/Trigger/python/SiTrackerPhase2_OfflineMonitoring_cff.py b/DQMOffline/Trigger/python/SiTrackerPhase2_OfflineMonitoring_cff.py new file mode 100644 index 0000000000000..245b70652e468 --- /dev/null +++ b/DQMOffline/Trigger/python/SiTrackerPhase2_OfflineMonitoring_cff.py @@ -0,0 +1,16 @@ +import FWCore.ParameterSet.Config as cms +from DQM.SiTrackerPhase2.Phase2ITMonitorCluster_cff import * +from DQM.SiTrackerPhase2.Phase2OTMonitorCluster_cff import * + +HLTclusterMonitorIT = clusterMonitorIT.clone( + TopFolderName = cms.string('HLT/TrackerPhase2ITCluster'), + InnerPixelClusterSource = cms.InputTag('siPixelClusters','','HLT'), +) +HLTclusterMonitorOT = clusterMonitorOT.clone( + TopFolderName = cms.string('HLT/TrackerPhase2OTCluster'), + clusterSrc = cms.InputTag('siPhase2Clusters','','HLT'), +) + +HLTtrackerphase2DQMSource = cms.Sequence(HLTclusterMonitorIT + + HLTclusterMonitorOT) + diff --git a/DQMOffline/Trigger/python/TrackToTrackMonitoring_cff.py b/DQMOffline/Trigger/python/TrackToTrackMonitoring_cff.py index 62b13daf49481..19376a3ea0622 100644 --- a/DQMOffline/Trigger/python/TrackToTrackMonitoring_cff.py +++ b/DQMOffline/Trigger/python/TrackToTrackMonitoring_cff.py @@ -22,6 +22,11 @@ monitoredPrimaryVertices = "hltVerticesPFSelector" ) +from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker +phase2_tracker.toModify(hltMerged2highPurity, + monitoredTrack = cms.InputTag("generalTracks","","HLT"), + monitoredPrimaryVertices = cms.InputTag("offlinePrimaryVertices","","HLT")) + hltMerged2highPurityPV = TrackToTrackComparisonHists.clone( dzWRTPvCut = 0.1, monitoredTrack = "hltMergedTracks", @@ -32,6 +37,12 @@ referencePrimaryVertices = "offlinePrimaryVertices", monitoredPrimaryVertices = "hltVerticesPFSelector" ) + +from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker +phase2_tracker.toModify(hltMerged2highPurityPV, + monitoredTrack = cms.InputTag("generalTracks","","HLT"), + monitoredPrimaryVertices = cms.InputTag("offlinePrimaryVertices","","HLT")) + hltToOfflineTrackValidatorSequence = cms.Sequence( cms.ignore(highPurityTracks) + hltMerged2highPurity diff --git a/DQMOffline/Trigger/python/TrackingMonitoring_cff.py b/DQMOffline/Trigger/python/TrackingMonitoring_cff.py index 6c8a45ea228ca..8402732219d5e 100644 --- a/DQMOffline/Trigger/python/TrackingMonitoring_cff.py +++ b/DQMOffline/Trigger/python/TrackingMonitoring_cff.py @@ -26,6 +26,12 @@ doEffFromHitPatternVsBX = False, doEffFromHitPatternVsLUMI = False ) + +from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker +phase2_tracker.toModify(pixelTracksMonitoringHLT, + TrackProducer = 'hltPhase2PixelTracks', + allTrackProducer = 'hltPhase2PixelTracks') + iter0TracksMonitoringHLT = trackingMonHLT.clone( FolderName = 'HLT/Tracking/iter0', TrackProducer = 'hltIter0PFlowCtfWithMaterialTracks', @@ -94,6 +100,12 @@ doBSPlots = cms.bool(True), doSIPPlots = cms.bool(True) ) + +from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker +phase2_tracker.toModify(iterHLTTracksMonitoringHLT, + TrackProducer = cms.InputTag("generalTracks","","HLT"), + allTrackProducer = cms.InputTag("generalTracks","","HLT")) + iter3TracksMonitoringHLT = trackingMonHLT.clone( FolderName = 'HLT/Tracking/iter3Merged', TrackProducer = 'hltIter3Merged', @@ -213,5 +225,7 @@ from Configuration.Eras.Modifier_run3_common_cff import run3_common run3_common.toReplaceWith(trackingMonitorHLT, cms.Sequence(pixelTracksMonitoringHLT + iterHLTTracksMonitoringHLT + doubletRecoveryHPTracksMonitoringHLT )) # + iter0HPTracksMonitoringHLT )) +phase2_tracker.toReplaceWith(trackingMonitorHLT, cms.Sequence(pixelTracksMonitoringHLT + iterHLTTracksMonitoringHLT)) + run3_common.toReplaceWith(trackingMonitorHLTall, cms.Sequence(pixelTracksMonitoringHLT + iter0TracksMonitoringHLT + iterHLTTracksMonitoringHLT)) run3_common.toReplaceWith(egmTrackingMonitorHLT, cms.Sequence(gsfTracksMonitoringHLT))