Skip to content

Commit 7b424a3

Browse files
authored
Merge pull request #46627 from pasenov/addTrackGenJet3
trackGenJetAK4 added
2 parents a3ba379 + dd83fa3 commit 7b424a3

File tree

4 files changed

+57
-12
lines changed

4 files changed

+57
-12
lines changed

PhysicsTools/NanoAOD/python/jetMC_cff.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from PhysicsTools.NanoAOD.simplePATJetFlatTableProducer_cfi import simplePATJetFlatTableProducer
66
from PhysicsTools.NanoAOD.jetsAK8_cff import fatJetTable as _fatJetTable
77
from PhysicsTools.NanoAOD.jetsAK8_cff import subJetTable as _subJetTable
8+
from RecoJets.JetProducers.ak4GenJets_cfi import ak4GenJets
89

910
jetMCTable = simplePATJetFlatTableProducer.clone(
1011
src = cms.InputTag("linkedObjects","jets"),
@@ -23,7 +24,7 @@
2324
name = cms.string("GenJet"),
2425
doc = cms.string("slimmedGenJets, i.e. ak4 Jets made with visible genparticles"),
2526
variables = cms.PSet(P4Vars,
26-
#anything else?
27+
#anything else?
2728
)
2829
)
2930

@@ -60,7 +61,7 @@
6061
name = cms.string("GenJetAK8"),
6162
doc = cms.string("slimmedGenJetsAK8, i.e. ak8 Jets made with visible genparticles"),
6263
variables = cms.PSet(P4Vars,
63-
#anything else?
64+
#anything else?
6465
)
6566
)
6667

@@ -100,7 +101,7 @@
100101
name = cms.string("SubGenJetAK8"),
101102
doc = cms.string("slimmedGenJetsAK8SoftDropSubJets, i.e. subjets of ak8 Jets made with visible genparticles"),
102103
variables = cms.PSet(P4Vars,
103-
#anything else?
104+
#anything else?
104105
)
105106
)
106107
subjetMCTable = simplePATJetFlatTableProducer.clone(
@@ -116,7 +117,26 @@
116117
)
117118
)
118119

120+
genParticlesForJetsCharged = cms.EDFilter("CandPtrSelector",
121+
src = cms.InputTag("prunedGenParticles"), # or "packedGenParticles" if available
122+
cut = cms.string("charge != 0 && pt > 0.3 && status == 1 && abs(pdgId) != 12 && abs(pdgId) != 14 && abs(pdgId) != 16")
123+
)
124+
125+
ak4GenJetsChargedOnly = ak4GenJets.clone(src = cms.InputTag("genParticlesForJetsCharged"), rParam = cms.double(0.4), jetAlgorithm=cms.string("AntiKt"), doAreaFastjet = False, jetPtMin=1)
126+
127+
128+
trackGenJetAK4Table = genJetTable.clone(
129+
src = cms.InputTag("ak4GenJetsChargedOnly"),
130+
cut = cms.string("pt > 1"),
131+
name = cms.string("TrackGenJetAK4"),
132+
doc = cms.string("AK4 GenJets made with charged particles only"),
133+
variables = cms.PSet(P3Vars)
134+
)
135+
136+
trackGenJetAK4Table.variables.pt.precision = 10
137+
trackGenJetAK4Table.variables.eta.precision = 8
138+
trackGenJetAK4Table.variables.phi.precision = 8
119139

120-
jetMCTaskak4 = cms.Task(jetMCTable,genJetTable,patJetPartonsNano,genJetFlavourTable)
140+
jetMCTaskak4 = cms.Task(jetMCTable,genJetTable,patJetPartonsNano,genJetFlavourTable,genParticlesForJetsCharged,ak4GenJetsChargedOnly,trackGenJetAK4Table)
121141
jetMCTaskak8 = cms.Task(genJetAK8Table,genJetAK8FlavourAssociation,genJetAK8FlavourTable,fatJetMCTable,genSubJetAK8Table,subjetMCTable)
122142
jetMCTask = jetMCTaskak4.copyAndAdd(jetMCTaskak8)

