Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run iii electron cut based #39839

Closed
wants to merge 9 commits into from
30 changes: 25 additions & 5 deletions PhysicsTools/NanoAOD/python/electrons_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
modules = cms.vstring(
'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V1_cff',
'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V2_cff',
'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Winter22_122X_V1_cff',
'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV70_cff',
'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V1_cff',
'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V1_cff',
Expand Down Expand Up @@ -99,6 +100,16 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints):
)
_bitmapVIDForEle_docstring = _get_bitmapVIDForEle_docstring(electron_id_modules_WorkingPoints_nanoAOD.modules,bitmapVIDForEle.WorkingPoints)

bitmapVIDForEleRunIIIWinter22 = bitmapVIDForEle.clone(
WorkingPoints = cms.vstring(
"egmGsfElectronIDs:cutBasedElectronID-RunIIIWinter22-V1-veto",
"egmGsfElectronIDs:cutBasedElectronID-RunIIIWinter22-V1-loose",
"egmGsfElectronIDs:cutBasedElectronID-RunIIIWinter22-V1-medium",
"egmGsfElectronIDs:cutBasedElectronID-RunIIIWinter22-V1-tight"
)
)
_bitmapVIDForEleRunIIIWinter22_docstring = _get_bitmapVIDForEle_docstring(electron_id_modules_WorkingPoints_nanoAOD.modules,bitmapVIDForEleRunIIIWinter22.WorkingPoints)

bitmapVIDForEleSpring15 = bitmapVIDForEle.clone(
WorkingPoints = cms.vstring(
"egmGsfElectronIDs:cutBasedElectronID-Spring15-25ns-V1-standalone-veto",
Expand All @@ -117,6 +128,7 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints):
"egmGsfElectronIDs:cutBasedElectronID-Summer16-80X-V1-tight",
)
)

_bitmapVIDForEleSum16_docstring = _get_bitmapVIDForEle_docstring(electron_id_modules_WorkingPoints_nanoAOD.modules,bitmapVIDForEleSum16.WorkingPoints)

bitmapVIDForEleHEEP = bitmapVIDForEle.clone(
Expand All @@ -132,8 +144,8 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints):
relative = cms.bool(False),
rho_MiniIso = cms.InputTag("fixedGridRhoFastjetAll"),
rho_PFIso = cms.InputTag("fixedGridRhoFastjetAll"),
EAFile_MiniIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"),
EAFile_PFIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"),
EAFile_MiniIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Run3_Winter22/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_122X.txt"),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't we want to keep the Fall17 constants for Run2 samples?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, @rgoldouz can you fix it please? It's better to not delete anything related to Run2 IDs, but just add things related to Run3 IDs.

EAFile_PFIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Run3_Winter22/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_122X.txt"),
)
run2_miniAOD_80XLegacy.toModify(isoForEle,
EAFile_MiniIso = "RecoEgamma/ElectronIdentification/data/Spring15/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_25ns.txt",
Expand Down Expand Up @@ -243,10 +255,15 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints):
cutbasedID_Fall17_V2_loose = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-loose"),
cutbasedID_Fall17_V2_medium = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-medium"),
cutbasedID_Fall17_V2_tight = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-tight"),
cutbasedID_RunIIIWinter22_veto = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-RunIIIWinter22-V1-veto"),
cutbasedID_RunIIIWinter22_loose = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-RunIIIWinter22-V1-loose"),
cutbasedID_RunIIIWinter22_medium = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-RunIIIWinter22-V1-medium"),
cutbasedID_RunIIIWinter22_tight = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-RunIIIWinter22-V1-tight"),
cutbasedID_HEEP = cms.InputTag("egmGsfElectronIDs:heepElectronID-HEEPV70"),
),
userInts = cms.PSet(
VIDNestedWPBitmap = cms.InputTag("bitmapVIDForEle"),
VIDNestedWPBitmapRunIIIWinter22 = cms.InputTag("bitmapVIDForEleRunIIIWinter22"),
VIDNestedWPBitmapHEEP = cms.InputTag("bitmapVIDForEleHEEP"),
seedGain = cms.InputTag("seedGainEle"),
),
Expand Down Expand Up @@ -282,8 +299,7 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints):
cutbasedID_Fall17_V2_veto = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-veto"),
cutbasedID_Fall17_V2_loose = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-loose"),
cutbasedID_Fall17_V2_medium = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-medium"),
cutbasedID_Fall17_V2_tight = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-tight"),

