From f04ccd1cbe100288f320d1b7b6dba6251a7b007e Mon Sep 17 00:00:00 2001 From: Christian Veelken Date: Wed, 7 Feb 2018 10:55:45 +0200 Subject: [PATCH 01/19] added comment that L2L3Residual JEC are safe to use for MC --- PhysicsTools/NanoAOD/python/jets_cff.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PhysicsTools/NanoAOD/python/jets_cff.py b/PhysicsTools/NanoAOD/python/jets_cff.py index db0d463fdb717..975eb3ff05174 100644 --- a/PhysicsTools/NanoAOD/python/jets_cff.py +++ b/PhysicsTools/NanoAOD/python/jets_cff.py @@ -63,8 +63,9 @@ ), ) - from PhysicsTools.PatAlgos.recoLayer0.jetCorrFactors_cfi 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 ) jetCorrFactors = patJetCorrFactors.clone(src='slimmedJetsWithUserData', levels = cms.vstring('L1FastJet', 'L2Relative', From 6761ec1831b26c1496c2bb3bd0506b91e23d8679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20Ehat=C3=A4ht?= Date: Mon, 19 Feb 2018 23:46:07 +0200 Subject: [PATCH 02/19] Whitelist gen-level W,Z from >10 GeV mass cut Issue described here: https://github.com/cms-nanoAOD/cmssw/issues/114 --- PhysicsTools/NanoAOD/python/genparticles_cff.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PhysicsTools/NanoAOD/python/genparticles_cff.py b/PhysicsTools/NanoAOD/python/genparticles_cff.py index bddaa45abfe3d..5980f398d520e 100644 --- a/PhysicsTools/NanoAOD/python/genparticles_cff.py +++ b/PhysicsTools/NanoAOD/python/genparticles_cff.py @@ -41,7 +41,7 @@ pt = Var("pt", float,precision=8), phi = Var("phi", float,precision=8), eta = Var("eta", float,precision=8), - mass = Var("?mass>10 || (pdgId==22 && mass > 1)?mass:0", float,precision=8,doc="Mass stored for all particles with mass > 10 GeV and photons with mass > 1 GeV. For other particles you can lookup from PDGID"), + mass = Var("?mass>10 || (pdgId==22 && mass > 1) || abs(pdgId)==24 || pdgId==23?mass:0", float,precision=8,doc="Mass stored for all particles with mass > 10 GeV and photons with mass > 1 GeV. For other particles you can lookup from PDGID"), 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"), From 741aa3c040d17ce7759be8dfaa00ba7398366adb Mon Sep 17 00:00:00 2001 From: Andrew Levin Date: Sun, 18 Mar 2018 00:13:07 +0100 Subject: [PATCH 03/19] added photon sc eta EB/EE classification --- PhysicsTools/NanoAOD/python/photons_cff.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/PhysicsTools/NanoAOD/python/photons_cff.py b/PhysicsTools/NanoAOD/python/photons_cff.py index 9be60175e51d3..622a744035679 100644 --- a/PhysicsTools/NanoAOD/python/photons_cff.py +++ b/PhysicsTools/NanoAOD/python/photons_cff.py @@ -105,6 +105,8 @@ 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.556 && abs(superCluster().eta()) < 2.5",bool,doc="is supercluster eta within endcap acceptance"), ) ) photonTable.variables.pt = Var("pt*userFloat('eCorr')", float, precision=-1) From fe61d1cea6fd565354aa62257d585225ca1f5056 Mon Sep 17 00:00:00 2001 From: Andrew Levin Date: Sun, 18 Mar 2018 00:28:19 +0100 Subject: [PATCH 04/19] correct eta boundary --- PhysicsTools/NanoAOD/python/photons_cff.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PhysicsTools/NanoAOD/python/photons_cff.py b/PhysicsTools/NanoAOD/python/photons_cff.py index 622a744035679..8694ded721d72 100644 --- a/PhysicsTools/NanoAOD/python/photons_cff.py +++ b/PhysicsTools/NanoAOD/python/photons_cff.py @@ -106,7 +106,7 @@ 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.556 && abs(superCluster().eta()) < 2.5",bool,doc="is supercluster eta within endcap acceptance"), + isScEtaEE = Var("abs(superCluster().eta()) > 1.566 && abs(superCluster().eta()) < 2.5",bool,doc="is supercluster eta within endcap acceptance"), ) ) photonTable.variables.pt = Var("pt*userFloat('eCorr')", float, precision=-1) From aaff8b6c74d9fc443bc73bc4ae31f3653f325b82 Mon Sep 17 00:00:00 2001 From: Andrew Levin Date: Sun, 18 Mar 2018 16:40:33 +0100 Subject: [PATCH 05/19] add new variables to DQM plots --- PhysicsTools/NanoAOD/python/nanoDQM_cfi.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/PhysicsTools/NanoAOD/python/nanoDQM_cfi.py b/PhysicsTools/NanoAOD/python/nanoDQM_cfi.py index b2a25f8e076ea..870a86dc29309 100644 --- a/PhysicsTools/NanoAOD/python/nanoDQM_cfi.py +++ b/PhysicsTools/NanoAOD/python/nanoDQM_cfi.py @@ -337,6 +337,8 @@ Plot1D('genPartFlav', 'genPartFlav', 14, -0.5, 13.5, 'Flavour of genParticle for MC matching to status==1 photons or electrons: 1 = prompt photon, 13 = prompt electron, 0 = unknown or unmatched'), NoPlot('genPartIdx'), Plot1D('hoe', 'hoe', 20, 0, 0.6, 'H over E'), + Plot1D('isScEtaEB', 'isScEtaEB', 2, -0.5, 1.5, 'is supercluster eta within barrel acceptance'), + Plot1D('isScEtaEE', 'isScEtaEE', 2, -0.5, 1.5, 'is supercluster eta within endcap acceptance'), NoPlot('jetIdx'), NoPlot('mass'), Plot1D('mvaID', 'mvaID', 20, -1, 1, 'MVA ID score'), From dad13dce15931759a4744f98e4a316be09b9417c Mon Sep 17 00:00:00 2001 From: Giovanni Date: Tue, 20 Mar 2018 15:57:45 +0100 Subject: [PATCH 06/19] Add eras run2_nanoAOD_94XMiniAODv1 and run2_nanoAOD_94XMiniAODv2 --- .../Eras/python/Modifier_run2_nanoAOD_94XMiniAODv1_cff.py | 3 +++ .../Eras/python/Modifier_run2_nanoAOD_94XMiniAODv2_cff.py | 3 +++ Configuration/StandardSequences/python/Eras.py | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 Configuration/Eras/python/Modifier_run2_nanoAOD_94XMiniAODv1_cff.py create mode 100644 Configuration/Eras/python/Modifier_run2_nanoAOD_94XMiniAODv2_cff.py diff --git a/Configuration/Eras/python/Modifier_run2_nanoAOD_94XMiniAODv1_cff.py b/Configuration/Eras/python/Modifier_run2_nanoAOD_94XMiniAODv1_cff.py new file mode 100644 index 0000000000000..58d63f11a5309 --- /dev/null +++ b/Configuration/Eras/python/Modifier_run2_nanoAOD_94XMiniAODv1_cff.py @@ -0,0 +1,3 @@ +import FWCore.ParameterSet.Config as cms + +run2_nanoAOD_94XMiniAODv1 = cms.Modifier() diff --git a/Configuration/Eras/python/Modifier_run2_nanoAOD_94XMiniAODv2_cff.py b/Configuration/Eras/python/Modifier_run2_nanoAOD_94XMiniAODv2_cff.py new file mode 100644 index 0000000000000..20e20cf100448 --- /dev/null +++ b/Configuration/Eras/python/Modifier_run2_nanoAOD_94XMiniAODv2_cff.py @@ -0,0 +1,3 @@ +import FWCore.ParameterSet.Config as cms + +run2_nanoAOD_94XMiniAODv2 = cms.Modifier() diff --git a/Configuration/StandardSequences/python/Eras.py b/Configuration/StandardSequences/python/Eras.py index 2043ede259542..82fc29a3f117b 100644 --- a/Configuration/StandardSequences/python/Eras.py +++ b/Configuration/StandardSequences/python/Eras.py @@ -43,7 +43,7 @@ def __init__(self): 'phase2_hgcal', 'phase2_muon', 'phase2_timing', 'phase2_timing_layer','phase2_hcal', 'trackingLowPU', 'trackingPhase1', 'trackingPhase1QuadProp', 'ctpps_2016', 'trackingPhase2PU140', - 'tracker_apv_vfp30_2016', 'run2_miniAOD_80XLegacy', 'run2_nanoAOD_92X', + 'tracker_apv_vfp30_2016', 'run2_miniAOD_80XLegacy', 'run2_nanoAOD_92X', 'run2_nanoAOD_94XMiniAODv1', 'run2_nanoAOD_94XMiniAODv2', 'hcalHardcodeConditions', 'hcalSkipPacker'] internalUseModChains = ['run2_2017_noTrackingModifier'] From 7e3f7a27ae40a5578ad11f35a26849bc2bd62114 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20Ehat=C3=A4ht?= Date: Tue, 20 Mar 2018 18:46:10 +0200 Subject: [PATCH 07/19] Sort GenVisTau collection by their pT in GenVisTauProducer Discussion: https://github.com/cms-nanoAOD/cmssw/issues/118 --- PhysicsTools/HepMCCandAlgos/plugins/GenVisTauProducer.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/PhysicsTools/HepMCCandAlgos/plugins/GenVisTauProducer.cc b/PhysicsTools/HepMCCandAlgos/plugins/GenVisTauProducer.cc index 2da65fa1344f7..469344710d557 100644 --- a/PhysicsTools/HepMCCandAlgos/plugins/GenVisTauProducer.cc +++ b/PhysicsTools/HepMCCandAlgos/plugins/GenVisTauProducer.cc @@ -11,6 +11,7 @@ #include "PhysicsTools/JetMCUtils/interface/JetMCTag.h" #include "DataFormats/TauReco/interface/PFTau.h" #include "DataFormats/Math/interface/deltaR.h" +#include "CommonTools/Utils/interface/PtComparator.h" #include #include @@ -21,6 +22,7 @@ class GenVisTauProducer : public edm::global::EDProducer<> GenVisTauProducer(const edm::ParameterSet& params) : src_(consumes(params.getParameter("src"))) , srcGenParticles_(consumes(params.getParameter("srcGenParticles"))) + , pTComparator_() { produces(); } @@ -77,6 +79,7 @@ class GenVisTauProducer : public edm::global::EDProducer<> genVisTaus->push_back(genVisTau); } + std::sort(genVisTaus->begin(), genVisTaus->end(), pTComparator_); evt.put(std::move(genVisTaus)); } @@ -91,6 +94,7 @@ class GenVisTauProducer : public edm::global::EDProducer<> private: const edm::EDGetTokenT src_; const edm::EDGetTokenT srcGenParticles_; + const GreaterByPt pTComparator_; }; #include "FWCore/Framework/interface/MakerMacros.h" From 6988eb53881accbdade36e5399f39b38eb61f18f Mon Sep 17 00:00:00 2001 From: peruzzim Date: Tue, 20 Mar 2018 15:26:35 +0100 Subject: [PATCH 08/19] Add pfRelIso dR=0.4 calculation with EA to EleIsoValueMapProducer --- PhysicsTools/NanoAOD/plugins/IsoValueMapProducer.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/PhysicsTools/NanoAOD/plugins/IsoValueMapProducer.cc b/PhysicsTools/NanoAOD/plugins/IsoValueMapProducer.cc index bc2300f133dfe..a5a634215ba6a 100644 --- a/PhysicsTools/NanoAOD/plugins/IsoValueMapProducer.cc +++ b/PhysicsTools/NanoAOD/plugins/IsoValueMapProducer.cc @@ -57,6 +57,7 @@ class IsoValueMapProducer : public edm::global::EDProducer<> { if ((typeid(T) == typeid(pat::Electron))) { produces>("PFIsoChg"); produces>("PFIsoAll"); + produces>("PFIsoAll04"); ea_pfiso_.reset(new EffectiveAreas((iConfig.getParameter("EAFile_PFIso")).fullPath())); rho_pfiso_ = consumes(iConfig.getParameter("rho_PFIso")); } @@ -192,9 +193,10 @@ IsoValueMapProducer::doPFIsoEle(edm::Event& iEvent) const{ unsigned int nInput = src->size(); - std::vector PFIsoChg, PFIsoAll; + std::vector PFIsoChg, PFIsoAll, PFIsoAll04; PFIsoChg.reserve(nInput); PFIsoAll.reserve(nInput); + PFIsoAll04.reserve(nInput); for (const auto & obj : *src) { auto iso = obj.pfIsolationVariables(); @@ -205,6 +207,7 @@ IsoValueMapProducer::doPFIsoEle(edm::Event& iEvent) const{ float scale = relative_ ? 1.0/obj.pt() : 1; PFIsoChg.push_back(scale*chg); PFIsoAll.push_back(scale*(chg+std::max(0.0,neu+pho-(*rho)*ea))); + PFIsoAll04.push_back(scale*(obj.chargedHadronIso()+std::max(0.0,obj.neutralHadronIso()+obj.photonIso()-(*rho)*ea*16./9.))); } std::unique_ptr> PFIsoChgV(new edm::ValueMap()); @@ -215,9 +218,14 @@ IsoValueMapProducer::doPFIsoEle(edm::Event& iEvent) const{ edm::ValueMap::Filler fillerAll(*PFIsoAllV); fillerAll.insert(src,PFIsoAll.begin(),PFIsoAll.end()); fillerAll.fill(); + std::unique_ptr> PFIsoAll04V(new edm::ValueMap()); + edm::ValueMap::Filler fillerAll04(*PFIsoAll04V); + fillerAll04.insert(src,PFIsoAll04.begin(),PFIsoAll04.end()); + fillerAll04.fill(); iEvent.put(std::move(PFIsoChgV),"PFIsoChg"); iEvent.put(std::move(PFIsoAllV),"PFIsoAll"); + iEvent.put(std::move(PFIsoAll04V),"PFIsoAll04"); } From 4b8feacbf476b9723134c8a325cb685759e63968 Mon Sep 17 00:00:00 2001 From: peruzzim Date: Tue, 20 Mar 2018 15:39:41 +0100 Subject: [PATCH 09/19] Switch electrons and muons to Fall17 ID and effective areas --- PhysicsTools/NanoAOD/python/electrons_cff.py | 127 ++++++++++++++----- PhysicsTools/NanoAOD/python/muons_cff.py | 4 +- 2 files changed, 95 insertions(+), 36 deletions(-) diff --git a/PhysicsTools/NanoAOD/python/electrons_cff.py b/PhysicsTools/NanoAOD/python/electrons_cff.py index c9334946eba28..6559d11fc3f47 100644 --- a/PhysicsTools/NanoAOD/python/electrons_cff.py +++ b/PhysicsTools/NanoAOD/python/electrons_cff.py @@ -33,31 +33,48 @@ run2_miniAOD_80XLegacy.toModify(heepIDVarValueMaps, elesMiniAOD = "slimmedElectronsUpdated") run2_nanoAOD_92X.toModify(heepIDVarValueMaps, elesMiniAOD = "slimmedElectronsUpdated") -_electron_id_vid_modules=[ -'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Summer16_80X_V1_cff', -'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronHLTPreselecition_Summer16_V1_cff', -'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV70_cff', -'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_GeneralPurpose_V1_cff', -'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_HZZ_V1_cff', -] -_bitmapVIDForEle_WorkingPoints = cms.vstring( - "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-loose", - "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-medium", - "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight", +_electron_id_modules_WorkingPoints = cms.PSet( + modules = cms.vstring( + 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V1_cff', + 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV70_cff', + 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V1_cff', + 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V1_cff', + ), + WorkingPoints = cms.vstring( + "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-veto", + "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-loose", + "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-medium", + "egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-tight", + ) ) +run2_miniAOD_80XLegacy.toModify(_electron_id_modules_WorkingPoints, + modules = cms.vstring( + 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Summer16_80X_V1_cff', + 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronHLTPreselecition_Summer16_V1_cff', + 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV70_cff', + 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_GeneralPurpose_V1_cff', + 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_HZZ_V1_cff', + ), + WorkingPoints = cms.vstring( + "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-loose", + "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-medium", + "egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight", + ) +) + _bitmapVIDForEle_docstring = '' -for modname in _electron_id_vid_modules: +for modname in _electron_id_modules_WorkingPoints.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'): setupVIDSelection(egmGsfElectronIDs,_id) - if (len(_bitmapVIDForEle_WorkingPoints)>0 and _id.idName==_bitmapVIDForEle_WorkingPoints[0].split(':')[-1]): - _bitmapVIDForEle_docstring = 'VID compressed bitmap (%s), %d bits per cut'%(','.join([cut.cutName.value() for cut in _id.cutFlow]),int(ceil(log(len(_bitmapVIDForEle_WorkingPoints)+1,2)))) + if (len(_electron_id_modules_WorkingPoints.WorkingPoints)>0 and _id.idName==_electron_id_modules_WorkingPoints.WorkingPoints[0].split(':')[-1]): + _bitmapVIDForEle_docstring = 'VID compressed bitmap (%s), %d bits per cut'%(','.join([cut.cutName.value() for cut in _id.cutFlow]),int(ceil(log(len(_electron_id_modules_WorkingPoints.WorkingPoints)+1,2)))) bitmapVIDForEle = cms.EDProducer("EleVIDNestedWPBitmapProducer", src = cms.InputTag("slimmedElectrons"), - WorkingPoints = _bitmapVIDForEle_WorkingPoints, + WorkingPoints = _electron_id_modules_WorkingPoints.WorkingPoints, ) run2_miniAOD_80XLegacy.toModify(bitmapVIDForEle, src = "slimmedElectronsUpdated") run2_nanoAOD_92X.toModify(bitmapVIDForEle, src = "slimmedElectronsUpdated") @@ -67,10 +84,12 @@ relative = cms.bool(False), rho_MiniIso = cms.InputTag("fixedGridRhoFastjetAll"), rho_PFIso = cms.InputTag("fixedGridRhoFastjetAll"), - EAFile_MiniIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Spring15/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_25ns.txt"), - EAFile_PFIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Summer16/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_80X.txt"), + EAFile_MiniIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_92X.txt"), + EAFile_PFIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_92X.txt"), ) -run2_miniAOD_80XLegacy.toModify(isoForEle, src = "slimmedElectronsUpdated") +run2_miniAOD_80XLegacy.toModify(isoForEle, src = "slimmedElectronsUpdated", + EAFile_MiniIso = "RecoEgamma/ElectronIdentification/data/Spring15/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_25ns.txt", + EAFile_PFIso = "RecoEgamma/ElectronIdentification/data/Summer16/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_80X.txt") run2_nanoAOD_92X.toModify(isoForEle, src = "slimmedElectronsUpdated") ptRatioRelForEle = cms.EDProducer("ElectronJetVarProducer", @@ -98,26 +117,29 @@ slimmedElectronsWithUserData = cms.EDProducer("PATElectronUserDataEmbedder", src = cms.InputTag("slimmedElectrons"), userFloats = cms.PSet( - mvaSpring16GP = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16GeneralPurposeV1Values"), - mvaSpring16HZZ = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16HZZV1Values"), + mvaFall17Iso = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17IsoV1Values"), + mvaFall17noIso = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Fall17NoIsoV1Values"), 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"), eCorr = cms.InputTag("energyCorrForEle:eCorr"), ), userIntFromBools = cms.PSet( - mvaSpring16GP_WP90 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring16-GeneralPurpose-V1-wp90"), - mvaSpring16GP_WP80 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring16-GeneralPurpose-V1-wp80"), - mvaSpring16HZZ_WPL = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring16-HZZ-V1-wpLoose"), - cutbasedID_veto = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-veto"), - cutbasedID_loose = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-loose"), - cutbasedID_medium = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-medium"), - cutbasedID_tight = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight"), - cutbasedID_HLT = cms.InputTag("egmGsfElectronIDs:cutBasedElectronHLTPreselection-Summer16-V1"), + mvaFall17Iso_WP90 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-iso-V1-wp90"), + mvaFall17Iso_WP80 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-iso-V1-wp80"), + mvaFall17Iso_WPL = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-iso-V1-wpLoose"), + mvaFall17noIso_WP90 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-noIso-V1-wp90"), + mvaFall17noIso_WP80 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-noIso-V1-wp80"), + mvaFall17noIso_WPL = cms.InputTag("egmGsfElectronIDs:mvaEleID-Fall17-noIso-V1-wpLoose"), + cutbasedID_veto = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-veto"), + cutbasedID_loose = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-loose"), + cutbasedID_medium = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-medium"), + cutbasedID_tight = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V1-tight"), cutbasedID_HEEP = cms.InputTag("egmGsfElectronIDs:heepElectronID-HEEPV70"), ), userInts = cms.PSet( @@ -129,6 +151,25 @@ ) run2_miniAOD_80XLegacy.toModify(slimmedElectronsWithUserData, src = "slimmedElectronsUpdated") run2_nanoAOD_92X.toModify(slimmedElectronsWithUserData, src = "slimmedElectronsUpdated") +run2_miniAOD_80XLegacy.toModify(slimmedElectronsWithUserData.userFloats, + mvaSpring16GP = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16GeneralPurposeV1Values"), + mvaSpring16HZZ = cms.InputTag("electronMVAValueMapProducer:ElectronMVAEstimatorRun2Spring16HZZV1Values"), + mvaFall17Iso = None, + mvaFall17noIso = None, +) +run2_miniAOD_80XLegacy.toReplaceWith(slimmedElectronsWithUserData.userIntFromBools, + cms.PSet( + mvaSpring16GP_WP90 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring16-GeneralPurpose-V1-wp90"), + mvaSpring16GP_WP80 = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring16-GeneralPurpose-V1-wp80"), + mvaSpring16HZZ_WPL = cms.InputTag("egmGsfElectronIDs:mvaEleID-Spring16-HZZ-V1-wpLoose"), + cutbasedID_veto = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-veto"), + cutbasedID_loose = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-loose"), + cutbasedID_medium = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-medium"), + cutbasedID_tight = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight"), + cutbasedID_HLT = cms.InputTag("egmGsfElectronIDs:cutBasedElectronHLTPreselection-Summer16-V1"), + cutbasedID_HEEP = cms.InputTag("egmGsfElectronIDs:heepElectronID-HEEPV70"), + ) +) finalElectrons = cms.EDFilter("PATElectronRefSelector", src = cms.InputTag("slimmedElectronsWithUserData"), @@ -179,14 +220,16 @@ 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), - mvaSpring16GP = Var("userFloat('mvaSpring16GP')",float,doc="MVA general-purpose ID score"), - mvaSpring16GP_WP80 = Var("userInt('mvaSpring16GP_WP80')",bool,doc="MVA general-purpose ID WP80"), - mvaSpring16GP_WP90 = Var("userInt('mvaSpring16GP_WP90')",bool,doc="MVA general-purpose ID WP90"), - mvaSpring16HZZ = Var("userFloat('mvaSpring16HZZ')",float,doc="MVA HZZ ID score"), - mvaSpring16HZZ_WPL = Var("userInt('mvaSpring16HZZ_WPL')",bool,doc="MVA HZZ ID loose WP"), + mvaFall17Iso = Var("userFloat('mvaFall17Iso')",float,doc="MVA Iso ID score"), + mvaFall17Iso_WP80 = Var("userInt('mvaFall17Iso_WP80')",bool,doc="MVA Iso ID WP80"), + mvaFall17Iso_WP90 = Var("userInt('mvaFall17Iso_WP90')",bool,doc="MVA Iso ID WP90"), + mvaFall17Iso_WPL = Var("userInt('mvaFall17Iso_WPL')",bool,doc="MVA Iso ID loose WP"), + mvaFall17noIso = Var("userFloat('mvaFall17noIso')",float,doc="MVA noIso ID score"), + mvaFall17noIso_WP80 = Var("userInt('mvaFall17noIso_WP80')",bool,doc="MVA noIso ID WP80"), + mvaFall17noIso_WP90 = Var("userInt('mvaFall17noIso_WP90')",bool,doc="MVA noIso ID WP90"), + mvaFall17noIso_WPL = Var("userInt('mvaFall17noIso_WPL')",bool,doc="MVA noIso ID loose WP"), cutBased = Var("userInt('cutbasedID_veto')+userInt('cutbasedID_loose')+userInt('cutbasedID_medium')+userInt('cutbasedID_tight')",int,doc="cut-based ID (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"), vidNestedWPBitmap = Var("userInt('VIDNestedWPBitmap')",int,doc=_bitmapVIDForEle_docstring), - cutBased_HLTPreSel = Var("userInt('cutbasedID_HLT')",int,doc="cut-based HLT pre-selection ID"), 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)"), @@ -206,6 +249,22 @@ ), ) electronTable.variables.pt = Var("pt*userFloat('eCorr')", float, precision=-1, doc="p_{T} after energy correction & smearing") +run2_miniAOD_80XLegacy.toModify(electronTable.variables, + cutBased_HLTPreSel = Var("userInt('cutbasedID_HLT')",int,doc="cut-based HLT pre-selection ID"), + mvaSpring16GP = Var("userFloat('mvaSpring16GP')",float,doc="MVA general-purpose ID score"), + mvaSpring16GP_WP80 = Var("userInt('mvaSpring16GP_WP80')",bool,doc="MVA general-purpose ID WP80"), + mvaSpring16GP_WP90 = Var("userInt('mvaSpring16GP_WP90')",bool,doc="MVA general-purpose ID WP90"), + mvaSpring16HZZ = Var("userFloat('mvaSpring16HZZ')",float,doc="MVA HZZ ID score"), + mvaSpring16HZZ_WPL = Var("userInt('mvaSpring16HZZ_WPL')",bool,doc="MVA HZZ ID loose WP"), + mvaFall17Iso = None, + mvaFall17Iso_WP80 = None, + mvaFall17Iso_WP90 = None, + mvaFall17Iso_WPL = None, + mvaFall17noIso = None, + mvaFall17noIso_WP80 = None, + mvaFall17noIso_WP90 = None, + mvaFall17noIso_WPL = None, +) electronsMCMatchForTable = cms.EDProducer("MCMatcher", # cut on deltaR, deltaPt/Pt; pick best by deltaR src = electronTable.src, # final reco collection diff --git a/PhysicsTools/NanoAOD/python/muons_cff.py b/PhysicsTools/NanoAOD/python/muons_cff.py index 36fb3c7e84290..c3087bcfb64c9 100644 --- a/PhysicsTools/NanoAOD/python/muons_cff.py +++ b/PhysicsTools/NanoAOD/python/muons_cff.py @@ -20,9 +20,9 @@ src = cms.InputTag("slimmedMuons"), relative = cms.bool(False), rho_MiniIso = cms.InputTag("fixedGridRhoFastjetAll"), - EAFile_MiniIso = cms.FileInPath("PhysicsTools/NanoAOD/data/effAreaMuons_cone03_pfNeuHadronsAndPhotons_80X.txt"), + EAFile_MiniIso = cms.FileInPath("PhysicsTools/NanoAOD/data/effAreaMuons_cone03_pfNeuHadronsAndPhotons_94X.txt"), ) -run2_miniAOD_80XLegacy.toModify(isoForMu, src = "slimmedMuonsUpdated") +run2_miniAOD_80XLegacy.toModify(isoForMu, src = "slimmedMuonsUpdated", EAFile_MiniIso = "PhysicsTools/NanoAOD/data/effAreaMuons_cone03_pfNeuHadronsAndPhotons_94X.txt") run2_nanoAOD_92X.toModify(isoForMu, src = "slimmedMuonsUpdated") ptRatioRelForMu = cms.EDProducer("MuonJetVarProducer", From cfe6645e4c5f323c40bb44763c90e8da4806fc34 Mon Sep 17 00:00:00 2001 From: peruzzim Date: Tue, 20 Mar 2018 15:41:31 +0100 Subject: [PATCH 10/19] Updated lepton MVA training for 94X Fall17 samples --- PhysicsTools/NanoAOD/python/electrons_cff.py | 17 ++++++++++++----- PhysicsTools/NanoAOD/python/muons_cff.py | 14 ++++++++++---- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/PhysicsTools/NanoAOD/python/electrons_cff.py b/PhysicsTools/NanoAOD/python/electrons_cff.py index 6559d11fc3f47..f5627efd2c8bb 100644 --- a/PhysicsTools/NanoAOD/python/electrons_cff.py +++ b/PhysicsTools/NanoAOD/python/electrons_cff.py @@ -178,10 +178,10 @@ electronMVATTH= cms.EDProducer("EleBaseMVAValueMapProducer", src = cms.InputTag("linkedObjects","electrons"), - weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/el_BDTG.weights.xml"), + weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/el_BDTG_94X.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_jetPtRatio","LepGood_jetBTagCSV","LepGood_sip3d","LepGood_dxy","LepGood_dz","LepGood_mvaIdSpring16HZZ"]), + variablesOrder = cms.vstring(["LepGood_pt","LepGood_eta","LepGood_jetNDauChargedMVASel","LepGood_miniRelIsoCharged","LepGood_miniRelIsoNeutral","LepGood_jetPtRelv2","LepGood_jetBTagCSV","LepGood_jetPtRatio","LepGood_sip3d","LepGood_dxy","LepGood_dz","LepGood_mvaIdFall17noIso"]), variables = cms.PSet( LepGood_pt = cms.string("pt"), LepGood_eta = cms.string("eta"), @@ -189,14 +189,21 @@ LepGood_miniRelIsoCharged = cms.string("userFloat('miniIsoChg')/pt"), LepGood_miniRelIsoNeutral = cms.string("(userFloat('miniIsoAll')-userFloat('miniIsoChg'))/pt"), LepGood_jetPtRelv2 = cms.string("userFloat('ptRel')"), - LepGood_jetPtRatio = cms.string("min(userFloat('ptRatio'),1.5)"), - LepGood_jetBTagCSV = cms.string("?userCand('jetForLepJetVar').isNonnull()?max(userCand('jetForLepJetVar').bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags'),0.0):-99.0"), + LepGood_jetPtRatio = cms.string("?userCand('jetForLepJetVar').isNonnull()?min(userFloat('ptRatio'),1.5):1.0/(1.0+userFloat('PFIsoAll04')/pt)"), + LepGood_jetBTagCSV = cms.string("?userCand('jetForLepJetVar').isNonnull()?max(userCand('jetForLepJetVar').bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags'),0.0):0.0"), 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_mvaIdSpring16HZZ = cms.string("userFloat('mvaSpring16HZZ')"), + LepGood_mvaIdFall17noIso = cms.string("userFloat('mvaFall17noIso')"), ) ) +run2_miniAOD_80XLegacy.toModify(electronMVATTH.variables, + LepGood_jetPtRatio = cms.string("min(userFloat('ptRatio'),1.5)"), + LepGood_mvaIdSpring16HZZ = cms.string("userFloat('mvaSpring16HZZ')"), + LepGood_mvaIdFall17noIso = None) +run2_miniAOD_80XLegacy.toModify(electronMVATTH, + weightFile = "PhysicsTools/NanoAOD/data/el_BDTG.weights.xml", + variablesOrder = ["LepGood_pt","LepGood_eta","LepGood_jetNDauChargedMVASel","LepGood_miniRelIsoCharged","LepGood_miniRelIsoNeutral","LepGood_jetPtRelv2","LepGood_jetPtRatio","LepGood_jetBTagCSV","LepGood_sip3d","LepGood_dxy","LepGood_dz","LepGood_mvaIdSpring16HZZ"]) electronTable = cms.EDProducer("SimpleCandidateFlatTableProducer", src = cms.InputTag("linkedObjects","electrons"), diff --git a/PhysicsTools/NanoAOD/python/muons_cff.py b/PhysicsTools/NanoAOD/python/muons_cff.py index c3087bcfb64c9..612dda0531fbf 100644 --- a/PhysicsTools/NanoAOD/python/muons_cff.py +++ b/PhysicsTools/NanoAOD/python/muons_cff.py @@ -56,10 +56,10 @@ muonMVATTH= cms.EDProducer("MuonBaseMVAValueMapProducer", src = cms.InputTag("linkedObjects","muons"), - weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/mu_BDTG.weights.xml"), + weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/mu_BDTG_94X.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_jetPtRatio","LepGood_jetBTagCSV","LepGood_sip3d","LepGood_dxy","LepGood_dz","LepGood_segmentCompatibility"]), + variablesOrder = cms.vstring(["LepGood_pt","LepGood_eta","LepGood_jetNDauChargedMVASel","LepGood_miniRelIsoCharged","LepGood_miniRelIsoNeutral","LepGood_jetPtRelv2","LepGood_jetBTagCSV","LepGood_jetPtRatio","LepGood_sip3d","LepGood_dxy","LepGood_dz","LepGood_segmentCompatibility"]), variables = cms.PSet( LepGood_pt = cms.string("pt"), LepGood_eta = cms.string("eta"), @@ -67,14 +67,20 @@ LepGood_miniRelIsoCharged = cms.string("userFloat('miniIsoChg')/pt"), LepGood_miniRelIsoNeutral = cms.string("(userFloat('miniIsoAll')-userFloat('miniIsoChg'))/pt"), LepGood_jetPtRelv2 = cms.string("userFloat('ptRel')"), - LepGood_jetPtRatio = cms.string("min(userFloat('ptRatio'),1.5)"), - LepGood_jetBTagCSV = cms.string("?userCand('jetForLepJetVar').isNonnull()?max(userCand('jetForLepJetVar').bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags'),0.0):-99.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_jetBTagCSV = cms.string("?userCand('jetForLepJetVar').isNonnull()?max(userCand('jetForLepJetVar').bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags'),0.0):0.0"), 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_segmentCompatibility = cms.string("segmentCompatibility"), ) ) +run2_miniAOD_80XLegacy.toModify(muonMVATTH, + weightFile = "PhysicsTools/NanoAOD/data/mu_BDTG.weights.xml", + variablesOrder = ["LepGood_pt","LepGood_eta","LepGood_jetNDauChargedMVASel","LepGood_miniRelIsoCharged","LepGood_miniRelIsoNeutral","LepGood_jetPtRelv2","LepGood_jetPtRatio","LepGood_jetBTagCSV","LepGood_sip3d","LepGood_dxy","LepGood_dz","LepGood_segmentCompatibility"], + variables = cms.PSet(LepGood_jetPtRatio = cms.string("min(userFloat('ptRatio'),1.5)")) +) + muonTable = cms.EDProducer("SimpleCandidateFlatTableProducer", src = cms.InputTag("linkedObjects","muons"), From 687419dcd9d5c7918c5d14bbe262335f5064e1b9 Mon Sep 17 00:00:00 2001 From: peruzzim Date: Tue, 20 Mar 2018 15:54:07 +0100 Subject: [PATCH 11/19] Correctly initialize lepton-jet variables for lepton MVA when no jet is matched --- PhysicsTools/NanoAOD/python/electrons_cff.py | 6 +++--- PhysicsTools/NanoAOD/python/muons_cff.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/PhysicsTools/NanoAOD/python/electrons_cff.py b/PhysicsTools/NanoAOD/python/electrons_cff.py index f5627efd2c8bb..27c4cad91f536 100644 --- a/PhysicsTools/NanoAOD/python/electrons_cff.py +++ b/PhysicsTools/NanoAOD/python/electrons_cff.py @@ -185,10 +185,10 @@ variables = cms.PSet( LepGood_pt = cms.string("pt"), LepGood_eta = cms.string("eta"), - LepGood_jetNDauChargedMVASel = cms.string("userFloat('jetNDauChargedMVASel')"), + 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("userFloat('ptRel')"), + LepGood_jetPtRelv2 = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('ptRel'):0"), LepGood_jetPtRatio = cms.string("?userCand('jetForLepJetVar').isNonnull()?min(userFloat('ptRatio'),1.5):1.0/(1.0+userFloat('PFIsoAll04')/pt)"), LepGood_jetBTagCSV = cms.string("?userCand('jetForLepJetVar').isNonnull()?max(userCand('jetForLepJetVar').bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags'),0.0):0.0"), LepGood_sip3d = cms.string("abs(dB('PV3D')/edB('PV3D'))"), @@ -198,7 +198,7 @@ ) ) run2_miniAOD_80XLegacy.toModify(electronMVATTH.variables, - LepGood_jetPtRatio = cms.string("min(userFloat('ptRatio'),1.5)"), + LepGood_jetPtRatio = cms.string("?userCand('jetForLepJetVar').isNonnull()?min(userFloat('ptRatio'),1.5):1"), LepGood_mvaIdSpring16HZZ = cms.string("userFloat('mvaSpring16HZZ')"), LepGood_mvaIdFall17noIso = None) run2_miniAOD_80XLegacy.toModify(electronMVATTH, diff --git a/PhysicsTools/NanoAOD/python/muons_cff.py b/PhysicsTools/NanoAOD/python/muons_cff.py index 612dda0531fbf..6ea8c3f5c11a0 100644 --- a/PhysicsTools/NanoAOD/python/muons_cff.py +++ b/PhysicsTools/NanoAOD/python/muons_cff.py @@ -63,10 +63,10 @@ variables = cms.PSet( LepGood_pt = cms.string("pt"), LepGood_eta = cms.string("eta"), - LepGood_jetNDauChargedMVASel = cms.string("userFloat('jetNDauChargedMVASel')"), + 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("userFloat('ptRel')"), + LepGood_jetPtRelv2 = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('ptRel'):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_jetBTagCSV = cms.string("?userCand('jetForLepJetVar').isNonnull()?max(userCand('jetForLepJetVar').bDiscriminator('pfCombinedInclusiveSecondaryVertexV2BJetTags'),0.0):0.0"), LepGood_sip3d = cms.string("abs(dB('PV3D')/edB('PV3D'))"), @@ -78,7 +78,7 @@ run2_miniAOD_80XLegacy.toModify(muonMVATTH, weightFile = "PhysicsTools/NanoAOD/data/mu_BDTG.weights.xml", variablesOrder = ["LepGood_pt","LepGood_eta","LepGood_jetNDauChargedMVASel","LepGood_miniRelIsoCharged","LepGood_miniRelIsoNeutral","LepGood_jetPtRelv2","LepGood_jetPtRatio","LepGood_jetBTagCSV","LepGood_sip3d","LepGood_dxy","LepGood_dz","LepGood_segmentCompatibility"], - variables = cms.PSet(LepGood_jetPtRatio = cms.string("min(userFloat('ptRatio'),1.5)")) + variables = cms.PSet(LepGood_jetPtRatio = cms.string("?userCand('jetForLepJetVar').isNonnull()?min(userFloat('ptRatio'),1.5):1")) ) From e9617fdc66d1106c34d1ebd67fb147d973950e2c Mon Sep 17 00:00:00 2001 From: peruzzim Date: Wed, 21 Mar 2018 12:26:15 +0100 Subject: [PATCH 12/19] Update DQM content --- PhysicsTools/NanoAOD/python/nanoDQM_cfi.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/PhysicsTools/NanoAOD/python/nanoDQM_cfi.py b/PhysicsTools/NanoAOD/python/nanoDQM_cfi.py index 870a86dc29309..b59efdf353102 100644 --- a/PhysicsTools/NanoAOD/python/nanoDQM_cfi.py +++ b/PhysicsTools/NanoAOD/python/nanoDQM_cfi.py @@ -23,7 +23,6 @@ Plot1D('convVeto', 'convVeto', 2, -0.5, 1.5, 'pass conversion veto'), Plot1D('cutBased', 'cutBased', 5, -0.5, 4.5, 'cut-based ID (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)'), Plot1D('cutBased_HEEP', 'cutBased_HEEP', 2, -0.5, 1.5, 'cut-based HEEP ID'), - Plot1D('cutBased_HLTPreSel', 'cutBased_HLTPreSel', 2, -0.5, 1.5, 'cut-based HLT pre-selection ID'), Plot1D('deltaEtaSC', 'deltaEtaSC', 20, -0.2, 0.2, 'delta eta (SC,ele) with sign'), Plot1D('dr03EcalRecHitSumEt', 'dr03EcalRecHitSumEt', 20, 0, 30, 'Non-PF Ecal isolation within a delta R cone of 0.3 with electron pt > 35 GeV'), Plot1D('dr03HcalDepth1TowerSumEt', 'dr03HcalDepth1TowerSumEt', 20, 0, 20, 'Non-PF Hcal isolation within a delta R cone of 0.3 with electron pt > 35 GeV'), @@ -46,11 +45,14 @@ NoPlot('mass'), Plot1D('miniPFRelIso_all', 'miniPFRelIso_all', 20, 0, 1, 'mini PF relative isolation, total (with scaled rho*EA PU corrections)'), Plot1D('miniPFRelIso_chg', 'miniPFRelIso_chg', 20, 0, 1, 'mini PF relative isolation, charged component'), - Plot1D('mvaSpring16GP', 'mvaSpring16GP', 20, -1, 1, 'MVA general-purpose ID score'), - Plot1D('mvaSpring16GP_WP80', 'mvaSpring16GP_WP80', 2, -0.5, 1.5, 'MVA general-purpose ID WP80'), - Plot1D('mvaSpring16GP_WP90', 'mvaSpring16GP_WP90', 2, -0.5, 1.5, 'MVA general-purpose ID WP90'), - Plot1D('mvaSpring16HZZ', 'mvaSpring16HZZ', 20, -1, 1, 'MVA HZZ ID score'), - Plot1D('mvaSpring16HZZ_WPL', 'mvaSpring16HZZ_WPL', 2, -0.5, 1.5, 'MVA HZZ ID loose WP'), + Plot1D('mvaFall17Iso', 'mvaFall17Iso', 20, -1, 1, 'MVA Iso ID score'), + Plot1D('mvaFall17Iso_WP80', 'mvaFall17Iso_WP80', 2, -0.5, 1.5, 'MVA Iso ID WP80'), + Plot1D('mvaFall17Iso_WP90', 'mvaFall17Iso_WP90', 2, -0.5, 1.5, 'MVA Iso ID WP90'), + Plot1D('mvaFall17Iso_WPL', 'mvaFall17Iso_WPL', 2, -0.5, 1.5, 'MVA Iso ID loose WP'), + Plot1D('mvaFall17noIso', 'mvaFall17noIso', 20, -1, 1, 'MVA noIso ID score'), + Plot1D('mvaFall17noIso_WP80', 'mvaFall17noIso_WP80', 2, -0.5, 1.5, 'MVA noIso ID WP80'), + Plot1D('mvaFall17noIso_WP90', 'mvaFall17noIso_WP90', 2, -0.5, 1.5, 'MVA noIso ID WP90'), + Plot1D('mvaFall17noIso_WPL', 'mvaFall17noIso_WPL', 2, -0.5, 1.5, 'MVA noIso ID loose WP'), Plot1D('mvaTTH', 'mvaTTH', 20, -1, 1, 'TTH MVA lepton ID score'), Plot1D('pdgId', 'pdgId', 27, -13.5, 13.5, 'PDG code assigned by the event reconstruction (not by MC truth)'), Plot1D('pfRelIso03_all', 'pfRelIso03_all', 20, 0, 2, 'PF relative isolation dR=0.3, total (with rho*EA PU corrections)'), From aebced25186e42b542b60d7ba717f74a2d6abbfb Mon Sep 17 00:00:00 2001 From: peruzzim Date: Wed, 21 Mar 2018 13:16:51 +0100 Subject: [PATCH 13/19] Fix mistake in effective area migration for muons --- PhysicsTools/NanoAOD/python/muons_cff.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PhysicsTools/NanoAOD/python/muons_cff.py b/PhysicsTools/NanoAOD/python/muons_cff.py index 6ea8c3f5c11a0..f650eb3cb31af 100644 --- a/PhysicsTools/NanoAOD/python/muons_cff.py +++ b/PhysicsTools/NanoAOD/python/muons_cff.py @@ -22,7 +22,7 @@ rho_MiniIso = cms.InputTag("fixedGridRhoFastjetAll"), EAFile_MiniIso = cms.FileInPath("PhysicsTools/NanoAOD/data/effAreaMuons_cone03_pfNeuHadronsAndPhotons_94X.txt"), ) -run2_miniAOD_80XLegacy.toModify(isoForMu, src = "slimmedMuonsUpdated", EAFile_MiniIso = "PhysicsTools/NanoAOD/data/effAreaMuons_cone03_pfNeuHadronsAndPhotons_94X.txt") +run2_miniAOD_80XLegacy.toModify(isoForMu, src = "slimmedMuonsUpdated", EAFile_MiniIso = "PhysicsTools/NanoAOD/data/effAreaMuons_cone03_pfNeuHadronsAndPhotons_80X.txt") run2_nanoAOD_92X.toModify(isoForMu, src = "slimmedMuonsUpdated") ptRatioRelForMu = cms.EDProducer("MuonJetVarProducer", From 39d096f94fd52143719bd1d9f64780b201b1be17 Mon Sep 17 00:00:00 2001 From: peruzzim Date: Wed, 21 Mar 2018 15:17:00 +0100 Subject: [PATCH 14/19] Fix input variables for 80X muon lepton MVA --- PhysicsTools/NanoAOD/python/muons_cff.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/PhysicsTools/NanoAOD/python/muons_cff.py b/PhysicsTools/NanoAOD/python/muons_cff.py index f650eb3cb31af..c7ee94b1743f7 100644 --- a/PhysicsTools/NanoAOD/python/muons_cff.py +++ b/PhysicsTools/NanoAOD/python/muons_cff.py @@ -75,13 +75,14 @@ LepGood_segmentCompatibility = cms.string("segmentCompatibility"), ) ) +run2_miniAOD_80XLegacy.toModify(muonMVATTH.variables, + LepGood_jetPtRatio = cms.string("?userCand('jetForLepJetVar').isNonnull()?min(userFloat('ptRatio'),1.5):1"), +) run2_miniAOD_80XLegacy.toModify(muonMVATTH, weightFile = "PhysicsTools/NanoAOD/data/mu_BDTG.weights.xml", variablesOrder = ["LepGood_pt","LepGood_eta","LepGood_jetNDauChargedMVASel","LepGood_miniRelIsoCharged","LepGood_miniRelIsoNeutral","LepGood_jetPtRelv2","LepGood_jetPtRatio","LepGood_jetBTagCSV","LepGood_sip3d","LepGood_dxy","LepGood_dz","LepGood_segmentCompatibility"], - variables = cms.PSet(LepGood_jetPtRatio = cms.string("?userCand('jetForLepJetVar').isNonnull()?min(userFloat('ptRatio'),1.5):1")) ) - muonTable = cms.EDProducer("SimpleCandidateFlatTableProducer", src = cms.InputTag("linkedObjects","muons"), cut = cms.string(""), #we should not filter on cross linked collections From 4e502201f8541d28fe7cf39f90c4dc8e589b23f5 Mon Sep 17 00:00:00 2001 From: Kevin Date: Mon, 19 Mar 2018 16:04:47 +0100 Subject: [PATCH 15/19] 94X backport --- .../interface/PFJetIDSelectionFunctor.h | 221 +++++++++++++++--- .../python/pfJetIDSelector_cfi.py | 4 +- 2 files changed, 185 insertions(+), 40 deletions(-) diff --git a/PhysicsTools/SelectorUtils/interface/PFJetIDSelectionFunctor.h b/PhysicsTools/SelectorUtils/interface/PFJetIDSelectionFunctor.h index b5c0a3fa314f9..52f71af367203 100644 --- a/PhysicsTools/SelectorUtils/interface/PFJetIDSelectionFunctor.h +++ b/PhysicsTools/SelectorUtils/interface/PFJetIDSelectionFunctor.h @@ -25,8 +25,8 @@ class PFJetIDSelectionFunctor : public Selector { public: // interface - enum Version_t { FIRSTDATA, RUNIISTARTUP, WINTER16, N_VERSIONS }; - enum Quality_t { LOOSE, TIGHT, N_QUALITY}; + enum Version_t { FIRSTDATA, RUNIISTARTUP, WINTER16, WINTER17, N_VERSIONS }; + enum Quality_t { LOOSE, TIGHT, TIGHTLEPVETO, N_QUALITY}; PFJetIDSelectionFunctor() {} @@ -48,17 +48,20 @@ class PFJetIDSelectionFunctor : public Selector { // WINTER16 implements most recent (as of Feb 2017) JetID criteria // See: https://twiki.cern.ch/twiki/bin/view/CMS/JetID13TeVRun2016 else if( versionStr == "WINTER16") - version_ = WINTER16; - else version_ = WINTER16;//set WINTER16 as default + version_ = WINTER16; + else if( versionStr == "WINTER17") + version_ = WINTER17; + else version_ = WINTER17;//set WINTER17 as default if ( qualityStr == "LOOSE") quality_ = LOOSE; else if ( qualityStr == "TIGHT") quality_ = TIGHT; - else quality_ = LOOSE; + else if ( qualityStr == "TIGHTLEPVETO") quality_ = TIGHTLEPVETO; + else quality_ = TIGHT; push_back("CHF" ); push_back("NHF" ); - push_back("CEF" ); + if( version_ != WINTER17 || quality_ != TIGHT ) push_back("CEF" ); push_back("NEF" ); push_back("NCH" ); push_back("nConstituents"); @@ -73,7 +76,26 @@ class PFJetIDSelectionFunctor : public Selector { push_back("NEF_FW"); push_back("nNeutrals_FW"); } + if(version_ == WINTER17 ){ + push_back("NEF_EC_L"); + push_back("NEF_EC_U"); + push_back("nNeutrals_EC"); + push_back("NEF_FW"); + push_back("NHF_FW"); + push_back("nNeutrals_FW"); + if (quality_ == TIGHTLEPVETO) push_back("MUF");; + } + + if(version_ == WINTER17 && quality_ == LOOSE ){ + edm::LogWarning("BadJetIDVersion") << "Winter17 JetID version does not support the LOOSE operating point -- defaulting to TIGHT"; + quality_ = TIGHT; + } + + if(version_ != WINTER17 && quality_ == TIGHTLEPVETO){ + edm::LogWarning("BadJetIDVersion") << "JetID version does not support the TIGHTLEPVETO operating point -- defaulting to TIGHT"; + quality_ = TIGHT; + } // Set some default cuts for LOOSE, TIGHT @@ -100,7 +122,7 @@ class PFJetIDSelectionFunctor : public Selector { } else if ( quality_ == TIGHT ) { set("CHF", 0.0); set("NHF", 0.9); - set("CEF", 0.99); + if(version_ != WINTER17 ) set("CEF", 0.99); set("NEF", 0.9); set("NCH", 0); set("nConstituents", 1); @@ -115,6 +137,31 @@ class PFJetIDSelectionFunctor : public Selector { set("NEF_FW",0.90); set("nNeutrals_FW",10); } + if(version_ == WINTER17){ + set("NEF_EC_L",0.02); + set("NEF_EC_U",0.99); + set("nNeutrals_EC",2); + set("NHF_FW",0.02); + set("NEF_FW",0.90); + set("nNeutrals_FW",10); + } + + }else if ( quality_ == TIGHTLEPVETO ) { + set("CHF", 0.0); + set("NHF", 0.9); + set("CEF", 0.8); + set("NEF", 0.9); + set("NCH", 0); + set("nConstituents", 1); + if(version_ == WINTER17){ + set("NEF_EC_L",0.02); + set("NEF_EC_U",0.99); + set("nNeutrals_EC",2); + set("NHF_FW",0.02); + set("NEF_FW",0.90); + set("nNeutrals_FW",10); + set("MUF", 0.8); + } } @@ -122,7 +169,7 @@ class PFJetIDSelectionFunctor : public Selector { // Now check the configuration to see if the user changed anything if ( params.exists("CHF") ) set("CHF", params.getParameter("CHF") ); if ( params.exists("NHF") ) set("NHF", params.getParameter("NHF") ); - if ( params.exists("CEF") ) set("CEF", params.getParameter("CEF") ); + if(version_ != WINTER17 || quality_ != TIGHT ) {if ( params.exists("CEF") ) set("CEF", params.getParameter("CEF") );} if ( params.exists("NEF") ) set("NEF", params.getParameter("NEF") ); if ( params.exists("NCH") ) set("NCH", params.getParameter ("NCH") ); if ( params.exists("nConstituents") ) set("nConstituents", params.getParameter ("nConstituents") ); @@ -137,6 +184,15 @@ class PFJetIDSelectionFunctor : public Selector { if ( params.exists("NEF_FW") ) set("NEF_FW", params.getParameter ("NEF_FW") ); if ( params.exists("nNeutrals_FW") ) set("nNeutrals_FW", params.getParameter ("nNeutrals_FW") ); } + if(version_ == WINTER17){ + if ( params.exists("NEF_EC_L") ) set("NEF_EC_L", params.getParameter ("NEF_EC_L") ); + if ( params.exists("NEF_EC_U") ) set("NEF_EC_U", params.getParameter ("NEF_EC_U") ); + if ( params.exists("nNeutrals_EC") ) set("nNeutrals_EC", params.getParameter ("nNeutrals_EC") ); + if ( params.exists("NHF_FW") ) set("NHF_FW", params.getParameter ("NHF_FW") ); + if ( params.exists("NEF_FW") ) set("NEF_FW", params.getParameter ("NEF_FW") ); + if ( params.exists("nNeutrals_FW") ) set("nNeutrals_FW", params.getParameter ("nNeutrals_FW") ); + if ( quality_ == TIGHTLEPVETO ) {if ( params.exists("MUF") ) set("MUF", params.getParameter ("MUF") );} + } if ( params.exists("cutsToIgnore") ) @@ -146,7 +202,8 @@ class PFJetIDSelectionFunctor : public Selector { indexNConstituents_ = index_type (&bits_, "nConstituents"); indexNEF_ = index_type (&bits_, "NEF"); indexNHF_ = index_type (&bits_, "NHF"); - indexCEF_ = index_type (&bits_, "CEF"); + if(version_ != WINTER17 || quality_ != TIGHT ) indexCEF_ = index_type (&bits_, "CEF"); + indexCHF_ = index_type (&bits_, "CHF"); indexNCH_ = index_type (&bits_, "NCH"); if(version_ == RUNIISTARTUP){ @@ -160,6 +217,19 @@ class PFJetIDSelectionFunctor : public Selector { indexNEF_FW_ = index_type (&bits_, "NEF_FW"); indexNNeutrals_FW_ = index_type (&bits_, "nNeutrals_FW"); } + if(version_ == WINTER17){ + indexNEF_EC_L_ = index_type (&bits_, "NEF_EC_L"); + indexNEF_EC_U_ = index_type (&bits_, "NEF_EC_U"); + indexNNeutrals_EC_ = index_type (&bits_, "nNeutrals_EC"); + indexNHF_FW_ = index_type (&bits_, "NHF_FW"); + indexNEF_FW_ = index_type (&bits_, "NEF_FW"); + indexNNeutrals_FW_ = index_type (&bits_, "nNeutrals_FW"); + if ( quality_ == TIGHTLEPVETO ) {indexMUF_ = index_type (&bits_, "MUF");} + + + } + + retInternal_ = getBitTemplate(); @@ -173,7 +243,7 @@ class PFJetIDSelectionFunctor : public Selector { push_back("CHF" ); push_back("NHF" ); - push_back("CEF" ); + if(version_ != WINTER17 || quality_ != TIGHT ) push_back("CEF" ); push_back("NEF" ); push_back("NCH" ); push_back("nConstituents"); @@ -188,8 +258,25 @@ class PFJetIDSelectionFunctor : public Selector { push_back("NEF_FW"); push_back("nNeutrals_FW"); } + if(version_ == WINTER17){ + push_back("NEF_EC_L"); + push_back("NEF_EC_U"); + push_back("nNeutrals_EC"); + push_back("NHF_FW"); + push_back("NEF_FW"); + push_back("nNeutrals_FW"); + if ( quality_ == TIGHTLEPVETO ) { push_back("MUF");} + } + if(version_ == WINTER17 && quality_ == LOOSE ){ + edm::LogWarning("BadJetIDVersion") << "Winter17 JetID version does not support the LOOSE operating point -- defaulting to TIGHT"; + quality_ = TIGHT; + } + if(version_ != WINTER17 && quality_ == TIGHTLEPVETO){ + edm::LogWarning("BadJetIDVersion") << "JetID version does not support the TIGHTLEPVETO operating point -- defaulting to TIGHT"; + quality_ = TIGHT; + } // Set some default cuts for LOOSE, TIGHT if ( quality_ == LOOSE ) { set("CHF", 0.0); @@ -210,10 +297,14 @@ class PFJetIDSelectionFunctor : public Selector { set("nNeutrals_FW",10); } + + + + } else if ( quality_ == TIGHT ) { set("CHF", 0.0); set("NHF", 0.9); - set("CEF", 0.99); + if(version_ != WINTER17) set("CEF", 0.99); set("NEF", 0.9); set("NCH", 0); set("nConstituents", 1); @@ -228,13 +319,41 @@ class PFJetIDSelectionFunctor : public Selector { set("NEF_FW",0.90); set("nNeutrals_FW",10); } + if(version_ == WINTER17){ + set("NEF_EC_L",0.02); + set("NEF_EC_U",0.99); + set("nNeutrals_EC",2); + set("NHF_FW",0.02); + set("NEF_FW",0.90); + set("nNeutrals_FW",10); + } + + } else if ( quality_ == TIGHTLEPVETO ) { + set("CHF", 0.0); + set("NHF", 0.9); + set("CEF", 0.8); + set("NEF", 0.9); + set("NCH", 0); + set("nConstituents", 1); + if(version_ == WINTER17){ + set("NEF_EC_L",0.02); + set("NEF_EC_U",0.99); + set("nNeutrals_EC",2); + set("NHF_FW",0.02); + set("NEF_FW",0.90); + set("nNeutrals_FW",10); + set("MUF", 0.8); + } + } + + indexNConstituents_ = index_type (&bits_, "nConstituents"); indexNEF_ = index_type (&bits_, "NEF"); indexNHF_ = index_type (&bits_, "NHF"); - indexCEF_ = index_type (&bits_, "CEF"); + if(version_ != WINTER17 || quality_ != TIGHT ) indexCEF_ = index_type (&bits_, "CEF"); indexCHF_ = index_type (&bits_, "CHF"); indexNCH_ = index_type (&bits_, "NCH"); if(version_ == RUNIISTARTUP){ @@ -248,6 +367,16 @@ class PFJetIDSelectionFunctor : public Selector { indexNEF_FW_ = index_type (&bits_, "NEF_FW"); indexNNeutrals_FW_ = index_type (&bits_, "nNeutrals_FW"); } + if(version_ == WINTER17){ + + indexNEF_EC_L_ = index_type (&bits_, "NEF_EC_L"); + indexNEF_EC_U_ = index_type (&bits_, "NEF_EC_U"); + indexNNeutrals_EC_ = index_type (&bits_, "nNeutrals_EC"); + indexNHF_FW_ = index_type (&bits_, "NHF_FW"); + indexNEF_FW_ = index_type (&bits_, "NEF_FW"); + indexNNeutrals_FW_ = index_type (&bits_, "nNeutrals_FW"); + if ( quality_ == TIGHTLEPVETO ) { indexMUF_ = index_type (&bits_, "MUF"); } + } retInternal_ = getBitTemplate(); @@ -257,9 +386,9 @@ class PFJetIDSelectionFunctor : public Selector { // // Accessor from PAT jets // - bool operator()( const pat::Jet & jet, pat::strbitset & ret ) + bool operator()( const pat::Jet & jet, pat::strbitset & ret ) override { - if ( version_ == FIRSTDATA || version_ == RUNIISTARTUP || version_ == WINTER16) { + if ( version_ == FIRSTDATA || version_ == RUNIISTARTUP || version_ == WINTER16 || version_ == WINTER17) { if ( jet.currentJECLevel() == "Uncorrected" || !jet.jecSetsAvailable() ) return firstDataCuts( jet, ret, version_); else @@ -277,7 +406,7 @@ class PFJetIDSelectionFunctor : public Selector { // bool operator()( const reco::PFJet & jet, pat::strbitset & ret ) { - if ( version_ == FIRSTDATA || version_ == RUNIISTARTUP || version_ == WINTER16 ){ return firstDataCuts( jet, ret, version_); + if ( version_ == FIRSTDATA || version_ == RUNIISTARTUP || version_ == WINTER16 || version_ == WINTER17 ){ return firstDataCuts( jet, ret, version_); } else { return false; @@ -305,6 +434,7 @@ class PFJetIDSelectionFunctor : public Selector { double nhf = 0.0; double cef = 0.0; double nef = 0.0; + double muf = 0.0; int nch = 0; int nconstituents = 0; int nneutrals = 0; @@ -314,7 +444,7 @@ class PFJetIDSelectionFunctor : public Selector { pat::Jet const * patJet = dynamic_cast(&jet); reco::BasicJet const * basicJet = dynamic_cast(&jet); - if ( patJet != 0 ) { + if ( patJet != nullptr ) { if ( patJet->isPFJet() ) { chf = patJet->chargedHadronEnergyFraction(); nhf = patJet->neutralHadronEnergyFraction(); @@ -339,24 +469,13 @@ class PFJetIDSelectionFunctor : public Selector { iend = patJet->end(), isub = ibegin; isub != iend; ++isub ) { reco::PFJet const * pfsub = dynamic_cast( &*isub ); - pat::Jet const * patsub = dynamic_cast( &*isub ); - if ( patsub ) { - e_chf += patsub->chargedHadronEnergy(); - e_nhf += patsub->neutralHadronEnergy(); - e_cef += patsub->chargedEmEnergy(); - e_nef += patsub->neutralEmEnergy(); - nch += patsub->chargedMultiplicity(); - nconstituents += patsub->numberOfDaughters(); - nneutrals += patsub->neutralMultiplicity(); - } else if ( pfsub ) { - e_chf += pfsub->chargedHadronEnergy(); - e_nhf += pfsub->neutralHadronEnergy(); - e_cef += pfsub->chargedEmEnergy(); - e_nef += pfsub->neutralEmEnergy(); - nch += pfsub->chargedMultiplicity(); - nconstituents += pfsub->numberOfDaughters(); - nneutrals += pfsub->neutralMultiplicity(); - } else assert(0); + e_chf += pfsub->chargedHadronEnergy(); + e_nhf += pfsub->neutralHadronEnergy(); + e_cef += pfsub->chargedEmEnergy(); + e_nef += pfsub->neutralEmEnergy(); + nch += pfsub->chargedMultiplicity(); + nconstituents += pfsub->numberOfDaughters(); + nneutrals += pfsub->neutralMultiplicity(); } double e = patJet->energy(); if ( e > 0.000001 ) { @@ -369,7 +488,7 @@ class PFJetIDSelectionFunctor : public Selector { } } } // end if pat jet - else if ( pfJet != 0 ) { + else if ( pfJet != nullptr ) { // CV: need to compute energy fractions in a way that works for corrected as well as for uncorrected PFJets double jetEnergyUncorrected = pfJet->chargedHadronEnergy() @@ -383,6 +502,7 @@ class PFJetIDSelectionFunctor : public Selector { nhf = pfJet->neutralHadronEnergy() / jetEnergyUncorrected; cef = pfJet->chargedEmEnergy() / jetEnergyUncorrected; nef = pfJet->neutralEmEnergy() / jetEnergyUncorrected; + muf = pfJet->muonEnergy() / jetEnergyUncorrected; } nch = pfJet->chargedMultiplicity(); nconstituents = pfJet->numberOfDaughters(); @@ -390,7 +510,7 @@ class PFJetIDSelectionFunctor : public Selector { } // end if PF jet // Handle the special case where this is a composed jet for // subjet analyses - else if ( basicJet != 0 ) { + else if ( basicJet != nullptr ) { double e_chf = 0.0; double e_nhf = 0.0; double e_cef = 0.0; @@ -418,8 +538,10 @@ class PFJetIDSelectionFunctor : public Selector { } } // end if basic jet - // Cuts for |eta| < 2.4 for FIRSTDATA, RUNIISTARTUP and WINTER16 - if ( ignoreCut(indexCEF_) || ( cef < cut(indexCEF_, double()) || std::abs(jet.eta()) > 2.4 ) ) passCut( ret, indexCEF_); + + + // Cuts for |eta| < 2.4 for FIRSTDATA, RUNIISTARTUP, WINTER16 and WINTER17 + if(version_ != WINTER17 || quality_ != TIGHT ) {if ( ignoreCut(indexCEF_) || ( cef < cut(indexCEF_, double()) || std::abs(jet.eta()) > 2.4 ) ) passCut( ret, indexCEF_);} if ( ignoreCut(indexCHF_) || ( chf > cut(indexCHF_, double()) || std::abs(jet.eta()) > 2.4 ) ) passCut( ret, indexCHF_); if ( ignoreCut(indexNCH_) || ( nch > cut(indexNCH_, int()) || std::abs(jet.eta()) > 2.4 ) ) passCut( ret, indexNCH_); @@ -451,6 +573,25 @@ class PFJetIDSelectionFunctor : public Selector { if ( ignoreCut(indexNEF_FW_) || ( nef < cut(indexNEF_FW_, double()) || std::abs(jet.eta()) <= 3.0 ) ) passCut( ret, indexNEF_FW_); if ( ignoreCut(indexNNeutrals_FW_) || ( nneutrals > cut(indexNNeutrals_FW_, int()) || std::abs(jet.eta()) <= 3.0 ) ) passCut( ret, indexNNeutrals_FW_); } + else if(version_ == WINTER17){ + // Cuts for |eta| <= 2.7 for WINTER17 scenario + if ( ignoreCut(indexNConstituents_) || ( nconstituents > cut(indexNConstituents_, int()) || std::abs(jet.eta()) > 2.7 ) ) passCut( ret, indexNConstituents_); + if ( ignoreCut(indexNEF_) || ( nef < cut(indexNEF_, double()) || std::abs(jet.eta()) > 2.7 ) ) passCut( ret, indexNEF_); + if ( ignoreCut(indexNHF_) || ( nhf < cut(indexNHF_, double()) || std::abs(jet.eta()) > 2.7 ) ) passCut( ret, indexNHF_); + if ( quality_ == TIGHTLEPVETO ) {if ( ignoreCut(indexMUF_) || ( muf < cut(indexMUF_, double()) || std::abs(jet.eta()) > 2.7 ) ) passCut( ret, indexMUF_);} + + // Cuts for 2.7 < |eta| <= 3.0 for WINTER17 scenario + + if ( ignoreCut(indexNEF_EC_L_) || ( nef > cut(indexNEF_EC_L_, double()) || std::abs(jet.eta()) <= 2.7 || std::abs(jet.eta()) > 3.0) ) passCut( ret, indexNEF_EC_L_); + if ( ignoreCut(indexNEF_EC_U_) || ( nef < cut(indexNEF_EC_U_, double()) || std::abs(jet.eta()) <= 2.7 || std::abs(jet.eta()) > 3.0) ) passCut( ret, indexNEF_EC_U_); + if ( ignoreCut(indexNNeutrals_EC_) || ( nneutrals > cut(indexNNeutrals_EC_, int()) || std::abs(jet.eta()) <= 2.7 || std::abs(jet.eta()) > 3.0) ) passCut( ret, indexNNeutrals_EC_); + + // Cuts for |eta| > 3.0 for WINTER17 scenario + if ( ignoreCut(indexNHF_FW_) || ( nhf > cut(indexNHF_FW_, double()) || std::abs(jet.eta()) <= 3.0 ) ) passCut( ret, indexNHF_FW_); + if ( ignoreCut(indexNEF_FW_) || ( nef < cut(indexNEF_FW_, double()) || std::abs(jet.eta()) <= 3.0 ) ) passCut( ret, indexNEF_FW_); + if ( ignoreCut(indexNNeutrals_FW_) || ( nneutrals > cut(indexNNeutrals_FW_, int()) || std::abs(jet.eta()) <= 3.0 ) ) passCut( ret, indexNNeutrals_FW_); + + } //std::cout << ":" << std::endl; //std::cout << " jet: Pt = " << jet.pt() << ", eta = " << jet.eta() << ", phi = " << jet.phi() << std::endl; @@ -467,16 +608,20 @@ class PFJetIDSelectionFunctor : public Selector { index_type indexNConstituents_; index_type indexNEF_; + index_type indexMUF_; index_type indexNHF_; index_type indexCEF_; index_type indexCHF_; index_type indexNCH_; + index_type indexNHF_FW_; index_type indexNEF_FW_; index_type indexNNeutrals_FW_; index_type indexNHF_EC_; index_type indexNEF_EC_; + index_type indexNEF_EC_L_; + index_type indexNEF_EC_U_; index_type indexNNeutrals_EC_; diff --git a/PhysicsTools/SelectorUtils/python/pfJetIDSelector_cfi.py b/PhysicsTools/SelectorUtils/python/pfJetIDSelector_cfi.py index cd7f6ca95a28b..a06901393ce04 100644 --- a/PhysicsTools/SelectorUtils/python/pfJetIDSelector_cfi.py +++ b/PhysicsTools/SelectorUtils/python/pfJetIDSelector_cfi.py @@ -2,6 +2,6 @@ pfJetIDSelector = cms.PSet( - version = cms.string('WINTER16'), - quality = cms.string('LOOSE') + version = cms.string('WINTER17'), + quality = cms.string('TIGHT') ) From 38be7737c0f72683bcffc4b76f2bab6eef1f77d4 Mon Sep 17 00:00:00 2001 From: Kevin Date: Tue, 20 Mar 2018 18:07:54 +0100 Subject: [PATCH 16/19] merge with PR 22294 --- .../interface/PFJetIDSelectionFunctor.h | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/PhysicsTools/SelectorUtils/interface/PFJetIDSelectionFunctor.h b/PhysicsTools/SelectorUtils/interface/PFJetIDSelectionFunctor.h index 52f71af367203..b4a1aa9efc67d 100644 --- a/PhysicsTools/SelectorUtils/interface/PFJetIDSelectionFunctor.h +++ b/PhysicsTools/SelectorUtils/interface/PFJetIDSelectionFunctor.h @@ -469,13 +469,24 @@ class PFJetIDSelectionFunctor : public Selector { iend = patJet->end(), isub = ibegin; isub != iend; ++isub ) { reco::PFJet const * pfsub = dynamic_cast( &*isub ); - e_chf += pfsub->chargedHadronEnergy(); - e_nhf += pfsub->neutralHadronEnergy(); - e_cef += pfsub->chargedEmEnergy(); - e_nef += pfsub->neutralEmEnergy(); - nch += pfsub->chargedMultiplicity(); - nconstituents += pfsub->numberOfDaughters(); - nneutrals += pfsub->neutralMultiplicity(); + pat::Jet const * patsub = dynamic_cast( &*isub ); + if ( patsub ) { + e_chf += patsub->chargedHadronEnergy(); + e_nhf += patsub->neutralHadronEnergy(); + e_cef += patsub->chargedEmEnergy(); + e_nef += patsub->neutralEmEnergy(); + nch += patsub->chargedMultiplicity(); + nconstituents += patsub->numberOfDaughters(); + nneutrals += patsub->neutralMultiplicity(); + } else if ( pfsub ) { + e_chf += pfsub->chargedHadronEnergy(); + e_nhf += pfsub->neutralHadronEnergy(); + e_cef += pfsub->chargedEmEnergy(); + e_nef += pfsub->neutralEmEnergy(); + nch += pfsub->chargedMultiplicity(); + nconstituents += pfsub->numberOfDaughters(); + nneutrals += pfsub->neutralMultiplicity(); + } else assert(0); } double e = patJet->energy(); if ( e > 0.000001 ) { From 1f0decdb95488ccfab87fce42cb7104eba1701e2 Mon Sep 17 00:00:00 2001 From: Giovanni Date: Wed, 21 Mar 2018 14:48:26 +0100 Subject: [PATCH 17/19] switch 2017 data to 2017 jet ID --- PhysicsTools/NanoAOD/python/jets_cff.py | 49 +++++++++++++++++++++---- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/PhysicsTools/NanoAOD/python/jets_cff.py b/PhysicsTools/NanoAOD/python/jets_cff.py index 975eb3ff05174..f564911156a81 100644 --- a/PhysicsTools/NanoAOD/python/jets_cff.py +++ b/PhysicsTools/NanoAOD/python/jets_cff.py @@ -24,11 +24,21 @@ ) tightJetId = cms.EDProducer("PatJetIDValueMapProducer", filterParams=cms.PSet( - version = cms.string('WINTER16'), + version = cms.string('WINTER17'), quality = cms.string('TIGHT'), ), src = cms.InputTag("slimmedJets") ) +run2_miniAOD_80XLegacy.toModify( tightJetId.filterParams, version = "WINTER16" ) + +tightJetIdLepVeto = cms.EDProducer("PatJetIDValueMapProducer", + filterParams=cms.PSet( + version = cms.string('WINTER17'), + quality = cms.string('TIGHTLEPVETO'), + ), + src = cms.InputTag("slimmedJets") +) + looseJetIdAK8 = cms.EDProducer("PatJetIDValueMapProducer", filterParams=cms.PSet( version = cms.string('WINTER16'), @@ -38,30 +48,46 @@ ) tightJetIdAK8 = cms.EDProducer("PatJetIDValueMapProducer", filterParams=cms.PSet( - version = cms.string('WINTER16'), + version = cms.string('WINTER17'), quality = cms.string('TIGHT'), ), src = cms.InputTag("slimmedJetsAK8") ) +run2_miniAOD_80XLegacy.toModify( tightJetIdAK8.filterParams, version = "WINTER16" ) +tightJetIdLepVetoAK8 = cms.EDProducer("PatJetIDValueMapProducer", + filterParams=cms.PSet( + version = cms.string('WINTER17'), + quality = cms.string('TIGHTLEPVETO'), + ), + src = cms.InputTag("slimmedJetsAK8") +) slimmedJetsWithUserData = cms.EDProducer("PATJetUserDataEmbedder", src = cms.InputTag("slimmedJets"), userFloats = cms.PSet(), userInts = cms.PSet( tightId = cms.InputTag("tightJetId"), - looseId = cms.InputTag("looseJetId"), + tightIdLepVeto = cms.InputTag("tightJetIdLepVeto"), ), ) +run2_miniAOD_80XLegacy.toModify( slimmedJetsWithUserData.userInts, + looseId = cms.InputTag("looseJetId"), + tightIdLepVeto = None, +) slimmedJetsAK8WithUserData = cms.EDProducer("PATJetUserDataEmbedder", src = cms.InputTag("slimmedJetsAK8"), userFloats = cms.PSet(), userInts = cms.PSet( tightId = cms.InputTag("tightJetIdAK8"), - looseId = cms.InputTag("looseJetIdAK8"), + tightIdLepVeto = cms.InputTag("tightJetIdLepVetoAK8"), ), ) +run2_miniAOD_80XLegacy.toModify( slimmedJetsAK8WithUserData.userInts, + looseId = cms.InputTag("looseJetIdAK8"), + tightIdLepVeto = None, +) from PhysicsTools.PatAlgos.recoLayer0.jetCorrFactors_cfi import * # Note: Safe to always add 'L2L3Residual' as MC contains dummy L2L3Residual corrections (always set to 1) @@ -134,7 +160,7 @@ btagDeepC = Var("bDiscriminator('pfDeepCSVJetTags:probc')",float,doc="DeepCSV charm btag discriminator",precision=10), #puIdDisc = Var("userFloat('pileupJetId:fullDiscriminant')",float,doc="Pilup ID discriminant",precision=10), puId = Var("userInt('pileupJetId:fullId')",int,doc="Pilup ID flags"), - jetId = Var("userInt('tightId')*2+userInt('looseId')",int,doc="Jet ID flags bit1 is loose, bit2 is tight"), + 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('QGTagger:qgLikelihood')",float,doc="Quark vs Gluon likelihood discriminator",precision=10), nConstituents = Var("numberOfDaughters()",int,doc="Number of particles in the jet"), rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6), @@ -144,12 +170,14 @@ neEmEF = Var("neutralEmEnergyFraction()", float, doc="neutral Electromagnetic Energy Fraction", precision= 6) ) ) + #jets are not as precise as muons jetTable.variables.pt.precision=10 ### Era dependent customization run2_miniAOD_80XLegacy.toModify( slimmedJetsWithUserData, userFloats=cms.PSet(qgl=cms.InputTag('qgtagger80x:qgLikelihood'))) run2_miniAOD_80XLegacy.toModify( jetTable.variables.qgl, expr="userFloat('qgl')" ) +run2_miniAOD_80XLegacy.toModify( jetTable.variables, jetId = Var("userInt('tightId')*2+userInt('looseId')",int,doc="Jet ID flags bit1 is loose, bit2 is tight")) bjetMVA= cms.EDProducer("BJetEnergyRegressionMVA", src = cms.InputTag("linkedObjects","jets"), @@ -214,7 +242,7 @@ 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+userInt('looseId')",int,doc="Jet ID flags bit1 is loose, bit2 is tight"), + 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), tau1 = Var("userFloat('NjettinessAK8Puppi:tau1')",float, doc="Nsubjettiness (1 axis)",precision=10), tau2 = Var("userFloat('NjettinessAK8Puppi:tau2')",float, doc="Nsubjettiness (2 axis)",precision=10), @@ -246,6 +274,7 @@ run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.tau4, expr = cms.string("-1"),) run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.n2b1, expr = cms.string("-1"),) run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.n3b1, expr = cms.string("-1"),) +run2_miniAOD_80XLegacy.toModify( fatJetTable.variables, jetId = Var("userInt('tightId')*2+userInt('looseId')",int,doc="Jet ID flags bit1 is loose, bit2 is tight")) run2_nanoAOD_92X.toModify( fatJetTable.variables.tau4, expr = cms.string("-1"),) run2_nanoAOD_92X.toModify( fatJetTable.variables.n2b1, expr = cms.string("-1"),) @@ -387,10 +416,14 @@ run2_nanoAOD_92X.toModify( genJetFlavourTable, jetFlavourInfos = cms.InputTag("genJetFlavourAssociation"),) #before cross linking -jetSequence = cms.Sequence(looseJetId+tightJetId+slimmedJetsWithUserData+jetCorrFactors+updatedJets+looseJetIdAK8+tightJetIdAK8+slimmedJetsAK8WithUserData+jetCorrFactorsAK8+updatedJetsAK8+chsForSATkJets+softActivityJets+softActivityJets2+softActivityJets5+softActivityJets10+finalJets+finalJetsAK8) +jetSequence = cms.Sequence(tightJetId+tightJetIdLepVeto+slimmedJetsWithUserData+jetCorrFactors+updatedJets+tightJetIdAK8+tightJetIdLepVetoAK8+slimmedJetsAK8WithUserData+jetCorrFactorsAK8+updatedJetsAK8+chsForSATkJets+softActivityJets+softActivityJets2+softActivityJets5+softActivityJets10+finalJets+finalJetsAK8) +_jetSequence_80X = jetSequence.copy() +_jetSequence_80X.replace(tightJetIdLepVeto, looseJetId) +_jetSequence_80X.replace(tightJetIdLepVetoAK8, looseJetIdAK8) +run2_miniAOD_80XLegacy.toReplaceWith(jetSequence, _jetSequence_80X) + #after cross linkining jetTables = cms.Sequence(bjetMVA+ jetTable+fatJetTable+subJetTable+saJetTable+saTable) #MC only producers and tables jetMC = cms.Sequence(jetMCTable+genJetTable+patJetPartons+genJetFlavourTable+genJetAK8Table+genJetAK8FlavourAssociation+genJetAK8FlavourTable+genSubJetAK8Table) - From bdb186d38dd88fbcc831070fa7c53a9eed839271 Mon Sep 17 00:00:00 2001 From: Giovanni Date: Wed, 21 Mar 2018 14:54:55 +0100 Subject: [PATCH 18/19] move jet era-dependent customizations to jets_cff --- PhysicsTools/NanoAOD/python/jets_cff.py | 13 ++++++++++++- PhysicsTools/NanoAOD/python/nano_cff.py | 17 ----------------- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/PhysicsTools/NanoAOD/python/jets_cff.py b/PhysicsTools/NanoAOD/python/jets_cff.py index f564911156a81..19d133fd71090 100644 --- a/PhysicsTools/NanoAOD/python/jets_cff.py +++ b/PhysicsTools/NanoAOD/python/jets_cff.py @@ -412,14 +412,18 @@ ) ### Era dependent customization run2_miniAOD_80XLegacy.toModify( genJetFlavourTable, jetFlavourInfos = cms.InputTag("genJetFlavourAssociation"),) - run2_nanoAOD_92X.toModify( genJetFlavourTable, jetFlavourInfos = cms.InputTag("genJetFlavourAssociation"),) #before cross linking jetSequence = cms.Sequence(tightJetId+tightJetIdLepVeto+slimmedJetsWithUserData+jetCorrFactors+updatedJets+tightJetIdAK8+tightJetIdLepVetoAK8+slimmedJetsAK8WithUserData+jetCorrFactorsAK8+updatedJetsAK8+chsForSATkJets+softActivityJets+softActivityJets2+softActivityJets5+softActivityJets10+finalJets+finalJetsAK8) + +from RecoJets.JetProducers.QGTagger_cfi import QGTagger +qgtagger80x=QGTagger.clone(srcJets="slimmedJets",srcVertexCollection="offlineSlimmedPrimaryVertices") + _jetSequence_80X = jetSequence.copy() _jetSequence_80X.replace(tightJetIdLepVeto, looseJetId) _jetSequence_80X.replace(tightJetIdLepVetoAK8, looseJetIdAK8) +_jetSequence_80X.insert(1,qgtagger80x) run2_miniAOD_80XLegacy.toReplaceWith(jetSequence, _jetSequence_80X) #after cross linkining @@ -427,3 +431,10 @@ #MC only producers and tables jetMC = cms.Sequence(jetMCTable+genJetTable+patJetPartons+genJetFlavourTable+genJetAK8Table+genJetAK8FlavourAssociation+genJetAK8FlavourTable+genSubJetAK8Table) +_jetMC_pre94X = jetMC.copy() +_jetMC_pre94X.insert(_jetMC_pre94X.index(genJetFlavourTable),genJetFlavourAssociation) +_jetMC_pre94X.remove(genSubJetAK8Table) +run2_miniAOD_80XLegacy.toReplaceWith(jetMC, _jetMC_pre94X) +run2_nanoAOD_92X.toReplaceWith(jetMC, _jetMC_pre94X) + + diff --git a/PhysicsTools/NanoAOD/python/nano_cff.py b/PhysicsTools/NanoAOD/python/nano_cff.py index ffc6a8d151cc7..96bf144ec10f3 100644 --- a/PhysicsTools/NanoAOD/python/nano_cff.py +++ b/PhysicsTools/NanoAOD/python/nano_cff.py @@ -96,29 +96,12 @@ def nanoAOD_customizeMC(process): ### Era dependent customization from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy -from RecoJets.JetProducers.QGTagger_cfi import QGTagger -qgtagger80x=QGTagger.clone(srcJets="slimmedJets",srcVertexCollection="offlineSlimmedPrimaryVertices") _80x_sequence = nanoSequence.copy() #remove stuff _80x_sequence.remove(isoTrackTable) _80x_sequence.remove(isoTrackSequence) -#add qgl -_80x_sequence.insert(1,qgtagger80x) -_80x_sequenceMC = nanoSequenceMC.copy() -_80x_sequenceMC.remove(genSubJetAK8Table) -_80x_sequenceMC.insert(_80x_sequenceMC.index(genJetFlavourTable),genJetFlavourAssociation) run2_miniAOD_80XLegacy.toReplaceWith( nanoSequence, _80x_sequence) -run2_miniAOD_80XLegacy.toReplaceWith( nanoSequenceMC, _80x_sequenceMC) -from Configuration.Eras.Modifier_run2_nanoAOD_92X_cff import run2_nanoAOD_92X -#remove stuff - -_92x_sequence = nanoSequence.copy() -_92x_sequenceMC = nanoSequenceMC.copy() -_92x_sequenceMC.remove(genSubJetAK8Table) -_92x_sequenceMC.insert(_92x_sequenceMC.index(genJetFlavourTable),genJetFlavourAssociation) -run2_nanoAOD_92X.toReplaceWith( nanoSequence, _92x_sequence) -run2_nanoAOD_92X.toReplaceWith( nanoSequenceMC, _92x_sequenceMC) From 6318be03ecb3ebf7b3dc4b0a1032004edaf30033 Mon Sep 17 00:00:00 2001 From: Giovanni Date: Wed, 21 Mar 2018 15:02:27 +0100 Subject: [PATCH 19/19] update DQM --- PhysicsTools/NanoAOD/python/nanoDQM_cfi.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PhysicsTools/NanoAOD/python/nanoDQM_cfi.py b/PhysicsTools/NanoAOD/python/nanoDQM_cfi.py index b59efdf353102..e9b30cb0ca0f9 100644 --- a/PhysicsTools/NanoAOD/python/nanoDQM_cfi.py +++ b/PhysicsTools/NanoAOD/python/nanoDQM_cfi.py @@ -77,7 +77,7 @@ Plot1D('btagDeepB', 'btagDeepB', 20, -1, 1, 'Deep B+BB btag discriminator'), Plot1D('btagHbb', 'btagHbb', 20, -1, 1, 'Higgs to BB tagger discriminator'), Plot1D('eta', 'eta', 20, -4, 4, 'eta'), - Plot1D('jetId', 'jetId', 1, 2.5, 3.5, 'Jet ID flags bit1 is loose, bit2 is tight'), + Plot1D('jetId', 'jetId', 8, -0.5, 7.5, 'Jet ID flags bit1 is loose (always false in 2017 since it does not exist), bit2 is tight, bit3 is tightLepVeto'), Plot1D('mass', 'mass', 20, 0, 300, 'mass'), Plot1D('msoftdrop', 'msoftdrop', 20, -300, 300, 'Soft drop mass'), Plot1D('n2b1', 'n2b1', 20, 0, 1, 'N2 (beta=1)'), @@ -231,7 +231,7 @@ Plot1D('eta', 'eta', 20, -6, 6, 'eta'), NoPlot('genJetIdx'), Plot1D('hadronFlavour', 'hadronFlavour', 6, -0.5, 5.5, 'flavour from hadron ghost clustering'), - Plot1D('jetId', 'jetId', 4, -0.5, 3.5, 'Jet ID flags bit1 is loose, bit2 is tight'), + Plot1D('jetId', 'jetId', 8, -0.5, 7.5, 'Jet ID flags bit1 is loose (always false in 2017 since it does not exist), bit2 is tight, bit3 is tightLepVeto'), Plot1D('mass', 'mass', 20, 0, 200, 'mass'), NoPlot('muonIdx1'), NoPlot('muonIdx2'),