PhysicsTools/NanoAOD/python/nanoDQM_cfi.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,20 @@
373373
Plot1D('pt', 'pt', 20, 0, 200, 'pt'),
374374
)
375375
),
376+
TrackGenJetAK4 = cms.PSet(
377+
sels = cms.PSet(),
378+
plots = cms.VPSet(
379+
Count1D('_size', 25, -0.5, 24.5, 'trackGenJetAK4, i.e. ak4 Jets made only with charged particles'),
380+
Plot1D('eta', 'eta', 20, -7, 7, 'eta'),
381+
Plot1D('hadronFlavour', 'hadronFlavour', 6, -0.5, 5.5, 'flavour from hadron ghost clustering'),
382+
Plot1D('mass', 'mass', 20, 0, 200, 'mass'),
383+
Plot1D('nBHadrons', 'nBHadrons', 4, -0.5, 3.5, 'number of b-hadrons'),
384+
Plot1D('nCHadrons', 'nCHadrons', 4, -0.5, 3.5, 'number of c-hadrons'),
385+
Plot1D('partonFlavour', 'partonFlavour', 40, -9.5, 30.5, 'flavour from parton matching'),
386+
Plot1D('phi', 'phi', 20, -3.14159, 3.14159, 'phi'),
387+
Plot1D('pt', 'pt', 20, 0, 200, 'pt'),
388+
)
389+
),
376390
GenMET = cms.PSet(
377391
sels = cms.PSet(),
378392
plots = cms.VPSet(
@@ -500,6 +514,10 @@
500514
Plot1D('neHEF', 'neHEF', 20, 0, 1, 'neutral Hadron Energy Fraction'),
501515
Plot1D('partonFlavour', 'partonFlavour', 40, -9.5, 30.5, 'flavour from parton matching'),
502516
Plot1D('phi', 'phi', 20, -3.14159, 3.14159, 'phi'),
517+
Plot1D('pnScore_heavy', 'pnScore_heavy', 40, -1, 1, 'PNet muon ID score for lepton from B or D hadrons'),
518+
Plot1D('pnScore_light', 'pnScore_light', 40, -1, 1, 'PNet muon ID score for lepton from hadrons w/o b or c quarks OR w/o generator matching'),
519+
Plot1D('pnScore_prompt', 'pnScore_prompt', 40, -1, 1, 'PNet muon ID score for lepton from W/Z/H bosons'),
520+
Plot1D('pnScore_tau', 'pnScore_tau', 40, -1, 1, 'PNet muon ID score for decay of tau to light leptons (mu)'),
503521
Plot1D('pt', 'pt', 20, 0, 400, 'pt'),
504522
Plot1D('puId', 'puId', 8, -0.5, 7.5, 'Pilup ID flags'),
505523
Plot1D('puIdDisc', 'puIdDisc', 20, -1, 1, 'Pilup ID discriminant with 102X (2018) training'),
@@ -622,10 +640,6 @@
622640
Plot1D('pfRelIso03_chg', 'pfRelIso03_chg', 20, 0, 2, 'PF relative isolation dR=0.3, charged component'),
623641
Plot1D('pfRelIso04_all', 'pfRelIso04_all', 20, 0, 2, 'PF relative isolation dR=0.4, total (deltaBeta corrections)'),
624642
Plot1D('phi', 'phi', 20, -3.14159, 3.14159, 'phi'),
625-
Plot1D('pnScore_heavy', 'pnScore_heavy', 40, -1, 1, 'PNet muon ID score for lepton from B or D hadrons'),
626-
Plot1D('pnScore_light', 'pnScore_light', 40, -1, 1, 'PNet muon ID score for lepton from hadrons w/o b or c quarks OR w/o generator matching'),
627-
Plot1D('pnScore_prompt', 'pnScore_prompt', 40, -1, 1, 'PNet muon ID score for lepton from W/Z/H bosons'),
628-
Plot1D('pnScore_tau', 'pnScore_tau', 40, -1, 1, 'PNet muon ID score for decay of tau to light leptons (mu)'),
629643
Plot1D('pt', 'pt', 20, 0, 200, 'pt'),
630644
Plot1D('ptErr', 'ptErr', 20, 0, 20, 'ptError of the muon track'),
631645
Plot1D('segmentComp', 'segmentComp', 20, 0, 1, 'muon segment compatibility'),
@@ -1044,3 +1058,4 @@
10441058
)
10451059
)
10461060

1061+

