From c2be27388037140157e289e96ddc7afff299ef01 Mon Sep 17 00:00:00 2001 From: swagata87 Date: Wed, 28 Feb 2024 09:43:12 +0100 Subject: [PATCH 1/2] custom nano for e/gamma --- .../parser/ExpressionBinaryOperatorSetter.h | 5 + CommonTools/Utils/interface/parser/Grammar.h | 4 +- .../Utils/test/testExpressionParser.cc | 1 + .../PyReleaseValidation/python/relval_nano.py | 12 +++ PhysicsTools/NanoAOD/python/autoNANO.py | 3 + .../NanoAOD/python/egamma_custom_cff.py | 20 ++++ PhysicsTools/NanoAOD/python/electrons_cff.py | 63 ++++++++++++ PhysicsTools/NanoAOD/python/nanoDQM_cff.py | 96 +++++++++++++++++++ PhysicsTools/NanoAOD/python/nano_cff.py | 1 - PhysicsTools/NanoAOD/python/photons_cff.py | 31 ++++++ 10 files changed, 234 insertions(+), 2 deletions(-) create mode 100644 PhysicsTools/NanoAOD/python/egamma_custom_cff.py diff --git a/CommonTools/Utils/interface/parser/ExpressionBinaryOperatorSetter.h b/CommonTools/Utils/interface/parser/ExpressionBinaryOperatorSetter.h index 314795ca09015..cb334fd66a6b3 100644 --- a/CommonTools/Utils/interface/parser/ExpressionBinaryOperatorSetter.h +++ b/CommonTools/Utils/interface/parser/ExpressionBinaryOperatorSetter.h @@ -22,6 +22,11 @@ namespace reco { T operator()(T lhs, T rhs) const { return pow(lhs, rhs); } }; + template + struct int_div_remainder { + T operator()(T lhs, T rhs) const { return int(lhs) % int(rhs); } + }; + template struct ExpressionBinaryOperatorSetter { ExpressionBinaryOperatorSetter(ExpressionStack& stack) : stack_(stack) {} diff --git a/CommonTools/Utils/interface/parser/Grammar.h b/CommonTools/Utils/interface/parser/Grammar.h index 15071dd6cdbeb..89022623266f1 100644 --- a/CommonTools/Utils/interface/parser/Grammar.h +++ b/CommonTools/Utils/interface/parser/Grammar.h @@ -112,6 +112,7 @@ namespace reco { ExpressionBinaryOperatorSetter > minus_s(self.exprStack); ExpressionBinaryOperatorSetter > multiplies_s(self.exprStack); ExpressionBinaryOperatorSetter > divides_s(self.exprStack); + ExpressionBinaryOperatorSetter > remainder_s(self.exprStack); ExpressionBinaryOperatorSetter > power_of_s(self.exprStack); ExpressionUnaryOperatorSetter > negate_s(self.exprStack); ExpressionFunctionSetter fun_s(self.exprStack, self.finalFunStack); @@ -166,7 +167,8 @@ namespace reco { nocond_expression = term >> (*(('+' >> expect(term))[plus_s] | ('-' >> expect(term))[minus_s])); cond_expression = (ch_p('?') >> logical_expression >> ch_p('?') >> expect(expression) >> ch_p(":") >> expect(expression))[cond_s]; - term = power >> *(('*' >> expect(power))[multiplies_s] | ('/' >> expect(power))[divides_s]); + term = power >> *(('*' >> expect(power))[multiplies_s] | ('/' >> expect(power))[divides_s] | + ('%' >> expect(power))[remainder_s]); power = factor >> *(('^' >> expect(factor))[power_of_s]); factor = number | (function1 >> ch_p('(')[funOk_s] >> expect(expression) >> expectParenthesis(ch_p(')')))[fun_s] | diff --git a/CommonTools/Utils/test/testExpressionParser.cc b/CommonTools/Utils/test/testExpressionParser.cc index 29d26c3ef3dfa..c3b4656baafdf 100644 --- a/CommonTools/Utils/test/testExpressionParser.cc +++ b/CommonTools/Utils/test/testExpressionParser.cc @@ -145,6 +145,7 @@ void testExpressionParser::checkAll() { checkTrack("covariance(1, 1)", trk.covariance(1, 1)); checkTrack("momentum.x", trk.momentum().x()); checkTrack("hitPattern.numberOfValidHits", trk.hitPattern().numberOfValidHits()); + checkTrack("hitPattern.numberOfValidHits % 3", trk.hitPattern().numberOfValidHits() % 3); checkTrack("extra.outerPhi", trk.extra()->outerPhi()); checkTrack("referencePoint.R", trk.referencePoint().R()); checkTrack("algo", reco::Track::pixelPairStep); diff --git a/Configuration/PyReleaseValidation/python/relval_nano.py b/Configuration/PyReleaseValidation/python/relval_nano.py index 3543abac64253..f4abaa0b8d7f4 100644 --- a/Configuration/PyReleaseValidation/python/relval_nano.py +++ b/Configuration/PyReleaseValidation/python/relval_nano.py @@ -171,6 +171,12 @@ def subnext(self): '-n' : '1000'}, steps['NANO_data13.0']]) +steps['EGMNano_data13.0'] = merge([{'-s':'NANO:@EGM,DQM:@nanoAODDQM', '-n' : '1000'}, + steps['NANO_data13.0']]) + +steps['EGMNano_mc13.0'] = merge([{'-s':'NANO:@EGM,DQM:@nanoAODDQM', '-n' : '1000'}, + steps['NANO_mc13.0']]) + ###current release cycle workflows : 13.2 steps['TTBarMINIAOD13.2'] = {'INPUT':InputInfo(location='STD', ## dataset below to be replaced with a 13.2 relval sample when available @@ -183,6 +189,9 @@ def subnext(self): steps['muPOGNANO_mc13.2']=merge([{'-s' : 'NANO:@PHYS+@MUPOG ', '-n' : '1000'}, steps['NANO_mc13.2']]) +steps['EGMNano_mc13.2'] = merge([{'-s':'NANO:@EGM,DQM:@nanoAODDQM', '-n' : '1000'}, + steps['NANO_mc13.2']]) + ##13.X INPUT steps['RunScoutingPFRun32022D13.X']={'INPUT':InputInfo(dataSet='/ScoutingPFRun3/Run2022D-v1/RAW',label='2022D',events=100000,location='STD', ls=Run2022D)} @@ -240,12 +249,15 @@ def subnext(self): workflows[_wfn()] = ['muDPGNANO130Xrun3', ['ZMuSkim2023DRAWRECO13.0', 'muDPGNANO_data13.0']] workflows[_wfn()] = ['muDPGNANOBkg130Xrun3', ['ZeroBias2023DRAW13.0', 'muDPGNANOBkg_data13.0']] workflows[_wfn()] = ['muPOGNANO_data13.0', ['MuonEG2023MINIAOD13.0', 'muPOGNANO_data13.0']] +workflows[_wfn()] = ['EGMNANOdata130Xrun3', ['MuonEG2023MINIAOD13.0', 'EGMNano_data13.0']] +workflows[_wfn()] = ['EGMNANOmc130X', ['TTBarMINIAOD13.0', 'EGMNano_mc13.0']] _wfn.next() ################ #13.2 workflows workflows[_wfn()] = ['NANOmc132X', ['TTBarMINIAOD13.2', 'NANO_mc13.2', 'HRV_NANO_mc']] workflows[_wfn()] = ['muPOGNANO_mc13.2', ['TTBarMINIAOD13.2', 'muPOGNANO_mc13.2']] +workflows[_wfn()] = ['EGMNANOmc132X', ['TTBarMINIAOD13.2', 'EGMNano_mc13.2']] _wfn.next() ################ diff --git a/PhysicsTools/NanoAOD/python/autoNANO.py b/PhysicsTools/NanoAOD/python/autoNANO.py index d1ac111b06989..33dd0558a1991 100644 --- a/PhysicsTools/NanoAOD/python/autoNANO.py +++ b/PhysicsTools/NanoAOD/python/autoNANO.py @@ -35,6 +35,9 @@ def expandNanoMapping(seqList, mapping, key): 'customize': 'DPGAnalysis/MuonTools/muNtupleProducer_cff.muDPGNanoCustomize'}, 'MUDPGBKG' : {'sequence': 'DPGAnalysis/MuonTools/muNtupleProducerBkg_cff.muDPGNanoProducerBkg', 'customize': 'DPGAnalysis/MuonTools/muNtupleProducerBkg_cff.muDPGNanoBkgCustomize'}, + #EGM flavours: add variables through customize + 'EGM' : {'sequence': '@PHYS', + 'customize' : '@PHYS+PhysicsTools/NanoAOD/egamma_custom_cff.addExtraEGammaVarsCustomize'}, # PromptReco config: PHYS+L1 'Prompt' : {'sequence': '@PHYS', 'customize': '@PHYS+@L1'}, diff --git a/PhysicsTools/NanoAOD/python/egamma_custom_cff.py b/PhysicsTools/NanoAOD/python/egamma_custom_cff.py new file mode 100644 index 0000000000000..ece02e61daf24 --- /dev/null +++ b/PhysicsTools/NanoAOD/python/egamma_custom_cff.py @@ -0,0 +1,20 @@ +import FWCore.ParameterSet.Config as cms +from PhysicsTools.NanoAOD.common_cff import * +from PhysicsTools.NanoAOD.electrons_cff import * +from PhysicsTools.NanoAOD.electrons_cff import _eleVarsExtra +from PhysicsTools.NanoAOD.photons_cff import * +from PhysicsTools.NanoAOD.photons_cff import _phoVarsExtra +from PhysicsTools.NanoAOD.NanoAODEDMEventContent_cff import * +from PhysicsTools.NanoAOD.nanoDQM_cfi import nanoDQM +from PhysicsTools.NanoAOD.nanoDQM_cff import _Photon_extra_plots, _Electron_extra_plots + +def addExtraEGammaVarsCustomize(process): + #photon + process.photonTable.variables.setValue(_phoVarsExtra.parameters_()) + if process.nanoDQM: + process.nanoDQM.vplots.Photon.plots = _Photon_extra_plots + #electron + process.electronTable.variables.setValue(_eleVarsExtra.parameters_()) + if process.nanoDQM: + process.nanoDQM.vplots.Electron.plots = _Electron_extra_plots + return process diff --git a/PhysicsTools/NanoAOD/python/electrons_cff.py b/PhysicsTools/NanoAOD/python/electrons_cff.py index e2dd3f0d2dcc6..3ba7fc290fc96 100644 --- a/PhysicsTools/NanoAOD/python/electrons_cff.py +++ b/PhysicsTools/NanoAOD/python/electrons_cff.py @@ -364,6 +364,69 @@ def _get_bitmapVIDForEle_docstring(modules,WorkingPoints): ), ) +# extra variables for e/gamma custom nano +_eleVarsExtra = cms.PSet( + r9Frac = Var("r9()",float,doc="Fractional R9 of the supercluster",precision=10), + DeltaEtaInSC = Var("deltaEtaSuperClusterTrackAtVtx",float,doc="dEta(Inner track, supercluster)",precision=10), + DeltaEtaInSeed = Var("deltaEtaSeedClusterTrackAtCalo",float,doc="dEta(Inner track, seedcluster)",precision=10), + DeltaPhiInSC = Var("deltaPhiSuperClusterTrackAtVtx",float,doc="dPhi(Inner track, supercluster)",precision=10), + DeltaPhiInSeed = Var("deltaPhiSeedClusterTrackAtCalo",float,doc="dPhi(Inner track, seedcluster)",precision=10), + full5x5HoverE = Var("full5x5_hcalOverEcal",float,doc="full5x5 H/E",precision=10), + eSCOverP = Var("eSuperClusterOverP",float,doc="E/P",precision=10), + eEleOverPout = Var("eEleClusterOverPout",float,doc="EleE/Pouter",precision=10), + e1x5 = Var("full5x5_e1x5",float,doc="energy in 1x5",precision=10), + e2x5max = Var("full5x5_e2x5Max",float,doc="energy in 2x5",precision=10), + e5x5 = Var("full5x5_e5x5",float,doc="energy in 5x5",precision=10), + closestKFchi2 = Var("closestCtfTrackNormChi2",float,doc="KF track Chi2",precision=10), + closestKFNLayers = Var("closestCtfTrackNLayers",int,doc="KF track number of layers"), + dr03HcalTowerSumEt = Var("dr03HcalTowerSumEt",float,doc="HCal isolation",precision=10), + GSFchi2 = Var("gsfTrack.normalizedChi2",float,doc="GSF track Chi2",precision=10), + superclusterEta = Var("superCluster.eta",float,doc="supercluster eta",precision=10), + ecalPFClusIso = Var("ecalPFClusterIso",float,doc="ECAL PF cluster isolation",precision=10), + hcalPFClusIso = Var("hcalPFClusterIso",float,doc="HCAL PF cluster isolation",precision=10), + nBrem = Var("numberOfBrems",int,doc="number of brems"), + pfPhotonIso = Var("pfIsolationVariables.sumPhotonEt",float,doc="PF photon isolation (no PU correction)",precision=10), + pfChargedHadIso = Var("pfIsolationVariables.sumChargedHadronPt",float,doc="PF charged-hadron isolation (no PU correction)",precision=10), + pfNeutralHadIso = Var("pfIsolationVariables.sumNeutralHadronEt",float,doc="PF neutral-hadron isolation (no PU correction)",precision=10), + sigmaIphiIphiFull5x5 = Var("full5x5_sigmaIphiIphi",float,doc="Full5x5 sigmaIPhiIPhi",precision=10), + etaWidth = Var("superCluster.etaWidth",float,doc="etawidth of supercluster",precision=10), + phiWidth = Var("superCluster.phiWidth",float,doc="phiwidth of supercluster",precision=10), + seedClusEnergy = Var("superCluster.seed.energy",float,doc="seed cluster energy",precision=10), + hoeSingleTower = Var("hcalOverEcalBc",float,doc="Single HCAL tower based H/E",precision=10), + hoeFull5x5 = Var("full5x5_hcalOverEcal",float,doc="Full5x5 cone-based H/E",precision=10), + sigmaIetaIphiFull5x5 = Var("full5x5_showerShape.sigmaIetaIphi",float,doc="Full5x5 sigmaIEtaIPhi",precision=10), + eMax = Var("full5x5_showerShape.eMax",float,doc="Emax",precision=10), + e2nd = Var("full5x5_showerShape.e2nd",float,doc="E2nd",precision=10), + eTop = Var("full5x5_showerShape.eTop",float,doc="Etop",precision=10), + eBottom = Var("full5x5_showerShape.eBottom",float,doc="Ebottom",precision=10), + eLeft = Var("full5x5_showerShape.eLeft",float,doc="Eleft",precision=10), + eRight = Var("full5x5_showerShape.eRight",float,doc="Eright",precision=10), + e2x5Top = Var("full5x5_showerShape.e2x5Top",float,doc="E2x5Top",precision=10), + e2x5Bottom = Var("full5x5_showerShape.e2x5Bottom",float,doc="E2x5Bottom",precision=10), + e2x5Left = Var("full5x5_showerShape.e2x5Left",float,doc="E2x5Left",precision=10), + e2x5Right = Var("full5x5_showerShape.e2x5Right",float,doc="E2x5Right",precision=10), + nSaturatedXtals = Var("nSaturatedXtals",int,doc="number of saturated crystals"), + numberOfClusters = Var("superCluster.clusters.size",int,doc="number of clusters"), + istrackerDriven = Var("trackerDrivenSeed",bool,doc="is tracker driven if true"), + superclusterPhi = Var("superCluster().phi()",float,doc="supercluster phi",precision=10), + seedClusterEta = Var("superCluster().seed().eta()",float,doc="seed cluster eta",precision=10), + seedClusterPhi = Var("superCluster().seed().phi()",float,doc="seed cluster phi",precision=10), + superclusterEnergy = Var("superCluster().energy()",float,doc="only PF cluster energy is corrected, no object-level regression",precision=10), + energy = Var("energy()",float,doc="energy after final regression",precision=10), + trackMomentumError = Var("trackMomentumError",float,doc="trackMomentum error",precision=10), + trackMomentum = Var("trackMomentumAtVtx().R()",float,doc="trackMomentum at vertex",precision=10), + trkLayersWithMeas = Var("gsfTrack.hitPattern.trackerLayersWithMeasurement",int,doc="trackerLayersWithMeasurement"), + nValidPixBarrelHits = Var("gsfTrack.hitPattern.numberOfValidPixelBarrelHits",int,doc="numberOfValidPixelBarrelHits"), + nValidPixEndcapHits = Var("gsfTrack.hitPattern.numberOfValidPixelEndcapHits",int,doc="numberOfValidPixelEndcapHits"), + superClusterFbrem = Var("superClusterFbrem",float,doc="superClusterFbrem",precision=10), + convVtxFitProb = Var("convVtxFitProb",float,doc="convVtxFitProb",precision=10), + clustersSize = Var("superCluster.clustersSize",int,doc="clustersSize"), + iEtaMod5 = Var("?superCluster.seedCrysIEtaOrIx>0?(superCluster.seedCrysIEtaOrIx-1)%5:(superCluster.seedCrysIEtaOrIx+1)%5",int,doc="iEtaMod5"), + iEtaMod20 = Var("?abs(superCluster.seedCrysIEtaOrIx)<=25?(superCluster.seedCrysIEtaOrIx-(?superCluster.seedCrysIEtaOrIx>0?+1:-1))%20:(superCluster.seedCrysIEtaOrIx-(?superCluster.seedCrysIEtaOrIx>0?+26:-26))%20",int,doc="iEtaMod20"), + iPhiMod2 = Var("(superCluster.seedCrysIPhiOrIy-1)%2",int,doc="iPhiMod2"), + iPhiMod20 = Var("(superCluster.seedCrysIPhiOrIy-1)%20",int,doc="iPhiMod20"), +) + (run2_egamma).toModify( # energy scale/smearing: only for Run2 electronTable.variables, diff --git a/PhysicsTools/NanoAOD/python/nanoDQM_cff.py b/PhysicsTools/NanoAOD/python/nanoDQM_cff.py index 4267862671203..00a1e6b8808f5 100644 --- a/PhysicsTools/NanoAOD/python/nanoDQM_cff.py +++ b/PhysicsTools/NanoAOD/python/nanoDQM_cff.py @@ -18,6 +18,102 @@ plots = _boostedTauPlotsV10 ) +## EGamma custom nano +_Electron_extra_plots = nanoDQM.vplots.Electron.plots.copy() +_Electron_extra_plots.extend([ + Plot1D('r9Frac', 'r9Frac', 22, 0, 1.1, 'Fractional R9'), + Plot1D('DeltaEtaInSC', 'DeltaEtaInSC', 20, -0.01, 0.01, 'DEta trk and SuperClus'), + Plot1D('DeltaEtaInSeed', 'DeltaEtaInSeed', 20, -0.005, 0.005, 'DEta trk and SeedClus'), + Plot1D('DeltaPhiInSC', 'DeltaPhiInSC', 20, -0.01, 0.01, 'DPhi trk and SuperClus'), + Plot1D('DeltaPhiInSeed', 'DeltaPhiInSeed', 20, -0.01, 0.01, 'DPhi trk and SeedClus'), + Plot1D('full5x5HoverE', 'full5x5HoverE', 20, 0, 0.2, 'full5x5 H/E'), + Plot1D('eSCOverP', 'eSCOverP', 20, 0, 2.0, 'supercluster E/p'), + Plot1D('eEleOverPout', 'eEleOverPout', 20, 0, 2.0, 'supercluster E/pout'), + Plot1D('e1x5', 'e1x5', 20, 0, 20, 'E1x5'), + Plot1D('e2x5max', 'e2x5max', 20, 0, 20, 'E2x5Max'), + Plot1D('e5x5', 'e5x5', 20, 0, 20, 'E5x5'), + Plot1D('closestKFchi2', 'closestKFchi2', 20, 0, 20, 'closest KF trk chi2'), + Plot1D('closestKFNLayers', 'closestKFNLayers', 20, 0, 19, 'closest KF NLayers'), + Plot1D('dr03HcalTowerSumEt', 'dr03HcalTowerSumEt', 20, 0, 40, 'Hcal isolation'), + Plot1D('GSFchi2', 'GSFchi2', 20, 0, 20, 'GSF chi2'), + Plot1D('superclusterEta', 'superclusterEta', 30, 3.0, 3.0, 'supercluster Eta'), + Plot1D('ecalPFClusIso', 'ecalPFClusIso', 20, 0, 40, 'ecal PF Cluster Isolation'), + Plot1D('hcalPFClusIso', 'hcalPFClusIso', 20, 0, 40, 'hcal PF Cluster Isolation'), + Plot1D('nBrem', 'nBrem', 20, 0, 19, 'num of Brem'), + Plot1D('pfPhotonIso', 'pfPhotonIso', 20, 0, 20, 'pf Photon Isolation'), + Plot1D('pfChargedHadIso', 'pfChargedHadIso', 20, 0, 40, 'pf Charged Hadron Isolation'), + Plot1D('pfNeutralHadIso', 'pfNeutralHadIso', 20, 0, 40, 'pfNeutralHadIso'), + Plot1D('sigmaIphiIphiFull5x5', 'sigmaIphiIphiFull5x5', 20, 0, 0.1, 'sigmaIphiIphi Full5x5'), + Plot1D('etaWidth', 'etaWidth', 20, 0, 0.05, 'eta Width'), + Plot1D('phiWidth', 'phiWidth', 20, 0, 0.1, 'phi Width'), + Plot1D('seedClusEnergy', 'seedClusEnergy', 20, 0, 40, 'seedClusEnergy'), + Plot1D('hoeSingleTower', 'hoeSingleTower', 20, 0, 0.2, 'Single Tower H/E'), + Plot1D('hoeFull5x5', 'hoeFull5x5', 20, 0, 0.2, 'Full5x5 H/E'), + Plot1D('sigmaIetaIphiFull5x5', 'sigmaIetaIphiFull5x5', 20, 0, 0.2, 'full5x5 sigmaIetaIphi'), + Plot1D('eMax', 'eMax', 20, 0, 40, 'eMax'), + Plot1D('e2nd', 'e2nd', 20, 0, 40, 'e2nd'), + Plot1D('eTop', 'eTop', 20, 0, 40, 'eTop'), + Plot1D('eBottom', 'eBottom', 20, 0, 40, 'eBottom'), + Plot1D('eLeft', 'eLeft', 20, 0, 40, 'eLeft'), + Plot1D('eRight', 'eRight', 20, 0, 40, 'eRight'), + Plot1D('e2x5Top', 'e2x5Top', 20, 0, 40, 'e2x5Top'), + Plot1D('e2x5Bottom', 'e2x5Bottom', 20, 0, 40, 'e2x5Bottom'), + Plot1D('e2x5Left', 'e2x5Left', 20, 0, 40, 'e2x5Left'), + Plot1D('e2x5Right', 'e2x5Right', 20, 0, 40, 'e2x5Right'), + Plot1D('nSaturatedXtals', 'nSaturatedXtals', 10, 0, 9, 'number of Saturated crystals'), + Plot1D('numberOfClusters', 'numberOfClusters', 10, 0, 9, 'number of Clusters'), + Plot1D('istrackerDriven', 'istrackerDriven', 2, 0, 1, 'istrackerDriven'), + Plot1D('superclusterPhi', 'superclusterPhi', 32, -3.2, 3.2, 'supercluster Phi'), + Plot1D('seedClusterEta', 'seedClusterEta', 30, -3.0, 3.0, 'seedCluster Eta'), + Plot1D('seedClusterPhi', 'seedClusterPhi', 32, -3.2, 3.2, 'seedCluster Phi'), + Plot1D('superclusterEnergy', 'superclusterEnergy', 80, 0, 80, 'supercluster Energy'), + Plot1D('energy', 'energy', 20, 0, 80, 'energy'), + Plot1D('trackMomentumError', 'trackMomentumError', 20, 0, 1.0, 'trackMomentumError'), + Plot1D('trackMomentum', 'trackMomentum', 20, 0, 80, 'trackMomentum'), + Plot1D('trkLayersWithMeas', 'trkLayersWithMeas', 20, 0, 19, 'trkLayersWithMeas'), + Plot1D('nValidPixBarrelHits', 'nValidPixBarrelHits', 5, 0, 4, 'nValidPixBarrelHits'), + Plot1D('nValidPixEndcapHits', 'nValidPixEndcapHits', 20, 0, 19, 'nValidPixEndcapHits'), + Plot1D('superClusterFbrem', 'superClusterFbrem', 12, 0, 1.2, 'superClusterFbrem'), + Plot1D('convVtxFitProb', 'convVtxFitProb', 12, 0, 1.2, 'convVtxFitProb'), + Plot1D('clustersSize', 'clustersSize', 20, 0, 19, 'clustersSize'), + Plot1D('iEtaMod5', 'iEtaMod5', 20, 0, 40, 'iEtaMod5'), + Plot1D('iEtaMod20', 'iEtaMod20', 20, 0, 40, 'iEtaMod20'), + Plot1D('iPhiMod2', 'iPhiMod2', 20, 0, 199, 'iPhiMod2'), + Plot1D('iPhiMod20', 'iPhiMod20', 100, 0, 99, 'iPhiMod20') +]) + +_Photon_extra_plots = nanoDQM.vplots.Photon.plots.copy() +_Photon_extra_plots.extend([ + Plot1D('r9Frac', 'r9Frac', 22, 0, 1.1, 'Fractional R9'), + Plot1D('energy', 'energy', 20, 0, 80, 'energy'), + Plot1D('rawPreshowerEnergy', 'rawPreshowerEnergy', 20, 0, 80, 'rawPreshowerEnergy'), + Plot1D('seedClusEnergy', 'seedClusEnergy', 20, 0, 40, 'seedClusEnergy'), + Plot1D('e5x5', 'e5x5', 20, 0, 20, 'E5x5'), + Plot1D('dEtaSeedClusSuperClus', 'dEtaSeedClusSuperClus', 20, 0, 1.0, 'dEtaSeedClusSuperClus'), + Plot1D('dPhiSeedClusSuperClus', 'dPhiSeedClusSuperClus', 20, 0, 1.0, 'dPhiSeedClusSuperClus'), + Plot1D('sigmaIphiIphiFull5x5', 'sigmaIphiIphiFull5x5', 20, 0, 0.1, 'sigmaIphiIphi Full5x5'), + Plot1D('eMax', 'eMax', 20, 0, 40, 'eMax'), + Plot1D('e2nd', 'e2nd', 20, 0, 40, 'e2nd'), + Plot1D('eTop', 'eTop', 20, 0, 40, 'eTop'), + Plot1D('eBottom', 'eBottom', 20, 0, 40, 'eBottom'), + Plot1D('eLeft', 'eLeft', 20, 0, 40, 'eLeft'), + Plot1D('eRight', 'eRight', 20, 0, 40, 'eRight'), + Plot1D('e2x5Top', 'e2x5Top', 20, 0, 40, 'e2x5Top'), + Plot1D('e2x5Bottom', 'e2x5Bottom', 20, 0, 40, 'e2x5Bottom'), + Plot1D('e2x5Left', 'e2x5Left', 20, 0, 40, 'e2x5Left'), + Plot1D('e2x5Right', 'e2x5Right', 20, 0, 40, 'e2x5Right'), + Plot1D('nSaturatedXtals', 'nSaturatedXtals', 10, 0, 9, 'number of Saturated crystals'), + Plot1D('numberOfClusters', 'numberOfClusters', 10, 0, 9, 'number of Clusters'), + Plot1D('hadTowOverEm', 'hadTowOverEm', 20, 0, 0.2, 'Single Tower H/E'), + Plot1D('ecalRecHitIsolation', 'ecalRecHitIsolation', 20, 0, 40, 'ecal RecHit Isolation'), + Plot1D('sigmaIetaIetaFrac', 'sigmaIetaIetaFrac', 20, 0, 0.08, 'sigmaIetaIetaFrac'), + Plot1D('chargedHadronIso', 'chargedHadronIso', 20, 0, 40, 'chargedHadronIso'), + Plot1D('iEtaMod5', 'iEtaMod5', 20, 0, 40, 'iEtaMod5'), + Plot1D('iEtaMod20', 'iEtaMod20', 20, 0, 40, 'iEtaMod20'), + Plot1D('iPhiMod2', 'iPhiMod2', 20, 0, 199, 'iPhiMod2'), + Plot1D('iPhiMod20', 'iPhiMod20', 100, 0, 99, 'iPhiMod20') +]) + _Electron_Run2_plots = cms.VPSet() for plot in nanoDQM.vplots.Electron.plots: if 'Fall17V2' not in plot.name.value(): diff --git a/PhysicsTools/NanoAOD/python/nano_cff.py b/PhysicsTools/NanoAOD/python/nano_cff.py index 05b93bee87630..515c0c75d066a 100644 --- a/PhysicsTools/NanoAOD/python/nano_cff.py +++ b/PhysicsTools/NanoAOD/python/nano_cff.py @@ -287,4 +287,3 @@ def nanoL1TrigObjCustomize(process): def nanoL1TrigObjCustomizeFull(process): process.nanoTableTaskCommon.add(process.l1TablesTask) return process - diff --git a/PhysicsTools/NanoAOD/python/photons_cff.py b/PhysicsTools/NanoAOD/python/photons_cff.py index c99619d353f2b..b78c1e397fcf6 100644 --- a/PhysicsTools/NanoAOD/python/photons_cff.py +++ b/PhysicsTools/NanoAOD/python/photons_cff.py @@ -245,6 +245,37 @@ def make_bitmapVID_docstring(id_modules_working_points_pset): ) ) +_phoVarsExtra = cms.PSet( + r9Frac = Var("r9()",float,doc="Fractional R9 of the supercluster",precision=10), + energy = Var("energy",float,doc="energy after regression",precision=10), + rawPreshowerEnergy = Var("superCluster.preshowerEnergy",float,doc="energy deposited in preshower",precision=10), + seedClusEnergy = Var("superCluster.seed.energy",float,doc="seed cluster energy",precision=10), + e5x5 = Var("full5x5_showerShapeVariables.e5x5",float,doc="energy in 5x5",precision=10), + dEtaSeedClusSuperClus = Var("superCluster.seed.eta-superCluster.position.Eta",float,doc="dEta(seed,SC)",precision=10), + dPhiSeedClusSuperClus = Var("deltaPhi(superCluster.seed.phi,superCluster.position.Phi)",float,doc="dPhi(seed,SC)",precision=10), + sigmaIphiIphiFull5x5 = Var("full5x5_showerShapeVariables().sigmaIphiIphi",float,doc="Full5x5 sigmaIPhiIPhi",precision=10), + eMax = Var("full5x5_maxEnergyXtal()",float,doc="Emax",precision=10), + e2nd = Var("full5x5_showerShapeVariables.e2nd",float,doc="E2nd",precision=10), + eTop = Var("full5x5_showerShapeVariables.eTop",float,doc="Etop",precision=10), + eBottom = Var("full5x5_showerShapeVariables.eBottom",float,doc="Ebottom",precision=10), + eLeft = Var("full5x5_showerShapeVariables.eLeft",float,doc="Eleft",precision=10), + eRight = Var("full5x5_showerShapeVariables.eRight",float,doc="Eright",precision=10), + e2x5max = Var("full5x5_showerShapeVariables.e2x5Max",float,doc="energy in 2x5",precision=10), + e2x5Top = Var("full5x5_showerShapeVariables.e2x5Top",float,doc="E2x5Top",precision=10), + e2x5Bottom = Var("full5x5_showerShapeVariables.e2x5Bottom",float,doc="E2x5Bottom",precision=10), + e2x5Left = Var("full5x5_showerShapeVariables.e2x5Left",float,doc="E2x5Left",precision=10), + e2x5Right = Var("full5x5_showerShapeVariables.e2x5Right",float,doc="E2x5Right",precision=10), + nSaturatedXtals = Var("nSaturatedXtals",int,doc="number of saturated crystals"), + numberOfClusters = Var("superCluster.clusters.size",int,doc="number of clusters"), + hadTowOverEm = Var("hadTowOverEm",float,doc="single tower based H/E",precision=10), + ecalRecHitIsolation = Var("ecalRecHitSumEtConeDR03",float,doc="ECAL RecHit isolation",precision=10), + sigmaIetaIetaFrac = Var("sigmaIetaIeta",float,doc="fractional sigmaIetaIeta",precision=10), + chargedHadronIso = Var("chargedHadronIso",float,doc="charged hadron Isolation",precision=10), + iEtaMod5 = Var("?superCluster.seedCrysIEtaOrIx>0?(superCluster.seedCrysIEtaOrIx-1)%5:(superCluster.seedCrysIEtaOrIx+1)%5",int,doc="iEtaMod5"), + iEtaMod20 = Var("?abs(superCluster.seedCrysIEtaOrIx)<=25?(superCluster.seedCrysIEtaOrIx-(?superCluster.seedCrysIEtaOrIx>0?+1:-1))%20:(superCluster.seedCrysIEtaOrIx-(?superCluster.seedCrysIEtaOrIx>0?+26:-26))%20",int,doc="iEtaMod20"), + iPhiMod2 = Var("(superCluster.seedCrysIPhiOrIy-1)%2",int,doc="iPhiMod2"), + iPhiMod20 = Var("(superCluster.seedCrysIPhiOrIy-1)%20",int,doc="iPhiMod20"), +) #these eras need to make the energy correction, hence the "New". Also save only Fall17V2 IDS in Run2, No Run3 Winter22V1 and quadratic iso in Run2 run2_egamma.toModify( From 698a4337b617bbc11190099079e404614b7151e3 Mon Sep 17 00:00:00 2001 From: swagata87 Date: Thu, 29 Feb 2024 09:09:38 +0100 Subject: [PATCH 2/2] small update, as suggested by JR --- Configuration/PyReleaseValidation/python/relval_nano.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Configuration/PyReleaseValidation/python/relval_nano.py b/Configuration/PyReleaseValidation/python/relval_nano.py index f4abaa0b8d7f4..160da003f55e6 100644 --- a/Configuration/PyReleaseValidation/python/relval_nano.py +++ b/Configuration/PyReleaseValidation/python/relval_nano.py @@ -243,6 +243,7 @@ def subnext(self): ################ #13.0 workflows workflows[_wfn()] = ['NANOmc130X', ['TTBarMINIAOD13.0', 'NANO_mc13.0', 'HRV_NANO_mc']] +workflows[_wfn()] = ['EGMNANOmc130X', ['TTBarMINIAOD13.0', 'EGMNano_mc13.0']] _wfn.subnext() workflows[_wfn()] = ['NANOdata130Xrun3', ['MuonEG2023MINIAOD13.0', 'NANO_data13.0', 'HRV_NANO_data']] workflows[_wfn()] = ['NANOdata130Xrun3', ['MuonEG2023MINIAOD13.0', 'NANO_data13.0_prompt', 'HRV_NANO_data']] @@ -250,7 +251,6 @@ def subnext(self): workflows[_wfn()] = ['muDPGNANOBkg130Xrun3', ['ZeroBias2023DRAW13.0', 'muDPGNANOBkg_data13.0']] workflows[_wfn()] = ['muPOGNANO_data13.0', ['MuonEG2023MINIAOD13.0', 'muPOGNANO_data13.0']] workflows[_wfn()] = ['EGMNANOdata130Xrun3', ['MuonEG2023MINIAOD13.0', 'EGMNano_data13.0']] -workflows[_wfn()] = ['EGMNANOmc130X', ['TTBarMINIAOD13.0', 'EGMNano_mc13.0']] _wfn.next() ################