diff --git a/PhysicsTools/NanoAOD/python/electrons_cff.py b/PhysicsTools/NanoAOD/python/electrons_cff.py index 03a94035040c3..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,run2_nanoAOD_LowPU: +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")) @@ -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 @@ -199,10 +184,12 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): run2_nanoAOD_102Xv1.toModify(calibratedPatElectronsNano, correctionFile = cms.string("EgammaAnalysis/ElectronTools/data/ScalesSmearings/Run2018_Step2Closure_CoarseEtaR9Gain_v2") ) + # use the dedicated electron energy and scale corrections run2_nanoAOD_LowPU.toModify(calibratedPatElectronsNano, correctionFile = cms.string("PhysicsTools/NanoAOD/data/ScalesSmearings/Run2017_LowPU_v2") ) + ##############################end calibratedPatElectronsNano############################ slimmedElectronsWithUserData = cms.EDProducer("PATElectronUserDataEmbedder", @@ -263,8 +250,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, @@ -279,8 +264,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"), @@ -418,7 +401,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"), @@ -502,19 +485,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"), ) @@ -570,7 +550,7 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): 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"), @@ -613,6 +593,7 @@ 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) for modifier in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1,run2_nanoAOD_LowPU: modifier.toReplaceWith(electronSequence, _withTo106XAndUpdate_sequence) diff --git a/PhysicsTools/NanoAOD/python/nano_cff.py b/PhysicsTools/NanoAOD/python/nano_cff.py index 8f90847918ca5..4a66944c29fc5 100644 --- a/PhysicsTools/NanoAOD/python/nano_cff.py +++ b/PhysicsTools/NanoAOD/python/nano_cff.py @@ -471,7 +471,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 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"))