From cdcd99a54537bd55b6de8828b6dcc8498063f165 Mon Sep 17 00:00:00 2001 From: maria Date: Sun, 23 Jan 2022 22:36:34 +0100 Subject: [PATCH 1/3] simplify jets separating softActivity,jetMC and avoid duplication of jetForT1METJet --- PhysicsTools/NanoAOD/python/jetMC_cff.py | 144 ++++++++++++ PhysicsTools/NanoAOD/python/jets_cff.py | 208 +++--------------- PhysicsTools/NanoAOD/python/nano_cff.py | 34 +-- .../NanoAOD/python/softActivity_cff.py | 47 ++++ 4 files changed, 224 insertions(+), 209 deletions(-) create mode 100644 PhysicsTools/NanoAOD/python/jetMC_cff.py create mode 100644 PhysicsTools/NanoAOD/python/softActivity_cff.py diff --git a/PhysicsTools/NanoAOD/python/jetMC_cff.py b/PhysicsTools/NanoAOD/python/jetMC_cff.py new file mode 100644 index 0000000000000..6b0ef0203261a --- /dev/null +++ b/PhysicsTools/NanoAOD/python/jetMC_cff.py @@ -0,0 +1,144 @@ +import FWCore.ParameterSet.Config as cms + +from PhysicsTools.NanoAOD.nano_eras_cff import * +from PhysicsTools.NanoAOD.common_cff import * +from PhysicsTools.NanoAOD.jets_cff import fatJetTable as _fatJetTable +from PhysicsTools.NanoAOD.jets_cff import subJetTable as _subJetTable + +jetMCTable = cms.EDProducer("SimpleCandidateFlatTableProducer", + src = cms.InputTag("linkedObjects","jets"), + cut = cms.string(""), #we should not filter on cross linked collections + name = cms.string("Jet"), + singleton = cms.bool(False), # the number of entries is variable + extension = cms.bool(True), # this is an extension table for the jets + variables = cms.PSet( + partonFlavour = Var("partonFlavour()", int, doc="flavour from parton matching"), + hadronFlavour = Var("hadronFlavour()", int, doc="flavour from hadron ghost clustering"), + genJetIdx = Var("?genJetFwdRef().backRef().isNonnull()?genJetFwdRef().backRef().key():-1", int, doc="index of matched gen jet"), + ) +) +genJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", + src = cms.InputTag("slimmedGenJets"), + cut = cms.string("pt > 10"), + name = cms.string("GenJet"), + doc = cms.string("slimmedGenJets, i.e. ak4 Jets made with visible genparticles"), + singleton = cms.bool(False), # the number of entries is variable + extension = cms.bool(False), # this is the main table for the genjets + variables = cms.PSet(P4Vars, + #anything else? + ) +) + +patJetPartonsNano = cms.EDProducer('HadronAndPartonSelector', + src = cms.InputTag("generator"), + particles = cms.InputTag("prunedGenParticles"), + partonMode = cms.string("Auto"), + fullChainPhysPartons = cms.bool(True) +) + +genJetFlavourAssociation = cms.EDProducer("JetFlavourClustering", + jets = genJetTable.src, + bHadrons = cms.InputTag("patJetPartonsNano","bHadrons"), + cHadrons = cms.InputTag("patJetPartonsNano","cHadrons"), + partons = cms.InputTag("patJetPartonsNano","physicsPartons"), + leptons = cms.InputTag("patJetPartonsNano","leptons"), + jetAlgorithm = cms.string("AntiKt"), + rParam = cms.double(0.4), + ghostRescaling = cms.double(1e-18), + hadronFlavourHasPriority = cms.bool(False) +) + +genJetFlavourTable = cms.EDProducer("GenJetFlavourTableProducer", + name = genJetTable.name, + src = genJetTable.src, + cut = genJetTable.cut, + deltaR = cms.double(0.1), + jetFlavourInfos = cms.InputTag("slimmedGenJetsFlavourInfos"), +) + +genJetAK8Table = cms.EDProducer("SimpleCandidateFlatTableProducer", + src = cms.InputTag("slimmedGenJetsAK8"), + cut = cms.string("pt > 100."), + name = cms.string("GenJetAK8"), + doc = cms.string("slimmedGenJetsAK8, i.e. ak8 Jets made with visible genparticles"), + singleton = cms.bool(False), # the number of entries is variable + extension = cms.bool(False), # this is the main table for the genjets + variables = cms.PSet(P4Vars, + #anything else? + ) +) + +genJetAK8FlavourAssociation = cms.EDProducer("JetFlavourClustering", + jets = genJetAK8Table.src, + bHadrons = cms.InputTag("patJetPartonsNano","bHadrons"), + cHadrons = cms.InputTag("patJetPartonsNano","cHadrons"), + partons = cms.InputTag("patJetPartonsNano","physicsPartons"), + leptons = cms.InputTag("patJetPartonsNano","leptons"), + jetAlgorithm = cms.string("AntiKt"), + rParam = cms.double(0.8), + ghostRescaling = cms.double(1e-18), + hadronFlavourHasPriority = cms.bool(False) +) + +genJetAK8FlavourTable = cms.EDProducer("GenJetFlavourTableProducer", + name = genJetAK8Table.name, + src = genJetAK8Table.src, + cut = genJetAK8Table.cut, + deltaR = cms.double(0.1), + jetFlavourInfos = cms.InputTag("genJetAK8FlavourAssociation"), +) +fatJetMCTable = cms.EDProducer("SimpleCandidateFlatTableProducer", + src = _fatJetTable.src, + cut = _fatJetTable.cut, + name = _fatJetTable.name, + singleton = cms.bool(False), + extension = cms.bool(True), + variables = cms.PSet( + nBHadrons = Var("jetFlavourInfo().getbHadrons().size()", "uint8", doc="number of b-hadrons"), + nCHadrons = Var("jetFlavourInfo().getcHadrons().size()", "uint8", doc="number of c-hadrons"), + hadronFlavour = Var("hadronFlavour()", int, doc="flavour from hadron ghost clustering"), + genJetAK8Idx = Var("?genJetFwdRef().backRef().isNonnull() && genJetFwdRef().backRef().pt() > 100.?genJetFwdRef().backRef().key():-1", int, doc="index of matched gen AK8 jet"), + ) +) + +genSubJetAK8Table = cms.EDProducer("SimpleCandidateFlatTableProducer", + src = cms.InputTag("slimmedGenJetsAK8SoftDropSubJets"), + cut = cms.string(""), ## These don't get a pt cut, but in miniAOD only subjets from fat jets with pt > 100 are kept + name = cms.string("SubGenJetAK8"), + doc = cms.string("slimmedGenJetsAK8SoftDropSubJets, i.e. subjets of ak8 Jets made with visible genparticles"), + singleton = cms.bool(False), # the number of entries is variable + extension = cms.bool(False), # this is the main table for the genjets + variables = cms.PSet(P4Vars, + #anything else? + ) +) +subjetMCTable = cms.EDProducer("SimpleCandidateFlatTableProducer", + src = _subJetTable.src, + cut = _subJetTable.cut, + name = _subJetTable.name, + singleton = cms.bool(False), + extension = cms.bool(True), + variables = cms.PSet( + nBHadrons = Var("jetFlavourInfo().getbHadrons().size()", "uint8", doc="number of b-hadrons"), + nCHadrons = Var("jetFlavourInfo().getcHadrons().size()", "uint8", doc="number of c-hadrons"), + hadronFlavour = Var("hadronFlavour()", int, doc="flavour from hadron ghost clustering"), + ) +) + + +jetMCTaskak4 = cms.Task(jetMCTable,genJetTable,patJetPartonsNano,genJetFlavourTable) +jetMCTaskak8 = cms.Task(genJetAK8Table,genJetAK8FlavourAssociation,genJetAK8FlavourTable,fatJetMCTable,genSubJetAK8Table,subjetMCTable) +jetMCTask = jetMCTaskak4.copy() +jetMCTask.add(jetMCTaskak8) + + +### Era dependent customization +run2_miniAOD_80XLegacy.toModify( genJetFlavourTable, jetFlavourInfos = cms.InputTag("genJetFlavourAssociation"),) + + +_jetMCTaskak8 = jetMCTaskak8.copyAndExclude([genSubJetAK8Table]) + +_jetMC_pre94XTask = jetMCTaskak4.copy() +_jetMC_pre94XTask.add(genJetFlavourAssociation) +_jetMC_pre94XTask.add(_jetMCTaskak8) +run2_miniAOD_80XLegacy.toReplaceWith(jetMCTask, _jetMC_pre94XTask) diff --git a/PhysicsTools/NanoAOD/python/jets_cff.py b/PhysicsTools/NanoAOD/python/jets_cff.py index 14821798773ec..843a99a738669 100644 --- a/PhysicsTools/NanoAOD/python/jets_cff.py +++ b/PhysicsTools/NanoAOD/python/jets_cff.py @@ -2,17 +2,8 @@ from PhysicsTools.NanoAOD.nano_eras_cff import * from PhysicsTools.NanoAOD.common_cff import * -from RecoJets.JetProducers.ak4PFJetsBetaStar_cfi import * - ##################### User floats producers, selectors ########################## -from RecoJets.JetProducers.ak4PFJets_cfi import ak4PFJets - -chsForSATkJets = cms.EDFilter("CandPtrSelector", src = cms.InputTag("packedPFCandidates"), cut = cms.string('charge()!=0 && pvAssociationQuality()>=5 && vertexRef().key()==0')) -softActivityJets = ak4PFJets.clone(src = 'chsForSATkJets', doAreaFastjet = False, jetPtMin=1) -softActivityJets10 = cms.EDFilter("CandPtrSelector", src = cms.InputTag("softActivityJets"), cut = cms.string('pt>10')) -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) @@ -203,11 +194,9 @@ ) - ##################### Tables for final output and docs ########################## - jetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", src = cms.InputTag("linkedObjects","jets"), cut = cms.string(""), #we should not filter on cross linked collections @@ -391,38 +380,6 @@ ) -##### Soft Activity tables -saJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("softActivityJets"), - cut = cms.string(""), - maxLen = cms.uint32(6), - name = cms.string("SoftActivityJet"), - doc = cms.string("jets clustered from charged candidates compatible with primary vertex (" + chsForSATkJets.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the jets - variables = cms.PSet(P3Vars, - ) -) - -saJetTable.variables.pt.precision=10 -saJetTable.variables.eta.precision=8 -saJetTable.variables.phi.precision=8 - -saTable = cms.EDProducer("GlobalVariablesTableProducer", - variables = cms.PSet( - SoftActivityJetHT = ExtVar( cms.InputTag("softActivityJets"), "candidatescalarsum", doc = "scalar sum of soft activity jet pt, pt>1" ), - SoftActivityJetHT10 = ExtVar( cms.InputTag("softActivityJets10"), "candidatescalarsum", doc = "scalar sum of soft activity jet pt , pt >10" ), - SoftActivityJetHT5 = ExtVar( cms.InputTag("softActivityJets5"), "candidatescalarsum", doc = "scalar sum of soft activity jet pt, pt>5" ), - SoftActivityJetHT2 = ExtVar( cms.InputTag("softActivityJets2"), "candidatescalarsum", doc = "scalar sum of soft activity jet pt, pt >2" ), - SoftActivityJetNjets10 = ExtVar( cms.InputTag("softActivityJets10"), "candidatesize", doc = "number of soft activity jet pt, pt >2" ), - SoftActivityJetNjets5 = ExtVar( cms.InputTag("softActivityJets5"), "candidatesize", doc = "number of soft activity jet pt, pt >5" ), - SoftActivityJetNjets2 = ExtVar( cms.InputTag("softActivityJets2"), "candidatesize", doc = "number of soft activity jet pt, pt >10" ), - - ) -) - - - ## BOOSTED STUFF ################# fatJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", src = cms.InputTag("finalJetsAK8"), @@ -569,9 +526,30 @@ run2_miniAOD_80XLegacy.toModify( subJetTable.variables, btagCMVA = None, btagDeepB = None) +################################################################################ +# JETS FOR MET type1 +################################################################################ + +basicJetsForMetForT1METNano = cms.EDProducer("PATJetCleanerForType1MET", + src = updatedJetsWithUserData.src, + jetCorrEtaMax = cms.double(9.9), + jetCorrLabel = cms.InputTag("L3Absolute"), + jetCorrLabelRes = cms.InputTag("L2L3Residual"), + offsetCorrLabel = cms.InputTag("L1FastJet"), + skipEM = cms.bool(False), + skipEMfractionThreshold = cms.double(0.9), + skipMuonSelection = cms.string('isGlobalMuon | isStandAloneMuon'), + skipMuons = cms.bool(True), + type1JetPtThreshold = cms.double(0.0), + calcMuonSubtrRawPtAsValueMap = cms.bool(True) + ) + +updatedJetsWithUserData.userFloats.muonSubtrRawPt = cms.InputTag("basicJetsForMetForT1METNano:MuonSubtrRawPt") + + corrT1METJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("corrT1METJets"), - cut = cms.string(""), + src = finalJets.src, + cut = cms.string("pt<15 && abs(eta)<9.9"), name = cms.string("CorrT1METJet"), doc = cms.string("Additional low-pt jets for Type-1 MET re-correction"), singleton = cms.bool(False), # the number of entries is variable @@ -584,126 +562,11 @@ ) ) +corrT1METJetTable.variables.muonSubtrFactor = Var("1-userFloat('muonSubtrRawPt')/(pt()*jecFactor('Uncorrected'))",float,doc="1-(muon-subtracted raw pt)/(raw pt)",precision=6) +jetTable.variables.muonSubtrFactor = Var("1-userFloat('muonSubtrRawPt')/(pt()*jecFactor('Uncorrected'))",float,doc="1-(muon-subtracted raw pt)/(raw pt)",precision=6) +jetForMETTask = cms.Task(basicJetsForMetForT1METNano,corrT1METJetTable) -## MC STUFF ###################### -jetMCTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("linkedObjects","jets"), - cut = cms.string(""), #we should not filter on cross linked collections - name = cms.string("Jet"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(True), # this is an extension table for the jets - variables = cms.PSet( - partonFlavour = Var("partonFlavour()", int, doc="flavour from parton matching"), - hadronFlavour = Var("hadronFlavour()", int, doc="flavour from hadron ghost clustering"), - genJetIdx = Var("?genJetFwdRef().backRef().isNonnull()?genJetFwdRef().backRef().key():-1", int, doc="index of matched gen jet"), - ) -) -genJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("slimmedGenJets"), - cut = cms.string("pt > 10"), - name = cms.string("GenJet"), - doc = cms.string("slimmedGenJets, i.e. ak4 Jets made with visible genparticles"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the genjets - variables = cms.PSet(P4Vars, - #anything else? - ) -) -patJetPartonsNano = cms.EDProducer('HadronAndPartonSelector', - src = cms.InputTag("generator"), - particles = cms.InputTag("prunedGenParticles"), - partonMode = cms.string("Auto"), - fullChainPhysPartons = cms.bool(True) -) -genJetFlavourAssociation = cms.EDProducer("JetFlavourClustering", - jets = genJetTable.src, - bHadrons = cms.InputTag("patJetPartonsNano","bHadrons"), - cHadrons = cms.InputTag("patJetPartonsNano","cHadrons"), - partons = cms.InputTag("patJetPartonsNano","physicsPartons"), - leptons = cms.InputTag("patJetPartonsNano","leptons"), - jetAlgorithm = cms.string("AntiKt"), - rParam = cms.double(0.4), - ghostRescaling = cms.double(1e-18), - hadronFlavourHasPriority = cms.bool(False) -) -genJetFlavourTable = cms.EDProducer("GenJetFlavourTableProducer", - name = genJetTable.name, - src = genJetTable.src, - cut = genJetTable.cut, - deltaR = cms.double(0.1), - jetFlavourInfos = cms.InputTag("slimmedGenJetsFlavourInfos"), -) - -genJetAK8Table = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("slimmedGenJetsAK8"), - cut = cms.string("pt > 100."), - name = cms.string("GenJetAK8"), - doc = cms.string("slimmedGenJetsAK8, i.e. ak8 Jets made with visible genparticles"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the genjets - variables = cms.PSet(P4Vars, - #anything else? - ) -) -genJetAK8FlavourAssociation = cms.EDProducer("JetFlavourClustering", - jets = genJetAK8Table.src, - bHadrons = cms.InputTag("patJetPartonsNano","bHadrons"), - cHadrons = cms.InputTag("patJetPartonsNano","cHadrons"), - partons = cms.InputTag("patJetPartonsNano","physicsPartons"), - leptons = cms.InputTag("patJetPartonsNano","leptons"), - jetAlgorithm = cms.string("AntiKt"), - rParam = cms.double(0.8), - ghostRescaling = cms.double(1e-18), - hadronFlavourHasPriority = cms.bool(False) -) -genJetAK8FlavourTable = cms.EDProducer("GenJetFlavourTableProducer", - name = genJetAK8Table.name, - src = genJetAK8Table.src, - cut = genJetAK8Table.cut, - deltaR = cms.double(0.1), - jetFlavourInfos = cms.InputTag("genJetAK8FlavourAssociation"), -) -fatJetMCTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = fatJetTable.src, - cut = fatJetTable.cut, - name = fatJetTable.name, - singleton = cms.bool(False), - extension = cms.bool(True), - variables = cms.PSet( - nBHadrons = Var("jetFlavourInfo().getbHadrons().size()", "uint8", doc="number of b-hadrons"), - nCHadrons = Var("jetFlavourInfo().getcHadrons().size()", "uint8", doc="number of c-hadrons"), - hadronFlavour = Var("hadronFlavour()", int, doc="flavour from hadron ghost clustering"), - genJetAK8Idx = Var("?genJetFwdRef().backRef().isNonnull() && genJetFwdRef().backRef().pt() > 100.?genJetFwdRef().backRef().key():-1", int, doc="index of matched gen AK8 jet"), - ) -) - -genSubJetAK8Table = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("slimmedGenJetsAK8SoftDropSubJets"), - cut = cms.string(""), ## These don't get a pt cut, but in miniAOD only subjets from fat jets with pt > 100 are kept - name = cms.string("SubGenJetAK8"), - doc = cms.string("slimmedGenJetsAK8SoftDropSubJets, i.e. subjets of ak8 Jets made with visible genparticles"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the genjets - variables = cms.PSet(P4Vars, - #anything else? - ) -) -subjetMCTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = subJetTable.src, - cut = subJetTable.cut, - name = subJetTable.name, - singleton = cms.bool(False), - extension = cms.bool(True), - variables = cms.PSet( - nBHadrons = Var("jetFlavourInfo().getbHadrons().size()", "uint8", doc="number of b-hadrons"), - nCHadrons = Var("jetFlavourInfo().getcHadrons().size()", "uint8", doc="number of c-hadrons"), - hadronFlavour = Var("hadronFlavour()", int, doc="flavour from hadron ghost clustering"), - ) -) - -### 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") @@ -730,8 +593,6 @@ modifier.toReplaceWith(jetUserDataTask,_jetUserDataTask2016) modifier.toReplaceWith(jetAK8UserDataTask,_jetAK8UserDataTask2016) -softActivityTask = cms.Task(chsForSATkJets,softActivityJets,softActivityJets2,softActivityJets5,softActivityJets10) - #HF shower shape recomputation #Only run if needed (i.e. if default MINIAOD info is missing or outdated because of new JECs...) from RecoJets.JetProducers.hfJetShowerShape_cfi import hfJetShowerShape @@ -752,23 +613,10 @@ modifier.toModify(jetUserDataTask, jetUserDataTask.add(hfJetShowerShapeforNanoAOD)) #before cross linking -jetTask = cms.Task(jetCorrFactorsNano,updatedJets,jetUserDataTask,updatedJetsWithUserData,jetCorrFactorsAK8,updatedJetsAK8,jetAK8UserDataTask,updatedJetsAK8WithUserData,softActivityTask,finalJets,finalJetsAK8) +jetTask = cms.Task(jetCorrFactorsNano,updatedJets,jetUserDataTask,updatedJetsWithUserData,jetCorrFactorsAK8,updatedJetsAK8,jetAK8UserDataTask,updatedJetsAK8WithUserData,finalJets,finalJetsAK8) #after lepton collections have been run jetLepTask = cms.Task(lepInJetVars) #after cross linkining -jetTablesTask = cms.Task(bjetNN,cjetNN,jetTable,fatJetTable,subJetTable,saJetTable,saTable) - -#MC only producers and tables -jetMCTaskak4 = cms.Task(jetMCTable,genJetTable,patJetPartonsNano,genJetFlavourTable) -jetMCTaskak8 = cms.Task(genJetAK8Table,genJetAK8FlavourAssociation,genJetAK8FlavourTable,fatJetMCTable,genSubJetAK8Table,subjetMCTable) -jetMCTask = jetMCTaskak4.copy() -jetMCTask.add(jetMCTaskak8) - -_jetMCTaskak8 = jetMCTaskak8.copyAndExclude([genSubJetAK8Table]) - -_jetMC_pre94XTask = jetMCTaskak4.copy() -_jetMC_pre94XTask.add(genJetFlavourAssociation) -_jetMC_pre94XTask.add(_jetMCTaskak8) -run2_miniAOD_80XLegacy.toReplaceWith(jetMCTask, _jetMC_pre94XTask) +jetTablesTask = cms.Task(bjetNN,cjetNN,jetTable,fatJetTable,subJetTable) diff --git a/PhysicsTools/NanoAOD/python/nano_cff.py b/PhysicsTools/NanoAOD/python/nano_cff.py index 6bf6e687e21e9..524d28d58152c 100644 --- a/PhysicsTools/NanoAOD/python/nano_cff.py +++ b/PhysicsTools/NanoAOD/python/nano_cff.py @@ -3,6 +3,7 @@ from PhysicsTools.NanoAOD.common_cff import * from PhysicsTools.NanoAOD.nano_eras_cff import * from PhysicsTools.NanoAOD.jets_cff import * +from PhysicsTools.NanoAOD.jetMC_cff import * from PhysicsTools.NanoAOD.muons_cff import * from PhysicsTools.NanoAOD.taus_cff import * from PhysicsTools.NanoAOD.boostedTaus_cff import * @@ -24,6 +25,7 @@ from PhysicsTools.NanoAOD.btagWeightTable_cff import * from PhysicsTools.NanoAOD.NanoAODEDMEventContent_cff import * from PhysicsTools.NanoAOD.fsrPhotons_cff import * +from PhysicsTools.NanoAOD.softActivity_cff import * nanoMetadata = cms.EDProducer("UniqueStringProducer", strings = cms.PSet( @@ -62,14 +64,15 @@ ) nanoTableTaskCommon = cms.Task( - cms.Task(nanoMetadata), jetTask, extraFlagsProducersTask, muonTask, tauTask, boostedTauTask, + cms.Task(nanoMetadata), jetTask, jetForMETTask, extraFlagsProducersTask, muonTask, tauTask, boostedTauTask, electronTask , lowPtElectronTask, photonTask, vertexTask, isoTrackTask, jetLepTask, # must be after all the leptons + softActivityTask, cms.Task(linkedObjects), jetTablesTask, muonTablesTask, fsrTablesTask, tauTablesTask, boostedTauTablesTask, electronTablesTask, lowPtElectronTablesTask, photonTablesTask, globalTablesTask, vertexTablesTask, metTablesTask, simpleCleanerTable, extraFlagsTableTask, - isoTrackTablesTask + isoTrackTablesTask,softActivityTablesTask ) nanoSequenceCommon = cms.Sequence(nanoTableTaskCommon) @@ -289,35 +292,8 @@ def nanoAOD_runMETfixEE2017(process,isData): process.nanoSequenceCommon.insert(2,process.fullPatMetSequenceFixEE2017) -def nanoAOD_jetForT1met(process): - process.basicJetsForMetForT1METNano = cms.EDProducer("PATJetCleanerForType1MET", - src = process.updatedJetsWithUserData.src, - jetCorrEtaMax = cms.double(9.9), - jetCorrLabel = cms.InputTag("L3Absolute"), - jetCorrLabelRes = cms.InputTag("L2L3Residual"), - offsetCorrLabel = cms.InputTag("L1FastJet"), - skipEM = cms.bool(False), - skipEMfractionThreshold = cms.double(0.9), - skipMuonSelection = cms.string('isGlobalMuon | isStandAloneMuon'), - skipMuons = cms.bool(True), - type1JetPtThreshold = cms.double(0.0), - calcMuonSubtrRawPtAsValueMap = cms.bool(True) - ) - - process.jetTask.add(process.basicJetsForMetForT1METNano) - process.updatedJetsWithUserData.userFloats.muonSubtrRawPt = cms.InputTag("basicJetsForMetForT1METNano:MuonSubtrRawPt") - process.corrT1METJetTable.src = process.finalJets.src - process.corrT1METJetTable.cut = "pt<15 && abs(eta)<9.9" - process.metTablesTask.add(process.corrT1METJetTable) - - for table in process.jetTable, process.corrT1METJetTable: - table.variables.muonSubtrFactor = Var("1-userFloat('muonSubtrRawPt')/(pt()*jecFactor('Uncorrected'))",float,doc="1-(muon-subtracted raw pt)/(raw pt)",precision=6) - - return process - def nanoAOD_customizeCommon(process): - process = nanoAOD_jetForT1met(process) process = nanoAOD_activateVID(process) nanoAOD_addDeepInfo_switch = cms.PSet( nanoAOD_addDeepBTag_switch = cms.untracked.bool(False), diff --git a/PhysicsTools/NanoAOD/python/softActivity_cff.py b/PhysicsTools/NanoAOD/python/softActivity_cff.py new file mode 100644 index 0000000000000..44272e4913ad9 --- /dev/null +++ b/PhysicsTools/NanoAOD/python/softActivity_cff.py @@ -0,0 +1,47 @@ +import FWCore.ParameterSet.Config as cms + +from PhysicsTools.NanoAOD.nano_eras_cff import * +from PhysicsTools.NanoAOD.common_cff import * + + +from RecoJets.JetProducers.ak4PFJets_cfi import ak4PFJets + +chsForSATkJets = cms.EDFilter("CandPtrSelector", src = cms.InputTag("packedPFCandidates"), cut = cms.string('charge()!=0 && pvAssociationQuality()>=5 && vertexRef().key()==0')) +softActivityJets = ak4PFJets.clone(src = 'chsForSATkJets', doAreaFastjet = False, jetPtMin=1) +softActivityJets10 = cms.EDFilter("CandPtrSelector", src = cms.InputTag("softActivityJets"), cut = cms.string('pt>10')) +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')) + + +##### Soft Activity tables +saJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", + src = cms.InputTag("softActivityJets"), + cut = cms.string(""), + maxLen = cms.uint32(6), + name = cms.string("SoftActivityJet"), + doc = cms.string("jets clustered from charged candidates compatible with primary vertex (" + chsForSATkJets.cut.value()+")"), + singleton = cms.bool(False), # the number of entries is variable + extension = cms.bool(False), # this is the main table for the jets + variables = cms.PSet(P3Vars, + ) +) + +saJetTable.variables.pt.precision=10 +saJetTable.variables.eta.precision=8 +saJetTable.variables.phi.precision=8 + +saTable = cms.EDProducer("GlobalVariablesTableProducer", + variables = cms.PSet( + SoftActivityJetHT = ExtVar( cms.InputTag("softActivityJets"), "candidatescalarsum", doc = "scalar sum of soft activity jet pt, pt>1" ), + SoftActivityJetHT10 = ExtVar( cms.InputTag("softActivityJets10"), "candidatescalarsum", doc = "scalar sum of soft activity jet pt , pt >10" ), + SoftActivityJetHT5 = ExtVar( cms.InputTag("softActivityJets5"), "candidatescalarsum", doc = "scalar sum of soft activity jet pt, pt>5" ), + SoftActivityJetHT2 = ExtVar( cms.InputTag("softActivityJets2"), "candidatescalarsum", doc = "scalar sum of soft activity jet pt, pt >2" ), + SoftActivityJetNjets10 = ExtVar( cms.InputTag("softActivityJets10"), "candidatesize", doc = "number of soft activity jet pt, pt >2" ), + SoftActivityJetNjets5 = ExtVar( cms.InputTag("softActivityJets5"), "candidatesize", doc = "number of soft activity jet pt, pt >5" ), + SoftActivityJetNjets2 = ExtVar( cms.InputTag("softActivityJets2"), "candidatesize", doc = "number of soft activity jet pt, pt >10" ), + + ) +) + +softActivityTask = cms.Task(chsForSATkJets,softActivityJets,softActivityJets2,softActivityJets5,softActivityJets10) +softActivityTablesTask = cms.Task(saJetTable,saTable) From fbba8ff5f3894e3b63113181abec5195e0706029 Mon Sep 17 00:00:00 2001 From: maria Date: Sun, 23 Jan 2022 22:44:43 +0100 Subject: [PATCH 2/3] fix clone in met_cff --- PhysicsTools/NanoAOD/python/met_cff.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/PhysicsTools/NanoAOD/python/met_cff.py b/PhysicsTools/NanoAOD/python/met_cff.py index e429fcc42c54f..ddf941621a221 100644 --- a/PhysicsTools/NanoAOD/python/met_cff.py +++ b/PhysicsTools/NanoAOD/python/met_cff.py @@ -139,11 +139,11 @@ ), ) -metFixEE2017Table = metTable.clone() -metFixEE2017Table.src = cms.InputTag("slimmedMETsFixEE2017") -metFixEE2017Table.name = cms.string("METFixEE2017") -metFixEE2017Table.doc = cms.string("Type-1 corrected PF MET, with fixEE2017 definition") - +metFixEE2017Table = metTable.clone( + src = cms.InputTag("slimmedMETsFixEE2017"), + name = cms.string("METFixEE2017"), + doc = cms.string("Type-1 corrected PF MET, with fixEE2017 definition"), +) metMCTable = cms.EDProducer("SimpleCandidateFlatTableProducer", src = metTable.src, From 2a7679933034975451dc3a065360f4453a4eea56 Mon Sep 17 00:00:00 2001 From: maria Date: Mon, 31 Jan 2022 21:40:26 +0100 Subject: [PATCH 3/3] adapt other cff --- PhysicsTools/NanoAOD/python/nanogen_cff.py | 2 +- PhysicsTools/NanoAOD/python/photons_cff.py | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/PhysicsTools/NanoAOD/python/nanogen_cff.py b/PhysicsTools/NanoAOD/python/nanogen_cff.py index 3551f0442184a..a25e26181df18 100644 --- a/PhysicsTools/NanoAOD/python/nanogen_cff.py +++ b/PhysicsTools/NanoAOD/python/nanogen_cff.py @@ -1,5 +1,5 @@ from PhysicsTools.NanoAOD.taus_cff import * -from PhysicsTools.NanoAOD.jets_cff import * +from PhysicsTools.NanoAOD.jetMC_cff import * from PhysicsTools.NanoAOD.globals_cff import genTable,genFilterTable from PhysicsTools.NanoAOD.met_cff import metMCTable from PhysicsTools.NanoAOD.genparticles_cff import * diff --git a/PhysicsTools/NanoAOD/python/photons_cff.py b/PhysicsTools/NanoAOD/python/photons_cff.py index 1a9ef58adc7dd..738e6f4e82d05 100644 --- a/PhysicsTools/NanoAOD/python/photons_cff.py +++ b/PhysicsTools/NanoAOD/python/photons_cff.py @@ -119,7 +119,6 @@ def make_bitmapVID_docstring(id_modules_working_points_pset): userFloats = cms.PSet( mvaID = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRunIIFall17v2Values"), mvaID_Fall17V1p1 = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRunIIFall17v1p1Values"), - mvaID_Spring16nonTrigV1 = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRun2Spring16NonTrigV1Values"), PFIsoChg = cms.InputTag("isoForPho:PFIsoChg"), PFIsoAll = cms.InputTag("isoForPho:PFIsoAll"), ), @@ -132,11 +131,6 @@ def make_bitmapVID_docstring(id_modules_working_points_pset): cutbasedIDV1_loose = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V1-loose"), cutbasedIDV1_medium = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V1-medium"), cutbasedIDV1_tight = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V1-tight"), - cutID_Spring16_loose = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-loose"), - cutID_Spring16_medium = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-medium"), - cutID_Spring16_tight = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-tight"), - mvaID_Spring16nonTrigV1_WP90 = cms.InputTag("egmPhotonIDs:mvaPhoID-Spring16-nonTrig-V1-wp90"), - mvaID_Spring16nonTrigV1_WP80 = cms.InputTag("egmPhotonIDs:mvaPhoID-Spring16-nonTrig-V1-wp80"), ), userInts = cms.PSet( VIDNestedWPBitmap = cms.InputTag("bitmapVIDForPho"), @@ -235,6 +229,17 @@ def make_bitmapVID_docstring(id_modules_working_points_pset): ) for modifier in run2_nanoAOD_94X2016, run2_miniAOD_80XLegacy: + modifier.toModify(slimmedPhotonsWithUserData.userFloats, + mvaID_Spring16nonTrigV1 = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRun2Spring16NonTrigV1Values"), + ) + modifier.toModify(slimmedPhotonsWithUserData.userIntFromBools, + cutID_Spring16_loose = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-loose"), + cutID_Spring16_medium = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-medium"), + cutID_Spring16_tight = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-tight"), + mvaID_Spring16nonTrigV1_WP90 = cms.InputTag("egmPhotonIDs:mvaPhoID-Spring16-nonTrig-V1-wp90"), + mvaID_Spring16nonTrigV1_WP80 = cms.InputTag("egmPhotonIDs:mvaPhoID-Spring16-nonTrig-V1-wp80"), + + ) modifier.toModify(slimmedPhotonsWithUserData.userInts, VIDNestedWPBitmap_Spring16V2p2 = cms.InputTag("bitmapVIDForPhoSpring16V2p2"), ) @@ -327,8 +332,7 @@ def make_bitmapVID_docstring(id_modules_working_points_pset): VIDNestedWPBitmap = None,) (run3_nanoAOD_devel).toModify(slimmedPhotonsWithUserData.userFloats, mvaID = None, - mvaID_Fall17V1p1 = None, - mvaID_Spring16nonTrigV1 = None) + mvaID_Fall17V1p1 = None) (run3_nanoAOD_devel).toModify(photonTable.variables, cutBased = None, cutBased_Fall17V1Bitmap = None,