cutbasedID_Fall17_V2_tight = cms.InputTag("egmGsfElectronIDs:cutBasedElectronID-Fall17-94X-V2-tight"),
)

run2_miniAOD_80XLegacy.toModify(slimmedElectronsWithUserData.userFloats,
Expand Down Expand Up @@ -388,7 +404,9 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints):
mvaHZZIso = Var("userFloat('mvaHZZIso')", float,doc="HZZ MVA Iso ID score"),

cutBased = Var("userInt('cutbasedID_Fall17_V2_veto')+userInt('cutbasedID_Fall17_V2_loose')+userInt('cutbasedID_Fall17_V2_medium')+userInt('cutbasedID_Fall17_V2_tight')",int,doc="cut-based ID Fall17 V2 (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"),
cutBasedRunIIIWinter22 = Var("userInt('cutbasedID_RunIIIWinter22_veto')+userInt('cutbasedID_RunIIIWinter22_loose')+userInt('cutbasedID_RunIIIWinter22_medium')+userInt('cutbasedID_RunIIIWinter22_tight')",int,doc="cut-based ID Fall17 V2 (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"),
vidNestedWPBitmap = Var("userInt('VIDNestedWPBitmap')",int,doc=_bitmapVIDForEle_docstring),
vidNestedWPBitmapRunIIIWinter22 = Var("userInt('VIDNestedWPBitmapRunIIIWinter22')",int,doc=_bitmapVIDForEleRunIIIWinter22_docstring),
vidNestedWPBitmapHEEP = Var("userInt('VIDNestedWPBitmapHEEP')",int,doc=_bitmapVIDForEleHEEP_docstring),
cutBased_HEEP = Var("userInt('cutbasedID_HEEP')",bool,doc="cut-based HEEP ID"),
miniPFRelIso_chg = Var("userFloat('miniIsoChg')/pt",float,doc="mini PF relative isolation, charged component"),
Expand Down Expand Up @@ -450,6 +468,7 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints):
#cutBased in 2016 corresponds to Spring16 not Fall17V2, so have to add in V2 ID explicitly
#it also doesnt exist in the miniAOD so have to redo it
cutBased = Var("userInt('cutbasedID_Fall17_V2_veto')+userInt('cutbasedID_Fall17_V2_loose')+userInt('cutbasedID_Fall17_V2_medium')+userInt('cutbasedID_Fall17_V2_tight')",int,doc="cut-based ID Fall17 V2 (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"),
cutBasedRunIIIWinter22 = Var("userInt('cutbasedID_RunIIIWinter22_veto')+userInt('cutbasedID_RunIIIWinter22_loose')+userInt('cutbasedID_RunIIIWinter22_medium')+userInt('cutbasedID_RunIIIWinter22_tight')",int,doc="cut-based ID RunIIIWinter22 (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"),
cutBased_HLTPreSel = Var("userInt('cutbasedID_HLT')",int,doc="cut-based HLT pre-selection ID"),
cutBased_HEEP = Var("electronID('heepElectronID-HEEPV70')",bool,doc="cut-based HEEP ID"),
cutBased_Spring15 = Var("userInt('cutbasedID_Spring15_veto')+userInt('cutbasedID_Spring15_loose')+userInt('cutbasedID_Spring15_medium')+userInt('cutbasedID_Spring15_tight')",int,doc="cut-based Spring15 ID (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)"),
Expand Down Expand Up @@ -539,7 +558,7 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints):
genparticles = cms.InputTag("finalGenParticles"),
)

