Skip to content

Commit

Permalink
Merge pull request #334 from peruzzim/port_pr_271
Browse files Browse the repository at this point in the history
Port PR 271 to master
  • Loading branch information
peruzzim committed May 6, 2019
2 parents cde04d8 + f104b5b commit 1992b44
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 84 deletions.
144 changes: 70 additions & 74 deletions PhysicsTools/NanoAOD/python/jets_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,68 +15,105 @@
softActivityJets5 = cms.EDFilter("CandPtrSelector", src = cms.InputTag("softActivityJets"), cut = cms.string('pt>5'))
softActivityJets2 = cms.EDFilter("CandPtrSelector", src = cms.InputTag("softActivityJets"), cut = cms.string('pt>2'))

from PhysicsTools.PatAlgos.recoLayer0.jetCorrFactors_cfi import *
# Note: Safe to always add 'L2L3Residual' as MC contains dummy L2L3Residual corrections (always set to 1)
# (cf. https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookJetEnergyCorrections#CMSSW_7_6_4_and_above )
jetCorrFactorsNano = patJetCorrFactors.clone(src='slimmedJets',
levels = cms.vstring('L1FastJet',
'L2Relative',
'L3Absolute',
'L2L3Residual'),
primaryVertices = cms.InputTag("offlineSlimmedPrimaryVertices"),
)
jetCorrFactorsAK8 = patJetCorrFactors.clone(src='slimmedJetsAK8',
levels = cms.vstring('L1FastJet',
'L2Relative',
'L3Absolute',
'L2L3Residual'),
payload = cms.string('AK8PFPuppi'),
primaryVertices = cms.InputTag("offlineSlimmedPrimaryVertices"),
)
run2_miniAOD_80XLegacy.toModify(jetCorrFactorsAK8, payload = cms.string('AK8PFchs')) # ak8PFJetsCHS in 2016 80X miniAOD

from PhysicsTools.PatAlgos.producersLayer1.jetUpdater_cfi import *

updatedJets = updatedPatJets.clone(
addBTagInfo=False,
jetSource='slimmedJets',
jetCorrFactorsSource=cms.VInputTag(cms.InputTag("jetCorrFactorsNano") ),
)

updatedJetsAK8 = updatedPatJets.clone(
addBTagInfo=False,
jetSource='slimmedJetsAK8',
jetCorrFactorsSource=cms.VInputTag(cms.InputTag("jetCorrFactorsAK8") ),
)


looseJetId = cms.EDProducer("PatJetIDValueMapProducer",
filterParams=cms.PSet(
version = cms.string('WINTER16'),
quality = cms.string('LOOSE'),
),
src = cms.InputTag("slimmedJets")
src = cms.InputTag("updatedJets")
)
tightJetId = cms.EDProducer("PatJetIDValueMapProducer",
filterParams=cms.PSet(
version = cms.string('WINTER17'),
quality = cms.string('TIGHT'),
),
src = cms.InputTag("slimmedJets")
src = cms.InputTag("updatedJets")
)
for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
modifier.toModify( tightJetId.filterParams, version = "WINTER16" )

tightJetIdLepVeto = cms.EDProducer("PatJetIDValueMapProducer",
filterParams=cms.PSet(
version = cms.string('WINTER17'),
quality = cms.string('TIGHTLEPVETO'),
),
src = cms.InputTag("slimmedJets")
src = cms.InputTag("updatedJets")
)
for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
modifier.toModify( tightJetId.filterParams, version = "WINTER16" )
modifier.toModify( tightJetIdLepVeto.filterParams, version = "WINTER16" )


looseJetIdAK8 = cms.EDProducer("PatJetIDValueMapProducer",
filterParams=cms.PSet(
version = cms.string('WINTER16'),
quality = cms.string('LOOSE'),
),
src = cms.InputTag("slimmedJetsAK8")
src = cms.InputTag("updatedJetsAK8")
)
tightJetIdAK8 = cms.EDProducer("PatJetIDValueMapProducer",
filterParams=cms.PSet(
version = cms.string('WINTER17'),
quality = cms.string('TIGHT'),
),
src = cms.InputTag("slimmedJetsAK8")
src = cms.InputTag("updatedJetsAK8")
)
for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
modifier.toModify( tightJetIdAK8.filterParams, version = "WINTER16" )

