File indexing completed on 2025-06-06 01:33:32
0001 import FWCore.ParameterSet.Config as cms
0002 import copy
0003
0004 from PhysicsTools.NanoAOD.nanoDQM_cfi import nanoDQM
0005 from PhysicsTools.NanoAOD.nanoDQM_tools_cff import *
0006 from PhysicsTools.NanoAOD.nano_eras_cff import *
0007
0008
0009 _Electron_extra_plots = nanoDQM.vplots.Electron.plots.copy()
0010 _Electron_extra_plots.extend([
0011 Plot1D('r9Frac', 'r9Frac', 22, 0, 1.1, 'Fractional R9'),
0012 Plot1D('DeltaEtaInSC', 'DeltaEtaInSC', 20, -0.01, 0.01, 'DEta trk and SuperClus'),
0013 Plot1D('DeltaEtaInSeed', 'DeltaEtaInSeed', 20, -0.005, 0.005, 'DEta trk and SeedClus'),
0014 Plot1D('DeltaPhiInSC', 'DeltaPhiInSC', 20, -0.01, 0.01, 'DPhi trk and SuperClus'),
0015 Plot1D('DeltaPhiInSeed', 'DeltaPhiInSeed', 20, -0.01, 0.01, 'DPhi trk and SeedClus'),
0016 Plot1D('full5x5HoverE', 'full5x5HoverE', 20, 0, 0.2, 'full5x5 H/E'),
0017 Plot1D('eSCOverP', 'eSCOverP', 20, 0, 2.0, 'supercluster E/p'),
0018 Plot1D('eEleOverPout', 'eEleOverPout', 20, 0, 2.0, 'supercluster E/pout'),
0019 Plot1D('e1x5', 'e1x5', 20, 0, 20, 'E1x5'),
0020 Plot1D('e2x5max', 'e2x5max', 20, 0, 20, 'E2x5Max'),
0021 Plot1D('e5x5', 'e5x5', 20, 0, 20, 'E5x5'),
0022 Plot1D('closestKFchi2', 'closestKFchi2', 20, 0, 20, 'closest KF trk chi2'),
0023 Plot1D('closestKFNLayers', 'closestKFNLayers', 20, 0, 19, 'closest KF NLayers'),
0024 Plot1D('dr03HcalTowerSumEt', 'dr03HcalTowerSumEt', 20, 0, 40, 'Hcal isolation'),
0025 Plot1D('GSFchi2', 'GSFchi2', 20, 0, 20, 'GSF chi2'),
0026 Plot1D('superclusterEta', 'superclusterEta', 30, 3.0, 3.0, 'supercluster Eta'),
0027 Plot1D('ecalPFClusIso', 'ecalPFClusIso', 20, 0, 40, 'ecal PF Cluster Isolation'),
0028 Plot1D('hcalPFClusIso', 'hcalPFClusIso', 20, 0, 40, 'hcal PF Cluster Isolation'),
0029 Plot1D('nBrem', 'nBrem', 20, 0, 19, 'num of Brem'),
0030 Plot1D('pfPhotonIso', 'pfPhotonIso', 20, 0, 20, 'pf Photon Isolation'),
0031 Plot1D('pfChargedHadIso', 'pfChargedHadIso', 20, 0, 40, 'pf Charged Hadron Isolation'),
0032 Plot1D('pfNeutralHadIso', 'pfNeutralHadIso', 20, 0, 40, 'pfNeutralHadIso'),
0033 Plot1D('sigmaIphiIphiFull5x5', 'sigmaIphiIphiFull5x5', 20, 0, 0.1, 'sigmaIphiIphi Full5x5'),
0034 Plot1D('etaWidth', 'etaWidth', 20, 0, 0.05, 'eta Width'),
0035 Plot1D('phiWidth', 'phiWidth', 20, 0, 0.1, 'phi Width'),
0036 Plot1D('seedClusEnergy', 'seedClusEnergy', 20, 0, 40, 'seedClusEnergy'),
0037 Plot1D('hoeSingleTower', 'hoeSingleTower', 20, 0, 0.2, 'Single Tower H/E'),
0038 Plot1D('hoeFull5x5', 'hoeFull5x5', 20, 0, 0.2, 'Full5x5 H/E'),
0039 Plot1D('sigmaIetaIphiFull5x5', 'sigmaIetaIphiFull5x5', 20, 0, 0.2, 'full5x5 sigmaIetaIphi'),
0040 Plot1D('eMax', 'eMax', 20, 0, 40, 'eMax'),
0041 Plot1D('e2nd', 'e2nd', 20, 0, 40, 'e2nd'),
0042 Plot1D('eTop', 'eTop', 20, 0, 40, 'eTop'),
0043 Plot1D('eBottom', 'eBottom', 20, 0, 40, 'eBottom'),
0044 Plot1D('eLeft', 'eLeft', 20, 0, 40, 'eLeft'),
0045 Plot1D('eRight', 'eRight', 20, 0, 40, 'eRight'),
0046 Plot1D('e2x5Top', 'e2x5Top', 20, 0, 40, 'e2x5Top'),
0047 Plot1D('e2x5Bottom', 'e2x5Bottom', 20, 0, 40, 'e2x5Bottom'),
0048 Plot1D('e2x5Left', 'e2x5Left', 20, 0, 40, 'e2x5Left'),
0049 Plot1D('e2x5Right', 'e2x5Right', 20, 0, 40, 'e2x5Right'),
0050 Plot1D('nSaturatedXtals', 'nSaturatedXtals', 10, 0, 9, 'number of Saturated crystals'),
0051 Plot1D('numberOfClusters', 'numberOfClusters', 10, 0, 9, 'number of Clusters'),
0052 Plot1D('istrackerDriven', 'istrackerDriven', 2, 0, 1, 'istrackerDriven'),
0053 Plot1D('superclusterPhi', 'superclusterPhi', 32, -3.2, 3.2, 'supercluster Phi'),
0054 Plot1D('seedClusterEta', 'seedClusterEta', 30, -3.0, 3.0, 'seedCluster Eta'),
0055 Plot1D('seedClusterPhi', 'seedClusterPhi', 32, -3.2, 3.2, 'seedCluster Phi'),
0056 Plot1D('superclusterEnergy', 'superclusterEnergy', 80, 0, 80, 'supercluster Energy'),
0057 Plot1D('energy', 'energy', 20, 0, 80, 'energy'),
0058 Plot1D('trackMomentumError', 'trackMomentumError', 20, 0, 1.0, 'trackMomentumError'),
0059 Plot1D('trackMomentum', 'trackMomentum', 20, 0, 80, 'trackMomentum'),
0060 Plot1D('trkLayersWithMeas', 'trkLayersWithMeas', 20, 0, 19, 'trkLayersWithMeas'),
0061 Plot1D('nValidPixBarrelHits', 'nValidPixBarrelHits', 5, 0, 4, 'nValidPixBarrelHits'),
0062 Plot1D('nValidPixEndcapHits', 'nValidPixEndcapHits', 20, 0, 19, 'nValidPixEndcapHits'),
0063 Plot1D('superClusterFbrem', 'superClusterFbrem', 12, 0, 1.2, 'superClusterFbrem'),
0064 Plot1D('convVtxFitProb', 'convVtxFitProb', 12, 0, 1.2, 'convVtxFitProb'),
0065 Plot1D('clustersSize', 'clustersSize', 20, 0, 19, 'clustersSize'),
0066 Plot1D('iEtaMod5', 'iEtaMod5', 20, 0, 40, 'iEtaMod5'),
0067 Plot1D('iEtaMod20', 'iEtaMod20', 20, 0, 40, 'iEtaMod20'),
0068 Plot1D('iPhiMod2', 'iPhiMod2', 20, 0, 199, 'iPhiMod2'),
0069 Plot1D('iPhiMod20', 'iPhiMod20', 100, 0, 99, 'iPhiMod20')
0070 ])
0071
0072 _Photon_extra_plots = nanoDQM.vplots.Photon.plots.copy()
0073 _Photon_extra_plots.extend([
0074 Plot1D('r9Frac', 'r9Frac', 22, 0, 1.1, 'Fractional R9'),
0075 Plot1D('energy', 'energy', 20, 0, 80, 'energy'),
0076 Plot1D('rawPreshowerEnergy', 'rawPreshowerEnergy', 20, 0, 80, 'rawPreshowerEnergy'),
0077 Plot1D('seedClusEnergy', 'seedClusEnergy', 20, 0, 40, 'seedClusEnergy'),
0078 Plot1D('e5x5', 'e5x5', 20, 0, 20, 'E5x5'),
0079 Plot1D('dEtaSeedClusSuperClus', 'dEtaSeedClusSuperClus', 20, 0, 1.0, 'dEtaSeedClusSuperClus'),
0080 Plot1D('dPhiSeedClusSuperClus', 'dPhiSeedClusSuperClus', 20, 0, 1.0, 'dPhiSeedClusSuperClus'),
0081 Plot1D('sigmaIphiIphiFull5x5', 'sigmaIphiIphiFull5x5', 20, 0, 0.1, 'sigmaIphiIphi Full5x5'),
0082 Plot1D('eMax', 'eMax', 20, 0, 40, 'eMax'),
0083 Plot1D('e2nd', 'e2nd', 20, 0, 40, 'e2nd'),
0084 Plot1D('eTop', 'eTop', 20, 0, 40, 'eTop'),
0085 Plot1D('eBottom', 'eBottom', 20, 0, 40, 'eBottom'),
0086 Plot1D('eLeft', 'eLeft', 20, 0, 40, 'eLeft'),
0087 Plot1D('eRight', 'eRight', 20, 0, 40, 'eRight'),
0088 Plot1D('e2x5Top', 'e2x5Top', 20, 0, 40, 'e2x5Top'),
0089 Plot1D('e2x5Bottom', 'e2x5Bottom', 20, 0, 40, 'e2x5Bottom'),
0090 Plot1D('e2x5Left', 'e2x5Left', 20, 0, 40, 'e2x5Left'),
0091 Plot1D('e2x5Right', 'e2x5Right', 20, 0, 40, 'e2x5Right'),
0092 Plot1D('nSaturatedXtals', 'nSaturatedXtals', 10, 0, 9, 'number of Saturated crystals'),
0093 Plot1D('numberOfClusters', 'numberOfClusters', 10, 0, 9, 'number of Clusters'),
0094 Plot1D('hadTowOverEm', 'hadTowOverEm', 20, 0, 0.2, 'Single Tower H/E'),
0095 Plot1D('ecalRecHitIsolation', 'ecalRecHitIsolation', 20, 0, 40, 'ecal RecHit Isolation'),
0096 Plot1D('sigmaIetaIetaFrac', 'sigmaIetaIetaFrac', 20, 0, 0.08, 'sigmaIetaIetaFrac'),
0097 Plot1D('chargedHadronIso', 'chargedHadronIso', 20, 0, 40, 'chargedHadronIso'),
0098 Plot1D('iEtaMod5', 'iEtaMod5', 20, 0, 40, 'iEtaMod5'),
0099 Plot1D('iEtaMod20', 'iEtaMod20', 20, 0, 40, 'iEtaMod20'),
0100 Plot1D('iPhiMod2', 'iPhiMod2', 20, 0, 199, 'iPhiMod2'),
0101 Plot1D('iPhiMod20', 'iPhiMod20', 100, 0, 99, 'iPhiMod20')
0102 ])
0103
0104 _Electron_Run2_plots = cms.VPSet()
0105 for plot in nanoDQM.vplots.Electron.plots:
0106 if 'Fall17V2' not in plot.name.value():
0107 _Electron_Run2_plots.append(plot)
0108 _Electron_Run2_plots.extend([
0109 Plot1D('dEscaleUp', 'dEscaleUp', 100, -0.01, 0.01, '#Delta E scaleUp'),
0110 Plot1D('dEscaleDown', 'dEscaleDown', 100, -0.01, 0.01, '#Delta E scaleDown'),
0111 Plot1D('dEsigmaUp', 'dEsigmaUp', 100, -0.1, 0.1, '#Delta E sigmaUp'),
0112 Plot1D('dEsigmaDown', 'dEsigmaDown', 100, -0.1, 0.1, '#Delta E sigmaDown'),
0113 Plot1D('ptPreCorr', 'ptPreCorr', 100, 0., 500., 'Pt before scale & smearing energy corrections'),
0114 ])
0115 run2_egamma.toModify(
0116 nanoDQM.vplots.Electron,
0117 plots = _Electron_Run2_plots
0118 )
0119
0120 _Photon_Run2_plots = cms.VPSet()
0121 def _match(name):
0122 if 'Fall17V2' in name: return True
0123 if '_quadratic' in name: return True
0124 if 'hoe_PUcorr' in name: return True
0125 return False
0126 for plot in nanoDQM.vplots.Photon.plots:
0127 if not _match(plot.name.value()):
0128 _Photon_Run2_plots.append(plot)
0129 _Photon_Run2_plots.extend([
0130 Plot1D('pfRelIso03_all', 'pfRelIso03_all', 20, 0, 2, 'PF relative isolation dR=0.3, total (with rho*EA PU Fall17V2 corrections)'),
0131 Plot1D('pfRelIso03_chg', 'pfRelIso03_chg', 20, 0, 2, 'PF relative isolation dR=0.3, charged component (with rho*EA PU Fall17V2 corrections)'),
0132 Plot1D('dEscaleUp', 'dEscaleUp', 100, -0.01, 0.01, '#Delta E scaleUp'),
0133 Plot1D('dEscaleDown', 'dEscaleDown', 100, -0.01, 0.01, '#Delta E scaleDown'),
0134 Plot1D('dEsigmaUp', 'dEsigmaUp', 100, -0.1, 0.1, '#Delta E sigmaUp'),
0135 Plot1D('dEsigmaDown', 'dEsigmaDown', 100, -0.1, 0.1, '#Delta E sigmaDown'),
0136 Plot1D('ptPreCorr', 'ptPreCorr', 100, 0., 500., 'Pt before scale & smearing energy corrections'),
0137 ])
0138 run2_egamma.toModify(
0139 nanoDQM.vplots.Photon,
0140 plots = _Photon_Run2_plots
0141 )
0142
0143 _FatJet_Run2_plots = cms.VPSet()
0144 for plot in nanoDQM.vplots.FatJet.plots:
0145 if 'EF' not in plot.name.value():
0146 _FatJet_Run2_plots.append(plot)
0147 _FatJet_Run2_plots.extend([
0148 Plot1D('btagCSVV2', 'btagCSVV2', 20, -1, 1, ' pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)'),
0149 Plot1D('btagDeepB', 'btagDeepB', 20, -1, 1, 'Deep B+BB btag discriminator'),
0150 Plot1D('btagHbb', 'btagHbb', 20, -1, 1, 'Higgs to BB tagger discriminator'),
0151 Plot1D('btagCMVA', 'btagCMVA', 20, -1, 1, 'CMVA V2 btag discriminator'),
0152 Plot1D('btagDDBvLV2', 'btagDDBvLV2', 20, 0, 1, 'DeepDoubleX V2(mass-decorrelated) discriminator for H(Z)->bb vs QCD'),
0153 Plot1D('btagDDCvBV2', 'btagDDCvBV2', 20, 0, 1, 'DeepDoubleX V2 (mass-decorrelated) discriminator for H(Z)->cc vs H(Z)->bb'),
0154 Plot1D('btagDDCvLV2', 'btagDDCvLV2', 20, 0, 1, 'DeepDoubleX V2 (mass-decorrelated) discriminator for H(Z)->cc vs QCD'),
0155 Plot1D('deepTagMD_H4qvsQCD', 'deepTagMD_H4qvsQCD', 20, 0, 1, 'Mass-decorrelated DeepBoostedJet tagger H->4q vs QCD discriminator'),
0156 Plot1D('deepTagMD_HbbvsQCD', 'deepTagMD_HbbvsQCD', 20, 0, 1, 'Mass-decorrelated DeepBoostedJet tagger H->bb vs QCD discriminator'),
0157 Plot1D('deepTagMD_TvsQCD', 'deepTagMD_TvsQCD', 20, 0, 1, 'Mass-decorrelated DeepBoostedJet tagger top vs QCD discriminator'),
0158 Plot1D('deepTagMD_WvsQCD', 'deepTagMD_WvsQCD', 20, 0, 1, 'Mass-decorrelated DeepBoostedJet tagger W vs QCD discriminator'),
0159 Plot1D('deepTagMD_ZHbbvsQCD', 'deepTagMD_ZHbbvsQCD', 20, 0, 1, 'Mass-decorrelated DeepBoostedJet tagger Z/H->bb vs QCD discriminator'),
0160 Plot1D('deepTagMD_ZHccvsQCD', 'deepTagMD_ZHccvsQCD', 20, 0, 1, 'Mass-decorrelated DeepBoostedJet tagger Z/H->cc vs QCD discriminator'),
0161 Plot1D('deepTagMD_ZbbvsQCD', 'deepTagMD_ZbbvsQCD', 20, 0, 1, 'Mass-decorrelated DeepBoostedJet tagger Z->bb vs QCD discriminator'),
0162 Plot1D('deepTagMD_ZvsQCD', 'deepTagMD_ZvsQCD', 20, 0, 1, 'Mass-decorrelated DeepBoostedJet tagger Z vs QCD discriminator'),
0163 Plot1D('deepTagMD_bbvsLight', 'deepTagMD_bbvsLight', 20, 0, 1, 'Mass-decorrelated DeepBoostedJet tagger Z/H/gluon->bb vs light flavour discriminator'),
0164 Plot1D('deepTagMD_ccvsLight', 'deepTagMD_ccvsLight', 20, 0, 1, 'Mass-decorrelated DeepBoostedJet tagger Z/H/gluon->cc vs light flavour discriminator'),
0165 Plot1D('deepTag_H', 'deepTag_H', 20, 0, 1, 'DeepBoostedJet tagger H(bb,cc,4q) sum'),
0166 Plot1D('deepTag_QCD', 'deepTag_QCD', 20, 0, 1, 'DeepBoostedJet tagger QCD(bb,cc,b,c,others) sum'),
0167 Plot1D('deepTag_QCDothers', 'deepTag_QCDothers', 20, 0, 1, 'DeepBoostedJet tagger QCDothers value'),
0168 Plot1D('deepTag_TvsQCD', 'deepTag_TvsQCD', 20, 0, 1, 'DeepBoostedJet tagger top vs QCD discriminator'),
0169 Plot1D('deepTag_WvsQCD', 'deepTag_WvsQCD', 20, 0, 1, 'DeepBoostedJet tagger W vs QCD discriminator'),
0170 Plot1D('deepTag_ZvsQCD', 'deepTag_ZvsQCD', 20, 0, 1, 'DeepBoostedJet tagger Z vs QCD discriminator'),
0171 Plot1D('particleNetLegacy_mass', 'particleNetLegacy_mass', 25, 0, 250, 'ParticleNet Legacy Run-2 mass regression'),
0172 Plot1D('particleNetLegacy_Xbb', 'particleNetLegacy_Xbb', 20, 0, 1, 'ParticleNet Legacy Run-2 X->bb score'),
0173 Plot1D('particleNetLegacy_Xcc', 'particleNetLegacy_Xcc', 20, 0, 1, 'ParticleNet Legacy Run-2 X->cc score'),
0174 Plot1D('particleNetLegacy_Xqq', 'particleNetLegacy_Xqq', 20, 0, 1, 'ParticleNet Legacy Run-2 X->qq (uds) score'),
0175 Plot1D('particleNetLegacy_QCD', 'particleNetLegacy_QCD', 20, 0, 1, 'ParticleNet Legacy Run-2 QCD score'),
0176 ])
0177
0178 _Jet_Run2_plots = cms.VPSet()
0179 for plot in nanoDQM.vplots.Jet.plots:
0180 _Jet_Run2_plots.append(plot)
0181 if 'Multiplicity' not in plot.name.value() and 'hfHEF' not in plot.name.value() and 'hfEmEF' not in plot.name.value():
0182 _Jet_Run2_plots.append(plot)
0183 _Jet_Run2_plots.extend([
0184 Plot1D('btagCSVV2', 'btagCSVV2', 20, -1, 1, ' pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)'),
0185 Plot1D('btagCMVA', 'btagCMVA', 20, -1, 1, 'CMVA V2 btag discriminator'),
0186 Plot1D('btagDeepB', 'btagDeepB', 20, -1, 1, 'Deep B+BB btag discriminator'),
0187 Plot1D('btagDeepC', 'btagDeepC', 20, 0, 1, 'DeepCSV charm btag discriminator'),
0188 Plot1D('btagDeepCvB', 'btagDeepCvB', 20, -1, 1, 'DeepCSV c vs b+bb discriminator'),
0189 Plot1D('btagDeepCvL', 'btagDeepCvL', 20, -1, 1, 'DeepCSV c vs udsg discriminator')
0190 ])
0191
0192 _Pileup_pre13X_plots = cms.VPSet()
0193 for plot in nanoDQM.vplots.Pileup.plots:
0194 if 'pthatmax' not in plot.name.value():
0195 _Pileup_pre13X_plots.append(plot)
0196
0197 (run2_nanoAOD_ANY).toModify(
0198 nanoDQM.vplots.Pileup,
0199 plots = _Pileup_pre13X_plots
0200 )
0201
0202
0203 nanoDQMMC = nanoDQM.clone()
0204 nanoDQMMC.vplots.Electron.sels.Prompt = cms.string("genPartFlav == 1")
0205 nanoDQMMC.vplots.LowPtElectron.sels.Prompt = cms.string("genPartFlav == 1")
0206 nanoDQMMC.vplots.Muon.sels.Prompt = cms.string("genPartFlav == 1")
0207 nanoDQMMC.vplots.Photon.sels.Prompt = cms.string("genPartFlav == 1")
0208 nanoDQMMC.vplots.Tau.sels.Prompt = cms.string("genPartFlav == 5")
0209 nanoDQMMC.vplots.Jet.sels.Prompt = cms.string("genJetIdx != 1")
0210 nanoDQMMC.vplots.Jet.sels.PromptB = cms.string("genJetIdx != 1 && hadronFlavour == 5")
0211
0212 from DQMServices.Core.DQMQualityTester import DQMQualityTester
0213 nanoDQMQTester = DQMQualityTester(
0214 qtList = cms.untracked.FileInPath('PhysicsTools/NanoAOD/test/dqmQualityTests.xml'),
0215 prescaleFactor = cms.untracked.int32(1),
0216 testInEventloop = cms.untracked.bool(False),
0217 qtestOnEndLumi = cms.untracked.bool(False),
0218 verboseQT = cms.untracked.bool(True)
0219 )
0220
0221 nanoHarvest = cms.Sequence( nanoDQMQTester )