electronTask = cms.Task(bitmapVIDForEle,bitmapVIDForEleHEEP,isoForEle,ptRatioRelForEle,seedGainEle,calibratedPatElectronsNano,slimmedElectronsWithUserData,finalElectrons)
electronTask = cms.Task(bitmapVIDForEle,bitmapVIDForEleRunIIIWinter22,bitmapVIDForEleHEEP,isoForEle,ptRatioRelForEle,seedGainEle,calibratedPatElectronsNano,slimmedElectronsWithUserData,finalElectrons)
electronTablesTask = cms.Task(electronMVATTH, electronTable)
electronMCTask = cms.Task(tautaggerForMatching, matchingElecPhoton, electronsMCMatchForTable, electronsMCMatchForTableAlt, electronMCTable)

Expand All @@ -550,6 +569,7 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints):
#for NANO from reminAOD, no need to run slimmedElectronsUpdated, other modules of electron sequence will run on slimmedElectrons
for modifier in run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1:
modifier.toModify(bitmapVIDForEle, src = "slimmedElectronsUpdated")
modifier.toModify(bitmapVIDForEleRunIIIWinter22, src = "slimmedElectronsUpdated")
modifier.toModify(bitmapVIDForEleSpring15, src = "slimmedElectronsUpdated")
modifier.toModify(bitmapVIDForEleSum16, src = "slimmedElectronsUpdated")
modifier.toModify(bitmapVIDForEleHEEP, src = "slimmedElectronsUpdated")
Expand Down
2 changes: 2 additions & 0 deletions PhysicsTools/NanoAOD/python/nanoDQM_cfi.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
Plot1D('cleanmask', 'cleanmask', 1, 0.5, 1.5, 'simple cleaning mask with priority to leptons'),
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('cutBasedRunIIIWinter22', 'cutBasedRunIIIWinter22', 5, -0.5, 4.5, 'cut-based ID RunIIIWinter22 (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('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'),
Expand Down Expand Up @@ -105,6 +106,7 @@
Plot1D('sip3d', 'sip3d', 20, 0, 20, '3D impact parameter significance wrt first PV, in cm'),
Plot1D('tightCharge', 'tightCharge', 3, -0.5, 2.5, 'Tight charge criteria (0:none, 1:isGsfScPixChargeConsistent, 2:isGsfCtfScPixChargeConsistent)'),
NoPlot('vidNestedWPBitmap'),
NoPlot('vidNestedWPBitmapRunIIIWinter22'),
NoPlot('vidNestedWPBitmapHEEP'),
Plot1D('dEscaleUp', 'dEscaleUp', 100, -0.01, 0.01, '#Delta E scaleUp'),
Plot1D('dEscaleDown', 'dEscaleDown', 100, -0.01, 0.01, '#Delta E scaleDown'),
Expand Down
1 change: 1 addition & 0 deletions PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -295,6 +295,7 @@ def _add_deepFlavour(process):
'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV71_cff',
'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V1_cff',
'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V2_cff',
'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Winter22_122X_V1_cff',
'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V1_cff',
'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V1_cff',
'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V2_cff',
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# This file contains Effective Area constants for
# computing pile-up corrections for the neutral hadron and photon
# isolation for an electron object.
# Documentation:
#
#https://indico.cern.ch/event/1204275/contributions/5064343/attachments/2529616/4353987/Electron_cutbasedID_preliminaryID.pdf
# (slides 4 to 7)
#
# The effective areas are based on 90% efficient contours
#
# |eta| min |eta| max effective area
0.000 1.000 0.1243
1.000 1.479 0.1458
1.479 2.000 0.0992
2.000 2.200 0.0794
2.200 2.300 0.0762
2.300 2.400 0.0766
2.400 2.500 0.1003