tightJetIdLepVetoAK8 = cms.EDProducer("PatJetIDValueMapProducer",
filterParams=cms.PSet(
version = cms.string('WINTER17'),
quality = cms.string('TIGHTLEPVETO'),
),
src = cms.InputTag("slimmedJetsAK8")
src = cms.InputTag("updatedJetsAK8")
)
for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
modifier.toModify( tightJetIdAK8.filterParams, version = "WINTER16" )
modifier.toModify( tightJetIdLepVetoAK8.filterParams, version = "WINTER16" )


bJetVars = cms.EDProducer("JetRegressionVarProducer",
pvsrc = cms.InputTag("offlineSlimmedPrimaryVertices"),
src = cms.InputTag("slimmedJets"),
src = cms.InputTag("updatedJets"),
svsrc = cms.InputTag("slimmedSecondaryVertices"),
gpsrc = cms.InputTag("prunedGenParticles"),
#musrc = cms.InputTag("slimmedMuons"),
#elesrc = cms.InputTag("slimmedElectrons")
)


slimmedJetsWithUserData = cms.EDProducer("PATJetUserDataEmbedder",
src = cms.InputTag("slimmedJets"),
updatedJetsWithUserData = cms.EDProducer("PATJetUserDataEmbedder",
src = cms.InputTag("updatedJets"),
userFloats = cms.PSet(
leadTrackPt = cms.InputTag("bJetVars:leadTrackPt"),
leptonPtRel = cms.InputTag("bJetVars:leptonPtRel"),
Expand All @@ -93,7 +130,7 @@
vtx3deL = cms.InputTag("bJetVars:vtx3deL"),
ptD = cms.InputTag("bJetVars:ptD"),
genPtwNu = cms.InputTag("bJetVars:genPtwNu"),

qgl = cms.InputTag('qgtagger:qgLikelihood'),
),
userInts = cms.PSet(
tightId = cms.InputTag("tightJetId"),
Expand All @@ -104,65 +141,31 @@
),
)
for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
modifier.toModify( slimmedJetsWithUserData.userInts,
modifier.toModify( updatedJetsWithUserData.userInts,
looseId = cms.InputTag("looseJetId"),
tightIdLepVeto = None,
)

slimmedJetsAK8WithUserData = cms.EDProducer("PATJetUserDataEmbedder",
src = cms.InputTag("slimmedJetsAK8"),
updatedJetsAK8WithUserData = cms.EDProducer("PATJetUserDataEmbedder",
src = cms.InputTag("updatedJetsAK8"),
userFloats = cms.PSet(),
userInts = cms.PSet(
tightId = cms.InputTag("tightJetIdAK8"),
tightIdLepVeto = cms.InputTag("tightJetIdLepVetoAK8"),
),
)
for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
modifier.toModify( slimmedJetsAK8WithUserData.userInts,
modifier.toModify( updatedJetsAK8WithUserData.userInts,
looseId = cms.InputTag("looseJetIdAK8"),
tightIdLepVeto = None,
)

from PhysicsTools.PatAlgos.recoLayer0.jetCorrFactors_cfi import *
# Note: Safe to always add 'L2L3Residual' as MC contains dummy L2L3Residual corrections (always set to 1)
# (cf. https://twiki.cern.ch/twiki/bin/view/CMSPublic/WorkBookJetEnergyCorrections#CMSSW_7_6_4_and_above )
jetCorrFactorsNano = patJetCorrFactors.clone(src='slimmedJetsWithUserData',
levels = cms.vstring('L1FastJet',
'L2Relative',
'L3Absolute',
'L2L3Residual'),
primaryVertices = cms.InputTag("offlineSlimmedPrimaryVertices"),
)
jetCorrFactorsAK8 = patJetCorrFactors.clone(src='slimmedJetsAK8WithUserData',
levels = cms.vstring('L1FastJet',
'L2Relative',
'L3Absolute',
'L2L3Residual'),
payload = cms.string('AK8PFPuppi'),
primaryVertices = cms.InputTag("offlineSlimmedPrimaryVertices"),
)
run2_miniAOD_80XLegacy.toModify(jetCorrFactorsAK8, payload = cms.string('AK8PFchs')) # ak8PFJetsCHS in 2016 80X miniAOD

from PhysicsTools.PatAlgos.producersLayer1.jetUpdater_cfi import *
updatedJets = updatedPatJets.clone(
addBTagInfo=False,
jetSource='slimmedJetsWithUserData',
jetCorrFactorsSource=cms.VInputTag(cms.InputTag("jetCorrFactorsNano") ),
)

finalJets = cms.EDFilter("PATJetRefSelector",
src = cms.InputTag("updatedJets"),
src = cms.InputTag("updatedJetsWithUserData"),
cut = cms.string("pt > 15")
)

updatedJetsAK8 = updatedPatJets.clone(
addBTagInfo=False,
jetSource='slimmedJetsAK8WithUserData',
jetCorrFactorsSource=cms.VInputTag(cms.InputTag("jetCorrFactorsAK8") ),
)

finalJetsAK8 = cms.EDFilter("PATJetRefSelector",
src = cms.InputTag("updatedJetsAK8"),
src = cms.InputTag("updatedJetsAK8WithUserData"),
cut = cms.string("pt > 170")
)

Expand Down Expand Up @@ -202,7 +205,7 @@
#puIdDisc = Var("userFloat('pileupJetId:fullDiscriminant')",float,doc="Pilup ID discriminant",precision=10),
puId = Var("userInt('pileupJetId:fullId')",int,doc="Pilup ID flags"),
jetId = Var("userInt('tightId')*2+4*userInt('tightIdLepVeto')",int,doc="Jet ID flags bit1 is loose (always false in 2017 since it does not exist), bit2 is tight, bit3 is tightLepVeto"),
qgl = Var("userFloat('QGTagger:qgLikelihood')",float,doc="Quark vs Gluon likelihood discriminator",precision=10),
qgl = Var("userFloat('qgl')",float,doc="Quark vs Gluon likelihood discriminator",precision=10),
nConstituents = Var("numberOfDaughters()",int,doc="Number of particles in the jet"),
rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6),
chHEF = Var("chargedHadronEnergyFraction()", float, doc="charged Hadron Energy Fraction", precision= 6),
Expand All @@ -217,10 +220,8 @@
jetTable.variables.pt.precision=10

### Era dependent customization
run2_miniAOD_80XLegacy.toModify( slimmedJetsWithUserData.userFloats,qgl=cms.InputTag('qgtagger80x:qgLikelihood'))
run2_miniAOD_80XLegacy.toModify( jetTable.variables.qgl, expr="userFloat('qgl')" )
for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
modifier.toModify( jetTable.variables, jetId = Var("userInt('tightId')*2+userInt('looseId')",int,doc="Jet ID flags bit1 is loose, bit2 is tight"))
modifier.toModify( jetTable.variables, jetId = Var("userInt('tightIdLepVeto')*4+userInt('tightId')*2+userInt('looseId')",int,doc="Jet ID flags bit1 is loose, bit2 is tight, bit3 is tightLepVeto"))

bjetMVA= cms.EDProducer("BJetEnergyRegressionMVA",
backend = cms.string("TMVA"),
Expand Down Expand Up @@ -526,22 +527,17 @@
### Era dependent customization
run2_miniAOD_80XLegacy.toModify( genJetFlavourTable, jetFlavourInfos = cms.InputTag("genJetFlavourAssociation"),)

from RecoJets.JetProducers.QGTagger_cfi import QGTagger
qgtagger=QGTagger.clone(srcJets="updatedJets",srcVertexCollection="offlineSlimmedPrimaryVertices")

#before cross linking
jetSequence = cms.Sequence(tightJetId+tightJetIdLepVeto+bJetVars+slimmedJetsWithUserData+jetCorrFactorsNano+updatedJets+tightJetIdAK8+tightJetIdLepVetoAK8+slimmedJetsAK8WithUserData+jetCorrFactorsAK8+updatedJetsAK8+chsForSATkJets+softActivityJets+softActivityJets2+softActivityJets5+softActivityJets10+finalJets+finalJetsAK8)
jetSequence = cms.Sequence(jetCorrFactorsNano+updatedJets+tightJetId+tightJetIdLepVeto+bJetVars+qgtagger+updatedJetsWithUserData+jetCorrFactorsAK8+updatedJetsAK8+tightJetIdAK8+tightJetIdLepVetoAK8+updatedJetsAK8WithUserData+chsForSATkJets+softActivityJets+softActivityJets2+softActivityJets5+softActivityJets10+finalJets+finalJetsAK8)

from RecoJets.JetProducers.QGTagger_cfi import QGTagger
qgtagger80x=QGTagger.clone(srcJets="slimmedJets",srcVertexCollection="offlineSlimmedPrimaryVertices")

_jetSequence_80X = jetSequence.copy()
_jetSequence_80X.replace(tightJetIdLepVeto, looseJetId)
_jetSequence_80X.replace(tightJetIdLepVetoAK8, looseJetIdAK8)
_jetSequence_80X.insert(1,qgtagger80x)
run2_miniAOD_80XLegacy.toReplaceWith(jetSequence, _jetSequence_80X)

_jetSequence_94X2016 = jetSequence.copy()
_jetSequence_94X2016.replace(tightJetIdLepVeto, looseJetId)
_jetSequence_94X2016.replace(tightJetIdLepVetoAK8, looseJetIdAK8)
run2_nanoAOD_94X2016.toReplaceWith(jetSequence, _jetSequence_94X2016)
_jetSequence_2016 = jetSequence.copy()
_jetSequence_2016.insert(_jetSequence_2016.index(tightJetId), looseJetId)
_jetSequence_2016.insert(_jetSequence_2016.index(tightJetIdAK8), looseJetIdAK8)
for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
modifier.toReplaceWith(jetSequence, _jetSequence_2016)

#after cross linkining
jetTables = cms.Sequence(bjetMVA+bjetNN+jetTable+fatJetTable+subJetTable+saJetTable+saTable)
Expand Down
14 changes: 4 additions & 10 deletions PhysicsTools/NanoAOD/python/nano_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -158,12 +158,8 @@ def nanoAOD_addDeepInfo(process,addDeepBTag,addDeepFlavour):
postfix = 'WithDeepInfo',
)
process.load("Configuration.StandardSequences.MagneticField_cff")
process.looseJetId.src="selectedUpdatedPatJetsWithDeepInfo"
process.tightJetId.src="selectedUpdatedPatJetsWithDeepInfo"
process.tightJetIdLepVeto.src="selectedUpdatedPatJetsWithDeepInfo"
process.bJetVars.src="selectedUpdatedPatJetsWithDeepInfo"
process.slimmedJetsWithUserData.src="selectedUpdatedPatJetsWithDeepInfo"
process.qgtagger80x.srcJets="selectedUpdatedPatJetsWithDeepInfo"
process.jetCorrFactorsNano.src="selectedUpdatedPatJetsWithDeepInfo"
process.updatedJets.jetSource="selectedUpdatedPatJetsWithDeepInfo"
if addDeepFlavour:
process.pfDeepFlavourJetTagsWithDeepInfo.graph_path = 'RecoBTag/Combined/data/DeepFlavourV03_10X_training/constant_graph.pb'
process.pfDeepFlavourJetTagsWithDeepInfo.lp_names = ["cpf_input_batchnorm/keras_learning_phase"]
Expand Down Expand Up @@ -220,10 +216,8 @@ def nanoAOD_addDeepInfoAK8(process,addDeepBTag,addDeepBoostedJet,jecPayload):
postfix='AK8WithDeepInfo',
printWarning = False
)
process.looseJetIdAK8.src = "selectedUpdatedPatJetsAK8WithDeepInfo"
process.tightJetIdAK8.src = "selectedUpdatedPatJetsAK8WithDeepInfo"
process.tightJetIdLepVetoAK8.src = "selectedUpdatedPatJetsAK8WithDeepInfo"
process.slimmedJetsAK8WithUserData.src = "selectedUpdatedPatJetsAK8WithDeepInfo"
process.jetCorrFactorsAK8.src="selectedUpdatedPatJetsAK8WithDeepInfo"
process.updatedJetsAK8.jetSource="selectedUpdatedPatJetsAK8WithDeepInfo"
return process

from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMetCorAndUncFromMiniAOD
Expand Down

0 comments on commit 1992b44

Please sign in to comment.