1 import FWCore.ParameterSet.Config
as cms
5 from PhysicsTools.NanoAOD.simpleCandidateFlatTableProducer_cfi
import simpleCandidateFlatTableProducer
12 jetCorrFactorsNano = patJetCorrFactors.clone(src=
'slimmedJets',
13 levels = cms.vstring(
'L1FastJet',
17 primaryVertices = cms.InputTag(
"offlineSlimmedPrimaryVertices"),
21 updatedJets = updatedPatJets.clone(
23 jetSource=
'slimmedJets',
24 jetCorrFactorsSource=cms.VInputTag(cms.InputTag(
"jetCorrFactorsNano") ),
30 looseJetId = cms.EDProducer(
"PatJetIDValueMapProducer",
31 filterParams=cms.PSet(
32 version = cms.string(
'WINTER16'),
33 quality = cms.string(
'LOOSE'),
35 src = cms.InputTag(
"updatedJets")
37 tightJetId = cms.EDProducer(
"PatJetIDValueMapProducer",
38 filterParams=cms.PSet(
39 version = cms.string(
'RUN3WINTER22CHS'),
40 quality = cms.string(
'TIGHT'),
42 src = cms.InputTag(
"updatedJets")
44 tightJetIdLepVeto = cms.EDProducer(
"PatJetIDValueMapProducer",
45 filterParams=cms.PSet(
46 version = cms.string(
'RUN3WINTER22CHS'),
47 quality = cms.string(
'TIGHTLEPVETO'),
49 src = cms.InputTag(
"updatedJets")
51 run2_jme_2016.toModify(
52 tightJetId.filterParams, version =
"RUN2UL16CHS" 54 tightJetIdLepVeto.filterParams, version =
"RUN2UL16CHS" 57 (run2_jme_2017 | run2_jme_2018).toModify(
58 tightJetId.filterParams, version =
"RUN2ULCHS" 60 tightJetIdLepVeto.filterParams, version =
"RUN2ULCHS" 63 run3_jme_Winter22runsBCDEprompt.toModify(
64 tightJetId.filterParams, version =
"RUN3WINTER22CHSrunsBCDEprompt" 66 tightJetIdLepVeto.filterParams, version =
"RUN3WINTER22CHSrunsBCDEprompt" 69 bJetVars = cms.EDProducer(
"JetRegressionVarProducer",
70 pvsrc = cms.InputTag(
"offlineSlimmedPrimaryVertices"),
71 src = cms.InputTag(
"updatedJets"),
72 svsrc = cms.InputTag(
"slimmedSecondaryVertices"),
75 jercVars = cms.EDProducer(
"BetaStarPackedCandidateVarProducer",
76 srcJet = cms.InputTag(
"updatedJets"),
77 srcPF = cms.InputTag(
"packedPFCandidates"),
78 maxDR = cms.double(0.4)
81 updatedJetsWithUserData = cms.EDProducer(
"PATJetUserDataEmbedder",
82 src = cms.InputTag(
"updatedJets"),
83 userFloats = cms.PSet(
84 leadTrackPt = cms.InputTag(
"bJetVars:leadTrackPt"),
85 leptonPtRelv0 = cms.InputTag(
"bJetVars:leptonPtRelv0"),
86 leptonPtRelInvv0 = cms.InputTag(
"bJetVars:leptonPtRelInvv0"),
87 leptonDeltaR = cms.InputTag(
"bJetVars:leptonDeltaR"),
88 vtxPt = cms.InputTag(
"bJetVars:vtxPt"),
89 vtxMass = cms.InputTag(
"bJetVars:vtxMass"),
90 vtx3dL = cms.InputTag(
"bJetVars:vtx3dL"),
91 vtx3deL = cms.InputTag(
"bJetVars:vtx3deL"),
92 ptD = cms.InputTag(
"bJetVars:ptD"),
93 qgl = cms.InputTag(
'qgtagger:qgLikelihood'),
94 puIdNanoDisc = cms.InputTag(
'pileupJetIdNano:fullDiscriminant'),
95 chFPV0EF = cms.InputTag(
"jercVars:chargedFromPV0EnergyFraction"),
98 tightId = cms.InputTag(
"tightJetId"),
99 tightIdLepVeto = cms.InputTag(
"tightJetIdLepVeto"),
100 vtxNtrk = cms.InputTag(
"bJetVars:vtxNtrk"),
101 leptonPdgId = cms.InputTag(
"bJetVars:leptonPdgId"),
102 puIdNanoId = cms.InputTag(
'pileupJetIdNano:fullId'),
107 finalJets = cms.EDFilter(
"PATJetRefSelector",
108 src = cms.InputTag(
"updatedJetsWithUserData"),
109 cut = cms.string(
"pt > 15")
116 jetTable = simpleCandidateFlatTableProducer.clone(
117 src = cms.InputTag(
"linkedObjects",
"jets"),
118 name = cms.string(
"Jet"),
119 doc = cms.string(
"slimmedJets, i.e. ak4 PFJets CHS with JECs applied, after basic selection (" + finalJets.cut.value()+
")"),
120 externalVariables = cms.PSet(
121 bRegCorr =
ExtVar(cms.InputTag(
"bjetNN:corr"),float, doc=
"pt correction for b-jet energy regression",precision=10),
122 bRegRes =
ExtVar(cms.InputTag(
"bjetNN:res"),float, doc=
"res on pt corrected with b-jet regression",precision=6),
123 cRegCorr =
ExtVar(cms.InputTag(
"cjetNN:corr"),float, doc=
"pt correction for c-jet energy regression",precision=10),
124 cRegRes =
ExtVar(cms.InputTag(
"cjetNN:res"),float, doc=
"res on pt corrected with c-jet regression",precision=6),
126 variables = cms.PSet(P4Vars,
127 area =
Var(
"jetArea()", float, doc=
"jet catchment area, for JECs",precision=10),
128 nMuons =
Var(
"?hasOverlaps('muons')?overlaps('muons').size():0",
"uint8", doc=
"number of muons in the jet"),
129 muonIdx1 =
Var(
"?overlaps('muons').size()>0?overlaps('muons')[0].key():-1",
"int16", doc=
"index of first matching muon"),
130 muonIdx2 =
Var(
"?overlaps('muons').size()>1?overlaps('muons')[1].key():-1",
"int16", doc=
"index of second matching muon"),
131 electronIdx1 =
Var(
"?overlaps('electrons').size()>0?overlaps('electrons')[0].key():-1",
"int16", doc=
"index of first matching electron"),
132 electronIdx2 =
Var(
"?overlaps('electrons').size()>1?overlaps('electrons')[1].key():-1",
"int16", doc=
"index of second matching electron"),
133 nElectrons =
Var(
"?hasOverlaps('electrons')?overlaps('electrons').size():0",
"uint8", doc=
"number of electrons in the jet"),
134 svIdx1 =
Var(
"?overlaps('vertices').size()>0?overlaps('vertices')[0].key():-1",
"int16", doc=
"index of first matching secondary vertex"),
135 svIdx2 =
Var(
"?overlaps('vertices').size()>1?overlaps('vertices')[1].key():-1",
"int16", doc=
"index of second matching secondary vertex"),
136 nSVs =
Var(
"?hasOverlaps('vertices')?overlaps('vertices').size():0",
"uint8", doc=
"number of secondary vertices in the jet"),
137 btagDeepB =
Var(
"?(bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb'))>=0?bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb'):-1",float,doc=
"DeepCSV b+bb tag discriminator",precision=10),
138 btagDeepFlavB =
Var(
"bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb')",float,doc=
"DeepJet b+bb+lepb tag discriminator",precision=10),
139 btagDeepCvL =
Var(
"?bDiscriminator('pfDeepCSVJetTags:probc')>=0?bDiscriminator('pfDeepCSVJetTags:probc')/(bDiscriminator('pfDeepCSVJetTags:probc')+bDiscriminator('pfDeepCSVJetTags:probudsg')):-1", float,doc=
"DeepCSV c vs udsg discriminator",precision=10),
140 btagDeepCvB =
Var(
"?bDiscriminator('pfDeepCSVJetTags:probc')>=0?bDiscriminator('pfDeepCSVJetTags:probc')/(bDiscriminator('pfDeepCSVJetTags:probc')+bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb')):-1",float,doc=
"DeepCSV c vs b+bb discriminator",precision=10),
141 btagDeepFlavCvL =
Var(
"?(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probuds')+bDiscriminator('pfDeepFlavourJetTags:probg'))>0?bDiscriminator('pfDeepFlavourJetTags:probc')/(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probuds')+bDiscriminator('pfDeepFlavourJetTags:probg')):-1",float,doc=
"DeepJet c vs uds+g discriminator",precision=10),
142 btagDeepFlavCvB =
Var(
"?(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb'))>0?bDiscriminator('pfDeepFlavourJetTags:probc')/(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb')):-1",float,doc=
"DeepJet c vs b+bb+lepb discriminator",precision=10),
143 btagDeepFlavQG =
Var(
"?(bDiscriminator('pfDeepFlavourJetTags:probg')+bDiscriminator('pfDeepFlavourJetTags:probuds'))>0?bDiscriminator('pfDeepFlavourJetTags:probg')/(bDiscriminator('pfDeepFlavourJetTags:probg')+bDiscriminator('pfDeepFlavourJetTags:probuds')):-1",float,doc=
"DeepJet g vs uds discriminator",precision=10),
144 puIdDisc =
Var(
"userFloat('puIdNanoDisc')", float,doc=
"Pileup ID discriminant with 106X (2018) training",precision=10),
145 puId =
Var(
"userInt('puIdNanoId')",
"uint8", doc=
"Pileup ID flags with 106X (2018) training"),
146 jetId =
Var(
"userInt('tightId')*2+4*userInt('tightIdLepVeto')",
"uint8", doc=
"Jet ID flags bit1 is loose (always false in 2017 since it does not exist), bit2 is tight, bit3 is tightLepVeto"),
147 qgl =
Var(
"?userFloat('qgl')>0?userFloat('qgl'):-1",float,doc=
"Quark vs Gluon likelihood discriminator",precision=10),
148 hfsigmaEtaEta =
Var(
"userFloat('hfJetShowerShape:sigmaEtaEta')",float,doc=
"sigmaEtaEta for HF jets (noise discriminating variable)",precision=10),
149 hfsigmaPhiPhi =
Var(
"userFloat('hfJetShowerShape:sigmaPhiPhi')",float,doc=
"sigmaPhiPhi for HF jets (noise discriminating variable)",precision=10),
150 hfcentralEtaStripSize =
Var(
"userInt('hfJetShowerShape:centralEtaStripSize')", int, doc=
"eta size of the central tower strip in HF (noise discriminating variable) "),
151 hfadjacentEtaStripsSize =
Var(
"userInt('hfJetShowerShape:adjacentEtaStripsSize')", int, doc=
"eta size of the strips next to the central tower strip in HF (noise discriminating variable) "),
152 nConstituents =
Var(
"numberOfDaughters()",
"uint8",doc=
"Number of particles in the jet"),
153 rawFactor =
Var(
"1.-jecFactor('Uncorrected')",float,doc=
"1 - Factor to get back to raw pT",precision=6),
154 chHEF =
Var(
"chargedHadronEnergyFraction()", float, doc=
"charged Hadron Energy Fraction", precision= 6),
155 neHEF =
Var(
"neutralHadronEnergyFraction()", float, doc=
"neutral Hadron Energy Fraction", precision= 6),
156 chEmEF =
Var(
"chargedEmEnergyFraction()", float, doc=
"charged Electromagnetic Energy Fraction", precision= 6),
157 neEmEF =
Var(
"neutralEmEnergyFraction()", float, doc=
"neutral Electromagnetic Energy Fraction", precision= 6),
158 muEF =
Var(
"muonEnergyFraction()", float, doc=
"muon Energy Fraction", precision= 6),
159 chFPV0EF =
Var(
"userFloat('chFPV0EF')", float, doc=
"charged fromPV==0 Energy Fraction (energy excluded from CHS jets). Previously called betastar.", precision= 6),
164 jetTable.variables.pt.precision=10
167 (run2_jme_2016 & ~tracker_apv_vfp30_2016 ).toModify(
168 jetTable.variables.puIdDisc, doc=
"Pileup ID discriminant with 106X (2016) training" 170 jetTable.variables.puId, doc=
"Pileup ID flags with 106X (2016) training" 172 (run2_jme_2016 & tracker_apv_vfp30_2016 ).toModify(
173 jetTable.variables.puIdDisc, doc=
"Pileup ID discriminant with 106X (2016APV) training" 175 jetTable.variables.puId, doc=
"Pileup ID flags with 106X (2016APV) training" 177 run2_jme_2017.toModify(
178 jetTable.variables.puIdDisc, doc=
"Pileup ID discriminant with 106X (2017) training" 180 jetTable.variables.puId, doc=
"Pileup ID flags with 106X (2017) training" 183 run2_nanoAOD_ANY.toModify(
185 btagCSVV2 =
Var(
"bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=
" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10)
188 bjetNN = cms.EDProducer(
"BJetEnergyRegressionMVA",
189 backend = cms.string(
"ONNX"),
190 batch_eval = cms.bool(
True),
191 src = cms.InputTag(
"linkedObjects",
"jets"),
192 pvsrc = cms.InputTag(
"offlineSlimmedPrimaryVertices"),
193 svsrc = cms.InputTag(
"slimmedSecondaryVertices"),
194 rhosrc = cms.InputTag(
"fixedGridRhoFastjetAll"),
196 weightFile = cms.FileInPath(
"PhysicsTools/NanoAOD/data/breg_training_2018.onnx"),
197 name = cms.string(
"JetRegNN"),
198 isClassifier = cms.bool(
False),
199 variablesOrder = cms.vstring([
"Jet_pt",
"Jet_eta",
"rho",
"Jet_mt",
"Jet_leadTrackPt",
"Jet_leptonPtRel",
"Jet_leptonDeltaR",
"Jet_neHEF",
200 "Jet_neEmEF",
"Jet_vtxPt",
"Jet_vtxMass",
"Jet_vtx3dL",
"Jet_vtxNtrk",
"Jet_vtx3deL",
201 "Jet_numDaughters_pt03",
"Jet_energyRing_dR0_em_Jet_rawEnergy",
"Jet_energyRing_dR1_em_Jet_rawEnergy",
202 "Jet_energyRing_dR2_em_Jet_rawEnergy",
"Jet_energyRing_dR3_em_Jet_rawEnergy",
"Jet_energyRing_dR4_em_Jet_rawEnergy",
203 "Jet_energyRing_dR0_neut_Jet_rawEnergy",
"Jet_energyRing_dR1_neut_Jet_rawEnergy",
"Jet_energyRing_dR2_neut_Jet_rawEnergy",
204 "Jet_energyRing_dR3_neut_Jet_rawEnergy",
"Jet_energyRing_dR4_neut_Jet_rawEnergy",
"Jet_energyRing_dR0_ch_Jet_rawEnergy",
205 "Jet_energyRing_dR1_ch_Jet_rawEnergy",
"Jet_energyRing_dR2_ch_Jet_rawEnergy",
"Jet_energyRing_dR3_ch_Jet_rawEnergy",
206 "Jet_energyRing_dR4_ch_Jet_rawEnergy",
"Jet_energyRing_dR0_mu_Jet_rawEnergy",
"Jet_energyRing_dR1_mu_Jet_rawEnergy",
207 "Jet_energyRing_dR2_mu_Jet_rawEnergy",
"Jet_energyRing_dR3_mu_Jet_rawEnergy",
"Jet_energyRing_dR4_mu_Jet_rawEnergy",
208 "Jet_chHEF",
"Jet_chEmEF",
"Jet_leptonPtRelInv",
"isEle",
"isMu",
"isOther",
"Jet_mass",
"Jet_ptd"]),
209 variables = cms.PSet(
210 Jet_pt = cms.string(
"pt*jecFactor('Uncorrected')"),
211 Jet_mt = cms.string(
"mt*jecFactor('Uncorrected')"),
212 Jet_eta = cms.string(
"eta"),
213 Jet_mass = cms.string(
"mass*jecFactor('Uncorrected')"),
214 Jet_ptd = cms.string(
"userFloat('ptD')"),
215 Jet_leadTrackPt = cms.string(
"userFloat('leadTrackPt')"),
216 Jet_vtxNtrk = cms.string(
"userInt('vtxNtrk')"),
217 Jet_vtxMass = cms.string(
"userFloat('vtxMass')"),
218 Jet_vtx3dL = cms.string(
"userFloat('vtx3dL')"),
219 Jet_vtx3deL = cms.string(
"userFloat('vtx3deL')"),
220 Jet_vtxPt = cms.string(
"userFloat('vtxPt')"),
221 Jet_leptonPtRel = cms.string(
"userFloat('leptonPtRelv0')"),
222 Jet_leptonPtRelInv = cms.string(
"userFloat('leptonPtRelInvv0')*jecFactor('Uncorrected')"),
223 Jet_leptonDeltaR = cms.string(
"userFloat('leptonDeltaR')"),
224 Jet_neHEF = cms.string(
"neutralHadronEnergyFraction()"),
225 Jet_neEmEF = cms.string(
"neutralEmEnergyFraction()"),
226 Jet_chHEF = cms.string(
"chargedHadronEnergyFraction()"),
227 Jet_chEmEF = cms.string(
"chargedEmEnergyFraction()"),
228 isMu = cms.string(
"?abs(userInt('leptonPdgId'))==13?1:0"),
229 isEle = cms.string(
"?abs(userInt('leptonPdgId'))==11?1:0"),
230 isOther = cms.string(
"?userInt('leptonPdgId')==0?1:0"),
232 inputTensorName = cms.string(
"ffwd_inp:0"),
233 outputTensorName = cms.string(
"ffwd_out/BiasAdd:0"),
234 outputNames = cms.vstring([
"corr",
"res"]),
235 outputFormulas = cms.vstring([
"at(0)*0.27912887930870056+1.0545977354049683",
"0.5*(at(2)-at(1))*0.27912887930870056"]),
238 cjetNN = cms.EDProducer(
"BJetEnergyRegressionMVA",
239 backend = cms.string(
"ONNX"),
240 batch_eval = cms.bool(
True),
242 src = cms.InputTag(
"linkedObjects",
"jets"),
243 pvsrc = cms.InputTag(
"offlineSlimmedPrimaryVertices"),
244 svsrc = cms.InputTag(
"slimmedSecondaryVertices"),
245 rhosrc = cms.InputTag(
"fixedGridRhoFastjetAll"),
247 weightFile = cms.FileInPath(
"PhysicsTools/NanoAOD/data/creg_training_2018.onnx"),
248 name = cms.string(
"JetRegNN"),
249 isClassifier = cms.bool(
False),
250 variablesOrder = cms.vstring([
"Jet_pt",
"Jet_eta",
"rho",
"Jet_mt",
"Jet_leadTrackPt",
"Jet_leptonPtRel",
"Jet_leptonDeltaR",
251 "Jet_neHEF",
"Jet_neEmEF",
"Jet_vtxPt",
"Jet_vtxMass",
"Jet_vtx3dL",
"Jet_vtxNtrk",
"Jet_vtx3deL",
252 "Jet_numDaughters_pt03",
"Jet_chEmEF",
"Jet_chHEF",
"Jet_ptd",
"Jet_mass",
253 "Jet_energyRing_dR0_em_Jet_rawEnergy",
"Jet_energyRing_dR1_em_Jet_rawEnergy",
254 "Jet_energyRing_dR2_em_Jet_rawEnergy",
"Jet_energyRing_dR3_em_Jet_rawEnergy",
"Jet_energyRing_dR4_em_Jet_rawEnergy",
255 "Jet_energyRing_dR0_neut_Jet_rawEnergy",
"Jet_energyRing_dR1_neut_Jet_rawEnergy",
"Jet_energyRing_dR2_neut_Jet_rawEnergy",
256 "Jet_energyRing_dR3_neut_Jet_rawEnergy",
"Jet_energyRing_dR4_neut_Jet_rawEnergy",
"Jet_energyRing_dR0_ch_Jet_rawEnergy",
257 "Jet_energyRing_dR1_ch_Jet_rawEnergy",
"Jet_energyRing_dR2_ch_Jet_rawEnergy",
"Jet_energyRing_dR3_ch_Jet_rawEnergy",
258 "Jet_energyRing_dR4_ch_Jet_rawEnergy",
"Jet_energyRing_dR0_mu_Jet_rawEnergy",
"Jet_energyRing_dR1_mu_Jet_rawEnergy",
259 "Jet_energyRing_dR2_mu_Jet_rawEnergy",
"Jet_energyRing_dR3_mu_Jet_rawEnergy",
"Jet_energyRing_dR4_mu_Jet_rawEnergy"]),
260 variables = cms.PSet(
261 Jet_pt = cms.string(
"pt*jecFactor('Uncorrected')"),
262 Jet_mt = cms.string(
"mt*jecFactor('Uncorrected')"),
263 Jet_eta = cms.string(
"eta"),
264 Jet_mass = cms.string(
"mass*jecFactor('Uncorrected')"),
265 Jet_ptd = cms.string(
"userFloat('ptD')"),
266 Jet_leadTrackPt = cms.string(
"userFloat('leadTrackPt')"),
267 Jet_vtxNtrk = cms.string(
"userInt('vtxNtrk')"),
268 Jet_vtxMass = cms.string(
"userFloat('vtxMass')"),
269 Jet_vtx3dL = cms.string(
"userFloat('vtx3dL')"),
270 Jet_vtx3deL = cms.string(
"userFloat('vtx3deL')"),
271 Jet_vtxPt = cms.string(
"userFloat('vtxPt')"),
272 Jet_leptonPtRel = cms.string(
"userFloat('leptonPtRelv0')"),
273 Jet_leptonPtRelInv = cms.string(
"userFloat('leptonPtRelInvv0')*jecFactor('Uncorrected')"),
274 Jet_leptonDeltaR = cms.string(
"userFloat('leptonDeltaR')"),
275 Jet_neHEF = cms.string(
"neutralHadronEnergyFraction()"),
276 Jet_neEmEF = cms.string(
"neutralEmEnergyFraction()"),
277 Jet_chHEF = cms.string(
"chargedHadronEnergyFraction()"),
278 Jet_chEmEF = cms.string(
"chargedEmEnergyFraction()"),
279 isMu = cms.string(
"?abs(userInt('leptonPdgId'))==13?1:0"),
280 isEle = cms.string(
"?abs(userInt('leptonPdgId'))==11?1:0"),
281 isOther = cms.string(
"?userInt('leptonPdgId')==0?1:0"),
283 inputTensorName = cms.string(
"ffwd_inp:0"),
284 outputTensorName = cms.string(
"ffwd_out/BiasAdd:0"),
285 outputNames = cms.vstring([
"corr",
"res"]),
286 outputFormulas = cms.vstring([
"at(0)*0.24325256049633026+0.993854820728302",
"0.5*(at(2)-at(1))*0.24325256049633026"]),
290 run2_jme_2016.toModify(
291 bjetNN, weightFile = cms.FileInPath(
"PhysicsTools/NanoAOD/data/breg_training_2016.onnx")
293 bjetNN,outputFormulas = cms.vstring([
"at(0)*0.31976690888404846+1.047176718711853",
"0.5*(at(2)-at(1))*0.31976690888404846"])
295 cjetNN, weightFile = cms.FileInPath(
"PhysicsTools/NanoAOD/data/creg_training_2016.onnx")
297 cjetNN, outputFormulas = cms.vstring([
"at(0)*0.28862622380256653+0.9908722639083862",
"0.5*(at(2)-at(1))*0.28862622380256653"])
300 run2_jme_2017.toModify(
301 bjetNN, weightFile = cms.FileInPath(
"PhysicsTools/NanoAOD/data/breg_training_2017.onnx")
303 bjetNN,outputFormulas = cms.vstring([
"at(0)*0.28225210309028625+1.055067777633667",
"0.5*(at(2)-at(1))*0.28225210309028625"])
305 cjetNN, weightFile = cms.FileInPath(
"PhysicsTools/NanoAOD/data/creg_training_2017.onnx")
307 cjetNN, outputFormulas = cms.vstring([
"at(0)*0.24718524515628815+0.9927206635475159",
"0.5*(at(2)-at(1))*0.24718524515628815"])
315 qgtagger=QGTagger.clone(srcJets=
"updatedJets",srcVertexCollection=
"offlineSlimmedPrimaryVertices")
321 pileupJetIdNano=pileupJetId.clone(jets=
"updatedJets",algos = cms.VPSet(_chsalgos_106X_UL18),inputIsCorrected=
True,applyJec=
False,vertexes=
"offlineSlimmedPrimaryVertices")
322 run2_jme_2017.toModify(
323 pileupJetIdNano, algos = _chsalgos_106X_UL17
325 (run2_jme_2016 & ~tracker_apv_vfp30_2016 ).toModify(
326 pileupJetIdNano, algos = _chsalgos_106X_UL16
328 (run2_jme_2016 & tracker_apv_vfp30_2016 ).toModify(
329 pileupJetIdNano, algos = _chsalgos_106X_UL16APV
339 _btagDiscriminators=[]
341 print(
"Updating process to run DeepCSV btag")
342 _btagDiscriminators += [
'pfDeepCSVJetTags:probb',
'pfDeepCSVJetTags:probbb',
'pfDeepCSVJetTags:probc']
344 print(
"Updating process to run DeepFlavour btag")
345 _btagDiscriminators += [
'pfDeepFlavourJetTags:probb',
'pfDeepFlavourJetTags:probbb',
'pfDeepFlavourJetTags:problepb',
'pfDeepFlavourJetTags:probc']
346 if len(_btagDiscriminators)==0:
return process
347 print(
"Will recalculate the following discriminators: "+
", ".
join(_btagDiscriminators))
350 jetSource = cms.InputTag(
'slimmedJets'),
351 jetCorrections = (
'AK4PFchs', cms.vstring([
'L1FastJet',
'L2Relative',
'L3Absolute',
'L2L3Residual']),
'None'),
352 btagDiscriminators = _btagDiscriminators,
353 postfix =
'WithDeepInfo',
355 process.load(
"Configuration.StandardSequences.MagneticField_cff")
356 process.jetCorrFactorsNano.src=
"selectedUpdatedPatJetsWithDeepInfo" 357 process.updatedJets.jetSource=
"selectedUpdatedPatJetsWithDeepInfo" 360 nanoAOD_addDeepInfoAK4CHS_switch = cms.PSet(
361 nanoAOD_addDeepBTag_switch = cms.untracked.bool(
False),
362 nanoAOD_addDeepFlavourTag_switch = cms.untracked.bool(
False),
372 from Configuration.Eras.Modifier_fastSim_cff
import fastSim
375 fastSim.toModify( process.jetTable.variables,
376 btagDeepFlavBunrefined = process.jetTable.variables.btagDeepFlavB.clone(),
377 btagDeepFlavCvBunrefined = process.jetTable.variables.btagDeepFlavCvB.clone(),
378 btagDeepFlavCvLunrefined = process.jetTable.variables.btagDeepFlavCvL.clone(),
379 btagDeepFlavQGunrefined = process.jetTable.variables.btagDeepFlavQG.clone(),
382 fastSim.toModify( process.jetTable.variables,
383 btagDeepFlavB =
None,
384 btagDeepFlavCvB =
None,
385 btagDeepFlavCvL =
None,
386 btagDeepFlavQG =
None,
389 fastSim.toModify( process.jetTable.externalVariables,
390 btagDeepFlavB =
ExtVar(cms.InputTag(
"btagDeepFlavRefineNN:btagDeepFlavBrefined"), float, doc=
"DeepJet b+bb+lepb tag discriminator", precision=10),
391 btagDeepFlavCvB =
ExtVar(cms.InputTag(
"btagDeepFlavRefineNN:btagDeepFlavCvBrefined"), float, doc=
"DeepJet c vs b+bb+lepb discriminator", precision=10),
392 btagDeepFlavCvL =
ExtVar(cms.InputTag(
"btagDeepFlavRefineNN:btagDeepFlavCvLrefined"), float, doc=
"DeepJet c vs uds+g discriminator", precision=10),
393 btagDeepFlavQG =
ExtVar(cms.InputTag(
"btagDeepFlavRefineNN:btagDeepFlavQGrefined"), float, doc=
"DeepJet g vs uds discriminator", precision=10),
396 process.btagDeepFlavRefineNN= cms.EDProducer(
"JetBaseMVAValueMapProducer",
397 backend = cms.string(
"ONNX"),
398 batch_eval = cms.bool(
True),
399 disableONNXGraphOpt = cms.bool(
True),
401 src = cms.InputTag(
"linkedObjects",
"jets"),
403 weightFile=cms.FileInPath(
"PhysicsTools/NanoAOD/data/btagDeepFlavRefineNN_CHS.onnx"),
404 name = cms.string(
"btagDeepFlavRefineNN"),
406 isClassifier = cms.bool(
False),
407 variablesOrder = cms.vstring([
"GenJet_pt",
"GenJet_eta",
"Jet_hadronFlavour",
408 "Jet_btagDeepFlavB",
"Jet_btagDeepFlavCvB",
"Jet_btagDeepFlavCvL",
"Jet_btagDeepFlavQG"]),
409 variables = cms.PSet(
410 GenJet_pt = cms.string(
"?genJetFwdRef().backRef().isNonnull()?genJetFwdRef().backRef().pt():pt"),
411 GenJet_eta = cms.string(
"?genJetFwdRef().backRef().isNonnull()?genJetFwdRef().backRef().eta():eta"),
412 Jet_hadronFlavour = cms.string(
"hadronFlavour()"),
413 Jet_btagDeepFlavB = cms.string(
"bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb')"),
414 Jet_btagDeepFlavCvB = cms.string(
"?(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb'))>0?bDiscriminator('pfDeepFlavourJetTags:probc')/(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb')):-1"),
415 Jet_btagDeepFlavCvL = cms.string(
"?(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probuds')+bDiscriminator('pfDeepFlavourJetTags:probg'))>0?bDiscriminator('pfDeepFlavourJetTags:probc')/(bDiscriminator('pfDeepFlavourJetTags:probc')+bDiscriminator('pfDeepFlavourJetTags:probuds')+bDiscriminator('pfDeepFlavourJetTags:probg')):-1"),
416 Jet_btagDeepFlavQG = cms.string(
"?(bDiscriminator('pfDeepFlavourJetTags:probg')+bDiscriminator('pfDeepFlavourJetTags:probuds'))>0?bDiscriminator('pfDeepFlavourJetTags:probg')/(bDiscriminator('pfDeepFlavourJetTags:probg')+bDiscriminator('pfDeepFlavourJetTags:probuds')):-1"),
418 inputTensorName = cms.string(
"input"),
419 outputTensorName = cms.string(
"output"),
420 outputNames = cms.vstring([
"btagDeepFlavBrefined",
"btagDeepFlavCvBrefined",
"btagDeepFlavCvLrefined",
"btagDeepFlavQGrefined"]),
421 outputFormulas = cms.vstring([
"at(0)",
"at(1)",
"at(2)",
"at(3)"]),
424 fastSim.toModify(process.jetTablesTask, process.jetTablesTask.add(process.btagDeepFlavRefineNN))
432 basicJetsForMetForT1METNano = cms.EDProducer(
"PATJetCleanerForType1MET",
433 src = updatedJetsWithUserData.src,
434 jetCorrEtaMax = cms.double(9.9),
435 jetCorrLabel = cms.InputTag(
"L3Absolute"),
436 jetCorrLabelRes = cms.InputTag(
"L2L3Residual"),
437 offsetCorrLabel = cms.InputTag(
"L1FastJet"),
438 skipEM = cms.bool(
False),
439 skipEMfractionThreshold = cms.double(0.9),
440 skipMuonSelection = cms.string(
'isGlobalMuon | isStandAloneMuon'),
441 skipMuons = cms.bool(
True),
442 type1JetPtThreshold = cms.double(0.0),
443 calcMuonSubtrRawPtAsValueMap = cms.bool(
True)
446 updatedJetsWithUserData.userFloats.muonSubtrRawPt = cms.InputTag(
"basicJetsForMetForT1METNano:MuonSubtrRawPt")
448 corrT1METJetTable = simpleCandidateFlatTableProducer.clone(
450 cut = cms.string(
"pt<15 && abs(eta)<9.9"),
451 name = cms.string(
"CorrT1METJet"),
452 doc = cms.string(
"Additional low-pt ak4 CHS jets for Type-1 MET re-correction"),
453 variables = cms.PSet(
454 rawPt =
Var(
"pt()*jecFactor('Uncorrected')",float,precision=10),
455 eta =
Var(
"eta", float,precision=12),
456 phi =
Var(
"phi", float, precision=12),
457 area =
Var(
"jetArea()", float, doc=
"jet catchment area, for JECs",precision=10),
461 corrT1METJetTable.variables.muonSubtrFactor =
Var(
"1-userFloat('muonSubtrRawPt')/(pt()*jecFactor('Uncorrected'))",float,doc=
"1-(muon-subtracted raw pt)/(raw pt)",precision=6)
462 jetTable.variables.muonSubtrFactor =
Var(
"1-userFloat('muonSubtrRawPt')/(pt()*jecFactor('Uncorrected'))",float,doc=
"1-(muon-subtracted raw pt)/(raw pt)",precision=6)
464 jetForMETTask = cms.Task(basicJetsForMetForT1METNano,corrT1METJetTable)
467 jetUserDataTask = cms.Task(bJetVars,qgtagger,jercVars,tightJetId,tightJetIdLepVeto,pileupJetIdNano)
470 jetTask = cms.Task(jetCorrFactorsNano,updatedJets,jetUserDataTask,updatedJetsWithUserData,finalJets)
473 jetTablesTask = cms.Task(bjetNN,cjetNN,jetTable)
def ExtVar(tag, valtype, doc=None, precision=-1)
def Var(expr, valtype, doc=None, precision=-1)
def nanoAOD_refineFastSim_bTagDeepFlav(process)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
static std::string join(char **cmd)
def nanoAOD_addDeepInfoAK4CHS(process, addDeepBTag, addDeepFlavour)