diff --git a/Configuration/Eras/python/Era_Run3_cff.py b/Configuration/Eras/python/Era_Run3_cff.py index 15a53cd1a901f..dbe4c85021c9c 100644 --- a/Configuration/Eras/python/Era_Run3_cff.py +++ b/Configuration/Eras/python/Era_Run3_cff.py @@ -12,11 +12,13 @@ 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_muon_2018_cff import run2_muon_2018 from Configuration.Eras.Modifier_run2_HLTconditions_2018_cff import run2_HLTconditions_2018 from Configuration.Eras.Modifier_run3_RPC_cff import run3_RPC from Configuration.Eras.Modifier_run3_ecal_cff import run3_ecal from Configuration.Eras.Modifier_hcalPfCutsFromDB_cff import hcalPfCutsFromDB +from Configuration.Eras.Modifier_run3_muon_cff import run3_muon -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, run3_ecal, hcalPfCutsFromDB) +Run3 = cms.ModifierChain(Run2_2018.copyAndExclude([run2_GEM_2017, ctpps_2018, run2_egamma_2018, run2_HLTconditions_2018, run2_muon_2018]), + run3_common, run3_egamma, run3_GEM, run3_HB, run3_HFSL, stage2L1Trigger_2021, ctpps_2022, dd4hep, run3_RPC, run3_ecal, hcalPfCutsFromDB, run3_muon) diff --git a/Configuration/Eras/python/Modifier_run3_muon_cff.py b/Configuration/Eras/python/Modifier_run3_muon_cff.py new file mode 100644 index 0000000000000..e25845e668b45 --- /dev/null +++ b/Configuration/Eras/python/Modifier_run3_muon_cff.py @@ -0,0 +1,3 @@ +import FWCore.ParameterSet.Config as cms + +run3_muon=cms.Modifier() diff --git a/PhysicsTools/NanoAOD/python/electrons_cff.py b/PhysicsTools/NanoAOD/python/electrons_cff.py index e2dd3f0d2dcc6..25c2cfff01bbf 100644 --- a/PhysicsTools/NanoAOD/python/electrons_cff.py +++ b/PhysicsTools/NanoAOD/python/electrons_cff.py @@ -263,11 +263,11 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): ) #################################################finalElectrons##################### -################################################electronMVATTH##################### -electronMVATTH= cms.EDProducer("EleBaseMVAValueMapProducer", +################################################electronPROMPTMVA##################### +electronPROMPTMVA= cms.EDProducer("EleBaseMVAValueMapProducer", src = cms.InputTag("linkedObjects","electrons"), weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/el_BDTG_2017.weights.xml"), - name = cms.string("electronMVATTH"), + name = cms.string("electronPROMPTMVA"), 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( @@ -287,10 +287,10 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): ) ) run2_egamma_2016.toModify( - electronMVATTH, + electronPROMPTMVA, weightFile = "PhysicsTools/NanoAOD/data/el_BDTG_2016.weights.xml", ) -################################################electronMVATTH end##################### +################################################electronPROMPTMVA end##################### ################################################electronTable defn ##################### electronTable = simpleCandidateFlatTableProducer.clone( @@ -359,7 +359,7 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): 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), + promptMVA = ExtVar(cms.InputTag("electronPROMPTMVA"),float, doc="Prompt MVA lepton ID score. Corresponds to the previous mvaTTH",precision=14), fsrPhotonIdx = ExtVar(cms.InputTag("leptonFSRphotons:eleFsrIndex"), "int16", doc="Index of the lowest-dR/ET2 among associated FSR photons"), ), ) @@ -442,7 +442,7 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): ) electronTask = cms.Task(bitmapVIDForEle,bitmapVIDForEleFall17V2,bitmapVIDForEleHEEP,isoForEle,isoForEleFall17V2,ptRatioRelForEle,seedGainEle,calibratedPatElectronsNano,slimmedElectronsWithUserData,finalElectrons) -electronTablesTask = cms.Task(electronMVATTH, electronTable) +electronTablesTask = cms.Task(electronPROMPTMVA, electronTable) electronMCTask = cms.Task(tautaggerForMatching, matchingElecPhoton, electronsMCMatchForTable, electronsMCMatchForTableAlt, electronMCTable) _electronTask_Run2 = electronTask.copy() diff --git a/PhysicsTools/NanoAOD/python/muons_cff.py b/PhysicsTools/NanoAOD/python/muons_cff.py index c7b6cefc3c345..3c1a75fff74eb 100644 --- a/PhysicsTools/NanoAOD/python/muons_cff.py +++ b/PhysicsTools/NanoAOD/python/muons_cff.py @@ -86,39 +86,76 @@ cut = cms.string("pt > 3 && track.isNonnull && isLooseMuon") ) -muonMVATTH= cms.EDProducer("MuonBaseMVAValueMapProducer", +muonPROMPTMVA= cms.EDProducer("MuonBaseMVAValueMapProducer", src = cms.InputTag("linkedObjects","muons"), - weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/mu_BDTG_2017.weights.xml"), - name = cms.string("muonMVATTH"), + weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/mu_BDTG_2022.weights.xml"), + name = cms.string("muonPROMPTMVA"), 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"]), + variablesOrder = cms.vstring(["LepGood_pt","LepGood_eta","LepGood_pfRelIso03_all","LepGood_miniRelIsoCharged","LepGood_miniRelIsoNeutral","LepGood_jetNDauChargedMVASel","LepGood_jetPtRelv2","LepGood_jetDF","LepGood_jetPtRatio","LepGood_sip3d","LepGood_dxy","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_pfRelIso03_all = cms.string("(pfIsolationR03().sumChargedHadronPt + max(pfIsolationR03().sumNeutralHadronEt + pfIsolationR03().sumPhotonEt - pfIsolationR03().sumPUPt/2,0.0))/pt"), LepGood_miniRelIsoCharged = cms.string("userFloat('miniIsoChg')/pt"), LepGood_miniRelIsoNeutral = cms.string("(userFloat('miniIsoAll')-userFloat('miniIsoChg'))/pt"), + LepGood_jetNDauChargedMVASel = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('jetNDauChargedMVASel'):0"), 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_dxy = cms.string("log(abs(dB('PV2D')))"), LepGood_dz = cms.string("log(abs(dB('PVDZ')))"), LepGood_segmentComp = cms.string("segmentCompatibility"), ) ) -muonMVALowPt = muonMVATTH.clone( +muonMVALowPt = muonPROMPTMVA.clone( weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/mu_BDTG_lowpt.weights.xml"), name = cms.string("muonMVALowPt"), + 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"), + ) ) run2_muon_2016.toModify( - muonMVATTH, + muonPROMPTMVA, weightFile = "PhysicsTools/NanoAOD/data/mu_BDTG_2016.weights.xml", ) +(run2_muon_2017 | run2_muon_2018).toModify( + muonPROMPTMVA, + weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/mu_BDTG_2017.weights.xml"), + 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"), + + ) +) + from TrackingTools.TransientTrack.TransientTrackBuilder_cfi import * muonBSConstrain = cms.EDProducer("MuonBeamspotConstraintValueMapProducer", src = cms.InputTag("linkedObjects","muons"), @@ -178,7 +215,7 @@ 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), + promptMVA = ExtVar(cms.InputTag("muonPROMPTMVA"),float, doc="Prompt MVA lepton ID score. Corresponds to the previous mvaTTH",precision=14), mvaLowPt = ExtVar(cms.InputTag("muonMVALowPt"),float, doc="Low pt muon ID score",precision=14), fsrPhotonIdx = ExtVar(cms.InputTag("leptonFSRphotons:muFsrIndex"), "int16", doc="Index of the lowest-dR/ET2 among associated FSR photons"), bsConstrainedPt = ExtVar(cms.InputTag("muonBSConstrain:muonBSConstrainedPt"),float, doc="pT with beamspot constraint",precision=-1), @@ -224,5 +261,5 @@ muonTask = cms.Task(slimmedMuonsUpdated,isoForMu,ptRatioRelForMu,slimmedMuonsWithUserData,finalMuons,finalLooseMuons ) muonMCTask = cms.Task(muonsMCMatchForTable,muonMCTable) -muonTablesTask = cms.Task(muonMVATTH,muonMVALowPt,muonBSConstrain,muonTable,muonMVAID) +muonTablesTask = cms.Task(muonPROMPTMVA,muonMVALowPt,muonBSConstrain,muonTable,muonMVAID) diff --git a/PhysicsTools/NanoAOD/python/nano_eras_cff.py b/PhysicsTools/NanoAOD/python/nano_eras_cff.py index 4163b72b9dce7..0bfa3b311af9f 100644 --- a/PhysicsTools/NanoAOD/python/nano_eras_cff.py +++ b/PhysicsTools/NanoAOD/python/nano_eras_cff.py @@ -5,7 +5,9 @@ from Configuration.Eras.Modifier_run2_jme_2017_cff import run2_jme_2017 from Configuration.Eras.Modifier_run2_jme_2018_cff import run2_jme_2018 from Configuration.Eras.Modifier_run2_muon_2016_cff import run2_muon_2016 +from Configuration.Eras.Modifier_run2_muon_2017_cff import run2_muon_2017 from Configuration.Eras.Modifier_run2_muon_2018_cff import run2_muon_2018 +from Configuration.Eras.Modifier_run3_muon_cff import run3_muon from Configuration.Eras.Modifier_run2_HLTconditions_2016_cff import run2_HLTconditions_2016 from Configuration.Eras.Modifier_run2_HLTconditions_2017_cff import run2_HLTconditions_2017 diff --git a/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py b/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py index 360e6e4160f1f..bded8620e110b 100644 --- a/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py +++ b/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py @@ -37,9 +37,11 @@ def miniAOD_customizeCommon(process): from Configuration.Eras.Modifier_run2_muon_2016_cff import run2_muon_2016 from Configuration.Eras.Modifier_run2_muon_2017_cff import run2_muon_2017 from Configuration.Eras.Modifier_run2_muon_2018_cff import run2_muon_2018 + from Configuration.Eras.Modifier_run3_muon_cff import run2_muon_2018 run2_muon_2016.toModify( process.patMuons, effectiveAreaVec = [0.0735,0.0619,0.0465,0.0433,0.0577]) run2_muon_2017.toModify( process.patMuons, effectiveAreaVec = [0.0566, 0.0562, 0.0363, 0.0119, 0.0064]) run2_muon_2018.toModify( process.patMuons, effectiveAreaVec = [0.0566, 0.0562, 0.0363, 0.0119, 0.0064]) + run3_muon.toModify( process.patMuons, effectiveAreaVec = [0.0566, 0.0562, 0.0363, 0.0119, 0.0064]) process.patMuons.computePuppiCombinedIso = True #