1 import FWCore.ParameterSet.Config
as cms
4 from PhysicsTools.NanoAOD.nanoDQM_cfi
import nanoDQM
8 nanojmeDQM = nanoDQM.clone()
15 _ak4puppiplots = cms.VPSet(
16 Count1D(
'_size', 20, -0.5, 19.5,
'AK4 PF Puppi jets with JECs applied.')
18 for plot
in nanojmeDQM.vplots.Jet.plots:
19 if plot.name.value()==
"_size":
continue 20 _ak4puppiplots.append(plot)
22 _ak4puppiplots.extend([
23 Plot1D(
'chHadMultiplicity',
'chHadMultiplicity', 10, 0, 40,
'(Puppi-weighted) number of charged hadrons in the jet'),
24 Plot1D(
'neHadMultiplicity',
'neHadMultiplicity', 10, 0, 40,
'(Puppi-weighted) number of neutral hadrons in the jet'),
25 Plot1D(
'phoMultiplicity',
'phoMultiplicity', 10, 0, 40,
'(Puppi-weighted) number of photons in the jet'),
26 Plot1D(
'elMultiplicity',
'elMultiplicity', 5, 0, 10,
'(Puppi-weighted) number of electrons in the jet'),
27 Plot1D(
'muMultiplicity',
'muMultiplicity', 5, 0, 10,
'(Puppi-weighted) number of muons in the jet'),
28 Plot1D(
'hfEMMultiplicity',
'hfEMMultiplicity', 5, 0, 10,
'(Puppi-weighted) number of HF EMs in the jet'),
29 Plot1D(
'hfHadMultiplicity',
'hfHadMultiplicity', 5, 0, 10,
'(Puppi-weighted) number of HF hadrons in the jet'),
30 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)"),
31 Plot1D(
'puId_majW',
'puId_majW',10, 0, 0.5,
"major axis of jet ellipsoid in eta-phi plane (PileUp ID BDT input variable)"),
32 Plot1D(
'puId_minW',
'puId_minW',10, 0, 0.5,
"minor axis of jet ellipsoid in eta-phi plane (PileUp ID BDT input variable)"),
33 Plot1D(
'puId_frac01',
'puId_frac01',10, 0, 1,
"fraction of constituents' pT contained within dR <0.1 (PileUp ID BDT input variable)"),
34 Plot1D(
'puId_frac02',
'puId_frac02',10, 0, 1,
"fraction of constituents' pT contained within 0.1< dR <0.2 (PileUp ID BDT input variable)"),
35 Plot1D(
'puId_frac03',
'puId_frac03',10, 0, 1,
"fraction of constituents' pT contained within 0.2< dR <0.3 (PileUp ID BDT input variable)"),
36 Plot1D(
'puId_frac04',
'puId_frac04',10, 0, 1,
"fraction of constituents' pT contained within 0.3< dR <0.4 (PileUp ID BDT input variable)"),
37 Plot1D(
'puId_ptD',
'puId_ptD',10, 0, 1,
"pT-weighted average pT of constituents (PileUp ID BDT input variable)"),
38 Plot1D(
'puId_beta',
'puId_beta',10, 0, 1,
"fraction of pT of charged constituents associated to PV (PileUp ID BDT input variable)"),
39 Plot1D(
'puId_pull',
'puId_pull',10, 0, 0.05,
"magnitude of pull vector (PileUp ID BDT input variable)"),
40 Plot1D(
'puId_jetR',
'puId_jetR',10, 0, 1,
"fraction of jet pT carried by the leading constituent (PileUp ID BDT input variable)"),
41 Plot1D(
'puId_jetRchg',
'puId_jetRchg',10, 0, 1,
"fraction of jet pT carried by the leading charged constituent (PileUp ID BDT input variable)"),
42 Plot1D(
'puId_nCharged',
'puId_nCharged',10, 0, 40,
"number of charged constituents (PileUp ID BDT input variable)"),
43 Plot1D(
'qgl_axis2',
'qgl_axis2',10, 0, 0.4,
"ellipse minor jet axis (Quark vs Gluon likelihood input variable)"),
44 Plot1D(
'qgl_ptD',
'qgl_ptD',10, 0, 1,
"pT-weighted average pT of constituents (Quark vs Gluon likelihood input variable)"),
45 Plot1D(
'qgl_mult',
'qgl_mult', 10, 0, 50,
"PF candidates multiplicity (Quark vs Gluon likelihood input variable)"),
46 Plot1D(
'btagDeepFlavG',
'btagDeepFlavG',20, -1, 1,
"DeepFlavour gluon tag raw score"),
47 Plot1D(
'btagDeepFlavUDS',
'btagDeepFlavUDS',20, -1, 1,
"DeepFlavour uds tag raw score"),
48 Plot1D(
'particleNetAK4_B',
'particleNetAK4_B',20, -1, 1,
"ParticleNetAK4 tagger b vs all (udsg, c) discriminator"),
49 Plot1D(
'particleNetAK4_CvsL',
'particleNetAK4_CvsL',20, -1, 1,
"ParticleNetAK4 tagger c vs udsg discriminator"),
50 Plot1D(
'particleNetAK4_CvsB',
'particleNetAK4_CvsB',20, -1, 1,
"ParticleNetAK4 tagger c vs b discriminator"),
51 Plot1D(
'particleNetAK4_QvsG',
'particleNetAK4_QvsG',20, -1, 1,
"ParticleNetAK4 tagger uds vs g discriminator"),
52 Plot1D(
'particleNetAK4_G',
'particleNetAK4_G',20, -1, 1,
"ParticleNetAK4 tagger g raw score"),
53 Plot1D(
'particleNetAK4_puIdDisc',
'particleNetAK4_puIdDisc',20, -1, 1,
"ParticleNetAK4 tagger pileup jet discriminator"),
61 _ak4chsplots = cms.VPSet(
62 Count1D(
'_size', 20, -0.5, 19.5,
'AK4 PF CHS jets with JECs applied.')
64 for plot
in _ak4puppiplots:
65 if plot.name.value()==
"_size":
continue 66 _ak4chsplots.append(plot)
68 Plot1D(
'chFPV1EF',
'chFPV1EF', 20, 0, 2,
'charged fromPV==1 Energy Fraction (component of the total charged Energy Fraction).'),
69 Plot1D(
'chFPV2EF',
'chFPV2EF', 20, 0, 2,
'charged fromPV==2 Energy Fraction (component of the total charged Energy Fraction).'),
70 Plot1D(
'chFPV3EF',
'chFPV3EF', 20, 0, 2,
'charged fromPV==3 Energy Fraction (component of the total charged Energy Fraction).'),
79 nanojmeDQM.vplots.Jet.plots = _ak4puppiplots
80 nanojmeDQM.vplots.JetPuppi = cms.PSet(
81 sels = nanojmeDQM.vplots.Jet.sels,
82 plots = _ak4puppiplots
84 nanojmeDQM.vplots.JetCHS = cms.PSet(
85 sels = nanojmeDQM.vplots.Jet.sels,
96 nanojmeDQM.vplots.FatJet.plots.extend([
97 Plot1D(
'chHadMultiplicity',
'chHadMultiplicity', 10, 0, 40,
'(Puppi-weighted) number of charged hadrons in the jet'),
98 Plot1D(
'neHadMultiplicity',
'neHadMultiplicity', 10, 0, 40,
'(Puppi-weighted) number of neutral hadrons in the jet'),
99 Plot1D(
'phoMultiplicity',
'phoMultiplicity', 10, 0, 40,
'(Puppi-weighted) number of photons in the jet'),
100 Plot1D(
'elMultiplicity',
'elMultiplicity', 5, 0, 10,
'(Puppi-weighted) number of electrons in the jet'),
101 Plot1D(
'muMultiplicity',
'muMultiplicity', 5, 0, 10,
'(Puppi-weighted) number of muons in the jet'),
102 Plot1D(
'hfEMMultiplicity',
'hfEMMultiplicity', 5, 0, 10,
'(Puppi-weighted) number of HF EMs in the jet'),
103 Plot1D(
'hfHadMultiplicity',
'hfHadMultiplicity', 5, 0, 10,
'(Puppi-weighted) number of HF hadrons in the jet'),
104 Plot1D(
'neEmEF',
'neEmEF',20, 0, 1,
'neutral Electromagnetic Energy Fraction'),
105 Plot1D(
'neHEF',
'neHEF',20, 0, 1,
'neutral Hadron Energy Fraction'),
113 nanojmeDQM.vplots.FatJetForJEC = cms.PSet(
115 CentralPt30 = cms.string(
'abs(eta) < 2.4 && pt > 30'),
116 ForwardPt30 = cms.string(
'abs(eta) > 2.4 && pt > 30')
119 Count1D(
'_size', 20, -0.5, 19.5,
'AK8 PF Puppi jets with JECs applied. Reclustered for JEC studies so only minimal info stored.'),
120 Plot1D(
'area',
'area', 20, 0.2, 0.8,
'jet catchment area, for JECs'),
121 Plot1D(
'eta',
'eta', 20, -6, 6,
'eta'),
122 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'),
123 Plot1D(
'mass',
'mass', 20, 0, 200,
'mass'),
124 Plot1D(
'phi',
'phi', 20, -3.14159, 3.14159,
'phi'),
125 Plot1D(
'pt',
'pt', 20, 0, 400,
'pt'),
126 Plot1D(
'rawFactor',
'rawFactor', 20, -0.5, 0.5,
'1 - Factor to get back to raw pT'),
127 Plot1D(
'chHadMultiplicity',
'chHadMultiplicity', 10, 0, 40,
'(Puppi-weighted) number of charged hadrons in the jet'),
128 Plot1D(
'neHadMultiplicity',
'neHadMultiplicity', 10, 0, 40,
'(Puppi-weighted) number of neutral hadrons in the jet'),
129 Plot1D(
'phoMultiplicity',
'phoMultiplicity', 10, 0, 40,
'(Puppi-weighted) number of photons in the jet'),
130 Plot1D(
'elMultiplicity',
'elMultiplicity', 5, 0, 10,
'(Puppi-weighted) number of electrons in the jet'),
131 Plot1D(
'muMultiplicity',
'muMultiplicity', 5, 0, 10,
'(Puppi-weighted) number of muons in the jet'),
132 Plot1D(
'hfEMMultiplicity',
'hfEMMultiplicity', 5, 0, 10,
'(Puppi-weighted) number of HF EMs in the jet'),
133 Plot1D(
'hfHadMultiplicity',
'hfHadMultiplicity', 5, 0, 10,
'(Puppi-weighted) number of HF hadrons in the jet'),
134 Plot1D(
'nElectrons',
'nElectrons', 5, -0.5, 4.5,
'number of electrons in the jet'),
135 Plot1D(
'nMuons',
'nMuons', 4, -0.5, 3.5,
'number of muons in the jet'),
136 Plot1D(
'hadronFlavour',
'hadronFlavour', 6, -0.5, 5.5,
'flavour from hadron ghost clustering'),
137 Plot1D(
'partonFlavour',
'partonFlavour', 40, -9.5, 30.5,
'flavour from parton matching'),
138 Plot1D(
'chEmEF',
'chEmEF', 20, 0, 1,
'charged Electromagnetic Energy Fraction'),
139 Plot1D(
'chHEF',
'chHEF', 20, 0, 2,
'charged Hadron Energy Fraction'),
140 Plot1D(
'neEmEF',
'neEmEF', 20, 0.3, 0.4,
'neutral Electromagnetic Energy Fraction'),
141 Plot1D(
'neHEF',
'neHEF', 20, 0.01, 0.2,
'neutral Hadron Energy Fraction'),
142 Plot1D(
'hfEmEF',
'hfEmEF', 20, 0, 1,
'electromagnetic energy fraction in HF'),
143 Plot1D(
'hfHEF',
'hfHEF', 20, 0, 1,
'hadronic energy fraction in HF'),
144 Plot1D(
'muEF',
'muEF', 20, -1, 1,
'muon Energy Fraction'),
154 nanojmeDQM.vplots.JetCalo = cms.PSet(
156 CentralPt30 = cms.string(
'abs(eta) < 2.4 && pt > 30'),
157 ForwardPt30 = cms.string(
'abs(eta) > 2.4 && pt > 30')
160 Count1D(
'_size', 20, -0.5, 19.5,
'AK4 Calo jets (slimmedCaloJets)'),
161 Plot1D(
'area',
'area', 20, 0.2, 0.8,
'jet catchment area'),
162 Plot1D(
'eta',
'eta', 20, -6, 6,
'eta'),
163 Plot1D(
'mass',
'mass', 20, 0, 200,
'mass'),
164 Plot1D(
'phi',
'phi', 20, -3.14159, 3.14159,
'phi'),
165 Plot1D(
'pt',
'pt', 20, 0, 400,
'pt'),
166 Plot1D(
'rawFactor',
'rawFactor', 20, -0.5, 0.5,
'1 - Factor to get back to raw pT'),
167 Plot1D(
'emf',
'emf', 20, 0, 1,
'electromagnetic energy fraction'),
168 Plot1D(
'hadronFlavour',
'hadronFlavour', 6, -0.5, 5.5,
'flavour from hadron ghost clustering'),
169 Plot1D(
'partonFlavour',
'partonFlavour', 40, -9.5, 30.5,
'flavour from parton matching'),
175 nanojmeDQMMC = nanojmeDQM.clone()
177 nanojmeDQMMC.vplots.LowPtElectron.sels.Prompt = cms.string(
"genPartFlav == 1")
178 nanojmeDQMMC.vplots.Muon.sels.Prompt = cms.string(
"genPartFlav == 1")
179 nanojmeDQMMC.vplots.Photon.sels.Prompt = cms.string(
"genPartFlav == 1")
180 nanojmeDQMMC.vplots.Tau.sels.Prompt = cms.string(
"genPartFlav == 5")
181 nanojmeDQMMC.vplots.Jet.sels.Prompt = cms.string(
"genJetIdx != 1")
182 nanojmeDQMMC.vplots.Jet.sels.PromptB = cms.string(
"genJetIdx != 1 && hadronFlavour == 5")
192 (~run2_nanoAOD_ANY).toModify(
193 nanojmeDQM.vplots.Jet,
194 plots = _ak4puppiplots,
199 (~run2_nanoAOD_ANY).toModify(
200 nanojmeDQMMC.vplots.JetCHS.sels,
201 Prompt = nanojmeDQMMC.vplots.Jet.sels.Prompt,
202 PromptB = nanojmeDQMMC.vplots.Jet.sels.PromptB
207 run2_nanoAOD_ANY.toModify(
208 nanojmeDQM.vplots.Jet,
209 plots = _ak4chsplots,
214 run2_nanoAOD_ANY.toModify(
215 nanojmeDQMMC.vplots.JetPuppi.sels,
216 Prompt = nanojmeDQMMC.vplots.Jet.sels.Prompt,
217 PromptB = nanojmeDQMMC.vplots.Jet.sels.PromptB
220 from DQMServices.Core.DQMQualityTester
import DQMQualityTester
222 qtList = cms.untracked.FileInPath(
'PhysicsTools/NanoAOD/test/dqmQualityTests.xml'),
223 prescaleFactor = cms.untracked.int32(1),
224 testInEventloop = cms.untracked.bool(
False),
225 qtestOnEndLumi = cms.untracked.bool(
False),
226 verboseQT = cms.untracked.bool(
True)
229 nanojmeHarvest = cms.Sequence( nanoDQMQTester )