Back to home page

Project CMSSW displayed by LXR

 
 

    


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 ## EGamma custom nano
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 ## MC
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 )