Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-11-14 04:15:45

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.simplePATJetFlatTableProducer_cfi import simplePATJetFlatTableProducer
0006 
0007 ##################### User floats producers, selectors ##########################
0008 
0009 from  PhysicsTools.PatAlgos.recoLayer0.jetCorrFactors_cfi import *
0010 # Note: Safe to always add 'L2L3Residual' as MC contains dummy L2L3Residual corrections (always set to 1)
0011 #      (cf. https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookJetEnergyCorrections#CMSSW_7_6_4_and_above )
0012 jetCorrFactorsNano = patJetCorrFactors.clone(src='slimmedJets',
0013     levels = cms.vstring('L1FastJet',
0014         'L2Relative',
0015         'L3Absolute',
0016         'L2L3Residual'),
0017     primaryVertices = cms.InputTag("offlineSlimmedPrimaryVertices"),
0018 )
0019 
0020 from  PhysicsTools.PatAlgos.producersLayer1.jetUpdater_cfi import *
0021 updatedJets = updatedPatJets.clone(
0022     addBTagInfo=False,
0023     jetSource='slimmedJets',
0024     jetCorrFactorsSource=cms.VInputTag(cms.InputTag("jetCorrFactorsNano") ),
0025 )
0026 
0027 bJetVars = cms.EDProducer("JetRegressionVarProducer",
0028     pvsrc = cms.InputTag("offlineSlimmedPrimaryVertices"),
0029     src = cms.InputTag("updatedJets"),
0030     svsrc = cms.InputTag("slimmedSecondaryVertices"),
0031 )
0032 
0033 jercVars = cms.EDProducer("BetaStarPackedCandidateVarProducer",
0034     srcJet = cms.InputTag("updatedJets"),
0035     srcPF = cms.InputTag("packedPFCandidates"),
0036     maxDR = cms.double(0.4)
0037 )
0038 
0039 updatedJetsWithUserData = cms.EDProducer("PATJetUserDataEmbedder",
0040     src = cms.InputTag("updatedJets"),
0041     userFloats = cms.PSet(
0042         leadTrackPt = cms.InputTag("bJetVars:leadTrackPt"),
0043         leptonPtRelv0 = cms.InputTag("bJetVars:leptonPtRelv0"),
0044         leptonPtRelInvv0 = cms.InputTag("bJetVars:leptonPtRelInvv0"),
0045         leptonDeltaR = cms.InputTag("bJetVars:leptonDeltaR"),
0046         vtxPt = cms.InputTag("bJetVars:vtxPt"),
0047         vtxMass = cms.InputTag("bJetVars:vtxMass"),
0048         vtx3dL = cms.InputTag("bJetVars:vtx3dL"),
0049         vtx3deL = cms.InputTag("bJetVars:vtx3deL"),
0050         ptD = cms.InputTag("bJetVars:ptD"),
0051         qgl = cms.InputTag('qgtagger:qgLikelihood'),
0052         puIdNanoDisc = cms.InputTag('pileupJetIdNano:fullDiscriminant'),
0053         chFPV0EF = cms.InputTag("jercVars:chargedFromPV0EnergyFraction"),
0054     ),
0055     userInts = cms.PSet(
0056         vtxNtrk = cms.InputTag("bJetVars:vtxNtrk"),
0057         leptonPdgId = cms.InputTag("bJetVars:leptonPdgId"),
0058         puIdNanoId = cms.InputTag('pileupJetIdNano:fullId'),
0059     ),
0060 )
0061 
0062 
0063 finalJets = cms.EDFilter("PATJetRefSelector",
0064     src = cms.InputTag("updatedJetsWithUserData"),
0065     cut = cms.string("pt > 15")
0066 )
0067 
0068 
0069 ##################### Tables for final output and docs ##########################
0070 
0071 
0072 jetTable = simplePATJetFlatTableProducer.clone(
0073     src = cms.InputTag("linkedObjects","jets"),
0074     name = cms.string("Jet"),
0075     doc  = cms.string("slimmedJets, i.e. ak4 PFJets CHS with JECs applied, after basic selection (" + finalJets.cut.value()+")"),
0076     externalVariables = cms.PSet(
0077         bRegCorr = ExtVar(cms.InputTag("bjetNN:corr"),float, doc="pt correction for b-jet energy regression",precision=10),
0078         bRegRes = ExtVar(cms.InputTag("bjetNN:res"),float, doc="res on pt corrected with b-jet regression",precision=6),
0079         cRegCorr = ExtVar(cms.InputTag("cjetNN:corr"),float, doc="pt correction for c-jet energy regression",precision=10),
0080         cRegRes = ExtVar(cms.InputTag("cjetNN:res"),float, doc="res on pt corrected with c-jet regression",precision=6),
0081     ),
0082     variables = cms.PSet(P4Vars,
0083         area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10),
0084         nMuons = Var("?hasOverlaps('muons')?overlaps('muons').size():0", "uint8", doc="number of muons in the jet"),
0085         muonIdx1 = Var("?overlaps('muons').size()>0?overlaps('muons')[0].key():-1", "int16", doc="index of first matching muon"),
0086         muonIdx2 = Var("?overlaps('muons').size()>1?overlaps('muons')[1].key():-1", "int16", doc="index of second matching muon"),
0087         electronIdx1 = Var("?overlaps('electrons').size()>0?overlaps('electrons')[0].key():-1", "int16", doc="index of first matching electron"),
0088         electronIdx2 = Var("?overlaps('electrons').size()>1?overlaps('electrons')[1].key():-1", "int16", doc="index of second matching electron"),
0089         nElectrons = Var("?hasOverlaps('electrons')?overlaps('electrons').size():0", "uint8", doc="number of electrons in the jet"),
0090         svIdx1 = Var("?overlaps('vertices').size()>0?overlaps('vertices')[0].key():-1", "int16", doc="index of first matching secondary vertex"),
0091         svIdx2 = Var("?overlaps('vertices').size()>1?overlaps('vertices')[1].key():-1", "int16", doc="index of second matching secondary vertex"),
0092         nSVs = Var("?hasOverlaps('vertices')?overlaps('vertices').size():0", "uint8", doc="number of secondary vertices in the jet"),
0093         btagDeepFlavB = Var("bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb')",float,doc="DeepJet b+bb+lepb tag discriminator",precision=10),
0094         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),
0095         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),
0096         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),
0097         btagPNetB = Var("?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:BvsAll')>0?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:BvsAll'):-1",float,precision=10,doc="ParticleNet b vs. udscg"),
0098         btagPNetCvL = Var("?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:CvsL')>0?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:CvsL'):-1",float,precision=10,doc="ParticleNet c vs. udsg"),
0099         btagPNetCvB = Var("?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:CvsB')>0?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:CvsB'):-1",float,precision=10,doc="ParticleNet c vs. b"),
0100         btagPNetCvNotB = Var("?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralJetTags:probb')>0?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralJetTags:probc')/(1.-bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralJetTags:probb')):-1",float,precision=10,doc="ParticleNet C vs notB"),
0101         btagPNetQvG = Var("?abs(eta())<2.5?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:QvsG'):bDiscriminator('pfParticleNetFromMiniAODAK4CHSForwardDiscriminatorsJetTags:QvsG')",float,precision=10,doc="ParticleNet q (udsbc) vs. g"),
0102         btagPNetTauVJet = Var("?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:TauVsJet')>0?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralDiscriminatorsJetTags:TauVsJet'):-1",float,precision=10,doc="ParticleNet tau vs. jet"),
0103         PNetRegPtRawCorr = Var("?abs(eta())<2.5?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralJetTags:ptcorr'):bDiscriminator('pfParticleNetFromMiniAODAK4CHSForwardJetTags:ptcorr')",float,precision=10,doc="ParticleNet universal flavor-aware visible pT regression (no neutrinos), correction relative to raw jet pT"),
0104         PNetRegPtRawCorrNeutrino = Var("?abs(eta())<2.5?bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralJetTags:ptnu'):bDiscriminator('pfParticleNetFromMiniAODAK4CHSForwardJetTags:ptnu')",float,precision=10,doc="ParticleNet universal flavor-aware pT regression neutrino correction, relative to visible. To apply full regression, multiply raw jet pT by both PNetRegPtRawCorr and PNetRegPtRawCorrNeutrino."),
0105         PNetRegPtRawRes = Var("?abs(eta())<2.5?0.5*(bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralJetTags:ptreshigh')-bDiscriminator('pfParticleNetFromMiniAODAK4CHSCentralJetTags:ptreslow')):0.5*(bDiscriminator('pfParticleNetFromMiniAODAK4CHSForwardJetTags:ptreshigh')-bDiscriminator('pfParticleNetFromMiniAODAK4CHSForwardJetTags:ptreslow'))",float,precision=10,doc="ParticleNet universal flavor-aware jet pT resolution estimator, (q84 - q16)/2"),
0106         btagUParTAK4B = Var("?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:BvsAll')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:BvsAll'):-1",float,precision=10,doc="UnifiedParT b vs. udscg"),
0107         btagUParTAK4CvL = Var("?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:CvsL')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:CvsL'):-1",float,precision=10,doc="UnifiedParT c vs. udsg"),
0108         btagUParTAK4CvB = Var("?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:CvsB')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:CvsB'):-1",float,precision=10,doc="UnifiedParT c vs. b"),
0109         btagUParTAK4CvNotB = Var("?((bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probb')+bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probbb')+bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:problepb')))>0?((bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probc'))/(1.-bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probb')-bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probbb')-bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:problepb'))):-1",float,precision=10,doc="UnifiedParT c vs. not b"),
0110         btagUParTAK4SvCB  = Var("?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:SvsBC')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:SvsBC'):-1",float,precision=10,doc="UnifiedParT s vs. bc"),
0111         btagUParTAK4SvUDG = Var("?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:SvsUDG')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:SvsUDG'):-1",float,precision=10,doc="UnifiedParT s vs. udg"),
0112         btagUParTAK4UDG = Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probu')+bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probd')+bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probg')",float,precision=10,doc="UnifiedParT u+d+g raw score"),
0113         btagUParTAK4QvG = Var("?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:QvsG')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:QvsG'):-1",float,precision=10,doc="UnifiedParT q (uds) vs. g"),
0114         btagUParTAK4TauVJet = Var("?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:TauVsJet')>0?bDiscriminator('pfUnifiedParticleTransformerAK4DiscriminatorsJetTags:TauVsJet'):-1",float,precision=10,doc="UnifiedParT tau vs. jet"),
0115         btagUParTAK4Ele = Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probele')",float,precision=10,doc="UnifiedParT electron raw score"),
0116         btagUParTAK4Mu = Var("bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:probmu')",float,precision=10,doc="UnifiedParT muon raw score"),
0117         UParTAK4RegPtRawCorr = Var("?bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptcorr')>0?bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptcorr'):-1",float,precision=10,doc="UnifiedParT universal flavor-aware visible pT regression (no neutrinos), correction relative to raw jet pT"),
0118         UParTAK4RegPtRawCorrNeutrino = Var("?bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptnu')>0?bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptnu'):-1",float,precision=10,doc="UnifiedParT universal flavor-aware pT regression neutrino correction, relative to visible. To apply full regression, multiply raw jet pT by both UParTAK4RegPtRawCorr and UParTAK4RegPtRawCorrNeutrino."),
0119         UParTAK4RegPtRawRes = Var("?(bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptreshigh')+bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptreslow'))>0?0.5*(bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptreshigh')-bDiscriminator('pfUnifiedParticleTransformerAK4JetTags:ptreslow')):-1",float,precision=10,doc="UnifiedParT universal flavor-aware jet pT resolution estimator, (q84 - q16)/2"),
0120         puIdDisc = Var("userFloat('puIdNanoDisc')", float,doc="Pileup ID discriminant with 106X (2018) training",precision=10),
0121         puId = Var("userInt('puIdNanoId')", "uint8", doc="Pileup ID flags with 106X (2018) training"),
0122         qgl = Var("?userFloat('qgl')>0?userFloat('qgl'):-1",float,doc="Quark vs Gluon likelihood discriminator",precision=10),
0123         hfsigmaEtaEta = Var("userFloat('hfJetShowerShape:sigmaEtaEta')",float,doc="sigmaEtaEta for HF jets (noise discriminating variable)",precision=10),
0124         hfsigmaPhiPhi = Var("userFloat('hfJetShowerShape:sigmaPhiPhi')",float,doc="sigmaPhiPhi for HF jets (noise discriminating variable)",precision=10),
0125         hfcentralEtaStripSize = Var("userInt('hfJetShowerShape:centralEtaStripSize')", int, doc="eta size of the central tower strip in HF (noise discriminating variable) "),
0126         hfadjacentEtaStripsSize = Var("userInt('hfJetShowerShape:adjacentEtaStripsSize')", int, doc="eta size of the strips next to the central tower strip in HF (noise discriminating variable) "),
0127         nConstituents = Var("numberOfDaughters()","uint8",doc="Number of particles in the jet"),
0128         chMultiplicity = Var("chargedMultiplicity()","uint8",doc="Number of charged particles in the jet"),
0129         neMultiplicity = Var("neutralMultiplicity()","uint8",doc="Number of neutral particles in the jet"),
0130         rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6),
0131         chHEF = Var("chargedHadronEnergyFraction()", float, doc="charged Hadron Energy Fraction", precision=10),
0132         neHEF = Var("neutralHadronEnergyFraction()", float, doc="neutral Hadron Energy Fraction", precision=10),
0133         chEmEF = Var("chargedEmEnergyFraction()", float, doc="charged Electromagnetic Energy Fraction", precision=10),
0134         neEmEF = Var("neutralEmEnergyFraction()", float, doc="neutral Electromagnetic Energy Fraction", precision=10),
0135         hfHEF = Var("HFHadronEnergyFraction()",float,doc="hadronic Energy Fraction in HF",precision=10),
0136         hfEmEF = Var("HFEMEnergyFraction()",float,doc="electromagnetic Energy Fraction in HF",precision=10),
0137         muEF = Var("muonEnergyFraction()", float, doc="muon Energy Fraction", precision=10),
0138         chFPV0EF = Var("userFloat('chFPV0EF')", float, doc="charged fromPV==0 Energy Fraction (energy excluded from CHS jets). Previously called betastar.", precision= 6),
0139     )
0140 )
0141 
0142 #jets are not as precise as muons
0143 jetTable.variables.pt.precision=10
0144 
0145 ### Era dependent customization
0146 (run2_jme_2016 & ~tracker_apv_vfp30_2016 ).toModify(
0147     jetTable.variables.puIdDisc, doc="Pileup ID discriminant with 106X (2016) training"
0148 ).toModify(
0149     jetTable.variables.puId, doc="Pileup ID flags with 106X (2016) training"
0150 )
0151 (run2_jme_2016 & tracker_apv_vfp30_2016 ).toModify(
0152     jetTable.variables.puIdDisc, doc="Pileup ID discriminant with 106X (2016APV) training"
0153 ).toModify(
0154     jetTable.variables.puId,  doc="Pileup ID flags with 106X (2016APV) training"
0155 )
0156 run2_jme_2017.toModify(
0157     jetTable.variables.puIdDisc, doc="Pileup ID discriminant with 106X (2017) training"
0158 ).toModify(
0159     jetTable.variables.puId, doc="Pileup ID flags with 106X (2017) training"
0160 )
0161 
0162 run2_nanoAOD_ANY.toModify(
0163     jetTable.variables,
0164     btagCSVV2 = Var("bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10),
0165     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),
0166     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),
0167     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),
0168     # Remove for V9
0169     chMultiplicity = None,
0170     neMultiplicity = None,
0171     hfHEF = None,
0172     hfEmEF = None
0173 )
0174 
0175 bjetNN = cms.EDProducer("BJetEnergyRegressionMVA",
0176     backend = cms.string("ONNX"),
0177     batch_eval = cms.bool(True),
0178     src = cms.InputTag("linkedObjects","jets"),
0179     pvsrc = cms.InputTag("offlineSlimmedPrimaryVertices"),
0180     svsrc = cms.InputTag("slimmedSecondaryVertices"),
0181     rhosrc = cms.InputTag("fixedGridRhoFastjetAll"),
0182 
0183     weightFile =  cms.FileInPath("PhysicsTools/NanoAOD/data/breg_training_2018.onnx"),
0184     name = cms.string("JetRegNN"),
0185     variables = cms.VPSet(
0186         cms.PSet( name = cms.string("Jet_pt"), expr = cms.string("pt*jecFactor('Uncorrected')")),
0187         cms.PSet( name = cms.string("Jet_eta"), expr = cms.string("eta")),
0188         cms.PSet( name = cms.string("rho")),
0189         cms.PSet( name = cms.string("Jet_mt"), expr = cms.string("mt*jecFactor('Uncorrected')")),
0190         cms.PSet( name = cms.string("Jet_leadTrackPt"), expr = cms.string("userFloat('leadTrackPt')")),
0191         cms.PSet( name = cms.string("Jet_leptonPtRel"), expr = cms.string("userFloat('leptonPtRelv0')")),
0192         cms.PSet( name = cms.string("Jet_leptonDeltaR"), expr = cms.string("userFloat('leptonDeltaR')")),
0193         cms.PSet( name = cms.string("Jet_neHEF"), expr = cms.string("neutralHadronEnergyFraction()")),
0194         cms.PSet( name = cms.string("Jet_neEmEF"), expr = cms.string("neutralEmEnergyFraction()")),
0195         cms.PSet( name = cms.string("Jet_vtxPt"), expr = cms.string("userFloat('vtxPt')")),
0196         cms.PSet( name = cms.string("Jet_vtxMass"), expr = cms.string("userFloat('vtxMass')")),
0197         cms.PSet( name = cms.string("Jet_vtx3dL"), expr = cms.string("userFloat('vtx3dL')")),
0198         cms.PSet( name = cms.string("Jet_vtxNtrk"), expr = cms.string("userInt('vtxNtrk')")),
0199         cms.PSet( name = cms.string("Jet_vtx3deL"), expr = cms.string("userFloat('vtx3deL')")),
0200         cms.PSet( name = cms.string("Jet_numDaughters_pt03")),
0201         cms.PSet( name = cms.string("Jet_energyRing_dR0_em_Jet_rawEnergy")),
0202         cms.PSet( name = cms.string("Jet_energyRing_dR1_em_Jet_rawEnergy")),
0203         cms.PSet( name = cms.string("Jet_energyRing_dR2_em_Jet_rawEnergy")),
0204         cms.PSet( name = cms.string("Jet_energyRing_dR3_em_Jet_rawEnergy")),
0205         cms.PSet( name = cms.string("Jet_energyRing_dR4_em_Jet_rawEnergy")),
0206         cms.PSet( name = cms.string("Jet_energyRing_dR0_neut_Jet_rawEnergy")),
0207         cms.PSet( name = cms.string("Jet_energyRing_dR1_neut_Jet_rawEnergy")),
0208         cms.PSet( name = cms.string("Jet_energyRing_dR2_neut_Jet_rawEnergy")),
0209         cms.PSet( name = cms.string("Jet_energyRing_dR3_neut_Jet_rawEnergy")),
0210         cms.PSet( name = cms.string("Jet_energyRing_dR4_neut_Jet_rawEnergy")),
0211         cms.PSet( name = cms.string("Jet_energyRing_dR0_ch_Jet_rawEnergy")),
0212         cms.PSet( name = cms.string("Jet_energyRing_dR1_ch_Jet_rawEnergy")),
0213         cms.PSet( name = cms.string("Jet_energyRing_dR2_ch_Jet_rawEnergy")),
0214         cms.PSet( name = cms.string("Jet_energyRing_dR3_ch_Jet_rawEnergy")),
0215         cms.PSet( name = cms.string("Jet_energyRing_dR4_ch_Jet_rawEnergy")),
0216         cms.PSet( name = cms.string("Jet_energyRing_dR0_mu_Jet_rawEnergy")),
0217         cms.PSet( name = cms.string("Jet_energyRing_dR1_mu_Jet_rawEnergy")),
0218         cms.PSet( name = cms.string("Jet_energyRing_dR2_mu_Jet_rawEnergy")),
0219         cms.PSet( name = cms.string("Jet_energyRing_dR3_mu_Jet_rawEnergy")),
0220         cms.PSet( name = cms.string("Jet_energyRing_dR4_mu_Jet_rawEnergy")),
0221         cms.PSet( name = cms.string("Jet_chHEF"), expr = cms.string("chargedHadronEnergyFraction()")),
0222         cms.PSet( name = cms.string("Jet_chEmEF"), expr = cms.string("chargedEmEnergyFraction()")),
0223         cms.PSet( name = cms.string("Jet_leptonPtRelInv"), expr = cms.string("userFloat('leptonPtRelInvv0')*jecFactor('Uncorrected')")),
0224         cms.PSet( name = cms.string("isEle"), expr = cms.string("?abs(userInt('leptonPdgId'))==11?1:0")),
0225         cms.PSet( name = cms.string("isMu"), expr = cms.string("?abs(userInt('leptonPdgId'))==13?1:0")),
0226         cms.PSet( name = cms.string("isOther"), expr = cms.string("?userInt('leptonPdgId')==0?1:0")),
0227         cms.PSet( name = cms.string("Jet_mass"), expr = cms.string("mass*jecFactor('Uncorrected')")),
0228         cms.PSet( name = cms.string("Jet_ptd"), expr = cms.string("userFloat('ptD')"))
0229     ),
0230     inputTensorName = cms.string("ffwd_inp:0"),
0231     outputTensorName = cms.string("ffwd_out/BiasAdd:0"),
0232     outputNames = cms.vstring(["corr","res"]),
0233     outputFormulas = cms.vstring(["at(0)*0.27912887930870056+1.0545977354049683","0.5*(at(2)-at(1))*0.27912887930870056"]),
0234 )
0235 
0236 cjetNN = cms.EDProducer("BJetEnergyRegressionMVA",
0237     backend = cms.string("ONNX"),
0238     batch_eval = cms.bool(True),
0239 
0240     src = cms.InputTag("linkedObjects","jets"),
0241     pvsrc = cms.InputTag("offlineSlimmedPrimaryVertices"),
0242     svsrc = cms.InputTag("slimmedSecondaryVertices"),
0243     rhosrc = cms.InputTag("fixedGridRhoFastjetAll"),
0244 
0245     weightFile =  cms.FileInPath("PhysicsTools/NanoAOD/data/creg_training_2018.onnx"),
0246     name = cms.string("JetRegNN"),
0247     variables = cms.VPSet(
0248         cms.PSet( name = cms.string("Jet_pt"), expr = cms.string("pt*jecFactor('Uncorrected')")),
0249     cms.PSet( name = cms.string("Jet_eta"), expr = cms.string("eta")),
0250         cms.PSet( name = cms.string("rho")),
0251         cms.PSet( name = cms.string("Jet_mt"), expr = cms.string("mt*jecFactor('Uncorrected')")),
0252         cms.PSet( name = cms.string("Jet_leadTrackPt"), expr = cms.string("userFloat('leadTrackPt')")),
0253         cms.PSet( name = cms.string("Jet_leptonPtRel"), expr = cms.string("userFloat('leptonPtRelv0')")),
0254         cms.PSet( name = cms.string("Jet_leptonDeltaR"), expr = cms.string("userFloat('leptonDeltaR')")),
0255         cms.PSet( name = cms.string("Jet_neHEF"), expr = cms.string("neutralHadronEnergyFraction()")),
0256         cms.PSet( name = cms.string("Jet_neEmEF"), expr = cms.string("neutralEmEnergyFraction()")),
0257         cms.PSet( name = cms.string("Jet_vtxPt"), expr = cms.string("userFloat('vtxPt')")),
0258         cms.PSet( name = cms.string("Jet_vtxMass"), expr = cms.string("userFloat('vtxMass')")),
0259         cms.PSet( name = cms.string("Jet_vtx3dL"), expr = cms.string("userFloat('vtx3dL')")),
0260         cms.PSet( name = cms.string("Jet_vtxNtrk"), expr = cms.string("userInt('vtxNtrk')")),
0261         cms.PSet( name = cms.string("Jet_vtx3deL"), expr = cms.string("userFloat('vtx3deL')")),
0262         cms.PSet( name = cms.string("Jet_numDaughters_pt03")),
0263         cms.PSet( name = cms.string("Jet_chEmEF"), expr = cms.string("chargedEmEnergyFraction()")),
0264         cms.PSet( name = cms.string("Jet_chHEF"), expr = cms.string("chargedHadronEnergyFraction()")),
0265         cms.PSet( name = cms.string("Jet_ptd"), expr = cms.string("userFloat('ptD')")),
0266         cms.PSet( name = cms.string("Jet_mass"), expr = cms.string("mass*jecFactor('Uncorrected')")),
0267         cms.PSet( name = cms.string("Jet_energyRing_dR0_em_Jet_rawEnergy")),
0268         cms.PSet( name = cms.string("Jet_energyRing_dR1_em_Jet_rawEnergy")),
0269         cms.PSet( name = cms.string("Jet_energyRing_dR2_em_Jet_rawEnergy")),
0270         cms.PSet( name = cms.string("Jet_energyRing_dR3_em_Jet_rawEnergy")),
0271         cms.PSet( name = cms.string("Jet_energyRing_dR4_em_Jet_rawEnergy")),
0272         cms.PSet( name = cms.string("Jet_energyRing_dR0_neut_Jet_rawEnergy")),
0273         cms.PSet( name = cms.string("Jet_energyRing_dR1_neut_Jet_rawEnergy")),
0274         cms.PSet( name = cms.string("Jet_energyRing_dR2_neut_Jet_rawEnergy")),
0275         cms.PSet( name = cms.string("Jet_energyRing_dR3_neut_Jet_rawEnergy")),
0276         cms.PSet( name = cms.string("Jet_energyRing_dR4_neut_Jet_rawEnergy")),
0277         cms.PSet( name = cms.string("Jet_energyRing_dR0_ch_Jet_rawEnergy")),
0278         cms.PSet( name = cms.string("Jet_energyRing_dR1_ch_Jet_rawEnergy")),
0279         cms.PSet( name = cms.string("Jet_energyRing_dR2_ch_Jet_rawEnergy")),
0280         cms.PSet( name = cms.string("Jet_energyRing_dR3_ch_Jet_rawEnergy")),
0281         cms.PSet( name = cms.string("Jet_energyRing_dR4_ch_Jet_rawEnergy")),
0282         cms.PSet( name = cms.string("Jet_energyRing_dR0_mu_Jet_rawEnergy")),
0283         cms.PSet( name = cms.string("Jet_energyRing_dR1_mu_Jet_rawEnergy")),
0284         cms.PSet( name = cms.string("Jet_energyRing_dR2_mu_Jet_rawEnergy")),
0285         cms.PSet( name = cms.string("Jet_energyRing_dR3_mu_Jet_rawEnergy")),
0286         cms.PSet( name = cms.string("Jet_energyRing_dR4_mu_Jet_rawEnergy")),
0287         ),
0288     inputTensorName = cms.string("ffwd_inp:0"),
0289     outputTensorName = cms.string("ffwd_out/BiasAdd:0"),
0290     outputNames = cms.vstring(["corr","res"]),
0291     outputFormulas = cms.vstring(["at(0)*0.24325256049633026+0.993854820728302","0.5*(at(2)-at(1))*0.24325256049633026"]),
0292 )
0293 
0294 
0295 run2_jme_2016.toModify(
0296     bjetNN, weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/breg_training_2016.onnx")
0297 ).toModify(
0298     bjetNN,outputFormulas = cms.vstring(["at(0)*0.31976690888404846+1.047176718711853","0.5*(at(2)-at(1))*0.31976690888404846"])
0299 ).toModify(
0300     cjetNN, weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/creg_training_2016.onnx")
0301 ).toModify(
0302     cjetNN, outputFormulas = cms.vstring(["at(0)*0.28862622380256653+0.9908722639083862","0.5*(at(2)-at(1))*0.28862622380256653"])
0303 )
0304 
0305 run2_jme_2017.toModify(
0306     bjetNN, weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/breg_training_2017.onnx")
0307 ).toModify(
0308     bjetNN,outputFormulas = cms.vstring(["at(0)*0.28225210309028625+1.055067777633667","0.5*(at(2)-at(1))*0.28225210309028625"])
0309 ).toModify(
0310     cjetNN, weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/creg_training_2017.onnx")
0311 ).toModify(
0312     cjetNN, outputFormulas = cms.vstring(["at(0)*0.24718524515628815+0.9927206635475159","0.5*(at(2)-at(1))*0.24718524515628815"])
0313 )
0314 
0315 
0316 #
0317 # Quark-Gluon Likelihood (QGL)
0318 #
0319 from RecoJets.JetProducers.QGTagger_cfi import  QGTagger
0320 qgtagger=QGTagger.clone(srcJets="updatedJets",srcVertexCollection="offlineSlimmedPrimaryVertices")
0321 
0322 #
0323 # PileUp ID
0324 #
0325 from RecoJets.JetProducers.PileupJetID_cfi import pileupJetId, _chsalgos_106X_UL16, _chsalgos_106X_UL16APV, _chsalgos_106X_UL17, _chsalgos_106X_UL18
0326 pileupJetIdNano=pileupJetId.clone(jets="updatedJets",algos = cms.VPSet(_chsalgos_106X_UL18),inputIsCorrected=True,applyJec=False,vertexes="offlineSlimmedPrimaryVertices")
0327 run2_jme_2017.toModify(
0328     pileupJetIdNano, algos = _chsalgos_106X_UL17
0329 )
0330 (run2_jme_2016 & ~tracker_apv_vfp30_2016 ).toModify(
0331     pileupJetIdNano, algos = _chsalgos_106X_UL16
0332 )
0333 (run2_jme_2016 & tracker_apv_vfp30_2016 ).toModify(
0334     pileupJetIdNano, algos = _chsalgos_106X_UL16APV
0335 )
0336 
0337 ##############################################################
0338 ## DeepInfoAK4CHS:Start
0339 ## - To be used in nanoAOD_customizeCommon() in nano_cff.py
0340 ###############################################################
0341 from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection
0342 def nanoAOD_addDeepInfoAK4CHS(process,addDeepBTag,addDeepFlavour,addParticleNet,addRobustParTAK4=False,addUnifiedParTAK4=False):
0343     _btagDiscriminators=[]
0344     if addDeepBTag:
0345         print("Updating process to run DeepCSV btag")
0346         _btagDiscriminators += ['pfDeepCSVJetTags:probb','pfDeepCSVJetTags:probbb','pfDeepCSVJetTags:probc']
0347     if addDeepFlavour:
0348         print("Updating process to run DeepFlavour btag")
0349         _btagDiscriminators += ['pfDeepFlavourJetTags:probb','pfDeepFlavourJetTags:probbb','pfDeepFlavourJetTags:problepb','pfDeepFlavourJetTags:probc']
0350     if addParticleNet:
0351         print("Updating process to run ParticleNetAK4")
0352         from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll as pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll
0353         from RecoBTag.ONNXRuntime.pfParticleNetFromMiniAODAK4_cff import _pfParticleNetFromMiniAODAK4CHSForwardJetTagsAll as pfParticleNetFromMiniAODAK4CHSForwardJetTagsAll
0354         _btagDiscriminators += pfParticleNetFromMiniAODAK4CHSCentralJetTagsAll
0355         _btagDiscriminators += pfParticleNetFromMiniAODAK4CHSForwardJetTagsAll
0356     if addRobustParTAK4:
0357         print("Updating process to run RobustParTAK4")
0358         from RecoBTag.ONNXRuntime.pfParticleTransformerAK4_cff import _pfParticleTransformerAK4JetTagsAll as pfParticleTransformerAK4JetTagsAll
0359         _btagDiscriminators += pfParticleTransformerAK4JetTagsAll
0360     if addUnifiedParTAK4:
0361         print("Updating process to run UnifiedParTAK4")
0362         from RecoBTag.ONNXRuntime.pfUnifiedParticleTransformerAK4_cff import _pfUnifiedParticleTransformerAK4JetTagsAll as pfUnifiedParticleTransformerAK4JetTagsAll
0363         _btagDiscriminators += pfUnifiedParticleTransformerAK4JetTagsAll
0364 
0365     if len(_btagDiscriminators)==0: return process
0366     print("Will recalculate the following discriminators: "+", ".join(_btagDiscriminators))
0367     updateJetCollection(
0368         process,
0369         jetSource = cms.InputTag('slimmedJets'),
0370         jetCorrections = ('AK4PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute','L2L3Residual']), 'None'),
0371         btagDiscriminators = _btagDiscriminators,
0372         postfix = 'WithDeepInfo',
0373     )
0374     process.load("Configuration.StandardSequences.MagneticField_cff")
0375     process.jetCorrFactorsNano.src="selectedUpdatedPatJetsWithDeepInfo"
0376     process.updatedJets.jetSource="selectedUpdatedPatJetsWithDeepInfo"
0377     return process
0378 
0379 nanoAOD_addDeepInfoAK4CHS_switch = cms.PSet(
0380     nanoAOD_addDeepBTag_switch = cms.untracked.bool(False),
0381     nanoAOD_addDeepFlavourTag_switch = cms.untracked.bool(False),
0382     nanoAOD_addParticleNet_switch = cms.untracked.bool(False),
0383     nanoAOD_addRobustParTAK4Tag_switch = cms.untracked.bool(False),
0384     nanoAOD_addUnifiedParTAK4Tag_switch = cms.untracked.bool(False)
0385 )
0386 
0387 ################################################
0388 ## DeepInfoAK4CHS:End
0389 #################################################
0390 
0391 #
0392 # ML-based FastSim refinement
0393 #
0394 from Configuration.Eras.Modifier_fastSim_cff import fastSim
0395 def nanoAOD_refineFastSim_bTagDeepFlav(process):
0396 
0397     fastSim.toModify( process.jetTable.variables,
0398       btagDeepFlavBunrefined = process.jetTable.variables.btagDeepFlavB.clone(),
0399       btagDeepFlavCvBunrefined = process.jetTable.variables.btagDeepFlavCvB.clone(),
0400       btagDeepFlavCvLunrefined = process.jetTable.variables.btagDeepFlavCvL.clone(),
0401       btagDeepFlavQGunrefined = process.jetTable.variables.btagDeepFlavQG.clone(),
0402     )
0403 
0404     fastSim.toModify( process.jetTable.variables,
0405       btagDeepFlavB = None,
0406       btagDeepFlavCvB = None,
0407       btagDeepFlavCvL = None,
0408       btagDeepFlavQG = None,
0409     )
0410 
0411     fastSim.toModify( process.jetTable.externalVariables,
0412       btagDeepFlavB = ExtVar(cms.InputTag("btagDeepFlavRefineNN:btagDeepFlavBrefined"), float, doc="DeepJet b+bb+lepb tag discriminator", precision=10),
0413       btagDeepFlavCvB = ExtVar(cms.InputTag("btagDeepFlavRefineNN:btagDeepFlavCvBrefined"), float, doc="DeepJet c vs b+bb+lepb discriminator", precision=10),
0414       btagDeepFlavCvL = ExtVar(cms.InputTag("btagDeepFlavRefineNN:btagDeepFlavCvLrefined"), float, doc="DeepJet c vs uds+g discriminator", precision=10),
0415       btagDeepFlavQG = ExtVar(cms.InputTag("btagDeepFlavRefineNN:btagDeepFlavQGrefined"), float, doc="DeepJet g vs uds discriminator", precision=10),
0416     )
0417 
0418     process.btagDeepFlavRefineNN= cms.EDProducer("JetBaseMVAValueMapProducer",
0419         backend = cms.string("ONNX"),
0420         batch_eval = cms.bool(True),
0421         disableONNXGraphOpt = cms.bool(True),
0422 
0423         src = cms.InputTag("linkedObjects","jets"),
0424 
0425         weightFile=cms.FileInPath("PhysicsTools/NanoAOD/data/btagDeepFlavRefineNN_CHS.onnx"),
0426         name = cms.string("btagDeepFlavRefineNN"),
0427 
0428         variables = cms.VPSet(
0429             cms.PSet( name = cms.string("GenJet_pt"), expr = cms.string("?genJetFwdRef().backRef().isNonnull()?genJetFwdRef().backRef().pt():pt")),
0430             cms.PSet( name = cms.string("GenJet_eta"), expr = cms.string("?genJetFwdRef().backRef().isNonnull()?genJetFwdRef().backRef().eta():eta")),
0431             cms.PSet( name = cms.string("Jet_hadronFlavour"), expr = cms.string("hadronFlavour()")),
0432             cms.PSet( name = cms.string("Jet_btagDeepFlavB"), expr = cms.string("bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb')")),
0433             cms.PSet( name = cms.string("Jet_btagDeepFlavCvB"), expr = 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")),
0434             cms.PSet( name = cms.string("Jet_btagDeepFlavCvL"), expr = 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")),
0435             cms.PSet( name = cms.string("Jet_btagDeepFlavQG"), expr = cms.string("?(bDiscriminator('pfDeepFlavourJetTags:probg')+bDiscriminator('pfDeepFlavourJetTags:probuds'))>0?bDiscriminator('pfDeepFlavourJetTags:probg')/(bDiscriminator('pfDeepFlavourJetTags:probg')+bDiscriminator('pfDeepFlavourJetTags:probuds')):-1")),
0436             ),
0437          inputTensorName = cms.string("input"),
0438          outputTensorName = cms.string("output"),
0439          outputNames = cms.vstring(["btagDeepFlavBrefined","btagDeepFlavCvBrefined","btagDeepFlavCvLrefined","btagDeepFlavQGrefined"]),
0440          outputFormulas = cms.vstring(["at(0)","at(1)","at(2)","at(3)"]),
0441     )
0442 
0443     fastSim.toModify(process.jetTablesTask, process.jetTablesTask.add(process.btagDeepFlavRefineNN))
0444 
0445     return process
0446 
0447 
0448 ################################################################################
0449 # JETS FOR MET type1
0450 ################################################################################
0451 basicJetsForMetForT1METNano = cms.EDProducer("PATJetCleanerForType1MET",
0452     src = updatedJetsWithUserData.src,
0453     jetCorrEtaMax = cms.double(9.9),
0454     jetCorrLabel = cms.InputTag("L3Absolute"),
0455     jetCorrLabelRes = cms.InputTag("L2L3Residual"),
0456     offsetCorrLabel = cms.InputTag("L1FastJet"),
0457     skipEM = cms.bool(False),
0458     skipEMfractionThreshold = cms.double(0.9),
0459     skipMuonSelection = cms.string('isGlobalMuon | isStandAloneMuon'),
0460     skipMuons = cms.bool(True),
0461     type1JetPtThreshold = cms.double(0.0),
0462     calcMuonSubtrRawPtAsValueMap = cms.bool(True)
0463 )
0464 
0465 updatedJetsWithUserData.userFloats.muonSubtrRawPt = cms.InputTag("basicJetsForMetForT1METNano:MuonSubtrRawPt")
0466 updatedJetsWithUserData.userFloats.muonSubtrRawEta = cms.InputTag("basicJetsForMetForT1METNano:MuonSubtrRawEta")
0467 updatedJetsWithUserData.userFloats.muonSubtrRawPhi = cms.InputTag("basicJetsForMetForT1METNano:MuonSubtrRawPhi")
0468 
0469 corrT1METJetTable = simplePATJetFlatTableProducer.clone(
0470     src = finalJets.src,
0471     cut = cms.string("pt<15 && abs(eta)<9.9"),
0472     name = cms.string("CorrT1METJet"),
0473     doc  = cms.string("Additional low-pt ak4 CHS jets for Type-1 MET re-correction"),
0474     variables = cms.PSet(
0475         rawPt = Var("pt()*jecFactor('Uncorrected')",float,precision=10),
0476         rawMass = Var("mass()*jecFactor('Uncorrected')",float,precision=10),
0477         eta  = Var("eta",  float,precision=12),
0478         phi = Var("phi", float, precision=12),
0479         area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10),
0480         EmEF = Var("chargedEmEnergyFraction()+neutralEmEnergyFraction()", float, doc="charged+neutral Electromagnetic Energy Fraction", precision=10),
0481     )
0482 )
0483 
0484 corrT1METJetTable.variables.muonSubtrFactor = Var("1-userFloat('muonSubtrRawPt')/(pt()*jecFactor('Uncorrected'))",float,doc="1-(muon-subtracted raw pt)/(raw pt)",precision=6)
0485 corrT1METJetTable.variables.muonSubtrDeltaEta = Var("userFloat('muonSubtrRawEta') - eta()",float,doc="muon-subtracted raw eta - eta",precision=10)
0486 corrT1METJetTable.variables.muonSubtrDeltaPhi = Var("userFloat('muonSubtrRawPhi') - phi()",float,doc="muon-subtracted raw phi - phi",precision=10)
0487 jetTable.variables.muonSubtrFactor = Var("1-userFloat('muonSubtrRawPt')/(pt()*jecFactor('Uncorrected'))",float,doc="1-(muon-subtracted raw pt)/(raw pt)",precision=6)
0488 jetTable.variables.muonSubtrDeltaEta = Var("userFloat('muonSubtrRawEta') - eta()",float,doc="muon-subtracted raw eta - eta",precision=10)
0489 jetTable.variables.muonSubtrDeltaPhi = Var("userFloat('muonSubtrRawPhi') - phi()",float,doc="muon-subtracted raw phi - phi",precision=10)
0490 
0491 jetForMETTask =  cms.Task(basicJetsForMetForT1METNano,corrT1METJetTable)
0492 
0493 #before cross linking
0494 jetUserDataTask = cms.Task(bJetVars,qgtagger,jercVars,pileupJetIdNano)
0495 
0496 #before cross linking
0497 jetTask = cms.Task(jetCorrFactorsNano,updatedJets,jetUserDataTask,updatedJetsWithUserData,finalJets)
0498 
0499 #after cross linkining
0500 jetTablesTask = cms.Task(bjetNN,cjetNN,jetTable)