File indexing completed on 2024-04-06 12:23:45
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 nanojmeDQM = nanoDQM.clone()
0009
0010
0011
0012
0013
0014
0015 _ak4puppiplots = cms.VPSet(
0016 Count1D('_size', 20, -0.5, 19.5, 'AK4 PF Puppi jets with JECs applied.')
0017 )
0018 for plot in nanojmeDQM.vplots.Jet.plots:
0019 if plot.name.value()=="_size": continue
0020 _ak4puppiplots.append(plot)
0021
0022 _ak4puppiplots.extend([
0023 Plot1D('chHadMultiplicity','chHadMultiplicity', 10, 0, 40,'(Puppi-weighted) number of charged hadrons in the jet'),
0024 Plot1D('neHadMultiplicity','neHadMultiplicity', 10, 0, 40,'(Puppi-weighted) number of neutral hadrons in the jet'),
0025 Plot1D('phoMultiplicity','phoMultiplicity', 10, 0, 40,'(Puppi-weighted) number of photons in the jet'),
0026 Plot1D('elMultiplicity','elMultiplicity', 5, 0, 10,'(Puppi-weighted) number of electrons in the jet'),
0027 Plot1D('muMultiplicity','muMultiplicity', 5, 0, 10,'(Puppi-weighted) number of muons in the jet'),
0028 Plot1D('hfEMMultiplicity','hfEMMultiplicity', 5, 0, 10,'(Puppi-weighted) number of HF EMs in the jet'),
0029 Plot1D('hfHadMultiplicity','hfHadMultiplicity', 5, 0, 10,'(Puppi-weighted) number of HF hadrons in the jet'),
0030 Plot1D('puId_dR2Mean','puId_dR2Mean',20, 0, 0.2,"pT^2-weighted average square distance of jet constituents from the jet axis (PileUp ID BDT input variable)"),
0031 Plot1D('puId_majW','puId_majW',10, 0, 0.5, "major axis of jet ellipsoid in eta-phi plane (PileUp ID BDT input variable)"),
0032 Plot1D('puId_minW','puId_minW',10, 0, 0.5, "minor axis of jet ellipsoid in eta-phi plane (PileUp ID BDT input variable)"),
0033 Plot1D('puId_frac01','puId_frac01',10, 0, 1, "fraction of constituents' pT contained within dR <0.1 (PileUp ID BDT input variable)"),
0034 Plot1D('puId_frac02','puId_frac02',10, 0, 1, "fraction of constituents' pT contained within 0.1< dR <0.2 (PileUp ID BDT input variable)"),
0035 Plot1D('puId_frac03','puId_frac03',10, 0, 1, "fraction of constituents' pT contained within 0.2< dR <0.3 (PileUp ID BDT input variable)"),
0036 Plot1D('puId_frac04','puId_frac04',10, 0, 1, "fraction of constituents' pT contained within 0.3< dR <0.4 (PileUp ID BDT input variable)"),
0037 Plot1D('puId_ptD','puId_ptD',10, 0, 1, "pT-weighted average pT of constituents (PileUp ID BDT input variable)"),
0038 Plot1D('puId_beta','puId_beta',10, 0, 1, "fraction of pT of charged constituents associated to PV (PileUp ID BDT input variable)"),
0039 Plot1D('puId_pull','puId_pull',10, 0, 0.05, "magnitude of pull vector (PileUp ID BDT input variable)"),
0040 Plot1D('puId_jetR','puId_jetR',10, 0, 1, "fraction of jet pT carried by the leading constituent (PileUp ID BDT input variable)"),
0041 Plot1D('puId_jetRchg','puId_jetRchg',10, 0, 1, "fraction of jet pT carried by the leading charged constituent (PileUp ID BDT input variable)"),
0042 Plot1D('puId_nCharged','puId_nCharged',10, 0, 40, "number of charged constituents (PileUp ID BDT input variable)"),
0043 Plot1D('qgl_axis2','qgl_axis2',10, 0, 0.4, "ellipse minor jet axis (Quark vs Gluon likelihood input variable)"),
0044 Plot1D('qgl_ptD','qgl_ptD',10, 0, 1, "pT-weighted average pT of constituents (Quark vs Gluon likelihood input variable)"),
0045 Plot1D('qgl_mult','qgl_mult', 10, 0, 50, "PF candidates multiplicity (Quark vs Gluon likelihood input variable)"),
0046 Plot1D('btagDeepFlavG','btagDeepFlavG',20, -1, 1, "DeepFlavour gluon tag raw score"),
0047 Plot1D('btagDeepFlavUDS','btagDeepFlavUDS',20, -1, 1, "DeepFlavour uds tag raw score"),
0048 Plot1D('particleNetAK4_B','particleNetAK4_B',20, -1, 1, "ParticleNetAK4 tagger b vs all (udsg, c) discriminator"),
0049 Plot1D('particleNetAK4_CvsL','particleNetAK4_CvsL',20, -1, 1,"ParticleNetAK4 tagger c vs udsg discriminator"),
0050 Plot1D('particleNetAK4_CvsB','particleNetAK4_CvsB',20, -1, 1,"ParticleNetAK4 tagger c vs b discriminator"),
0051 Plot1D('particleNetAK4_QvsG','particleNetAK4_QvsG',20, -1, 1,"ParticleNetAK4 tagger uds vs g discriminator"),
0052 Plot1D('particleNetAK4_G','particleNetAK4_G',20, -1, 1, "ParticleNetAK4 tagger g raw score"),
0053 Plot1D('particleNetAK4_puIdDisc','particleNetAK4_puIdDisc',20, -1, 1,"ParticleNetAK4 tagger pileup jet discriminator"),
0054 ])
0055
0056
0057
0058
0059
0060
0061 _ak4chsplots = cms.VPSet(
0062 Count1D('_size', 20, -0.5, 19.5, 'AK4 PF CHS jets with JECs applied.')
0063 )
0064 for plot in _ak4puppiplots:
0065 if plot.name.value()=="_size": continue
0066 _ak4chsplots.append(plot)
0067 _ak4chsplots.extend([
0068 Plot1D('chFPV1EF', 'chFPV1EF', 20, 0, 2, 'charged fromPV==1 Energy Fraction (component of the total charged Energy Fraction).'),
0069 Plot1D('chFPV2EF', 'chFPV2EF', 20, 0, 2, 'charged fromPV==2 Energy Fraction (component of the total charged Energy Fraction).'),
0070 Plot1D('chFPV3EF', 'chFPV3EF', 20, 0, 2, 'charged fromPV==3 Energy Fraction (component of the total charged Energy Fraction).'),
0071 ])
0072
0073
0074
0075
0076
0077
0078
0079 nanojmeDQM.vplots.Jet.plots = _ak4puppiplots
0080 nanojmeDQM.vplots.JetPuppi = cms.PSet(
0081 sels = nanojmeDQM.vplots.Jet.sels,
0082 plots = _ak4puppiplots
0083 )
0084 nanojmeDQM.vplots.JetCHS = cms.PSet(
0085 sels = nanojmeDQM.vplots.Jet.sels,
0086 plots = _ak4chsplots
0087 )
0088
0089
0090
0091
0092
0093
0094
0095
0096 nanojmeDQM.vplots.FatJet.plots.extend([
0097 Plot1D('chHadMultiplicity','chHadMultiplicity', 10, 0, 40,'(Puppi-weighted) number of charged hadrons in the jet'),
0098 Plot1D('neHadMultiplicity','neHadMultiplicity', 10, 0, 40,'(Puppi-weighted) number of neutral hadrons in the jet'),
0099 Plot1D('phoMultiplicity','phoMultiplicity', 10, 0, 40,'(Puppi-weighted) number of photons in the jet'),
0100 Plot1D('elMultiplicity','elMultiplicity', 5, 0, 10,'(Puppi-weighted) number of electrons in the jet'),
0101 Plot1D('muMultiplicity','muMultiplicity', 5, 0, 10,'(Puppi-weighted) number of muons in the jet'),
0102 Plot1D('hfEMMultiplicity','hfEMMultiplicity', 5, 0, 10,'(Puppi-weighted) number of HF EMs in the jet'),
0103 Plot1D('hfHadMultiplicity','hfHadMultiplicity', 5, 0, 10,'(Puppi-weighted) number of HF hadrons in the jet'),
0104 Plot1D('neEmEF','neEmEF',20, 0, 1,'neutral Electromagnetic Energy Fraction'),
0105 Plot1D('neHEF','neHEF',20, 0, 1,'neutral Hadron Energy Fraction'),
0106 ])
0107
0108
0109
0110
0111
0112
0113 nanojmeDQM.vplots.FatJetForJEC = cms.PSet(
0114 sels = cms.PSet(
0115 CentralPt30 = cms.string('abs(eta) < 2.4 && pt > 30'),
0116 ForwardPt30 = cms.string('abs(eta) > 2.4 && pt > 30')
0117 ),
0118 plots = cms.VPSet(
0119 Count1D('_size', 20, -0.5, 19.5, 'AK8 PF Puppi jets with JECs applied. Reclustered for JEC studies so only minimal info stored.'),
0120 Plot1D('area', 'area', 20, 0.2, 0.8, 'jet catchment area, for JECs'),
0121 Plot1D('eta', 'eta', 20, -6, 6, 'eta'),
0122 Plot1D('jetId', 'jetId', 8, -0.5, 7.5, 'Jet ID flags bit1 is loose (always false in 2017 since it does not exist), bit2 is tight, bit3 is tightLepVeto'),
0123 Plot1D('mass', 'mass', 20, 0, 200, 'mass'),
0124 Plot1D('phi', 'phi', 20, -3.14159, 3.14159, 'phi'),
0125 Plot1D('pt', 'pt', 20, 0, 400, 'pt'),
0126 Plot1D('rawFactor', 'rawFactor', 20, -0.5, 0.5, '1 - Factor to get back to raw pT'),
0127 Plot1D('chHadMultiplicity','chHadMultiplicity', 10, 0, 40,'(Puppi-weighted) number of charged hadrons in the jet'),
0128 Plot1D('neHadMultiplicity','neHadMultiplicity', 10, 0, 40,'(Puppi-weighted) number of neutral hadrons in the jet'),
0129 Plot1D('phoMultiplicity','phoMultiplicity', 10, 0, 40,'(Puppi-weighted) number of photons in the jet'),
0130 Plot1D('elMultiplicity','elMultiplicity', 5, 0, 10,'(Puppi-weighted) number of electrons in the jet'),
0131 Plot1D('muMultiplicity','muMultiplicity', 5, 0, 10,'(Puppi-weighted) number of muons in the jet'),
0132 Plot1D('hfEMMultiplicity','hfEMMultiplicity', 5, 0, 10,'(Puppi-weighted) number of HF EMs in the jet'),
0133 Plot1D('hfHadMultiplicity','hfHadMultiplicity', 5, 0, 10,'(Puppi-weighted) number of HF hadrons in the jet'),
0134 Plot1D('nElectrons', 'nElectrons', 5, -0.5, 4.5, 'number of electrons in the jet'),
0135 Plot1D('nMuons', 'nMuons', 4, -0.5, 3.5, 'number of muons in the jet'),
0136 Plot1D('hadronFlavour', 'hadronFlavour', 6, -0.5, 5.5, 'flavour from hadron ghost clustering'),
0137 Plot1D('partonFlavour', 'partonFlavour', 40, -9.5, 30.5, 'flavour from parton matching'),
0138 Plot1D('chEmEF', 'chEmEF', 20, 0, 1, 'charged Electromagnetic Energy Fraction'),
0139 Plot1D('chHEF', 'chHEF', 20, 0, 2, 'charged Hadron Energy Fraction'),
0140 Plot1D('neEmEF', 'neEmEF', 20, 0.3, 0.4, 'neutral Electromagnetic Energy Fraction'),
0141 Plot1D('neHEF', 'neHEF', 20, 0.01, 0.2, 'neutral Hadron Energy Fraction'),
0142 Plot1D('hfEmEF', 'hfEmEF', 20, 0, 1, 'electromagnetic energy fraction in HF'),
0143 Plot1D('hfHEF', 'hfHEF', 20, 0, 1, 'hadronic energy fraction in HF'),
0144 Plot1D('muEF', 'muEF', 20, -1, 1, 'muon Energy Fraction'),
0145 NoPlot('genJetIdx'),
0146 ),
0147 )
0148
0149
0150
0151
0152
0153
0154 nanojmeDQM.vplots.JetCalo = cms.PSet(
0155 sels = cms.PSet(
0156 CentralPt30 = cms.string('abs(eta) < 2.4 && pt > 30'),
0157 ForwardPt30 = cms.string('abs(eta) > 2.4 && pt > 30')
0158 ),
0159 plots = cms.VPSet(
0160 Count1D('_size', 20, -0.5, 19.5, 'AK4 Calo jets (slimmedCaloJets)'),
0161 Plot1D('area', 'area', 20, 0.2, 0.8, 'jet catchment area'),
0162 Plot1D('eta', 'eta', 20, -6, 6, 'eta'),
0163 Plot1D('mass', 'mass', 20, 0, 200, 'mass'),
0164 Plot1D('phi', 'phi', 20, -3.14159, 3.14159, 'phi'),
0165 Plot1D('pt', 'pt', 20, 0, 400, 'pt'),
0166 Plot1D('rawFactor', 'rawFactor', 20, -0.5, 0.5, '1 - Factor to get back to raw pT'),
0167 Plot1D('emf', 'emf', 20, 0, 1, 'electromagnetic energy fraction'),
0168 Plot1D('hadronFlavour', 'hadronFlavour', 6, -0.5, 5.5, 'flavour from hadron ghost clustering'),
0169 Plot1D('partonFlavour', 'partonFlavour', 40, -9.5, 30.5, 'flavour from parton matching'),
0170 NoPlot('genJetIdx'),
0171 ),
0172 )
0173
0174
0175 nanojmeDQMMC = nanojmeDQM.clone()
0176
0177 nanojmeDQMMC.vplots.LowPtElectron.sels.Prompt = cms.string("genPartFlav == 1")
0178 nanojmeDQMMC.vplots.Muon.sels.Prompt = cms.string("genPartFlav == 1")
0179 nanojmeDQMMC.vplots.Photon.sels.Prompt = cms.string("genPartFlav == 1")
0180 nanojmeDQMMC.vplots.Tau.sels.Prompt = cms.string("genPartFlav == 5")
0181 nanojmeDQMMC.vplots.Jet.sels.Prompt = cms.string("genJetIdx != 1")
0182 nanojmeDQMMC.vplots.Jet.sels.PromptB = cms.string("genJetIdx != 1 && hadronFlavour == 5")
0183
0184
0185
0186
0187
0188
0189
0190
0191
0192 (~run2_nanoAOD_ANY).toModify(
0193 nanojmeDQM.vplots.Jet,
0194 plots = _ak4puppiplots,
0195 ).toModify(
0196 nanojmeDQM.vplots,
0197 JetPuppi = None
0198 )
0199 (~run2_nanoAOD_ANY).toModify(
0200 nanojmeDQMMC.vplots.JetCHS.sels,
0201 Prompt = nanojmeDQMMC.vplots.Jet.sels.Prompt,
0202 PromptB = nanojmeDQMMC.vplots.Jet.sels.PromptB
0203 )
0204
0205
0206
0207 run2_nanoAOD_ANY.toModify(
0208 nanojmeDQM.vplots.Jet,
0209 plots = _ak4chsplots,
0210 ).toModify(
0211 nanojmeDQM.vplots,
0212 JetCHS = None
0213 )
0214 run2_nanoAOD_ANY.toModify(
0215 nanojmeDQMMC.vplots.JetPuppi.sels,
0216 Prompt = nanojmeDQMMC.vplots.Jet.sels.Prompt,
0217 PromptB = nanojmeDQMMC.vplots.Jet.sels.PromptB
0218 )
0219
0220 from DQMServices.Core.DQMQualityTester import DQMQualityTester
0221 nanoDQMQTester = DQMQualityTester(
0222 qtList = cms.untracked.FileInPath('PhysicsTools/NanoAOD/test/dqmQualityTests.xml'),
0223 prescaleFactor = cms.untracked.int32(1),
0224 testInEventloop = cms.untracked.bool(False),
0225 qtestOnEndLumi = cms.untracked.bool(False),
0226 verboseQT = cms.untracked.bool(True)
0227 )
0228
0229 nanojmeHarvest = cms.Sequence( nanoDQMQTester )