From 566cc85b44c9b4e568640dc7f05af9e6fc953ffe Mon Sep 17 00:00:00 2001 From: Suvankar Roy Chowdhury Date: Mon, 18 Sep 2023 11:28:18 +0200 Subject: [PATCH 1/3] nanoAOD for full Run2 --- PhysicsTools/NanoAOD/python/electrons_cff.py | 70 +++----------------- PhysicsTools/NanoAOD/python/nano_cff.py | 5 +- PhysicsTools/NanoAOD/python/nano_eras_cff.py | 1 + 3 files changed, 15 insertions(+), 61 deletions(-) diff --git a/PhysicsTools/NanoAOD/python/electrons_cff.py b/PhysicsTools/NanoAOD/python/electrons_cff.py index f6fc27e26576e..1a848b3f60594 100644 --- a/PhysicsTools/NanoAOD/python/electrons_cff.py +++ b/PhysicsTools/NanoAOD/python/electrons_cff.py @@ -34,7 +34,7 @@ ) run2_miniAOD_80XLegacy.toModify( slimmedElectronsUpdated, computeMiniIso = True ) #modify the past eras -for modifier in run2_miniAOD_80XLegacy,run2_nanoAOD_94X2016,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1,run2_nanoAOD_LowPU: +for modifier in run2_miniAOD_80XLegacy,run2_nanoAOD_94X2016,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1: modifier.toModify(slimmedElectronsUpdated, src = cms.InputTag("slimmedElectronsTo106X")) @@ -125,14 +125,6 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): ) _bitmapVIDForEleHEEP_docstring = _get_bitmapVIDForEle_docstring(electron_id_modules_WorkingPoints_nanoAOD.modules,bitmapVIDForEleHEEP.WorkingPoints) - -for modifier in run2_egamma_2017,run2_egamma_2018,run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1,run2_nanoAOD_LowPU: - modifier.toModify(bitmapVIDForEle, src = "slimmedElectronsUpdated") - modifier.toModify(bitmapVIDForEleSpring15, src = "slimmedElectronsUpdated") - modifier.toModify(bitmapVIDForEleSum16, src = "slimmedElectronsUpdated") - modifier.toModify(bitmapVIDForEleHEEP, src = "slimmedElectronsUpdated") - - isoForEle = cms.EDProducer("EleIsoValueMapProducer", src = cms.InputTag("slimmedElectrons"), relative = cms.bool(False), @@ -147,8 +139,6 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): run2_nanoAOD_94X2016.toModify(isoForEle, EAFile_MiniIso = "RecoEgamma/ElectronIdentification/data/Spring15/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_25ns.txt", EAFile_PFIso = "RecoEgamma/ElectronIdentification/data/Summer16/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_80X.txt") -for modifier in run2_egamma_2017,run2_egamma_2018,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1,run2_nanoAOD_LowPU: - modifier.toModify(isoForEle, src = "slimmedElectronsUpdated") ptRatioRelForEle = cms.EDProducer("ElectronJetVarProducer", srcJet = cms.InputTag("updatedJets"), @@ -156,12 +146,7 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): srcVtx = cms.InputTag("offlineSlimmedPrimaryVertices"), ) -for modifier in run2_egamma_2017,run2_egamma_2018,run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1,run2_nanoAOD_LowPU: - modifier.toModify(ptRatioRelForEle, srcLep = "slimmedElectronsUpdated") - seedGainEle = cms.EDProducer("ElectronSeedGainProducer", src = cms.InputTag("slimmedElectrons")) -for modifier in run2_egamma_2017,run2_egamma_2018,run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1,run2_nanoAOD_LowPU: - modifier.toModify(seedGainEle, src = "slimmedElectronsUpdated") import RecoEgamma.EgammaTools.calibratedEgammas_cff @@ -201,13 +186,6 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): ) ##############################end calibratedPatElectronsNano############################ -# use the dedicated electron energy and scale corrections -calibratedPatElectronsLowPU = RecoEgamma.EgammaTools.calibratedEgammas_cff.calibratedPatElectrons.clone( - produceCalibratedObjs = False, - correctionFile = cms.string("PhysicsTools/NanoAOD/data/ScalesSmearings/Run2017_LowPU_v2"), -) -run2_nanoAOD_LowPU.toModify(calibratedPatElectronsLowPU, src = "slimmedElectronsUpdated") - slimmedElectronsWithUserData = cms.EDProducer("PATElectronUserDataEmbedder", src = cms.InputTag("slimmedElectrons"), userFloats = cms.PSet( @@ -266,8 +244,6 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): jetForLepJetVar = cms.InputTag("ptRatioRelForEle:jetForLepJetVar") # warning: Ptr is null if no match is found ), ) -for modifier in run2_egamma_2017,run2_egamma_2018,run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1,run2_nanoAOD_LowPU: - modifier.toModify(slimmedElectronsWithUserData, src = "slimmedElectronsUpdated") ###Not to update with S+S vars as they already exist for run2_nanoAOD_94X2016 era run2_nanoAOD_94X2016.toModify(slimmedElectronsWithUserData.userFloats, @@ -282,8 +258,6 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): ) - - run2_nanoAOD_94X2016.toModify(slimmedElectronsWithUserData.userIntFromBools, # MVAs and HEEP are already pre-computed. Cut-based too (except V2), but we re-add it for consistency with the nested bitmap cutbasedID_Sum16_veto = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-veto"), @@ -307,19 +281,6 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): mvaSpring16HZZ = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16HZZV1Values"), ) -run2_nanoAOD_LowPU.toModify(slimmedElectronsWithUserData.userFloats, - ecalTrkEnergyErrPostCorrNew = cms.InputTag("calibratedPatElectronsLowPU","ecalTrkEnergyErrPostCorr"), - ecalTrkEnergyPreCorrNew = cms.InputTag("calibratedPatElectronsLowPU","ecalTrkEnergyPreCorr"), - ecalTrkEnergyPostCorrNew = cms.InputTag("calibratedPatElectronsLowPU","ecalTrkEnergyPostCorr"), - ecalEnergyPreCorrNew = cms.InputTag("calibratedPatElectronsLowPU","ecalEnergyPreCorr"), - ecalEnergyPostCorrNew = cms.InputTag("calibratedPatElectronsLowPU","ecalEnergyPostCorr"), - energyScaleUpNew = cms.InputTag("calibratedPatElectronsLowPU","energyScaleUp"), - energyScaleDownNew = cms.InputTag("calibratedPatElectronsLowPU","energyScaleDown"), - energySigmaUpNew = cms.InputTag("calibratedPatElectronsLowPU","energySigmaUp"), - energySigmaDownNew = cms.InputTag("calibratedPatElectronsLowPU","energySigmaDown"), -) - - run2_miniAOD_80XLegacy.toModify(slimmedElectronsWithUserData.userIntFromBools, mvaSpring16GP_WP90 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring16-GeneralPurpose-V1-wp90"), mvaSpring16GP_WP80 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring16-GeneralPurpose-V1-wp80"), @@ -433,7 +394,7 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): #the94X miniAOD V2 had a bug in the scale and smearing for electrons in the E/p comb #therefore we redo it but but we need use a new name for the userFloat as we cant override existing userfloats #for technical reasons -for modifier in run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_miniAOD_80XLegacy,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1,run2_nanoAOD_106Xv2,run2_nanoAOD_LowPU: +for modifier in run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_miniAOD_80XLegacy,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1,run2_nanoAOD_106Xv2: modifier.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"), @@ -460,11 +421,6 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): #the94X miniAOD V2 had a bug in the scale and smearing for electrons in the E/p comb #therefore we redo it but but we need use a new name for the userFloat as we cant override existing userfloats # scale and smearing only when available#ONLY needed for this era -run2_nanoAOD_LowPU.toModify(electronTable.variables, - ecalCorr = Var("userFloat('ecalEnergyPostCorrNew')/userFloat('ecalEnergyPreCorrNew')",float, doc="ratio of the calibrated ecal energy / miniaod ecal energy"), - pfIso03_all = Var("userFloat('PFIsoAll')",float,doc="PF isolation dR=0.3, total (with rho*EA PU corrections)"), -) - run2_nanoAOD_94X2016.toModify(electronTable.variables, cutBased_Sum16 = Var("userInt('cutbasedID_Sum16_veto')+userInt('cutbasedID_Sum16_loose')+userInt('cutbasedID_Sum16_medium')+userInt('cutbasedID_Sum16_tight')",int,doc="cut-based Summer16 ID (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"), cutBased_Fall17_V1 = Var("electronID('cutBasedElectronID-Fall17-94X-V1-veto')+electronID('cutBasedElectronID-Fall17-94X-V1-loose')+electronID('cutBasedElectronID-Fall17-94X-V1-medium')+electronID('cutBasedElectronID-Fall17-94X-V1-tight')",int,doc="cut-based Fall17 ID (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"), @@ -513,19 +469,16 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): vidNestedWPBitmapSum16 = Var("userInt('VIDNestedWPBitmapSum16')",int,doc=_bitmapVIDForEleSum16_docstring), ) - -from PhysicsTools.NanoAOD.particlelevel_cff import particleLevel -particleLevelForMatching = particleLevel.clone( - lepMinPt = cms.double(3.), - phoMinPt = cms.double(3), -) +#############electron Table END##################### +# Depends on particlelevel producer run in particlelevel_cff tautaggerForMatching = cms.EDProducer("GenJetTauTaggerProducer", - src = cms.InputTag('particleLevelForMatching:leptons') + src = cms.InputTag('particleLevel:leptons') ) matchingElecPhoton = cms.EDProducer("GenJetGenPartMerger", - srcJet =cms.InputTag("particleLevelForMatching:leptons"), - srcPart=cms.InputTag("particleLevelForMatching:photons"), + srcJet =cms.InputTag("particleLevel:leptons"), + srcPart=cms.InputTag("particleLevel:photons"), + cut = cms.string("pt > 3"), hasTauAnc=cms.InputTag("tautaggerForMatching"), ) @@ -580,7 +533,7 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): electronSequence = cms.Sequence(bitmapVIDForEle + bitmapVIDForEleHEEP + isoForEle + ptRatioRelForEle + seedGainEle + slimmedElectronsWithUserData + finalElectrons) electronTables = cms.Sequence (electronMVATTH + electronTable) electronMCold = cms.Sequence(electronsMCMatchForTable + electronMCTable) -electronMC = cms.Sequence(particleLevelForMatching + tautaggerForMatching + matchingElecPhoton + electronsMCMatchForTable + electronsMCMatchForTableAlt + electronMCTable) +electronMC = cms.Sequence(tautaggerForMatching + matchingElecPhoton + electronsMCMatchForTable + electronsMCMatchForTableAlt + electronMCTable) ( run2_nanoAOD_106Xv1 & ~run2_nanoAOD_devel).toModify( electronMCTable, mcMapDressedLep=None, mcMap = cms.InputTag("electronsMCMatchForTable"), @@ -620,13 +573,10 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016: _withTo106XAndUpdateAnd80XLegacyScale_sequence = _withTo106XAndUpdate_sequence.copy() _withTo106XAndUpdateAnd80XLegacyScale_sequence.replace(slimmedElectronsWithUserData, bitmapVIDForEleSpring15 +bitmapVIDForEleSum16 + slimmedElectronsWithUserData) + modifier.toReplaceWith(electronSequence, _withTo106XAndUpdateAnd80XLegacyScale_sequence) _withTo106XAndUpdateAnd94XScale_sequence = _withTo106XAndUpdate_sequence.copy() for modifier in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1: modifier.toReplaceWith(electronSequence, _withTo106XAndUpdate_sequence) -_withTo106XAndUpdateAndLowPUScale_sequence = _withTo106XAndUpdate_sequence.copy() -_withTo106XAndUpdateAndLowPUScale_sequence.replace(slimmedElectronsWithUserData, calibratedPatElectronsLowPU + slimmedElectronsWithUserData) -run2_nanoAOD_LowPU.toReplaceWith(electronSequence, _withTo106XAndUpdateAndLowPUScale_sequence) - electronSequence.replace(slimmedElectronsWithUserData,calibratedPatElectronsNano + slimmedElectronsWithUserData) diff --git a/PhysicsTools/NanoAOD/python/nano_cff.py b/PhysicsTools/NanoAOD/python/nano_cff.py index 9939cef9af7bb..4d98fb1babba9 100644 --- a/PhysicsTools/NanoAOD/python/nano_cff.py +++ b/PhysicsTools/NanoAOD/python/nano_cff.py @@ -450,7 +450,10 @@ def nanoAOD_customizeData(process): record = cms.string("GeometryFileRcd"),tag = cms.string("XMLFILE_Geometry_2016_81YV1_Extended2016_mc"),label = cms.untracked.string("Extended"), ), ) - + vpset_2017 = cms.VPSet(cms.PSet(record = cms.string("GeometryFileRcd"),tag = cms.string("XMLFILE_Geometry_92YV5_Extended2017Plan1_mc"),label = cms.untracked.string("Extended"),),) + vpset_2018 = cms.VPSet(cms.PSet(record = cms.string("GeometryFileRcd"),tag = cms.string("XMLFILE_Geometry_92YV6_Extended2018_mc"),label = cms.untracked.string("Extended"),),) + run2_muon_2017.toModify(process.GlobalTag, toGet=vpset_2017) + run2_muon_2018.toModify(process.GlobalTag, toGet=vpset_2018) # load 3d field map and use it for g4e propagator, geant4 internals via geometry producer and a few other places related to the track refit from MagneticField.ParametrizedEngine.parametrizedMagneticField_PolyFit3D_cfi import ParametrizedMagneticFieldProducer as PolyFit3DMagneticFieldProducer process.PolyFit3DMagneticFieldProducer = PolyFit3DMagneticFieldProducer diff --git a/PhysicsTools/NanoAOD/python/nano_eras_cff.py b/PhysicsTools/NanoAOD/python/nano_eras_cff.py index a446f4e9b07a8..a5a06388115ab 100644 --- a/PhysicsTools/NanoAOD/python/nano_eras_cff.py +++ b/PhysicsTools/NanoAOD/python/nano_eras_cff.py @@ -4,6 +4,7 @@ from Configuration.Eras.Modifier_run2_jme_2016_cff import run2_jme_2016 from Configuration.Eras.Modifier_run2_jme_2017_cff import run2_jme_2017 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_run2_tau_ul_2016_cff import run2_tau_ul_2016 From e79f5bc05cac2bf5e3794959404c3cd85b06b5d7 Mon Sep 17 00:00:00 2001 From: Suvankar Roy Chowdhury Date: Fri, 20 Oct 2023 06:23:07 +0200 Subject: [PATCH 2/3] Add dedicated trigger object bit for IsoMu24 and IsoMu27 Add dedicated trigger object bit for IsoMu24 and IsoMu27 --- .../NanoAOD/python/triggerObjects_cff.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/PhysicsTools/NanoAOD/python/triggerObjects_cff.py b/PhysicsTools/NanoAOD/python/triggerObjects_cff.py index b9f5d36db9ecf..c4e765a5078f9 100644 --- a/PhysicsTools/NanoAOD/python/triggerObjects_cff.py +++ b/PhysicsTools/NanoAOD/python/triggerObjects_cff.py @@ -216,6 +216,26 @@ selections = selections2016 ) +#2017 and 2018 are same filter string(could used one modification block) +selectionsPhase1 = copy.deepcopy(triggerObjectTable.selections) +for sel in selectionsPhase1: + if sel.name=='Muon': + sel.qualityBits = cms.string(sel.qualityBits.value() + \ + " + 4096*filter('hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered0p07')" \ + " + 8192*filter('hltL3crIsoL1sMu22Or25L1f0L2f10QL3f27QL3trkIsoFiltered0p07')") + sel.qualityBitsDoc = cms.string(sel.qualityBitsDoc.value() + ", 4096 = IsoMu24, 8192 = IsoMu27") + +#change for 2017 +run2_HLTconditions_2017.toModify( + triggerObjectTable, + selections = selectionsPhase1 +) +#change for 2018 +run2_HLTconditions_2018.toModify( + triggerObjectTable, + selections = selectionsPhase1 +) + from PhysicsTools.PatUtils.L1PrefiringWeightProducer_cff import prefiringweight #Next lines are for UL2016 maps (run2_muon_2016 & tracker_apv_vfp30_2016).toModify( prefiringweight, DataEraECAL = cms.string("UL2016preVFP"), DataEraMuon = cms.string("2016preVFP")) From d866578ec4bbe977d0c4112ecd43e08a695b468b Mon Sep 17 00:00:00 2001 From: Suvankar Roy Chowdhury Date: Thu, 18 Jul 2024 08:56:15 +0200 Subject: [PATCH 3/3] bugfix --- PhysicsTools/NanoAOD/python/electrons_cff.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PhysicsTools/NanoAOD/python/electrons_cff.py b/PhysicsTools/NanoAOD/python/electrons_cff.py index 1dcfd3ac6daf1..c522d9302e0f1 100644 --- a/PhysicsTools/NanoAOD/python/electrons_cff.py +++ b/PhysicsTools/NanoAOD/python/electrons_cff.py @@ -34,7 +34,7 @@ ) run2_miniAOD_80XLegacy.toModify( slimmedElectronsUpdated, computeMiniIso = True ) #modify the past eras -for modifier in run2_miniAOD_80XLegacy,run2_nanoAOD_94X2016,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1: +for modifier in run2_miniAOD_80XLegacy,run2_nanoAOD_94X2016,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1, run2_nanoAOD_LowPU: modifier.toModify(slimmedElectronsUpdated, src = cms.InputTag("slimmedElectronsTo106X"))