From 77938ab42dc23241a9e4f5ece7800cc4df0985b4 Mon Sep 17 00:00:00 2001 From: Andrea Bocci Date: Tue, 27 Feb 2018 16:09:31 +0100 Subject: [PATCH 1/3] Add a DQM sequence for pixel-only tracking --- .../pixelTrackingEffFromHitPattern_cff.py | 33 +++++++++++++++++++ .../python/pixelTracksMonitoring_cff.py | 23 +++++++++++++ .../python/DQMOffline_SecondStep_cff.py | 3 ++ .../Configuration/python/DQMOffline_cff.py | 3 ++ DQMOffline/Configuration/python/autoDQM.py | 9 +++-- 5 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 DQM/TrackingMonitorClient/python/pixelTrackingEffFromHitPattern_cff.py create mode 100644 DQM/TrackingMonitorSource/python/pixelTracksMonitoring_cff.py diff --git a/DQM/TrackingMonitorClient/python/pixelTrackingEffFromHitPattern_cff.py b/DQM/TrackingMonitorClient/python/pixelTrackingEffFromHitPattern_cff.py new file mode 100644 index 0000000000000..15ceaf93ed20a --- /dev/null +++ b/DQM/TrackingMonitorClient/python/pixelTrackingEffFromHitPattern_cff.py @@ -0,0 +1,33 @@ +import FWCore.ParameterSet.Config as cms +from DQMServices.Core.DQMEDHarvester import DQMEDHarvester + +def _layers(suffix, quant, histoPostfix): + return [ + "effic_vs_{0}_PXB1 'PXB Layer1 Efficiency vs {1}' Hits{2}_valid_PXB_Subdet1 Hits{2}_total_PXB_Subdet1" .format(suffix, quant, histoPostfix), + "effic_vs_{0}_PXB2 'PXB Layer2 Efficiency vs {1}' Hits{2}_valid_PXB_Subdet2 Hits{2}_total_PXB_Subdet2" .format(suffix, quant, histoPostfix), + "effic_vs_{0}_PXB3 'PXB Layer3 Efficiency vs {1}' Hits{2}_valid_PXB_Subdet3 Hits{2}_total_PXB_Subdet3" .format(suffix, quant, histoPostfix), + "effic_vs_{0}_PXB4 'PXB Layer4 Efficiency vs {1}' Hits{2}_valid_PXB_Subdet4 Hits{2}_total_PXB_Subdet4" .format(suffix, quant, histoPostfix), + "effic_vs_{0}_PXF1 'PXF Layer1 Efficiency vs {1}' Hits{2}_valid_PXF_Subdet1 Hits{2}_total_PXF_Subdet1" .format(suffix, quant, histoPostfix), + "effic_vs_{0}_PXF2 'PXF Layer2 Efficiency vs {1}' Hits{2}_valid_PXF_Subdet2 Hits{2}_total_PXF_Subdet2" .format(suffix, quant, histoPostfix), + "effic_vs_{0}_PXF3 'PXF Layer3 Efficiency vs {1}' Hits{2}_valid_PXF_Subdet3 Hits{2}_total_PXF_Subdet3" .format(suffix, quant, histoPostfix), + "effic_vs_{0}_PXF4 'PXF Layer4 Efficiency vs {1}' Hits{2}_valid_PXF_Subdet4 Hits{2}_total_PXF_Subdet4" .format(suffix, quant, histoPostfix), + "effic_vs_{0}_PXF5 'PXF Layer5 Efficiency vs {1}' Hits{2}_valid_PXF_Subdet5 Hits{2}_total_PXF_Subdet5" .format(suffix, quant, histoPostfix), + "effic_vs_{0}_PXF6 'PXF Layer6 Efficiency vs {1}' Hits{2}_valid_PXF_Subdet6 Hits{2}_total_PXF_Subdet6" .format(suffix, quant, histoPostfix), + "effic_vs_{0}_PXF7 'PXF Layer7 Efficiency vs {1}' Hits{2}_valid_PXF_Subdet7 Hits{2}_total_PXF_Subdet7" .format(suffix, quant, histoPostfix), + "effic_vs_{0}_PXF8 'PXF Layer8 Efficiency vs {1}' Hits{2}_valid_PXF_Subdet8 Hits{2}_total_PXF_Subdet8" .format(suffix, quant, histoPostfix), + "effic_vs_{0}_PXF9 'PXF Layer9 Efficiency vs {1}' Hits{2}_valid_PXF_Subdet9 Hits{2}_total_PXF_Subdet9" .format(suffix, quant, histoPostfix), + "effic_vs_{0}_PXF10 'PXF Layer10 Efficiency vs {1}' Hits{2}_valid_PXF_Subdet10 Hits{2}_total_PXF_Subdet10".format(suffix, quant, histoPostfix), + "effic_vs_{0}_PXF11 'PXF Layer11 Efficiency vs {1}' Hits{2}_valid_PXF_Subdet11 Hits{2}_total_PXF_Subdet11".format(suffix, quant, histoPostfix), + ] + +pixelTrackingEffFromHitPattern = DQMEDHarvester("DQMGenericClient", + subDirs = cms.untracked.vstring("Tracking/PixelTrackParameters/HitEffFromHitPattern*"), + efficiency = cms.vstring( + _layers("PU", "GoodNumVertices", "") + + _layers("BX", "BX", "VsBX") + + _layers("LUMI", "LUMI", "VsLUMI") + ), + resolution = cms.vstring(), + verbose = cms.untracked.uint32(5), + outputFileName = cms.untracked.string(""), +) diff --git a/DQM/TrackingMonitorSource/python/pixelTracksMonitoring_cff.py b/DQM/TrackingMonitorSource/python/pixelTracksMonitoring_cff.py new file mode 100644 index 0000000000000..a075f671f05ce --- /dev/null +++ b/DQM/TrackingMonitorSource/python/pixelTracksMonitoring_cff.py @@ -0,0 +1,23 @@ +import FWCore.ParameterSet.Config as cms + +import DQM.TrackingMonitor.TrackerCollisionTrackingMonitor_cfi +pixelTracksMonitoring = DQM.TrackingMonitor.TrackerCollisionTrackingMonitor_cfi.TrackerCollisionTrackMon.clone() +pixelTracksMonitoring.FolderName = 'Tracking/PixelTrackParameters' +pixelTracksMonitoring.TrackProducer = 'pixelTracks' +pixelTracksMonitoring.allTrackProducer = 'pixelTracks' +pixelTracksMonitoring.beamSpot = 'offlineBeamSpot' +pixelTracksMonitoring.primaryVertex = 'pixelVertices' +pixelTracksMonitoring.pvNDOF = 1 +pixelTracksMonitoring.doAllPlots = True +pixelTracksMonitoring.doLumiAnalysis = True +pixelTracksMonitoring.doProfilesVsLS = True +pixelTracksMonitoring.doDCAPlots = True +pixelTracksMonitoring.doProfilesVsLS = True +pixelTracksMonitoring.doPlotsVsGoodPVtx = True +pixelTracksMonitoring.doEffFromHitPatternVsPU = False +pixelTracksMonitoring.doEffFromHitPatternVsBX = False +pixelTracksMonitoring.doEffFromHitPatternVsLUMI = False +pixelTracksMonitoring.doPlotsVsGoodPVtx = True +pixelTracksMonitoring.doPlotsVsLUMI = True +pixelTracksMonitoring.doPlotsVsBX = True + diff --git a/DQMOffline/Configuration/python/DQMOffline_SecondStep_cff.py b/DQMOffline/Configuration/python/DQMOffline_SecondStep_cff.py index 303aab28ea7cb..dbe50005c461f 100644 --- a/DQMOffline/Configuration/python/DQMOffline_SecondStep_cff.py +++ b/DQMOffline/Configuration/python/DQMOffline_SecondStep_cff.py @@ -45,6 +45,7 @@ from DQMOffline.JetMET.SusyPostProcessor_cff import * from DQMOffline.JetMET.dataCertificationJetMET_cff import * from DQM.TrackingMonitorClient.TrackingClientConfig_Tier0_cff import * +from DQM.TrackingMonitorClient.pixelTrackingEffFromHitPattern_cff import * from DQM.Phase2OuterTracker.OuterTrackerClientConfig_cff import * DQMOffline_SecondStep_PrePOG = cms.Sequence( TrackingOfflineDQMClient * @@ -116,6 +117,8 @@ DQMHarvestTracking = cms.Sequence( TrackingOfflineDQMClient * dqmFastTimerServiceClient ) +DQMHarvestPixelTracking = cms.Sequence( pixelTrackingEffFromHitPattern ) + DQMHarvestOuterTracker = cms.Sequence( dqmRefHistoRootFileGetter * dqmDcsInfoClient * OuterTrackerClient * diff --git a/DQMOffline/Configuration/python/DQMOffline_cff.py b/DQMOffline/Configuration/python/DQMOffline_cff.py index df2f499561a84..d74cbd8b66c1e 100644 --- a/DQMOffline/Configuration/python/DQMOffline_cff.py +++ b/DQMOffline/Configuration/python/DQMOffline_cff.py @@ -46,6 +46,7 @@ from DQM.Physics.DQMTopMiniAOD_cff import * from Validation.RecoTau.DQMSequences_cfi import * from DQM.TrackingMonitorSource.TrackingSourceConfig_Tier0_cff import * +from DQM.TrackingMonitorSource.pixelTracksMonitoring_cff import * from DQM.Phase2OuterTracker.OuterTrackerSourceConfig_cff import * # miniAOD DQM validation from Validation.RecoParticleFlow.miniAODDQM_cff import * @@ -111,6 +112,8 @@ materialDumperAnalyzer ) +DQMOfflinePixelTracking = cms.Sequence( pixelTracksMonitoring ) + DQMOuterTracker = cms.Sequence( dqmDcsInfo * OuterTrackerSource * DQMMessageLogger * diff --git a/DQMOffline/Configuration/python/autoDQM.py b/DQMOffline/Configuration/python/autoDQM.py index 967ed17b116ce..acfc821736020 100644 --- a/DQMOffline/Configuration/python/autoDQM.py +++ b/DQMOffline/Configuration/python/autoDQM.py @@ -4,9 +4,12 @@ 'commonSiStripZeroBias' : ['DQMOfflineCommonSiStripZeroBias', 'PostDQMOffline', 'DQMHarvestCommonSiStripZeroBias+DQMCertCommon'], - 'trackingOnlyDQM' : ["DQMOfflineTracking", - "PostDQMOffline", - "DQMHarvestTracking"], + 'trackingOnlyDQM' : ['DQMOfflineTracking', + 'PostDQMOffline', + 'DQMHarvestTracking'], + 'pixelTrackingOnlyDQM': ['DQMOfflinePixelTracking', + 'PostDQMOffline', + 'DQMHarvestPixelTracking'], 'outerTracker': ['DQMOuterTracker', 'PostDQMOffline', 'DQMHarvestOuterTracker'], From b0551ff6beb0c7c904432a42ac3c7f637d7e4cfd Mon Sep 17 00:00:00 2001 From: Andrea Bocci Date: Wed, 28 Feb 2018 20:03:07 +0100 Subject: [PATCH 2/3] Add pixelTrackingOnlyDQM sequences to the pixelTrackingOnly workflows --- Configuration/PyReleaseValidation/python/relval_steps.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Configuration/PyReleaseValidation/python/relval_steps.py b/Configuration/PyReleaseValidation/python/relval_steps.py index 720384f73433e..18af292817529 100644 --- a/Configuration/PyReleaseValidation/python/relval_steps.py +++ b/Configuration/PyReleaseValidation/python/relval_steps.py @@ -1514,7 +1514,7 @@ def gen2018HiMix(fragment,howMuch): '--eventcontent':'RECOSIM,DQM', } step3_pixelTrackingOnly = { - '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation', + '-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM', '--datatier': 'GEN-SIM-RECO,DQMIO', '--eventcontent': 'RECOSIM,DQM', } @@ -2391,7 +2391,7 @@ def gen2018HiMix(fragment,howMuch): for step in upgradeSteps['pixelTrackingOnly']['steps']: stepName = step + upgradeSteps['pixelTrackingOnly']['suffix'] if 'Reco' in step: upgradeStepDict[stepName][k] = merge([step3_pixelTrackingOnly, upgradeStepDict[step][k]]) - elif 'HARVEST' in step: upgradeStepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation'}, upgradeStepDict[step][k]]) + elif 'HARVEST' in step: upgradeStepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'}, upgradeStepDict[step][k]]) for step in upgradeSteps['pixelTrackingOnlyRiemannFit']['steps']: stepName = step + upgradeSteps['pixelTrackingOnlyRiemannFit']['suffix'] From 8e9788a2550fd433e7f408803083278091eeed99 Mon Sep 17 00:00:00 2001 From: Andrea Bocci Date: Wed, 28 Feb 2018 20:17:14 +0100 Subject: [PATCH 3/3] Add pixelTrackingOnlyDQM sequences to the riemannFit and gpu workflows --- Configuration/PyReleaseValidation/python/relval_steps.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Configuration/PyReleaseValidation/python/relval_steps.py b/Configuration/PyReleaseValidation/python/relval_steps.py index 18af292817529..9c1d68aeed952 100644 --- a/Configuration/PyReleaseValidation/python/relval_steps.py +++ b/Configuration/PyReleaseValidation/python/relval_steps.py @@ -2396,12 +2396,12 @@ def gen2018HiMix(fragment,howMuch): for step in upgradeSteps['pixelTrackingOnlyRiemannFit']['steps']: stepName = step + upgradeSteps['pixelTrackingOnlyRiemannFit']['suffix'] if 'Reco' in step: upgradeStepDict[stepName][k] = merge([step3_riemannFit, step3_pixelTrackingOnly, upgradeStepDict[step][k]]) - elif 'HARVEST' in step: upgradeStepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation'}, upgradeStepDict[step][k]]) + elif 'HARVEST' in step: upgradeStepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'}, upgradeStepDict[step][k]]) for step in upgradeSteps['pixelTrackingOnlyGPU']['steps']: stepName = step + upgradeSteps['pixelTrackingOnlyGPU']['suffix'] if 'Reco' in step: upgradeStepDict[stepName][k] = merge([step3_gpu, step3_pixelTrackingOnly, upgradeStepDict[step][k]]) - elif 'HARVEST' in step: upgradeStepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation'}, upgradeStepDict[step][k]]) + elif 'HARVEST' in step: upgradeStepDict[stepName][k] = merge([{'-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'}, upgradeStepDict[step][k]]) for step in upgradeSteps['trackingRun2']['steps']: stepName = step + upgradeSteps['trackingRun2']['suffix']