1 import FWCore.ParameterSet.Config
as cms
5 from PhysicsTools.NanoAOD.simplePATJetFlatTableProducer_cfi
import simplePATJetFlatTableProducer
10 jetCorrFactorsAK8 = patJetCorrFactors.clone(src=
'slimmedJetsAK8',
11 levels = cms.vstring(
'L1FastJet',
15 payload = cms.string(
'AK8PFPuppi'),
16 primaryVertices = cms.InputTag(
"offlineSlimmedPrimaryVertices"),
20 updatedJetsAK8 = updatedPatJets.clone(
22 jetSource=
'slimmedJetsAK8',
23 jetCorrFactorsSource=cms.VInputTag(cms.InputTag(
"jetCorrFactorsAK8") ),
26 updatedJetsAK8WithUserData = cms.EDProducer(
"PATJetUserDataEmbedder",
27 src = cms.InputTag(
"updatedJetsAK8"),
28 userFloats = cms.PSet(),
29 userInts = cms.PSet(),
32 finalJetsAK8 = cms.EDFilter(
"PATJetRefSelector",
33 src = cms.InputTag(
"updatedJetsAK8WithUserData"),
34 cut = cms.string(
"pt > 170")
38 lepInAK8JetVars = cms.EDProducer(
"LepInJetProducer",
39 src = cms.InputTag(
"updatedJetsAK8WithUserData"),
40 srcEle = cms.InputTag(
"finalElectrons"),
41 srcMu = cms.InputTag(
"finalMuons")
44 fatJetTable = simplePATJetFlatTableProducer.clone(
45 src = cms.InputTag(
"finalJetsAK8"),
46 cut = cms.string(
" pt > 170"),
47 name = cms.string(
"FatJet"),
48 doc = cms.string(
"slimmedJetsAK8, i.e. ak8 fat jets for boosted analysis"),
49 variables = cms.PSet(P4Vars,
50 area =
Var(
"jetArea()", float, doc=
"jet catchment area, for JECs",precision=10),
51 rawFactor =
Var(
"1.-jecFactor('Uncorrected')",float,doc=
"1 - Factor to get back to raw pT",precision=6),
52 tau1 =
Var(
"userFloat('NjettinessAK8Puppi:tau1')",float, doc=
"Nsubjettiness (1 axis)",precision=10),
53 tau2 =
Var(
"userFloat('NjettinessAK8Puppi:tau2')",float, doc=
"Nsubjettiness (2 axis)",precision=10),
54 tau3 =
Var(
"userFloat('NjettinessAK8Puppi:tau3')",float, doc=
"Nsubjettiness (3 axis)",precision=10),
55 tau4 =
Var(
"userFloat('NjettinessAK8Puppi:tau4')",float, doc=
"Nsubjettiness (4 axis)",precision=10),
56 n2b1 =
Var(
"?hasUserFloat('nb1AK8PuppiSoftDrop:ecfN2')?userFloat('nb1AK8PuppiSoftDrop:ecfN2'):-99999.", float, doc=
"N2 with beta=1 (for jets with raw pT>250 GeV)", precision=10),
57 n3b1 =
Var(
"?hasUserFloat('nb1AK8PuppiSoftDrop:ecfN3')?userFloat('nb1AK8PuppiSoftDrop:ecfN3'):-99999.", float, doc=
"N3 with beta=1 (for jets with raw pT>250 GeV)", precision=10),
58 msoftdrop =
Var(
"groomedMass('SoftDropPuppi')",float, doc=
"Corrected soft drop mass with PUPPI",precision=10),
59 globalParT3_Xbb =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probXbb')",float,doc=
"Mass-decorrelated GlobalParT-3 X->bb score. Note: For sig vs bkg (e.g. bkg=QCD) tagging, use sig/(sig+bkg) to construct the discriminator",precision=10),
60 globalParT3_Xcc =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probXcc')",float,doc=
"Mass-decorrelated GlobalParT-3 X->cc score",precision=10),
61 globalParT3_Xcs =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probXcs')",float,doc=
"Mass-decorrelated GlobalParT-3 X->cs score",precision=10),
62 globalParT3_Xqq =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probXqq')",float,doc=
"Mass-decorrelated GlobalParT-3 X->qq (ss/dd/uu) score",precision=10),
63 globalParT3_Xtauhtaue =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probXtauhtaue')",float,doc=
"Mass-decorrelated GlobalParT-3 X->tauhtaue score",precision=10),
64 globalParT3_Xtauhtaum =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probXtauhtaum')",float,doc=
"Mass-decorrelated GlobalParT-3 X->tauhtaum score",precision=10),
65 globalParT3_Xtauhtauh =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probXtauhtauh')",float,doc=
"Mass-decorrelated GlobalParT-3 X->tauhtauh score",precision=10),
66 globalParT3_XWW4q =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probXWW4q')",float,doc=
"Mass-decorrelated GlobalParT-3 X->WW4q score",precision=10),
67 globalParT3_XWW3q =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probXWW3q')",float,doc=
"Mass-decorrelated GlobalParT-3 X->WW3q score",precision=10),
68 globalParT3_XWWqqev =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probXWWqqev')",float,doc=
"Mass-decorrelated GlobalParT-3 X->WWqqev score",precision=10),
69 globalParT3_XWWqqmv =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probXWWqqmv')",float,doc=
"Mass-decorrelated GlobalParT-3 X->WWqqmv score",precision=10),
70 globalParT3_TopbWqq =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probTopbWqq')",float,doc=
"Mass-decorrelated GlobalParT-3 Top->bWqq score",precision=10),
71 globalParT3_TopbWq =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probTopbWq')",float,doc=
"Mass-decorrelated GlobalParT-3 Top->bWq score",precision=10),
72 globalParT3_TopbWev =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probTopbWev')",float,doc=
"Mass-decorrelated GlobalParT-3 Top->bWev score",precision=10),
73 globalParT3_TopbWmv =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probTopbWmv')",float,doc=
"Mass-decorrelated GlobalParT-3 Top->bWmv score",precision=10),
74 globalParT3_TopbWtauhv =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probTopbWtauhv')",float,doc=
"Mass-decorrelated GlobalParT-3 Top->bWtauhv score",precision=10),
75 globalParT3_QCD =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probQCD')",float,doc=
"Mass-decorrelated GlobalParT-3 QCD score.",precision=10),
76 globalParT3_massCorrX2p =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:massCorrX2p')",float,doc=
"GlobalParT-3 mass regression corrector with respect to the original jet mass, optimised for resonance 2-prong (bb/cc/cs/ss/qq) jets. Use (massCorrX2p * mass * (1 - rawFactor)) to get the regressed mass",precision=10),
77 globalParT3_massCorrGeneric =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:massCorrGeneric')",float,doc=
"GlobalParT-3 mass regression corrector with respect to the original jet mass, optimised for generic jet cases. Use (massCorrGeneric * mass * (1 - rawFactor)) to get the regressed mass",precision=10),
78 globalParT3_withMassTopvsQCD =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probWithMassTopvsQCD')",float,doc=
"GlobalParT-3 tagger (w/mass) Top vs QCD discriminator",precision=10),
79 globalParT3_withMassWvsQCD =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probWithMassWvsQCD')",float,doc=
"GlobalParT-3 tagger (w/mass) W vs QCD discriminator",precision=10),
80 globalParT3_withMassZvsQCD =
Var(
"bDiscriminator('pfGlobalParticleTransformerAK8JetTags:probWithMassZvsQCD')",float,doc=
"GlobalParT-3 tagger (w/mass) Z vs QCD discriminator",precision=10),
81 particleNetWithMass_QCD =
Var(
"bDiscriminator('pfParticleNetJetTags:probQCDbb')+bDiscriminator('pfParticleNetJetTags:probQCDcc')+bDiscriminator('pfParticleNetJetTags:probQCDb')+bDiscriminator('pfParticleNetJetTags:probQCDc')+bDiscriminator('pfParticleNetJetTags:probQCDothers')",float,doc=
"ParticleNet tagger (w/ mass) QCD(bb,cc,b,c,others) sum",precision=10),
82 particleNetWithMass_TvsQCD =
Var(
"bDiscriminator('pfParticleNetDiscriminatorsJetTags:TvsQCD')",float,doc=
"ParticleNet tagger (w/ mass) top vs QCD discriminator",precision=10),
83 particleNetWithMass_WvsQCD =
Var(
"bDiscriminator('pfParticleNetDiscriminatorsJetTags:WvsQCD')",float,doc=
"ParticleNet tagger (w/ mass) W vs QCD discriminator",precision=10),
84 particleNetWithMass_ZvsQCD =
Var(
"bDiscriminator('pfParticleNetDiscriminatorsJetTags:ZvsQCD')",float,doc=
"ParticleNet tagger (w/ mass) Z vs QCD discriminator",precision=10),
85 particleNetWithMass_H4qvsQCD =
Var(
"bDiscriminator('pfParticleNetDiscriminatorsJetTags:H4qvsQCD')",float,doc=
"ParticleNet tagger (w/ mass) H(->VV->qqqq) vs QCD discriminator",precision=10),
86 particleNetWithMass_HbbvsQCD =
Var(
"bDiscriminator('pfParticleNetDiscriminatorsJetTags:HbbvsQCD')",float,doc=
"ParticleNet tagger (w/mass) H(->bb) vs QCD discriminator",precision=10),
87 particleNetWithMass_HccvsQCD =
Var(
"bDiscriminator('pfParticleNetDiscriminatorsJetTags:HccvsQCD')",float,doc=
"ParticleNet tagger (w/mass) H(->cc) vs QCD discriminator",precision=10),
88 particleNet_QCD =
Var(
"bDiscriminator('pfParticleNetFromMiniAODAK8JetTags:probQCD2hf')+bDiscriminator('pfParticleNetFromMiniAODAK8JetTags:probQCD1hf')+bDiscriminator('pfParticleNetFromMiniAODAK8JetTags:probQCD0hf')",float,doc=
"ParticleNet tagger QCD(0+1+2HF) sum",precision=10),
89 particleNet_QCD2HF =
Var(
"bDiscriminator('pfParticleNetFromMiniAODAK8JetTags:probQCD2hf')",float,doc=
"ParticleNet tagger QCD 2 HF (b/c) score",precision=10),
90 particleNet_QCD1HF =
Var(
"bDiscriminator('pfParticleNetFromMiniAODAK8JetTags:probQCD1hf')",float,doc=
"ParticleNet tagger QCD 1 HF (b/c) score",precision=10),
91 particleNet_QCD0HF =
Var(
"bDiscriminator('pfParticleNetFromMiniAODAK8JetTags:probQCD0hf')",float,doc=
"ParticleNet tagger QCD 0 HF (b/c) score",precision=10),
92 particleNet_massCorr =
Var(
"bDiscriminator('pfParticleNetFromMiniAODAK8JetTags:masscorr')",float,doc=
"ParticleNet mass regression, relative correction to JEC-corrected jet mass (no softdrop)",precision=10),
93 particleNet_XbbVsQCD =
Var(
"bDiscriminator('pfParticleNetFromMiniAODAK8DiscriminatorsJetTags:HbbvsQCD')",float,doc=
"ParticleNet X->bb vs. QCD score: Xbb/(Xbb+QCD)",precision=10),
94 particleNet_XccVsQCD =
Var(
"bDiscriminator('pfParticleNetFromMiniAODAK8DiscriminatorsJetTags:HccvsQCD')",float,doc=
"ParticleNet X->cc vs. QCD score: Xcc/(Xcc+QCD)",precision=10),
95 particleNet_XqqVsQCD =
Var(
"bDiscriminator('pfParticleNetFromMiniAODAK8DiscriminatorsJetTags:HqqvsQCD')",float,doc=
"ParticleNet X->qq (uds) vs. QCD score: Xqq/(Xqq+QCD)",precision=10),
96 particleNet_XggVsQCD =
Var(
"bDiscriminator('pfParticleNetFromMiniAODAK8DiscriminatorsJetTags:HggvsQCD')",float,doc=
"ParticleNet X->gg vs. QCD score: Xgg/(Xgg+QCD)",precision=10),
97 particleNet_XttVsQCD =
Var(
"bDiscriminator('pfParticleNetFromMiniAODAK8DiscriminatorsJetTags:HttvsQCD')",float,doc=
"ParticleNet X->tau_h tau_h vs. QCD score: Xtt/(Xtt+QCD)",precision=10),
98 particleNet_XtmVsQCD =
Var(
"bDiscriminator('pfParticleNetFromMiniAODAK8DiscriminatorsJetTags:HtmvsQCD')",float,doc=
"ParticleNet X->mu tau_h vs. QCD score: Xtm/(Xtm+QCD)",precision=10),
99 particleNet_XteVsQCD =
Var(
"bDiscriminator('pfParticleNetFromMiniAODAK8DiscriminatorsJetTags:HtevsQCD')",float,doc=
"ParticleNet X->e tau_h vs. QCD score: Xte/(Xte+QCD)",precision=10),
100 particleNet_WVsQCD =
Var(
"bDiscriminator('pfParticleNetFromMiniAODAK8DiscriminatorsJetTags:WvsQCD')",float,doc=
"ParticleNet W->qq vs. QCD score: Xqq+Xcc/(Xqq+Xcc+QCD)",precision=10),
101 particleNetLegacy_mass =
Var(
"bDiscriminator('pfParticleNetMassRegressionJetTags:mass')",float,doc=
"ParticleNet Legacy Run-2 mass regression",precision=10),
102 particleNetLegacy_Xbb =
Var(
"bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probXbb')",float,doc=
"Mass-decorrelated ParticleNet Legacy Run-2 tagger raw X->bb score. For X->bb vs QCD tagging, use Xbb/(Xbb+QCD)",precision=10),
103 particleNetLegacy_Xcc =
Var(
"bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probXcc')",float,doc=
"Mass-decorrelated ParticleNet Legacy Run-2 tagger raw X->cc score. For X->cc vs QCD tagging, use Xcc/(Xcc+QCD)",precision=10),
104 particleNetLegacy_Xqq =
Var(
"bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probXqq')",float,doc=
"Mass-decorrelated ParticleNet Legacy Run-2 tagger raw X->qq (uds) score. For X->qq vs QCD tagging, use Xqq/(Xqq+QCD). For W vs QCD tagging, use (Xcc+Xqq)/(Xcc+Xqq+QCD)",precision=10),
105 particleNetLegacy_QCD =
Var(
"bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDbb')+bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDcc')+bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDb')+bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDc')+bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDothers')",float,doc=
"Mass-decorrelated ParticleNet Legacy Run-2 tagger raw QCD score",precision=10),
106 subJetIdx1 =
Var(
"?nSubjetCollections()>0 && subjets('SoftDropPuppi').size()>0?subjets('SoftDropPuppi')[0].key():-1",
"int16",
107 doc=
"index of first subjet"),
108 subJetIdx2 =
Var(
"?nSubjetCollections()>0 && subjets('SoftDropPuppi').size()>1?subjets('SoftDropPuppi')[1].key():-1",
"int16",
109 doc=
"index of second subjet"),
110 nConstituents =
Var(
"numberOfDaughters()",
"uint8",doc=
"Number of particles in the jet"),
111 chMultiplicity =
Var(
"?isPFJet()?chargedMultiplicity():-1",
"int16",doc=
"(Puppi-weighted) Number of charged particles in the jet"),
112 neMultiplicity =
Var(
"?isPFJet()?neutralMultiplicity():-1",
"int16",doc=
"(Puppi-weighted) Number of neutral particles in the jet"),
113 chHEF =
Var(
"?isPFJet()?chargedHadronEnergyFraction():-1", float, doc=
"charged Hadron Energy Fraction", precision=10),
114 neHEF =
Var(
"?isPFJet()?neutralHadronEnergyFraction():-1", float, doc=
"neutral Hadron Energy Fraction", precision=10),
115 chEmEF =
Var(
"?isPFJet()?chargedEmEnergyFraction():-1", float, doc=
"charged Electromagnetic Energy Fraction", precision=10),
116 neEmEF =
Var(
"?isPFJet()?neutralEmEnergyFraction():-1", float, doc=
"neutral Electromagnetic Energy Fraction", precision=10),
117 hfHEF =
Var(
"?isPFJet()?HFHadronEnergyFraction():-1",float,doc=
"hadronic Energy Fraction in HF",precision=10),
118 hfEmEF =
Var(
"?isPFJet()?HFEMEnergyFraction():-1",float,doc=
"electromagnetic Energy Fraction in HF",precision=10),
119 muEF =
Var(
"?isPFJet()?muonEnergyFraction():-1", float, doc=
"muon Energy Fraction", precision=10),
121 externalVariables = cms.PSet(
122 lsf3 =
ExtVar(cms.InputTag(
"lepInAK8JetVars:lsf3"),float, doc=
"Lepton Subjet Fraction (3 subjets)",precision=10),
123 muonIdx3SJ =
ExtVar(cms.InputTag(
"lepInAK8JetVars:muIdx3SJ"),
"int16", doc=
"index of muon matched to jet"),
124 electronIdx3SJ =
ExtVar(cms.InputTag(
"lepInAK8JetVars:eleIdx3SJ"),
"int16",doc=
"index of electron matched to jet"),
128 run2_nanoAOD_ANY.toModify(
129 fatJetTable.variables,
130 btagCSVV2 =
Var(
"bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=
" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10),
132 chMultiplicity =
None,
133 neMultiplicity =
None,
141 (run2_nanoAOD_106Xv2).toModify(
142 fatJetTable.variables,
144 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),
145 btagHbb =
Var(
"bDiscriminator('pfBoostedDoubleSecondaryVertexAK8BJetTags')",float,doc=
"Higgs to BB tagger discriminator",precision=10),
146 btagDDBvLV2 =
Var(
"bDiscriminator('pfMassIndependentDeepDoubleBvLV2JetTags:probHbb')",float,doc=
"DeepDoubleX V2(mass-decorrelated) discriminator for H(Z)->bb vs QCD",precision=10),
147 btagDDCvLV2 =
Var(
"bDiscriminator('pfMassIndependentDeepDoubleCvLV2JetTags:probHcc')",float,doc=
"DeepDoubleX V2 (mass-decorrelated) discriminator for H(Z)->cc vs QCD",precision=10),
148 btagDDCvBV2 =
Var(
"bDiscriminator('pfMassIndependentDeepDoubleCvBV2JetTags:probHcc')",float,doc=
"DeepDoubleX V2 (mass-decorrelated) discriminator for H(Z)->cc vs H(Z)->bb",precision=10),
149 deepTag_TvsQCD =
Var(
"bDiscriminator('pfDeepBoostedDiscriminatorsJetTags:TvsQCD')",float,doc=
"DeepBoostedJet tagger top vs QCD discriminator",precision=10),
150 deepTag_WvsQCD =
Var(
"bDiscriminator('pfDeepBoostedDiscriminatorsJetTags:WvsQCD')",float,doc=
"DeepBoostedJet tagger W vs QCD discriminator",precision=10),
151 deepTag_ZvsQCD =
Var(
"bDiscriminator('pfDeepBoostedDiscriminatorsJetTags:ZvsQCD')",float,doc=
"DeepBoostedJet tagger Z vs QCD discriminator",precision=10),
152 deepTag_H =
Var(
"bDiscriminator('pfDeepBoostedJetTags:probHbb')+bDiscriminator('pfDeepBoostedJetTags:probHcc')+bDiscriminator('pfDeepBoostedJetTags:probHqqqq')",float,doc=
"DeepBoostedJet tagger H(bb,cc,4q) sum",precision=10),
153 deepTag_QCD =
Var(
"bDiscriminator('pfDeepBoostedJetTags:probQCDbb')+bDiscriminator('pfDeepBoostedJetTags:probQCDcc')+bDiscriminator('pfDeepBoostedJetTags:probQCDb')+bDiscriminator('pfDeepBoostedJetTags:probQCDc')+bDiscriminator('pfDeepBoostedJetTags:probQCDothers')",float,doc=
"DeepBoostedJet tagger QCD(bb,cc,b,c,others) sum",precision=10),
154 deepTag_QCDothers =
Var(
"bDiscriminator('pfDeepBoostedJetTags:probQCDothers')",float,doc=
"DeepBoostedJet tagger QCDothers value",precision=10),
155 deepTagMD_TvsQCD =
Var(
"bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:TvsQCD')",float,doc=
"Mass-decorrelated DeepBoostedJet tagger top vs QCD discriminator",precision=10),
156 deepTagMD_WvsQCD =
Var(
"bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:WvsQCD')",float,doc=
"Mass-decorrelated DeepBoostedJet tagger W vs QCD discriminator",precision=10),
157 deepTagMD_ZvsQCD =
Var(
"bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZvsQCD')",float,doc=
"Mass-decorrelated DeepBoostedJet tagger Z vs QCD discriminator",precision=10),
158 deepTagMD_ZHbbvsQCD =
Var(
"bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZHbbvsQCD')",float,doc=
"Mass-decorrelated DeepBoostedJet tagger Z/H->bb vs QCD discriminator",precision=10),
159 deepTagMD_ZbbvsQCD =
Var(
"bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZbbvsQCD')",float,doc=
"Mass-decorrelated DeepBoostedJet tagger Z->bb vs QCD discriminator",precision=10),
160 deepTagMD_HbbvsQCD =
Var(
"bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:HbbvsQCD')",float,doc=
"Mass-decorrelated DeepBoostedJet tagger H->bb vs QCD discriminator",precision=10),
161 deepTagMD_ZHccvsQCD =
Var(
"bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZHccvsQCD')",float,doc=
"Mass-decorrelated DeepBoostedJet tagger Z/H->cc vs QCD discriminator",precision=10),
162 deepTagMD_H4qvsQCD =
Var(
"bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:H4qvsQCD')",float,doc=
"Mass-decorrelated DeepBoostedJet tagger H->4q vs QCD discriminator",precision=10),
163 deepTagMD_bbvsLight =
Var(
"bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:bbvsLight')",float,doc=
"Mass-decorrelated DeepBoostedJet tagger Z/H/gluon->bb vs light flavour discriminator",precision=10),
164 deepTagMD_ccvsLight =
Var(
"bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ccvsLight')",float,doc=
"Mass-decorrelated DeepBoostedJet tagger Z/H/gluon->cc vs light flavour discriminator",precision=10),
172 def nanoAOD_addDeepInfoAK8(process, addDeepBTag, addDeepBoostedJet, addDeepDoubleX, addDeepDoubleXV2, addParticleNetMassLegacy, addParticleNet, addGlobalParT, jecPayload):
173 _btagDiscriminators=[]
175 print(
"Updating process to run DeepCSV btag to AK8 jets")
176 _btagDiscriminators += [
'pfDeepCSVJetTags:probb',
'pfDeepCSVJetTags:probbb']
177 if addDeepBoostedJet:
178 print(
"Updating process to run DeepBoostedJet on datasets before 103X")
180 _btagDiscriminators += pfDeepBoostedJetTagsAll
182 print(
"Updating process to run GlobalParT")
184 _btagDiscriminators += pfGlobalParticleTransformerAK8JetTagsAll
186 print(
"Updating process to run ParticleNet joint classification and mass regression")
187 from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK8_cff
import _pfParticleNetFromMiniAODAK8JetTagsAll
as pfParticleNetFromMiniAODAK8JetTagsAll
188 _btagDiscriminators += pfParticleNetFromMiniAODAK8JetTagsAll
189 if addParticleNetMassLegacy:
191 _btagDiscriminators += _pfParticleNetMassRegressionOutputs
193 print(
"Updating process to run DeepDoubleX on datasets before 104X")
194 _btagDiscriminators += [
'pfDeepDoubleBvLJetTags:probHbb', \
195 'pfDeepDoubleCvLJetTags:probHcc', \
196 'pfDeepDoubleCvBJetTags:probHcc', \
197 'pfMassIndependentDeepDoubleBvLJetTags:probHbb',
'pfMassIndependentDeepDoubleCvLJetTags:probHcc',
'pfMassIndependentDeepDoubleCvBJetTags:probHcc']
199 print(
"Updating process to run DeepDoubleXv2 on datasets before 11X")
200 _btagDiscriminators += [
201 'pfMassIndependentDeepDoubleBvLV2JetTags:probHbb',
202 'pfMassIndependentDeepDoubleCvLV2JetTags:probHcc',
203 'pfMassIndependentDeepDoubleCvBV2JetTags:probHcc' 205 if len(_btagDiscriminators)==0:
return process
206 print(
"Will recalculate the following discriminators on AK8 jets: "+
", ".
join(_btagDiscriminators))
209 jetSource = cms.InputTag(
'slimmedJetsAK8'),
210 pvSource = cms.InputTag(
'offlineSlimmedPrimaryVertices'),
211 svSource = cms.InputTag(
'slimmedSecondaryVertices'),
213 jetCorrections = (jecPayload.value(), cms.vstring([
'L1FastJet',
'L2Relative',
'L3Absolute',
'L2L3Residual']),
'None'),
214 btagDiscriminators = _btagDiscriminators,
215 postfix=
'AK8WithDeepInfo',
218 process.jetCorrFactorsAK8.src=
"selectedUpdatedPatJetsAK8WithDeepInfo" 219 process.updatedJetsAK8.jetSource=
"selectedUpdatedPatJetsAK8WithDeepInfo" 222 nanoAOD_addDeepInfoAK8_switch = cms.PSet(
223 nanoAOD_addDeepBTag_switch = cms.untracked.bool(
False),
224 nanoAOD_addDeepBoostedJet_switch = cms.untracked.bool(
False),
225 nanoAOD_addDeepDoubleX_switch = cms.untracked.bool(
False),
226 nanoAOD_addDeepDoubleXV2_switch = cms.untracked.bool(
False),
227 nanoAOD_addParticleNetMassLegacy_switch = cms.untracked.bool(
False),
228 nanoAOD_addParticleNet_switch = cms.untracked.bool(
False),
229 nanoAOD_addGlobalParT_switch = cms.untracked.bool(
False),
230 jecPayload = cms.untracked.string(
'AK8PFPuppi')
236 run2_nanoAOD_106Xv2.toModify(
237 nanoAOD_addDeepInfoAK8_switch,
238 nanoAOD_addParticleNetMassLegacy_switch =
True,
239 nanoAOD_addParticleNet_switch =
True,
240 nanoAOD_addGlobalParT_switch =
True,
247 subJetTable = simplePATJetFlatTableProducer.clone(
248 src = cms.InputTag(
"slimmedJetsAK8PFPuppiSoftDropPacked",
"SubJets"),
249 name = cms.string(
"SubJet"),
250 doc = cms.string(
"slimmedJetsAK8PFPuppiSoftDropPacked::SubJets, i.e. soft-drop subjets for ak8 fat jets for boosted analysis"),
251 variables = cms.PSet(P4Vars,
252 btagDeepFlavB =
Var(
"bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb')",float,doc=
"DeepJet b+bb+lepb tag discriminator",precision=10),
253 btagUParTAK4B =
Var(
"?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:BvsAll')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:BvsAll'):-1",float,precision=10,doc=
"UnifiedParT b vs. udscg"),
254 rawFactor =
Var(
"1.-jecFactor('Uncorrected')",float,doc=
"1 - Factor to get back to raw pT",precision=6),
255 area =
Var(
"jetArea()", float, doc=
"jet catchment area, for JECs",precision=10),
256 tau1 =
Var(
"userFloat('NjettinessAK8Subjets:tau1')",float, doc=
"Nsubjettiness (1 axis)",precision=10),
257 tau2 =
Var(
"userFloat('NjettinessAK8Subjets:tau2')",float, doc=
"Nsubjettiness (2 axis)",precision=10),
258 tau3 =
Var(
"userFloat('NjettinessAK8Subjets:tau3')",float, doc=
"Nsubjettiness (3 axis)",precision=10),
259 tau4 =
Var(
"userFloat('NjettinessAK8Subjets:tau4')",float, doc=
"Nsubjettiness (4 axis)",precision=10),
260 n2b1 =
Var(
"userFloat('nb1AK8PuppiSoftDropSubjets:ecfN2')", float, doc=
"N2 with beta=1", precision=10),
261 n3b1 =
Var(
"userFloat('nb1AK8PuppiSoftDropSubjets:ecfN3')", float, doc=
"N3 with beta=1", precision=10),
265 run2_nanoAOD_ANY.toModify(
266 subJetTable.variables,
267 btagCSVV2 =
Var(
"bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=
" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10)
270 (run2_nanoAOD_106Xv2).toModify(
271 subJetTable.variables,
275 run3_nanoAOD_pre142X.toModify(
276 subJetTable.variables,
277 btagDeepFlavB =
None,
278 btagUParTAK4B =
None,
279 btagDeepB =
Var(
"bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb')",float,doc=
"DeepCSV b+bb tag discriminator",precision=10),
284 fatJetTable.variables.pt.precision=10
285 subJetTable.variables.pt.precision=10
290 finalJetsAK8PFConstituents = cms.EDProducer(
"PatJetConstituentPtrSelector",
291 src = fatJetTable.src,
292 cut = cms.string(
"abs(eta) <= 2.5")
295 finalJetsPFConstituents = cms.EDProducer(
"PackedCandidatePtrMerger",
296 src = cms.VInputTag(cms.InputTag(
"finalJetsAK8PFConstituents",
"constituents")),
297 skipNulls = cms.bool(
True),
298 warnOnSkip = cms.bool(
True)
301 pfCandidatesTable = cms.EDProducer(
"SimplePATCandidateFlatTableProducer",
302 src = cms.InputTag(
"finalJetsPFConstituents"),
303 cut = cms.string(
""),
304 name = cms.string(
"PFCand"),
305 doc = cms.string(
"PF candidate constituents of AK8 puppi jets (FatJet) with |eta| <= 2.5."),
306 singleton = cms.bool(
False),
307 extension = cms.bool(
False),
308 variables = cms.PSet(
309 pt =
Var(
"pt * puppiWeight()", float, doc=
"Puppi-weighted pt", precision=10),
310 mass =
Var(
"mass * puppiWeight()", float, doc=
"Puppi-weighted mass", precision=10),
311 eta =
Var(
"eta", float, precision=12),
312 phi =
Var(
"phi", float, precision=12),
313 pdgId =
Var(
"pdgId", int, doc=
"PF candidate type (+/-211 = ChgHad, 130 = NeuHad, 22 = Photon, +/-11 = Electron, +/-13 = Muon, 1 = HFHad, 2 = HFEM)")
317 finalJetsAK8ConstituentsTable = cms.EDProducer(
"SimplePatJetConstituentTableProducer",
318 name = cms.string(fatJetTable.name.value()+
"PFCand"),
319 candIdxName = cms.string(
"PFCandIdx"),
320 candIdxDoc = cms.string(
"Index in the PFCand table"),
321 jets = fatJetTable.src,
322 candidates = pfCandidatesTable.src,
323 jetCut = fatJetTable.cut
326 jetAK8UserDataTask = cms.Task()
327 jetAK8Task = cms.Task(jetCorrFactorsAK8,updatedJetsAK8,jetAK8UserDataTask,updatedJetsAK8WithUserData,finalJetsAK8,finalJetsAK8PFConstituents,finalJetsPFConstituents)
330 jetAK8LepTask = cms.Task(lepInAK8JetVars)
332 jetAK8TablesTask = cms.Task(fatJetTable,subJetTable,pfCandidatesTable,finalJetsAK8ConstituentsTable)
def nanoAOD_addDeepInfoAK8(process, addDeepBTag, addDeepBoostedJet, addDeepDoubleX, addDeepDoubleXV2, addParticleNetMassLegacy, addParticleNet, addGlobalParT, jecPayload)
def Var(expr, valtype, doc=None, precision=-1, lazyEval=False)
def ExtVar(tag, valtype, doc=None, precision=-1)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
static std::string join(char **cmd)