diff --git a/Configuration/Eras/python/Era_Run3_cff.py b/Configuration/Eras/python/Era_Run3_cff.py index 82f28c2662500..1ed3d37cc9caa 100644 --- a/Configuration/Eras/python/Era_Run3_cff.py +++ b/Configuration/Eras/python/Era_Run3_cff.py @@ -12,8 +12,9 @@ from Configuration.ProcessModifiers.dd4hep_cff import dd4hep from Configuration.Eras.Modifier_run3_egamma_cff import run3_egamma from Configuration.Eras.Modifier_run2_egamma_2018_cff import run2_egamma_2018 +from Configuration.Eras.Modifier_run2_HLTconditions_2018_cff import run2_HLTconditions_2018 from Configuration.Eras.Modifier_run3_RPC_cff import run3_RPC -Run3 = cms.ModifierChain(Run2_2018.copyAndExclude([run2_GEM_2017, ctpps_2018, run2_egamma_2018]), +Run3 = cms.ModifierChain(Run2_2018.copyAndExclude([run2_GEM_2017, ctpps_2018, run2_egamma_2018, run2_HLTconditions_2018]), run3_common, run3_egamma, run3_GEM, run3_HB, run3_HFSL, stage2L1Trigger_2021, ctpps_2022, dd4hep, run3_RPC) diff --git a/Configuration/PyReleaseValidation/python/relval_nano.py b/Configuration/PyReleaseValidation/python/relval_nano.py index 1a40f5b95859f..74fb42436e75a 100644 --- a/Configuration/PyReleaseValidation/python/relval_nano.py +++ b/Configuration/PyReleaseValidation/python/relval_nano.py @@ -89,10 +89,6 @@ ##12.2 INPUT (mc only) steps['TTbarMINIAOD12.2'] = {'INPUT':InputInfo(location='STD', dataSet='/TTToSemiLeptonic_TuneCP5_13p6TeV-powheg-pythia8/Run3Winter22MiniAOD-FlatPU0to70_122X_mcRun3_2021_realistic_v9-v2/MINIAODSIM')} -steps['NANO_mc12.2_v10']=merge([{'--era':'Run3,run3_nanoAOD_122', - '--conditions':'auto:phase1_2022_realistic', - '-s':'NANO:PhysicsTools/NanoAOD/V10/nano_cff,DQM:@nanoAODDQM'}, - _NANO_mc]) steps['NANO_mc12.2']=merge([{'--era':'Run3,run3_nanoAOD_122', '--conditions':'auto:phase1_2022_realistic'}, _NANO_mc]) @@ -101,32 +97,20 @@ steps['TTbarMINIAOD12.4'] = {'INPUT':InputInfo(location='STD', ## to be updated as soon as some TTbar appears in a 12.4 campaign dataSet='/RelValTTbar_14TeV/CMSSW_12_4_9_patch1-124X_mcRun3_2022_realistic_v10_BS2022-v1/MINIAODSIM')} -steps['NANO_mc12.4_v10']=merge([{'--era':'Run3,run3_nanoAOD_124', - '--conditions':'auto:phase1_2022_realistic', - '-s':'NANO:PhysicsTools/NanoAOD/V10/nano_cff,DQM:@nanoAODDQM'}, - _NANO_mc]) steps['NANO_mc12.4']=merge([{'--era':'Run3,run3_nanoAOD_124', '--conditions':'auto:phase1_2022_realistic'}, _NANO_mc]) steps['MuonEG2022MINIAOD12.4'] = {'INPUT':InputInfo(location='STD',ls=run3_lumis, dataSet='/MuonEG/Run2022D-PromptReco-v2/MINIAOD')} -steps['NANO_data12.4_v10']=merge([{'--era':'Run3,run3_nanoAOD_124', - '--conditions':'auto:run3_data', - '-s':'NANO:PhysicsTools/NanoAOD/V10/nano_cff,DQM:@nanoAODDQM'}, - _NANO_data]) steps['NANO_data12.4']=merge([{'--era':'Run3,run3_nanoAOD_124', '--conditions':'auto:run3_data'}, _NANO_data]) -##12.6 workflows ("from scratch") +##12.6 workflows steps['TTBarMINIAOD12.6'] = {'INPUT':InputInfo(location='STD',ls=run3_lumis, ## this is a dataset from the last pre-release: to be updated much too often IMO dataSet='/RelValTTbar_14TeV/CMSSW_12_6_0_pre4-PU_125X_mcRun3_2022_realistic_v4-v1/MINIAODSIM')} -steps['NANO_mc12.6_v10']=merge([{'--era':'Run3', - '--conditions':'auto:phase1_2022_realistic', - '-s':'NANO:PhysicsTools/NanoAOD/V10/nano_cff,DQM:@nanoAODDQM'}, - _NANO_mc]) steps['NANO_mc12.6']=merge([{'--era':'Run3', '--conditions':'auto:phase1_2022_realistic'}, _NANO_mc]) @@ -144,22 +128,16 @@ ################ #12.2 input -workflows[2500.4 ] = ['NANOmc122Xrun3_v10', ['TTbarMINIAOD12.2','NANO_mc12.2_v10', 'HRV_NANO_mc']] workflows[2500.401] = ['NANOmc122Xrun3', ['TTbarMINIAOD12.2','NANO_mc12.2', 'HRV_NANO_mc']] ################ #12.4 input -## these are borken because of tau configuration in NANO ATM: they should be re-enabled when a fix gets in -workflows[2500.5 ] = ['NANOmc124Xrun3_v10', ['TTbarMINIAOD12.4','NANO_mc12.4_v10', 'HRV_NANO_mc']] workflows[2500.501] = ['NANOmc124Xrun3', ['TTbarMINIAOD12.4','NANO_mc12.4', 'HRV_NANO_mc']] - -workflows[2500.51 ] = ['NANOdata124Xrun3_v10', ['MuonEG2022MINIAOD12.4','NANO_data12.4_v10', 'HRV_NANO_data']] workflows[2500.511] = ['NANOdata124Xrun3', ['MuonEG2022MINIAOD12.4','NANO_data12.4', 'HRV_NANO_data']] ################ #12.6 workflows ## these two workflows should be creating a sample "from scratch" instead of using a pre-release sample as input -workflows[2500.6 ] = ['NANOmc126X_v10', ['TTBarMINIAOD12.6','NANO_mc12.6_v10', 'HRV_NANO_mc']] workflows[2500.601] = ['NANOmc126X', ['TTBarMINIAOD12.6','NANO_mc12.6', 'HRV_NANO_mc']] ################ diff --git a/PhysicsTools/NanoAOD/plugins/TriggerObjectTableProducer.cc b/PhysicsTools/NanoAOD/plugins/TriggerObjectTableProducer.cc index 41113f50f57e4..2c3b850cd892c 100644 --- a/PhysicsTools/NanoAOD/plugins/TriggerObjectTableProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/TriggerObjectTableProducer.cc @@ -34,17 +34,18 @@ class TriggerObjectTableProducer : public edm::stream::EDProducer<> { l1Jet_(consumes(iConfig.getParameter("l1Jet"))), l1Muon_(consumes(iConfig.getParameter("l1Muon"))), l1Tau_(consumes(iConfig.getParameter("l1Tau"))) { - std::vector selPSets = iConfig.getParameter>("selections"); - sels_.reserve(selPSets.size()); + edm::ParameterSet selPSet = iConfig.getParameter("selections"); + const auto selNames = selPSet.getParameterNames(); std::stringstream idstr, qualitystr; idstr << "ID of the object: "; - for (auto &pset : selPSets) { - sels_.emplace_back(pset); - idstr << sels_.back().id << " = " << sels_.back().name; - if (sels_.size() < selPSets.size()) + for (const auto &name : selNames) { + sels_.emplace_back(selPSet.getParameter(name)); + const auto &sel = sels_.back(); + idstr << sel.id << " = " << name + sel.doc; + if (sels_.size() < selNames.size()) idstr << ", "; - if (!sels_.back().qualityBitsDoc.empty()) { - qualitystr << sels_.back().qualityBitsDoc << " for " << sels_.back().name << "; "; + if (!sel.qualityBitsDoc.empty()) { + qualitystr << sel.qualityBitsDoc << " for " << name << "; "; } } idDoc_ = idstr.str(); @@ -71,7 +72,7 @@ class TriggerObjectTableProducer : public edm::stream::EDProducer<> { edm::EDGetTokenT l1Tau_; struct SelectedObject { - std::string name; + std::string doc; int id; StringCutObjectSelector cut; StringCutObjectSelector l1cut, l1cut_2, l2cut; @@ -81,7 +82,7 @@ class TriggerObjectTableProducer : public edm::stream::EDProducer<> { std::string qualityBitsDoc; SelectedObject(const edm::ParameterSet &pset) - : name(pset.getParameter("name")), + : doc(pset.getParameter("doc")), id(pset.getParameter("id")), cut(pset.getParameter("sel")), l1cut(""), @@ -94,34 +95,32 @@ class TriggerObjectTableProducer : public edm::stream::EDProducer<> { qualityBits("0"), //will be overwritten from configuration qualityBitsDoc("") //will be created from configuration { - if (pset.existsAs("qualityBits")) { - qualityBits = StringObjectFunction(pset.getParameter("qualityBits")); - qualityBitsDoc = pset.getParameter("qualityBitsDoc"); - } else { - std::vector qualityBitsConfig = - pset.getParameter>("qualityBits"); - std::stringstream qualityBitsFunc; - std::vector bits(qualityBitsConfig.size(), false); - for (size_t i = 0; i != qualityBitsConfig.size(); ++i) { - if (i != 0) { - qualityBitsFunc << " + "; - qualityBitsDoc += ", "; - } - unsigned int bit = i; - if (qualityBitsConfig[i].existsAs("bit")) - bit = qualityBitsConfig[i].getParameter("bit"); - assert(!bits[bit] && "a quality bit was inserted twice"); // the bit should not have been set already - assert(bit < 31 && "quality bits are store on 32 bit"); - bits[bit] = true; - qualityBitsFunc << std::to_string(int(pow(2, bit))) << "*(" - << qualityBitsConfig[i].getParameter("selection") << ")"; - qualityBitsDoc += std::to_string(bit) + " => " + qualityBitsConfig[i].getParameter("doc"); - } - if (!qualityBitsFunc.str().empty()) { - //std::cout << "The quality bit string is :" << qualityBitsFunc.str() << std::endl; - //std::cout << "The quality bit documentation is :" << qualityBitsDoc << std::endl; - qualityBits = StringObjectFunction(qualityBitsFunc.str()); + if (!doc.empty()) { + doc = "(" + doc + ")"; + } + std::vector qualityBitsConfig = + pset.getParameter>("qualityBits"); + std::stringstream qualityBitsFunc; + std::vector bits(qualityBitsConfig.size(), false); + for (size_t i = 0; i != qualityBitsConfig.size(); ++i) { + if (i != 0) { + qualityBitsFunc << " + "; + qualityBitsDoc += ", "; } + unsigned int bit = i; + if (qualityBitsConfig[i].existsAs("bit")) + bit = qualityBitsConfig[i].getParameter("bit"); + assert(!bits[bit] && "a quality bit was inserted twice"); // the bit should not have been set already + assert(bit < 31 && "quality bits are store on 32 bit"); + bits[bit] = true; + qualityBitsFunc << std::to_string(int(pow(2, bit))) << "*(" + << qualityBitsConfig[i].getParameter("selection") << ")"; + qualityBitsDoc += std::to_string(bit) + " => " + qualityBitsConfig[i].getParameter("doc"); + } + if (!qualityBitsFunc.str().empty()) { + //std::cout << "The quality bit string is :" << qualityBitsFunc.str() << std::endl; + //std::cout << "The quality bit documentation is :" << qualityBitsDoc << std::endl; + qualityBits = StringObjectFunction(qualityBitsFunc.str()); } if (pset.existsAs("l1seed")) { l1cut = StringCutObjectSelector(pset.getParameter("l1seed")); @@ -339,26 +338,18 @@ void TriggerObjectTableProducer::fillDescriptions(edm::ConfigurationDescriptions edm::ParameterSetDescription selection; selection.setComment("a parameterset to define a trigger collection in flat table"); - selection.add("name")->setComment("name of the leaf in the flat table"); + selection.add("doc", "")->setComment( + "optional additional info to be added to the table doc for that object"); selection.add("id")->setComment("identifier of the trigger collection in the flat table"); selection.add("sel")->setComment("function to selection on pat::TriggerObjectStandAlone"); selection.add("skipObjectsNotPassingQualityBits")->setComment("flag to skip object on quality bit"); - edm::ParameterDescription oldSelection( - "qualityBits", "0", true, edm::Comment("function on pat::TriggerObjectStandAlone to define quality bits")); - edm::ParameterDescription oldDoc( - "qualityBitsDoc", "", true, edm::Comment("documentation of the quality bits")); edm::ParameterSetDescription bit; bit.add("selection")->setComment("function on pat::TriggerObjectStandAlone to define quality bit"); bit.add("doc")->setComment("definition of the quality bit"); bit.addOptional("bit")->setComment("value of the bit, if not the order in the VPset"); bit.setComment("parameter set to define quality bit of matching object"); - - //selection.addVPSet("qualityBits", bit); // non-backqard compatible - edm::ParameterDescription> bits( - "qualityBits", bit, true, std::vector()); - //allow for backward compatible configuration with qualityBits and qualityBitsDoc as strings - selection.addNode(bits xor (oldSelection and oldDoc)); + selection.addVPSet("qualityBits", bit); selection.ifExists(edm::ParameterDescription("l1seed", "selection on pat::TriggerObjectStandAlone"), edm::ParameterDescription( @@ -369,7 +360,11 @@ void TriggerObjectTableProducer::fillDescriptions(edm::ConfigurationDescriptions selection.ifExists(edm::ParameterDescription("l2seed", "selection on pat::TriggerObjectStandAlone"), edm::ParameterDescription( "l2deltaR", "deltaR criteria to match pat::TriggerObjectStandAlone to 'L2' primitive")); - desc.addVPSet("selections", selection); + + edm::ParameterWildcard selectionsNode("*", edm::RequireAtLeastOne, true, selection); + edm::ParameterSetDescription selections; + selections.addNode(selectionsNode); + desc.add("selections", selections); descriptions.addWithDefaultLabel(desc); } diff --git a/PhysicsTools/NanoAOD/python/V10/boostedTaus_cff.py b/PhysicsTools/NanoAOD/python/V10/boostedTaus_cff.py deleted file mode 100644 index 0484ce6c88a57..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/boostedTaus_cff.py +++ /dev/null @@ -1,112 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import P4Vars,Var -from PhysicsTools.NanoAOD.nano_eras_cff import run2_nanoAOD_106Xv2,run3_nanoAOD_122 - -##################### Import reusable funtions and objects from std taus ######## -from PhysicsTools.NanoAOD.V10.taus_cff import _tauIdWPMask, tausMCMatchLepTauForTable, tausMCMatchHadTauForTable,tauMCTable - -##################### User floats producers, selectors ########################## - - -finalBoostedTaus = cms.EDFilter("PATTauRefSelector", - src = cms.InputTag("slimmedTausBoosted"), - cut = cms.string("pt > 40 && tauID('decayModeFindingNewDMs') && (tauID('byVVLooseIsolationMVArun2DBoldDMwLT') || tauID('byVVLooseIsolationMVArun2DBnewDMwLT'))") -) -run2_nanoAOD_106Xv2.toModify(finalBoostedTaus, - cut = "pt > 40 && tauID('decayModeFindingNewDMs') && (tauID('byVVLooseIsolationMVArun2017v2DBoldDMwLT2017') || tauID('byVVLooseIsolationMVArun2017v2DBoldDMdR0p3wLT2017') || tauID('byVVLooseIsolationMVArun2017v2DBnewDMwLT2017'))" -) - -boostedTauTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("finalBoostedTaus"), - cut = cms.string(""), #we should not filter on cross linked collections - name= cms.string("boostedTau"), - doc = cms.string("slimmedBoostedTaus after basic selection (" + finalBoostedTaus.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the taus - variables = cms.PSet() # PSet defined below in era dependent way -) -_boostedTauVarsBase = cms.PSet(P4Vars, - charge = Var("charge", int, doc="electric charge"), - jetIdx = Var("?hasUserCand('jet')?userCand('jet').key():-1", int, doc="index of the associated jet (-1 if none)"), - decayMode = Var("decayMode()",int), - leadTkPtOverTauPt = Var("leadChargedHadrCand.pt/pt ",float, doc="pt of the leading track divided by tau pt",precision=10), - leadTkDeltaEta = Var("leadChargedHadrCand.eta - eta ",float, doc="eta of the leading track, minus tau eta",precision=8), - leadTkDeltaPhi = Var("deltaPhi(leadChargedHadrCand.phi, phi) ",float, doc="phi of the leading track, minus tau phi",precision=8), - - rawIso = Var( "tauID('byCombinedIsolationDeltaBetaCorrRaw3Hits')", float, doc = "combined isolation (deltaBeta corrections)", precision=10), - rawIsodR03 = Var( "(tauID('chargedIsoPtSumdR03')+max(0.,tauID('neutralIsoPtSumdR03')-0.072*tauID('puCorrPtSum')))", float, doc = "combined isolation (deltaBeta corrections, dR=0.3)", precision=10), - chargedIso = Var( "tauID('chargedIsoPtSum')", float, doc = "charged isolation", precision=10), - neutralIso = Var( "tauID('neutralIsoPtSum')", float, doc = "neutral (photon) isolation", precision=10), - puCorr = Var( "tauID('puCorrPtSum')", float, doc = "pileup correction", precision=10), - photonsOutsideSignalCone = Var( "tauID('photonPtSumOutsideSignalCone')", float, doc = "sum of photons outside signal cone", precision=10), - idAntiMu = _tauIdWPMask("againstMuon%s3", choices=("Loose","Tight"), doc= "Anti-muon discriminator V3: ") -) -#MVA 2017 v2 variables -_boostedTauVarsMVAIso = cms.PSet( - rawMVAoldDM2017v2 = Var("tauID('byIsolationMVArun2DBoldDMwLTraw')",float, doc="byIsolationMVArun2DBoldDMwLT raw output discriminator (2017v2)",precision=10), - rawMVAnewDM2017v2 = Var("tauID('byIsolationMVArun2DBnewDMwLTraw')",float,doc='byIsolationMVArun2DBnewDMwLT raw output discriminator (2017v2)',precision=10), - idMVAnewDM2017v2 = _tauIdWPMask("by%sIsolationMVArun2DBnewDMwLT", choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), doc="IsolationMVArun2DBnewDMwLT ID working point (2017v2)"), - idMVAoldDM2017v2 = _tauIdWPMask("by%sIsolationMVArun2DBoldDMwLT",choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), doc="IsolationMVArun2DBoldDMwLT ID working point (2017v2)"), -) -#MVA 2017 v2 dR<0.3 variables -_boostedTauVarsMVAIsoDr03 = cms.PSet( - rawMVAoldDMdR032017v2 = Var("tauID('byIsolationMVArun2017v2DBoldDMdR0p3wLTraw2017')",float,doc='byIsolationMVArun2DBoldDMdR0p3wLT raw output discriminator (2017v2)'), - idMVAoldDMdR032017v2 = _tauIdWPMask("by%sIsolationMVArun2017v2DBoldDMdR0p3wLT2017",choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"),doc="IsolationMVArun2DBoldDMdR0p3wLT ID working point (2017v2)") -) -#AntiEle MVA 2018 variables -_boostedTauVarsAntiEleMVA = cms.PSet( - rawAntiEle2018 = Var("tauID('againstElectronMVA6Raw')", float, doc= "Anti-electron MVA discriminator V6 raw output discriminator (2018)", precision=10), - rawAntiEleCat2018 = Var("tauID('againstElectronMVA6category')", int, doc="Anti-electron MVA discriminator V6 category (2018)"), - idAntiEle2018 = _tauIdWPMask("againstElectron%sMVA6", choices=("VLoose","Loose","Medium","Tight","VTight"), doc= "Anti-electron MVA discriminator V6 (2018)") -) - -boostedTauTable.variables = cms.PSet( - _boostedTauVarsBase, - _boostedTauVarsMVAIso, - _boostedTauVarsAntiEleMVA -) -_boostedTauVarsWithDr03 = cms.PSet( - _boostedTauVarsBase, - _boostedTauVarsMVAIso, - _boostedTauVarsMVAIsoDr03, - _boostedTauVarsAntiEleMVA -) -run2_nanoAOD_106Xv2.toModify(boostedTauTable, - variables = _boostedTauVarsWithDr03 -) -run2_nanoAOD_106Xv2.toModify(boostedTauTable.variables, - rawMVAoldDM2017v2 = Var("tauID('byIsolationMVArun2017v2DBoldDMwLTraw2017')",float, doc="byIsolationMVArun2DBoldDMwLT raw output discriminator (2017v2)",precision=10), - rawMVAnewDM2017v2 = Var("tauID('byIsolationMVArun2017v2DBnewDMwLTraw2017')",float,doc='byIsolationMVArun2DBnewDMwLT raw output discriminator (2017v2)',precision=10), - idMVAnewDM2017v2 = _tauIdWPMask("by%sIsolationMVArun2017v2DBnewDMwLT2017", choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"),doc="IsolationMVArun2DBnewDMwLT ID working point (2017v2)"), - idMVAoldDM2017v2 = _tauIdWPMask("by%sIsolationMVArun2017v2DBoldDMwLT2017",choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"),doc="IsolationMVArun2DBoldDMwLT ID working point (2017v2)"), - rawAntiEle2018 = Var("tauID('againstElectronMVA6Raw2018')", float, doc= "Anti-electron MVA discriminator V6 raw output discriminator (2018)", precision=10), - rawAntiEleCat2018 = Var("tauID('againstElectronMVA6category2018')", int, doc="Anti-electron MVA discriminator V6 category (2018)"), - idAntiEle2018 = _tauIdWPMask("againstElectron%sMVA62018", choices=("VLoose","Loose","Medium","Tight","VTight"), doc= "Anti-electron MVA discriminator V6 (2018)") -) - -boostedTausMCMatchLepTauForTable = tausMCMatchLepTauForTable.clone( - src = boostedTauTable.src -) - -#This requires genVisTaus in taus_cff.py -boostedTausMCMatchHadTauForTable = tausMCMatchHadTauForTable.clone( - src = boostedTauTable.src -) - -boostedTauMCTable = tauMCTable.clone( - src = boostedTauTable.src, - mcMap = cms.InputTag("boostedTausMCMatchLepTauForTable"), - mcMapVisTau = cms.InputTag("boostedTausMCMatchHadTauForTable"), - objName = boostedTauTable.name, -) - - -boostedTauTask = cms.Task(finalBoostedTaus) -boostedTauTablesTask = cms.Task(boostedTauTable) -boostedTauMCTask = cms.Task(boostedTausMCMatchLepTauForTable,boostedTausMCMatchHadTauForTable,boostedTauMCTable) - -#remove boosted tau from previous eras -_modifiers = (run3_nanoAOD_122) -(_modifiers).toReplaceWith(boostedTauTask,cms.Task()) -(_modifiers).toReplaceWith(boostedTauTablesTask,cms.Task()) -(_modifiers).toReplaceWith(boostedTauMCTask,cms.Task()) diff --git a/PhysicsTools/NanoAOD/python/V10/btagWeightTable_cff.py b/PhysicsTools/NanoAOD/python/V10/btagWeightTable_cff.py deleted file mode 100644 index 13f75ec489388..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/btagWeightTable_cff.py +++ /dev/null @@ -1,32 +0,0 @@ -import FWCore.ParameterSet.Config as cms -#from PhysicsTools.NanoAOD.V10.common_cff import * -#from PhysicsTools.NanoAOD.nano_eras_cff import * - - -btagSFdir="PhysicsTools/NanoAOD/data/btagSF/" - -btagWeightTable = cms.EDProducer("BTagSFProducer", - src = cms.InputTag("linkedObjects","jets"), - cut = cms.string("pt > 25. && abs(eta) < 2.5"), - discNames = cms.vstring( - "pfCombinedInclusiveSecondaryVertexV2BJetTags", - "pfDeepCSVJetTags:probb+pfDeepCSVJetTags:probbb", #if multiple MiniAOD branches need to be summed up (e.g., DeepCSV b+bb), separate them using '+' delimiter - "pfCombinedMVAV2BJetTags" - ), - discShortNames = cms.vstring( - "CSVV2", - "DeepCSVB", - "CMVA" - ), - weightFiles = cms.vstring( #default settings are for 2017 94X. toModify function is called later for other eras. - btagSFdir+"CSVv2_94XSF_V2_B_F.csv", - btagSFdir+"DeepCSV_94XSF_V2_B_F.csv", - "unavailable" #if SFs for an algorithm in an era is unavailable, the corresponding branch will not be stored - ), - operatingPoints = cms.vstring("3","3","3"), #loose = 0, medium = 1, tight = 2, reshaping = 3 - measurementTypesB = cms.vstring("iterativefit","iterativefit","iterativefit"), #e.g. "comb", "incl", "ttbar", "iterativefit" - measurementTypesC = cms.vstring("iterativefit","iterativefit","iterativefit"), - measurementTypesUDSG = cms.vstring("iterativefit","iterativefit","iterativefit"), - sysTypes = cms.vstring("central","central","central") -) - diff --git a/PhysicsTools/NanoAOD/python/V10/electrons_cff.py b/PhysicsTools/NanoAOD/python/V10/electrons_cff.py deleted file mode 100644 index 705a7cf1e3068..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/electrons_cff.py +++ /dev/null @@ -1,533 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import * - -from math import ceil,log -#NOTE: All definitions of modules should point to the latest flavour of the electronTable in NanoAOD. -#Common modifications for past eras are done at the end whereas modifications specific to a single era is done after the original definition. -## might be an issue with V10 support in newer release -from RecoEgamma.EgammaTools.egammaObjectModificationsInMiniAOD_cff import egamma8XObjectUpdateModifier,egamma9X105XUpdateModifier,prependEgamma8XObjectUpdateModifier -ele9X105XUpdateModifier=egamma9X105XUpdateModifier.clone( - phoPhotonIso = "", - phoNeutralHadIso = "", - phoChargedHadIso = "", - phoChargedHadWorstVtxIso = "", - phoChargedHadWorstVtxConeVetoIso = "", - phoChargedHadPFPVIso = "" -) -#we have dataformat changes to 106X so to read older releases we use egamma updators -slimmedElectronsTo106X = cms.EDProducer("ModifiedElectronProducer", - src = cms.InputTag("slimmedElectrons"), - modifierConfig = cms.PSet( modifications = cms.VPSet(ele9X105XUpdateModifier) ) -) - -# this below is used only in some eras -slimmedElectronsUpdated = cms.EDProducer("PATElectronUpdater", - src = cms.InputTag("slimmedElectrons"), - vertices = cms.InputTag("offlineSlimmedPrimaryVertices"), - computeMiniIso = cms.bool(False), - fixDxySign = cms.bool(True), - pfCandsForMiniIso = cms.InputTag("packedPFCandidates"), - miniIsoParamsB = cms.vdouble( - 0.05, 0.2, 10.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0 - ), - miniIsoParamsE = cms.vdouble( - 0.05, 0.2, 10.0, 0.0, 0.015, - 0.015, 0.08, 0.0, 0.0 - ) -) - - -############################FOR bitmapVIDForEle main defn############################# -electron_id_modules_WorkingPoints_nanoAOD = cms.PSet( - modules = cms.vstring( - 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V1_cff', - 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V2_cff', - 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV70_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V1_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V1_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V2_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V2_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Summer16UL_ID_ISO_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Summer17UL_ID_ISO_cff', - 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Summer18UL_ID_ISO_cff', - ), - WorkingPoints = cms.vstring( - "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-veto", - "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-loose", - "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-medium", - "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-tight", - ) -) - - -def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): - docstring='' - for modname in modules: - ids= __import__(modname, globals(), locals(), ['idName','cutFlow']) - for name in dir(ids): - _id = getattr(ids,name) - if hasattr(_id,'idName') and hasattr(_id,'cutFlow'): - if (len(WorkingPoints)>0 and _id.idName==WorkingPoints[0].split(':')[-1]): - docstring = 'VID compressed bitmap (%s), %d bits per cut'%(','.join([cut.cutName.value() for cut in _id.cutFlow]),int(ceil(log(len(WorkingPoints)+1,2)))) - return docstring - -bitmapVIDForEle = cms.EDProducer("EleVIDNestedWPBitmapProducer", - src = cms.InputTag("slimmedElectrons"), - srcForID = cms.InputTag("reducedEgamma","reducedGedGsfElectrons"), - WorkingPoints = electron_id_modules_WorkingPoints_nanoAOD.WorkingPoints, -) -_bitmapVIDForEle_docstring = _get_bitmapVIDForEle_docstring(electron_id_modules_WorkingPoints_nanoAOD.modules,bitmapVIDForEle.WorkingPoints) - -bitmapVIDForEleSpring15 = bitmapVIDForEle.clone( - WorkingPoints = cms.vstring( - "egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-veto", - "egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-loose", - "egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-medium", - # "egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-tight", # not fitting in sizeof(int) - ) -) -_bitmapVIDForEleSpring15_docstring = _get_bitmapVIDForEle_docstring(electron_id_modules_WorkingPoints_nanoAOD.modules,bitmapVIDForEleSpring15.WorkingPoints) - -bitmapVIDForEleSum16 = bitmapVIDForEle.clone( - WorkingPoints = cms.vstring( - "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-veto", - "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-loose", - "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-medium", - "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight", - ) -) -_bitmapVIDForEleSum16_docstring = _get_bitmapVIDForEle_docstring(electron_id_modules_WorkingPoints_nanoAOD.modules,bitmapVIDForEleSum16.WorkingPoints) - -bitmapVIDForEleHEEP = bitmapVIDForEle.clone( - WorkingPoints = cms.vstring("egmGsfElectronIDs:heepElectronID-HEEPV70" - ) -) -_bitmapVIDForEleHEEP_docstring = _get_bitmapVIDForEle_docstring(electron_id_modules_WorkingPoints_nanoAOD.modules,bitmapVIDForEleHEEP.WorkingPoints) -############################for bitmapVIDForEle defn end############################# -#######################ISO ELE defn(in principle should be an import#################### -##PhysicsTools/NanoAOD/python/EleIsoValueMapProducer_cfi.py -isoForEle = cms.EDProducer("EleIsoValueMapProducer", - src = cms.InputTag("slimmedElectrons"), - relative = cms.bool(False), - rho_MiniIso = cms.InputTag("fixedGridRhoFastjetAll"), - rho_PFIso = cms.InputTag("fixedGridRhoFastjetAll"), - EAFile_MiniIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"), - EAFile_PFIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"), -) - -#######################################ISO ELE end##################################### -######################################ptRatioForEle##################################### -###import from hysicsTools/NanoAOD/pythonElectronJetVarProducer_cfi.py -ptRatioRelForEle = cms.EDProducer("ElectronJetVarProducer", - srcJet = cms.InputTag("updatedJetsPuppi"), - srcLep = cms.InputTag("slimmedElectrons"), - srcVtx = cms.InputTag("offlineSlimmedPrimaryVertices"), -) -######################################ptRatioForEle##################################### -#############3###################seedGailEle############################# -seedGainEle = cms.EDProducer("ElectronSeedGainProducer", src = cms.InputTag("slimmedElectrons")) -############################################seed gainELE -############################calibratedPatElectrons############## -##this is a special one, so we leave the era modifications here##### -calibratedPatElectronsNano = cms.EDProducer("CalibratedPatElectronProducer", - correctionFile = cms.string('EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2018_29Sep2020_RunFineEtaR9Gain'), - epCombConfig = cms.PSet( - ecalTrkRegressionConfig = cms.PSet( - ebHighEtForestName = cms.ESInputTag("","electron_eb_ECALTRK"), - ebLowEtForestName = cms.ESInputTag("","electron_eb_ECALTRK_lowpt"), - eeHighEtForestName = cms.ESInputTag("","electron_ee_ECALTRK"), - eeLowEtForestName = cms.ESInputTag("","electron_ee_ECALTRK_lowpt"), - forceHighEnergyTrainingIfSaturated = cms.bool(False), - lowEtHighEtBoundary = cms.double(50.0), - rangeMaxHighEt = cms.double(3.0), - rangeMaxLowEt = cms.double(3.0), - rangeMinHighEt = cms.double(-1.0), - rangeMinLowEt = cms.double(-1.0) - ), - ecalTrkRegressionUncertConfig = cms.PSet( - ebHighEtForestName = cms.ESInputTag("","electron_eb_ECALTRK_var"), - ebLowEtForestName = cms.ESInputTag("","electron_eb_ECALTRK_lowpt_var"), - eeHighEtForestName = cms.ESInputTag("","electron_ee_ECALTRK_var"), - eeLowEtForestName = cms.ESInputTag("","electron_ee_ECALTRK_lowpt_var"), - forceHighEnergyTrainingIfSaturated = cms.bool(False), - lowEtHighEtBoundary = cms.double(50.0), - rangeMaxHighEt = cms.double(0.5), - rangeMaxLowEt = cms.double(0.5), - rangeMinHighEt = cms.double(0.0002), - rangeMinLowEt = cms.double(0.0002) - ), - maxEPDiffInSigmaForComb = cms.double(15.0), - maxEcalEnergyForComb = cms.double(200.0), - maxRelTrkMomErrForComb = cms.double(10.0), - minEOverPForComb = cms.double(0.025) - ), - mightGet = cms.optional.untracked.vstring, - minEtToCalibrate = cms.double(5.0), - produceCalibratedObjs = cms.bool(False), - recHitCollectionEB = cms.InputTag("reducedEgamma","reducedEBRecHits"), - recHitCollectionEE = cms.InputTag("reducedEgamma","reducedEERecHits"), - semiDeterministic = cms.bool(True), - src = cms.InputTag("slimmedElectrons"), - valueMapsStored = cms.vstring( - 'energyScaleStatUp', - 'energyScaleStatDown', - 'energyScaleSystUp', - 'energyScaleSystDown', - 'energyScaleGainUp', - 'energyScaleGainDown', - 'energySigmaRhoUp', - 'energySigmaRhoDown', - 'energySigmaPhiUp', - 'energySigmaPhiDown', - 'energyScaleUp', - 'energyScaleDown', - 'energySigmaUp', - 'energySigmaDown', - 'energyScaleValue', - 'energySigmaValue', - 'energySmearNrSigma', - 'ecalEnergyPreCorr', - 'ecalEnergyErrPreCorr', - 'ecalEnergyPostCorr', - 'ecalEnergyErrPostCorr', - 'ecalTrkEnergyPreCorr', - 'ecalTrkEnergyErrPreCorr', - 'ecalTrkEnergyPostCorr', - 'ecalTrkEnergyErrPostCorr' - ) -) - -(run2_egamma_2016 & tracker_apv_vfp30_2016).toModify(calibratedPatElectronsNano, - correctionFile = "EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2016_UltraLegacy_preVFP_RunFineEtaR9Gain" -) - -(run2_egamma_2016 & ~tracker_apv_vfp30_2016).toModify(calibratedPatElectronsNano, - correctionFile = "EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2016_UltraLegacy_postVFP_RunFineEtaR9Gain" -) - -run2_egamma_2017.toModify(calibratedPatElectronsNano, - correctionFile = "EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2017_24Feb2020_runEtaR9Gain_v2" -) - -run2_egamma_2018.toModify(calibratedPatElectronsNano, - correctionFile = "EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2018_29Sep2020_RunFineEtaR9Gain" -) - - -##############################end calibratedPatElectronsNano############################33 -#####################Start slimmedElectronsWithUserData###############################3 -##import from PhysicsTools/PatAlgos/python/electronsWithUserData_cfi.py -slimmedElectronsWithUserData = cms.EDProducer("PATElectronUserDataEmbedder", - src = cms.InputTag("slimmedElectrons"), - parentSrcs = cms.VInputTag("reducedEgamma:reducedGedGsfElectrons"), - userFloats = cms.PSet( - mvaFall17V1Iso = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17IsoV1Values"), - mvaFall17V1noIso = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17NoIsoV1Values"), - mvaIso = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17IsoV2Values"), - mvaNoIso = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17NoIsoV2Values"), - mvaHZZIso = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Summer18ULIdIsoValues"), - miniIsoChg = cms.InputTag("isoForEle:miniIsoChg"), - miniIsoAll = cms.InputTag("isoForEle:miniIsoAll"), - PFIsoChg = cms.InputTag("isoForEle:PFIsoChg"), - PFIsoAll = cms.InputTag("isoForEle:PFIsoAll"), - PFIsoAll04 = cms.InputTag("isoForEle:PFIsoAll04"), - ptRatio = cms.InputTag("ptRatioRelForEle:ptRatio"), - ptRel = cms.InputTag("ptRatioRelForEle:ptRel"), - jetNDauChargedMVASel = cms.InputTag("ptRatioRelForEle:jetNDauChargedMVASel"), - ecalTrkEnergyErrPostCorrNew = cms.InputTag("calibratedPatElectronsNano","ecalTrkEnergyErrPostCorr"), - ecalTrkEnergyPreCorrNew = cms.InputTag("calibratedPatElectronsNano","ecalTrkEnergyPreCorr"), - ecalTrkEnergyPostCorrNew = cms.InputTag("calibratedPatElectronsNano","ecalTrkEnergyPostCorr"), - energyScaleUpNew = cms.InputTag("calibratedPatElectronsNano","energyScaleUp"), - energyScaleDownNew = cms.InputTag("calibratedPatElectronsNano","energyScaleDown"), - energySigmaUpNew = cms.InputTag("calibratedPatElectronsNano","energySigmaUp"), - energySigmaDownNew = cms.InputTag("calibratedPatElectronsNano","energySigmaDown"), - - ), - userIntFromBools = cms.PSet( - - mvaFall17V1Iso_WP90 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-iso-V1-wp90"), - mvaFall17V1Iso_WP80 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-iso-V1-wp80"), - mvaFall17V1Iso_WPL = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-iso-V1-wpLoose"), - mvaFall17V1noIso_WP90 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-noIso-V1-wp90"), - mvaFall17V1noIso_WP80 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-noIso-V1-wp80"), - mvaFall17V1noIso_WPL = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-noIso-V1-wpLoose"), - - mvaIso_WP90 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-iso-V2-wp90"), - mvaIso_WP80 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-iso-V2-wp80"), - mvaIso_WPL = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-iso-V2-wpLoose"), - mvaNoIso_WP90 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-noIso-V2-wp90"), - mvaNoIso_WP80 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-noIso-V2-wp80"), - mvaNoIso_WPL = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-noIso-V2-wpLoose"), - - cutbasedID_Fall17_V1_veto = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-veto"), - cutbasedID_Fall17_V1_loose = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-loose"), - cutbasedID_Fall17_V1_medium = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-medium"), - cutbasedID_Fall17_V1_tight = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-tight"), - cutbasedID_Fall17_V2_veto = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-veto"), - cutbasedID_Fall17_V2_loose = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-loose"), - cutbasedID_Fall17_V2_medium = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-medium"), - cutbasedID_Fall17_V2_tight = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-tight"), - cutbasedID_HEEP = cms.InputTag("egmGsfElectronIDs:heepElectronID-HEEPV70"), - ), - userInts = cms.PSet( - VIDNestedWPBitmap = cms.InputTag("bitmapVIDForEle"), - VIDNestedWPBitmapHEEP = cms.InputTag("bitmapVIDForEleHEEP"), - seedGain = cms.InputTag("seedGainEle"), - ), - userCands = cms.PSet( - jetForLepJetVar = cms.InputTag("ptRatioRelForEle:jetForLepJetVar") # warning: Ptr is null if no match is found - ), -) - -(run2_egamma_2016).toModify(slimmedElectronsWithUserData.userFloats, - mvaHZZIso = "electronMVAValueMapProducer:ElectronMVAEstimatorRun2Summer16ULIdIsoValues", -) -(run2_egamma_2017).toModify(slimmedElectronsWithUserData.userFloats, - mvaHZZIso = "electronMVAValueMapProducer:ElectronMVAEstimatorRun2Summer17ULIdIsoValues" , -) -(run2_egamma_2018).toModify(slimmedElectronsWithUserData.userFloats, - mvaHZZIso = "electronMVAValueMapProducer:ElectronMVAEstimatorRun2Summer18ULIdIsoValues", -) -#################################################END slimmedElectrons with user data##################### -#################################################finalElectrons##################### -finalElectrons = cms.EDFilter("PATElectronRefSelector", - src = cms.InputTag("slimmedElectronsWithUserData"), - cut = cms.string("pt > 5 ") -) -#################################################finalElectrons##################### -################################################electronMVATTH##################### -electronMVATTH= cms.EDProducer("EleBaseMVAValueMapProducer", - src = cms.InputTag("linkedObjects","electrons"), - weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/el_BDTG_2017.weights.xml"), - name = cms.string("electronMVATTH"), - isClassifier = cms.bool(True), - variablesOrder = cms.vstring(["LepGood_pt","LepGood_eta","LepGood_jetNDauChargedMVASel","LepGood_miniRelIsoCharged","LepGood_miniRelIsoNeutral","LepGood_jetPtRelv2","LepGood_jetDF","LepGood_jetPtRatio","LepGood_dxy","LepGood_sip3d","LepGood_dz","LepGood_mvaFall17V2noIso"]), - variables = cms.PSet( - LepGood_pt = cms.string("pt"), - LepGood_eta = cms.string("eta"), - LepGood_jetNDauChargedMVASel = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('jetNDauChargedMVASel'):0"), - LepGood_miniRelIsoCharged = cms.string("userFloat('miniIsoChg')/pt"), - LepGood_miniRelIsoNeutral = cms.string("(userFloat('miniIsoAll')-userFloat('miniIsoChg'))/pt"), - LepGood_jetPtRelv2 = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('ptRel'):0"), - LepGood_jetDF = cms.string("?userCand('jetForLepJetVar').isNonnull()?max(userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:probbb')+userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:probb')+userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:problepb'),0.0):0.0"), - LepGood_jetPtRatio = cms.string("?userCand('jetForLepJetVar').isNonnull()?min(userFloat('ptRatio'),1.5):1.0/(1.0+userFloat('PFIsoAll04')/pt)"), - LepGood_dxy = cms.string("log(abs(dB('PV2D')))"), - LepGood_sip3d = cms.string("abs(dB('PV3D')/edB('PV3D'))"), - LepGood_dz = cms.string("log(abs(dB('PVDZ')))"), - LepGood_mvaFall17V2noIso = cms.string("userFloat('mvaNoIso')"), - ) -) -run2_egamma_2016.toModify(electronMVATTH, - weightFile = "PhysicsTools/NanoAOD/data/el_BDTG_2016.weights.xml", -) -################################################electronMVATTH end##################### -################################################electronTable defn ##################### -electronTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("linkedObjects","electrons"), - cut = cms.string(""), #we should not filter on cross linked collections - name= cms.string("Electron"), - doc = cms.string("slimmedElectrons after basic selection (" + finalElectrons.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the electrons - variables = cms.PSet(CandVars, - jetIdx = Var("?hasUserCand('jet')?userCand('jet').key():-1", int, doc="index of the associated jet (-1 if none)"), - photonIdx = Var("?overlaps('photons').size()>0?overlaps('photons')[0].key():-1", int, doc="index of the associated photon (-1 if none)"), - energyErr = Var("p4Error('P4_COMBINATION')",float,doc="energy error of the cluster-track combination",precision=6), - dz = Var("dB('PVDZ')",float,doc="dz (with sign) wrt first PV, in cm",precision=10), - dzErr = Var("abs(edB('PVDZ'))",float,doc="dz uncertainty, in cm",precision=6), - dxy = Var("dB('PV2D')",float,doc="dxy (with sign) wrt first PV, in cm",precision=10), - dxyErr = Var("edB('PV2D')",float,doc="dxy uncertainty, in cm",precision=6), - ip3d = Var("abs(dB('PV3D'))",float,doc="3D impact parameter wrt first PV, in cm",precision=10), - sip3d = Var("abs(dB('PV3D')/edB('PV3D'))",float,doc="3D impact parameter significance wrt first PV, in cm",precision=10), - deltaEtaSC = Var("superCluster().eta()-eta()",float,doc="delta eta (SC,ele) with sign",precision=10), - r9 = Var("full5x5_r9()",float,doc="R9 of the supercluster, calculated with full 5x5 region",precision=10), - sieie = Var("full5x5_sigmaIetaIeta()",float,doc="sigma_IetaIeta of the supercluster, calculated with full 5x5 region",precision=10), - eInvMinusPInv = Var("(1-eSuperClusterOverP())/ecalEnergy()",float,doc="1/E_SC - 1/p_trk",precision=10), - scEtOverPt = Var("(superCluster().energy()/(pt*cosh(superCluster().eta())))-1",float,doc="(supercluster transverse energy)/pt-1",precision=8), - - mvaIso = Var("userFloat('mvaIso')",float,doc="MVA Iso ID V2 score"), - mvaIso_WP80 = Var("userInt('mvaIso_WP80')",bool,doc="MVA Iso ID V2 WP80"), - mvaIso_WP90 = Var("userInt('mvaIso_WP90')",bool,doc="MVA Iso ID V2 WP90"), - mvaIso_WPL = Var("userInt('mvaIso_WPL')",bool,doc="MVA Iso ID V2 loose WP"), - mvaNoIso = Var("userFloat('mvaNoIso')",float,doc="MVA noIso ID V2 score"), - mvaNoIso_WP80 = Var("userInt('mvaNoIso_WP80')",bool,doc="MVA noIso ID V2 WP80"), - mvaNoIso_WP90 = Var("userInt('mvaNoIso_WP90')",bool,doc="MVA noIso ID V2 WP90"), - mvaNoIso_WPL = Var("userInt('mvaNoIso_WPL')",bool,doc="MVA noIso ID V2 loose WP"), - mvaHZZIso = Var("userFloat('mvaHZZIso')", float,doc="HZZ MVA Iso ID score"), - - cutBased = Var("userInt('cutbasedID_Fall17_V2_veto')+userInt('cutbasedID_Fall17_V2_loose')+userInt('cutbasedID_Fall17_V2_medium')+userInt('cutbasedID_Fall17_V2_tight')",int,doc="cut-based ID Fall17 V2 (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"), - vidNestedWPBitmap = Var("userInt('VIDNestedWPBitmap')",int,doc=_bitmapVIDForEle_docstring), - vidNestedWPBitmapHEEP = Var("userInt('VIDNestedWPBitmapHEEP')",int,doc=_bitmapVIDForEleHEEP_docstring), - cutBased_HEEP = Var("userInt('cutbasedID_HEEP')",bool,doc="cut-based HEEP ID"), - miniPFRelIso_chg = Var("userFloat('miniIsoChg')/pt",float,doc="mini PF relative isolation, charged component"), - miniPFRelIso_all = Var("userFloat('miniIsoAll')/pt",float,doc="mini PF relative isolation, total (with scaled rho*EA PU corrections)"), - pfRelIso03_chg = Var("userFloat('PFIsoChg')/pt",float,doc="PF relative isolation dR=0.3, charged component"), - pfRelIso03_all = Var("userFloat('PFIsoAll')/pt",float,doc="PF relative isolation dR=0.3, total (with rho*EA PU corrections)"), - jetRelIso = Var("?userCand('jetForLepJetVar').isNonnull()?(1./userFloat('ptRatio'))-1.:userFloat('PFIsoAll04')/pt",float,doc="Relative isolation in matched jet (1/ptRatio-1, pfRelIso04_all if no matched jet)",precision=8), - jetPtRelv2 = Var("?userCand('jetForLepJetVar').isNonnull()?userFloat('ptRel'):0",float,doc="Relative momentum of the lepton with respect to the closest jet after subtracting the lepton",precision=8), - dr03TkSumPt = Var("?pt>35?dr03TkSumPt():0",float,doc="Non-PF track isolation within a delta R cone of 0.3 with electron pt > 35 GeV",precision=8), - dr03TkSumPtHEEP = Var("?pt>35?dr03TkSumPtHEEP():0",float,doc="Non-PF track isolation within a delta R cone of 0.3 with electron pt > 35 GeV used in HEEP ID",precision=8), - dr03EcalRecHitSumEt = Var("?pt>35?dr03EcalRecHitSumEt():0",float,doc="Non-PF Ecal isolation within a delta R cone of 0.3 with electron pt > 35 GeV",precision=8), - dr03HcalDepth1TowerSumEt = Var("?pt>35?dr03HcalTowerSumEt(1):0",float,doc="Non-PF Hcal isolation within a delta R cone of 0.3 with electron pt > 35 GeV",precision=8), - hoe = Var("hadronicOverEm()",float,doc="H over E",precision=8), - tightCharge = Var("isGsfCtfScPixChargeConsistent() + isGsfScPixChargeConsistent()",int,doc="Tight charge criteria (0:none, 1:isGsfScPixChargeConsistent, 2:isGsfCtfScPixChargeConsistent)"), - convVeto = Var("passConversionVeto()",bool,doc="pass conversion veto"), - lostHits = Var("gsfTrack.hitPattern.numberOfLostHits('MISSING_INNER_HITS')","uint8",doc="number of missing inner hits"), - isPFcand = Var("pfCandidateRef().isNonnull()",bool,doc="electron is PF candidate"), - seedGain = Var("userInt('seedGain')","uint8",doc="Gain of the seed crystal"), - jetNDauCharged = Var("?userCand('jetForLepJetVar').isNonnull()?userFloat('jetNDauChargedMVASel'):0", "uint8", doc="number of charged daughters of the closest jet"), - ), - externalVariables = cms.PSet( - mvaTTH = ExtVar(cms.InputTag("electronMVATTH"),float, doc="TTH MVA lepton ID score",precision=14), - fsrPhotonIdx = ExtVar(cms.InputTag("leptonFSRphotons:eleFsrIndex"),int, doc="Index of the lowest-dR/ET2 among associated FSR photons"), - ), -) - -#for technical reasons -(run2_nanoAOD_106Xv2).toModify(electronTable.variables, - pt = Var("pt*userFloat('ecalTrkEnergyPostCorrNew')/userFloat('ecalTrkEnergyPreCorrNew')", float, precision=-1, doc="p_{T}"), - energyErr = Var("userFloat('ecalTrkEnergyErrPostCorrNew')", float, precision=6, doc="energy error of the cluster-track combination"), - eCorr = Var("userFloat('ecalTrkEnergyPostCorrNew')/userFloat('ecalTrkEnergyPreCorrNew')", float, doc="ratio of the calibrated energy/miniaod energy"), - scEtOverPt = Var("(superCluster().energy()/(pt*userFloat('ecalTrkEnergyPostCorrNew')/userFloat('ecalTrkEnergyPreCorrNew')*cosh(superCluster().eta())))-1",float,doc="(supercluster transverse energy)/pt-1",precision=8), - dEscaleUp=Var("userFloat('ecalTrkEnergyPostCorrNew')-userFloat('energyScaleUpNew')", float, doc="ecal energy scale shifted 1 sigma up(adding gain/stat/syst in quadrature)", precision=8), - dEscaleDown=Var("userFloat('ecalTrkEnergyPostCorrNew')-userFloat('energyScaleDownNew')", float, doc="ecal energy scale shifted 1 sigma down (adding gain/stat/syst in quadrature)", precision=8), - dEsigmaUp=Var("userFloat('ecalTrkEnergyPostCorrNew')-userFloat('energySigmaUpNew')", float, doc="ecal energy smearing value shifted 1 sigma up", precision=8), - dEsigmaDown=Var("userFloat('ecalTrkEnergyPostCorrNew')-userFloat('energySigmaDownNew')", float, doc="ecal energy smearing value shifted 1 sigma up", precision=8), - -) - - -#############electron Table END##################### -# Depends on particlelevel producer run in particlelevel_cff -tautaggerForMatching = cms.EDProducer("GenJetTauTaggerProducer", - src = cms.InputTag('particleLevel:leptons') -) - ##PhysicsTools/NanoAOD/plugins/GenJetGenPartMerger.cc##this class misses fillDescription#TODO -matchingElecPhoton = cms.EDProducer("GenJetGenPartMerger", - srcJet =cms.InputTag("particleLevel:leptons"), - srcPart=cms.InputTag("particleLevel:photons"), - cut = cms.string("pt > 3"), - hasTauAnc=cms.InputTag("tautaggerForMatching"), -) -electronsMCMatchForTableAlt = cms.EDProducer("GenJetMatcherDRPtByDR", # cut on deltaR, deltaPt/Pt; pick best by deltaR - src = electronTable.src, # final reco collection - matched = cms.InputTag("matchingElecPhoton:merged"), # final mc-truth particle collection - mcPdgId = cms.vint32(11,22), # one or more PDG ID (11 = el, 22 = pho); absolute values (see below) - checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge - mcStatus = cms.vint32(), - maxDeltaR = cms.double(0.3), # Minimum deltaR for the match - maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match - resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object - resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first -) -electronsMCMatchForTable = cms.EDProducer("MCMatcher", # cut on deltaR, deltaPt/Pt; pick best by deltaR - src = electronTable.src, # final reco collection - matched = cms.InputTag("finalGenParticles"), # final mc-truth particle collection - mcPdgId = cms.vint32(11,22), # one or more PDG ID (11 = el, 22 = pho); absolute values (see below) - checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge - mcStatus = cms.vint32(1), # PYTHIA status code (1 = stable, 2 = shower, 3 = hard scattering) - maxDeltaR = cms.double(0.3), # Minimum deltaR for the match - maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match - resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object - resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first -) -#should be cloned from PhysicsTools/NanoAOD/python/candMcMatchTable_cfi.py -electronMCTable = cms.EDProducer("CandMCMatchTableProducer", - src = electronTable.src, - mcMapDressedLep = cms.InputTag("electronsMCMatchForTableAlt"), - mcMap = cms.InputTag("electronsMCMatchForTable"), - mapTauAnc = cms.InputTag("matchingElecPhoton:hasTauAnc"), - objName = electronTable.name, - objType = electronTable.name, #cms.string("Electron"), - branchName = cms.string("genPart"), - docString = cms.string("MC matching to status==1 electrons or photons"), - genparticles = cms.InputTag("finalGenParticles"), -) - -electronTask = cms.Task(bitmapVIDForEle,bitmapVIDForEleHEEP,isoForEle,ptRatioRelForEle,seedGainEle,calibratedPatElectronsNano,slimmedElectronsWithUserData,finalElectrons) -electronTablesTask = cms.Task(electronMVATTH, electronTable) -electronMCTask = cms.Task(tautaggerForMatching, matchingElecPhoton, electronsMCMatchForTable, electronsMCMatchForTableAlt, electronMCTable) - -# Revert back to AK4 CHS jets for Run 2 -run2_nanoAOD_ANY.toModify(ptRatioRelForEle,srcJet="updatedJets") - - -heepIDVarValueMaps = cms.EDProducer("ElectronHEEPIDValueMapProducer", - beamSpot = cms.InputTag("offlineBeamSpot"), - candVetosAOD = cms.vstring( - 'ELES', - 'NONE', - 'NONELES' - ), - candVetosMiniAOD = cms.vstring( - 'ELES', - 'NONE', - 'NONELES' - ), - candsAOD = cms.VInputTag("packedCandsForTkIso", "lostTracksForTkIso", "lostTracksForTkIso:eleTracks"), - candsMiniAOD = cms.VInputTag("packedPFCandidates", "lostTracks", "lostTracks:eleTracks"), - dataFormat = cms.int32(2), - ebRecHitsAOD = cms.InputTag("reducedEcalRecHitsEB"), - ebRecHitsMiniAOD = cms.InputTag("reducedEgamma","reducedEBRecHits"), - eeRecHitsAOD = cms.InputTag("reducedEcalRecHitsEB"), - eeRecHitsMiniAOD = cms.InputTag("reducedEgamma","reducedEERecHits"), - elesAOD = cms.InputTag("gedGsfElectrons"), - elesMiniAOD = cms.InputTag("slimmedElectrons"), - makeTrkIso04 = cms.bool(True), - trkIso04Config = cms.PSet( - barrelCuts = cms.PSet( - algosToReject = cms.vstring(), - allowedQualities = cms.vstring(), - maxDPtPt = cms.double(0.1), - maxDR = cms.double(0.4), - maxDZ = cms.double(0.1), - minDEta = cms.double(0.005), - minDR = cms.double(0.0), - minHits = cms.int32(8), - minPixelHits = cms.int32(1), - minPt = cms.double(1.0) - ), - endcapCuts = cms.PSet( - algosToReject = cms.vstring(), - allowedQualities = cms.vstring(), - maxDPtPt = cms.double(0.1), - maxDR = cms.double(0.4), - maxDZ = cms.double(0.5), - minDEta = cms.double(0.005), - minDR = cms.double(0.0), - minHits = cms.int32(8), - minPixelHits = cms.int32(1), - minPt = cms.double(1.0) - ) - ), - trkIsoConfig = cms.PSet( - barrelCuts = cms.PSet( - algosToReject = cms.vstring(), - allowedQualities = cms.vstring(), - maxDPtPt = cms.double(0.1), - maxDR = cms.double(0.3), - maxDZ = cms.double(0.1), - minDEta = cms.double(0.005), - minDR = cms.double(0.0), - minHits = cms.int32(8), - minPixelHits = cms.int32(1), - minPt = cms.double(1.0) - ), - endcapCuts = cms.PSet( - algosToReject = cms.vstring(), - allowedQualities = cms.vstring(), - maxDPtPt = cms.double(0.1), - maxDR = cms.double(0.3), - maxDZ = cms.double(0.5), - minDEta = cms.double(0.005), - minDR = cms.double(0.0), - minHits = cms.int32(8), - minPixelHits = cms.int32(1), - minPt = cms.double(1.0) - ) - ) -) - - diff --git a/PhysicsTools/NanoAOD/python/V10/extraflags_cff.py b/PhysicsTools/NanoAOD/python/V10/extraflags_cff.py deleted file mode 100644 index c52bfffbcc9b1..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/extraflags_cff.py +++ /dev/null @@ -1,90 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import * -from PhysicsTools.NanoAOD.nano_eras_cff import * - -# Bad/clone muon filters - tagging mode to keep the event -badGlobalMuonTagger = cms.EDFilter("BadGlobalMuonTagger", - muonPtCut = cms.double(20), - muons = cms.InputTag("slimmedMuons"), - selectClones = cms.bool(False), - taggingMode = cms.bool(True), - vtx = cms.InputTag("offlineSlimmedPrimaryVertices") -) - -cloneGlobalMuonTagger = cms.EDFilter("BadGlobalMuonTagger", - muonPtCut = cms.double(20), - muons = cms.InputTag("slimmedMuons"), - selectClones = cms.bool(True), - taggingMode = cms.bool(True), - vtx = cms.InputTag("offlineSlimmedPrimaryVertices") -) - -BadPFMuonTagger = cms.EDFilter("BadParticleFilter", - PFCandidates = cms.InputTag("particleFlow"), - algo = cms.int32(14), - filterType = cms.string('BadPFMuon'), - innerTrackRelErr = cms.double(1), - maxDR = cms.double(0.001), - mightGet = cms.optional.untracked.vstring, - minDzBestTrack = cms.double(-1), - minMuonPt = cms.double(100), - minMuonTrackRelErr = cms.double(2), - minPtDiffRel = cms.double(0), - muons = cms.InputTag("muons"), - segmentCompatibility = cms.double(0.3), - taggingMode = cms.bool(False), - vtx = cms.InputTag("offlinePrimaryVertices") -) - -# Bad charge hadron -BadChargedCandidateTagger = cms.EDFilter("BadParticleFilter", - PFCandidates = cms.InputTag("packedPFCandidates"), - algo = cms.int32(14), - filterType = cms.string('BadChargedCandidate'), - innerTrackRelErr = cms.double(1), - maxDR = cms.double(1e-05), - mightGet = cms.optional.untracked.vstring, - minDzBestTrack = cms.double(-1), - minMuonPt = cms.double(100), - minMuonTrackRelErr = cms.double(2), - minPtDiffRel = cms.double(1e-05), - muons = cms.InputTag("slimmedMuons"), - segmentCompatibility = cms.double(0.3), - taggingMode = cms.bool(True), - vtx = cms.InputTag("offlineSlimmedPrimaryVertices") -) - -extraFlagsTable = cms.EDProducer("GlobalVariablesTableProducer", - variables = cms.PSet( - Flag_BadGlobalMuon = ExtVar(cms.InputTag("badGlobalMuonTagger:notBadEvent"), bool, doc = "Bad muon flag"), - Flag_CloneGlobalMuon = ExtVar(cms.InputTag("cloneGlobalMuonTagger:notBadEvent"), bool, doc = "Clone muon flag"), - Flag_BadPFMuonFilter = ExtVar(cms.InputTag("BadPFMuonTagger"), bool, doc = "Bad PF muon flag"), - Flag_BadChargedCandidateFilter = ExtVar(cms.InputTag("BadChargedCandidateTagger"), bool, doc = "Bad charged hadron flag"), - ) -) - -ecalBadCalibFilterNanoTagger = cms.EDFilter("EcalBadCalibFilter", - EcalRecHitSource = cms.InputTag("reducedEcalRecHitsEE"), - baddetEcal = cms.vuint32( - 872439604, 872422825, 872420274, 872423218, 872423215, - 872416066, 872435036, 872439336, 872420273, 872436907, - 872420147, 872439731, 872436657, 872420397, 872439732, - 872439339, 872439603, 872422436, 872439861, 872437051, - 872437052, 872420649, 872421950, 872437185, 872422564, - 872421566, 872421695, 872421955, 872421567, 872437184, - 872421951, 872421694, 872437056, 872437057, 872437313 - ), - debug = cms.bool(False), - ecalMinEt = cms.double(50.0), - taggingMode = cms.bool(True) -) - - -# empty task as default -extraFlagsProducersTask = cms.Task() -extraFlagsTableTask = cms.Task() - -## those need to be added only for some specific eras -extraFlagsProducersTask_80x = cms.Task(badGlobalMuonTagger,cloneGlobalMuonTagger,BadPFMuonTagger,BadChargedCandidateTagger) -extraFlagsProducersTask_102x = cms.Task(ecalBadCalibFilterNanoTagger) - diff --git a/PhysicsTools/NanoAOD/python/V10/fsrPhotons_cff.py b/PhysicsTools/NanoAOD/python/V10/fsrPhotons_cff.py deleted file mode 100644 index f8ace9b242dd7..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/fsrPhotons_cff.py +++ /dev/null @@ -1,35 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import P3Vars,Var - - -leptonFSRphotons = cms.EDProducer("LeptonFSRProducer", - deltaROverEt2Max = cms.double(0.05), - eleEtaMax = cms.double(2.5), - elePtMin = cms.double(5), - electrons = cms.InputTag("linkedObjects","electrons"), - isolation = cms.double(2), - mightGet = cms.optional.untracked.vstring, - muonEtaMax = cms.double(2.4), - muonPtMin = cms.double(3), - muons = cms.InputTag("linkedObjects","muons"), - packedPFCandidates = cms.InputTag("packedPFCandidates"), - photonPtMin = cms.double(2), - slimmedElectrons = cms.InputTag("slimmedElectrons") -) - -fsrTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("leptonFSRphotons"), - cut = cms.string(""), #we should not filter on cross linked collections - name = cms.string("FsrPhoton"), - doc = cms.string("Final state radiation photons emitted by muons or electrons"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the muons - variables = cms.PSet(P3Vars, - relIso03 = Var("userFloat('relIso03')",float,doc="relative isolation in a 0.3 cone without CHS"), - dROverEt2 = Var("userFloat('dROverEt2')",float,doc="deltaR to associated muon divided by photon et2"), - muonIdx = Var("?hasUserCand('associatedMuon')?userCand('associatedMuon').key():-1",int, doc="index of associated muon"), - electronIdx = Var("?hasUserCand('associatedElectron')?userCand('associatedElectron').key():-1",int, doc="index of associated electron") - ) - ) - -fsrTablesTask = cms.Task(leptonFSRphotons,fsrTable) diff --git a/PhysicsTools/NanoAOD/python/V10/genVertex_cff.py b/PhysicsTools/NanoAOD/python/V10/genVertex_cff.py deleted file mode 100644 index 4d46b4e2e3827..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/genVertex_cff.py +++ /dev/null @@ -1,25 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import Var,ExtVar - -genVertexTable = cms.EDProducer("SimpleXYZPointFlatTableProducer", - src = cms.InputTag("genParticles:xyz0"), - name= cms.string("GenVtx"), - doc = cms.string("Gen vertex"), - extension = cms.bool(False), - variables = cms.PSet( - x = Var("X", float, doc="gen vertex x", precision=10), - y = Var("Y", float, doc="gen vertex y", precision=10), - z = Var("Z", float, doc="gen vertex z", precision=16), - ) -) - -genVertexT0Table = cms.EDProducer("GlobalVariablesTableProducer", - name = cms.string("GenVtx"), - extension = cms.bool(True), - variables = cms.PSet( - t0 = ExtVar( cms.InputTag("genParticles:t0"), "float", doc = "gen vertex t0", precision=12), - ) -) - -genVertexTablesTask = cms.Task(genVertexTable,genVertexT0Table) - diff --git a/PhysicsTools/NanoAOD/python/V10/genWeightsTable_cfi.py b/PhysicsTools/NanoAOD/python/V10/genWeightsTable_cfi.py deleted file mode 100644 index 158763fc7d51d..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/genWeightsTable_cfi.py +++ /dev/null @@ -1,30 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -genWeightsTable = cms.EDProducer("GenWeightsTableProducer", - genEvent = cms.InputTag("generator"), - genLumiInfoHeader = cms.InputTag("generator"), - lheInfo = cms.VInputTag(cms.InputTag("externalLHEProducer"), cms.InputTag("source")), - preferredPDFs = cms.VPSet( # see https://lhapdf.hepforge.org/pdfsets.html - cms.PSet( name = cms.string("NNPDF31_nnlo_hessian_pdfas"), lhaid = cms.uint32(306000) ), - cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_hessian"), lhaid = cms.uint32(304400) ), - cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_mc_hessian_pdfas"), lhaid = cms.uint32(325300) ), - cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_mc"), lhaid = cms.uint32(316200) ), - cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_nf_4_mc_hessian"), lhaid = cms.uint32(325500) ), - cms.PSet( name = cms.string("NNPDF31_nnlo_as_0118_nf_4"), lhaid = cms.uint32(320900) ), - cms.PSet( name = cms.string("NNPDF30_nlo_as_0118"), lhaid = cms.uint32(260000) ), # for some 92X samples. Note that the nominal weight, 260000, is not included in the LHE ... - cms.PSet( name = cms.string("NNPDF30_lo_as_0130"), lhaid = cms.uint32(262000) ), # some MLM 80X samples have only this (e.g. /store/mc/RunIISummer16MiniAODv2/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v2/120000/02A210D6-F5C3-E611-B570-008CFA197BD4.root ) - cms.PSet( name = cms.string("NNPDF30_nlo_nf_4_pdfas"), lhaid = cms.uint32(292000) ), # some FXFX 80X samples have only this (e.g. WWTo1L1Nu2Q, WWTo4Q) - cms.PSet( name = cms.string("NNPDF30_nlo_nf_5_pdfas"), lhaid = cms.uint32(292200) ), # some FXFX 80X samples have only this (e.g. DYJetsToLL_Pt, WJetsToLNu_Pt, DYJetsToNuNu_Pt) - cms.PSet( name = cms.string("PDF4LHC15_nnlo_30_pdfas"), lhaid = cms.uint32(91400) ), - cms.PSet( name = cms.string("PDF4LHC15_nlo_30_pdfas"), lhaid = cms.uint32(90400) ), - cms.PSet( name = cms.string("PDF4LHC15_nlo_30"), lhaid = cms.uint32(90900) ), - ), - namedWeightIDs = cms.vstring(), - namedWeightLabels = cms.vstring(), - lheWeightPrecision = cms.int32(14), - maxPdfWeights = cms.uint32(150), - keepAllPSWeights = cms.bool(False), - debug = cms.untracked.bool(False), -) - -genWeightsTableTask = cms.Task(genWeightsTable) diff --git a/PhysicsTools/NanoAOD/python/V10/genparticles_cff.py b/PhysicsTools/NanoAOD/python/V10/genparticles_cff.py deleted file mode 100644 index 1611729c8fbaf..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/genparticles_cff.py +++ /dev/null @@ -1,86 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import Var - - - -##################### User floats producers, selectors ########################## - -finalGenParticles = cms.EDProducer("GenParticlePruner", - src = cms.InputTag("prunedGenParticles"), - select = cms.vstring( - "drop *", - "keep++ abs(pdgId) == 15 & (pt > 15 || isPromptDecayed() )",# keep full tau decay chain for some taus - #"drop status==1 & pt < 1", #drop soft stable particle in tau decay - "keep+ abs(pdgId) == 15 ", # keep first gen decay product for all tau - "+keep pdgId == 22 && status == 1 && (pt > 10 || isPromptFinalState())", # keep gamma above 10 GeV (or all prompt) and its first parent - "+keep abs(pdgId) == 11 || abs(pdgId) == 13 || abs(pdgId) == 15", #keep leptons, with at most one mother back in the history - "drop abs(pdgId)= 2212 && abs(pz) > 1000", #drop LHC protons accidentally added by previous keeps - "keep (400 < abs(pdgId) < 600) || (4000 < abs(pdgId) < 6000)", #keep all B and C hadrons - "keep abs(pdgId) == 12 || abs(pdgId) == 14 || abs(pdgId) == 16", # keep neutrinos - "keep status == 3 || (status > 20 && status < 30)", #keep matrix element summary - "keep isHardProcess() || fromHardProcessDecayed() || fromHardProcessFinalState() || (statusFlags().fromHardProcess() && statusFlags().isLastCopy())", #keep event summary based on status flags - "keep (status > 70 && status < 80 && pt > 15) ", # keep high pt partons right before hadronization - "keep abs(pdgId) == 23 || abs(pdgId) == 24 || abs(pdgId) == 25 || abs(pdgId) == 37 ", # keep VIP(articles)s - #"keep abs(pdgId) == 310 && abs(eta) < 2.5 && pt > 1 ", # keep K0 - "keep (1000001 <= abs(pdgId) <= 1000039 ) || ( 2000001 <= abs(pdgId) <= 2000015)", #keep SUSY fiction particles - - ) -) - - - -##################### Tables for final output and docs ########################## -genParticleTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("finalGenParticles"), - cut = cms.string(""), #we should not filter after pruning - name= cms.string("GenPart"), - doc = cms.string("interesting gen particles "), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the taus - variables = cms.PSet( - pt = Var("pt", float, precision=8), - phi = Var("phi", float,precision=8), - eta = Var("eta", float,precision=8), - mass = Var("?!((abs(pdgId)>=1 && abs(pdgId)<=5) || (abs(pdgId)>=11 && abs(pdgId)<=16) || pdgId==21 || pdgId==111 || abs(pdgId)==211 || abs(pdgId)==421 || abs(pdgId)==411 || (pdgId==22 && mass<1))?mass:0", float,precision="?((abs(pdgId)==6 || abs(pdgId)>1000000) && statusFlags().isLastCopy())?20:8",doc="Mass stored for all particles with the exception of quarks (except top), leptons/neutrinos, photons with mass < 1 GeV, gluons, pi0(111), pi+(211), D0(421), and D+(411). For these particles, you can lookup the value from PDG."), - pdgId = Var("pdgId", int, doc="PDG id"), - status = Var("status", int, doc="Particle status. 1=stable"), - genPartIdxMother = Var("?numberOfMothers>0?motherRef(0).key():-1", int, doc="index of the mother particle"), - statusFlags = (Var( - "statusFlags().isLastCopyBeforeFSR() * 16384 +" - "statusFlags().isLastCopy() * 8192 +" - "statusFlags().isFirstCopy() * 4096 +" - "statusFlags().fromHardProcessBeforeFSR() * 2048 +" - "statusFlags().isDirectHardProcessTauDecayProduct() * 1024 +" - "statusFlags().isHardProcessTauDecayProduct() * 512 +" - "statusFlags().fromHardProcess() * 256 +" - "statusFlags().isHardProcess() * 128 +" - "statusFlags().isDirectHadronDecayProduct() * 64 +" - "statusFlags().isDirectPromptTauDecayProduct() * 32 +" - "statusFlags().isDirectTauDecayProduct() * 16 +" - "statusFlags().isPromptTauDecayProduct() * 8 +" - "statusFlags().isTauDecayProduct() * 4 +" - "statusFlags().isDecayedLeptonHadron() * 2 +" - "statusFlags().isPrompt() * 1 ", - int, doc=("gen status flags stored bitwise, bits are: " - "0 : isPrompt, " - "1 : isDecayedLeptonHadron, " - "2 : isTauDecayProduct, " - "3 : isPromptTauDecayProduct, " - "4 : isDirectTauDecayProduct, " - "5 : isDirectPromptTauDecayProduct, " - "6 : isDirectHadronDecayProduct, " - "7 : isHardProcess, " - "8 : fromHardProcess, " - "9 : isHardProcessTauDecayProduct, " - "10 : isDirectHardProcessTauDecayProduct, " - "11 : fromHardProcessBeforeFSR, " - "12 : isFirstCopy, " - "13 : isLastCopy, " - "14 : isLastCopyBeforeFSR, ") - )), - ) -) - -genParticleTask = cms.Task(finalGenParticles) -genParticleTablesTask = cms.Task(genParticleTable) - diff --git a/PhysicsTools/NanoAOD/python/V10/globals_cff.py b/PhysicsTools/NanoAOD/python/V10/globals_cff.py deleted file mode 100644 index dd12f728f3a64..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/globals_cff.py +++ /dev/null @@ -1,69 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import Var,ExtVar - -beamSpotTable = cms.EDProducer("SimpleBeamspotFlatTableProducer", - src = cms.InputTag("offlineBeamSpot"), - name = cms.string("BeamSpot"), - doc = cms.string("offlineBeamSpot, the offline reconstructed beamspot"), - extension = cms.bool(False), # this is the main table for the MET - variables = cms.PSet( - type = Var("type()","int8",doc="BeamSpot type (Unknown = -1, Fake = 0, LHC = 1, Tracker = 2)"), - z = Var("position().z()",float,doc="BeamSpot center, z coordinate (cm)",precision=-1), - zError = Var("z0Error()",float,doc="Error on BeamSpot center, z coordinate (cm)",precision=-1), - sigmaZ = Var("sigmaZ()",float,doc="Width of BeamSpot in z (cm)",precision=-1), - sigmaZError = Var("sigmaZ0Error()",float,doc="Error on width of BeamSpot in z (cm)",precision=-1), - ), -) - -rhoTable = cms.EDProducer("GlobalVariablesTableProducer", - name = cms.string("Rho"), - variables = cms.PSet( - fixedGridRhoAll = ExtVar( cms.InputTag("fixedGridRhoAll"), "double", doc = "rho from all PF Candidates, no foreground removal (for isolation of prompt photons)" ), - fixedGridRhoFastjetAll = ExtVar( cms.InputTag("fixedGridRhoFastjetAll"), "double", doc = "rho from all PF Candidates, used e.g. for JECs" ), - fixedGridRhoFastjetCentralNeutral = ExtVar( cms.InputTag("fixedGridRhoFastjetCentralNeutral"), "double", doc = "rho from neutral PF Candidates with |eta| < 2.5, used e.g. for rho corrections of some lepton isolations" ), - fixedGridRhoFastjetCentralCalo = ExtVar( cms.InputTag("fixedGridRhoFastjetCentralCalo"), "double", doc = "rho from calo towers with |eta| < 2.5, used e.g. egamma PFCluster isolation" ), - fixedGridRhoFastjetCentral = ExtVar( cms.InputTag("fixedGridRhoFastjetCentral"), "double", doc = "rho from all PF Candidates for central region, used e.g. for JECs" ), - fixedGridRhoFastjetCentralChargedPileUp = ExtVar( cms.InputTag("fixedGridRhoFastjetCentralChargedPileUp"), "double", doc = "rho from charged PF Candidates for central region, used e.g. for JECs" ), - ) -) - -puTable = cms.EDProducer("NPUTablesProducer", - src = cms.InputTag("slimmedAddPileupInfo"), - pvsrc = cms.InputTag("offlineSlimmedPrimaryVertices"), - zbins = cms.vdouble( [0.0,1.7,2.6,3.0,3.5,4.2,5.2,6.0,7.5,9.0,12.0] ), - savePtHatMax = cms.bool(False), -) - -genTable = cms.EDProducer("SimpleGenEventFlatTableProducer", - src = cms.InputTag("generator"), - name= cms.string("Generator"), - doc = cms.string("Generator information"), - extension = cms.bool(False), - variables = cms.PSet( - x1 = Var( "?hasPDF?pdf().x.first:-1", float, doc="x1 fraction of proton momentum carried by the first parton",precision=14 ), - x2 = Var( "?hasPDF?pdf().x.second:-1", float, doc="x2 fraction of proton momentum carried by the second parton",precision=14 ), - xpdf1 = Var( "?hasPDF?pdf().xPDF.first:-1", float, doc="x*pdf(x) for the first parton", precision=14 ), - xpdf2 = Var( "?hasPDF?pdf().xPDF.second:-1", float, doc="x*pdf(x) for the second parton", precision=14 ), - id1 = Var( "?hasPDF?pdf().id.first:-1", int, doc="id of first parton", precision=6 ), - id2 = Var( "?hasPDF?pdf().id.second:-1", int, doc="id of second parton", precision=6 ), - scalePDF = Var( "?hasPDF?pdf().scalePDF:-1", float, doc="Q2 scale for PDF", precision=14 ), - binvar = Var("?hasBinningValues()?binningValues()[0]:-1", float, doc="MC generation binning value", precision=14), - weight = Var("weight()", float,doc="MC generator weight", precision=14), - ), -) - -genFilterTable = cms.EDProducer("SimpleGenFilterFlatTableProducerLumi", - src = cms.InputTag("genFilterEfficiencyProducer"), - name= cms.string("GenFilter"), - doc = cms.string("Generator filter information"), - extension = cms.bool(False), - variables = cms.PSet( - numEventsTotal = Var("numEventsTotal()", int, doc="generator filter: total number of events", precision=6), - numEventsPassed = Var("numEventsPassed()", int, doc="generator filter: passed number of events", precision=6), - filterEfficiency = Var("filterEfficiency()", float, doc="generator filter: efficiency", precision=14), - filterEfficiencyError = Var("filterEfficiencyError()", float, doc="generator filter: efficiency error", precision=14), - ), -) - -globalTablesTask = cms.Task(beamSpotTable, rhoTable) -globalTablesMCTask = cms.Task(puTable,genTable,genFilterTable) diff --git a/PhysicsTools/NanoAOD/python/V10/isotracks_cff.py b/PhysicsTools/NanoAOD/python/V10/isotracks_cff.py deleted file mode 100644 index 396e0b6a86145..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/isotracks_cff.py +++ /dev/null @@ -1,52 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import Var,ExtVar,P3Vars - -finalIsolatedTracks = cms.EDProducer("IsolatedTrackCleaner", - tracks = cms.InputTag("isolatedTracks"), - cut = cms.string("((pt>5 && (abs(pdgId) == 11 || abs(pdgId) == 13)) || pt > 10) && (abs(pdgId) < 15 || abs(eta) < 2.5) && ((abs(dxy) < 0.2 && abs(dz) < 0.1) || pt>15) && ((pfIsolationDR03().chargedHadronIso < 5 && pt < 25) || pfIsolationDR03().chargedHadronIso/pt < 0.2)"), - finalLeptons = cms.VInputTag( - cms.InputTag("finalElectrons"), - cms.InputTag("finalLooseMuons"), - ), -) - -isoForIsoTk = cms.EDProducer("IsoTrackIsoValueMapProducer", - src = cms.InputTag("finalIsolatedTracks"), - relative = cms.bool(True), - rho_MiniIso = cms.InputTag("fixedGridRhoFastjetAll"), - EAFile_MiniIso = cms.FileInPath("PhysicsTools/NanoAOD/data/effAreaMuons_cone03_pfNeuHadronsAndPhotons_80X.txt"), -) - -isFromLostTrackForIsoTk = cms.EDProducer("IsFromLostTrackMapProducer", - srcIsoTracks = cms.InputTag("finalIsolatedTracks"), - lostTracks = cms.InputTag("lostTracks"), -) - -isoTrackTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("finalIsolatedTracks"), - cut = cms.string(""), # filtered already above - name = cms.string("IsoTrack"), - doc = cms.string("isolated tracks after basic selection (" + finalIsolatedTracks.cut.value() + ") and lepton veto"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the muons - variables = cms.PSet(P3Vars, - dz = Var("dz",float,doc="dz (with sign) wrt first PV, in cm",precision=10), - dxy = Var("dxy",float,doc="dxy (with sign) wrt first PV, in cm",precision=10), - pfRelIso03_chg = Var("pfIsolationDR03().chargedHadronIso/pt",float,doc="PF relative isolation dR=0.3, charged component",precision=10), - pfRelIso03_all = Var("(pfIsolationDR03().chargedHadronIso + max(pfIsolationDR03().neutralHadronIso + pfIsolationDR03().photonIso - pfIsolationDR03().puChargedHadronIso/2,0.0))/pt",float,doc="PF relative isolation dR=0.3, total (deltaBeta corrections)",precision=10), - isPFcand = Var("packedCandRef().isNonnull()",bool,doc="if isolated track is a PF candidate"), - fromPV = Var("fromPV", int, doc="isolated track comes from PV"), - pdgId = Var("pdgId",int,doc="PDG id of PF cand"), - isHighPurityTrack = Var("isHighPurityTrack",bool,doc="track is high purity"), - charge = Var("charge", int, doc="electric charge"), - ), - externalVariables = cms.PSet( - miniPFRelIso_chg = ExtVar("isoForIsoTk:miniIsoChg",float,doc="mini PF relative isolation, charged component",precision=10), - miniPFRelIso_all = ExtVar("isoForIsoTk:miniIsoAll",float,doc="mini PF relative isolation, total (with scaled rho*EA PU corrections)",precision=10), - isFromLostTrack = ExtVar("isFromLostTrackForIsoTk:isFromLostTrack",bool,doc="if isolated track comes from a lost track"), - ), -) - -isoTrackTask = cms.Task(finalIsolatedTracks,isoForIsoTk,isFromLostTrackForIsoTk) -isoTrackTablesTask = cms.Task(isoTrackTable) - diff --git a/PhysicsTools/NanoAOD/python/V10/jetMC_cff.py b/PhysicsTools/NanoAOD/python/V10/jetMC_cff.py deleted file mode 100644 index 7f9dbcc25184b..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/jetMC_cff.py +++ /dev/null @@ -1,134 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import * -from PhysicsTools.NanoAOD.V10.jetsAK8_cff import fatJetTable as _fatJetTable -from PhysicsTools.NanoAOD.V10.jetsAK8_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) - - diff --git a/PhysicsTools/NanoAOD/python/V10/jetsAK4_CHS_cff.py b/PhysicsTools/NanoAOD/python/V10/jetsAK4_CHS_cff.py deleted file mode 100644 index ff88f22bb88e3..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/jetsAK4_CHS_cff.py +++ /dev/null @@ -1,428 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import * - -##################### User floats producers, selectors ########################## - -# 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 = cms.EDProducer("JetCorrFactorsProducer", - emf = cms.bool(False), - extraJPTOffset = cms.string('L1FastJet'), - flavorType = cms.string('J'), - levels = cms.vstring( - 'L1FastJet', - 'L2Relative', - 'L3Absolute', - 'L2L3Residual' - ), - mightGet = cms.optional.untracked.vstring, - payload = cms.string('AK4PFchs'), - primaryVertices = cms.InputTag("offlineSlimmedPrimaryVertices"), - rho = cms.InputTag("fixedGridRhoFastjetAll"), - src = cms.InputTag("slimmedJets"), - useNPV = cms.bool(True), - useRho = cms.bool(True) -) - -updatedJets = cms.EDProducer("PATJetUpdater", - addBTagInfo = cms.bool(False), - addDiscriminators = cms.bool(True), - addJetCorrFactors = cms.bool(True), - addTagInfos = cms.bool(False), - discriminatorSources = cms.VInputTag(), - jetCorrFactorsSource = cms.VInputTag(cms.InputTag("jetCorrFactorsNano")), - jetSource = cms.InputTag("slimmedJets"), - mightGet = cms.optional.untracked.vstring, - printWarning = cms.bool(True), - sort = cms.bool(True), - tagInfoSources = cms.VInputTag(), - userData = cms.PSet( - userCands = cms.PSet( - src = cms.VInputTag("") - ), - userClasses = cms.PSet( - src = cms.VInputTag("") - ), - userFloats = cms.PSet( - src = cms.VInputTag("") - ), - userFunctionLabels = cms.vstring(), - userFunctions = cms.vstring(), - userInts = cms.PSet( - src = cms.VInputTag("") - ) - ) -) - -# -# JetID -# -looseJetId = cms.EDProducer("PatJetIDValueMapProducer", - filterParams=cms.PSet( - version = cms.string('WINTER16'), - quality = cms.string('LOOSE'), - ), - src = cms.InputTag("updatedJets") -) -tightJetId = cms.EDProducer("PatJetIDValueMapProducer", - filterParams=cms.PSet( - version = cms.string('RUN2ULCHS'), - quality = cms.string('TIGHT'), - ), - src = cms.InputTag("updatedJets") -) -tightJetIdLepVeto = cms.EDProducer("PatJetIDValueMapProducer", - filterParams=cms.PSet( - version = cms.string('RUN2ULCHS'), - quality = cms.string('TIGHTLEPVETO'), - ), - src = cms.InputTag("updatedJets") -) -run2_jme_2016.toModify( tightJetId.filterParams, version = "RUN2UL16CHS" ) -run2_jme_2016.toModify( tightJetIdLepVeto.filterParams, version = "RUN2UL16CHS" ) - -bJetVars = cms.EDProducer("JetRegressionVarProducer", - pvsrc = cms.InputTag("offlineSlimmedPrimaryVertices"), - src = cms.InputTag("updatedJets"), - svsrc = cms.InputTag("slimmedSecondaryVertices"), -) - -jercVars = cms.EDProducer("BetaStarPackedCandidateVarProducer", - srcJet = cms.InputTag("updatedJets"), - srcPF = cms.InputTag("packedPFCandidates"), - maxDR = cms.double(0.4) -) - -updatedJetsWithUserData = cms.EDProducer("PATJetUserDataEmbedder", - src = cms.InputTag("updatedJets"), - userFloats = cms.PSet( - leadTrackPt = cms.InputTag("bJetVars:leadTrackPt"), - leptonPtRelv0 = cms.InputTag("bJetVars:leptonPtRelv0"), - leptonPtRelInvv0 = cms.InputTag("bJetVars:leptonPtRelInvv0"), - leptonDeltaR = cms.InputTag("bJetVars:leptonDeltaR"), - vtxPt = cms.InputTag("bJetVars:vtxPt"), - vtxMass = cms.InputTag("bJetVars:vtxMass"), - vtx3dL = cms.InputTag("bJetVars:vtx3dL"), - vtx3deL = cms.InputTag("bJetVars:vtx3deL"), - ptD = cms.InputTag("bJetVars:ptD"), - qgl = cms.InputTag('qgtagger:qgLikelihood'), - puIdNanoDisc = cms.InputTag('pileupJetIdNano:fullDiscriminant'), - chFPV0EF = cms.InputTag("jercVars:chargedFromPV0EnergyFraction"), - ), - userInts = cms.PSet( - tightId = cms.InputTag("tightJetId"), - tightIdLepVeto = cms.InputTag("tightJetIdLepVeto"), - vtxNtrk = cms.InputTag("bJetVars:vtxNtrk"), - leptonPdgId = cms.InputTag("bJetVars:leptonPdgId"), - puIdNanoId = cms.InputTag('pileupJetIdNano:fullId'), - ), -) - -finalJets = cms.EDFilter("PATJetRefSelector", - src = cms.InputTag("updatedJetsWithUserData"), - cut = cms.string("pt > 15") -) - - -##################### 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 - name = cms.string("Jet"), - doc = cms.string("slimmedJets, i.e. ak4 PFJets CHS with JECs applied, after basic selection (" + finalJets.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the jets - externalVariables = cms.PSet( - bRegCorr = ExtVar(cms.InputTag("bjetNN:corr"),float, doc="pt correction for b-jet energy regression",precision=10), - bRegRes = ExtVar(cms.InputTag("bjetNN:res"),float, doc="res on pt corrected with b-jet regression",precision=6), - cRegCorr = ExtVar(cms.InputTag("cjetNN:corr"),float, doc="pt correction for c-jet energy regression",precision=10), - cRegRes = ExtVar(cms.InputTag("cjetNN:res"),float, doc="res on pt corrected with c-jet regression",precision=6), - ), - variables = cms.PSet(P4Vars, - area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10), - nMuons = Var("?hasOverlaps('muons')?overlaps('muons').size():0", int, doc="number of muons in the jet"), - muonIdx1 = Var("?overlaps('muons').size()>0?overlaps('muons')[0].key():-1", int, doc="index of first matching muon"), - muonIdx2 = Var("?overlaps('muons').size()>1?overlaps('muons')[1].key():-1", int, doc="index of second matching muon"), - electronIdx1 = Var("?overlaps('electrons').size()>0?overlaps('electrons')[0].key():-1", int, doc="index of first matching electron"), - electronIdx2 = Var("?overlaps('electrons').size()>1?overlaps('electrons')[1].key():-1", int, doc="index of second matching electron"), - nElectrons = Var("?hasOverlaps('electrons')?overlaps('electrons').size():0", int, doc="number of electrons in the jet"), - 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), - btagDeepFlavB = Var("bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb')",float,doc="DeepJet b+bb+lepb tag discriminator",precision=10), - btagCSVV2 = Var("bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10), - 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), - 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), - 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), - 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), - 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), - puIdDisc = Var("userFloat('puIdNanoDisc')", float,doc="Pileup ID discriminant with 106X (2018) training",precision=10), - puId = Var("userInt('puIdNanoId')", int,doc="Pileup ID flags with 106X (2018) training"), - 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('qgl')>0?userFloat('qgl'):-1",float,doc="Quark vs Gluon likelihood discriminator",precision=10), - hfsigmaEtaEta = Var("userFloat('hfJetShowerShape:sigmaEtaEta')",float,doc="sigmaEtaEta for HF jets (noise discriminating variable)",precision=10), - hfsigmaPhiPhi = Var("userFloat('hfJetShowerShape:sigmaPhiPhi')",float,doc="sigmaPhiPhi for HF jets (noise discriminating variable)",precision=10), - hfcentralEtaStripSize = Var("userInt('hfJetShowerShape:centralEtaStripSize')", int, doc="eta size of the central tower strip in HF (noise discriminating variable) "), - hfadjacentEtaStripsSize = Var("userInt('hfJetShowerShape:adjacentEtaStripsSize')", int, doc="eta size of the strips next to the central tower strip in HF (noise discriminating variable) "), - nConstituents = Var("numberOfDaughters()","uint8",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), - neHEF = Var("neutralHadronEnergyFraction()", float, doc="neutral Hadron Energy Fraction", precision= 6), - chEmEF = Var("chargedEmEnergyFraction()", float, doc="charged Electromagnetic Energy Fraction", precision= 6), - neEmEF = Var("neutralEmEnergyFraction()", float, doc="neutral Electromagnetic Energy Fraction", precision= 6), - muEF = Var("muonEnergyFraction()", float, doc="muon Energy Fraction", precision= 6), - chFPV0EF = Var("userFloat('chFPV0EF')", float, doc="charged fromPV==0 Energy Fraction (energy excluded from CHS jets). Previously called betastar.", precision= 6), - ) -) - -#jets are not as precise as muons -jetTable.variables.pt.precision=10 - -### Era dependent customization -(run2_jme_2016 & ~tracker_apv_vfp30_2016 ).toModify( jetTable.variables.puIdDisc, doc="Pileup ID discriminant with 106X (2016) training") -(run2_jme_2016 & ~tracker_apv_vfp30_2016 ).toModify( jetTable.variables.puId, doc="Pileup ID flags with 106X (2016) training") -(run2_jme_2016 & tracker_apv_vfp30_2016 ).toModify( jetTable.variables.puIdDisc, doc="Pileup ID discriminant with 106X (2016APV) training") -(run2_jme_2016 & tracker_apv_vfp30_2016 ).toModify( jetTable.variables.puId, doc="Pileup ID flags with 106X (2016APV) training") -run2_jme_2017.toModify( jetTable.variables.puIdDisc, doc="Pileup ID discriminant with 106X (2017) training") -run2_jme_2017.toModify( jetTable.variables.puId, doc="Pileup ID flags with 106X (2017) training") - -bjetNN = cms.EDProducer("BJetEnergyRegressionMVA", - backend = cms.string("ONNX"), - batch_eval = cms.bool(True), - src = cms.InputTag("linkedObjects","jets"), - pvsrc = cms.InputTag("offlineSlimmedPrimaryVertices"), - svsrc = cms.InputTag("slimmedSecondaryVertices"), - rhosrc = cms.InputTag("fixedGridRhoFastjetAll"), - - weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/breg_training_2018.onnx"), - name = cms.string("JetRegNN"), - isClassifier = cms.bool(False), - variablesOrder = cms.vstring(["Jet_pt","Jet_eta","rho","Jet_mt","Jet_leadTrackPt","Jet_leptonPtRel","Jet_leptonDeltaR","Jet_neHEF", - "Jet_neEmEF","Jet_vtxPt","Jet_vtxMass","Jet_vtx3dL","Jet_vtxNtrk","Jet_vtx3deL", - "Jet_numDaughters_pt03","Jet_energyRing_dR0_em_Jet_rawEnergy","Jet_energyRing_dR1_em_Jet_rawEnergy", - "Jet_energyRing_dR2_em_Jet_rawEnergy","Jet_energyRing_dR3_em_Jet_rawEnergy","Jet_energyRing_dR4_em_Jet_rawEnergy", - "Jet_energyRing_dR0_neut_Jet_rawEnergy","Jet_energyRing_dR1_neut_Jet_rawEnergy","Jet_energyRing_dR2_neut_Jet_rawEnergy", - "Jet_energyRing_dR3_neut_Jet_rawEnergy","Jet_energyRing_dR4_neut_Jet_rawEnergy","Jet_energyRing_dR0_ch_Jet_rawEnergy", - "Jet_energyRing_dR1_ch_Jet_rawEnergy","Jet_energyRing_dR2_ch_Jet_rawEnergy","Jet_energyRing_dR3_ch_Jet_rawEnergy", - "Jet_energyRing_dR4_ch_Jet_rawEnergy","Jet_energyRing_dR0_mu_Jet_rawEnergy","Jet_energyRing_dR1_mu_Jet_rawEnergy", - "Jet_energyRing_dR2_mu_Jet_rawEnergy","Jet_energyRing_dR3_mu_Jet_rawEnergy","Jet_energyRing_dR4_mu_Jet_rawEnergy", - "Jet_chHEF","Jet_chEmEF","Jet_leptonPtRelInv","isEle","isMu","isOther","Jet_mass","Jet_ptd"]), - variables = cms.PSet( - Jet_pt = cms.string("pt*jecFactor('Uncorrected')"), - Jet_mt = cms.string("mt*jecFactor('Uncorrected')"), - Jet_eta = cms.string("eta"), - Jet_mass = cms.string("mass*jecFactor('Uncorrected')"), - Jet_ptd = cms.string("userFloat('ptD')"), - Jet_leadTrackPt = cms.string("userFloat('leadTrackPt')"), - Jet_vtxNtrk = cms.string("userInt('vtxNtrk')"), - Jet_vtxMass = cms.string("userFloat('vtxMass')"), - Jet_vtx3dL = cms.string("userFloat('vtx3dL')"), - Jet_vtx3deL = cms.string("userFloat('vtx3deL')"), - Jet_vtxPt = cms.string("userFloat('vtxPt')"), - Jet_leptonPtRel = cms.string("userFloat('leptonPtRelv0')"), - Jet_leptonPtRelInv = cms.string("userFloat('leptonPtRelInvv0')*jecFactor('Uncorrected')"), - Jet_leptonDeltaR = cms.string("userFloat('leptonDeltaR')"), - Jet_neHEF = cms.string("neutralHadronEnergyFraction()"), - Jet_neEmEF = cms.string("neutralEmEnergyFraction()"), - Jet_chHEF = cms.string("chargedHadronEnergyFraction()"), - Jet_chEmEF = cms.string("chargedEmEnergyFraction()"), - isMu = cms.string("?abs(userInt('leptonPdgId'))==13?1:0"), - isEle = cms.string("?abs(userInt('leptonPdgId'))==11?1:0"), - isOther = cms.string("?userInt('leptonPdgId')==0?1:0"), - ), - inputTensorName = cms.string("ffwd_inp:0"), - outputTensorName = cms.string("ffwd_out/BiasAdd:0"), - outputNames = cms.vstring(["corr","res"]), - outputFormulas = cms.vstring(["at(0)*0.27912887930870056+1.0545977354049683","0.5*(at(2)-at(1))*0.27912887930870056"]), -) - -cjetNN = cms.EDProducer("BJetEnergyRegressionMVA", - backend = cms.string("ONNX"), - batch_eval = cms.bool(True), - - src = cms.InputTag("linkedObjects","jets"), - pvsrc = cms.InputTag("offlineSlimmedPrimaryVertices"), - svsrc = cms.InputTag("slimmedSecondaryVertices"), - rhosrc = cms.InputTag("fixedGridRhoFastjetAll"), - - weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/creg_training_2018.onnx"), - name = cms.string("JetRegNN"), - isClassifier = cms.bool(False), - variablesOrder = cms.vstring(["Jet_pt","Jet_eta","rho","Jet_mt","Jet_leadTrackPt","Jet_leptonPtRel","Jet_leptonDeltaR", - "Jet_neHEF","Jet_neEmEF","Jet_vtxPt","Jet_vtxMass","Jet_vtx3dL","Jet_vtxNtrk","Jet_vtx3deL", - "Jet_numDaughters_pt03","Jet_chEmEF","Jet_chHEF", "Jet_ptd","Jet_mass", - "Jet_energyRing_dR0_em_Jet_rawEnergy","Jet_energyRing_dR1_em_Jet_rawEnergy", - "Jet_energyRing_dR2_em_Jet_rawEnergy","Jet_energyRing_dR3_em_Jet_rawEnergy","Jet_energyRing_dR4_em_Jet_rawEnergy", - "Jet_energyRing_dR0_neut_Jet_rawEnergy","Jet_energyRing_dR1_neut_Jet_rawEnergy","Jet_energyRing_dR2_neut_Jet_rawEnergy", - "Jet_energyRing_dR3_neut_Jet_rawEnergy","Jet_energyRing_dR4_neut_Jet_rawEnergy","Jet_energyRing_dR0_ch_Jet_rawEnergy", - "Jet_energyRing_dR1_ch_Jet_rawEnergy","Jet_energyRing_dR2_ch_Jet_rawEnergy","Jet_energyRing_dR3_ch_Jet_rawEnergy", - "Jet_energyRing_dR4_ch_Jet_rawEnergy","Jet_energyRing_dR0_mu_Jet_rawEnergy","Jet_energyRing_dR1_mu_Jet_rawEnergy", - "Jet_energyRing_dR2_mu_Jet_rawEnergy","Jet_energyRing_dR3_mu_Jet_rawEnergy","Jet_energyRing_dR4_mu_Jet_rawEnergy"]), - variables = cms.PSet( - Jet_pt = cms.string("pt*jecFactor('Uncorrected')"), - Jet_mt = cms.string("mt*jecFactor('Uncorrected')"), - Jet_eta = cms.string("eta"), - Jet_mass = cms.string("mass*jecFactor('Uncorrected')"), - Jet_ptd = cms.string("userFloat('ptD')"), - Jet_leadTrackPt = cms.string("userFloat('leadTrackPt')"), - Jet_vtxNtrk = cms.string("userInt('vtxNtrk')"), - Jet_vtxMass = cms.string("userFloat('vtxMass')"), - Jet_vtx3dL = cms.string("userFloat('vtx3dL')"), - Jet_vtx3deL = cms.string("userFloat('vtx3deL')"), - Jet_vtxPt = cms.string("userFloat('vtxPt')"), - Jet_leptonPtRel = cms.string("userFloat('leptonPtRelv0')"), - Jet_leptonPtRelInv = cms.string("userFloat('leptonPtRelInvv0')*jecFactor('Uncorrected')"), - Jet_leptonDeltaR = cms.string("userFloat('leptonDeltaR')"), - Jet_neHEF = cms.string("neutralHadronEnergyFraction()"), - Jet_neEmEF = cms.string("neutralEmEnergyFraction()"), - Jet_chHEF = cms.string("chargedHadronEnergyFraction()"), - Jet_chEmEF = cms.string("chargedEmEnergyFraction()"), - isMu = cms.string("?abs(userInt('leptonPdgId'))==13?1:0"), - isEle = cms.string("?abs(userInt('leptonPdgId'))==11?1:0"), - isOther = cms.string("?userInt('leptonPdgId')==0?1:0"), - ), - inputTensorName = cms.string("ffwd_inp:0"), - outputTensorName = cms.string("ffwd_out/BiasAdd:0"), - outputNames = cms.vstring(["corr","res"]), - outputFormulas = cms.vstring(["at(0)*0.24325256049633026+0.993854820728302","0.5*(at(2)-at(1))*0.24325256049633026"]), -) - - -run2_jme_2016.toModify( bjetNN, weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/breg_training_2016.onnx") ) -run2_jme_2016.toModify( bjetNN,outputFormulas = cms.vstring(["at(0)*0.31976690888404846+1.047176718711853","0.5*(at(2)-at(1))*0.31976690888404846"])) - -run2_jme_2017.toModify( bjetNN, weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/breg_training_2017.onnx") ) -run2_jme_2017.toModify( bjetNN,outputFormulas = cms.vstring(["at(0)*0.28225210309028625+1.055067777633667","0.5*(at(2)-at(1))*0.28225210309028625"])) - -run2_jme_2016.toModify( cjetNN, weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/creg_training_2016.onnx") ) -run2_jme_2016.toModify( cjetNN,outputFormulas = cms.vstring(["at(0)*0.28862622380256653+0.9908722639083862","0.5*(at(2)-at(1))*0.28862622380256653"])) - -run2_jme_2017.toModify( cjetNN, weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/creg_training_2017.onnx") ) -run2_jme_2017.toModify( cjetNN,outputFormulas = cms.vstring(["at(0)*0.24718524515628815+0.9927206635475159","0.5*(at(2)-at(1))*0.24718524515628815"])) - - -# -# Quark-Gluon Likelihood (QGL) -# -qgtagger=cms.EDProducer("QGTagger", - jetsLabel = cms.string('QGL_AK4PFchs'), - srcJets = cms.InputTag("updatedJets"), - srcRho = cms.InputTag("fixedGridRhoFastjetAll"), - srcVertexCollection = cms.InputTag("offlineSlimmedPrimaryVertices"), - useQualityCuts = cms.bool(False) -) - -# -# PileUp ID -# -from RecoJets.JetProducers.PileupJetID_cfi import pileupJetId, _chsalgos_94x, _chsalgos_102x, _chsalgos_106X_UL16, _chsalgos_106X_UL16APV, _chsalgos_106X_UL17, _chsalgos_106X_UL18 -pileupJetIdNano=pileupJetId.clone(jets="updatedJets",algos = cms.VPSet(_chsalgos_106X_UL18),inputIsCorrected=True,applyJec=False,vertexes="offlineSlimmedPrimaryVertices") -run2_jme_2017.toModify(pileupJetIdNano, algos = _chsalgos_106X_UL17) -(run2_jme_2016 & ~tracker_apv_vfp30_2016 ).toModify(pileupJetIdNano, algos = _chsalgos_106X_UL16) -(run2_jme_2016 & tracker_apv_vfp30_2016 ).toModify(pileupJetIdNano, algos = _chsalgos_106X_UL16APV) - - -############################################################## -## DeepInfoAK4CHS:Start -## - To be used in nanoAOD_customizeCommon() in nano_cff.py -############################################################### -from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection -def nanoAOD_addDeepInfoAK4CHS(process,addDeepBTag,addDeepFlavour): - _btagDiscriminators=[] - if addDeepBTag: - print("Updating process to run DeepCSV btag") - _btagDiscriminators += ['pfDeepCSVJetTags:probb','pfDeepCSVJetTags:probbb','pfDeepCSVJetTags:probc'] - if addDeepFlavour: - print("Updating process to run DeepFlavour btag") - _btagDiscriminators += ['pfDeepFlavourJetTags:probb','pfDeepFlavourJetTags:probbb','pfDeepFlavourJetTags:problepb','pfDeepFlavourJetTags:probc'] - if len(_btagDiscriminators)==0: return process - print("Will recalculate the following discriminators: "+", ".join(_btagDiscriminators)) - updateJetCollection( - process, - jetSource = cms.InputTag('slimmedJets'), - jetCorrections = ('AK4PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute','L2L3Residual']), 'None'), - btagDiscriminators = _btagDiscriminators, - postfix = 'WithDeepInfo', - ) - process.load("Configuration.StandardSequences.MagneticField_cff") - process.jetCorrFactorsNano.src="selectedUpdatedPatJetsWithDeepInfo" - process.updatedJets.jetSource="selectedUpdatedPatJetsWithDeepInfo" - return process - -nanoAOD_addDeepInfoAK4CHS_switch = cms.PSet( - nanoAOD_addDeepBTag_switch = cms.untracked.bool(False), - nanoAOD_addDeepFlavourTag_switch = cms.untracked.bool(False), -) - -################################################ -## DeepInfoAK4CHS:End -################################################# - -################################################################################ -# 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 = finalJets.src, - cut = cms.string("pt<15 && abs(eta)<9.9"), - name = cms.string("CorrT1METJet"), - doc = cms.string("Additional low-pt ak4 CHS jets for Type-1 MET re-correction"), - 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( - rawPt = Var("pt()*jecFactor('Uncorrected')",float,precision=10), - eta = Var("eta", float,precision=12), - phi = Var("phi", float, precision=12), - area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10), - ) -) - -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) - -#before cross linking -jetUserDataTask = cms.Task(bJetVars,qgtagger,jercVars,tightJetId,tightJetIdLepVeto,pileupJetIdNano) - -# -# HF shower shape recomputation -# Only run if needed (i.e. if default MINIAOD info is missing or outdated because of new JECs...) -# -hfJetShowerShapeforNanoAOD = cms.EDProducer("HFJetShowerShape", - hfTowerEtaWidth = cms.double(0.175), - hfTowerPhiWidth = cms.double(0.175), - jetEtaThreshold = cms.double(2.9), - jetPtThreshold = cms.double(25), - jetReferenceRadius = cms.double(0.4), - jets = cms.InputTag("updatedJets"), - mightGet = cms.optional.untracked.vstring, - offsetPerPU = cms.double(0.4), - stripPtThreshold = cms.double(10), - vertexRecoEffcy = cms.double(0.7), - vertices = cms.InputTag("offlineSlimmedPrimaryVertices"), - widthPtThreshold = cms.double(3) -) - -#before cross linking -jetTask = cms.Task(jetCorrFactorsNano,updatedJets,jetUserDataTask,updatedJetsWithUserData,finalJets) - -#after cross linkining -jetTablesTask = cms.Task(bjetNN,cjetNN,jetTable) diff --git a/PhysicsTools/NanoAOD/python/V10/jetsAK4_Puppi_cff.py b/PhysicsTools/NanoAOD/python/V10/jetsAK4_Puppi_cff.py deleted file mode 100644 index 18455a36aad8b..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/jetsAK4_Puppi_cff.py +++ /dev/null @@ -1,198 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import * - -##################### User floats producers, selectors ########################## - -# 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 ) -jetPuppiCorrFactorsNano = cms.EDProducer("JetCorrFactorsProducer", - emf = cms.bool(False), - extraJPTOffset = cms.string('L1FastJet'), - flavorType = cms.string('J'), - levels = cms.vstring( - 'L1FastJet', - 'L2Relative', - 'L3Absolute', - 'L2L3Residual' - ), - mightGet = cms.optional.untracked.vstring, - payload = cms.string('AK4PFPuppi'), - primaryVertices = cms.InputTag("offlineSlimmedPrimaryVertices"), - rho = cms.InputTag("fixedGridRhoFastjetAll"), - src = cms.InputTag("slimmedJetsPuppi"), - useNPV = cms.bool(True), - useRho = cms.bool(True) -) - -updatedJetsPuppi = cms.EDProducer("PATJetUpdater", - addBTagInfo = cms.bool(False), - addDiscriminators = cms.bool(True), - addJetCorrFactors = cms.bool(True), - addTagInfos = cms.bool(False), - discriminatorSources = cms.VInputTag(), - jetCorrFactorsSource = cms.VInputTag(cms.InputTag("jetPuppiCorrFactorsNano")), - jetSource = cms.InputTag("slimmedJetsPuppi"), - mightGet = cms.optional.untracked.vstring, - printWarning = cms.bool(True), - sort = cms.bool(True), - tagInfoSources = cms.VInputTag(), - userData = cms.PSet( - userCands = cms.PSet( - src = cms.VInputTag("") - ), - userClasses = cms.PSet( - src = cms.VInputTag("") - ), - userFloats = cms.PSet( - src = cms.VInputTag("") - ), - userFunctionLabels = cms.vstring(), - userFunctions = cms.vstring(), - userInts = cms.PSet( - src = cms.VInputTag("") - ) - ) -) - -tightJetPuppiId = cms.EDProducer("PatJetIDValueMapProducer", - filterParams=cms.PSet( - version = cms.string('RUN2ULPUPPI'), - quality = cms.string('TIGHT'), - ), - src = cms.InputTag("updatedJetsPuppi") -) -tightJetPuppiIdLepVeto = cms.EDProducer("PatJetIDValueMapProducer", - filterParams=cms.PSet( - version = cms.string('RUN2ULPUPPI'), - quality = cms.string('TIGHTLEPVETO'), - ), - src = cms.InputTag("updatedJetsPuppi") -) - -#HF shower shape recomputation -hfJetPuppiShowerShapeforNanoAOD = cms.EDProducer("HFJetShowerShape", - hfTowerEtaWidth = cms.double(0.175), - hfTowerPhiWidth = cms.double(0.175), - jetEtaThreshold = cms.double(2.9), - jetPtThreshold = cms.double(25), - jetReferenceRadius = cms.double(0.4), - jets = cms.InputTag("updatedJetsPuppi"), - mightGet = cms.optional.untracked.vstring, - offsetPerPU = cms.double(0.4), - stripPtThreshold = cms.double(10), - vertexRecoEffcy = cms.double(0.7), - vertices = cms.InputTag("offlineSlimmedPrimaryVertices"), - widthPtThreshold = cms.double(3) -) - -updatedJetsPuppiWithUserData = cms.EDProducer("PATJetUserDataEmbedder", - src = cms.InputTag("updatedJetsPuppi"), - userFloats = cms.PSet( - hfsigmaEtaEta = cms.InputTag('hfJetPuppiShowerShapeforNanoAOD:sigmaEtaEta'), - hfsigmaPhiPhi = cms.InputTag('hfJetPuppiShowerShapeforNanoAOD:sigmaPhiPhi'), - ), - userInts = cms.PSet( - tightId = cms.InputTag("tightJetPuppiId"), - tightIdLepVeto = cms.InputTag("tightJetPuppiIdLepVeto"), - hfcentralEtaStripSize = cms.InputTag('hfJetPuppiShowerShapeforNanoAOD:centralEtaStripSize'), - hfadjacentEtaStripsSize = cms.InputTag('hfJetPuppiShowerShapeforNanoAOD:adjacentEtaStripsSize'), - ), -) - -finalJetsPuppi = cms.EDFilter("PATJetRefSelector", - src = cms.InputTag("updatedJetsPuppiWithUserData"), - cut = cms.string("pt > 15") -) - -##################### Tables for final output and docs ########################## -jetPuppiTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("linkedObjects","jets"), - cut = cms.string(""), #we should not filter on cross linked collections - name = cms.string("Jet"), - doc = cms.string("slimmedJetsPuppi, i.e. ak4 PFJets Puppi with JECs applied, after basic selection (" + finalJetsPuppi.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the jets - externalVariables = cms.PSet(), - variables = cms.PSet(P4Vars, - area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10), - nMuons = Var("?hasOverlaps('muons')?overlaps('muons').size():0", int, doc="number of muons in the jet"), - muonIdx1 = Var("?overlaps('muons').size()>0?overlaps('muons')[0].key():-1", int, doc="index of first matching muon"), - muonIdx2 = Var("?overlaps('muons').size()>1?overlaps('muons')[1].key():-1", int, doc="index of second matching muon"), - electronIdx1 = Var("?overlaps('electrons').size()>0?overlaps('electrons')[0].key():-1", int, doc="index of first matching electron"), - electronIdx2 = Var("?overlaps('electrons').size()>1?overlaps('electrons')[1].key():-1", int, doc="index of second matching electron"), - nElectrons = Var("?hasOverlaps('electrons')?overlaps('electrons').size():0", int, doc="number of electrons in the jet"), - 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), - btagDeepFlavB = Var("bDiscriminator('pfDeepFlavourJetTags:probb')+bDiscriminator('pfDeepFlavourJetTags:probbb')+bDiscriminator('pfDeepFlavourJetTags:problepb')",float,doc="DeepJet b+bb+lepb tag discriminator",precision=10), - btagCSVV2 = Var("bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10), - 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), - 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), - 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), - 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), - 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), - jetId = Var("userInt('tightId')*2+4*userInt('tightIdLepVeto')",int,doc="Jet ID flag: bit2 is tight, bit3 is tightLepVeto"), - hfsigmaEtaEta = Var("userFloat('hfsigmaEtaEta')",float,doc="sigmaEtaEta for HF jets (noise discriminating variable)",precision=10), - hfsigmaPhiPhi = Var("userFloat('hfsigmaPhiPhi')",float,doc="sigmaPhiPhi for HF jets (noise discriminating variable)",precision=10), - hfcentralEtaStripSize = Var("userInt('hfcentralEtaStripSize')", int, doc="eta size of the central tower strip in HF (noise discriminating variable)"), - hfadjacentEtaStripsSize = Var("userInt('hfadjacentEtaStripsSize')", int, doc="eta size of the strips next to the central tower strip in HF (noise discriminating variable)"), - nConstituents = Var("numberOfDaughters()","uint8",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), - neHEF = Var("neutralHadronEnergyFraction()", float, doc="neutral Hadron Energy Fraction", precision= 6), - chEmEF = Var("chargedEmEnergyFraction()", float, doc="charged Electromagnetic Energy Fraction", precision= 6), - neEmEF = Var("neutralEmEnergyFraction()", float, doc="neutral Electromagnetic Energy Fraction", precision= 6), - muEF = Var("muonEnergyFraction()", float, doc="muon Energy Fraction", precision= 6), - ) -) - -#jets are not as precise as muons -jetPuppiTable.variables.pt.precision=10 - -################################################################################ -# JETS FOR MET type1 -################################################################################ -basicJetsPuppiForMetForT1METNano = cms.EDProducer("PATJetCleanerForType1MET", - src = updatedJetsPuppiWithUserData.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) -) - -updatedJetsPuppiWithUserData.userFloats.muonSubtrRawPt = cms.InputTag("basicJetsPuppiForMetForT1METNano:MuonSubtrRawPt") - -corrT1METJetPuppiTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = finalJetsPuppi.src, - cut = cms.string("pt<15 && abs(eta)<9.9"), - name = cms.string("CorrT1METJet"), - doc = cms.string("Additional low-pt ak4 Puppi jets for Type-1 MET re-correction"), - 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( - rawPt = Var("pt()*jecFactor('Uncorrected')",float,precision=10), - eta = Var("eta", float,precision=12), - phi = Var("phi", float, precision=12), - area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10), - ) -) - -corrT1METJetPuppiTable.variables.muonSubtrFactor = Var("1-userFloat('muonSubtrRawPt')/(pt()*jecFactor('Uncorrected'))",float,doc="1-(muon-subtracted raw pt)/(raw pt)",precision=6) -jetPuppiTable.variables.muonSubtrFactor = Var("1-userFloat('muonSubtrRawPt')/(pt()*jecFactor('Uncorrected'))",float,doc="1-(muon-subtracted raw pt)/(raw pt)",precision=6) - -jetPuppiForMETTask = cms.Task(basicJetsPuppiForMetForT1METNano,corrT1METJetPuppiTable) - -#before cross linking -jetPuppiUserDataTask = cms.Task(tightJetPuppiId, tightJetPuppiIdLepVeto, hfJetPuppiShowerShapeforNanoAOD) - -#before cross linking -jetPuppiTask = cms.Task(jetPuppiCorrFactorsNano,updatedJetsPuppi,jetPuppiUserDataTask,updatedJetsPuppiWithUserData,finalJetsPuppi) - -#after cross linkining -jetPuppiTablesTask = cms.Task(jetPuppiTable) diff --git a/PhysicsTools/NanoAOD/python/V10/jetsAK8_cff.py b/PhysicsTools/NanoAOD/python/V10/jetsAK8_cff.py deleted file mode 100644 index 5e05e3d55ab1e..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/jetsAK8_cff.py +++ /dev/null @@ -1,276 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff 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 ) -jetCorrFactorsAK8 = cms.EDProducer("JetCorrFactorsProducer", - emf = cms.bool(False), - extraJPTOffset = cms.string('L1FastJet'), - flavorType = cms.string('J'), - levels = cms.vstring( - 'L1FastJet', - 'L2Relative', - 'L3Absolute', - 'L2L3Residual' - ), - mightGet = cms.optional.untracked.vstring, - payload = cms.string('AK8PFPuppi'), - primaryVertices = cms.InputTag("offlineSlimmedPrimaryVertices"), - rho = cms.InputTag("fixedGridRhoFastjetAll"), - src = cms.InputTag("slimmedJetsAK8"), - useNPV = cms.bool(True), - useRho = cms.bool(True) -) - - -updatedJetsAK8 = cms.EDProducer("PATJetUpdater", - addBTagInfo = cms.bool(False), - addDiscriminators = cms.bool(True), - addJetCorrFactors = cms.bool(True), - addTagInfos = cms.bool(False), - discriminatorSources = cms.VInputTag(), - jetCorrFactorsSource = cms.VInputTag(cms.InputTag("jetCorrFactorsAK8")), - jetSource = cms.InputTag("slimmedJetsAK8"), - mightGet = cms.optional.untracked.vstring, - printWarning = cms.bool(True), - sort = cms.bool(True), - tagInfoSources = cms.VInputTag(), - userData = cms.PSet( - userCands = cms.PSet( - src = cms.VInputTag("") - ), - userClasses = cms.PSet( - src = cms.VInputTag("") - ), - userFloats = cms.PSet( - src = cms.VInputTag("") - ), - userFunctionLabels = cms.vstring(), - userFunctions = cms.vstring(), - userInts = cms.PSet( - src = cms.VInputTag("") - ) - ) -) - -# -# JetID -# -looseJetIdAK8 = cms.EDProducer("PatJetIDValueMapProducer", - filterParams=cms.PSet( - version = cms.string('WINTER16'), - quality = cms.string('LOOSE'), - ), - src = cms.InputTag("updatedJetsAK8") -) -tightJetIdAK8 = cms.EDProducer("PatJetIDValueMapProducer", - filterParams=cms.PSet( - version = cms.string('RUN2ULPUPPI'), - quality = cms.string('TIGHT'), - ), - src = cms.InputTag("updatedJetsAK8") -) -tightJetIdLepVetoAK8 = cms.EDProducer("PatJetIDValueMapProducer", - filterParams=cms.PSet( - version = cms.string('RUN2ULPUPPI'), - quality = cms.string('TIGHTLEPVETO'), - ), - src = cms.InputTag("updatedJetsAK8") -) - -run2_jme_2016.toModify( tightJetIdAK8.filterParams, version = "RUN2UL16PUPPI" ) -run2_jme_2016.toModify( tightJetIdLepVetoAK8.filterParams, version = "RUN2UL16PUPPI" ) - - -updatedJetsAK8WithUserData = cms.EDProducer("PATJetUserDataEmbedder", - src = cms.InputTag("updatedJetsAK8"), - userFloats = cms.PSet(), - userInts = cms.PSet( - tightId = cms.InputTag("tightJetIdAK8"), - tightIdLepVeto = cms.InputTag("tightJetIdLepVetoAK8"), - ), -) - - -finalJetsAK8 = cms.EDFilter("PATJetRefSelector", - src = cms.InputTag("updatedJetsAK8WithUserData"), - cut = cms.string("pt > 170") -) - - -lepInAK8JetVars = cms.EDProducer("LepInJetProducer", - src = cms.InputTag("updatedJetsAK8WithUserData"), - srcEle = cms.InputTag("finalElectrons"), - srcMu = cms.InputTag("finalMuons") -) - -fatJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("finalJetsAK8"), - cut = cms.string(" pt > 170"), #probably already applied in miniaod - name = cms.string("FatJet"), - doc = cms.string("slimmedJetsAK8, i.e. ak8 fat jets for boosted analysis"), - 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(P4Vars, - 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"), - area = Var("jetArea()", float, doc="jet catchment area, for JECs",precision=10), - rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6), - tau1 = Var("userFloat('NjettinessAK8Puppi:tau1')",float, doc="Nsubjettiness (1 axis)",precision=10), - tau2 = Var("userFloat('NjettinessAK8Puppi:tau2')",float, doc="Nsubjettiness (2 axis)",precision=10), - tau3 = Var("userFloat('NjettinessAK8Puppi:tau3')",float, doc="Nsubjettiness (3 axis)",precision=10), - tau4 = Var("userFloat('NjettinessAK8Puppi:tau4')",float, doc="Nsubjettiness (4 axis)",precision=10), - n2b1 = Var("?hasUserFloat('nb1AK8PuppiSoftDrop:ecfN2')?userFloat('nb1AK8PuppiSoftDrop:ecfN2'):-99999.", float, doc="N2 with beta=1 (for jets with raw pT>250 GeV)", precision=10), - n3b1 = Var("?hasUserFloat('nb1AK8PuppiSoftDrop:ecfN3')?userFloat('nb1AK8PuppiSoftDrop:ecfN3'):-99999.", float, doc="N3 with beta=1 (for jets with raw pT>250 GeV)", precision=10), - msoftdrop = Var("groomedMass('SoftDropPuppi')",float, doc="Corrected soft drop mass with PUPPI",precision=10), - 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), - btagCSVV2 = Var("bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10), - btagHbb = Var("bDiscriminator('pfBoostedDoubleSecondaryVertexAK8BJetTags')",float,doc="Higgs to BB tagger discriminator",precision=10), - btagDDBvLV2 = Var("bDiscriminator('pfMassIndependentDeepDoubleBvLV2JetTags:probHbb')",float,doc="DeepDoubleX V2(mass-decorrelated) discriminator for H(Z)->bb vs QCD",precision=10), - btagDDCvLV2 = Var("bDiscriminator('pfMassIndependentDeepDoubleCvLV2JetTags:probHcc')",float,doc="DeepDoubleX V2 (mass-decorrelated) discriminator for H(Z)->cc vs QCD",precision=10), - btagDDCvBV2 = Var("bDiscriminator('pfMassIndependentDeepDoubleCvBV2JetTags:probHcc')",float,doc="DeepDoubleX V2 (mass-decorrelated) discriminator for H(Z)->cc vs H(Z)->bb",precision=10), - deepTag_TvsQCD = Var("bDiscriminator('pfDeepBoostedDiscriminatorsJetTags:TvsQCD')",float,doc="DeepBoostedJet tagger top vs QCD discriminator",precision=10), - deepTag_WvsQCD = Var("bDiscriminator('pfDeepBoostedDiscriminatorsJetTags:WvsQCD')",float,doc="DeepBoostedJet tagger W vs QCD discriminator",precision=10), - deepTag_ZvsQCD = Var("bDiscriminator('pfDeepBoostedDiscriminatorsJetTags:ZvsQCD')",float,doc="DeepBoostedJet tagger Z vs QCD discriminator",precision=10), - deepTag_H = Var("bDiscriminator('pfDeepBoostedJetTags:probHbb')+bDiscriminator('pfDeepBoostedJetTags:probHcc')+bDiscriminator('pfDeepBoostedJetTags:probHqqqq')",float,doc="DeepBoostedJet tagger H(bb,cc,4q) sum",precision=10), - 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), - deepTag_QCDothers = Var("bDiscriminator('pfDeepBoostedJetTags:probQCDothers')",float,doc="DeepBoostedJet tagger QCDothers value",precision=10), - deepTagMD_TvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:TvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger top vs QCD discriminator",precision=10), - deepTagMD_WvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:WvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger W vs QCD discriminator",precision=10), - deepTagMD_ZvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z vs QCD discriminator",precision=10), - deepTagMD_ZHbbvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZHbbvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z/H->bb vs QCD discriminator",precision=10), - deepTagMD_ZbbvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZbbvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z->bb vs QCD discriminator",precision=10), - deepTagMD_HbbvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:HbbvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger H->bb vs QCD discriminator",precision=10), - deepTagMD_ZHccvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ZHccvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z/H->cc vs QCD discriminator",precision=10), - deepTagMD_H4qvsQCD = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:H4qvsQCD')",float,doc="Mass-decorrelated DeepBoostedJet tagger H->4q vs QCD discriminator",precision=10), - deepTagMD_bbvsLight = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:bbvsLight')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z/H/gluon->bb vs light flavour discriminator",precision=10), - deepTagMD_ccvsLight = Var("bDiscriminator('pfMassDecorrelatedDeepBoostedDiscriminatorsJetTags:ccvsLight')",float,doc="Mass-decorrelated DeepBoostedJet tagger Z/H/gluon->cc vs light flavour discriminator",precision=10), - particleNet_TvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:TvsQCD')",float,doc="ParticleNet tagger top vs QCD discriminator",precision=10), - particleNet_WvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:WvsQCD')",float,doc="ParticleNet tagger W vs QCD discriminator",precision=10), - particleNet_ZvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:ZvsQCD')",float,doc="ParticleNet tagger Z vs QCD discriminator",precision=10), - particleNet_HbbvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:HbbvsQCD')",float,doc="ParticleNet tagger H(->bb) vs QCD discriminator",precision=10), - particleNet_HccvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:HccvsQCD')",float,doc="ParticleNet tagger H(->cc) vs QCD discriminator",precision=10), - particleNet_H4qvsQCD = Var("bDiscriminator('pfParticleNetDiscriminatorsJetTags:H4qvsQCD')",float,doc="ParticleNet tagger H(->VV->qqqq) vs QCD discriminator",precision=10), - particleNet_QCD = Var("bDiscriminator('pfParticleNetJetTags:probQCDbb')+bDiscriminator('pfParticleNetJetTags:probQCDcc')+bDiscriminator('pfParticleNetJetTags:probQCDb')+bDiscriminator('pfParticleNetJetTags:probQCDc')+bDiscriminator('pfParticleNetJetTags:probQCDothers')",float,doc="ParticleNet tagger QCD(bb,cc,b,c,others) sum",precision=10), - particleNet_mass = Var("bDiscriminator('pfParticleNetMassRegressionJetTags:mass')",float,doc="ParticleNet mass regression",precision=10), - particleNetMD_Xbb = Var("bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probXbb')",float,doc="Mass-decorrelated ParticleNet tagger raw X->bb score. For X->bb vs QCD tagging, use Xbb/(Xbb+QCD)",precision=10), - particleNetMD_Xcc = Var("bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probXcc')",float,doc="Mass-decorrelated ParticleNet tagger raw X->cc score. For X->cc vs QCD tagging, use Xcc/(Xcc+QCD)",precision=10), - particleNetMD_Xqq = Var("bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probXqq')",float,doc="Mass-decorrelated ParticleNet 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), - particleNetMD_QCD = Var("bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDbb')+bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDcc')+bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDb')+bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDc')+bDiscriminator('pfMassDecorrelatedParticleNetJetTags:probQCDothers')",float,doc="Mass-decorrelated ParticleNet tagger raw QCD score",precision=10), - subJetIdx1 = Var("?nSubjetCollections()>0 && subjets('SoftDropPuppi').size()>0?subjets('SoftDropPuppi')[0].key():-1", int, - doc="index of first subjet"), - subJetIdx2 = Var("?nSubjetCollections()>0 && subjets('SoftDropPuppi').size()>1?subjets('SoftDropPuppi')[1].key():-1", int, - doc="index of second subjet"), - nConstituents = Var("numberOfDaughters()","uint8",doc="Number of particles in the jet"), - ), - externalVariables = cms.PSet( - lsf3 = ExtVar(cms.InputTag("lepInAK8JetVars:lsf3"),float, doc="Lepton Subjet Fraction (3 subjets)",precision=10), - muonIdx3SJ = ExtVar(cms.InputTag("lepInAK8JetVars:muIdx3SJ"),int, doc="index of muon matched to jet"), - electronIdx3SJ = ExtVar(cms.InputTag("lepInAK8JetVars:eleIdx3SJ"),int,doc="index of electron matched to jet"), - ) -) - -############################################################## -## DeepInfoAK8:Start -## - To be used in nanoAOD_customizeCommon() in nano_cff.py -############################################################### -from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection -def nanoAOD_addDeepInfoAK8(process, addDeepBTag, addDeepBoostedJet, addDeepDoubleX, addDeepDoubleXV2, addParticleNet, addParticleNetMass, jecPayload): - _btagDiscriminators=[] - if addDeepBTag: - print("Updating process to run DeepCSV btag to AK8 jets") - _btagDiscriminators += ['pfDeepCSVJetTags:probb','pfDeepCSVJetTags:probbb'] - if addDeepBoostedJet: - print("Updating process to run DeepBoostedJet on datasets before 103X") - from RecoBTag.ONNXRuntime.pfDeepBoostedJet_cff import _pfDeepBoostedJetTagsAll as pfDeepBoostedJetTagsAll - _btagDiscriminators += pfDeepBoostedJetTagsAll - if addParticleNet: - print("Updating process to run ParticleNet before it's included in MiniAOD") - from RecoBTag.ONNXRuntime.pfParticleNet_cff import _pfParticleNetJetTagsAll as pfParticleNetJetTagsAll - _btagDiscriminators += pfParticleNetJetTagsAll - if addParticleNetMass: - from RecoBTag.ONNXRuntime.pfParticleNet_cff import _pfParticleNetMassRegressionOutputs - _btagDiscriminators += _pfParticleNetMassRegressionOutputs - if addDeepDoubleX: - print("Updating process to run DeepDoubleX on datasets before 104X") - _btagDiscriminators += ['pfDeepDoubleBvLJetTags:probHbb', \ - 'pfDeepDoubleCvLJetTags:probHcc', \ - 'pfDeepDoubleCvBJetTags:probHcc', \ - 'pfMassIndependentDeepDoubleBvLJetTags:probHbb', 'pfMassIndependentDeepDoubleCvLJetTags:probHcc', 'pfMassIndependentDeepDoubleCvBJetTags:probHcc'] - if addDeepDoubleXV2: - print("Updating process to run DeepDoubleXv2 on datasets before 11X") - _btagDiscriminators += [ - 'pfMassIndependentDeepDoubleBvLV2JetTags:probHbb', - 'pfMassIndependentDeepDoubleCvLV2JetTags:probHcc', - 'pfMassIndependentDeepDoubleCvBV2JetTags:probHcc' - ] - if len(_btagDiscriminators)==0: return process - print("Will recalculate the following discriminators on AK8 jets: "+", ".join(_btagDiscriminators)) - updateJetCollection( - process, - jetSource = cms.InputTag('slimmedJetsAK8'), - pvSource = cms.InputTag('offlineSlimmedPrimaryVertices'), - svSource = cms.InputTag('slimmedSecondaryVertices'), - rParam = 0.8, - jetCorrections = (jecPayload.value(), cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute', 'L2L3Residual']), 'None'), - btagDiscriminators = _btagDiscriminators, - postfix='AK8WithDeepInfo', - printWarning = False - ) - process.jetCorrFactorsAK8.src="selectedUpdatedPatJetsAK8WithDeepInfo" - process.updatedJetsAK8.jetSource="selectedUpdatedPatJetsAK8WithDeepInfo" - return process - -nanoAOD_addDeepInfoAK8_switch = cms.PSet( - nanoAOD_addDeepBTag_switch = cms.untracked.bool(False), - nanoAOD_addDeepBoostedJet_switch = cms.untracked.bool(False), - nanoAOD_addDeepDoubleX_switch = cms.untracked.bool(False), - nanoAOD_addDeepDoubleXV2_switch = cms.untracked.bool(False), - nanoAOD_addParticleNet_switch = cms.untracked.bool(False), - nanoAOD_addParticleNetMass_switch = cms.untracked.bool(False), - jecPayload = cms.untracked.string('AK8PFPuppi') -) - -# for 106Xv2: only needs to run ParticleNet Mass regression; The rest are already in MiniAOD -run2_nanoAOD_106Xv2.toModify( - nanoAOD_addDeepInfoAK8_switch, - nanoAOD_addParticleNetMass_switch = True, -) -################################################ -## DeepInfoAK8:End -################################################# - -subJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("slimmedJetsAK8PFPuppiSoftDropPacked","SubJets"), - cut = cms.string(""), #probably already applied in miniaod - name = cms.string("SubJet"), - doc = cms.string("slimmedJetsAK8, i.e. ak8 fat jets for boosted analysis"), - 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(P4Vars, - btagDeepB = Var("bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb')",float,doc="DeepCSV b+bb tag discriminator",precision=10), - btagCSVV2 = Var("bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags')",float,doc=" pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)",precision=10), - rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6), - tau1 = Var("userFloat('NjettinessAK8Subjets:tau1')",float, doc="Nsubjettiness (1 axis)",precision=10), - tau2 = Var("userFloat('NjettinessAK8Subjets:tau2')",float, doc="Nsubjettiness (2 axis)",precision=10), - tau3 = Var("userFloat('NjettinessAK8Subjets:tau3')",float, doc="Nsubjettiness (3 axis)",precision=10), - tau4 = Var("userFloat('NjettinessAK8Subjets:tau4')",float, doc="Nsubjettiness (4 axis)",precision=10), - n2b1 = Var("userFloat('nb1AK8PuppiSoftDropSubjets:ecfN2')", float, doc="N2 with beta=1", precision=10), - n3b1 = Var("userFloat('nb1AK8PuppiSoftDropSubjets:ecfN3')", float, doc="N3 with beta=1", precision=10), - ) -) - - -#jets are not as precise as muons -fatJetTable.variables.pt.precision=10 -subJetTable.variables.pt.precision=10 - - -jetAK8UserDataTask = cms.Task(tightJetIdAK8,tightJetIdLepVetoAK8) -jetAK8Task = cms.Task(jetCorrFactorsAK8,updatedJetsAK8,jetAK8UserDataTask,updatedJetsAK8WithUserData,finalJetsAK8) - -#after lepton collections have been run -jetAK8LepTask = cms.Task(lepInAK8JetVars) - -jetAK8TablesTask = cms.Task(fatJetTable,subJetTable) diff --git a/PhysicsTools/NanoAOD/python/V10/lowPtElectrons_cff.py b/PhysicsTools/NanoAOD/python/V10/lowPtElectrons_cff.py deleted file mode 100644 index 0910881eab028..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/lowPtElectrons_cff.py +++ /dev/null @@ -1,227 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import Var,CandVars - -################################################################################ -# Modules -################################################################################ - -modifiedLowPtElectrons = cms.EDProducer( - "ModifiedElectronProducer", - src = cms.InputTag("slimmedLowPtElectrons"), - modifierConfig = cms.PSet( - modifications = cms.VPSet(cms.PSet( - addExtraUserVars = cms.bool(True), - beamSpot = cms.InputTag("offlineBeamSpot"), - conversions = cms.InputTag("gsfTracksOpenConversions","gsfTracksOpenConversions"), - modifierName = cms.string('LowPtElectronModifier'), - vertices = cms.InputTag("offlineSlimmedPrimaryVertices") - )) - ) -) - -updatedLowPtElectrons = cms.EDProducer( - "PATElectronUpdater", - src = cms.InputTag("modifiedLowPtElectrons"), - vertices = cms.InputTag("offlineSlimmedPrimaryVertices"), - computeMiniIso = cms.bool(True), - fixDxySign = cms.bool(False), - pfCandsForMiniIso = cms.InputTag("packedPFCandidates"), - miniIsoParamsB = cms.vdouble( - 0.05, 0.2, 10.0, 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0 - ), - miniIsoParamsE = cms.vdouble( - 0.05, 0.2, 10.0, 0.0, 0.015, - 0.015, 0.08, 0.0, 0.0 - ) -) - -isoForLowPtEle = cms.EDProducer( - "EleIsoValueMapProducer", - src = cms.InputTag("updatedLowPtElectrons"), - relative = cms.bool(True), - rho_MiniIso = cms.InputTag("fixedGridRhoFastjetAll"), - rho_PFIso = cms.InputTag("fixedGridRhoFastjetAll"), - EAFile_MiniIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"), - EAFile_PFIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"), -) - -updatedLowPtElectronsWithUserData = cms.EDProducer( - "PATElectronUserDataEmbedder", - src = cms.InputTag("updatedLowPtElectrons"), - userFloats = cms.PSet( - miniIsoChg = cms.InputTag("isoForLowPtEle:miniIsoChg"), - miniIsoAll = cms.InputTag("isoForLowPtEle:miniIsoAll"), - ), - userIntFromBools = cms.PSet(), - userInts = cms.PSet(), - userCands = cms.PSet(), -) - -finalLowPtElectrons = cms.EDFilter( - "PATElectronRefSelector", - src = cms.InputTag("updatedLowPtElectronsWithUserData"), - cut = cms.string("pt > 1. && electronID('ID') > -0.25"), -) - -################################################################################ -# electronTable -################################################################################ - -lowPtElectronTable = cms.EDProducer( - "SimpleCandidateFlatTableProducer", - src = cms.InputTag("linkedObjects","lowPtElectrons"), - cut = cms.string(""), - name= cms.string("LowPtElectron"), - doc = cms.string("slimmedLowPtElectrons after basic selection (" + finalLowPtElectrons.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the electrons - variables = cms.PSet( - # Basic variables - CandVars, - # Overlaps with PF electron - electronIdx = Var("?overlaps('electrons').size()>0?overlaps('electrons')[0].key():-1", int, doc="index of the overlapping PF electron (-1 if none)"), - # BDT scores and WPs - ID = Var("electronID('ID')",float,doc="ID, BDT (raw) score"), - unbiased = Var("electronID('unbiased')",float,doc="ElectronSeed, pT- and dxy- agnostic BDT (raw) score"), - ptbiased = Var("electronID('ptbiased')",float,doc="ElectronSeed, pT- and dxy- dependent BDT (raw) score"), - # Isolation - miniPFRelIso_chg = Var("userFloat('miniIsoChg')",float, - doc="mini PF relative isolation, charged component"), - miniPFRelIso_all = Var("userFloat('miniIsoAll')",float, - doc="mini PF relative isolation, total (with scaled rho*EA PU corrections)"), - # Conversions - convVeto = Var("passConversionVeto()",bool,doc="pass conversion veto"), - convWP = Var("userInt('convOpen')*1 + userInt('convLoose')*2 + userInt('convTight')*4", - int,doc="conversion flag bit map: 1=Veto, 2=Loose, 3=Tight"), - convVtxRadius = Var("userFloat('convVtxRadius')",float,doc="conversion vertex radius (cm)",precision=7), - # Tracking - lostHits = Var("gsfTrack.hitPattern.numberOfLostHits('MISSING_INNER_HITS')","uint8",doc="number of missing inner hits"), - # Cluster-related - energyErr = Var("p4Error('P4_COMBINATION')",float,doc="energy error of the cluster-track combination",precision=6), - deltaEtaSC = Var("superCluster().eta()-eta()",float,doc="delta eta (SC,ele) with sign",precision=10), - r9 = Var("full5x5_r9()",float,doc="R9 of the SC, calculated with full 5x5 region",precision=10), - sieie = Var("full5x5_sigmaIetaIeta()",float,doc="sigma_IetaIeta of the SC, calculated with full 5x5 region",precision=10), - eInvMinusPInv = Var("(1-eSuperClusterOverP())/ecalEnergy()",float,doc="1/E_SC - 1/p_trk",precision=10), - scEtOverPt = Var("(superCluster().energy()/(pt*cosh(superCluster().eta())))-1",float,doc="(SC energy)/pt-1",precision=8), - hoe = Var("hadronicOverEm()",float,doc="H over E",precision=8), - # Displacement - dxy = Var("dB('PV2D')",float,doc="dxy (with sign) wrt first PV, in cm",precision=10), - dxyErr = Var("edB('PV2D')",float,doc="dxy uncertainty, in cm",precision=6), - dz = Var("dB('PVDZ')",float,doc="dz (with sign) wrt first PV, in cm",precision=10), - dzErr = Var("abs(edB('PVDZ'))",float,doc="dz uncertainty, in cm",precision=6), - # Cross-referencing - #jetIdx - #photonIdx - ), -) - -################################################################################ -# electronTable (MC) -################################################################################ - -# Depends on tautaggerForMatching being run in electrons_cff -matchingLowPtElecPhoton = cms.EDProducer( - "GenJetGenPartMerger", - srcJet =cms.InputTag("particleLevel:leptons"), - srcPart=cms.InputTag("particleLevel:photons"), - cut = cms.string(""), - hasTauAnc=cms.InputTag("tautaggerForMatching"), -) - -lowPtElectronsMCMatchForTableAlt = cms.EDProducer( - "GenJetMatcherDRPtByDR", # cut on deltaR, deltaPt/Pt; pick best by deltaR - src = lowPtElectronTable.src, # final reco collection - matched = cms.InputTag("matchingLowPtElecPhoton:merged"), # final mc-truth particle collection - mcPdgId = cms.vint32(11,22), # one or more PDG ID (11 = el, 22 = pho); absolute values (see below) - checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge - mcStatus = cms.vint32(), - maxDeltaR = cms.double(0.3), # Minimum deltaR for the match - maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match - resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object - resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first -) - -lowPtElectronsMCMatchForTable = cms.EDProducer( - "MCMatcher", # cut on deltaR, deltaPt/Pt; pick best by deltaR - src = lowPtElectronTable.src, # final reco collection - matched = cms.InputTag("finalGenParticles"), # final mc-truth particle collection - mcPdgId = cms.vint32(11), # one or more PDG ID (11 = ele); absolute values (see below) - checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge - mcStatus = cms.vint32(1), # PYTHIA status code (1 = stable, 2 = shower, 3 = hard scattering) - maxDeltaR = cms.double(0.3), # Minimum deltaR for the match - maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match - resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object - resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first -) - -from PhysicsTools.NanoAOD.V10.electrons_cff import electronMCTable -lowPtElectronMCTable = cms.EDProducer( - "CandMCMatchTableProducer", - src = lowPtElectronTable.src, - mcMapDressedLep = cms.InputTag("lowPtElectronsMCMatchForTableAlt"), - mcMap = cms.InputTag("lowPtElectronsMCMatchForTable"), - mapTauAnc = cms.InputTag("matchingLowPtElecPhoton:hasTauAnc"), - objName = lowPtElectronTable.name, - objType = electronMCTable.objType, - branchName = cms.string("genPart"), - docString = cms.string("MC matching to status==1 electrons or photons"), - genparticles = cms.InputTag("finalGenParticles"), -) - -################################################################################ -# Tasks -################################################################################ - -lowPtElectronTask = cms.Task(modifiedLowPtElectrons, - updatedLowPtElectrons, - isoForLowPtEle, - updatedLowPtElectronsWithUserData, - finalLowPtElectrons) - -lowPtElectronTablesTask = cms.Task(lowPtElectronTable) - -lowPtElectronMCTask = cms.Task( - matchingLowPtElecPhoton, - lowPtElectronsMCMatchForTable, - lowPtElectronsMCMatchForTableAlt, - lowPtElectronMCTable) - -################################################################################ -# Modifiers -################################################################################ - - -# To preserve "nano v9" functionality ... -# dependency that might be dropped -from RecoEgamma.EgammaTools.lowPtElectronModifier_cfi import lowPtElectronModifier -from RecoEgamma.EgammaElectronProducers.lowPtGsfElectrons_cfi import lowPtRegressionModifier - -run2_nanoAOD_106Xv2.toModify(modifiedLowPtElectrons.modifierConfig, - modifications = cms.VPSet(lowPtElectronModifier, - lowPtRegressionModifier)) - -run2_nanoAOD_106Xv2.toModify(updatedLowPtElectronsWithUserData.userFloats, - ID = cms.InputTag("lowPtPATElectronID")) - -run2_nanoAOD_106Xv2.toModify(finalLowPtElectrons, - cut = "pt > 1. && userFloat('ID') > -0.25") - -run2_nanoAOD_106Xv2.toModify(lowPtElectronTable.variables, - embeddedID = Var("electronID('ID')",float,doc="ID, BDT (raw) score"), - ID = Var("userFloat('ID')",float,doc="New ID, BDT (raw) score")) - -from RecoEgamma.EgammaElectronProducers.lowPtGsfElectronID_cfi import lowPtGsfElectronID -lowPtPATElectronID = lowPtGsfElectronID.clone( - usePAT = True, - electrons = "updatedLowPtElectrons", - unbiased = "", - ModelWeights = [ - 'RecoEgamma/ElectronIdentification/data/LowPtElectrons/LowPtElectrons_ID_2020Nov28.root', - ], -) - -_lowPtElectronTask = cms.Task(lowPtPATElectronID, lowPtElectronTask.copy()) - -run2_nanoAOD_106Xv2.toReplaceWith(lowPtElectronTask,_lowPtElectronTask) diff --git a/PhysicsTools/NanoAOD/python/V10/met_cff.py b/PhysicsTools/NanoAOD/python/V10/met_cff.py deleted file mode 100644 index 836dda3c74d76..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/met_cff.py +++ /dev/null @@ -1,162 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import * -from PhysicsTools.NanoAOD.nano_eras_cff import * - - -##################### Tables for final output and docs ########################## -metTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("slimmedMETs"), - name = cms.string("MET"), - doc = cms.string("slimmedMET, type-1 corrected PF MET"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the MET - variables = cms.PSet(PTVars, - sumEt = Var("sumEt()", float, doc="scalar sum of Et",precision=10), - covXX = Var("getSignificanceMatrix().At(0,0)",float,doc="xx element of met covariance matrix", precision=8), - covXY = Var("getSignificanceMatrix().At(0,1)",float,doc="xy element of met covariance matrix", precision=8), - covYY = Var("getSignificanceMatrix().At(1,1)",float,doc="yy element of met covariance matrix", precision=8), - significance = Var("metSignificance()", float, doc="MET significance",precision=10), - sumPtUnclustered = Var("metSumPtUnclustered()", float, doc="sumPt used for MET significance",precision=10), - MetUnclustEnUpDeltaX = Var("shiftedPx('UnclusteredEnUp')-px()", float, doc="Delta (METx_mod-METx) Unclustered Energy Up",precision=10), - MetUnclustEnUpDeltaY = Var("shiftedPy('UnclusteredEnUp')-py()", float, doc="Delta (METy_mod-METy) Unclustered Energy Up",precision=10), - - ), -) - - -rawMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = metTable.src, - name = cms.string("RawMET"), - doc = cms.string("raw PF MET"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the MET - variables = cms.PSet(#NOTA BENE: we don't copy PTVars here! - pt = Var("uncorPt", float, doc="pt", precision=10), - phi = Var("uncorPhi", float, doc="phi", precision=10), - sumEt = Var("uncorSumEt", float, doc="scalar sum of Et", precision=10), - ), -) - - -caloMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = metTable.src, - name = cms.string("CaloMET"), - doc = cms.string("Offline CaloMET (muon corrected)"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the MET - variables = cms.PSet(#NOTA BENE: we don't copy PTVars here! - pt = Var("caloMETPt", float, doc="pt", precision=10), - phi = Var("caloMETPhi", float, doc="phi", precision=10), - sumEt = Var("caloMETSumEt", float, doc="scalar sum of Et", precision=10), - ), -) - -puppiMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("slimmedMETsPuppi"), - name = cms.string("PuppiMET"), - doc = cms.string("PUPPI MET"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the MET - variables = cms.PSet(PTVars, - sumEt = Var("sumEt()", float, doc="scalar sum of Et",precision=10), - ptJERUp = Var("shiftedPt('JetResUp')", float, doc="JER up pt",precision=10), - ptJERDown = Var("shiftedPt('JetResDown')", float, doc="JER down pt",precision=10), - phiJERUp = Var("shiftedPhi('JetResUp')", float, doc="JER up phi",precision=10), - phiJERDown = Var("shiftedPhi('JetResDown')", float, doc="JER down phi",precision=10), - ptJESUp = Var("shiftedPt('JetEnUp')", float, doc="JES up pt",precision=10), - ptJESDown = Var("shiftedPt('JetEnDown')", float, doc="JES down pt",precision=10), - phiJESUp = Var("shiftedPhi('JetEnUp')", float, doc="JES up phi",precision=10), - phiJESDown = Var("shiftedPhi('JetEnDown')", float, doc="JES down phi",precision=10), - ptUnclusteredUp = Var("shiftedPt('UnclusteredEnUp')", float, doc="Unclustered up pt",precision=10), - ptUnclusteredDown = Var("shiftedPt('UnclusteredEnDown')", float, doc="Unclustered down pt",precision=10), - phiUnclusteredUp = Var("shiftedPhi('UnclusteredEnUp')", float, doc="Unclustered up phi",precision=10), - phiUnclusteredDown = Var("shiftedPhi('UnclusteredEnDown')", float, doc="Unclustered down phi",precision=10), - ), -) - -rawPuppiMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = puppiMetTable.src, - name = cms.string("RawPuppiMET"), - doc = cms.string("raw Puppi MET"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the MET - variables = cms.PSet(#NOTA BENE: we don't copy PTVars here! - pt = Var("uncorPt", float, doc="pt", precision=10), - phi = Var("uncorPhi", float, doc="phi", precision=10), - sumEt = Var("uncorSumEt", float, doc="scalar sum of Et", precision=10), - ),) - - -tkMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = metTable.src, - name = cms.string("TkMET"), - doc = cms.string("Track MET computed with tracks from PV0 ( pvAssociationQuality()>=4 ) "), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the TkMET - variables = cms.PSet(#NOTA BENE: we don't copy PTVars here! - pt = Var("corPt('RawTrk')", float, doc="raw track MET pt",precision=10), - phi = Var("corPhi('RawTrk')", float, doc="raw track MET phi",precision=10), - sumEt = Var("corSumEt('RawTrk')", float, doc="raw track scalar sum of Et",precision=10), - ), -) - -chsMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = metTable.src, - name = cms.string("ChsMET"), - doc = cms.string("PF MET computed with CHS PF candidates"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the TkMET - variables = cms.PSet(#NOTA BENE: we don't copy PTVars here! - pt = Var("corPt('RawChs')", float, doc="raw chs PF MET pt",precision=10), - phi = Var("corPhi('RawChs')", float, doc="raw chs PF MET phi",precision=10), - sumEt = Var("corSumEt('RawChs')", float, doc="raw chs PF scalar sum of Et",precision=10), - ), -) - -deepMetResolutionTuneTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - # current deepMets are saved in slimmedMETs in MiniAOD, - # in the same way as chsMet/TkMET - src = metTable.src, - name = cms.string("DeepMETResolutionTune"), - doc = cms.string("Deep MET trained with resolution tune"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the MET - variables = cms.PSet(#NOTA BENE: we don't copy PTVars here! - pt = Var("corPt('RawDeepResolutionTune')", float, doc="DeepMET ResolutionTune pt",precision=-1), - phi = Var("corPhi('RawDeepResolutionTune')", float, doc="DeepmET ResolutionTune phi",precision=12), - ), -) - -deepMetResponseTuneTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = metTable.src, - name = cms.string("DeepMETResponseTune"), - doc = cms.string("Deep MET trained with extra response tune"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(False), # this is the main table for the MET - variables = cms.PSet(#NOTA BENE: we don't copy PTVars here! - pt = Var("corPt('RawDeepResponseTune')", float, doc="DeepMET ResponseTune pt",precision=-1), - phi = Var("corPhi('RawDeepResponseTune')", float, doc="DeepMET ResponseTune phi",precision=12), - ), -) - -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, - name = cms.string("GenMET"), - doc = cms.string("Gen MET"), - singleton = cms.bool(True), - extension = cms.bool(False), - variables = cms.PSet( - pt = Var("genMET.pt", float, doc="pt", precision=10), - phi = Var("genMET.phi", float, doc="phi", precision=10), - ), -) - - -metTablesTask = cms.Task( metTable, rawMetTable, caloMetTable, puppiMetTable, rawPuppiMetTable, tkMetTable, chsMetTable, deepMetResolutionTuneTable, deepMetResponseTuneTable ) -metMCTask = cms.Task( metMCTable ) diff --git a/PhysicsTools/NanoAOD/python/V10/muons_cff.py b/PhysicsTools/NanoAOD/python/V10/muons_cff.py deleted file mode 100644 index eb2c0c4bb4cd2..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/muons_cff.py +++ /dev/null @@ -1,178 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import * - -# this below is used only in some eras -slimmedMuonsUpdated = cms.EDProducer("PATMuonUpdater", - src = cms.InputTag("slimmedMuons"), - vertices = cms.InputTag("offlineSlimmedPrimaryVertices"), - computeMiniIso = cms.bool(False), - fixDxySign = cms.bool(True), - pfCandsForMiniIso = cms.InputTag("packedPFCandidates"), - miniIsoParams = cms.vdouble( - 0.05, 0.2, 10.0, 0.5, 0.0001, - 0.01, 0.01, 0.01, 0.0 - ), - recomputeMuonBasicSelectors = cms.bool(False), -) - -isoForMu = cms.EDProducer("MuonIsoValueMapProducer", - src = cms.InputTag("slimmedMuonsUpdated"), - relative = cms.bool(False), - rho_MiniIso = cms.InputTag("fixedGridRhoFastjetAll"), - EAFile_MiniIso = cms.FileInPath("PhysicsTools/NanoAOD/data/effAreaMuons_cone03_pfNeuHadronsAndPhotons_94X.txt"), -) - -ptRatioRelForMu = cms.EDProducer("MuonJetVarProducer", - srcJet = cms.InputTag("updatedJetsPuppi"), - srcLep = cms.InputTag("slimmedMuonsUpdated"), - srcVtx = cms.InputTag("offlineSlimmedPrimaryVertices"), -) - -slimmedMuonsWithUserData = cms.EDProducer("PATMuonUserDataEmbedder", - src = cms.InputTag("slimmedMuonsUpdated"), - userFloats = cms.PSet( - miniIsoChg = cms.InputTag("isoForMu:miniIsoChg"), - miniIsoAll = cms.InputTag("isoForMu:miniIsoAll"), - ptRatio = cms.InputTag("ptRatioRelForMu:ptRatio"), - ptRel = cms.InputTag("ptRatioRelForMu:ptRel"), - jetNDauChargedMVASel = cms.InputTag("ptRatioRelForMu:jetNDauChargedMVASel"), - ), - userCands = cms.PSet( - jetForLepJetVar = cms.InputTag("ptRatioRelForMu:jetForLepJetVar") # warning: Ptr is null if no match is found - ), -) - -finalMuons = cms.EDFilter("PATMuonRefSelector", - src = cms.InputTag("slimmedMuonsWithUserData"), - cut = cms.string("pt > 15 || (pt > 3 && (passed('CutBasedIdLoose') || passed('SoftCutBasedId') || passed('SoftMvaId') || passed('CutBasedIdGlobalHighPt') || passed('CutBasedIdTrkHighPt')))") -) - -finalLooseMuons = cms.EDFilter("PATMuonRefSelector", # for isotrack cleaning - src = cms.InputTag("slimmedMuonsWithUserData"), - cut = cms.string("pt > 3 && track.isNonnull && isLooseMuon") -) - -muonMVATTH= cms.EDProducer("MuonBaseMVAValueMapProducer", - src = cms.InputTag("linkedObjects","muons"), - weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/mu_BDTG_2017.weights.xml"), - name = cms.string("muonMVATTH"), - isClassifier = cms.bool(True), - variablesOrder = cms.vstring(["LepGood_pt","LepGood_eta","LepGood_jetNDauChargedMVASel","LepGood_miniRelIsoCharged","LepGood_miniRelIsoNeutral","LepGood_jetPtRelv2","LepGood_jetDF","LepGood_jetPtRatio","LepGood_dxy","LepGood_sip3d","LepGood_dz","LepGood_segmentComp"]), - variables = cms.PSet( - LepGood_pt = cms.string("pt"), - LepGood_eta = cms.string("eta"), - LepGood_jetNDauChargedMVASel = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('jetNDauChargedMVASel'):0"), - LepGood_miniRelIsoCharged = cms.string("userFloat('miniIsoChg')/pt"), - LepGood_miniRelIsoNeutral = cms.string("(userFloat('miniIsoAll')-userFloat('miniIsoChg'))/pt"), - LepGood_jetPtRelv2 = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('ptRel'):0"), - LepGood_jetDF = cms.string("?userCand('jetForLepJetVar').isNonnull()?max(userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:probbb')+userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:probb')+userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:problepb'),0.0):0.0"), - LepGood_jetPtRatio = cms.string("?userCand('jetForLepJetVar').isNonnull()?min(userFloat('ptRatio'),1.5):1.0/(1.0+(pfIsolationR04().sumChargedHadronPt + max(pfIsolationR04().sumNeutralHadronEt + pfIsolationR04().sumPhotonEt - pfIsolationR04().sumPUPt/2,0.0))/pt)"), - LepGood_dxy = cms.string("log(abs(dB('PV2D')))"), - LepGood_sip3d = cms.string("abs(dB('PV3D')/edB('PV3D'))"), - LepGood_dz = cms.string("log(abs(dB('PVDZ')))"), - LepGood_segmentComp = cms.string("segmentCompatibility"), - - ) -) - -muonMVALowPt = muonMVATTH.clone( - weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/mu_BDTG_lowpt.weights.xml"), - name = cms.string("muonMVALowPt"), -) - -run2_muon_2016.toModify(muonMVATTH, - weightFile = "PhysicsTools/NanoAOD/data/mu_BDTG_2016.weights.xml", - ) - -muonTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("linkedObjects","muons"), - cut = cms.string(""), #we should not filter on cross linked collections - name = cms.string("Muon"), - doc = cms.string("slimmedMuons after basic selection (" + finalMuons.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the muons - variables = cms.PSet(CandVars, - ptErr = Var("bestTrack().ptError()", float, doc = "ptError of the muon track", precision=6), - tunepRelPt = Var("tunePMuonBestTrack().pt/pt",float,doc="TuneP relative pt, tunePpt/pt",precision=6), - dz = Var("dB('PVDZ')",float,doc="dz (with sign) wrt first PV, in cm",precision=10), - dzErr = Var("abs(edB('PVDZ'))",float,doc="dz uncertainty, in cm",precision=6), - dxybs = Var("dB('BS2D')",float,doc="dxy (with sign) wrt the beam spot, in cm",precision=10), - dxy = Var("dB('PV2D')",float,doc="dxy (with sign) wrt first PV, in cm",precision=10), - dxyErr = Var("edB('PV2D')",float,doc="dxy uncertainty, in cm",precision=6), - ip3d = Var("abs(dB('PV3D'))",float,doc="3D impact parameter wrt first PV, in cm",precision=10), - sip3d = Var("abs(dB('PV3D')/edB('PV3D'))",float,doc="3D impact parameter significance wrt first PV",precision=10), - segmentComp = Var("segmentCompatibility()", float, doc = "muon segment compatibility", precision=14), # keep higher precision since people have cuts with 3 digits on this - nStations = Var("numberOfMatchedStations", int, doc = "number of matched stations with default arbitration (segment & track)"), - nTrackerLayers = Var("?track.isNonnull?innerTrack().hitPattern().trackerLayersWithMeasurement():0", int, doc = "number of layers in the tracker"), - highPurity = Var("?track.isNonnull?innerTrack().quality('highPurity'):0", bool, doc = "inner track is high purity"), - jetIdx = Var("?hasUserCand('jet')?userCand('jet').key():-1", int, doc="index of the associated jet (-1 if none)"), - tkRelIso = Var("isolationR03().sumPt/tunePMuonBestTrack().pt",float,doc="Tracker-based relative isolation dR=0.3 for highPt, trkIso/tunePpt",precision=6), - miniPFRelIso_chg = Var("userFloat('miniIsoChg')/pt",float,doc="mini PF relative isolation, charged component"), - miniPFRelIso_all = Var("userFloat('miniIsoAll')/pt",float,doc="mini PF relative isolation, total (with scaled rho*EA PU corrections)"), - pfRelIso03_chg = Var("pfIsolationR03().sumChargedHadronPt/pt",float,doc="PF relative isolation dR=0.3, charged component"), - pfRelIso03_all = Var("(pfIsolationR03().sumChargedHadronPt + max(pfIsolationR03().sumNeutralHadronEt + pfIsolationR03().sumPhotonEt - pfIsolationR03().sumPUPt/2,0.0))/pt",float,doc="PF relative isolation dR=0.3, total (deltaBeta corrections)"), - pfRelIso04_all = Var("(pfIsolationR04().sumChargedHadronPt + max(pfIsolationR04().sumNeutralHadronEt + pfIsolationR04().sumPhotonEt - pfIsolationR04().sumPUPt/2,0.0))/pt",float,doc="PF relative isolation dR=0.4, total (deltaBeta corrections)"), - jetRelIso = Var("?userCand('jetForLepJetVar').isNonnull()?(1./userFloat('ptRatio'))-1.:(pfIsolationR04().sumChargedHadronPt + max(pfIsolationR04().sumNeutralHadronEt + pfIsolationR04().sumPhotonEt - pfIsolationR04().sumPUPt/2,0.0))/pt",float,doc="Relative isolation in matched jet (1/ptRatio-1, pfRelIso04_all if no matched jet)",precision=8), - jetPtRelv2 = Var("?userCand('jetForLepJetVar').isNonnull()?userFloat('ptRel'):0",float,doc="Relative momentum of the lepton with respect to the closest jet after subtracting the lepton",precision=8), - tightCharge = Var("?(muonBestTrack().ptError()/muonBestTrack().pt() < 0.2)?2:0",int,doc="Tight charge criterion using pterr/pt of muonBestTrack (0:fail, 2:pass)"), - looseId = Var("passed('CutBasedIdLoose')",bool, doc="muon is loose muon"), - isPFcand = Var("isPFMuon",bool,doc="muon is PF candidate"), - isGlobal = Var("isGlobalMuon",bool,doc="muon is global muon"), - isTracker = Var("isTrackerMuon",bool,doc="muon is tracker muon"), - isStandalone = Var("isStandAloneMuon",bool,doc="muon is a standalone muon"), - mediumId = Var("passed('CutBasedIdMedium')",bool,doc="cut-based ID, medium WP"), - mediumPromptId = Var("passed('CutBasedIdMediumPrompt')",bool,doc="cut-based ID, medium prompt WP"), - tightId = Var("passed('CutBasedIdTight')",bool,doc="cut-based ID, tight WP"), - softId = Var("passed('SoftCutBasedId')",bool,doc="soft cut-based ID"), - softMvaId = Var("passed('SoftMvaId')",bool,doc="soft MVA ID"), - softMva = Var("softMvaValue()",float,doc="soft MVA ID score",precision=6), - highPtId = Var("?passed('CutBasedIdGlobalHighPt')?2:passed('CutBasedIdTrkHighPt')","uint8",doc="high-pT cut-based ID (1 = tracker high pT, 2 = global high pT, which includes tracker high pT)"), - pfIsoId = Var("passed('PFIsoVeryLoose')+passed('PFIsoLoose')+passed('PFIsoMedium')+passed('PFIsoTight')+passed('PFIsoVeryTight')+passed('PFIsoVeryVeryTight')","uint8",doc="PFIso ID from miniAOD selector (1=PFIsoVeryLoose, 2=PFIsoLoose, 3=PFIsoMedium, 4=PFIsoTight, 5=PFIsoVeryTight, 6=PFIsoVeryVeryTight)"), - tkIsoId = Var("?passed('TkIsoTight')?2:passed('TkIsoLoose')","uint8",doc="TkIso ID (1=TkIsoLoose, 2=TkIsoTight)"), - mvaId = Var("passed('MvaLoose')+passed('MvaMedium')+passed('MvaTight')+passed('MvaVTight')+passed('MvaVVTight')","uint8",doc="Mva ID from miniAOD selector (1=MvaLoose, 2=MvaMedium, 3=MvaTight, 4=MvaVTight, 5=MvaVVTight)"), - mvaLowPtId = Var("passed('LowPtMvaLoose')+passed('LowPtMvaMedium')","uint8", doc="Low Pt Mva ID from miniAOD selector (1=LowPtMvaLoose, 2=LowPtMvaMedium)"), - miniIsoId = Var("passed('MiniIsoLoose')+passed('MiniIsoMedium')+passed('MiniIsoTight')+passed('MiniIsoVeryTight')","uint8",doc="MiniIso ID from miniAOD selector (1=MiniIsoLoose, 2=MiniIsoMedium, 3=MiniIsoTight, 4=MiniIsoVeryTight)"), - multiIsoId = Var("?passed('MultiIsoMedium')?2:passed('MultiIsoLoose')","uint8",doc="MultiIsoId from miniAOD selector (1=MultiIsoLoose, 2=MultiIsoMedium)"), - puppiIsoId = Var("passed('PuppiIsoLoose')+passed('PuppiIsoMedium')+passed('PuppiIsoTight')", "uint8", doc="PuppiIsoId from miniAOD selector (1=Loose, 2=Medium, 3=Tight)"), - triggerIdLoose = Var("passed('TriggerIdLoose')",bool,doc="TriggerIdLoose ID"), - inTimeMuon = Var("passed('InTimeMuon')",bool,doc="inTimeMuon ID"), - jetNDauCharged = Var("?userCand('jetForLepJetVar').isNonnull()?userFloat('jetNDauChargedMVASel'):0", "uint8", doc="number of charged daughters of the closest jet"), - ), - externalVariables = cms.PSet( - mvaTTH = ExtVar(cms.InputTag("muonMVATTH"),float, doc="TTH MVA lepton ID score",precision=14), - mvaLowPt = ExtVar(cms.InputTag("muonMVALowPt"),float, doc="Low pt muon ID score",precision=14), - fsrPhotonIdx = ExtVar(cms.InputTag("leptonFSRphotons:muFsrIndex"),int, doc="Index of the lowest-dR/ET2 among associated FSR photons"), - ), -) - - -# Revert back to AK4 CHS jets for Run 2 -run2_nanoAOD_ANY.toModify(ptRatioRelForMu,srcJet="updatedJets") - - -muonsMCMatchForTable = cms.EDProducer("MCMatcher", # cut on deltaR, deltaPt/Pt; pick best by deltaR - src = muonTable.src, # final reco collection - matched = cms.InputTag("finalGenParticles"), # final mc-truth particle collection - mcPdgId = cms.vint32(13), # one or more PDG ID (13 = mu); absolute values (see below) - checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge - mcStatus = cms.vint32(1), # PYTHIA status code (1 = stable, 2 = shower, 3 = hard scattering) - maxDeltaR = cms.double(0.3), # Minimum deltaR for the match - maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match - resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object - resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first -) - -muonMCTable = cms.EDProducer("CandMCMatchTableProducer", - src = muonTable.src, - mcMap = cms.InputTag("muonsMCMatchForTable"), - objName = muonTable.name, - objType = muonTable.name, #cms.string("Muon"), - branchName = cms.string("genPart"), - docString = cms.string("MC matching to status==1 muons"), -) - -muonTask = cms.Task(slimmedMuonsUpdated,isoForMu,ptRatioRelForMu,slimmedMuonsWithUserData,finalMuons,finalLooseMuons ) -muonMCTask = cms.Task(muonsMCMatchForTable,muonMCTable) -muonTablesTask = cms.Task(muonMVATTH,muonMVALowPt,muonTable) diff --git a/PhysicsTools/NanoAOD/python/V10/nano_cff.py b/PhysicsTools/NanoAOD/python/V10/nano_cff.py deleted file mode 100644 index 926f11518705c..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/nano_cff.py +++ /dev/null @@ -1,301 +0,0 @@ -from __future__ import print_function -import FWCore.ParameterSet.Config as cms -##these imports do not need to be copied, as they are very common definitions -from PhysicsTools.NanoAOD.common_cff import * -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.NanoAODEDMEventContent_cff import * -##these imports do need to be "frozen" for V10 -from PhysicsTools.NanoAOD.V10.jetsAK4_CHS_cff import * -from PhysicsTools.NanoAOD.V10.jetsAK4_Puppi_cff import * -from PhysicsTools.NanoAOD.V10.jetsAK8_cff import * -from PhysicsTools.NanoAOD.V10.jetMC_cff import * -from PhysicsTools.NanoAOD.V10.muons_cff import * -from PhysicsTools.NanoAOD.V10.taus_cff import * -from PhysicsTools.NanoAOD.V10.boostedTaus_cff import * -from PhysicsTools.NanoAOD.V10.electrons_cff import * -from PhysicsTools.NanoAOD.V10.lowPtElectrons_cff import * -from PhysicsTools.NanoAOD.V10.photons_cff import * -from PhysicsTools.NanoAOD.V10.globals_cff import * -from PhysicsTools.NanoAOD.V10.extraflags_cff import * -from PhysicsTools.NanoAOD.V10.ttbarCategorization_cff import * -from PhysicsTools.NanoAOD.V10.genparticles_cff import * -from PhysicsTools.NanoAOD.V10.particlelevel_cff import * -from PhysicsTools.NanoAOD.V10.genWeightsTable_cfi import * -from PhysicsTools.NanoAOD.V10.genVertex_cff import * -from PhysicsTools.NanoAOD.V10.vertices_cff import * -from PhysicsTools.NanoAOD.V10.met_cff import * -from PhysicsTools.NanoAOD.V10.triggerObjects_cff import * -from PhysicsTools.NanoAOD.V10.isotracks_cff import * -from PhysicsTools.NanoAOD.V10.protons_cff import * -from PhysicsTools.NanoAOD.V10.btagWeightTable_cff import * -from PhysicsTools.NanoAOD.V10.fsrPhotons_cff import * -from PhysicsTools.NanoAOD.V10.softActivity_cff import * - -nanoMetadata = cms.EDProducer("UniqueStringProducer", - strings = cms.PSet( - tag = cms.string("untagged"), - ) -) - -linkedObjects = cms.EDProducer("PATObjectCrossLinker", - jets=cms.InputTag("finalJetsPuppi"), - muons=cms.InputTag("finalMuons"), - electrons=cms.InputTag("finalElectrons"), - lowPtElectrons=cms.InputTag("finalLowPtElectrons"), - taus=cms.InputTag("finalTaus"), - photons=cms.InputTag("finalPhotons"), -) - -# Switch to AK4 CHS jets for Run-2 -run2_nanoAOD_ANY.toModify(linkedObjects, jets="finalJets") - -simpleCleanerTable = cms.EDProducer("NanoAODSimpleCrossCleaner", - name=cms.string("cleanmask"), - doc=cms.string("simple cleaning mask with priority to leptons"), - jets=cms.InputTag("linkedObjects","jets"), - muons=cms.InputTag("linkedObjects","muons"), - electrons=cms.InputTag("linkedObjects","electrons"), - lowPtElectrons=cms.InputTag("linkedObjects","lowPtElectrons"), - taus=cms.InputTag("linkedObjects","taus"), - photons=cms.InputTag("linkedObjects","photons"), - jetSel=cms.string("pt>15"), - muonSel=cms.string("track.isNonnull && isLooseMuon && isPFMuon && innerTrack.validFraction >= 0.49 && ( isGlobalMuon && globalTrack.normalizedChi2 < 3 && combinedQuality.chi2LocalPosition < 12 && combinedQuality.trkKink < 20 && segmentCompatibility >= 0.303 || segmentCompatibility >= 0.451 )"), - electronSel=cms.string(""), - lowPtElectronSel=cms.string(""), - tauSel=cms.string(""), - photonSel=cms.string(""), - jetName=cms.string("Jet"),muonName=cms.string("Muon"),electronName=cms.string("Electron"), - lowPtElectronName=cms.string("LowPtElectron"), - tauName=cms.string("Tau"),photonName=cms.string("Photon") -) - - -lhcInfoTable = cms.EDProducer("LHCInfoProducer") - -nanoTableTaskCommon = cms.Task( - cms.Task(nanoMetadata), - jetPuppiTask, jetPuppiForMETTask, jetAK8Task, - extraFlagsProducersTask, muonTask, tauTask, boostedTauTask, - electronTask , lowPtElectronTask, photonTask, - vertexTask, isoTrackTask, jetAK8LepTask, # must be after all the leptons - softActivityTask, - cms.Task(linkedObjects), - jetPuppiTablesTask, jetAK8TablesTask, - muonTablesTask, fsrTablesTask, tauTablesTask, boostedTauTablesTask, - electronTablesTask, lowPtElectronTablesTask, photonTablesTask, - globalTablesTask, vertexTablesTask, metTablesTask, simpleCleanerTable, extraFlagsTableTask, - isoTrackTablesTask,softActivityTablesTask -) - -# Replace AK4 Puppi with AK4 CHS for Run-2 -_nanoTableTaskCommonRun2 = nanoTableTaskCommon.copy() -_nanoTableTaskCommonRun2.replace(jetPuppiTask, jetTask) -_nanoTableTaskCommonRun2.replace(jetPuppiForMETTask, jetForMETTask) -_nanoTableTaskCommonRun2.replace(jetPuppiTablesTask, jetTablesTask) -run2_nanoAOD_ANY.toReplaceWith(nanoTableTaskCommon, _nanoTableTaskCommonRun2) - -nanoSequenceCommon = cms.Sequence(nanoTableTaskCommon) - -nanoSequenceOnlyFullSim = cms.Sequence(triggerObjectTablesTask) -nanoSequenceOnlyData = cms.Sequence(cms.Sequence(protonTablesTask) + lhcInfoTable) - -nanoSequence = cms.Sequence(nanoSequenceCommon + nanoSequenceOnlyData + nanoSequenceOnlyFullSim) - -nanoTableTaskFS = cms.Task( - genParticleTask, particleLevelTask, jetMCTask, muonMCTask, electronMCTask, lowPtElectronMCTask, photonMCTask, - tauMCTask, boostedTauMCTask, - metMCTable, ttbarCatMCProducersTask, globalTablesMCTask, cms.Task(btagWeightTable), ttbarCategoryTableTask, - genWeightsTableTask, genVertexTablesTask, genParticleTablesTask, genProtonTablesTask, particleLevelTablesTask -) - -nanoSequenceFS = cms.Sequence(nanoSequenceCommon + cms.Sequence(nanoTableTaskFS)) - -# GenVertex only stored in newer MiniAOD -nanoSequenceMC = nanoSequenceFS.copy() -nanoSequenceMC.insert(nanoSequenceFS.index(nanoSequenceCommon)+1,nanoSequenceOnlyFullSim) - -# modifier which adds new tauIDs (currently only deepTauId2017v2p1 is being added) -## might be an issue with V10 support in newer release -import RecoTauTag.RecoTau.tools.runTauIdMVA as tauIdConfig -def nanoAOD_addTauIds(process, idsToRun=[]): - if idsToRun: #no-empty list of tauIDs to run - updatedTauName = "slimmedTausUpdated" - tauIdEmbedder = tauIdConfig.TauIDEmbedder(process, debug = False, - updatedTauName = updatedTauName, - postfix = "ForNano", - toKeep = idsToRun) - tauIdEmbedder.runTauID() - _tauTask = patTauMVAIDsTask.copy() - _tauTask.add(process.rerunMvaIsolationTaskForNano) - _tauTask.add(finalTaus) - process.finalTaus.src = updatedTauName - #remember to adjust the selection and tables with added IDs - - process.tauTask = _tauTask.copy() - - return process - -def nanoAOD_addBoostedTauIds(process, idsToRun=[]): - if idsToRun: #no-empty list of tauIDs to run - updatedBoostedTauName = "slimmedTausBoostedNewID" - boostedTauIdEmbedder = tauIdConfig.TauIDEmbedder(process, debug = False, - originalTauName = "slimmedTausBoosted", - updatedTauName = updatedBoostedTauName, - postfix = "BoostedForNano", - toKeep = idsToRun) - boostedTauIdEmbedder.runTauID() - _boostedTauTask = process.rerunMvaIsolationTaskBoostedForNano.copy() - _boostedTauTask.add(getattr(process, updatedBoostedTauName)) - _boostedTauTask.add(process.finalBoostedTaus) - process.finalBoostedTaus.src = updatedBoostedTauName - #remember to adjust the selection and tables with added IDs - - process.boostedTauTask = _boostedTauTask.copy() - - return process - -from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMetCorAndUncFromMiniAOD -def nanoAOD_recalibrateMETs(process,isData): - # add DeepMETs - nanoAOD_DeepMET_switch = cms.PSet( - ResponseTune_Graph = cms.untracked.string('RecoMET/METPUSubtraction/data/models/deepmet/deepmet_resp_v1_2018/model.graphdef') - ) - - print("add DeepMET Producers") - process.load('RecoMET.METPUSubtraction.deepMETProducer_cfi') - process.deepMETsResolutionTune = process.deepMETProducer.clone() - process.deepMETsResponseTune = process.deepMETProducer.clone() - process.deepMETsResponseTune.graph_path = nanoAOD_DeepMET_switch.ResponseTune_Graph.value() - - runMetCorAndUncFromMiniAOD(process,isData=isData) - process.nanoSequenceCommon.insert(2,cms.Sequence(process.fullPatMetSequence)) - - - from PhysicsTools.PatAlgos.slimming.puppiForMET_cff import makePuppiesFromMiniAOD - makePuppiesFromMiniAOD(process,True) - process.puppiNoLep.useExistingWeights = True - process.puppi.useExistingWeights = True - #run2_nanoAOD_106Xv1.toModify(process.puppiNoLep, useExistingWeights = False) - #run2_nanoAOD_106Xv1.toModify(process.puppi, useExistingWeights = False) - print("will make Puppies on top of MINIAOD") - -# makePuppiesFromMiniAOD(process,True) # call this before in the global customizer otherwise it would reset photon IDs in VID - nanoAOD_PuppiV15_switch = cms.PSet( - recoMetFromPFCs = cms.untracked.bool(False), - reclusterJets = cms.untracked.bool(False), - ) - #run2_nanoAOD_106Xv1.toModify(nanoAOD_PuppiV15_switch,recoMetFromPFCs=True,reclusterJets=True) - if nanoAOD_PuppiV15_switch.reclusterJets: - from RecoJets.JetProducers.ak4PFJets_cfi import ak4PFJets - from PhysicsTools.PatAlgos.tools.helpers import getPatAlgosToolsTask, addToProcessAndTask - task = getPatAlgosToolsTask(process) - addToProcessAndTask('ak4PuppiJets', ak4PFJets.clone (src = 'puppi', doAreaFastjet = True, jetPtMin = 10.), process, task) - from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection - addJetCollection(process, - labelName = 'Puppi', - jetSource = cms.InputTag('ak4PuppiJets'), - algo = 'AK', rParam=0.4, - genJetCollection=cms.InputTag('slimmedGenJets'), - jetCorrections = ('AK4PFPuppi', ['L1FastJet', 'L2Relative', 'L3Absolute','L2L3Residual'], 'None'), - pfCandidates = cms.InputTag('packedPFCandidates'), - pvSource = cms.InputTag('offlineSlimmedPrimaryVertices'), - svSource = cms.InputTag('slimmedSecondaryVertices'), - muSource =cms.InputTag( 'slimmedMuons'), - elSource = cms.InputTag('slimmedElectrons'), - genParticles= cms.InputTag('prunedGenParticles'), - getJetMCFlavour= False - ) - - process.patJetsPuppi.addGenPartonMatch = cms.bool(False) - process.patJetsPuppi.addGenJetMatch = cms.bool(False) - - print("nanoAOD_PuppiV15_switch.reclusterJets is true") - - runMetCorAndUncFromMiniAOD(process,isData=isData,metType="Puppi",postfix="Puppi",jetFlavor="AK4PFPuppi", recoMetFromPFCs=bool(nanoAOD_PuppiV15_switch.recoMetFromPFCs), reclusterJets=bool(nanoAOD_PuppiV15_switch.reclusterJets)) - process.nanoSequenceCommon.insert(2,cms.Sequence(process.puppiMETSequence+process.fullPatMetSequencePuppi)) - - return process - -from PhysicsTools.SelectorUtils.tools.vid_id_tools import * -def nanoAOD_activateVID(process): - - switchOnVIDElectronIdProducer(process,DataFormat.MiniAOD,electronTask) - for modname in electron_id_modules_WorkingPoints_nanoAOD.modules: - setupAllVIDIdsInModule(process,modname,setupVIDElectronSelection) - - electronTask_ = process.egmGsfElectronIDTask.copy() - electronTask_.add(electronTask.copy()) - process.electronTask = electronTask_.copy() - - switchOnVIDPhotonIdProducer(process,DataFormat.MiniAOD,photonTask) # do not call this to avoid resetting photon IDs in VID, if called before inside makePuppiesFromMiniAOD - for modname in photon_id_modules_WorkingPoints_nanoAOD.modules: - setupAllVIDIdsInModule(process,modname,setupVIDPhotonSelection) - - photonTask_ = process.egmPhotonIDTask.copy() - photonTask_.add(photonTask.copy()) - process.photonTask = photonTask_.copy() - return process - -from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMetCorAndUncFromMiniAOD -def nanoAOD_runMETfixEE2017(process,isData): - runMetCorAndUncFromMiniAOD(process,isData=isData, - fixEE2017 = True, - fixEE2017Params = {'userawPt': True, 'ptThreshold':50.0, 'minEtaThreshold':2.65, 'maxEtaThreshold': 3.139}, - postfix = "FixEE2017") - process.nanoSequenceCommon.insert(2,process.fullPatMetSequenceFixEE2017) - - -def nanoAOD_customizeCommon(process): - - process = nanoAOD_activateVID(process) - - # This function is defined in jetsAK4_CHS_cff.py - process = nanoAOD_addDeepInfoAK4CHS(process, - addDeepBTag=nanoAOD_addDeepInfoAK4CHS_switch.nanoAOD_addDeepBTag_switch, - addDeepFlavour=nanoAOD_addDeepInfoAK4CHS_switch.nanoAOD_addDeepFlavourTag_switch - ) - - # This function is defined in jetsAK8_cff.py - process = nanoAOD_addDeepInfoAK8(process, - addDeepBTag=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepBTag_switch, - addDeepBoostedJet=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepBoostedJet_switch, - addDeepDoubleX=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepDoubleX_switch, - addDeepDoubleXV2=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepDoubleXV2_switch, - addParticleNet=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addParticleNet_switch, - addParticleNetMass=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addParticleNetMass_switch, - jecPayload=nanoAOD_addDeepInfoAK8_switch.jecPayload - ) - - nanoAOD_tau_switch = cms.PSet( - idsToAdd = cms.vstring() - ) - (run2_nanoAOD_106Xv2 | run3_nanoAOD_122).toModify(nanoAOD_tau_switch, idsToAdd = ["deepTau2018v2p5"]) - (run2_nanoAOD_106Xv2 | run3_nanoAOD_122).toModify(process, lambda p : nanoAOD_addTauIds(p, nanoAOD_tau_switch.idsToAdd.value())) - nanoAOD_boostedTau_switch = cms.PSet( - idsToAdd = cms.vstring() - ) - run2_nanoAOD_106Xv2.toModify(nanoAOD_boostedTau_switch, idsToAdd = ["2017v2", "dR0p32017v2", "newDM2017v2","againstEle2018"]) - run2_nanoAOD_106Xv2.toModify(process, lambda p : nanoAOD_addBoostedTauIds(p, nanoAOD_boostedTau_switch.idsToAdd.value())) - - return process - -def nanoAOD_customizeData(process): - process = nanoAOD_customizeCommon(process) - return process - -def nanoAOD_customizeMC(process): - process = nanoAOD_customizeCommon(process) - return process - -###increasing the precision of selected GenParticles. -def nanoWmassGenCustomize(process): - pdgSelection="?(abs(pdgId) == 11|| abs(pdgId)==13 || abs(pdgId)==15 ||abs(pdgId)== 12 || abs(pdgId)== 14 || abs(pdgId)== 16|| abs(pdgId)== 24|| pdgId== 23)" - # Keep precision same as default RECO for selected particles - ptPrecision="{}?{}:{}".format(pdgSelection, CandVars.pt.precision.value(),genParticleTable.variables.pt.precision.value()) - process.genParticleTable.variables.pt.precision=cms.string(ptPrecision) - phiPrecision="{} ? {} : {}".format(pdgSelection, CandVars.phi.precision.value(), genParticleTable.variables.phi.precision.value()) - process.genParticleTable.variables.phi.precision=cms.string(phiPrecision) - etaPrecision="{} ? {} : {}".format(pdgSelection, CandVars.eta.precision.value(), genParticleTable.variables.eta.precision.value()) - process.genParticleTable.variables.eta.precision=cms.string(etaPrecision) - return process - diff --git a/PhysicsTools/NanoAOD/python/V10/nanogen_cff.py b/PhysicsTools/NanoAOD/python/V10/nanogen_cff.py deleted file mode 100644 index 8047841814296..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/nanogen_cff.py +++ /dev/null @@ -1,158 +0,0 @@ -from PhysicsTools.NanoAOD.V10.taus_cff import * -from PhysicsTools.NanoAOD.V10.jetMC_cff import * -from PhysicsTools.NanoAOD.V10.globals_cff import genTable,genFilterTable -from PhysicsTools.NanoAOD.V10.met_cff import metMCTable -from PhysicsTools.NanoAOD.V10.genparticles_cff import * -from PhysicsTools.NanoAOD.V10.particlelevel_cff import * -from PhysicsTools.NanoAOD.V10.genWeightsTable_cfi import * -from PhysicsTools.NanoAOD.V10.genVertex_cff import * -from PhysicsTools.NanoAOD.V10.common_cff import Var,CandVars - -nanoMetadata = cms.EDProducer("UniqueStringProducer", - strings = cms.PSet( - tag = cms.string("untagged"), - ) -) - -nanogenSequence = cms.Sequence( - nanoMetadata+ - cms.Sequence(particleLevelTask)+ - genJetTable+ - patJetPartonsNano+ - genJetFlavourAssociation+ - genJetFlavourTable+ - genJetAK8Table+ - genJetAK8FlavourAssociation+ - genJetAK8FlavourTable+ - cms.Sequence(genTauTask)+ - genTable+ - genFilterTable+ - cms.Sequence(genParticleTablesTask)+ - cms.Sequence(genVertexTablesTask)+ - tautagger+ - rivetProducerHTXS+ - cms.Sequence(particleLevelTablesTask)+ - metMCTable+ - genWeightsTable -) - -def nanoGenCommonCustomize(process): - process.rivetMetTable.extension = False - process.lheInfoTable.storeLHEParticles = True - process.lheInfoTable.precision = 14 - process.genWeightsTable.keepAllPSWeights = True - process.genJetFlavourAssociation.jets = process.genJetTable.src - process.genJetFlavourTable.src = process.genJetTable.src - process.genJetAK8FlavourAssociation.jets = process.genJetAK8Table.src - process.genJetAK8FlavourTable.src = process.genJetAK8Table.src - process.particleLevel.particleMaxEta = 999. - process.particleLevel.lepMinPt = 0. - process.particleLevel.lepMaxEta = 999. - process.genJetFlavourTable.jetFlavourInfos = "genJetFlavourAssociation" - # Same as default RECO - setGenPtPrecision(process, CandVars.pt.precision) - setGenEtaPrecision(process, CandVars.eta.precision) - setGenPhiPrecision(process, CandVars.phi.precision) - setGenMassPrecision(process, CandVars.mass.precision) - -def customizeNanoGENFromMini(process): - process.nanogenSequence.insert(0, process.genParticles2HepMCHiggsVtx) - process.nanogenSequence.insert(0, process.genParticles2HepMC) - process.nanogenSequence.insert(0, process.mergedGenParticles) - - process.metMCTable.src = "slimmedMETs" - process.metMCTable.variables.pt = Var("genMET.pt", float, doc="pt") - process.metMCTable.variables.phi = Var("genMET.phi", float, doc="phi") - process.metMCTable.variables.phi.precision = CandVars.phi.precision - - process.rivetProducerHTXS.HepMCCollection = "genParticles2HepMCHiggsVtx:unsmeared" - process.genParticleTable.src = "prunedGenParticles" - process.patJetPartonsNano.particles = "prunedGenParticles" - process.particleLevel.src = "genParticles2HepMC:unsmeared" - - process.genJetTable.src = "slimmedGenJets" - process.genJetAK8Table.src = "slimmedGenJetsAK8" - process.tauGenJetsForNano.GenParticles = "prunedGenParticles" - process.genVisTaus.srcGenParticles = "prunedGenParticles" - - nanoGenCommonCustomize(process) - - return process - -def customizeNanoGEN(process): - process.metMCTable.src = "genMetTrue" - process.metMCTable.variables = cms.PSet(PTVars) - - process.rivetProducerHTXS.HepMCCollection = "generatorSmeared" - process.genParticleTable.src = "genParticles" - process.patJetPartonsNano.particles = "genParticles" - process.particleLevel.src = "generatorSmeared" - - process.genJetTable.src = "ak4GenJets" - process.genJetAK8Table.src = "ak8GenJets" - process.tauGenJetsForNano.GenParticles = "genParticles" - process.genVisTaus.srcGenParticles = "genParticles" - - # In case customizeNanoGENFromMini has already been called - process.nanogenSequence.remove(process.genParticles2HepMCHiggsVtx) - process.nanogenSequence.remove(process.genParticles2HepMC) - process.nanogenSequence.remove(process.mergedGenParticles) - nanoGenCommonCustomize(process) - return process - -# Prune gen particles with tight conditions applied in usual NanoAOD -def pruneGenParticlesNano(process): - process.finalGenParticles.src = process.genParticleTable.src.getModuleLabel() - process.genParticleTable.src = "finalGenParticles" - process.nanogenSequence.insert(0, process.finalGenParticles) - return process - -# Prune gen particles with conditions applied in usual MiniAOD -def pruneGenParticlesMini(process): - if process.nanogenSequence.contains(process.mergedGenParticles): - raise ValueError("Applying the MiniAOD genParticle pruner to MiniAOD is redunant. " \ - "Use a different customization.") - from PhysicsTools.PatAlgos.slimming.prunedGenParticles_cfi import prunedGenParticles - process.prunedGenParticles = prunedGenParticles.clone() - process.prunedGenParticles.src = "genParticles" - process.genParticleTable.src = "prunedGenParticles" - - process.nanogenSequence.insert(0, process.prunedGenParticles) - return process - -def setGenFullPrecision(process): - process = setGenPtPrecision(process, 23) - process = setGenEtaPrecision(process, 23) - process = setGenPhiPrecision(process, 23) - process = setGenMassPrecision(process, 23) - return process - -def setGenPtPrecision(process, precision): - process.genParticleTable.variables.pt.precision = precision - process.genJetTable.variables.pt.precision = precision - process.metMCTable.variables.pt.precision = precision - return process - -def setGenEtaPrecision(process, precision): - process.genParticleTable.variables.eta.precision = precision - process.genJetTable.variables.eta.precision = precision - return process - -def setGenPhiPrecision(process, precision): - process.genParticleTable.variables.phi.precision = precision - process.genJetTable.variables.phi.precision = precision - process.metMCTable.variables.phi.precision = precision - return process - -def setGenMassPrecision(process, precision): - process.genParticleTable.variables.mass.precision = precision - process.genJetTable.variables.mass.precision = precision - return process - -def setLHEFullPrecision(process): - process.lheInfoTable.precision = 23 - return process - -def setGenWeightsFullPrecision(process): - process.genWeightsTable.lheWeightPrecision = 23 - return process diff --git a/PhysicsTools/NanoAOD/python/V10/particlelevel_cff.py b/PhysicsTools/NanoAOD/python/V10/particlelevel_cff.py deleted file mode 100644 index 9bdf4efb64fbf..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/particlelevel_cff.py +++ /dev/null @@ -1,178 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import * - - - -##################### User floats producers, selectors ########################## - -mergedGenParticles = cms.EDProducer("MergedGenParticleProducer", - inputPruned = cms.InputTag("prunedGenParticles"), - inputPacked = cms.InputTag("packedGenParticles"), -) - -genParticles2HepMC = cms.EDProducer("GenParticles2HepMCConverter", - genParticles = cms.InputTag("mergedGenParticles"), - genEventInfo = cms.InputTag("generator"), - signalParticlePdgIds = cms.vint32(), -) - -genParticles2HepMCHiggsVtx = cms.EDProducer("GenParticles2HepMCConverter", - genParticles = cms.InputTag("mergedGenParticles"), - genEventInfo = cms.InputTag("generator"), - signalParticlePdgIds = cms.vint32(25), ## for the Higgs analysis -) - - -particleLevel = cms.EDProducer("ParticleLevelProducer", - src = cms.InputTag("genParticles2HepMC:unsmeared"), - - doJetClustering = cms.bool(False), # Not needed as Rivet jets aren't used currently - usePromptFinalStates = cms.bool(True), # for leptons, photons, neutrinos - excludePromptLeptonsFromJetClustering = cms.bool(False), - excludeNeutrinosFromJetClustering = cms.bool(True), - - particleMinPt = cms.double(0.), - particleMaxEta = cms.double(5.), # HF range. Maximum 6.0 on MiniAOD - - lepConeSize = cms.double(0.1), # for photon dressing - lepMinPt = cms.double(1.), - lepMaxEta = cms.double(2.5), - - jetConeSize = cms.double(0.4), - jetMinPt = cms.double(10.), - jetMaxEta = cms.double(999.), - - fatJetConeSize = cms.double(0.8), - fatJetMinPt = cms.double(170.), - fatJetMaxEta = cms.double(999.), - - phoIsoConeSize = cms.double(0.4), - phoMaxRelIso = cms.double(0.5), - phoMinPt = cms.double(1.), - phoMaxEta = cms.double(2.5), -) - -rivetProducerHTXS = cms.EDProducer('HTXSRivetProducer', - HepMCCollection = cms.InputTag('genParticles2HepMCHiggsVtx','unsmeared'), - LHERunInfo = cms.InputTag('externalLHEProducer'), - ProductionMode = cms.string('AUTO'), -) - - -##################### Tables for final output and docs ########################## -rivetLeptonTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("particleLevel:leptons"), - cut = cms.string("pt > 15"), - name= cms.string("GenDressedLepton"), - doc = cms.string("Dressed leptons from Rivet-based ParticleLevelProducer"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table - externalVariables = cms.PSet( - hasTauAnc = ExtVar(cms.InputTag("tautagger"),bool, doc="true if Dressed lepton has a tau as ancestor"), - ), - variables = cms.PSet( - P4Vars, - pdgId = Var("pdgId", int, doc="PDG id"), - ) -) - -rivetPhotonTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("particleLevel:photons"), - cut = cms.string("pt > 10"), - name= cms.string("GenIsolatedPhoton"), - doc = cms.string("Isolated photons from Rivet-based ParticleLevelProducer"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table - variables = cms.PSet( - P4Vars - ) -) - -tautagger = cms.EDProducer("GenJetTauTaggerProducer", - src = rivetLeptonTable.src, -) - -#rivetJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", -# src = cms.InputTag("particleLevel:jets"), -# cut = cms.string(""), -# name= cms.string("RivetJet"), -# doc = cms.string("AK4 jets from Rivet-based ParticleLevelProducer"), -# singleton = cms.bool(False), # the number of entries is variable -# extension = cms.bool(False), -# variables = cms.PSet( -# # Identical to GenJets, so we just extend their flavor information -# P4Vars, -# hadronFlavour = Var("pdgId", int, doc="PDG id"), -# ) -#) - -#rivetFatJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", -# src = cms.InputTag("particleLevel:fatjets"), -# cut = cms.string(""), -# name= cms.string("GenFatJet"), -# doc = cms.string("AK8 jets from Rivet-based ParticleLevelProducer"), -# singleton = cms.bool(False), # the number of entries is variable -# extension = cms.bool(False), # this is the main table -# variables = cms.PSet( -# P4Vars, -# hadronFlavour = Var("pdgId", int, doc="PDG id"), -# ) -#) - -#rivetTagTable = cms.EDProducer("SimpleCandidateFlatTableProducer", -# src = cms.InputTag("particleLevel:tags"), -# cut = cms.string(""), -# name= cms.string("RivetTag"), -# doc = cms.string("Tag particles from Rivet-based ParticleLevelProducer, momenta scaled down by 10e-20"), -# singleton = cms.bool(False), # the number of entries is variable -# extension = cms.bool(False), # this is the main table -# variables = cms.PSet( -# P4Vars, -# pdgId = Var("pdgId", int, doc="PDG id"), -# ) -#) - -rivetMetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("particleLevel:mets"), - name = cms.string("MET"), - doc = cms.string("MET from Rivet-based ParticleLevelProducer in fiducial volume abs(eta)<5"), - singleton = cms.bool(True), # there's always exactly one MET per event - extension = cms.bool(True), # this is the main table - variables = cms.PSet( - fiducialGenPt = Var("pt", float, precision=10), - fiducialGenPhi = Var("phi", float, precision=10), - ), -) - -HTXSCategoryTable = cms.EDProducer("SimpleHTXSFlatTableProducer", - src = cms.InputTag("rivetProducerHTXS","HiggsClassification"), - name = cms.string("HTXS"), - doc = cms.string("HTXS classification"), - extension = cms.bool(False), - variables=cms.PSet( - stage_0 = Var("stage0_cat",int, doc="HTXS stage-0 category"), - stage_1_pTjet30 = Var("stage1_cat_pTjet30GeV",int, doc="HTXS stage-1 category (jet pt>30 GeV)"), - stage_1_pTjet25 = Var("stage1_cat_pTjet25GeV",int, doc="HTXS stage-1 category (jet pt>25 GeV)"), - stage1_1_cat_pTjet30GeV = Var("stage1_1_cat_pTjet30GeV",int,doc="HTXS stage-1.1 category(jet pt>30 GeV)"), - stage1_1_cat_pTjet25GeV = Var("stage1_1_cat_pTjet25GeV",int,doc="HTXS stage-1.1 category(jet pt>25 GeV)"), - stage1_1_fine_cat_pTjet30GeV = Var("stage1_1_fine_cat_pTjet30GeV",int,doc="HTXS stage-1.1-fine category(jet pt>30 GeV)"), - stage1_1_fine_cat_pTjet25GeV = Var("stage1_1_fine_cat_pTjet25GeV",int,doc="HTXS stage-1.1-fine category(jet pt>25 GeV)"), - stage1_2_cat_pTjet30GeV = Var("stage1_2_cat_pTjet30GeV",int,doc="HTXS stage-1.2 category(jet pt>30 GeV)"), - stage1_2_cat_pTjet25GeV = Var("stage1_2_cat_pTjet25GeV",int,doc="HTXS stage-1.2 category(jet pt>25 GeV)"), - stage1_2_fine_cat_pTjet30GeV = Var("stage1_2_fine_cat_pTjet30GeV",int,doc="HTXS stage-1.2-fine category(jet pt>30 GeV)"), - stage1_2_fine_cat_pTjet25GeV = Var("stage1_2_fine_cat_pTjet25GeV",int,doc="HTXS stage-1.2-fine category(jet pt>25 GeV)"), - Higgs_pt = Var("higgs.Pt()",float, doc="pt of the Higgs boson as identified in HTXS", precision=14), - Higgs_y = Var("higgs.Rapidity()",float, doc="rapidity of the Higgs boson as identified in HTXS", precision=12), - njets30 = Var("jets30.size()","uint8", doc="number of jets with pt>30 GeV as identified in HTXS"), - njets25 = Var("jets25.size()","uint8", doc="number of jets with pt>25 GeV as identified in HTXS"), - ) -) - -lheInfoTable = cms.EDProducer("LHETablesProducer", - lheInfo = cms.VInputTag(cms.InputTag("externalLHEProducer"), cms.InputTag("source")), - precision = cms.int32(14), - storeLHEParticles = cms.bool(True) - ) - -particleLevelTask = cms.Task(mergedGenParticles,genParticles2HepMC,particleLevel,tautagger,genParticles2HepMCHiggsVtx,rivetProducerHTXS) -particleLevelTablesTask = cms.Task(rivetLeptonTable,rivetPhotonTable,rivetMetTable,HTXSCategoryTable,lheInfoTable) diff --git a/PhysicsTools/NanoAOD/python/V10/photons_cff.py b/PhysicsTools/NanoAOD/python/V10/photons_cff.py deleted file mode 100644 index fb97fd25d6539..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/photons_cff.py +++ /dev/null @@ -1,314 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import * - -from math import ceil,log - - -photon_id_modules_WorkingPoints_nanoAOD = cms.PSet( - modules = cms.vstring( - 'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Fall17_94X_V1_TrueVtx_cff', - 'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Fall17_94X_V2_cff', - 'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Fall17_94X_V1p1_cff', - 'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Fall17_94X_V2_cff', - 'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Spring16_V2p2_cff', - 'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Spring16_nonTrig_V1_cff', - ), - WorkingPoints = cms.vstring( - "egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-loose", - "egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-medium", - "egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-tight", - ) -) -photon_id_modules_WorkingPoints_nanoAOD_Spring16V2p2 = cms.PSet( - modules = photon_id_modules_WorkingPoints_nanoAOD.modules, - WorkingPoints = cms.vstring( - "egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-loose", - "egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-medium", - "egmPhotonIDs:cutBasedPhotonID-Spring16-V2p2-tight", - ) -) - -def make_bitmapVID_docstring(id_modules_working_points_pset): - pset = id_modules_working_points_pset - - for modname in pset.modules: - ids = __import__(modname, globals(), locals(), ['idName','cutFlow']) - for name in dir(ids): - _id = getattr(ids,name) - if hasattr(_id,'idName') and hasattr(_id,'cutFlow'): - if (len(pset.WorkingPoints)>0 and _id.idName == pset.WorkingPoints[0].split(':')[-1]): - cut_names = ','.join([cut.cutName.value() for cut in _id.cutFlow]) - n_bits_per_cut = int(ceil(log(len(pset.WorkingPoints)+1,2))) - return 'VID compressed bitmap (%s), %d bits per cut'%(cut_names, n_bits_per_cut) - raise ValueError("Something is wrong in the photon ID modules parameter set!") - -bitmapVIDForPho = cms.EDProducer("PhoVIDNestedWPBitmapProducer", - src = cms.InputTag("slimmedPhotons"), - srcForID = cms.InputTag("reducedEgamma","reducedGedPhotons"), - WorkingPoints = photon_id_modules_WorkingPoints_nanoAOD.WorkingPoints, -) - -bitmapVIDForPhoSpring16V2p2 = cms.EDProducer("PhoVIDNestedWPBitmapProducer", - src = cms.InputTag("slimmedPhotons"), - WorkingPoints = photon_id_modules_WorkingPoints_nanoAOD_Spring16V2p2.WorkingPoints, -) - -isoForPho = cms.EDProducer("PhoIsoValueMapProducer", - src = cms.InputTag("slimmedPhotons"), - relative = cms.bool(False), - rho_PFIso = cms.InputTag("fixedGridRhoFastjetAll"), - mapIsoChg = cms.InputTag("photonIDValueMapProducer:phoChargedIsolation"), - mapIsoNeu = cms.InputTag("photonIDValueMapProducer:phoNeutralHadronIsolation"), - mapIsoPho = cms.InputTag("photonIDValueMapProducer:phoPhotonIsolation"), - EAFile_PFIso_Chg = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Fall17/effAreaPhotons_cone03_pfChargedHadrons_90percentBased_V2.txt"), - EAFile_PFIso_Neu = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Fall17/effAreaPhotons_cone03_pfNeutralHadrons_90percentBased_V2.txt"), - EAFile_PFIso_Pho = cms.FileInPath("RecoEgamma/PhotonIdentification/data/Fall17/effAreaPhotons_cone03_pfPhotons_90percentBased_V2.txt"), -) - -seedGainPho = cms.EDProducer("PhotonSeedGainProducer", src = cms.InputTag("slimmedPhotons")) - -calibratedPatPhotonsNano = cms.EDProducer("CalibratedPatPhotonProducer", - correctionFile = cms.string('EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2016_UltraLegacy_preVFP_RunFineEtaR9Gain'), - mightGet = cms.optional.untracked.vstring, - minEtToCalibrate = cms.double(5.0), - produceCalibratedObjs = cms.bool(False), - recHitCollectionEB = cms.InputTag("reducedEgamma","reducedEBRecHits"), - recHitCollectionEE = cms.InputTag("reducedEgamma","reducedEERecHits"), - semiDeterministic = cms.bool(True), - src = cms.InputTag("slimmedPhotons"), - valueMapsStored = cms.vstring( - 'energyScaleStatUp', - 'energyScaleStatDown', - 'energyScaleSystUp', - 'energyScaleSystDown', - 'energyScaleGainUp', - 'energyScaleGainDown', - 'energySigmaRhoUp', - 'energySigmaRhoDown', - 'energySigmaPhiUp', - 'energySigmaPhiDown', - 'energyScaleUp', - 'energyScaleDown', - 'energySigmaUp', - 'energySigmaDown', - 'energyScaleValue', - 'energySigmaValue', - 'energySmearNrSigma', - 'ecalEnergyPreCorr', - 'ecalEnergyErrPreCorr', - 'ecalEnergyPostCorr', - 'ecalEnergyErrPostCorr' - ) -) - -(run2_egamma_2016 & tracker_apv_vfp30_2016).toModify(calibratedPatPhotonsNano, - correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2016_UltraLegacy_preVFP_RunFineEtaR9Gain") -) - -(run2_egamma_2016 & ~tracker_apv_vfp30_2016).toModify(calibratedPatPhotonsNano, - correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2016_UltraLegacy_postVFP_RunFineEtaR9Gain"), -) - -run2_egamma_2017.toModify(calibratedPatPhotonsNano, - correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2017_24Feb2020_runEtaR9Gain_v2") -) - -run2_egamma_2018.toModify(calibratedPatPhotonsNano, - correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2018_29Sep2020_RunFineEtaR9Gain") -) - -slimmedPhotonsWithUserData = cms.EDProducer("PATPhotonUserDataEmbedder", - src = cms.InputTag("slimmedPhotons"), - parentSrcs = cms.VInputTag("reducedEgamma:reducedGedPhotons"), - userFloats = cms.PSet( - mvaID = cms.InputTag("photonMVAValueMapProducer:PhotonMVAEstimatorRunIIFall17v2Values"), - PFIsoChg = cms.InputTag("isoForPho:PFIsoChg"), - PFIsoAll = cms.InputTag("isoForPho:PFIsoAll"), - ), - userIntFromBools = cms.PSet( - cutbasedID_loose = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-loose"), - cutbasedID_medium = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-medium"), - cutbasedID_tight = cms.InputTag("egmPhotonIDs:cutBasedPhotonID-Fall17-94X-V2-tight"), - mvaID_WP90 = cms.InputTag("egmPhotonIDs:mvaPhoID-RunIIFall17-v2-wp90"), - mvaID_WP80 = cms.InputTag("egmPhotonIDs:mvaPhoID-RunIIFall17-v2-wp80"), - 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"), - ), - userInts = cms.PSet( - VIDNestedWPBitmap = cms.InputTag("bitmapVIDForPho"), - seedGain = cms.InputTag("seedGainPho"), - ) -) - - -(run2_egamma_2016 | run2_egamma_2017 | run2_egamma_2018).toModify(slimmedPhotonsWithUserData.userFloats, - ecalEnergyErrPostCorrNew = cms.InputTag("calibratedPatPhotonsNano","ecalEnergyErrPostCorr"), - ecalEnergyPreCorrNew = cms.InputTag("calibratedPatPhotonsNano","ecalEnergyPreCorr"), - ecalEnergyPostCorrNew = cms.InputTag("calibratedPatPhotonsNano","ecalEnergyPostCorr"), - energyScaleUpNew = cms.InputTag("calibratedPatPhotonsNano","energyScaleUp"), - energyScaleDownNew = cms.InputTag("calibratedPatPhotonsNano","energyScaleDown"), - energySigmaUpNew = cms.InputTag("calibratedPatPhotonsNano","energySigmaUp"), - energySigmaDownNew = cms.InputTag("calibratedPatPhotonsNano","energySigmaDown"), - ) - - -finalPhotons = cms.EDFilter("PATPhotonRefSelector", - src = cms.InputTag("slimmedPhotonsWithUserData"), - cut = cms.string("pt > 5 ") -) - -photonTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("linkedObjects","photons"), - cut = cms.string(""), #we should not filter on cross linked collections - name= cms.string("Photon"), - doc = cms.string("slimmedPhotons after basic selection (" + finalPhotons.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the photons - variables = cms.PSet(P3Vars, - jetIdx = Var("?hasUserCand('jet')?userCand('jet').key():-1", int, doc="index of the associated jet (-1 if none)"), - electronIdx = Var("?hasUserCand('electron')?userCand('electron').key():-1", int, doc="index of the associated electron (-1 if none)"), - energyErr = Var("getCorrectedEnergyError('regression2')",float,doc="energy error of the cluster from regression",precision=6), - energyRaw = Var("superCluster().rawEnergy()",float,doc="raw energy of photon supercluster", precision=10), - r9 = Var("full5x5_r9()",float,doc="R9 of the supercluster, calculated with full 5x5 region",precision=8), - sieie = Var("full5x5_sigmaIetaIeta()",float,doc="sigma_IetaIeta of the supercluster, calculated with full 5x5 region",precision=8), - sipip = Var("showerShapeVariables().sigmaIphiIphi", float, doc="sigmaIphiIphi of the supercluster", precision=8), - sieip = Var("full5x5_showerShapeVariables().sigmaIetaIphi",float,doc="sigma_IetaIphi of the supercluster, calculated with full 5x5 region",precision=8), - s4 = Var("full5x5_showerShapeVariables().e2x2/full5x5_showerShapeVariables().e5x5",float,doc="e2x2/e5x5 of the supercluster, calculated with full 5x5 region",precision=8), - etaWidth = Var("superCluster().etaWidth()",float,doc="Width of the photon supercluster in eta", precision=8), - phiWidth = Var("superCluster().phiWidth()",float,doc="Width of the photon supercluster in phi", precision=8), - cutBased = Var( - "userInt('cutbasedID_loose')+userInt('cutbasedID_medium')+userInt('cutbasedID_tight')", - int, - doc="cut-based ID bitmap, Fall17V2, (0:fail, 1:loose, 2:medium, 3:tight)", - ), - cutBased_Fall17V1Bitmap = Var( - "userInt('cutbasedIDV1_loose')+2*userInt('cutbasedIDV1_medium')+4*userInt('cutbasedIDV1_tight')", - int, - doc="cut-based ID bitmap, Fall17V1, 2^(0:loose, 1:medium, 2:tight).", - ), - vidNestedWPBitmap = Var( - "userInt('VIDNestedWPBitmap')", - int, - doc="Fall17V2 " + make_bitmapVID_docstring(photon_id_modules_WorkingPoints_nanoAOD), - ), - electronVeto = Var("passElectronVeto()",bool,doc="pass electron veto"), - pixelSeed = Var("hasPixelSeed()",bool,doc="has pixel seed"), - mvaID = Var("userFloat('mvaID')",float,doc="MVA ID score, Fall17V2",precision=10), - mvaID_WP90 = Var("userInt('mvaID_WP90')",bool,doc="MVA ID WP90, Fall17V2"), - mvaID_WP80 = Var("userInt('mvaID_WP80')",bool,doc="MVA ID WP80, Fall17V2"), - pfPhoIso03 = Var("photonIso()",float,doc="PF absolute isolation dR=0.3, photon component (uncorrected)"), - pfChargedIsoPFPV = Var("chargedHadronPFPVIso()",float,doc="PF absolute isolation dR=0.3, charged component (PF PV only)"), - pfChargedIsoWorstVtx = Var("chargedHadronWorstVtxIso()",float,doc="PF absolute isolation dR=0.3, charged component (Vertex with largest isolation)"), - pfRelIso03_chg = Var("userFloat('PFIsoChg')/pt",float,doc="PF relative isolation dR=0.3, charged component (with rho*EA PU corrections)"), - pfRelIso03_all = Var("userFloat('PFIsoAll')/pt",float,doc="PF relative isolation dR=0.3, total (with rho*EA PU corrections)"), - hoe = Var("hadronicOverEm()",float,doc="H over E",precision=8), - isScEtaEB = Var("abs(superCluster().eta()) < 1.4442",bool,doc="is supercluster eta within barrel acceptance"), - isScEtaEE = Var("abs(superCluster().eta()) > 1.566 && abs(superCluster().eta()) < 2.5",bool,doc="is supercluster eta within endcap acceptance"), - seedGain = Var("userInt('seedGain')","uint8",doc="Gain of the seed crystal"), - # position of photon is best approximated by position of seed cluster, not the SC centroid - x_calo = Var("superCluster().seed().position().x()",float,doc="photon supercluster position on calorimeter, x coordinate (cm)",precision=10), - y_calo = Var("superCluster().seed().position().y()",float,doc="photon supercluster position on calorimeter, y coordinate (cm)",precision=10), - z_calo = Var("superCluster().seed().position().z()",float,doc="photon supercluster position on calorimeter, z coordinate (cm)",precision=10), - # ES variables - esEffSigmaRR = Var("full5x5_showerShapeVariables().effSigmaRR()", float, doc="preshower sigmaRR"), - esEnergyOverRawE = Var("superCluster().preshowerEnergy()/superCluster().rawEnergy()", float, doc="ratio of preshower energy to raw supercluster energy"), - haloTaggerMVAVal = Var("haloTaggerMVAVal()",float,doc="Value of MVA based BDT based beam halo tagger in the Ecal endcap (valid for pT > 200 GeV)",precision=8), - ) -) - - -#these eras need to make the energy correction, hence the "New" -(run2_egamma_2016 | run2_egamma_2017 | run2_egamma_2018).toModify(photonTable.variables, - pt = Var("pt*userFloat('ecalEnergyPostCorrNew')/userFloat('ecalEnergyPreCorrNew')", float, precision=-1, doc="p_{T}"), - energyErr = Var("userFloat('ecalEnergyErrPostCorrNew')",float,doc="energy error of the cluster from regression",precision=6), - eCorr = Var("userFloat('ecalEnergyPostCorrNew')/userFloat('ecalEnergyPreCorrNew')",float,doc="ratio of the calibrated energy/miniaod energy"), - hoe = Var("hadTowOverEm()",float,doc="H over E (Run2)",precision=8), - ) - -photonsMCMatchForTable = cms.EDProducer("MCMatcher", # cut on deltaR, deltaPt/Pt; pick best by deltaR - src = photonTable.src, # final reco collection - matched = cms.InputTag("finalGenParticles"), # final mc-truth particle collection - mcPdgId = cms.vint32(11,22), # one or more PDG ID (11 = el, 22 = pho); absolute values (see below) - checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge - mcStatus = cms.vint32(1), # PYTHIA status code (1 = stable, 2 = shower, 3 = hard scattering) - maxDeltaR = cms.double(0.3), # Minimum deltaR for the match - maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match - resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object - resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first -) - -photonMCTable = cms.EDProducer("CandMCMatchTableProducer", - src = photonTable.src, - mcMap = cms.InputTag("photonsMCMatchForTable"), - objName = photonTable.name, - objType = photonTable.name, #cms.string("Photon"), - branchName = cms.string("genPart"), - docString = cms.string("MC matching to status==1 photons or electrons"), -) - -from RecoEgamma.EgammaTools.egammaObjectModificationsInMiniAOD_cff import egamma8XObjectUpdateModifier,egamma9X105XUpdateModifier,prependEgamma8XObjectUpdateModifier -#we have dataformat changes to 106X so to read older releases we use egamma updators -slimmedPhotonsTo106X = cms.EDProducer("ModifiedPhotonProducer", - src = cms.InputTag("slimmedPhotons"), - modifierConfig = cms.PSet( modifications = cms.VPSet(egamma9X105XUpdateModifier) ) -) - -##adding 4 most imp scale & smearing variables to table -(run2_egamma_2016 | run2_egamma_2017 | run2_egamma_2018).toModify(photonTable.variables, - dEscaleUp=Var("userFloat('ecalEnergyPostCorrNew') - userFloat('energyScaleUpNew')", float, doc="ecal energy scale shifted 1 sigma up (adding gain/stat/syst in quadrature)", precision=8), - dEscaleDown=Var("userFloat('ecalEnergyPostCorrNew') - userFloat('energyScaleDownNew')", float, doc="ecal energy scale shifted 1 sigma down (adding gain/stat/syst in quadrature)", precision=8), - dEsigmaUp=Var("userFloat('ecalEnergyPostCorrNew') - userFloat('energySigmaUpNew')", float, doc="ecal energy smearing value shifted 1 sigma up", precision=8), - dEsigmaDown=Var("userFloat('ecalEnergyPostCorrNew') - userFloat('energySigmaDownNew')", float, doc="ecal energy smearing value shifted 1 sigma up", precision=8), - ) - -photonTask = cms.Task(bitmapVIDForPho, isoForPho, seedGainPho, calibratedPatPhotonsNano, slimmedPhotonsWithUserData, finalPhotons) -photonTablesTask = cms.Task(photonTable) -photonMCTask = cms.Task(photonsMCMatchForTable, photonMCTable) - - -photonIDValueMapProducer = cms.EDProducer("PhotonIDValueMapProducer", - ebReducedRecHitCollection = cms.InputTag("reducedEgamma","reducedEBRecHits"), - eeReducedRecHitCollection = cms.InputTag("reducedEgamma","reducedEERecHits"), - esReducedRecHitCollection = cms.InputTag("reducedEgamma","reducedESRecHits"), - isAOD = cms.bool(False), - mightGet = cms.optional.untracked.vstring, - particleBasedIsolation = cms.InputTag("particleBasedIsolation","gedPhotons"), - pfCandidates = cms.InputTag("packedPFCandidates"), - src = cms.InputTag("slimmedPhotons","","@skipCurrentProcess"), - vertices = cms.InputTag("offlineSlimmedPrimaryVertices") -) - -egmPhotonIsolation = cms.EDProducer("CITKPFIsolationSumProducer", - isolationConeDefinitions = cms.VPSet( - cms.PSet( - coneSize = cms.double(0.3), - isolateAgainst = cms.string('h+'), - isolationAlgo = cms.string('PhotonPFIsolationWithMapBasedVeto'), - miniAODVertexCodes = cms.vuint32(2, 3), - particleBasedIsolation = cms.InputTag("particleBasedIsolation","gedPhotons"), - vertexIndex = cms.int32(0) - ), - cms.PSet( - coneSize = cms.double(0.3), - isolateAgainst = cms.string('h0'), - isolationAlgo = cms.string('PhotonPFIsolationWithMapBasedVeto'), - miniAODVertexCodes = cms.vuint32(2, 3), - particleBasedIsolation = cms.InputTag("particleBasedIsolation","gedPhotons"), - vertexIndex = cms.int32(0) - ), - cms.PSet( - coneSize = cms.double(0.3), - isolateAgainst = cms.string('gamma'), - isolationAlgo = cms.string('PhotonPFIsolationWithMapBasedVeto'), - miniAODVertexCodes = cms.vuint32(2, 3), - particleBasedIsolation = cms.InputTag("particleBasedIsolation","gedPhotons"), - vertexIndex = cms.int32(0) - ) - ), - mightGet = cms.optional.untracked.vstring, - srcForIsolationCone = cms.InputTag("packedPFCandidates"), - srcToIsolate = cms.InputTag("slimmedPhotons") -) - diff --git a/PhysicsTools/NanoAOD/python/V10/protons_cff.py b/PhysicsTools/NanoAOD/python/V10/protons_cff.py deleted file mode 100644 index a4e18d2b84463..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/protons_cff.py +++ /dev/null @@ -1,69 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import Var,ExtVar -from PhysicsTools.NanoAOD.genProtonTable_cfi import genProtonTable as _genproton -from PhysicsTools.NanoAOD.nano_eras_cff import * -from RecoPPS.ProtonReconstruction.ppsFilteredProtonProducer_cfi import * - -singleRPProtons = True - -filteredProtons = ppsFilteredProtonProducer.clone( - protons_single_rp = cms.PSet( - include = cms.bool(singleRPProtons) - ) -) - -protonTable = cms.EDProducer("ProtonProducer", - tagRecoProtonsMulti = cms.InputTag("filteredProtons", "multiRP"), - tagTrackLite = cms.InputTag("ctppsLocalTrackLiteProducer"), - storeSingleRPProtons = cms.bool(singleRPProtons) -) -protonTable.tagRecoProtonsSingle = cms.InputTag("filteredProtons" if singleRPProtons else "ctppsProtons","singleRP") - - -multiRPTable = cms.EDProducer("SimpleProtonTrackFlatTableProducer", - src = cms.InputTag("filteredProtons","multiRP"), - cut = cms.string(""), - name = cms.string("Proton_multiRP"), - doc = cms.string("bon"), - singleton = cms.bool(False), - extension = cms.bool(False), - skipNonExistingSrc = cms.bool(True), - variables = cms.PSet( - xi = Var("xi",float,doc="xi or dp/p",precision=12), - thetaX = Var("thetaX",float,doc="theta x",precision=13), - thetaY = Var("thetaY",float,doc="theta y",precision=13), - t = Var("t",float,doc="Mandelstam variable t",precision=13), - time = Var("time()",float,doc="time",precision=16), - timeUnc = Var("timeError",float,doc="time uncertainty",precision=13), - ), - externalVariables = cms.PSet( - arm = ExtVar("protonTable:arm",int,doc="0 = sector45, 1 = sector56"), - ), -) - -singleRPTable = cms.EDProducer("SimpleProtonTrackFlatTableProducer", - src = cms.InputTag("filteredProtons","singleRP"), - cut = cms.string(""), - name = cms.string("Proton_singleRP"), - doc = cms.string("bon"), - singleton = cms.bool(False), - extension = cms.bool(False), - skipNonExistingSrc = cms.bool(True), - variables = cms.PSet( - xi = Var("xi",float,doc="xi or dp/p",precision=12), - thetaY = Var("thetaY",float,doc="th y",precision=10), - ), - externalVariables = cms.PSet( - decRPId = ExtVar("protonTable:protonRPId",int,doc="Detector ID",precision=8), - ), -) - -protonTablesTask = cms.Task(filteredProtons,protonTable,multiRPTable) -if singleRPProtons: protonTablesTask.add(singleRPTable) - -# GEN-level signal/PU protons collection -genProtonTable = _genproton.clone( - cut = cms.string('(pdgId == 2212) && (abs(pz) > 5200) && (abs(pz) < 6467.5)') # xi in [0.015, 0.2] -) - -genProtonTablesTask = cms.Task(genProtonTable) diff --git a/PhysicsTools/NanoAOD/python/V10/softActivity_cff.py b/PhysicsTools/NanoAOD/python/V10/softActivity_cff.py deleted file mode 100644 index 584b4de182eb0..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/softActivity_cff.py +++ /dev/null @@ -1,75 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import * - - -chsForSATkJets = cms.EDFilter("CandPtrSelector", src = cms.InputTag("packedPFCandidates"), cut = cms.string('charge()!=0 && pvAssociationQuality()>=5 && vertexRef().key()==0')) -softActivityJets = cms.EDProducer("FastjetJetProducer", - Active_Area_Repeats = cms.int32(1), - GhostArea = cms.double(0.01), - Ghost_EtaMax = cms.double(5.0), - Rho_EtaMax = cms.double(4.4), - applyWeight = cms.bool(False), - doAreaDiskApprox = cms.bool(False), - doAreaFastjet = cms.bool(False), - doPUOffsetCorr = cms.bool(False), - doPVCorrection = cms.bool(False), - doRhoFastjet = cms.bool(False), - inputEMin = cms.double(0.0), - inputEtMin = cms.double(0.0), - jetAlgorithm = cms.string('AntiKt'), - jetPtMin = cms.double(1), - jetType = cms.string('PFJet'), - maxBadEcalCells = cms.uint32(9999999), - maxBadHcalCells = cms.uint32(9999999), - maxProblematicEcalCells = cms.uint32(9999999), - maxProblematicHcalCells = cms.uint32(9999999), - maxRecoveredEcalCells = cms.uint32(9999999), - maxRecoveredHcalCells = cms.uint32(9999999), - minSeed = cms.uint32(14327), - nSigmaPU = cms.double(1.0), - rParam = cms.double(0.4), - radiusPU = cms.double(0.5), - src = cms.InputTag("chsForSATkJets"), - srcPVs = cms.InputTag(""), - useDeterministicSeed = cms.bool(True), - voronoiRfact = cms.double(-0.9) -) -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) diff --git a/PhysicsTools/NanoAOD/python/V10/taus_cff.py b/PhysicsTools/NanoAOD/python/V10/taus_cff.py deleted file mode 100644 index df7c2e19e722b..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/taus_cff.py +++ /dev/null @@ -1,261 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import Var,P4Vars -from PhysicsTools.JetMCAlgos.TauGenJets_cfi import tauGenJets -from PhysicsTools.JetMCAlgos.TauGenJetsDecayModeSelectorAllHadrons_cfi import tauGenJetsSelectorAllHadrons - -##################### Updated tau collection with MVA-based tau-Ids rerun ####### -# Used only in some eras -from PhysicsTools.NanoAOD.V10.taus_updatedMVAIds_cff import * - -##################### User floats producers, selectors ########################## - -# Original DeepTau v2p5 in 12_4_X doesn't include WPs in MINIAOD -# Import thresholds here to define WPs manually from raw scores -from RecoTauTag.RecoTau.tauIdWPsDefs import WORKING_POINTS_v2p5 - -finalTaus = cms.EDFilter("PATTauRefSelector", - src = cms.InputTag("slimmedTaus"), - cut = cms.string("pt > 18 && tauID('decayModeFindingNewDMs') && (tauID('byLooseCombinedIsolationDeltaBetaCorr3Hits') || (tauID('chargedIsoPtSumdR03')+max(0.,tauID('neutralIsoPtSumdR03')-0.072*tauID('puCorrPtSum'))<2.5) || tauID('byVVVLooseDeepTau2017v2p1VSjet') || tauID('byVVVLooseDeepTau2018v2p5VSjet'))") -) - -run3_nanoAOD_124.toModify(finalTaus, - cut = cms.string("pt > 18 && tauID('decayModeFindingNewDMs') && (tauID('byLooseCombinedIsolationDeltaBetaCorr3Hits') || (tauID('chargedIsoPtSumdR03')+max(0.,tauID('neutralIsoPtSumdR03')-0.072*tauID('puCorrPtSum'))<2.5) || tauID('byVVVLooseDeepTau2017v2p1VSjet') || (tauID('byDeepTau2018v2p5VSjetraw') > {}))".format(WORKING_POINTS_v2p5["jet"]["VVVLoose"])) - ) - -##################### Tables for final output and docs ########################## -def _tauIdWPMask(pattern, choices, doc="", from_raw=False, wp_thrs=None): - if from_raw: - assert wp_thrs is not None, "wp_thrs argument in _tauIdWPMask() is None, expect it to be dict-like" - - var_definition = [] - for wp_name in choices: - if not isinstance(wp_thrs[wp_name], float): - raise TypeError("Threshold for WP=%s is not a float number." % wp_name) - wp_definition = "test_bit(tauID('{}')-{}+1,0)".format(pattern, wp_thrs[wp_name]) - var_definition.append(wp_definition) - var_definition = " + ".join(var_definition) - else: - var_definition = " + ".join(["tauID('%s')" % (pattern % c) for c in choices]) - - doc = doc + ": "+", ".join(["%d = %s" % (i,c) for (i,c) in enumerate(choices, start=1)]) - return Var(var_definition, "uint8", doc=doc) - -tauTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("linkedObjects","taus"), - cut = cms.string(""), #we should not filter on cross linked collections - name= cms.string("Tau"), - doc = cms.string("slimmedTaus after basic selection (" + finalTaus.cut.value()+")"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for the taus - variables = cms.PSet() # PSet defined below in era dependent way -) -_tauVarsBase = cms.PSet(P4Vars, - charge = Var("charge", int, doc="electric charge"), - jetIdx = Var("?hasUserCand('jet')?userCand('jet').key():-1", int, doc="index of the associated jet (-1 if none)"), - decayMode = Var("decayMode()",int), - idDecayModeOldDMs = Var("tauID('decayModeFinding')", bool), - - leadTkPtOverTauPt = Var("leadChargedHadrCand.pt/pt ",float, doc="pt of the leading track divided by tau pt",precision=10), - leadTkDeltaEta = Var("leadChargedHadrCand.eta - eta ",float, doc="eta of the leading track, minus tau eta",precision=8), - leadTkDeltaPhi = Var("deltaPhi(leadChargedHadrCand.phi, phi) ",float, doc="phi of the leading track, minus tau phi",precision=8), - - dxy = Var("leadChargedHadrCand().dxy()",float, doc="d_{xy} of lead track with respect to PV, in cm (with sign)",precision=10), - dz = Var("leadChargedHadrCand().dz()",float, doc="d_{z} of lead track with respect to PV, in cm (with sign)",precision=14), - - # these are too many, we may have to suppress some - rawIso = Var( "tauID('byCombinedIsolationDeltaBetaCorrRaw3Hits')", float, doc = "combined isolation (deltaBeta corrections)", precision=10), - rawIsodR03 = Var( "(tauID('chargedIsoPtSumdR03')+max(0.,tauID('neutralIsoPtSumdR03')-0.072*tauID('puCorrPtSum')))", float, doc = "combined isolation (deltaBeta corrections, dR=0.3)", precision=10), - chargedIso = Var( "tauID('chargedIsoPtSum')", float, doc = "charged isolation", precision=10), - neutralIso = Var( "tauID('neutralIsoPtSum')", float, doc = "neutral (photon) isolation", precision=10), - puCorr = Var( "tauID('puCorrPtSum')", float, doc = "pileup correction", precision=10), - photonsOutsideSignalCone = Var( "tauID('photonPtSumOutsideSignalCone')", float, doc = "sum of photons outside signal cone", precision=10), - - idAntiMu = _tauIdWPMask("againstMuon%s3", choices=("Loose","Tight"), doc= "Anti-muon discriminator V3: "), - idAntiEleDeadECal = Var("tauID('againstElectronDeadECAL')", bool, doc = "Anti-electron dead-ECal discriminator"), - -# isoCI3hit = Var( "tauID("byCombinedIsolationDeltaBetaCorrRaw3Hits")" doc="byCombinedIsolationDeltaBetaCorrRaw3Hits raw output discriminator"), -# photonOutsideSigCone = Var( "tauID("photonPtSumOutsideSignalCone")" doc="photonPtSumOutsideSignalCone raw output discriminator"), - -) - -_mvaIsoVars2015 = cms.PSet( - rawMVAnewDM = Var( "tauID('byIsolationMVArun2v1DBnewDMwLTraw')",float, doc="byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2015)",precision=10), - rawMVAoldDM = Var( "tauID('byIsolationMVArun2v1DBoldDMwLTraw')",float, doc="byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2015)",precision=10), - rawMVAoldDMdR03 = Var( "tauID('byIsolationMVArun2v1DBdR03oldDMwLTraw')",float, doc="byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2015)",precision=10), - idMVAnewDM = _tauIdWPMask( "by%sIsolationMVArun2v1DBnewDMwLT", choices=("VLoose","Loose","Medium","Tight","VTight","VVTight"), doc="IsolationMVArun2v1DBnewDMwLT ID working point (2015)"), - idMVAoldDM = _tauIdWPMask( "by%sIsolationMVArun2v1DBoldDMwLT", choices=("VLoose","Loose","Medium","Tight","VTight","VVTight"), doc="IsolationMVArun2v1DBoldDMwLT ID working point (2015)"), - idMVAoldDMdR03 = _tauIdWPMask( "by%sIsolationMVArun2v1DBdR03oldDMwLT", choices=("VLoose","Loose","Medium","Tight","VTight","VVTight"), doc="IsolationMVArun2v1DBoldDMdR0p3wLT ID working point (2015)") -) -_mvaIsoVars2015Reduced = cms.PSet( - rawMVAoldDM = Var( "tauID('byIsolationMVArun2v1DBoldDMwLTraw2015')",float, doc="byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2015)",precision=10), - idMVAoldDM = _tauIdWPMask( "by%sIsolationMVArun2v1DBoldDMwLT2015", choices=("VLoose","Loose","Medium","Tight","VTight","VVTight"), doc="IsolationMVArun2v1DBoldDMwLT ID working point (2015)"), -) -_mvaIsoVars2017v1 = cms.PSet( - rawMVAoldDM2017v1 = Var( "tauID('byIsolationMVArun2v1DBoldDMwLTraw')",float, doc="byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2017v1)",precision=10), - idMVAoldDM2017v1 = _tauIdWPMask( "by%sIsolationMVArun2v1DBoldDMwLT", choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), doc="IsolationMVArun2v1DBoldDMwLT ID working point (2017v1)") -) -_mvaIsoVars2017v2 = cms.PSet( - rawMVAnewDM2017v2 = Var( "tauID('byIsolationMVArun2v1DBnewDMwLTraw2017v2')",float, doc="byIsolationMVArun2v1DBnewDMwLT raw output discriminator (2017v2)",precision=10), - rawMVAoldDM2017v2 = Var( "tauID('byIsolationMVArun2v1DBoldDMwLTraw2017v2')",float, doc="byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2017v2)",precision=10), - rawMVAoldDMdR032017v2 = Var( "tauID('byIsolationMVArun2v1DBdR03oldDMwLTraw2017v2')",float, doc="byIsolationMVArun2v1DBdR03oldDMwLT raw output discriminator (2017v2)",precision=10), - idMVAnewDM2017v2 = _tauIdWPMask( "by%sIsolationMVArun2v1DBnewDMwLT2017v2", - choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="IsolationMVArun2v1DBnewDMwLT ID working point (2017v2)"), - idMVAoldDM2017v2 = _tauIdWPMask( "by%sIsolationMVArun2v1DBoldDMwLT2017v2", - choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="IsolationMVArun2v1DBoldDMwLT ID working point (2017v2)"), - idMVAoldDMdR032017v2 = _tauIdWPMask( "by%sIsolationMVArun2v1DBdR03oldDMwLT2017v2", - choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="IsolationMVArun2v1DBoldDMdR0p3wLT ID working point (2017v2)") -) -_mvaAntiEVars2015 = cms.PSet( - rawAntiEle = Var("tauID('againstElectronMVA6Raw')", float, doc= "Anti-electron MVA discriminator V6 raw output discriminator (2015)", precision=10), - rawAntiEleCat = Var("tauID('againstElectronMVA6category')", int, doc="Anti-electron MVA discriminator V6 category (2015"), - idAntiEle = _tauIdWPMask("againstElectron%sMVA6", choices=("VLoose","Loose","Medium","Tight","VTight"), doc= "Anti-electron MVA discriminator V6 (2015)"), -) -_deepTauVars2017v2p1 = cms.PSet( - rawDeepTau2017v2p1VSe = Var("tauID('byDeepTau2017v2p1VSeraw')", float, doc="byDeepTau2017v2p1VSe raw output discriminator (deepTau2017v2p1)", precision=10), - rawDeepTau2017v2p1VSmu = Var("tauID('byDeepTau2017v2p1VSmuraw')", float, doc="byDeepTau2017v2p1VSmu raw output discriminator (deepTau2017v2p1)", precision=10), - rawDeepTau2017v2p1VSjet = Var("tauID('byDeepTau2017v2p1VSjetraw')", float, doc="byDeepTau2017v2p1VSjet raw output discriminator (deepTau2017v2p1)", precision=10), - idDeepTau2017v2p1VSe = _tauIdWPMask("by%sDeepTau2017v2p1VSe", - choices=("VVVLoose","VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="byDeepTau2017v2p1VSe ID working points (deepTau2017v2p1)"), - idDeepTau2017v2p1VSmu = _tauIdWPMask("by%sDeepTau2017v2p1VSmu", - choices=("VLoose", "Loose", "Medium", "Tight"), - doc="byDeepTau2017v2p1VSmu ID working points (deepTau2017v2p1)"), - idDeepTau2017v2p1VSjet = _tauIdWPMask("by%sDeepTau2017v2p1VSjet", - choices=("VVVLoose","VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="byDeepTau2017v2p1VSjet ID working points (deepTau2017v2p1)"), -) -_deepTauVars2018v2p5 = cms.PSet( - rawDeepTau2018v2p5VSe = Var("tauID('byDeepTau2018v2p5VSeraw')", float, doc="byDeepTau2018v2p5VSe raw output discriminator (deepTau2018v2p5)", precision=10), - rawDeepTau2018v2p5VSmu = Var("tauID('byDeepTau2018v2p5VSmuraw')", float, doc="byDeepTau2018v2p5VSmu raw output discriminator (deepTau2018v2p5)", precision=10), - rawDeepTau2018v2p5VSjet = Var("tauID('byDeepTau2018v2p5VSjetraw')", float, doc="byDeepTau2018v2p5VSjet raw output discriminator (deepTau2018v2p5)", precision=10), - idDeepTau2018v2p5VSe = _tauIdWPMask("by%sDeepTau2018v2p5VSe", - choices=("VVVLoose","VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="byDeepTau2018v2p5VSe ID working points (deepTau2018v2p5)"), - idDeepTau2018v2p5VSmu = _tauIdWPMask("by%sDeepTau2018v2p5VSmu", - choices=("VLoose", "Loose", "Medium", "Tight"), - doc="byDeepTau2018v2p5VSmu ID working points (deepTau2018v2p5)"), - idDeepTau2018v2p5VSjet = _tauIdWPMask("by%sDeepTau2018v2p5VSjet", - choices=("VVVLoose","VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="byDeepTau2018v2p5VSjet ID working points (deepTau2018v2p5)"), -) - -_variablesMiniV2 = cms.PSet( - _tauVarsBase, - _deepTauVars2017v2p1, - _deepTauVars2018v2p5 -) -_variablesMiniV1 = cms.PSet( - _variablesMiniV2, - _mvaIsoVars2017v2 -) -_variablesMiniV1.rawMVAoldDM = Var( "tauID('byIsolationMVArun2v1DBoldDMwLTraw')",float, doc="byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2015)",precision=10) -_variablesMiniV1.rawMVAoldDM2017v1 = Var( "tauID('byIsolationMVArun2v1DBoldDMwLTraw2017v1')",float, doc="byIsolationMVArun2v1DBoldDMwLT raw output discriminator (2017v1)",precision=10) -_variablesMiniV1.idMVAoldDM = _tauIdWPMask( "by%sIsolationMVArun2v1DBoldDMwLT", - choices=("VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="IsolationMVArun2v1DBoldDMwLT ID working point (2015)") -_variablesMiniV1.idMVAoldDM2017v1 = _tauIdWPMask( "by%sIsolationMVArun2v1DBoldDMwLT2017v1", - choices=("VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="IsolationMVArun2v1DBoldDMwLT ID working point (2017v1)") -_variables80X = cms.PSet( - _tauVarsBase, - _mvaAntiEVars2015, - _mvaIsoVars2015 -) - -tauTable.variables = _variablesMiniV2 - - -run3_nanoAOD_124.toModify( - tauTable.variables, - idDeepTau2018v2p5VSe = _tauIdWPMask("byDeepTau2018v2p5VSeraw", - choices=("VVVLoose","VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="byDeepTau2018v2p5VSe ID working points (deepTau2018v2p5)", - from_raw=True, wp_thrs=WORKING_POINTS_v2p5["e"]), - idDeepTau2018v2p5VSmu = _tauIdWPMask("byDeepTau2018v2p5VSmuraw", - choices=("VLoose", "Loose", "Medium", "Tight"), - doc="byDeepTau2018v2p5VSmu ID working points (deepTau2018v2p5)", - from_raw=True, wp_thrs=WORKING_POINTS_v2p5["mu"]), - idDeepTau2018v2p5VSjet = _tauIdWPMask("byDeepTau2018v2p5VSjetraw", - choices=("VVVLoose","VVLoose","VLoose","Loose","Medium","Tight","VTight","VVTight"), - doc="byDeepTau2018v2p5VSjet ID working points (deepTau2018v2p5)", - from_raw=True, wp_thrs=WORKING_POINTS_v2p5["jet"]) -) - - -tauGenJetsForNano = tauGenJets.clone( - GenParticles = "finalGenParticles", - includeNeutrinos = False -) - -tauGenJetsSelectorAllHadronsForNano = tauGenJetsSelectorAllHadrons.clone( - src = "tauGenJetsForNano" -) - -genVisTaus = cms.EDProducer("GenVisTauProducer", - src = cms.InputTag("tauGenJetsSelectorAllHadronsForNano"), - srcGenParticles = cms.InputTag("finalGenParticles") -) - -genVisTauTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("genVisTaus"), - cut = cms.string("pt > 10."), - name = cms.string("GenVisTau"), - doc = cms.string("gen hadronic taus "), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(False), # this is the main table for generator level hadronic tau decays - variables = cms.PSet( - pt = Var("pt", float,precision=8), - phi = Var("phi", float,precision=8), - eta = Var("eta", float,precision=8), - mass = Var("mass", float,precision=8), - charge = Var("charge", int), - status = Var("status", int, doc="Hadronic tau decay mode. 0=OneProng0PiZero, 1=OneProng1PiZero, 2=OneProng2PiZero, 10=ThreeProng0PiZero, 11=ThreeProng1PiZero, 15=Other"), - genPartIdxMother = Var("?numberOfMothers>0?motherRef(0).key():-1", int, doc="index of the mother particle"), - ) -) - -tausMCMatchLepTauForTable = cms.EDProducer("MCMatcher", # cut on deltaR, deltaPt/Pt; pick best by deltaR - src = tauTable.src, # final reco collection - matched = cms.InputTag("finalGenParticles"), # final mc-truth particle collection - mcPdgId = cms.vint32(11,13), # one or more PDG ID (11 = electron, 13 = muon); absolute values (see below) - checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge - mcStatus = cms.vint32(), # PYTHIA status code (1 = stable, 2 = shower, 3 = hard scattering) - maxDeltaR = cms.double(0.3), # Minimum deltaR for the match - maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match - resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object - resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first -) - -tausMCMatchHadTauForTable = cms.EDProducer("MCMatcher", # cut on deltaR, deltaPt/Pt; pick best by deltaR - src = tauTable.src, # final reco collection - matched = cms.InputTag("genVisTaus"), # generator level hadronic tau decays - mcPdgId = cms.vint32(15), # one or more PDG ID (15 = tau); absolute values (see below) - checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge - mcStatus = cms.vint32(), # CV: no *not* require certain status code for matching (status code corresponds to decay mode for hadronic tau decays) - maxDeltaR = cms.double(0.3), # Maximum deltaR for the match - maxDPtRel = cms.double(1.), # Maximum deltaPt/Pt for the match - resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object - resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first -) - -tauMCTable = cms.EDProducer("CandMCMatchTableProducer", - src = tauTable.src, - mcMap = cms.InputTag("tausMCMatchLepTauForTable"), - mcMapVisTau = cms.InputTag("tausMCMatchHadTauForTable"), - objName = tauTable.name, - objType = tauTable.name, #cms.string("Tau"), - branchName = cms.string("genPart"), - docString = cms.string("MC matching to status==2 taus"), -) - - -tauTask = cms.Task(finalTaus) -tauTablesTask = cms.Task(tauTable) - -genTauTask = cms.Task(tauGenJetsForNano,tauGenJetsSelectorAllHadronsForNano,genVisTaus,genVisTauTable) -tauMCTask = cms.Task(genTauTask,tausMCMatchLepTauForTable,tausMCMatchHadTauForTable,tauMCTable) - diff --git a/PhysicsTools/NanoAOD/python/V10/taus_updatedMVAIds_cff.py b/PhysicsTools/NanoAOD/python/V10/taus_updatedMVAIds_cff.py deleted file mode 100644 index 304b7064768a9..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/taus_updatedMVAIds_cff.py +++ /dev/null @@ -1,416 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -##################### Updated tau collection with MVA-based tau-Ids rerun ####### -# Used only in some eras -from RecoTauTag.Configuration.loadRecoTauTagMVAsFromPrepDB_cfi import * -from RecoTauTag.RecoTau.PATTauDiscriminationByMVAIsolationRun2_cff import * -from RecoTauTag.RecoTau.TauDiscriminatorTools import noPrediscriminants - -### MVAIso 2017v2 -## DBoldDM -# Raw -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw = patDiscriminationByIsolationMVArun2v1raw.clone( - PATTauProducer = cms.InputTag('slimmedTaus'), - Prediscriminants = noPrediscriminants, - loadMVAfromDB = cms.bool(True), - mvaName = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT"), # name of the training you want to use - mvaOpt = cms.string("DBoldDMwLTwGJ"), # option you want to use for your training (i.e., which variables are used to compute the BDT score) - verbosity = cms.int32(0) -) -# WPs -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT = patDiscriminationByIsolationMVArun2v1.clone( - PATTauProducer = cms.InputTag('slimmedTaus'), - Prediscriminants = noPrediscriminants, - toMultiplex = cms.InputTag('patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw'), - loadMVAfromDB = cms.bool(True), - mvaOutput_normalization = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT_mvaOutput_normalization"), # normalization fo the training you want to use - mapping = cms.VPSet( - cms.PSet( - category = cms.uint32(0), - cut = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT"), # this is the name of the working point you want to use - variable = cms.string("pt"), - ) - ), - workingPoints = cms.vstring( - "_VVLoose", - "_VLoose", - "_Loose", - "_Medium", - "_Tight", - "_VTight", - "_VVTight" - ) -) -# MVAIso DBoldDM Seqeunce -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTTask = cms.Task( - patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw, - patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT -) -## DBnewDM -# Raw -patTauDiscriminationByIsolationMVArun2v1DBnewDMwLTraw = patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw.clone( - mvaName = cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT"), # name of the training you want to use - mvaOpt = cms.string("DBnewDMwLTwGJ") # option you want to use for your training (i.e., which variables are used to compute the BDT score) -) -# WPs -patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT = patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT.clone( - toMultiplex = cms.InputTag('patTauDiscriminationByIsolationMVArun2v1DBnewDMwLTraw'), - mvaOutput_normalization = cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT_mvaOutput_normalization"), # normalization fo the training you want to use - mapping = cms.VPSet( - cms.PSet( - category = cms.uint32(0), - cut = cms.string("RecoTauTag_tauIdMVAIsoDBnewDMwLT"), # this is the name of the working point you want to use - variable = cms.string("pt"), - ) - ) -) -# MVAIso DBnewDM Seqeunce -patTauDiscriminationByIsolationMVArun2v1DBnewDMwLTTask = cms.Task( - patTauDiscriminationByIsolationMVArun2v1DBnewDMwLTraw, - patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT -) -## DBoldDMdR0p3 -# Raw -patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLTraw = patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw.clone( - mvaName = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT"), # name of the training you want to use - mvaOpt = cms.string("DBoldDMwLTwGJ"), # option you want to use for your training (i.e., which variables are used to compute the BDT score) - srcChargedIsoPtSum = cms.string('chargedIsoPtSumdR03'), - srcFootprintCorrection = cms.string('footprintCorrectiondR03'), - srcNeutralIsoPtSum = cms.string('neutralIsoPtSumdR03'), - srcPUcorrPtSum = cms.string('puCorrPtSum'), - srcPhotonPtSumOutsideSignalCone = cms.string('photonPtSumOutsideSignalConedR03') -) -# WPs -patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT = patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT.clone( - toMultiplex = cms.InputTag('patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLTraw'), - mvaOutput_normalization = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT_mvaOutput_normalization"), # normalization fo the training you want to use - mapping = cms.VPSet( - cms.PSet( - category = cms.uint32(0), - cut = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMdR0p3wLT"), # this is the name of the working point you want to use - variable = cms.string("pt"), - ) - ) -) -# MVAIso DBoldDMdR0p3 Seqeunce -patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLTTask = cms.Task( - patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLTraw, - patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT -) -### MVAIso 2017v1 for Nano on top of MiniAODv1 -## DBoldDM -# Raw -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw2017v1 = patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw.clone( - mvaName = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v1"), # name of the training you want to use - mvaOpt = cms.string("DBoldDMwLTwGJ") # option you want to use for your training (i.e., which variables are used to compute the BDT score) -) -# WPs -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1 = patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT.clone( - toMultiplex = cms.InputTag('patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw2017v1'), - mvaOutput_normalization = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v1_mvaOutput_normalization"), # normalization fo the training you want to use - mapping = cms.VPSet( - cms.PSet( - category = cms.uint32(0), - cut = cms.string("RecoTauTag_tauIdMVAIsoDBoldDMwLT2017v1"), # this is the name of the working point you want to use - variable = cms.string("pt"), - ) - ), - workingPoints = cms.vstring( - "_WPEff95", - "_WPEff90", - "_WPEff80", - "_WPEff70", - "_WPEff60", - "_WPEff50", - "_WPEff40" - ) -) -# MVAIso DBoldDM Seqeunce -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1Task = cms.Task( - patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw2017v1, - patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1 -) -### MVAIso 2015 for Nano on top of MiniAODv2 -## DBoldDM -# Raw -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw2015 = patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw.clone( - mvaName = cms.string("RecoTauTag_tauIdMVADBoldDMwLTv1"), # name of the training you want to use - mvaOpt = cms.string("DBoldDMwLT") # option you want to use for your training (i.e., which variables are used to compute the BDT score) -) -# WPs -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015 = patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT.clone( - toMultiplex = cms.InputTag('patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw2015'), - mvaOutput_normalization = cms.string("RecoTauTag_tauIdMVADBoldDMwLTv1_mvaOutput_normalization"), # normalization fo the training you want to use - mapping = cms.VPSet( - cms.PSet( - category = cms.uint32(0), - cut = cms.string("RecoTauTag_tauIdMVADBoldDMwLTv1"), # this is the name of the working point you want to use - variable = cms.string("pt"), - ) - ), - workingPoints = cms.vstring( - "_WPEff90", - "_WPEff80", - "_WPEff70", - "_WPEff60", - "_WPEff50", - "_WPEff40" - ) -) -# MVAIso DBoldDM Seqeunce -patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015Task = cms.Task( - patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTraw2015, - patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015 -) - - -### Define new anit-e discriminants (2018) -antiElectronDiscrMVA6_version = "MVA" -## Raw -from RecoTauTag.RecoTau.patTauDiscriminationAgainstElectronMVA6_cfi import patTauDiscriminationAgainstElectronMVA6 -patTauDiscriminationByElectronRejectionMVA62018Raw = patTauDiscriminationAgainstElectronMVA6.clone( - PATTauProducer = 'slimmedTaus', - Prediscriminants = noPrediscriminants, #already selected for MiniAOD - srcElectrons = 'slimmedElectrons', - vetoEcalCracks = False, #keep tau candidates in EB-EE cracks - mvaName_NoEleMatch_wGwoGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_NoEleMatch_wGwoGSF_BL', - mvaName_NoEleMatch_wGwoGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_NoEleMatch_wGwoGSF_EC', - mvaName_NoEleMatch_woGwoGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_NoEleMatch_woGwoGSF_BL', - mvaName_NoEleMatch_woGwoGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_NoEleMatch_woGwoGSF_EC', - mvaName_wGwGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_wGwGSF_BL', - mvaName_wGwGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_wGwGSF_EC', - mvaName_woGwGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_woGwGSF_BL', - mvaName_woGwGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_woGwGSF_EC' -) -## anti-e 2018 WPs -from RecoTauTag.RecoTau.PATTauDiscriminantCutMultiplexer_cfi import patTauDiscriminantCutMultiplexer -# VLoose -patTauDiscriminationByElectronRejectionMVA62018 = patTauDiscriminantCutMultiplexer.clone( - PATTauProducer = patTauDiscriminationByElectronRejectionMVA62018Raw.PATTauProducer, - Prediscriminants = patTauDiscriminationByElectronRejectionMVA62018Raw.Prediscriminants, - toMultiplex = cms.InputTag("patTauDiscriminationByElectronRejectionMVA62018Raw"), - mapping = cms.VPSet( - cms.PSet( - category = cms.uint32(0), - cut = cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_NoEleMatch_woGwoGSF_BL'), - variable = cms.string('pt') - ), - cms.PSet( - category = cms.uint32(2), - cut = cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_NoEleMatch_wGwoGSF_BL'), - variable = cms.string('pt') - ), - cms.PSet( - category = cms.uint32(5), - cut = cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_woGwGSF_BL'), - variable = cms.string('pt') - ), - cms.PSet( - category = cms.uint32(7), - cut = cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_wGwGSF_BL'), - variable = cms.string('pt') - ), - cms.PSet( - category = cms.uint32(8), - cut = cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_NoEleMatch_woGwoGSF_EC'), - variable = cms.string('pt') - ), - cms.PSet( - category = cms.uint32(10), - cut = cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_NoEleMatch_wGwoGSF_EC'), - variable = cms.string('pt') - ), - cms.PSet( - category = cms.uint32(13), - cut = cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_woGwGSF_EC'), - variable = cms.string('pt') - ), - cms.PSet( - category = cms.uint32(15), - cut = cms.string('RecoTauTag_antiElectron'+antiElectronDiscrMVA6_version+'_wGwGSF_EC'), - variable = cms.string('pt') - ) - ), - rawValues = cms.vstring( - "discriminator", - "category" - ), - workingPoints = cms.vstring( - "_VLoose", - "_Loose", - "_Medium", - "_Tight", - "_VTight" - ) -) -### Define v1 anit-e discriminants (2015) -antiElectronDiscrMVA6v1_version = "MVA6v1" -## Raw -patTauDiscriminationByElectronRejectionMVA62015Raw = patTauDiscriminationAgainstElectronMVA6.clone( - PATTauProducer = 'slimmedTaus', - Prediscriminants = noPrediscriminants, #already selected for MiniAOD - srcElectrons = 'slimmedElectrons', - vetoEcalCracks = True, #don't keep tau candidates in EB-EE cracks for v1 - mvaName_NoEleMatch_wGwoGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6v1_version+'_gbr_NoEleMatch_wGwoGSF_BL', - mvaName_NoEleMatch_wGwoGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6v1_version+'_gbr_NoEleMatch_wGwoGSF_EC', - mvaName_NoEleMatch_woGwoGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6v1_version+'_gbr_NoEleMatch_woGwoGSF_BL', - mvaName_NoEleMatch_woGwoGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6v1_version+'_gbr_NoEleMatch_woGwoGSF_EC', - mvaName_wGwGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6v1_version+'_gbr_wGwGSF_BL', - mvaName_wGwGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6v1_version+'_gbr_wGwGSF_EC', - mvaName_woGwGSF_BL = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6v1_version+'_gbr_woGwGSF_BL', - mvaName_woGwGSF_EC = 'RecoTauTag_antiElectron'+antiElectronDiscrMVA6v1_version+'_gbr_woGwGSF_EC' -) -## anti-e v1 WPs -patTauDiscriminationByElectronRejectionMVA62015 = patTauDiscriminationByElectronRejectionMVA62018.clone( - PATTauProducer = patTauDiscriminationByElectronRejectionMVA62015Raw.PATTauProducer, - Prediscriminants = patTauDiscriminationByElectronRejectionMVA62015Raw.Prediscriminants, - toMultiplex = cms.InputTag("patTauDiscriminationByElectronRejectionMVA62015Raw"), - rawValues = cms.vstring( - "discriminator", - "category" - ), - workingPoints = cms.vstring( - "_WPEff99", - "_WPEff96", - "_WPEff91", - "_WPEff85", - "_WPEff79" - ) -) -for m in patTauDiscriminationByElectronRejectionMVA62015.mapping: - m.cut = m.cut.value().replace(antiElectronDiscrMVA6_version, antiElectronDiscrMVA6v1_version + "_gbr") -### Put all anti-e tau-IDs into a sequence -_patTauDiscriminationByElectronRejection2018Task = cms.Task( - patTauDiscriminationByElectronRejectionMVA62018Raw, - patTauDiscriminationByElectronRejectionMVA62018 -) -_patTauDiscriminationByElectronRejection2015Task = cms.Task( - patTauDiscriminationByElectronRejectionMVA62015Raw, - patTauDiscriminationByElectronRejectionMVA62015 -) -patTauDiscriminationByElectronRejectionTask = _patTauDiscriminationByElectronRejection2015Task.copy() - -### put all new MVA tau-Id stuff to one Sequence -_patTauMVAIDsTask2017v2 = cms.Task( - patTauDiscriminationByIsolationMVArun2v1DBoldDMwLTTask, - patTauDiscriminationByIsolationMVArun2v1DBnewDMwLTTask, - patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLTTask, - patTauDiscriminationByElectronRejectionTask -) -patTauMVAIDsTask = _patTauMVAIDsTask2017v2.copy() -patTauMVAIDsTask.add(patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015Task) - -_patTauMVAIDsTaskWith2017v1 = _patTauMVAIDsTask2017v2.copy() -_patTauMVAIDsTaskWith2017v1.add(patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1Task) - -# embed new MVA tau-Ids into new tau collection -def tauIDMVAinputs(module, wp): - return cms.PSet(inputTag = cms.InputTag(module), workingPointIndex = cms.int32(-1 if wp=="raw" else -2 if wp=="category" else globals()[module].workingPoints.index(wp))) -slimmedTausUpdated = cms.EDProducer("PATTauIDEmbedder", - src = cms.InputTag('slimmedTaus'), - tauIDSources = cms.PSet() # PSet defined below in era dependent way -) -_tauIDSources2017v2 = cms.PSet( - #oldDM - byIsolationMVArun2v1DBoldDMwLTraw2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT", "raw"), - byVVLooseIsolationMVArun2v1DBoldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT", "_VVLoose"), - byVLooseIsolationMVArun2v1DBoldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT", "_VLoose"), - byLooseIsolationMVArun2v1DBoldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT", "_Loose"), - byMediumIsolationMVArun2v1DBoldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT", "_Medium"), - byTightIsolationMVArun2v1DBoldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT", "_Tight"), - byVTightIsolationMVArun2v1DBoldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT", "_VTight"), - byVVTightIsolationMVArun2v1DBoldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT", "_VVTight"), - #newDM - byIsolationMVArun2v1DBnewDMwLTraw2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT", "raw"), - byVVLooseIsolationMVArun2v1DBnewDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT", "_VVLoose"), - byVLooseIsolationMVArun2v1DBnewDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT", "_VLoose"), - byLooseIsolationMVArun2v1DBnewDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT", "_Loose"), - byMediumIsolationMVArun2v1DBnewDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT", "_Medium"), - byTightIsolationMVArun2v1DBnewDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT", "_Tight"), - byVTightIsolationMVArun2v1DBnewDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT", "_VTight"), - byVVTightIsolationMVArun2v1DBnewDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBnewDMwLT", "_VVTight"), - #oldDMdR0p3 - byIsolationMVArun2v1DBdR03oldDMwLTraw2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT", "raw"), - byVVLooseIsolationMVArun2v1DBdR03oldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT", "_VVLoose"), - byVLooseIsolationMVArun2v1DBdR03oldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT", "_VLoose"), - byLooseIsolationMVArun2v1DBdR03oldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT", "_Loose"), - byMediumIsolationMVArun2v1DBdR03oldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT", "_Medium"), - byTightIsolationMVArun2v1DBdR03oldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT", "_Tight"), - byVTightIsolationMVArun2v1DBdR03oldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT", "_VTight"), - byVVTightIsolationMVArun2v1DBdR03oldDMwLT2017v2 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMdR0p3wLT", "_VVTight") -) -_tauIDSources2017v1 = cms.PSet( - byIsolationMVArun2v1DBoldDMwLTraw2017v1 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1", "raw"), - byVVLooseIsolationMVArun2v1DBoldDMwLT2017v1 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1", "_WPEff95"), - byVLooseIsolationMVArun2v1DBoldDMwLT2017v1 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1", "_WPEff90"), - byLooseIsolationMVArun2v1DBoldDMwLT2017v1 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1", "_WPEff80"), - byMediumIsolationMVArun2v1DBoldDMwLT2017v1 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1", "_WPEff70"), - byTightIsolationMVArun2v1DBoldDMwLT2017v1 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1", "_WPEff60"), - byVTightIsolationMVArun2v1DBoldDMwLT2017v1 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1", "_WPEff50"), - byVVTightIsolationMVArun2v1DBoldDMwLT2017v1 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2017v1", "_WPEff40") -) -_tauIDSourcesWith2017v1 = cms.PSet( - _tauIDSources2017v2.clone(), - _tauIDSources2017v1 -) -_tauIDSources2015 = cms.PSet( - byIsolationMVArun2v1DBoldDMwLTraw2015 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015", "raw"), - byVLooseIsolationMVArun2v1DBoldDMwLT2015 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015", "_WPEff90"), - byLooseIsolationMVArun2v1DBoldDMwLT2015 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015", "_WPEff80"), - byMediumIsolationMVArun2v1DBoldDMwLT2015 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015", "_WPEff70"), - byTightIsolationMVArun2v1DBoldDMwLT2015 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015", "_WPEff60"), - byVTightIsolationMVArun2v1DBoldDMwLT2015 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015", "_WPEff50"), - byVVTightIsolationMVArun2v1DBoldDMwLT2015 = tauIDMVAinputs("patTauDiscriminationByIsolationMVArun2v1DBoldDMwLT2015", "_WPEff40") -) -_tauIDSourcesWith2015 = cms.PSet( - _tauIDSources2017v2.clone(), - _tauIDSources2015 -) -slimmedTausUpdated.tauIDSources=_tauIDSourcesWith2015 - -_antiETauIDSources2018 = cms.PSet( - againstElectronMVA6Raw2018 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62018", "raw"), - againstElectronMVA6category2018 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62018", "category"), - againstElectronVLooseMVA62018 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62018", "_VLoose"), - againstElectronLooseMVA62018 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62018", "_Loose"), - againstElectronMediumMVA62018 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62018", "_Medium"), - againstElectronTightMVA62018 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62018", "_Tight"), - againstElectronVTightMVA62018 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62018", "_VTight") -) -_tauIDSourcesWithAntiE2018 = cms.PSet( - slimmedTausUpdated.tauIDSources.clone(), - _antiETauIDSources2018 -) -_antiETauIDSources2015 = cms.PSet( - againstElectronMVA6Raw2015 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62015", "raw"), - againstElectronMVA6category2015 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62015", "category"), - againstElectronVLooseMVA62015 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62015", "_WPEff99"), - againstElectronLooseMVA62015 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62015", "_WPEff96"), - againstElectronMediumMVA62015 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62015", "_WPEff91"), - againstElectronTightMVA62015 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62015", "_WPEff85"), - againstElectronVTightMVA62015 = tauIDMVAinputs("patTauDiscriminationByElectronRejectionMVA62015", "_WPEff79") -) -_tauIDSourcesWithAntiE2015 = cms.PSet( - slimmedTausUpdated.tauIDSources.clone(), - _antiETauIDSources2015 -) -slimmedTausUpdated.tauIDSources=_tauIDSourcesWithAntiE2015 - -## anti-electron in dead-ECal regions -from RecoTauTag.RecoTau.patTauDiscriminationAgainstElectronDeadECAL_cfi import patTauDiscriminationAgainstElectronDeadECAL -patTauDiscriminationAgainstElectronDeadECALForNano = patTauDiscriminationAgainstElectronDeadECAL.clone( - PATTauProducer = 'slimmedTaus', - Prediscriminants = noPrediscriminants -) -_patTauMVAIDsTaskWithAntiEdeadECal = patTauMVAIDsTask.copy() -_patTauMVAIDsTaskWithAntiEdeadECal.add(patTauDiscriminationAgainstElectronDeadECALForNano) -_tauIDSourcesWithAntiEdeadECal = cms.PSet( - slimmedTausUpdated.tauIDSources.clone(), - againstElectronDeadECALForNano = cms.PSet( - inputTag = cms.InputTag("patTauDiscriminationAgainstElectronDeadECALForNano"), - workingPointIndex = cms.int32(-99) - ) -) - -patTauMVAIDsTask.add(slimmedTausUpdated) - diff --git a/PhysicsTools/NanoAOD/python/V10/triggerObjects_cff.py b/PhysicsTools/NanoAOD/python/V10/triggerObjects_cff.py deleted file mode 100644 index 6ac8c799cf004..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/triggerObjects_cff.py +++ /dev/null @@ -1,318 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.nano_eras_cff import * -from PhysicsTools.NanoAOD.common_cff import Var,ExtVar -import copy - -unpackedPatTrigger = cms.EDProducer("PATTriggerObjectStandAloneUnpacker", - patTriggerObjectsStandAlone = cms.InputTag('slimmedPatTrigger'), - triggerResults = cms.InputTag('TriggerResults::HLT'), - unpackFilterLabels = cms.bool(True) -) - - -triggerObjectTable = cms.EDProducer("TriggerObjectTableProducer", - name= cms.string("TrigObj"), - src = cms.InputTag("unpackedPatTrigger"), - l1EG = cms.InputTag("caloStage2Digis","EGamma"), - l1Sum = cms.InputTag("caloStage2Digis","EtSum"), - l1Jet = cms.InputTag("caloStage2Digis","Jet"), - l1Muon = cms.InputTag("gmtStage2Digis","Muon"), - l1Tau = cms.InputTag("caloStage2Digis","Tau"), - selections = cms.VPSet( - cms.PSet( - name = cms.string("Electron (PixelMatched e/gamma)"), # this selects also photons for the moment! - id = cms.int32(11), - sel = cms.string("type(92) && pt > 7 && coll('hltEgammaCandidates') && filter('*PixelMatchFilter')"), - l1seed = cms.string("type(-98)"), l1deltaR = cms.double(0.3), - #l2seed = cms.string("type(92) && coll('')"), l2deltaR = cms.double(0.5), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string( - "filter('*CaloIdLTrackIdLIsoVL*TrackIso*Filter') + " \ - "2*filter('hltEle*WPTight*TrackIsoFilter*') + " \ - "4*filter('hltEle*WPLoose*TrackIsoFilter') + " \ - "8*filter('*OverlapFilter*IsoEle*PFTau*') + " \ - "16*filter('hltEle*Ele*CaloIdLTrackIdLIsoVL*Filter') + " \ - "32*filter('hltMu*TrkIsoVVL*Ele*CaloIdLTrackIdLIsoVL*Filter*') + " \ - "64*filter('hlt*OverlapFilterIsoEle*PFTau*') + " \ - "128*filter('hltEle*Ele*Ele*CaloIdLTrackIdLDphiLeg*Filter') + " \ - "256*max(filter('hltL3fL1Mu*DoubleEG*Filtered*'),filter('hltMu*DiEle*CaloIdLTrackIdLElectronleg*Filter')) + " \ - "512*max(filter('hltL3fL1DoubleMu*EG*Filter*'),filter('hltDiMu*Ele*CaloIdLTrackIdLElectronleg*Filter')) + " \ - "1024*min(filter('hltEle32L1DoubleEGWPTightGsfTrackIsoFilter'),filter('hltEGL1SingleEGOrFilter')) + " \ - "2048*filter('hltEle*CaloIdVTGsfTrkIdTGsfDphiFilter') + " \ - "4096*path('HLT_Ele*PFJet*') + " \ - "8192*max(filter('hltEG175HEFilter'),filter('hltEG200HEFilter'))"), - qualityBitsDoc = cms.string("1 = CaloIdL_TrackIdL_IsoVL, 2 = 1e (WPTight), 4 = 1e (WPLoose), 8 = OverlapFilter PFTau, 16 = 2e, 32 = 1e-1mu, 64 = 1e-1tau, 128 = 3e, 256 = 2e-1mu, 512 = 1e-2mu, 1024 = 1e (32_L1DoubleEG_AND_L1SingleEGOr), 2048 = 1e (CaloIdVT_GsfTrkIdT), 4096 = 1e (PFJet), 8192 = 1e (Photon175_OR_Photon200)"), - ), - cms.PSet( - name = cms.string("Photon"), - id = cms.int32(22), - sel = cms.string("type(92) && pt > 20 && coll('hltEgammaCandidates')"), - l1seed = cms.string("type(-98)"), l1deltaR = cms.double(0.3), - #l2seed = cms.string("type(92) && coll('')"), l2deltaR = cms.double(0.5), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string( - "filter('hltEG33L1EG26HEFilter') + " \ - "2*filter('hltEG50HEFilter') + " \ - "4*filter('hltEG75HEFilter') + " \ - "8*filter('hltEG90HEFilter') + " \ - "16*filter('hltEG120HEFilter') + " \ - "32*filter('hltEG150HEFilter') + " \ - "64*filter('hltEG175HEFilter') + " \ - "128*filter('hltEG200HEFilter') + " \ - "256*filter('hltHtEcal800') + " \ - "512*filter('hltEG110EBTightIDTightIsoTrackIsoFilter') + " \ - "1024*filter('hltEG120EBTightIDTightIsoTrackIsoFilter') + " \ - "2048*filter('hltMu17Photon30IsoCaloIdPhotonlegTrackIsoFilter')"), - qualityBitsDoc = cms.string("Single Photon filters: 1 = hltEG33L1EG26HEFilter, 2 = hltEG50HEFilter, 4 = hltEG75HEFilter, 8 = hltEG90HEFilter, 16 = hltEG120HEFilter, 32 = hltEG150HEFilter, 64 = hltEG175HEFilter, 128 = hltEG200HEFilter, 256 = hltHtEcal800, 512 = hltEG110EBTightIDTightIsoTrackIsoFilter, 1024 = hltEG120EBTightIDTightIsoTrackIsoFilter, 2048 = 1mu-1photon"), - ), - cms.PSet( - name = cms.string("Muon"), - id = cms.int32(13), - sel = cms.string("type(83) && pt > 5 && (coll('hltIterL3MuonCandidates') || (pt > 45 && coll('hltHighPtTkMuonCands')) || (pt > 95 && coll('hltOldL3MuonCandidates')))"), - l1seed = cms.string("type(-81)"), l1deltaR = cms.double(0.5), - l2seed = cms.string("type(83) && coll('hltL2MuonCandidates')"), l2deltaR = cms.double(0.3), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string( - "max(filter('*RelTrkIsoVVLFiltered0p4'),filter('*RelTrkIsoVVLFiltered')) + " \ - "2*max(max(filter('hltL3crIso*IsoFiltered0p07'),filter('hltL3crIso*IsoFiltered0p08')),filter('hltL3crIso*IsoFiltered')) + " \ - "4*filter('*OverlapFilterIsoMu*PFTau*') + " \ - "8*max(max(max(filter('hltL3crIsoL1*SingleMu*IsoFiltered0p07'),filter('hltL3crIsoL1sMu*IsoFiltered0p07')),max(filter('hltL3crIsoL1*SingleMu*IsoFiltered0p08'),filter('hltL3crIsoL1sMu*IsoFiltered0p08'))),max(filter('hltL3crIsoL1*SingleMu*IsoFiltered'),filter('hltL3crIsoL1sMu*IsoFiltered'))) + " \ - "16*filter('hltDiMuon*Filtered*') + " \ - "32*filter('hltMu*TrkIsoVVL*Ele*CaloIdLTrackIdLIsoVL*Filter*') + " \ - "64*filter('hlt*OverlapFilterIsoMu*PFTau*') + " \ - "128*filter('hltL3fL1TripleMu*') + " \ - "256*max(filter('hltL3fL1DoubleMu*EG*Filtered*'),filter('hltDiMu*Ele*CaloIdLTrackIdLElectronleg*Filter')) + " \ - "512*max(filter('hltL3fL1Mu*DoubleEG*Filtered*'),filter('hltMu*DiEle*CaloIdLTrackIdLElectronleg*Filter')) + " \ - "1024*max(filter('hltL3fL1sMu*L3Filtered50*'),filter('hltL3fL1sMu*TkFiltered50*')) + " \ - "2048*max(filter('hltL3fL1sMu*L3Filtered100*'),filter('hltL3fL1sMu*TkFiltered100*')) + " \ - "4096*filter('hltMu17Photon30IsoCaloIdMuonlegL3Filtered17Q')"), - qualityBitsDoc = cms.string("1 = TrkIsoVVL, 2 = Iso, 4 = OverlapFilter PFTau, 8 = 1mu, 16 = 2mu, 32 = 1mu-1e, 64 = 1mu-1tau, 128 = 3mu, 256 = 2mu-1e, 512 = 1mu-2e, 1024 = 1mu (Mu50), 2048 = 1mu (Mu100), 4096 = 1mu-1photon"), - ), - cms.PSet( - name = cms.string("Tau"), - id = cms.int32(15), - sel = cms.string("type(84) && pt > 5 && coll('*Tau*') && ( filter('*LooseChargedIso*') || filter('*MediumChargedIso*') || filter('*DeepTau*') || filter('*TightChargedIso*') || filter('*TightOOSCPhotons*') || filter('hltL2TauIsoFilter') || filter('*OverlapFilterIsoMu*') || filter('*OverlapFilterIsoEle*') || filter('*L1HLTMatched*') || filter('*Dz02*') || filter('*DoublePFTau*') || filter('*SinglePFTau*') || filter('hlt*SelectedPFTau') || filter('*DisplPFTau*') )"), #All trigger objects from a Tau collection + passing at least one filter - l1seed = cms.string("type(-100)"), l1deltaR = cms.double(0.3), - l2seed = cms.string("type(84) && coll('hltL2TauJetsL1IsoTauSeeded')"), l2deltaR = cms.double(0.3), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string( - "filter('*LooseChargedIso*') + " \ - "2*filter('*MediumChargedIso*') + " \ - "4*filter('*TightChargedIso*') + " \ - "8*filter('*DeepTau*') + " \ - "16*filter('*TightOOSCPhotons*') + " \ - "32*filter('*Hps*') + " \ - "64*filter('hlt*DoublePFTau*TrackPt1*ChargedIsolation*Dz02*') + " \ - "128*filter('hlt*DoublePFTau*DeepTau*L1HLTMatched') + " \ - "256*filter('hlt*OverlapFilterIsoEle*WPTightGsf*PFTau*') + " \ - "512*filter('hlt*OverlapFilterIsoMu*PFTau*') + " \ - "1024*filter('hlt*SelectedPFTau*L1HLTMatched') + " \ - "2048*filter('hlt*DoublePFTau*TrackPt1*ChargedIso*') + " \ - "4096*filter('hlt*DoublePFTau*Track*ChargedIso*AgainstMuon') + " \ - "8192*filter('hltHpsSinglePFTau*HLTMatched') + " \ - "16384*filter('hltHpsOverlapFilterDeepTauDoublePFTau*PFJet*') + " \ - "32768*filter('hlt*Double*ChargedIsoDisplPFTau*Dxy*') + " \ - "65536*filter('*Monitoring') + " \ - "131072*filter('*Reg') + " \ - "262144*filter('*L1Seeded') + " \ - "524288*filter('*1Prong')"), - qualityBitsDoc = cms.string("1 = LooseChargedIso, 2 = MediumChargedIso, 4 = TightChargedIso, 8 = DeepTau, 16 = TightID OOSC photons, 32 = HPS, 64 = charged iso di-tau, 128 = deeptau di-tau, 256 = e-tau, 512 = mu-tau, 1024 = single-tau/tau+MET, 2048 = run 2 VBF+ditau, 4096 = run 3 VBF+ditau, 8192 = run 3 double PF jets + ditau, 16384 = di-tau + PFJet, 32768 = Displaced Tau, 65536 = Monitoring, 131072 = regional paths, 262144 = L1 seeded paths, 524288 = 1 prong tau paths"), - ), - cms.PSet( - name = cms.string("BoostedTau"), - id = cms.int32(1515), - sel = cms.string("type(85) && pt > 120 && coll('hltAK8PFJetsCorrected') && filter('hltAK8SinglePFJets*SoftDropMass40*ParticleNetTauTau')"), - l1seed = cms.string("type(-99)"), l1deltaR = cms.double(0.3), - l2seed = cms.string("type(85) && coll('hltAK8CaloJetsCorrectedIDPassed')"), l2deltaR = cms.double(0.3), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string( - "filter('hltAK8SinglePFJets*SoftDropMass40*ParticleNetTauTau')" - ), - qualityBitsDoc = cms.string("Bit 0 for HLT_AK8PFJetX_SoftDropMass40_PFAK8ParticleNetTauTau0p30"), - ), - cms.PSet( - name = cms.string("Jet"), - id = cms.int32(1), - sel = cms.string("( type(0) || type(85) || type(86) || type(-99) )"), - l1seed = cms.string("type(-99)"), l1deltaR = cms.double(0.3), - l2seed = cms.string("type(85) || type(86) || type(-99)"), l2deltaR = cms.double(0.3), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string( - "1 * filter('hlt4PixelOnlyPFCentralJetTightIDPt20') + " \ - "2 * filter('hlt3PixelOnlyPFCentralJetTightIDPt30') + " \ - "4 * filter('hltPFJetFilterTwoC30') + " \ - "8 * filter('hlt4PFCentralJetTightIDPt30') + " \ - "16 * filter('hlt4PFCentralJetTightIDPt35') + " \ - "32 * filter('hltQuadCentralJet30') + " \ - "64 * filter('hlt2PixelOnlyPFCentralJetTightIDPt40') + " \ - "128 * max(filter('hltL1sTripleJet1008572VBFIorHTTIorDoubleJetCIorSingleJet'), max(filter('hltL1sTripleJet1058576VBFIorHTTIorDoubleJetCIorSingleJet'), filter('hltL1sTripleJetVBFIorHTTIorSingleJet') ) ) + " \ - "256 * filter('hlt3PFCentralJetTightIDPt40') + " \ - "512 * filter('hlt3PFCentralJetTightIDPt45') + " \ - "1024 * max(filter('hltL1sQuadJetC60IorHTT380IorHTT280QuadJetIorHTT300QuadJet'), filter('hltL1sQuadJetC50to60IorHTT280to500IorHTT250to340QuadJet') ) + " \ - "2048 * filter('hltBTagCaloDeepCSVp17Double') + " \ - "4096 * filter('hltPFCentralJetLooseIDQuad30') + " \ - "8192 * filter('hlt1PFCentralJetLooseID75') + " \ - "16384 * filter('hlt2PFCentralJetLooseID60') + " \ - "32768 * filter('hlt3PFCentralJetLooseID45') + " \ - "65536 * filter('hlt4PFCentralJetLooseID40') + " \ - "131072 * filter('hltBTagPFDeepCSV4p5Triple') + " \ - "262144 * filter('hltHpsOverlapFilterDeepTauDoublePFTau*PFJet*') + " \ - "524288 * filter('*CrossCleaned*MediumDeepTauDitauWPPFTau*') + " \ - "1048576 * filter('*CrossCleanedUsingDiJetCorrChecker*') + " \ - "2097152 * filter('hltHpsOverlapFilterDeepTauPFTau*PFJet*') + " \ - "4194304 * filter('hlt2PFCentralJetTightIDPt50') + " \ - "8388608 * filter('hlt1PixelOnlyPFCentralJetTightIDPt60') + " \ - "16777216 * filter('hlt1PFCentralJetTightIDPt70') + " \ - "33554432 * filter('hltBTagPFDeepJet1p5Single') + " \ - "67108864 * filter('hltBTagPFDeepJet4p5Triple') + " \ - "134217728 * max(filter('hltBTagCentralJetPt35PFParticleNet2BTagSum0p65'), max(filter('hltBTagCentralJetPt30PFParticleNet2BTagSum0p65'), filter('hltPFJetTwoC30PFBTagParticleNet2BTagSum0p65') ) ) + " \ - "268435456 * filter('hltBTagPFDeepCSV1p5Single')" - ), - qualityBitsDoc = cms.string( - "Jet bits: bit 0 for hlt4PixelOnlyPFCentralJetTightIDPt20, bit 1 for hlt3PixelOnlyPFCentralJetTightIDPt30, bit 2 for hltPFJetFilterTwoC30, bit 3 for hlt4PFCentralJetTightIDPt30," \ - " bit 4 for hlt4PFCentralJetTightIDPt35, bit 5 for hltQuadCentralJet30, bit 6 for hlt2PixelOnlyPFCentralJetTightIDPt40," \ - " bit 7 for hltL1sTripleJet1008572VBFIorHTTIorDoubleJetCIorSingleJet' or hltL1sTripleJet1058576VBFIorHTTIorDoubleJetCIorSingleJet' or 'hltL1sTripleJetVBFIorHTTIorSingleJet," \ - " bit 8 for hlt3PFCentralJetTightIDPt40, bit 9 for hlt3PFCentralJetTightIDPt45," \ - " bit 10 for hltL1sQuadJetC60IorHTT380IorHTT280QuadJetIorHTT300QuadJet' or 'hltL1sQuadJetC50to60IorHTT280to500IorHTT250to340QuadJet," \ - " bit 11 for hltBTagCaloDeepCSVp17Double, bit 12 for hltPFCentralJetLooseIDQuad30, bit 13 for hlt1PFCentralJetLooseID75," \ - " bit 14 for hlt2PFCentralJetLooseID60, bit 15 for hlt3PFCentralJetLooseID45, bit 16 for hlt4PFCentralJetLooseID40," \ - " bit 17 for hltBTagPFDeepCSV4p5Triple, bit 18 for (Double tau + jet) hltHpsOverlapFilterDeepTauDoublePFTau*PFJet*," \ - " bit 19 for (VBF cross-cleaned from medium deeptau PFTau) *CrossCleaned*MediumDeepTauDitauWPPFTau*," \ - " bit 20 for (VBF cross-cleaned using dijet correlation checker) *CrossCleanedUsingDiJetCorrChecker*," \ - " bit 21 for (monitoring muon + tau + jet) hltHpsOverlapFilterDeepTauPFTau*PFJet*," \ - " bit 22 for hlt2PFCentralJetTightIDPt50, bit 23 for hlt1PixelOnlyPFCentralJetTightIDPt60, bit 24 for hlt1PFCentralJetTightIDPt70," \ - " bit 25 for hltBTagPFDeepJet1p5Single, bit 26 for hltBTagPFDeepJet4p5Triple," \ - " bit 27 for hltBTagCentralJetPt35PFParticleNet2BTagSum0p65 or hltBTagCentralJetPt30PFParticleNet2BTagSum0p65 or hltPFJetTwoC30PFBTagParticleNet2BTagSum0p65," \ - " bit 28 for hltBTagPFDeepCSV1p5Single") - ), - cms.PSet( - name = cms.string("FatJet"), - id = cms.int32(6), - sel = cms.string("type(85) && pt > 120 && coll('hltAK8PFJetsCorrected')"), - l1seed = cms.string("type(-99)"), l1deltaR = cms.double(0.3), - l2seed = cms.string("type(85) && coll('hltAK8CaloJetsCorrectedIDPassed')"), l2deltaR = cms.double(0.3), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string("0"), qualityBitsDoc = cms.string(""), - ), - cms.PSet( - name = cms.string("MET"), - id = cms.int32(2), - sel = cms.string("type(87) && pt > 30 && coll('hltPFMETProducer')"), - l1seed = cms.string("type(-87) && coll('L1ETM')"), l1deltaR = cms.double(9999), - l1seed_2 = cms.string("type(-87) && coll('L1ETMHF')"), l1deltaR_2 = cms.double(9999), - l2seed = cms.string("type( 87) && coll('hltMetClean')"), l2deltaR = cms.double(9999), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string("0"), qualityBitsDoc = cms.string(""), - ), - cms.PSet( - name = cms.string("HT"), - id = cms.int32(3), - sel = cms.string("type(89) || type(-89)"), - l1seed = cms.string("type(-89) && coll('L1HTT')"), l1deltaR = cms.double(9999), - l1seed_2 = cms.string("type(-89) && coll('L1HTTHF')"), l1deltaR_2 = cms.double(9999), - l2seed = cms.string("type(89) && coll('hltHtMhtJet30')"), l2deltaR = cms.double(9999), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string( - "1 * filter('hltL1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet') + " \ - "2 * max(filter('hltL1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF'), filter('hltL1sQuadJetCIorTripleJetVBFIorHTT')) + " \ - "4 * max(filter('hltL1sQuadJetC60IorHTT380IorHTT280QuadJetIorHTT300QuadJet'), filter('hltL1sQuadJetC50to60IorHTT280to500IorHTT250to340QuadJet')) + " \ - "8 * max(filter('hltCaloQuadJet30HT300'), filter('hltCaloQuadJet30HT320')) + " \ - "16 * max(filter('hltPFCentralJetsLooseIDQuad30HT300'), filter('hltPFCentralJetsLooseIDQuad30HT330'))" - ), - qualityBitsDoc = cms.string( - "HT bits: bit 0 for hltL1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet, bit 1 for hltL1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF or hltL1sQuadJetCIorTripleJetVBFIorHTT, " \ - "bit 2 for hltL1sQuadJetC60IorHTT380IorHTT280QuadJetIorHTT300QuadJet or hltL1sQuadJetC50to60IorHTT280to500IorHTT250to340QuadJet, " \ - "bit 3 for hltCaloQuadJet30HT300 or hltCaloQuadJet30HT320, bit 4 for hltPFCentralJetsLooseIDQuad30HT300 or hltPFCentralJetsLooseIDQuad30HT330" - ), - ), - cms.PSet( - name = cms.string("MHT"), - id = cms.int32(4), - sel = cms.string("type(90)"), - l1seed = cms.string("type(-90) && coll('L1HTM')"), l1deltaR = cms.double(9999), - l1seed_2 = cms.string("type(-90) && coll('L1HTMHF')"), l1deltaR_2 = cms.double(9999), - l2seed = cms.string("type(90) && coll('hltHtMhtJet30')"), l2deltaR = cms.double(9999), - skipObjectsNotPassingQualityBits = cms.bool(True), - qualityBits = cms.string( - "1 * max(filter('hltCaloQuadJet30HT300'), filter('hltCaloQuadJet30HT320')) + " \ - "2 * max(filter('hltPFCentralJetsLooseIDQuad30HT300'), filter('hltPFCentralJetsLooseIDQuad30HT330'))" - ), - qualityBitsDoc = cms.string - ( - "MHT bits: bit 0 for hltCaloQuadJet30HT300 or hltCaloQuadJet30HT320, bit 1 for hltPFCentralJetsLooseIDQuad30HT300 or hltPFCentralJetsLooseIDQuad30HT330" - ), - ), - - ), -) - -# ERA-dependent configuration -# Tune filter and collection names to 2016 HLT menus -# FIXME: check non-lepton objects and cross check leptons -selections2016 = copy.deepcopy(triggerObjectTable.selections) -for sel in selections2016: - if sel.name=='Muon': - sel.sel = cms.string("type(83) && pt > 5 && (coll('hlt*L3MuonCandidates') || coll('hlt*TkMuonCands') || coll('hlt*TrkMuonCands'))") - sel.qualityBits = cms.string("filter('*RelTrkIso*Filtered0p4') + 2*filter('hltL3cr*IsoFiltered0p09') + 4*filter('*OverlapFilter*IsoMu*PFTau*') + 8*filter('hltL3f*IsoFiltered0p09') + 1024*max(filter('hltL3fL1sMu*L3Filtered50*'),filter('hltL3fL1sMu*TkFiltered50*'))") - sel.qualityBitsDoc = cms.string("1 = TrkIsoVVL, 2 = Iso, 4 = OverlapFilter PFTau, 8 = IsoTkMu, 1024 = 1mu (Mu50)") - elif sel.name=='Tau': - sel.sel = cms.string("type(84) && pt > 5 && coll('*Tau*') && ( filter('*LooseIso*') || filter('*MediumIso*') || filter('*MediumComb*Iso*') || filter('hltL2TauIsoFilter') || filter('*OverlapFilter*IsoMu*') || filter('*OverlapFilter*IsoEle*') || filter('*L1HLTMatched*') || filter('*Dz02*') )") - sel.qualityBits = cms.string("(filter('*LooseIso*')-filter('*VLooseIso*'))+2*filter('*Medium*Iso*')+4*filter('*VLooseIso*')+8*0+16*filter('hltL2TauIsoFilter')+32*filter('*OverlapFilter*IsoMu*')+64*filter('*OverlapFilter*IsoEle*')+128*filter('*L1HLTMatched*')+256*filter('*Dz02*')") - sel.qualityBitsDoc = cms.string("1 = LooseIso, 2 = Medium(Comb)Iso, 4 = VLooseIso, 8 = None, 16 = L2p5 pixel iso, 32 = OverlapFilter IsoMu, 64 = OverlapFilter IsoEle, 128 = L1-HLT matched, 256 = Dz") - -run2_HLTconditions_2016.toModify( - triggerObjectTable, - selections = selections2016 -) - -prefiringweight = cms.EDProducer('L1PrefiringWeightProducer', - TheMuons = cms.InputTag('slimmedMuons'), - ThePhotons = cms.InputTag('slimmedPhotons'), - TheJets = cms.InputTag('slimmedJets'), - L1Maps = cms.string('L1PrefiringMaps.root'), - L1MuonParametrizations = cms.string('L1MuonPrefiringParametriations.root'), - DataEraECAL = cms.string('2017BtoF'), - DataEraMuon = cms.string('2016'), - UseJetEMPt = cms.bool(False), - PrefiringRateSystematicUnctyECAL = cms.double(0.2), - PrefiringRateSystematicUnctyMuon = cms.double(0.2), - JetMaxMuonFraction = cms.double(0.5), - mightGet = cms.optional.untracked.vstring -) -#Next lines are for UL2016 maps -(run2_muon_2016 & tracker_apv_vfp30_2016).toModify( prefiringweight, DataEraECAL = cms.string("UL2016preVFP"), DataEraMuon = cms.string("2016preVFP")) -(run2_muon_2016 & ~tracker_apv_vfp30_2016).toModify( prefiringweight, DataEraECAL = cms.string("UL2016postVFP"), DataEraMuon = cms.string("2016postVFP")) -#Next line is for UL2017 maps -run2_jme_2017.toModify( prefiringweight, DataEraECAL = cms.string("UL2017BtoF"), DataEraMuon = cms.string("20172018")) -#Next line is for UL2018 maps -run2_muon_2018.toModify( prefiringweight, DataEraECAL = cms.string("None"), DataEraMuon = cms.string("20172018")) - - -l1PreFiringEventWeightTable = cms.EDProducer("GlobalVariablesTableProducer", - name = cms.string("L1PreFiringWeight"), - variables = cms.PSet( - Nom = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProb"), "float", doc = "L1 pre-firing event correction weight (1-probability)", precision=8), - Up = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbUp"), "float", doc = "L1 pre-firing event correction weight (1-probability), up var.", precision=8), - Dn = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbDown"), "float", doc = "L1 pre-firing event correction weight (1-probability), down var.", precision=8), - Muon_Nom = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbMuon"), "float", doc = "Muon L1 pre-firing event correction weight (1-probability)", precision=8), - Muon_SystUp = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbMuonSystUp"), "float", doc = "Muon L1 pre-firing event correction weight (1-probability), up var. syst.", precision=8), - Muon_SystDn = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbMuonSystDown"), "float", doc = "Muon L1 pre-firing event correction weight (1-probability), down var. syst.", precision=8), - Muon_StatUp = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbMuonStatUp"), "float", doc = "Muon L1 pre-firing event correction weight (1-probability), up var. stat.", precision=8), - Muon_StatDn = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbMuonStatDown"), "float", doc = "Muon L1 pre-firing event correction weight (1-probability), down var. stat.", precision=8), - ECAL_Nom = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbECAL"), "float", doc = "ECAL L1 pre-firing event correction weight (1-probability)", precision=8), - ECAL_Up = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbECALUp"), "float", doc = "ECAL L1 pre-firing event correction weight (1-probability), up var.", precision=8), - ECAL_Dn = ExtVar(cms.InputTag("prefiringweight:nonPrefiringProbECALDown"), "float", doc = "ECAL L1 pre-firing event correction weight (1-probability), down var.", precision=8), - ) -) - -l1bits=cms.EDProducer("L1TriggerResultsConverter", - src=cms.InputTag("gtStage2Digis"), - legacyL1=cms.bool(False), - storeUnprefireableBit=cms.bool(True), - src_ext=cms.InputTag("simGtExtUnprefireable")) - -triggerObjectTablesTask = cms.Task( unpackedPatTrigger,triggerObjectTable,l1bits) - -_triggerObjectTablesTask_withL1PreFiring = triggerObjectTablesTask.copy() -_triggerObjectTablesTask_withL1PreFiring.add(prefiringweight,l1PreFiringEventWeightTable) -(run2_HLTconditions_2016 | run2_HLTconditions_2017 | run2_HLTconditions_2018).toReplaceWith(triggerObjectTablesTask,_triggerObjectTablesTask_withL1PreFiring) diff --git a/PhysicsTools/NanoAOD/python/V10/ttbarCategorization_cff.py b/PhysicsTools/NanoAOD/python/V10/ttbarCategorization_cff.py deleted file mode 100644 index ae054f05ae283..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/ttbarCategorization_cff.py +++ /dev/null @@ -1,54 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import * - - -##################### User floats producers, selectors ########################## - -matchGenBHadron = cms.EDProducer("GenHFHadronMatcher", - flavour = cms.int32(5), - genParticles = cms.InputTag("prunedGenParticles"), - jetFlavourInfos = cms.InputTag("slimmedGenJetsFlavourInfos"), - noBBbarResonances = cms.bool(False), - onlyJetClusteredHadrons = cms.bool(True) -) - -## Plugin for analysing C hadrons -# MUST use the same particle collection as in selectedHadronsAndPartons -matchGenCHadron = cms.EDProducer("GenHFHadronMatcher", - flavour = cms.int32(4), - genParticles = cms.InputTag("prunedGenParticles"), - jetFlavourInfos = cms.InputTag("slimmedGenJetsFlavourInfos"), - noBBbarResonances = cms.bool(False), - onlyJetClusteredHadrons = cms.bool(True) -) - -## Producer for ttbar categorisation ID -categorizeGenTtbar = cms.EDProducer("GenTtbarCategorizer", - genBHadFlavour = cms.InputTag("matchGenBHadron","genBHadFlavour"), - genBHadFromTopWeakDecay = cms.InputTag("matchGenBHadron","genBHadFromTopWeakDecay"), - genBHadIndex = cms.InputTag("matchGenBHadron","genBHadIndex"), - genBHadJetIndex = cms.InputTag("matchGenBHadron","genBHadJetIndex"), - genBHadLeptonHadronIndex = cms.InputTag("matchGenBHadron","genBHadLeptonHadronIndex"), - genBHadLeptonViaTau = cms.InputTag("matchGenBHadron","genBHadLeptonViaTau"), - genBHadPlusMothers = cms.InputTag("matchGenBHadron","genBHadPlusMothers"), - genBHadPlusMothersIndices = cms.InputTag("matchGenBHadron","genBHadPlusMothersIndices"), - genCHadBHadronId = cms.InputTag("matchGenCHadron","genCHadBHadronId"), - genCHadFlavour = cms.InputTag("matchGenCHadron","genCHadFlavour"), - genCHadFromTopWeakDecay = cms.InputTag("matchGenCHadron","genCHadFromTopWeakDecay"), - genCHadJetIndex = cms.InputTag("matchGenCHadron","genCHadJetIndex"), - genJetAbsEtaMax = cms.double(2.4), - genJetPtMin = cms.double(20), - genJets = cms.InputTag("slimmedGenJets"), - mightGet = cms.optional.untracked.vstring -) - - -##################### Tables for final output and docs ########################## -ttbarCategoryTable = cms.EDProducer("GlobalVariablesTableProducer", - variables = cms.PSet( - genTtbarId = ExtVar( cms.InputTag("categorizeGenTtbar:genTtbarId"), "int", doc = "ttbar categorization") - ) -) - -ttbarCategoryTableTask = cms.Task(ttbarCategoryTable) -ttbarCatMCProducersTask = cms.Task(matchGenBHadron,matchGenCHadron,categorizeGenTtbar) diff --git a/PhysicsTools/NanoAOD/python/V10/vertices_cff.py b/PhysicsTools/NanoAOD/python/V10/vertices_cff.py deleted file mode 100644 index 971c1e76c4c9c..0000000000000 --- a/PhysicsTools/NanoAOD/python/V10/vertices_cff.py +++ /dev/null @@ -1,45 +0,0 @@ -import FWCore.ParameterSet.Config as cms -from PhysicsTools.NanoAOD.common_cff import Var,P4Vars - - - -##################### User floats producers, selectors ########################## - - -##################### Tables for final output and docs ########################## -vertexTable = cms.EDProducer("VertexTableProducer", - pvSrc = cms.InputTag("offlineSlimmedPrimaryVertices"), - goodPvCut = cms.string("!isFake && ndof > 4 && abs(z) <= 24 && position.Rho <= 2"), - svSrc = cms.InputTag("slimmedSecondaryVertices"), - svCut = cms.string(""), - dlenMin = cms.double(0), - dlenSigMin = cms.double(3), - pvName = cms.string("PV"), - svName = cms.string("SV"), - svDoc = cms.string("secondary vertices from IVF algorithm"), -) - -svCandidateTable = cms.EDProducer("SimpleCandidateFlatTableProducer", - src = cms.InputTag("vertexTable"), - cut = cms.string(""), #DO NOT further cut here, use vertexTable.svCut - name = cms.string("SV"), - singleton = cms.bool(False), # the number of entries is variable - extension = cms.bool(True), - variables = cms.PSet(P4Vars, - x = Var("position().x()", float, doc = "secondary vertex X position, in cm",precision=10), - y = Var("position().y()", float, doc = "secondary vertex Y position, in cm",precision=10), - z = Var("position().z()", float, doc = "secondary vertex Z position, in cm",precision=14), - ndof = Var("vertexNdof()", float, doc = "number of degrees of freedom",precision=8), - chi2 = Var("vertexNormalizedChi2()", float, doc = "reduced chi2, i.e. chi/ndof",precision=8), - ntracks = Var("numberOfDaughters()", "uint8", doc = "number of tracks"), - ), -) -svCandidateTable.variables.pt.precision=10 -svCandidateTable.variables.phi.precision=12 - - -#before cross linking -vertexTask = cms.Task() -#after cross linkining -vertexTablesTask = cms.Task( vertexTable, svCandidateTable ) - diff --git a/PhysicsTools/NanoAOD/python/triggerObjects_cff.py b/PhysicsTools/NanoAOD/python/triggerObjects_cff.py index fb53a05133a9d..70e22558b4790 100644 --- a/PhysicsTools/NanoAOD/python/triggerObjects_cff.py +++ b/PhysicsTools/NanoAOD/python/triggerObjects_cff.py @@ -50,9 +50,9 @@ def AND(tokens): l1Jet = cms.InputTag("caloStage2Digis","Jet"), l1Muon = cms.InputTag("gmtStage2Digis","Muon"), l1Tau = cms.InputTag("caloStage2Digis","Tau"), - selections = cms.VPSet( - cms.PSet( - name = cms.string("Electron (PixelMatched e/gamma)"), # this selects also photons for the moment! + selections = cms.PSet( + Electron = cms.PSet( + doc = cms.string("PixelMatched e/gamma"), # this may also select photons! id = cms.int32(11), sel = cms.string("type(92) && pt > 7 && coll('hltEgammaCandidates') && filter('*PixelMatchFilter')"), l1seed = cms.string("type(-98)"), l1deltaR = cms.double(0.3), @@ -75,8 +75,7 @@ def AND(tokens): mksel(["hltEG175HEFilter","hltEG200HEFilter"],"1e (Photon175_OR_Photon200)"), ) ), - cms.PSet( - name = cms.string("Photon"), + Photon = cms.PSet( id = cms.int32(22), sel = cms.string("type(92) && pt > 20 && coll('hltEgammaCandidates')"), l1seed = cms.string("type(-98)"), l1deltaR = cms.double(0.3), @@ -97,8 +96,7 @@ def AND(tokens): mksel("filter('hltMu17Photon30IsoCaloIdPhotonlegTrackIsoFilter')","1mu-1photon") ) ), - cms.PSet( - name = cms.string("Muon"), + Muon = cms.PSet( id = cms.int32(13), sel = cms.string("type(83) && pt > 5 && (coll('hltIterL3MuonCandidates') || (pt > 45 && coll('hltHighPtTkMuonCands')) || (pt > 95 && coll('hltOldL3MuonCandidates')))"), l1seed = cms.string("type(-81)"), l1deltaR = cms.double(0.5), @@ -120,8 +118,7 @@ def AND(tokens): mksel("filter('hltMu17Photon30IsoCaloIdMuonlegL3Filtered17Q')","1mu-1photon") ) ), - cms.PSet( - name = cms.string("Tau"), + Tau = cms.PSet( id = cms.int32(15), sel = cms.string("type(84) && pt > 5 && coll('*Tau*') && ( filter('*LooseChargedIso*') || filter('*MediumChargedIso*') || filter('*DeepTau*') || filter('*TightChargedIso*') || filter('*TightOOSCPhotons*') || filter('hltL2TauIsoFilter') || filter('*OverlapFilterIsoMu*') || filter('*OverlapFilterIsoEle*') || filter('*L1HLTMatched*') || filter('*Dz02*') || filter('*DoublePFTau*') || filter('*SinglePFTau*') || filter('hlt*SelectedPFTau') || filter('*DisplPFTau*') )"), #All trigger objects from a Tau collection + passing at least one filter l1seed = cms.string("type(-100)"), l1deltaR = cms.double(0.3), @@ -150,8 +147,7 @@ def AND(tokens): mksel("filter('*1Prong')","1 prong tau paths") ) ), - cms.PSet( - name = cms.string("BoostedTau"), + BoostedTau = cms.PSet( id = cms.int32(1515), sel = cms.string("type(85) && pt > 120 && coll('hltAK8PFJetsCorrected') && filter('hltAK8SinglePFJets*SoftDropMass40*ParticleNetTauTau')"), l1seed = cms.string("type(-99)"), l1deltaR = cms.double(0.3), @@ -161,47 +157,45 @@ def AND(tokens): mksel("filter('hltAK8SinglePFJets*SoftDropMass40*ParticleNetTauTau')","HLT_AK8PFJetX_SoftDropMass40_PFAK8ParticleNetTauTau0p30") ) ), - cms.PSet( - name = cms.string("Jet"), + Jet = cms.PSet( id = cms.int32(1), sel = cms.string("( type(0) || type(85) || type(86) || type(-99) )"), l1seed = cms.string("type(-99)"), l1deltaR = cms.double(0.3), l2seed = cms.string("type(85) || type(86) || type(-99)"), l2deltaR = cms.double(0.3), skipObjectsNotPassingQualityBits = cms.bool(True), qualityBits = cms.VPSet( - mksel(["hlt4PixelOnlyPFCentralJetTightIDPt20"]), - mksel(["hlt3PixelOnlyPFCentralJetTightIDPt30"]), - mksel(["hltPFJetFilterTwoC30"]), - mksel(["hlt4PFCentralJetTightIDPt30"]), - mksel(["hlt4PFCentralJetTightIDPt35"]), - mksel(["hltQuadCentralJet30"]), - mksel(["hlt2PixelOnlyPFCentralJetTightIDPt40"]), - mksel(["hltL1sTripleJet1008572VBFIorHTTIorDoubleJetCIorSingleJet","hltL1sTripleJet1058576VBFIorHTTIorDoubleJetCIorSingleJet","hltL1sTripleJetVBFIorHTTIorSingleJet"]), - mksel(["hlt3PFCentralJetTightIDPt40"]), - mksel(["hlt3PFCentralJetTightIDPt45"]), - mksel(["hltL1sQuadJetC60IorHTT380IorHTT280QuadJetIorHTT300QuadJet","hltL1sQuadJetC50to60IorHTT280to500IorHTT250to340QuadJet"]), - mksel(["hltBTagCaloDeepCSVp17Double"]), - mksel(["hltPFCentralJetLooseIDQuad30"]), - mksel(["hlt1PFCentralJetLooseID75"]), - mksel(["hlt2PFCentralJetLooseID60"]), - mksel(["hlt3PFCentralJetLooseID45"]), - mksel(["hlt4PFCentralJetLooseID40"]), - mksel(["hltBTagPFDeepCSV4p5Triple"]), - mksel("filter('hltHpsOverlapFilterDeepTauDoublePFTau*PFJet*')","(Double tau + jet) hltHpsOverlapFilterDeepTauDoublePFTau*PFJet*"), - mksel("filter('*CrossCleaned*MediumDeepTauDitauWPPFTau*')","(VBF cross-cleaned from medium deeptau PFTau) *CrossCleaned*MediumDeepTauDitauWPPFTau*"), - mksel("filter('*CrossCleanedUsingDiJetCorrChecker*')","(VBF cross-cleaned using dijet correlation checker) *CrossCleanedUsingDiJetCorrChecker*"), - mksel("filter('hltHpsOverlapFilterDeepTauPFTau*PFJet*')","(monitoring muon + tau + jet) hltHpsOverlapFilterDeepTauPFTau*PFJet*"), - mksel(["hlt2PFCentralJetTightIDPt50"]), - mksel(["hlt1PixelOnlyPFCentralJetTightIDPt60"]), - mksel(["hlt1PFCentralJetTightIDPt70"]), - mksel(["hltBTagPFDeepJet1p5Single"]), - mksel(["hltBTagPFDeepJet4p5Triple"]), - mksel(["hltBTagCentralJetPt35PFParticleNet2BTagSum0p65","hltBTagCentralJetPt30PFParticleNet2BTagSum0p65","hltPFJetTwoC30PFBTagParticleNet2BTagSum0p65"]), - mksel(["hltBTagPFDeepCSV1p5Single"]) + mksel(["hlt4PixelOnlyPFCentralJetTightIDPt20"]), # 0 + mksel(["hlt3PixelOnlyPFCentralJetTightIDPt30"]), # 1 + mksel(["hltPFJetFilterTwoC30"]), # 2 + mksel(["hlt4PFCentralJetTightIDPt30"]), # 3 + mksel(["hlt4PFCentralJetTightIDPt35"]), # 4 + mksel(["hltQuadCentralJet30"]), # 5 + mksel(["hlt2PixelOnlyPFCentralJetTightIDPt40"]), # 6 + mksel(["hltL1sTripleJet1008572VBFIorHTTIorDoubleJetCIorSingleJet","hltL1sTripleJet1058576VBFIorHTTIorDoubleJetCIorSingleJet","hltL1sTripleJetVBFIorHTTIorSingleJet"]), # 7 + mksel(["hlt3PFCentralJetTightIDPt40"]), # 8 + mksel(["hlt3PFCentralJetTightIDPt45"]), # 9 + mksel(["hltL1sQuadJetC60IorHTT380IorHTT280QuadJetIorHTT300QuadJet","hltL1sQuadJetC50to60IorHTT280to500IorHTT250to340QuadJet"]), # 10 + mksel(["hltBTagCaloDeepCSVp17Double"]), # 11 + mksel(["hltPFCentralJetLooseIDQuad30"]), # 12 + mksel(["hlt1PFCentralJetLooseID75"]), # 13 + mksel(["hlt2PFCentralJetLooseID60"]), # 14 + mksel(["hlt3PFCentralJetLooseID45"]), # 15 + mksel(["hlt4PFCentralJetLooseID40"]), # 16 + mksel(["hltBTagPFDeepCSV4p5Triple"]), # 17 + mksel("filter('hltHpsOverlapFilterDeepTauDoublePFTau*PFJet*')","(Double tau + jet) hltHpsOverlapFilterDeepTauDoublePFTau*PFJet*"), # 18 + mksel("filter('*CrossCleaned*MediumDeepTauDitauWPPFTau*')","(VBF cross-cleaned from medium deeptau PFTau) *CrossCleaned*MediumDeepTauDitauWPPFTau*"), # 19 + mksel("filter('*CrossCleanedUsingDiJetCorrChecker*')","(VBF cross-cleaned using dijet correlation checker) *CrossCleanedUsingDiJetCorrChecker*"), # 20 + mksel("filter('hltHpsOverlapFilterDeepTauPFTau*PFJet*')","(monitoring muon + tau + jet) hltHpsOverlapFilterDeepTauPFTau*PFJet*"), # 21 + mksel(["hlt2PFCentralJetTightIDPt50"]), # 22 + mksel(["hlt1PixelOnlyPFCentralJetTightIDPt60"]), # 23 + mksel(["hlt1PFCentralJetTightIDPt70"]), # 24 + mksel(["hltBTagPFDeepJet1p5Single"]), # 25 + mksel(["hltBTagPFDeepJet4p5Triple"]), # 26 + mksel(["hltBTagCentralJetPt35PFParticleNet2BTagSum0p65","hltBTagCentralJetPt30PFParticleNet2BTagSum0p65","hltPFJetTwoC30PFBTagParticleNet2BTagSum0p65"]), # 27 + mksel(["hltBTagPFDeepCSV1p5Single"]) # 28 ), ), - cms.PSet( - name = cms.string("FatJet"), + FatJet = cms.PSet( id = cms.int32(6), sel = cms.string("type(85) && pt > 120 && coll('hltAK8PFJetsCorrected')"), l1seed = cms.string("type(-99)"), l1deltaR = cms.double(0.3), @@ -209,8 +203,7 @@ def AND(tokens): skipObjectsNotPassingQualityBits = cms.bool(True), qualityBits = cms.VPSet() ), - cms.PSet( - name = cms.string("MET"), + MET = cms.PSet( id = cms.int32(2), sel = cms.string("type(87) && pt > 30 && coll('hltPFMETProducer')"), l1seed = cms.string("type(-87) && coll('L1ETM')"), l1deltaR = cms.double(9999), @@ -219,8 +212,7 @@ def AND(tokens): skipObjectsNotPassingQualityBits = cms.bool(True), qualityBits = cms.VPSet() ), - cms.PSet( - name = cms.string("HT"), + HT = cms.PSet( id = cms.int32(3), sel = cms.string("type(89) || type(-89)"), l1seed = cms.string("type(-89) && coll('L1HTT')"), l1deltaR = cms.double(9999), @@ -235,8 +227,7 @@ def AND(tokens): mksel(["hltPFCentralJetsLooseIDQuad30HT300","hltPFCentralJetsLooseIDQuad30HT330"]) ), ), - cms.PSet( - name = cms.string("MHT"), + MHT = cms.PSet( id = cms.int32(4), sel = cms.string("type(90)"), l1seed = cms.string("type(-90) && coll('L1HTM')"), l1deltaR = cms.double(9999), @@ -254,36 +245,70 @@ def AND(tokens): # ERA-dependent configuration # Tune filter and collection names to 2016 HLT menus # FIXME: check non-lepton objects and cross check leptons -selections2016 = copy.deepcopy(triggerObjectTable.selections) -for sel in selections2016: - if sel.name=='Muon': - sel.sel = cms.string("type(83) && pt > 5 && (coll('hlt*L3MuonCandidates') || coll('hlt*TkMuonCands') || coll('hlt*TrkMuonCands'))") - sel.qualityBits = cms.VPSet( +run2_HLTconditions_2016.toModify( + triggerObjectTable.selections.Muon, + sel = "type(83) && pt > 5 && (coll('hlt*L3MuonCandidates') || coll('hlt*TkMuonCands') || coll('hlt*TrkMuonCands'))", + qualityBits = cms.VPSet( mksel("filter('*RelTrkIso*Filtered0p4')","TrkIsoVVL"), mksel("filter('hltL3cr*IsoFiltered0p09')","Iso"), mksel("filter('*OverlapFilter*IsoMu*PFTau*')","OverlapFilter PFTau"), mksel("filter('hltL3f*IsoFiltered0p09')","IsoTkMu"), mksel(["hltL3fL1sMu*L3Filtered50*","hltL3fL1sMu*TkFiltered50*"],"1mu (Mu50)", bit=10) - ) - elif sel.name=='Tau': - sel.sel = cms.string("type(84) && pt > 5 && coll('*Tau*') && ( filter('*LooseIso*') || filter('*MediumIso*') || filter('*MediumComb*Iso*') || filter('hltL2TauIsoFilter') || filter('*OverlapFilter*IsoMu*') || filter('*OverlapFilter*IsoEle*') || filter('*L1HLTMatched*') || filter('*Dz02*') )") - sel.qualityBits = cms.VPSet( - mksel("(filter('*LooseIso*')-filter('*VLooseIso*'))","LooseIso"), - mksel("filter('*Medium*Iso*')","Medium(Comb)Iso"), - mksel("filter('*VLooseIso*')","VLooseIso"), - mksel("0","None"), - mksel("filter('hltL2TauIsoFilter')","L2p5 pixel iso"), - mksel("filter('*OverlapFilter*IsoMu*')","OverlapFilter IsoMu"), - mksel("filter('*OverlapFilter*IsoEle*')","OverlapFilter IsoEle"), - mksel("filter('*L1HLTMatched*')","L1-HLT matched"), - mksel("filter('*Dz02*')","Dz") - ) - -run2_HLTconditions_2016.toModify( - triggerObjectTable, - selections = selections2016 + ) +).toModify( + triggerObjectTable.selections.Tau, + sel = "type(84) && pt > 5 && coll('*Tau*') && ( filter('*LooseIso*') || filter('*MediumIso*') || filter('*MediumComb*Iso*') || filter('hltL2TauIsoFilter') || filter('*OverlapFilter*IsoMu*') || filter('*OverlapFilter*IsoEle*') || filter('*L1HLTMatched*') || filter('*Dz02*') )", + qualityBits = cms.VPSet( + mksel("(filter('*LooseIso*')-filter('*VLooseIso*'))","LooseIso"), + mksel("filter('*Medium*Iso*')","Medium(Comb)Iso"), + mksel("filter('*VLooseIso*')","VLooseIso"), + mksel("0","None"), + mksel("filter('hltL2TauIsoFilter')","L2p5 pixel iso"), + mksel("filter('*OverlapFilter*IsoMu*')","OverlapFilter IsoMu"), + mksel("filter('*OverlapFilter*IsoEle*')","OverlapFilter IsoEle"), + mksel("filter('*L1HLTMatched*')","L1-HLT matched"), + mksel("filter('*Dz02*')","Dz") + ) ) +_run2_HLTconditions = run2_HLTconditions_2016 | run2_HLTconditions_2017 | run2_HLTconditions_2018 + +_run2_2016_jet_filters = [ + mksel(["*CrossCleaned*LooseChargedIsoPFTau*"], "VBF cross-cleaned from loose iso PFTau"), # 0 + mksel(["hltBTagCaloCSVp087Triple"], "hltBTagCaloCSVp087Triple"), # 1 + mksel(["hltDoubleCentralJet90"], "hltDoubleCentralJet90"), # 2 + mksel(["hltDoublePFCentralJetLooseID90"], "hltDoublePFCentralJetLooseID90"), # 3 + mksel(["hltL1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet"], "hltL1sTripleJetVBFIorHTTIorDoubleJetCIorSingleJet"), # 4 + mksel(["hltQuadCentralJet30"], "hltQuadCentralJet30"), # 5 + mksel(["hltQuadPFCentralJetLooseID30"], "hltQuadPFCentralJetLooseID30"), # 6 + mksel(["hltL1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF", "hltL1sQuadJetCIorTripleJetVBFIorHTT"], "hltL1sQuadJetC50IorQuadJetC60IorHTT280IorHTT300IorHTT320IorTripleJet846848VBFIorTripleJet887256VBFIorTripleJet927664VBF or hltL1sQuadJetCIorTripleJetVBFIorHTT"), # 7 + mksel(["hltQuadCentralJet45"], "hltQuadCentralJet45"), # 8 + mksel(["hltQuadPFCentralJetLooseID45"], "hltQuadPFCentralJetLooseID45"), # 9 + mksel(["hltL1sQuadJetC60IorHTT380IorHTT280QuadJetIorHTT300QuadJet", "hltL1sQuadJetC50to60IorHTT280to500IorHTT250to340QuadJet"], "hltL1sQuadJetC60IorHTT380IorHTT280QuadJetIorHTT300QuadJet or hltL1sQuadJetC50to60IorHTT280to500IorHTT250to340QuadJet"), # 10 + mksel(["hltBTagCaloCSVp05Double", "hltBTagCaloDeepCSVp17Double"], "hltBTagCaloCSVp05Double or hltBTagCaloDeepCSVp17Double"), # 11 + mksel(["hltPFCentralJetLooseIDQuad30"], "hltPFCentralJetLooseIDQuad30"), # 12 + mksel(["hlt1PFCentralJetLooseID75"], "hlt1PFCentralJetLooseID75"), # 13 + mksel(["hlt2PFCentralJetLooseID60"], "hlt2PFCentralJetLooseID60"), # 14 + mksel(["hlt3PFCentralJetLooseID45"], "hlt3PFCentralJetLooseID45"), # 15 + mksel(["hlt4PFCentralJetLooseID40"], "hlt4PFCentralJetLooseID40"), # 16 + mksel(["hltBTagPFCSVp070Triple", "hltBTagPFDeepCSVp24Triple", "hltBTagPFDeepCSV4p5Triple"], "hltBTagPFCSVp070Triple or hltBTagPFDeepCSVp24Triple or hltBTagPFDeepCSV4p5Triple"), # 17 + mksel(["hltHpsOverlapFilterDeepTauDoublePFTau*PFJet*"], "Double tau + jet"), # 18 + mksel(["*CrossCleaned*MediumDeepTauDitauWPPFTau*"], "VBF cross-cleaned from medium deeptau PFTau"), # 19 + mksel(["*CrossCleanedUsingDiJetCorrChecker*"], "VBF cross-cleaned using dijet correlation checker"), # 20 + mksel(["hltHpsOverlapFilterDeepTauPFTau*PFJet*"], "monitoring muon + tau + jet"), # 21 +] +run2_HLTconditions_2016.toModify(triggerObjectTable.selections.Jet, qualityBits = cms.VPSet(_run2_2016_jet_filters)) + +_run2_2017_jet_filters = copy.deepcopy(_run2_2016_jet_filters) +_run2_2017_jet_filters[7] = mksel(["hltL1sTripleJet1008572VBFIorHTTIorDoubleJetCIorSingleJet","hltL1sTripleJet1058576VBFIorHTTIorDoubleJetCIorSingleJet","hltL1sTripleJetVBFIorHTTIorSingleJet"]) +run2_HLTconditions_2017.toModify(triggerObjectTable.selections.Jet, qualityBits = cms.VPSet(_run2_2017_jet_filters)) + +_run2_2018_jet_filters = copy.deepcopy(_run2_2017_jet_filters) +_run2_2018_jet_filters[2] = mksel(["hltPFJetFilterTwoC30"]) +_run2_2018_jet_filters.append(mksel(["hltBTagPFDeepCSV1p5Single"])) # 22 +run2_HLTconditions_2018.toModify(triggerObjectTable.selections.Jet, qualityBits = cms.VPSet(_run2_2018_jet_filters)) + + from PhysicsTools.PatUtils.L1PrefiringWeightProducer_cff import prefiringweight #Next lines are for UL2016 maps (run2_muon_2016 & tracker_apv_vfp30_2016).toModify( @@ -334,6 +359,6 @@ def AND(tokens): triggerObjectTablesTask = cms.Task( unpackedPatTrigger,triggerObjectTable,l1bits) -(run2_HLTconditions_2016 | run2_HLTconditions_2017 | run2_HLTconditions_2018).toReplaceWith( +_run2_HLTconditions.toReplaceWith( triggerObjectTablesTask, triggerObjectTablesTask.copyAndAdd(prefiringweight,l1PreFiringEventWeightTable) )