Skip to content

Commit 92e9d9d

Browse files
authored
Merge pull request cms-sw#33817 from bainbrid/LowPtElectrons_nanoAOD_integration
LowPtElectrons: NanoAOD integration
2 parents 6d27aa7 + 2436a07 commit 92e9d9d

File tree

16 files changed

+710
-47
lines changed

16 files changed

+710
-47
lines changed

DataFormats/EgammaCandidates/interface/GsfElectron.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -787,6 +787,7 @@ namespace reco {
787787
// setters
788788
void setCorrectedEcalEnergyError(float newEnergyError);
789789
void setCorrectedEcalEnergy(float newEnergy);
790+
void setCorrectedEcalEnergy(float newEnergy, bool rescaleDependentValues);
790791
void setTrackMomentumError(float trackMomentumError);
791792
void setP4(P4Kind kind, const LorentzVector &p4, float p4Error, bool setCandidate);
792793
using RecoCandidate::setP4;
@@ -812,8 +813,8 @@ namespace reco {
812813
//bool isMomentumCorrected() const { return corrections_.isMomentumCorrected ; }
813814
float caloEnergy() const { return correctedEcalEnergy(); }
814815
bool isEnergyScaleCorrected() const { return isEcalEnergyCorrected(); }
815-
void correctEcalEnergy(float newEnergy, float newEnergyError) {
816-
setCorrectedEcalEnergy(newEnergy);
816+
void correctEcalEnergy(float newEnergy, float newEnergyError, bool corrEovP = true) {
817+
setCorrectedEcalEnergy(newEnergy, corrEovP);
817818
setEcalEnergyError(newEnergyError);
818819
}
819820
void correctMomentum(const LorentzVector &p4, float trackMomentumError, float p4Error) {

DataFormats/EgammaCandidates/src/GsfElectron.cc

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -171,14 +171,18 @@ void GsfElectron::setCorrectedEcalEnergyError(float energyError) {
171171
corrections_.correctedEcalEnergyError = energyError;
172172
}
173173

174-
void GsfElectron::setCorrectedEcalEnergy(float newEnergy) {
174+
void GsfElectron::setCorrectedEcalEnergy(float newEnergy) { setCorrectedEcalEnergy(newEnergy, true); }
175+
176+
void GsfElectron::setCorrectedEcalEnergy(float newEnergy, bool rescaleDependentValues) {
175177
math::XYZTLorentzVectorD momentum = p4();
176178
momentum *= newEnergy / momentum.e();
177179
setP4(momentum);
178-
showerShape_.hcalDepth1OverEcal *= corrections_.correctedEcalEnergy / newEnergy;
179-
showerShape_.hcalDepth2OverEcal *= corrections_.correctedEcalEnergy / newEnergy;
180-
trackClusterMatching_.eSuperClusterOverP *= newEnergy / corrections_.correctedEcalEnergy;
181-
corrections_.correctedEcalEnergyError *= newEnergy / corrections_.correctedEcalEnergy;
180+
if (corrections_.correctedEcalEnergy > 0. && rescaleDependentValues) {
181+
showerShape_.hcalDepth1OverEcal *= corrections_.correctedEcalEnergy / newEnergy;
182+
showerShape_.hcalDepth2OverEcal *= corrections_.correctedEcalEnergy / newEnergy;
183+
trackClusterMatching_.eSuperClusterOverP *= newEnergy / corrections_.correctedEcalEnergy;
184+
corrections_.correctedEcalEnergyError *= newEnergy / corrections_.correctedEcalEnergy;
185+
}
182186
corrections_.correctedEcalEnergy = newEnergy;
183187
corrections_.isEcalEnergyCorrected = true;
184188
}
Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
import FWCore.ParameterSet.Config as cms
2+
from PhysicsTools.NanoAOD.nano_eras_cff import *
3+
from PhysicsTools.NanoAOD.common_cff import *
4+
5+
################################################################################
6+
# Modules
7+
################################################################################
8+
9+
from RecoEgamma.EgammaTools.lowPtElectronModifier_cfi import lowPtElectronModifier
10+
from RecoEgamma.EgammaElectronProducers.lowPtGsfElectrons_cfi import lowPtRegressionModifier
11+
modifiedLowPtElectrons = cms.EDProducer(
12+
"ModifiedElectronProducer",
13+
src = cms.InputTag("slimmedLowPtElectrons"),
14+
modifierConfig = cms.PSet(
15+
modifications = cms.VPSet(lowPtElectronModifier,lowPtRegressionModifier)
16+
)
17+
)
18+
19+
from RecoEgamma.EgammaElectronProducers.lowPtGsfElectronID_cfi import lowPtGsfElectronID
20+
lowPtPATElectronID = lowPtGsfElectronID.clone(
21+
usePAT = True,
22+
electrons = "modifiedLowPtElectrons",
23+
unbiased = "",
24+
ModelWeights = [
25+
'RecoEgamma/ElectronIdentification/data/LowPtElectrons/LowPtElectrons_ID_2020Nov28.root',
26+
],
27+
)
28+
29+
isoForLowPtEle = cms.EDProducer(
30+
"EleIsoValueMapProducer",
31+
src = cms.InputTag("modifiedLowPtElectrons"),
32+
relative = cms.bool(False),
33+
rho_MiniIso = cms.InputTag("fixedGridRhoFastjetAll"),
34+
rho_PFIso = cms.InputTag("fixedGridRhoFastjetAll"),
35+
EAFile_MiniIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"),
36+
EAFile_PFIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"),
37+
)
38+
39+
updatedLowPtElectronsWithUserData = cms.EDProducer(
40+
"PATElectronUserDataEmbedder",
41+
src = cms.InputTag("modifiedLowPtElectrons"),
42+
userFloats = cms.PSet(
43+
ID = cms.InputTag("lowPtPATElectronID"),
44+
miniIsoChg = cms.InputTag("isoForLowPtEle:miniIsoChg"),
45+
miniIsoAll = cms.InputTag("isoForLowPtEle:miniIsoAll"),
46+
),
47+
userIntFromBools = cms.PSet(),
48+
userInts = cms.PSet(),
49+
userCands = cms.PSet(),
50+
)
51+
52+
finalLowPtElectrons = cms.EDFilter(
53+
"PATElectronRefSelector",
54+
src = cms.InputTag("updatedLowPtElectronsWithUserData"),
55+
cut = cms.string("pt > 1. && userFloat('ID') > -0.25"),
56+
)
57+
58+
################################################################################
59+
# electronTable
60+
################################################################################
61+
62+
lowPtElectronTable = cms.EDProducer(
63+
"SimpleCandidateFlatTableProducer",
64+
src = cms.InputTag("finalLowPtElectrons"),
65+
cut = cms.string(""),
66+
name= cms.string("LowPtElectron"),
67+
doc = cms.string("slimmedLowPtElectrons after basic selection (" + finalLowPtElectrons.cut.value()+")"),
68+
singleton = cms.bool(False), # the number of entries is variable
69+
extension = cms.bool(False), # this is the main table for the electrons
70+
variables = cms.PSet(
71+
# Basic variables
72+
CandVars,
73+
# BDT scores and WPs
74+
embeddedID = Var("electronID('ID')",float,doc="ID, BDT (raw) score"),
75+
ID = Var("userFloat('ID')",float,doc="New ID, BDT (raw) score"),
76+
unbiased = Var("electronID('unbiased')",float,doc="ElectronSeed, pT- and dxy- agnostic BDT (raw) score"),
77+
ptbiased = Var("electronID('ptbiased')",float,doc="ElectronSeed, pT- and dxy- dependent BDT (raw) score"),
78+
# Isolation
79+
miniPFRelIso_chg = Var("userFloat('miniIsoChg')/pt",float,
80+
doc="mini PF relative isolation, charged component"),
81+
miniPFRelIso_all = Var("userFloat('miniIsoAll')/pt",float,
82+
doc="mini PF relative isolation, total (with scaled rho*EA PU corrections)"),
83+
# Conversions
84+
convVeto = Var("passConversionVeto()",bool,doc="pass conversion veto"),
85+
convWP = Var("userInt('convOpen')*1 + userInt('convLoose')*2 + userInt('convTight')*4",
86+
int,doc="conversion flag bit map: 1=Veto, 2=Loose, 3=Tight"),
87+
convVtxRadius = Var("userFloat('convVtxRadius')",float,doc="conversion vertex radius (cm)",precision=7),
88+
# Tracking
89+
lostHits = Var("gsfTrack.hitPattern.numberOfLostHits('MISSING_INNER_HITS')","uint8",doc="number of missing inner hits"),
90+
# Cluster-related
91+
energyErr = Var("p4Error('P4_COMBINATION')",float,doc="energy error of the cluster-track combination",precision=6),
92+
deltaEtaSC = Var("superCluster().eta()-eta()",float,doc="delta eta (SC,ele) with sign",precision=10),
93+
r9 = Var("full5x5_r9()",float,doc="R9 of the SC, calculated with full 5x5 region",precision=10),
94+
sieie = Var("full5x5_sigmaIetaIeta()",float,doc="sigma_IetaIeta of the SC, calculated with full 5x5 region",precision=10),
95+
eInvMinusPInv = Var("(1-eSuperClusterOverP())/ecalEnergy()",float,doc="1/E_SC - 1/p_trk",precision=10),
96+
scEtOverPt = Var("(superCluster().energy()/(pt*cosh(superCluster().eta())))-1",float,doc="(SC energy)/pt-1",precision=8),
97+
hoe = Var("hadronicOverEm()",float,doc="H over E",precision=8),
98+
# Displacement
99+
dxy = Var("dB('PV2D')",float,doc="dxy (with sign) wrt first PV, in cm",precision=10),
100+
dxyErr = Var("edB('PV2D')",float,doc="dxy uncertainty, in cm",precision=6),
101+
dz = Var("dB('PVDZ')",float,doc="dz (with sign) wrt first PV, in cm",precision=10),
102+
dzErr = Var("abs(edB('PVDZ'))",float,doc="dz uncertainty, in cm",precision=6),
103+
ip3d = Var("abs(dB('PV3D'))",float,doc="3D impact parameter wrt first PV, in cm",precision=10),
104+
sip3d = Var("abs(dB('PV3D')/edB('PV3D'))",float,doc="3D impact parameter significance wrt first PV, in cm",precision=10),
105+
# Cross-referencing
106+
#jetIdx
107+
#photonIdx
108+
),
109+
)
110+
111+
################################################################################
112+
# electronTable (MC)
113+
################################################################################
114+
115+
from PhysicsTools.NanoAOD.particlelevel_cff import particleLevel
116+
particleLevelForMatchingLowPt = particleLevel.clone(
117+
lepMinPt = cms.double(1.),
118+
phoMinPt = cms.double(1),
119+
)
120+
121+
tautaggerForMatchingLowPt = cms.EDProducer(
122+
"GenJetTauTaggerProducer",
123+
src = cms.InputTag('particleLevelForMatchingLowPt:leptons')
124+
)
125+
126+
matchingLowPtElecPhoton = cms.EDProducer(
127+
"GenJetGenPartMerger",
128+
srcJet =cms.InputTag("particleLevelForMatchingLowPt:leptons"),
129+
srcPart=cms.InputTag("particleLevelForMatchingLowPt:photons"),
130+
hasTauAnc=cms.InputTag("tautaggerForMatchingLowPt"),
131+
)
132+
133+
lowPtElectronsMCMatchForTableAlt = cms.EDProducer(
134+
"GenJetMatcherDRPtByDR", # cut on deltaR, deltaPt/Pt; pick best by deltaR
135+
src = lowPtElectronTable.src, # final reco collection
136+
matched = cms.InputTag("matchingLowPtElecPhoton:merged"), # final mc-truth particle collection
137+
mcPdgId = cms.vint32(11,22), # one or more PDG ID (11 = el, 22 = pho); absolute values (see below)
138+
checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge
139+
mcStatus = cms.vint32(),
140+
maxDeltaR = cms.double(0.3), # Minimum deltaR for the match
141+
maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match
142+
resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object
143+
resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first
144+
)
145+
146+
lowPtElectronsMCMatchForTable = cms.EDProducer(
147+
"MCMatcher", # cut on deltaR, deltaPt/Pt; pick best by deltaR
148+
src = lowPtElectronTable.src, # final reco collection
149+
matched = cms.InputTag("finalGenParticles"), # final mc-truth particle collection
150+
mcPdgId = cms.vint32(11), # one or more PDG ID (11 = ele); absolute values (see below)
151+
checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge
152+
mcStatus = cms.vint32(1), # PYTHIA status code (1 = stable, 2 = shower, 3 = hard scattering)
153+
maxDeltaR = cms.double(0.3), # Minimum deltaR for the match
154+
maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match
155+
resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object
156+
resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first
157+
)
158+
159+
from PhysicsTools.NanoAOD.electrons_cff import electronMCTable
160+
lowPtElectronMCTable = cms.EDProducer(
161+
"CandMCMatchTableProducer",
162+
src = lowPtElectronTable.src,
163+
mcMapDressedLep = cms.InputTag("lowPtElectronsMCMatchForTableAlt"),
164+
mcMap = cms.InputTag("lowPtElectronsMCMatchForTable"),
165+
mapTauAnc = cms.InputTag("matchingLowPtElecPhoton:hasTauAnc"),
166+
objName = lowPtElectronTable.name,
167+
objType = electronMCTable.objType,
168+
branchName = cms.string("genPart"),
169+
docString = cms.string("MC matching to status==1 electrons or photons"),
170+
genparticles = cms.InputTag("finalGenParticles"),
171+
)
172+
173+
################################################################################
174+
# Sequences
175+
################################################################################
176+
177+
lowPtElectronSequence = cms.Sequence(modifiedLowPtElectrons
178+
+lowPtPATElectronID
179+
+isoForLowPtEle
180+
+updatedLowPtElectronsWithUserData
181+
+finalLowPtElectrons)
182+
lowPtElectronTables = cms.Sequence(lowPtElectronTable)
183+
lowPtElectronMC = cms.Sequence(
184+
particleLevelForMatchingLowPt
185+
+tautaggerForMatchingLowPt
186+
+matchingLowPtElecPhoton
187+
+lowPtElectronsMCMatchForTable
188+
+lowPtElectronsMCMatchForTableAlt
189+
+lowPtElectronMCTable)
190+
191+
################################################################################
192+
# Modifiers
193+
################################################################################
194+
195+
_modifiers = ( run2_miniAOD_80XLegacy |
196+
run2_nanoAOD_94XMiniAODv1 |
197+
run2_nanoAOD_94XMiniAODv2 |
198+
run2_nanoAOD_94X2016 |
199+
run2_nanoAOD_102Xv1 |
200+
run2_nanoAOD_106Xv1 )
201+
(_modifiers).toReplaceWith(lowPtElectronSequence,cms.Sequence())
202+
(_modifiers).toReplaceWith(lowPtElectronTables,cms.Sequence())
203+
(_modifiers).toReplaceWith(lowPtElectronMC,cms.Sequence())

PhysicsTools/NanoAOD/python/nanoDQM_cff.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@
108108
## MC
109109
nanoDQMMC = nanoDQM.clone()
110110
nanoDQMMC.vplots.Electron.sels.Prompt = cms.string("genPartFlav == 1")
111+
nanoDQMMC.vplots.LowPtElectron.sels.Prompt = cms.string("genPartFlav == 1")
111112
nanoDQMMC.vplots.Muon.sels.Prompt = cms.string("genPartFlav == 1")
112113
nanoDQMMC.vplots.Photon.sels.Prompt = cms.string("genPartFlav == 1")
113114
nanoDQMMC.vplots.Tau.sels.Prompt = cms.string("genPartFlav == 5")

PhysicsTools/NanoAOD/python/nanoDQM_cfi.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,53 @@
112112
Plot1D('dEsigmaDown', 'dEsigmaDown', 100, -0.1, 0.1, '#Delta E sigmaDown'),
113113
)
114114
),
115+
116+
LowPtElectron = cms.PSet(
117+
sels = cms.PSet(
118+
Good = cms.string('pt > 1. && ID > 5.')
119+
),
120+
plots = cms.VPSet(
121+
#
122+
Count1D('_size', 8, -0.5, 7.5, 'slimmedLowPtElectrons after basic selection'),
123+
# CandVars
124+
Plot1D('charge', 'charge', 3, -1.5, 1.5, 'electric charge'),
125+
Plot1D('eta', 'eta', 20, -3., 3., 'eta'),
126+
NoPlot('mass'),
127+
Plot1D('pdgId', 'pdgId', 101, -50.5, 50.5, 'PDG code assigned by the event reconstruction (not by MC truth)'),
128+
Plot1D('phi', 'phi', 20, -3.14159, 3.14159, 'phi'),
129+
Plot1D('pt', 'pt', 40, 0., 20., 'pt (corrected)'),
130+
# BDT scores and WPs
131+
Plot1D('embeddedID', 'embeddedID', 40, -10., 10., 'Embedded ID, BDT (raw) score'),
132+
Plot1D('ID', 'ID', 40, -10., 10., 'ID, BDT (raw) score'),
133+
Plot1D('unbiased', 'unbiased', 40, -10., 10., 'ElectronSeed, pT- and dxy- agnostic BDT (raw) score'),
134+
Plot1D('ptbiased', 'ptbiased', 40, -10., 10., 'ElectronSeed, pT- and dxy- dependent BDT (raw) score'),
135+
# Isolation
136+
Plot1D('miniPFRelIso_chg', 'miniPFRelIso_chg', 20, 0, 2, 'mini PF relative isolation, charged component'),
137+
Plot1D('miniPFRelIso_all', 'miniPFRelIso_all', 20, 0, 2, 'mini PF relative isolation, total (with scaled rho*EA PU corrections)'),
138+
# Conversions
139+
Plot1D('convVeto', 'convVeto', 2, -0.5, 1.5, 'pass conversion veto'),
140+
Plot1D('convWP', 'convWP', 8, -0.5, 7.5, 'conversion flag bit map: 1=Veto, 2=Loose, 3=Tight'),
141+
Plot1D('convVtxRadius', 'convVtxRadius', 40, 0., 20.0, 'conversion vertex radius (cm)'),
142+
# Tracking
143+
Plot1D('lostHits', 'lostHits', 4, -0.5, 3.5, 'number of missing inner hits'),
144+
# Cluster-related
145+
Plot1D('energyErr', 'energyErr', 40, 0., 20., 'energy error of the cluster from regression'),
146+
Plot1D('deltaEtaSC', 'deltaEtaSC', 20, -0.2, 0.2, 'delta eta (SC,ele) with sign'),
147+
Plot1D('r9', 'r9', 20, 0, 1.1, 'R9 of the supercluster, calculated with full 5x5 region'),
148+
Plot1D('sieie', 'sieie', 20, 0, 0.05, 'sigma_IetaIeta of the supercluster, calculated with full 5x5 region'),
149+
Plot1D('eInvMinusPInv', 'eInvMinusPInv', 20, -0.1, 0.1, '1/E_SC - 1/p_trk'),
150+
Plot1D('scEtOverPt', 'scEtOverPt', 20, -0.5, 0.5, '(supercluster transverse energy)/pt - 1'),
151+
Plot1D('hoe', 'hoe', 20, 0, 0.6, 'H over E'),
152+
# Displacement
153+
Plot1D('dxy', 'dxy', 20, -0.1, 0.1, 'dxy (with sign) wrt first PV, in cm'),
154+
Plot1D('dz', 'dz', 20, -0.3, 0.3, 'dz (with sign) wrt first PV, in cm'),
155+
Plot1D('dxyErr', 'dxyErr', 20, 0., 0.2, 'dxy uncertainty, in cm'),
156+
Plot1D('dzErr', 'dzErr', 20, 0., 0.2, 'dz uncertainty, in cm'),
157+
Plot1D('ip3d', 'ip3d', 20, 0., 0.2, '3D impact parameter wrt first PV, in cm'),
158+
Plot1D('sip3d', 'sip3d', 20, 0., 20., '3D impact parameter significance wrt first PV, in cm'),
159+
),
160+
),
161+
115162
FatJet = cms.PSet(
116163
sels = cms.PSet(),
117164
plots = cms.VPSet(

PhysicsTools/NanoAOD/python/nano_cff.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from PhysicsTools.NanoAOD.taus_cff import *
88
from PhysicsTools.NanoAOD.boostedTaus_cff import *
99
from PhysicsTools.NanoAOD.electrons_cff import *
10+
from PhysicsTools.NanoAOD.lowPtElectrons_cff import *
1011
from PhysicsTools.NanoAOD.photons_cff import *
1112
from PhysicsTools.NanoAOD.globals_cff import *
1213
from PhysicsTools.NanoAOD.extraflags_cff import *
@@ -106,10 +107,10 @@
106107
(run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1).toModify(l1bits, storeUnprefireableBit=False)
107108

108109
nanoSequenceCommon = cms.Sequence(
109-
nanoMetadata + jetSequence + muonSequence + tauSequence + boostedTauSequence + electronSequence+photonSequence+vertexSequence+
110+
nanoMetadata + jetSequence + muonSequence + tauSequence + boostedTauSequence + electronSequence + lowPtElectronSequence + photonSequence+vertexSequence+
110111
isoTrackSequence + jetLepSequence + # must be after all the leptons
111112
linkedObjects +
112-
jetTables + muonTables + tauTables + boostedTauTables + electronTables + photonTables + globalTables +vertexTables+ metTables+simpleCleanerTable + isoTrackTables
113+
jetTables + muonTables + tauTables + boostedTauTables + electronTables + lowPtElectronTables + photonTables + globalTables +vertexTables+ metTables+simpleCleanerTable + isoTrackTables
113114
)
114115
#remove boosted tau from previous eras
115116
(run2_miniAOD_80XLegacy | run2_nanoAOD_92X | run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1).toReplaceWith(nanoSequenceCommon, nanoSequenceCommon.copyAndExclude([boostedTauSequence, boostedTauTables]))
@@ -119,7 +120,7 @@
119120

120121
nanoSequence = cms.Sequence(nanoSequenceCommon + nanoSequenceOnlyData + nanoSequenceOnlyFullSim)
121122

122-
nanoSequenceFS = cms.Sequence(genParticleSequence + genVertexTables + particleLevelSequence + nanoSequenceCommon + jetMC + muonMC + electronMC + photonMC + tauMC + boostedTauMC + metMC + ttbarCatMCProducers + globalTablesMC + btagWeightTable + genWeightsTable + genVertexTable + genParticleTables + particleLevelTables + lheInfoTable + ttbarCategoryTable )
123+
nanoSequenceFS = cms.Sequence(genParticleSequence + genVertexTables + particleLevelSequence + nanoSequenceCommon + jetMC + muonMC + electronMC + lowPtElectronMC + photonMC + tauMC + boostedTauMC + metMC + ttbarCatMCProducers + globalTablesMC + btagWeightTable + genWeightsTable + genVertexTable + genParticleTables + particleLevelTables + lheInfoTable + ttbarCategoryTable )
123124

124125
(run2_nanoAOD_92X | run2_miniAOD_80XLegacy | run2_nanoAOD_94X2016 | run2_nanoAOD_94X2016 | \
125126
run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94XMiniAODv2 | \

PhysicsTools/PatAlgos/python/slimming/slimmedLowPtElectrons_cfi.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import FWCore.ParameterSet.Config as cms
22

3+
from RecoEgamma.EgammaTools.lowPtElectronModifier_cfi import lowPtElectronModifier
4+
35
slimmedLowPtElectrons = cms.EDProducer("PATElectronSlimmer",
46
src = cms.InputTag("selectedPatLowPtElectrons"),
57
dropSuperCluster = cms.string("0"), # you can put a cut to slim selectively, e.g. pt < 10
@@ -39,6 +41,7 @@
3941
modifierName = cms.string('EGExtraInfoModifierFromPackedCandPtrValueMaps'),
4042
photon_config = cms.PSet()
4143
),
44+
lowPtElectronModifier,
4245
)
4346
)
4447
)

0 commit comments

Comments
 (0)