PhysicsTools/NanoAOD/python/nanogenDQM_cff.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
GenIsolatedPhoton = nanoDQM.vplots.GenIsolatedPhoton,
1111
GenJet = nanoDQM.vplots.GenJet,
1212
GenJetAK8 = nanoDQM.vplots.GenJetAK8,
13+
TrackGenJetAK4 = nanoDQM.vplots.TrackGenJetAK4,
1314
GenMET = nanoDQM.vplots.GenMET,
1415
GenPart = nanoDQM.vplots.GenPart,
1516
GenVtx = nanoDQM.vplots.GenVtx,
@@ -31,3 +32,4 @@
3132
)
3233

3334
nanogenHarvest = cms.Sequence( nanoDQMQTester )
35+

PhysicsTools/NanoAOD/python/nanogen_cff.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from PhysicsTools.NanoAOD.genVertex_cff import *
99
from PhysicsTools.NanoAOD.common_cff import Var,CandVars
1010
from PhysicsTools.NanoAOD.simpleSingletonCandidateFlatTableProducer_cfi import simpleSingletonCandidateFlatTableProducer
11+
from RecoJets.JetProducers.ak4GenJets_cfi import ak4GenJets
1112

1213
nanoMetadata = cms.EDProducer("UniqueStringProducer",
1314
strings = cms.PSet(
@@ -24,6 +25,9 @@
2425
patJetPartonsNano+
2526
genJetFlavourAssociation+
2627
genJetFlavourTable+
28+
genParticlesForJetsCharged+
29+
ak4GenJetsChargedOnly+
30+
trackGenJetAK4Table+
2731
genSubJetAK8Table+
2832
genJetAK8Table+
2933
genJetAK8FlavourAssociation+
@@ -115,6 +119,10 @@ def customizeNanoGEN(process):
115119
process.ak8GenJetsNoNuConstituents = process.ak8GenJetsConstituents.clone(src='ak8GenJetsNoNu')
116120
process.ak8GenJetsNoNuSoftDrop = process.ak8GenJetsSoftDrop.clone(src=cms.InputTag('ak8GenJetsNoNuConstituents', 'constituents'))
117121
process.genSubJetAK8Table.src = "ak8GenJetsNoNuSoftDrop"
122+
process.genParticlesForJetsCharged = cms.EDFilter("CandPtrSelector", src = cms.InputTag("genParticles"), cut = cms.string("charge != 0 && pt > 0.3 && status == 1 && abs(pdgId) != 12 && abs(pdgId) != 14 && abs(pdgId) != 16"))
123+
process.ak4GenJetsChargedOnly = ak4GenJets.clone(src = cms.InputTag("genParticlesForJetsCharged"), rParam = cms.double(0.4), jetAlgorithm=cms.string("AntiKt"), doAreaFastjet = False, jetPtMin=1)
124+
process.nanogenSequence.insert(0, process.ak4GenJetsChargedOnly)
125+
process.nanogenSequence.insert(0, process.genParticlesForJetsCharged)
118126
process.nanogenSequence.insert(0, process.ak8GenJetsNoNuSoftDrop)
119127
process.nanogenSequence.insert(0, process.ak8GenJetsNoNuConstituents)
120128
# In case customizeNanoGENFromMini has already been called
@@ -128,14 +136,14 @@ def customizeNanoGEN(process):
128136
def pruneGenParticlesNano(process):
129137
process.finalGenParticles.src = process.genParticleTable.src.getModuleLabel()
130138
process.genParticleTable.src = "finalGenParticles"
131-
process.nanogenSequence.insert(0, process.finalGenParticles)
139+
process.nanogenSequence.insert(1, process.finalGenParticles)
132140
return process
133141

134142
# Prune gen particles with conditions applied in usual MiniAOD
135143
def pruneGenParticlesMini(process):
136-
if process.nanogenSequence.contains(process.mergedGenParticles):
137-
raise ValueError("Applying the MiniAOD genParticle pruner to MiniAOD is redunant. " \
138-
"Use a different customization.")
144+
# if process.nanogenSequence.contains(process.mergedGenParticles):
145+
# raise ValueError("Applying the MiniAOD genParticle pruner to MiniAOD is redunant. " \
146+
# "Use a different customization.")
139147
from PhysicsTools.PatAlgos.slimming.prunedGenParticles_cfi import prunedGenParticles
140148
process.prunedGenParticles = prunedGenParticles.clone()
141149
process.prunedGenParticles.src = "genParticles"

0 commit comments

Comments
 (0)