Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-10-25 09:58:07

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 from PhysicsTools.NanoAOD.nano_eras_cff import *
0004 from PhysicsTools.NanoAOD.common_cff import *
0005 from PhysicsTools.NanoAOD.simpleCandidateFlatTableProducer_cfi import simpleCandidateFlatTableProducer
0006 
0007 from PhysicsTools.PatAlgos.recoLayer0.jetCorrFactors_cfi import *
0008 # Note: Safe to always add 'L2L3Residual' as MC contains dummy L2L3Residual corrections (always set to 1)
0009 #      (cf. https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookJetEnergyCorrections#CMSSW_7_6_4_and_above )
0010 jetCorrFactorsAK8 = patJetCorrFactors.clone(src='slimmedJetsAK8',
0011     levels = cms.vstring('L1FastJet',
0012         'L2Relative',
0013         'L3Absolute',
0014         'L2L3Residual'),
0015     payload = cms.string('AK8PFPuppi'),
0016     primaryVertices = cms.InputTag("offlineSlimmedPrimaryVertices"),
0017 )
0018 
0019 from  PhysicsTools.PatAlgos.producersLayer1.jetUpdater_cfi import *
0020 updatedJetsAK8 = updatedPatJets.clone(
0021     addBTagInfo=False,
0022     jetSource='slimmedJetsAK8',
0023     jetCorrFactorsSource=cms.VInputTag(cms.InputTag("jetCorrFactorsAK8") ),
0024 )
0025 
0026 #
0027 # JetID
0028 #
0029 looseJetIdAK8 = cms.EDProducer("PatJetIDValueMapProducer",
0030   filterParams=cms.PSet(
0031     version = cms.string('WINTER16'),
0032     quality = cms.string('LOOSE'),
0033   ),
0034   src = cms.InputTag("updatedJetsAK8")
0035 )
0036 tightJetIdAK8 = cms.EDProducer("PatJetIDValueMapProducer",
0037     filterParams=cms.PSet(
0038         version = cms.string('RUN3WINTER22PUPPI'),
0039         quality = cms.string('TIGHT'),
0040     ),
0041     src = cms.InputTag("updatedJetsAK8")
0042 )
0043 tightJetIdLepVetoAK8 = cms.EDProducer("PatJetIDValueMapProducer",
0044     filterParams=cms.PSet(
0045         version = cms.string('RUN3WINTER22PUPPI'),
0046         quality = cms.string('TIGHTLEPVETO'),
0047     ),
0048     src = cms.InputTag("updatedJetsAK8")
0049 )
0050 
0051 run2_jme_2016.toModify(
0052     tightJetIdAK8.filterParams, version = "RUN2UL16PUPPI"
0053 ).toModify(
0054     tightJetIdLepVetoAK8.filterParams, version = "RUN2UL16PUPPI"
0055 )
0056 
0057 (run2_jme_2017 | run2_jme_2018 | run3_nanoAOD_122 | run3_nanoAOD_124).toModify(
0058     tightJetIdAK8.filterParams, version = "RUN2ULPUPPI"
0059 ).toModify(
0060     tightJetIdLepVetoAK8.filterParams, version = "RUN2ULPUPPI"
0061 )
0062 
0063 run3_jme_Winter22runsBCDEprompt.toModify(
0064     tightJetIdAK8.filterParams, version = "RUN3WINTER22PUPPIrunsBCDEprompt"
0065 ).toModify(
0066     tightJetIdLepVetoAK8.filterParams, version = "RUN3WINTER22PUPPIrunsBCDEprompt"
0067 )
0068 
0069 updatedJetsAK8WithUserData = cms.EDProducer("PATJetUserDataEmbedder",
0070     src = cms.InputTag("updatedJetsAK8"),
0071     userFloats = cms.PSet(),
0072     userInts = cms.PSet(
0073         tightId = cms.InputTag("tightJetIdAK8"),
0074         tightIdLepVeto = cms.InputTag("tightJetIdLepVetoAK8"),
0075     ),
0076 )
0077 
0078 finalJetsAK8 = cms.EDFilter("PATJetRefSelector",
0079     src = cms.InputTag("updatedJetsAK8WithUserData"),
0080     cut = cms.string("pt > 170")
0081 )
0082 
0083 
0084 lepInAK8JetVars = cms.EDProducer("LepInJetProducer",
0085     src = cms.InputTag("updatedJetsAK8WithUserData"),
0086     srcEle = cms.InputTag("finalElectrons"),
0087     srcMu = cms.InputTag("finalMuons")
0088 )
0089 
0090 fatJetTable = simpleCandidateFlatTableProducer.clone(
0091     src = cms.InputTag("finalJetsAK8"),
0092     cut = cms.string(" pt > 170"), #probably already applied in miniaod
0093     name = cms.string("FatJet"),
0094     doc  = cms.string("slimmedJetsAK8, i.e. ak8 fat jets for boosted analysis"),
0095     variables = cms.PSet(P4Vars,
0096         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"),
0097         area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10),
0098         rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6),
0099         tau1 = Var("userFloat('NjettinessAK8Puppi:tau1')",float, doc="Nsubjettiness (1 axis)",precision=10),
0100         tau2 = Var("userFloat('NjettinessAK8Puppi:tau2')",float, doc="Nsubjettiness (2 axis)",precision=10),
0101         tau3 = Var("userFloat('NjettinessAK8Puppi:tau3')",float, doc="Nsubjettiness (3 axis)",precision=10),
0102         tau4 = Var("userFloat('NjettinessAK8Puppi:tau4')",float, doc="Nsubjettiness (4 axis)",precision=10),
0103         n2b1 = Var("?hasUserFloat('nb1AK8PuppiSoftDrop:ecfN2')?userFloat('nb1AK8PuppiSoftDrop:ecfN2'):-99999.", float, doc="N2 with beta=1 (for jets with raw pT>250 GeV)", precision=10),
0104         n3b1 = Var("?hasUserFloat('nb1AK8PuppiSoftDrop:ecfN3')?userFloat('nb1AK8PuppiSoftDrop:ecfN3'):-99999.", float, doc="N3 with beta=1 (for jets with raw pT>250 GeV)", precision=10),
0105         msoftdrop = Var("groomedMass('SoftDropPuppi')",float, doc="Corrected soft drop mass with PUPPI",precision=10),
0106         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),
0107         btagHbb = Var("bDiscriminator('pfBoostedDoubleSecondaryVertexAK8BJetTags')",float,doc="Higgs to BB tagger discriminator",precision=10),
0108         btagDDBvLV2 = Var("bDiscriminator('pfMassIndependentDeepDoubleBvLV2JetTags:probHbb')",float,doc="DeepDoubleX V2(mass-decorrelated) discriminator for H(Z)->bb vs QCD",precision=10),
0109         btagDDCvLV2 = Var("bDiscriminator('pfMassIndependentDeepDoubleCvLV2JetTags:probHcc')",float,doc="DeepDoubleX V2 (mass-decorrelated) discriminator for H(Z)->cc vs QCD",precision=10),
0110         btagDDCvBV2 = Var("bDiscriminator('pfMassIndependentDeepDoubleCvBV2JetTags:probHcc')",float,doc="DeepDoubleX V2 (mass-decorrelated) discriminator for H(Z)->cc vs H(Z)->bb",precision=10),
0111         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),
0112         particleNetWithMass_TvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:TvsQCD')",float,doc="ParticleNet tagger (w/ mass) top vs QCD discriminator",precision=10),
0113         particleNetWithMass_WvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:WvsQCD')",float,doc="ParticleNet tagger (w/ mass) W vs QCD discriminator",precision=10),
0114         particleNetWithMass_ZvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:ZvsQCD')",float,doc="ParticleNet tagger (w/ mass) Z vs QCD discriminator",precision=10),
0115         particleNetWithMass_H4qvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:H4qvsQCD')",float,doc="ParticleNet tagger (w/ mass) H(->VV->qqqq) vs QCD discriminator",precision=10),
0116         particleNetWithMass_HbbvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:HbbvsQCD')",float,doc="ParticleNet tagger (w/mass) H(->bb) vs QCD discriminator",precision=10),
0117         particleNetWithMass_HccvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:HccvsQCD')",float,doc="ParticleNet tagger (w/mass) H(->cc) vs QCD discriminator",precision=10),
0118         particleNet_QCD = Var("bDiscriminator('pfParticleNetFromMiniAODAK8JetTags:probQCD2hf')+bDiscriminator('pfParticleNetFromMiniAODAK8JetTags:probQCD1hf')+bDiscriminator('pfParticleNetFromMiniAODAK8JetTags:probQCD0hf')",float,doc="ParticleNet tagger QCD(0+1+2HF) sum",precision=10),
0119         particleNet_QCD2HF = Var("bDiscriminator('pfParticleNetFromMiniAODAK8JetTags:probQCD2hf')",float,doc="ParticleNet tagger QCD 2 HF (b/c) score",precision=10),
0120         particleNet_QCD1HF = Var("bDiscriminator('pfParticleNetFromMiniAODAK8JetTags:probQCD1hf')",float,doc="ParticleNet tagger QCD 1 HF (b/c) score",precision=10),
0121         particleNet_QCD0HF = Var("bDiscriminator('pfParticleNetFromMiniAODAK8JetTags:probQCD0hf')",float,doc="ParticleNet tagger QCD 0 HF (b/c) score",precision=10),
0122         particleNet_massCorr = Var("bDiscriminator('pfParticleNetFromMiniAODAK8JetTags:masscorr')",float,doc="ParticleNet mass regression, relative correction to JEC-corrected jet mass (no softdrop)",precision=10),
0123         particleNet_XbbVsQCD = Var("bDiscriminator('pfParticleNetFromMiniAODAK8DiscriminatorsJetTags:HbbvsQCD')",float,doc="ParticleNet X->bb vs. QCD score: Xbb/(Xbb+QCD)",precision=10),
0124         particleNet_XccVsQCD = Var("bDiscriminator('pfParticleNetFromMiniAODAK8DiscriminatorsJetTags:HccvsQCD')",float,doc="ParticleNet X->cc vs. QCD score: Xcc/(Xcc+QCD)",precision=10),
0125         particleNet_XqqVsQCD = Var("bDiscriminator('pfParticleNetFromMiniAODAK8DiscriminatorsJetTags:HqqvsQCD')",float,doc="ParticleNet X->qq (uds) vs. QCD score: Xqq/(Xqq+QCD)",precision=10),
0126         particleNet_XggVsQCD = Var("bDiscriminator('pfParticleNetFromMiniAODAK8DiscriminatorsJetTags:HggvsQCD')",float,doc="ParticleNet X->gg vs. QCD score: Xgg/(Xgg+QCD)",precision=10),
0127         particleNet_XttVsQCD = Var("bDiscriminator('pfParticleNetFromMiniAODAK8DiscriminatorsJetTags:HttvsQCD')",float,doc="ParticleNet X->tau_h tau_h vs. QCD score: Xtt/(Xtt+QCD)",precision=10),
0128         particleNet_XtmVsQCD = Var("bDiscriminator('pfParticleNetFromMiniAODAK8DiscriminatorsJetTags:HtmvsQCD')",float,doc="ParticleNet X->mu tau_h vs. QCD score: Xtm/(Xtm+QCD)",precision=10),
0129         particleNet_XteVsQCD = Var("bDiscriminator('pfParticleNetFromMiniAODAK8DiscriminatorsJetTags:HtevsQCD')",float,doc="ParticleNet X->e tau_h vs. QCD score: Xte/(Xte+QCD)",precision=10),
0130         subJetIdx1 = Var("?nSubjetCollections()>0 && subjets('SoftDropPuppi').size()>0?subjets('SoftDropPuppi')[0].key():-1", "int16",
0131             doc="index of first subjet"),
0132         subJetIdx2 = Var("?nSubjetCollections()>0 && subjets('SoftDropPuppi').size()>1?subjets('SoftDropPuppi')[1].key():-1", "int16",
0133             doc="index of second subjet"),
0134         nConstituents = Var("numberOfDaughters()","uint8",doc="Number of particles in the jet"),
0135         chMultiplicity = Var("?isPFJet()?chargedMultiplicity():-1","int16",doc="(Puppi-weighted) Number of charged particles in the jet"),
0136         neMultiplicity = Var("?isPFJet()?neutralMultiplicity():-1","int16",doc="(Puppi-weighted) Number of neutral particles in the jet"),
0137         chHEF = Var("?isPFJet()?chargedHadronEnergyFraction():-1", float, doc="charged Hadron Energy Fraction", precision=6),
0138         neHEF = Var("?isPFJet()?neutralHadronEnergyFraction():-1", float, doc="neutral Hadron Energy Fraction", precision=6),
0139         chEmEF = Var("?isPFJet()?chargedEmEnergyFraction():-1", float, doc="charged Electromagnetic Energy Fraction", precision=6),
0140         neEmEF = Var("?isPFJet()?neutralEmEnergyFraction():-1", float, doc="neutral Electromagnetic Energy Fraction", precision=6),
0141         muEF = Var("?isPFJet()?muonEnergyFraction():-1", float, doc="muon Energy Fraction", precision=6),
0142     ),
0143     externalVariables = cms.PSet(
0144         lsf3 = ExtVar(cms.InputTag("lepInAK8JetVars:lsf3"),float, doc="Lepton Subjet Fraction (3 subjets)",precision=10),
0145         muonIdx3SJ = ExtVar(cms.InputTag("lepInAK8JetVars:muIdx3SJ"),"int16", doc="index of muon matched to jet"),
0146         electronIdx3SJ = ExtVar(cms.InputTag("lepInAK8JetVars:eleIdx3SJ"),"int16",doc="index of electron matched to jet"),
0147     )
0148 )
0149 
0150 run2_nanoAOD_ANY.toModify(
0151     fatJetTable.variables,
0152     btagCSVV2 = Var("bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10),
0153     # Remove for V9
0154     chMultiplicity = None,
0155     neMultiplicity = None,
0156     chHEF = None,
0157     neHEF = None,
0158     chEmEF = None,
0159     neEmEF = None,
0160     muEF = None
0161 )
0162 (run3_nanoAOD_122 | run3_nanoAOD_124).toModify(
0163     fatJetTable.variables,
0164     # New ParticleNet trainings are not available in MiniAOD until Run3 13X
0165     particleNet_QCD = None,
0166     particleNet_QCD2HF = None,
0167     particleNet_QCD1HF = None,
0168     particleNet_QCD0HF = None,
0169     particleNet_massCorr = None,
0170     particleNet_XbbVsQCD = None,
0171     particleNet_XccVsQCD = None,
0172     particleNet_XqqVsQCD = None,
0173     particleNet_XggVsQCD = None,
0174     particleNet_XttVsQCD = None,
0175     particleNet_XtmVsQCD = None,
0176     particleNet_XteVsQCD = None,
0177     # Remove for V11 and earlier versions
0178     chMultiplicity = None,
0179     neMultiplicity = None,
0180     chHEF = None,
0181     neHEF = None,
0182     chEmEF = None,
0183     neEmEF = None,
0184     muEF = None
0185 )
0186 
0187 (run2_nanoAOD_106Xv2 | run3_nanoAOD_122 | run3_nanoAOD_124).toModify(
0188     fatJetTable.variables,
0189     # Restore taggers that were decommisionned for Run-3
0190     deepTag_TvsQCD = Var("bDiscriminator('pfDeepBoostedDiscriminatorsJetTags:TvsQCD')",float,doc="DeepBoostedJet tagger top vs QCD discriminator",precision=10),
0191     deepTag_WvsQCD = Var("bDiscriminator('pfDeepBoostedDiscriminatorsJetTags:WvsQCD')",float,doc="DeepBoostedJet tagger W vs QCD discriminator",precision=10),
0192     deepTag_ZvsQCD = Var("bDiscriminator('pfDeepBoostedDiscriminatorsJetTags:ZvsQCD')",float,doc="DeepBoostedJet tagger Z vs QCD discriminator",precision=10),
0193     deepTag_H = Var("bDiscriminator('pfDeepBoostedJetTags:probHbb')+bDiscriminator('pfDeepBoostedJetTags:probHcc')+bDiscriminator('pfDeepBoostedJetTags:probHqqqq')",float,doc="DeepBoostedJet tagger H(bb,cc,4q) sum",precision=10),
0194     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),
0195     deepTag_QCDothers = Var("bDiscriminator('pfDeepBoostedJetTags:probQCDothers')",float,doc="DeepBoostedJet tagger QCDothers value",precision=10),
0196     deepTagMD_TvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:TvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger top vs QCD discriminator",precision=10),
0197     deepTagMD_WvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:WvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger W vs QCD discriminator",precision=10),
0198     deepTagMD_ZvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z vs QCD discriminator",precision=10),
0199     deepTagMD_ZHbbvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZHbbvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z/H->bb vs QCD discriminator",precision=10),
0200     deepTagMD_ZbbvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZbbvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z->bb vs QCD discriminator",precision=10),
0201     deepTagMD_HbbvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:HbbvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger H->bb vs QCD discriminator",precision=10),
0202     deepTagMD_ZHccvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZHccvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z/H->cc vs QCD discriminator",precision=10),
0203     deepTagMD_H4qvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:H4qvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger H->4q vs QCD discriminator",precision=10),
0204     deepTagMD_bbvsLight = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:bbvsLight')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z/H/gluon->bb vs light flavour discriminator",precision=10),
0205     deepTagMD_ccvsLight = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ccvsLight')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z/H/gluon->cc vs light flavour discriminator",precision=10),
0206     particleNetLegacy_mass = Var("bDiscriminator('pfParticleNetMassRegressionJetTags:mass')",float,doc="ParticleNet Legacy Run-2 mass regression",precision=10),
0207     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),
0208     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),
0209     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),
0210     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),
0211 )
0212 
0213 ##############################################################
0214 ## DeepInfoAK8:Start
0215 ## - To be used in nanoAOD_customizeCommon() in nano_cff.py
0216 ###############################################################
0217 from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection
0218 def nanoAOD_addDeepInfoAK8(process, addDeepBTag, addDeepBoostedJet, addDeepDoubleX, addDeepDoubleXV2, addParticleNetMassLegacy, addParticleNet, jecPayload):
0219     _btagDiscriminators=[]
0220     if addDeepBTag:
0221         print("Updating process to run DeepCSV btag to AK8 jets")
0222         _btagDiscriminators += ['pfDeepCSVJetTags:probb','pfDeepCSVJetTags:probbb']
0223     if addDeepBoostedJet:
0224         print("Updating process to run DeepBoostedJet on datasets before 103X")
0225         from RecoBTag.ONNXRuntime.pfDeepBoostedJet_cff import _pfDeepBoostedJetTagsAll as pfDeepBoostedJetTagsAll
0226         _btagDiscriminators += pfDeepBoostedJetTagsAll
0227     if addParticleNet:
0228         print("Updating process to run ParticleNet joint classification and mass regression")
0229         from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK8_cff import _pfParticleNetFromMiniAODAK8JetTagsAll as pfParticleNetFromMiniAODAK8JetTagsAll
0230         _btagDiscriminators += pfParticleNetFromMiniAODAK8JetTagsAll
0231     if addParticleNetMassLegacy:
0232         from RecoBTag.ONNXRuntime.pfParticleNet_cff import _pfParticleNetMassRegressionOutputs
0233         _btagDiscriminators += _pfParticleNetMassRegressionOutputs
0234     if addDeepDoubleX:
0235         print("Updating process to run DeepDoubleX on datasets before 104X")
0236         _btagDiscriminators += ['pfDeepDoubleBvLJetTags:probHbb', \
0237             'pfDeepDoubleCvLJetTags:probHcc', \
0238             'pfDeepDoubleCvBJetTags:probHcc', \
0239             'pfMassIndependentDeepDoubleBvLJetTags:probHbb', 'pfMassIndependentDeepDoubleCvLJetTags:probHcc', 'pfMassIndependentDeepDoubleCvBJetTags:probHcc']
0240     if addDeepDoubleXV2:
0241         print("Updating process to run DeepDoubleXv2 on datasets before 11X")
0242         _btagDiscriminators += [
0243             'pfMassIndependentDeepDoubleBvLV2JetTags:probHbb',
0244             'pfMassIndependentDeepDoubleCvLV2JetTags:probHcc',
0245             'pfMassIndependentDeepDoubleCvBV2JetTags:probHcc'
0246             ]
0247     if len(_btagDiscriminators)==0: return process
0248     print("Will recalculate the following discriminators on AK8 jets: "+", ".join(_btagDiscriminators))
0249     updateJetCollection(
0250        process,
0251        jetSource = cms.InputTag('slimmedJetsAK8'),
0252        pvSource = cms.InputTag('offlineSlimmedPrimaryVertices'),
0253        svSource = cms.InputTag('slimmedSecondaryVertices'),
0254        rParam = 0.8,
0255        jetCorrections = (jecPayload.value(), cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute', 'L2L3Residual']), 'None'),
0256        btagDiscriminators = _btagDiscriminators,
0257        postfix='AK8WithDeepInfo',
0258        printWarning = False
0259     )
0260     process.jetCorrFactorsAK8.src="selectedUpdatedPatJetsAK8WithDeepInfo"
0261     process.updatedJetsAK8.jetSource="selectedUpdatedPatJetsAK8WithDeepInfo"
0262     return process
0263 
0264 nanoAOD_addDeepInfoAK8_switch = cms.PSet(
0265     nanoAOD_addDeepBTag_switch = cms.untracked.bool(False),
0266     nanoAOD_addDeepBoostedJet_switch = cms.untracked.bool(False),
0267     nanoAOD_addDeepDoubleX_switch = cms.untracked.bool(False),
0268     nanoAOD_addDeepDoubleXV2_switch = cms.untracked.bool(False),
0269     nanoAOD_addParticleNet_switch = cms.untracked.bool(False),
0270     nanoAOD_addParticleNetMassLegacy_switch = cms.untracked.bool(False),
0271     jecPayload = cms.untracked.string('AK8PFPuppi')
0272 )
0273 
0274 
0275 # ParticleNet legacy jet tagger is already in 106Xv2 MINIAOD,
0276 # add PartlceNet legacy mass regression and new combined tagger + mass regression
0277 run2_nanoAOD_106Xv2.toModify(
0278     nanoAOD_addDeepInfoAK8_switch,
0279     nanoAOD_addParticleNet_switch = True,
0280     nanoAOD_addParticleNetMassLegacy_switch = True
0281 )
0282 
0283 ################################################
0284 ## DeepInfoAK8:End
0285 #################################################
0286 
0287 subJetTable = simpleCandidateFlatTableProducer.clone(
0288     src = cms.InputTag("slimmedJetsAK8PFPuppiSoftDropPacked","SubJets"),
0289     name = cms.string("SubJet"),
0290     doc  = cms.string("slimmedJetsAK8PFPuppiSoftDropPacked::SubJets, i.e. soft-drop subjets for ak8 fat jets for boosted analysis"),
0291     variables = cms.PSet(P4Vars,
0292         btagDeepB = Var("bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb')",float,doc="DeepCSV b+bb tag discriminator",precision=10),
0293         rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6),
0294         area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10),
0295         tau1 = Var("userFloat('NjettinessAK8Subjets:tau1')",float, doc="Nsubjettiness (1 axis)",precision=10),
0296         tau2 = Var("userFloat('NjettinessAK8Subjets:tau2')",float, doc="Nsubjettiness (2 axis)",precision=10),
0297         tau3 = Var("userFloat('NjettinessAK8Subjets:tau3')",float, doc="Nsubjettiness (3 axis)",precision=10),
0298         tau4 = Var("userFloat('NjettinessAK8Subjets:tau4')",float, doc="Nsubjettiness (4 axis)",precision=10),
0299         n2b1 = Var("userFloat('nb1AK8PuppiSoftDropSubjets:ecfN2')", float, doc="N2 with beta=1", precision=10),
0300         n3b1 = Var("userFloat('nb1AK8PuppiSoftDropSubjets:ecfN3')", float, doc="N3 with beta=1", precision=10),
0301     )
0302 )
0303 
0304 run2_nanoAOD_ANY.toModify(
0305     subJetTable.variables,
0306     btagCSVV2 = Var("bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10)
0307 )
0308 
0309 (run2_nanoAOD_106Xv2 | run3_nanoAOD_122 | run3_nanoAOD_124).toModify(
0310     subJetTable.variables,
0311     area = None,
0312 )
0313 
0314 #jets are not as precise as muons
0315 fatJetTable.variables.pt.precision=10
0316 subJetTable.variables.pt.precision=10
0317 
0318 jetAK8UserDataTask = cms.Task(tightJetIdAK8,tightJetIdLepVetoAK8)
0319 jetAK8Task = cms.Task(jetCorrFactorsAK8,updatedJetsAK8,jetAK8UserDataTask,updatedJetsAK8WithUserData,finalJetsAK8)
0320 
0321 #after lepton collections have been run
0322 jetAK8LepTask = cms.Task(lepInAK8JetVars)
0323 
0324 jetAK8TablesTask = cms.Task(fatJetTable,subJetTable)