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(
'nConstChHads',
'nConstChHads', 10, 0, 40,
'number of charged hadrons in the jet'),
24 Plot1D(
'nConstNeuHads',
'nConstNeuHads', 10, 0, 40,
'number of neutral hadrons in the jet'),
25 Plot1D(
'nConstPhotons',
'nConstPhotons', 10, 0, 40,
'number of photons in the jet'),
26 Plot1D(
'nConstElecs',
'nConstElecs', 5, 0, 10,
'number of electrons in the jet'),
27 Plot1D(
'nConstMuons',
'nConstMuons', 5, 0, 10,
'number of muons in the jet'),
28 Plot1D(
'nConstHFEMs',
'nConstHFEMs', 5, 0, 10,
'number of HF EMs in the jet'),
29 Plot1D(
'nConstHFHads',
'nConstHFHads', 5, 0, 10,
'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"),
54 Plot1D(
'hfEmEF',
'hfEmEF', 20, 0, 1,
'electromagnetic energy fraction in HF'),
55 Plot1D(
'hfHEF',
'hfHEF', 20, 0, 1,
'hadronic energy fraction in HF'),
63 _ak4chsplots = cms.VPSet(
64 Count1D(
'_size', 20, -0.5, 19.5,
'AK4 PF CHS jets with JECs applied.')
66 for plot
in _ak4puppiplots:
67 if plot.name.value()==
"_size":
continue 68 _ak4chsplots.append(plot)
70 Plot1D(
'chFPV1EF',
'chFPV1EF', 20, 0, 2,
'charged fromPV==1 Energy Fraction (component of the total charged Energy Fraction).'),
71 Plot1D(
'chFPV2EF',
'chFPV2EF', 20, 0, 2,
'charged fromPV==2 Energy Fraction (component of the total charged Energy Fraction).'),
72 Plot1D(
'chFPV3EF',
'chFPV3EF', 20, 0, 2,
'charged fromPV==3 Energy Fraction (component of the total charged Energy Fraction).'),
81 nanojmeDQM.vplots.Jet.plots = _ak4puppiplots
82 nanojmeDQM.vplots.JetPuppi = cms.PSet(
83 sels = nanojmeDQM.vplots.Jet.sels,
84 plots = _ak4puppiplots
86 nanojmeDQM.vplots.JetCHS = cms.PSet(
87 sels = nanojmeDQM.vplots.Jet.sels,
98 nanojmeDQM.vplots.FatJet.plots.extend([
99 Plot1D(
'nConstChHads',
'nConstChHads',10,0,40,
'number of charged hadrons in the jet'),
100 Plot1D(
'nConstNeuHads',
'nConstNeuHads',10,0,40,
'number of neutral hadrons in the jet'),
101 Plot1D(
'nConstPhotons',
'nConstPhotons',10,0,40,
'number of photons in the jet'),
102 Plot1D(
'nConstElecs',
'nConstElecs',5,0,10,
'number of electrons in the jet'),
103 Plot1D(
'nConstMuons',
'nConstMuons',5,0,10,
'number of muons in the jet'),
104 Plot1D(
'nConstHFEMs',
'nConstHFEMs',5,0,10,
'number of HF EMs in the jet'),
105 Plot1D(
'nConstHFHads',
'nConstHFHads',5,0,10,
'number of HF Hadrons in the jet'),
106 Plot1D(
'neEmEF',
'neEmEF',20, 0, 1,
'neutral Electromagnetic Energy Fraction'),
107 Plot1D(
'neHEF',
'neHEF',20, 0, 1,
'neutral Hadron Energy Fraction'),
115 nanojmeDQM.vplots.FatJetForJEC = cms.PSet(
117 CentralPt30 = cms.string(
'abs(eta) < 2.4 && pt > 30'),
118 ForwardPt30 = cms.string(
'abs(eta) > 2.4 && pt > 30')
121 Count1D(
'_size', 20, -0.5, 19.5,
'AK8 PF Puppi jets with JECs applied. Reclustered for JEC studies so only minimal info stored.'),
122 Plot1D(
'area',
'area', 20, 0.2, 0.8,
'jet catchment area, for JECs'),
123 Plot1D(
'eta',
'eta', 20, -6, 6,
'eta'),
124 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'),
125 Plot1D(
'mass',
'mass', 20, 0, 200,
'mass'),
126 Plot1D(
'phi',
'phi', 20, -3.14159, 3.14159,
'phi'),
127 Plot1D(
'pt',
'pt', 20, 0, 400,
'pt'),
128 Plot1D(
'rawFactor',
'rawFactor', 20, -0.5, 0.5,
'1 - Factor to get back to raw pT'),
129 Plot1D(
'nConstChHads',
'nConstChHads', 10, 0, 40,
'number of charged hadrons in the jet'),
130 Plot1D(
'nConstNeuHads',
'nConstNeuHads', 10, 0, 40,
'number of neutral hadrons in the jet'),
131 Plot1D(
'nConstPhotons',
'nConstPhotons', 10, 0, 40,
'number of photons in the jet'),
132 Plot1D(
'nConstElecs',
'nConstElecs', 5, 0, 10,
'number of electrons in the jet'),
133 Plot1D(
'nConstMuons',
'nConstMuons', 5, 0, 10,
'number of muons in the jet'),
134 Plot1D(
'nConstHFEMs',
'nConstHFEMs', 5, 0, 10,
'number of HF EMs in the jet'),
135 Plot1D(
'nConstHFHads',
'nConstHFHads', 5, 0, 10,
'number of HF Hadrons in the jet'),
136 Plot1D(
'nElectrons',
'nElectrons', 5, -0.5, 4.5,
'number of electrons in the jet'),
137 Plot1D(
'nMuons',
'nMuons', 4, -0.5, 3.5,
'number of muons in the jet'),
138 Plot1D(
'hadronFlavour',
'hadronFlavour', 6, -0.5, 5.5,
'flavour from hadron ghost clustering'),
139 Plot1D(
'partonFlavour',
'partonFlavour', 40, -9.5, 30.5,
'flavour from parton matching'),
140 Plot1D(
'chEmEF',
'chEmEF', 20, 0, 1,
'charged Electromagnetic Energy Fraction'),
141 Plot1D(
'chHEF',
'chHEF', 20, 0, 2,
'charged Hadron Energy Fraction'),
142 Plot1D(
'neEmEF',
'neEmEF', 20, 0.3, 0.4,
'neutral Electromagnetic Energy Fraction'),
143 Plot1D(
'neHEF',
'neHEF', 20, 0.01, 0.2,
'neutral Hadron Energy Fraction'),
144 Plot1D(
'hfEmEF',
'hfEmEF', 20, 0, 1,
'electromagnetic energy fraction in HF'),
145 Plot1D(
'hfHEF',
'hfHEF', 20, 0, 1,
'hadronic energy fraction in HF'),
146 Plot1D(
'muEF',
'muEF', 20, -1, 1,
'muon Energy Fraction'),
156 _ak8chsplots = cms.VPSet(
157 Count1D(
'_size', 20, -0.5, 19.5,
'AK8 CHS jets with JECs applied.')
159 for plot
in nanojmeDQM.vplots.FatJetForJEC.plots:
160 if plot.name.value()==
"_size":
continue 161 _ak8chsplots.append(plot)
163 nanojmeDQM.vplots.FatJetCHS = cms.PSet(
164 sels = nanojmeDQM.vplots.FatJetForJEC.sels,
165 plots = _ak8chsplots,
173 nanojmeDQM.vplots.JetCalo = cms.PSet(
175 CentralPt30 = cms.string(
'abs(eta) < 2.4 && pt > 30'),
176 ForwardPt30 = cms.string(
'abs(eta) > 2.4 && pt > 30')
179 Count1D(
'_size', 20, -0.5, 19.5,
'AK4 Calo jets (slimmedCaloJets)'),
180 Plot1D(
'area',
'area', 20, 0.2, 0.8,
'jet catchment area'),
181 Plot1D(
'eta',
'eta', 20, -6, 6,
'eta'),
182 Plot1D(
'mass',
'mass', 20, 0, 200,
'mass'),
183 Plot1D(
'phi',
'phi', 20, -3.14159, 3.14159,
'phi'),
184 Plot1D(
'pt',
'pt', 20, 0, 400,
'pt'),
185 Plot1D(
'rawFactor',
'rawFactor', 20, -0.5, 0.5,
'1 - Factor to get back to raw pT'),
186 Plot1D(
'emf',
'emf', 20, 0, 1,
'electromagnetic energy fraction'),
187 Plot1D(
'hadronFlavour',
'hadronFlavour', 6, -0.5, 5.5,
'flavour from hadron ghost clustering'),
188 Plot1D(
'partonFlavour',
'partonFlavour', 40, -9.5, 30.5,
'flavour from parton matching'),
194 nanojmeDQMMC = nanojmeDQM.clone()
196 nanojmeDQMMC.vplots.LowPtElectron.sels.Prompt = cms.string(
"genPartFlav == 1")
197 nanojmeDQMMC.vplots.Muon.sels.Prompt = cms.string(
"genPartFlav == 1")
198 nanojmeDQMMC.vplots.Photon.sels.Prompt = cms.string(
"genPartFlav == 1")
199 nanojmeDQMMC.vplots.Tau.sels.Prompt = cms.string(
"genPartFlav == 5")
200 nanojmeDQMMC.vplots.Jet.sels.Prompt = cms.string(
"genJetIdx != 1")
201 nanojmeDQMMC.vplots.Jet.sels.PromptB = cms.string(
"genJetIdx != 1 && hadronFlavour == 5")
211 (~run2_nanoAOD_ANY).toModify(
212 nanojmeDQM.vplots.Jet,
213 plots = _ak4puppiplots,
218 (~run2_nanoAOD_ANY).toModify(
219 nanojmeDQMMC.vplots.JetCHS.sels,
220 Prompt = nanojmeDQMMC.vplots.Jet.sels.Prompt,
221 PromptB = nanojmeDQMMC.vplots.Jet.sels.PromptB
226 run2_nanoAOD_ANY.toModify(
227 nanojmeDQM.vplots.Jet,
228 plots = _ak4chsplots,
233 run2_nanoAOD_ANY.toModify(
234 nanojmeDQMMC.vplots.JetPuppi.sels,
235 Prompt = nanojmeDQMMC.vplots.Jet.sels.Prompt,
236 PromptB = nanojmeDQMMC.vplots.Jet.sels.PromptB
239 from DQMServices.Core.DQMQualityTester
import DQMQualityTester
241 qtList = cms.untracked.FileInPath(
'PhysicsTools/NanoAOD/test/dqmQualityTests.xml'),
242 prescaleFactor = cms.untracked.int32(1),
243 testInEventloop = cms.untracked.bool(
False),
244 qtestOnEndLumi = cms.untracked.bool(
False),
245 verboseQT = cms.untracked.bool(
True)
248 nanojmeHarvest = cms.Sequence( nanoDQMQTester )