1 import FWCore.ParameterSet.Config
as cms
9 modifiedLowPtElectrons = cms.EDProducer(
10 "ModifiedElectronProducer",
11 src = cms.InputTag(
"slimmedLowPtElectrons"),
12 modifierConfig = cms.PSet(
13 modifications = cms.VPSet(cms.PSet(
14 addExtraUserVars = cms.bool(
True),
15 beamSpot = cms.InputTag(
"offlineBeamSpot"),
16 conversions = cms.InputTag(
"gsfTracksOpenConversions",
"gsfTracksOpenConversions"),
17 modifierName = cms.string(
'LowPtElectronModifier'),
18 vertices = cms.InputTag(
"offlineSlimmedPrimaryVertices")
23 updatedLowPtElectrons = cms.EDProducer(
25 src = cms.InputTag(
"modifiedLowPtElectrons"),
26 vertices = cms.InputTag(
"offlineSlimmedPrimaryVertices"),
27 computeMiniIso = cms.bool(
True),
28 fixDxySign = cms.bool(
False),
29 pfCandsForMiniIso = cms.InputTag(
"packedPFCandidates"),
30 miniIsoParamsB = cms.vdouble(
31 0.05, 0.2, 10.0, 0.0, 0.0,
34 miniIsoParamsE = cms.vdouble(
35 0.05, 0.2, 10.0, 0.0, 0.015,
40 isoForLowPtEle = cms.EDProducer(
41 "EleIsoValueMapProducer",
42 src = cms.InputTag(
"updatedLowPtElectrons"),
43 relative = cms.bool(
True),
44 rho_MiniIso = cms.InputTag(
"fixedGridRhoFastjetAll"),
45 rho_PFIso = cms.InputTag(
"fixedGridRhoFastjetAll"),
46 EAFile_MiniIso = cms.FileInPath(
"RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"),
47 EAFile_PFIso = cms.FileInPath(
"RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"),
50 updatedLowPtElectronsWithUserData = cms.EDProducer(
51 "PATElectronUserDataEmbedder",
52 src = cms.InputTag(
"updatedLowPtElectrons"),
53 userFloats = cms.PSet(
54 miniIsoChg = cms.InputTag(
"isoForLowPtEle:miniIsoChg"),
55 miniIsoAll = cms.InputTag(
"isoForLowPtEle:miniIsoAll"),
57 userIntFromBools = cms.PSet(),
58 userInts = cms.PSet(),
59 userCands = cms.PSet(),
62 finalLowPtElectrons = cms.EDFilter(
63 "PATElectronRefSelector",
64 src = cms.InputTag(
"updatedLowPtElectronsWithUserData"),
65 cut = cms.string(
"pt > 1. && electronID('ID') > -0.25"),
72 lowPtElectronTable = cms.EDProducer(
73 "SimpleCandidateFlatTableProducer",
74 src = cms.InputTag(
"linkedObjects",
"lowPtElectrons"),
76 name= cms.string(
"LowPtElectron"),
77 doc = cms.string(
"slimmedLowPtElectrons after basic selection (" + finalLowPtElectrons.cut.value()+
")"),
78 singleton = cms.bool(
False),
79 extension = cms.bool(
False),
84 electronIdx =
Var(
"?overlaps('electrons').size()>0?overlaps('electrons')[0].key():-1", int, doc=
"index of the overlapping PF electron (-1 if none)"),
86 ID =
Var(
"electronID('ID')",float,doc=
"ID, BDT (raw) score"),
87 unbiased =
Var(
"electronID('unbiased')",float,doc=
"ElectronSeed, pT- and dxy- agnostic BDT (raw) score"),
88 ptbiased =
Var(
"electronID('ptbiased')",float,doc=
"ElectronSeed, pT- and dxy- dependent BDT (raw) score"),
90 miniPFRelIso_chg =
Var(
"userFloat('miniIsoChg')",float,
91 doc=
"mini PF relative isolation, charged component"),
92 miniPFRelIso_all =
Var(
"userFloat('miniIsoAll')",float,
93 doc=
"mini PF relative isolation, total (with scaled rho*EA PU corrections)"),
95 convVeto =
Var(
"passConversionVeto()",bool,doc=
"pass conversion veto"),
96 convWP =
Var(
"userInt('convOpen')*1 + userInt('convLoose')*2 + userInt('convTight')*4",
97 int,doc=
"conversion flag bit map: 1=Veto, 2=Loose, 3=Tight"),
98 convVtxRadius =
Var(
"userFloat('convVtxRadius')",float,doc=
"conversion vertex radius (cm)",precision=7),
100 lostHits =
Var(
"gsfTrack.hitPattern.numberOfLostHits('MISSING_INNER_HITS')",
"uint8",doc=
"number of missing inner hits"),
102 energyErr =
Var(
"p4Error('P4_COMBINATION')",float,doc=
"energy error of the cluster-track combination",precision=6),
103 deltaEtaSC =
Var(
"superCluster().eta()-eta()",float,doc=
"delta eta (SC,ele) with sign",precision=10),
104 r9 =
Var(
"full5x5_r9()",float,doc=
"R9 of the SC, calculated with full 5x5 region",precision=10),
105 sieie =
Var(
"full5x5_sigmaIetaIeta()",float,doc=
"sigma_IetaIeta of the SC, calculated with full 5x5 region",precision=10),
106 eInvMinusPInv =
Var(
"(1-eSuperClusterOverP())/ecalEnergy()",float,doc=
"1/E_SC - 1/p_trk",precision=10),
107 scEtOverPt =
Var(
"(superCluster().energy()/(pt*cosh(superCluster().eta())))-1",float,doc=
"(SC energy)/pt-1",precision=8),
108 hoe =
Var(
"hadronicOverEm()",float,doc=
"H over E",precision=8),
110 dxy =
Var(
"dB('PV2D')",float,doc=
"dxy (with sign) wrt first PV, in cm",precision=10),
111 dxyErr =
Var(
"edB('PV2D')",float,doc=
"dxy uncertainty, in cm",precision=6),
112 dz =
Var(
"dB('PVDZ')",float,doc=
"dz (with sign) wrt first PV, in cm",precision=10),
113 dzErr =
Var(
"abs(edB('PVDZ'))",float,doc=
"dz uncertainty, in cm",precision=6),
125 matchingLowPtElecPhoton = cms.EDProducer(
126 "GenJetGenPartMerger",
127 srcJet =cms.InputTag(
"particleLevel:leptons"),
128 srcPart=cms.InputTag(
"particleLevel:photons"),
129 cut = cms.string(
""),
130 hasTauAnc=cms.InputTag(
"tautaggerForMatching"),
133 lowPtElectronsMCMatchForTableAlt = cms.EDProducer(
134 "GenJetMatcherDRPtByDR",
135 src = lowPtElectronTable.src,
136 matched = cms.InputTag(
"matchingLowPtElecPhoton:merged"),
137 mcPdgId = cms.vint32(11,22),
138 checkCharge = cms.bool(
False),
139 mcStatus = cms.vint32(),
140 maxDeltaR = cms.double(0.3),
141 maxDPtRel = cms.double(0.5),
142 resolveAmbiguities = cms.bool(
True),
143 resolveByMatchQuality = cms.bool(
True),
146 lowPtElectronsMCMatchForTable = cms.EDProducer(
148 src = lowPtElectronTable.src,
149 matched = cms.InputTag(
"finalGenParticles"),
150 mcPdgId = cms.vint32(11),
151 checkCharge = cms.bool(
False),
152 mcStatus = cms.vint32(1),
153 maxDeltaR = cms.double(0.3),
154 maxDPtRel = cms.double(0.5),
155 resolveAmbiguities = cms.bool(
True),
156 resolveByMatchQuality = cms.bool(
True),
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"),
177 lowPtElectronTask = cms.Task(modifiedLowPtElectrons,
178 updatedLowPtElectrons,
180 updatedLowPtElectronsWithUserData,
183 lowPtElectronTablesTask = cms.Task(lowPtElectronTable)
185 lowPtElectronMCTask = cms.Task(
186 matchingLowPtElecPhoton,
187 lowPtElectronsMCMatchForTable,
188 lowPtElectronsMCMatchForTableAlt,
189 lowPtElectronMCTable)
198 from RecoEgamma.EgammaTools.lowPtElectronModifier_cfi
import lowPtElectronModifier
201 run2_nanoAOD_106Xv2.toModify(modifiedLowPtElectrons.modifierConfig,
202 modifications = cms.VPSet(lowPtElectronModifier,
203 lowPtRegressionModifier))
205 run2_nanoAOD_106Xv2.toModify(updatedLowPtElectronsWithUserData.userFloats,
206 ID = cms.InputTag(
"lowPtPATElectronID"))
208 run2_nanoAOD_106Xv2.toModify(finalLowPtElectrons,
209 cut =
"pt > 1. && userFloat('ID') > -0.25")
211 run2_nanoAOD_106Xv2.toModify(lowPtElectronTable.variables,
212 embeddedID =
Var(
"electronID('ID')",float,doc=
"ID, BDT (raw) score"),
213 ID =
Var(
"userFloat('ID')",float,doc=
"New ID, BDT (raw) score"))
215 from RecoEgamma.EgammaElectronProducers.lowPtGsfElectronID_cfi
import lowPtGsfElectronID
216 lowPtPATElectronID = lowPtGsfElectronID.clone(
218 electrons =
"updatedLowPtElectrons",
221 'RecoEgamma/ElectronIdentification/data/LowPtElectrons/LowPtElectrons_ID_2020Nov28.root',
225 _lowPtElectronTask = cms.Task(lowPtPATElectronID, lowPtElectronTask.copy())
227 run2_nanoAOD_106Xv2.toReplaceWith(lowPtElectronTask,_lowPtElectronTask)
def Var(expr, valtype, doc=None, precision=-1)