diff --git a/configs/V38nano/README.md b/configs/V38nano/README.md index d82151a1..755a3791 100644 --- a/configs/V38nano/README.md +++ b/configs/V38nano/README.md @@ -1,4 +1,5 @@ -# V33 version +# V38 DT12x version -Based on https://github.com/cms-l1-dpg/Phase2-L1Nano/tree/v33_1400pre3v1 +Based on https://github.com/cms-l1-dpg/Phase2-L1Nano/tree/v38_1400pre3v9 +Uses the Annual Review branch 1400pre3v9 and includes rerunning the TrackTrigger. \ No newline at end of file diff --git a/configs/V38nano/caching.yaml b/configs/V38nano/caching.yaml index 4eec6a5a..71867337 100644 --- a/configs/V38nano/caching.yaml +++ b/configs/V38nano/caching.yaml @@ -94,37 +94,4 @@ V38nano: L1TrackHT: [ht, mht] L1TrackJet: [pt, eta, phi] L1TrackTripletWord: [pt] - L1ExtTrackHT: [ht, mht] -# # #### LLP -# # HtoLLPto4mu_Ctau900mm: -# # ntuple_path: /eos/cms/store/group/dpg_trigger/comm_trigger/L1Trigger/alobanov/phase2/menu/ntuples/14X/v36/HTo2LongLivedTo4mu_MH-125_MFF-12_CTau-900mm_TuneCP5_14TeV-pythia8/HtoLLPto4mu_Ctau90cm_131_L1Fix_myIBv6_noTkTrg_resub/240403_222836/0000/L1Nano_*.root -# # trees_branches: -# # Events: -# # GenPart: "all" -# # ## Muons -# # L1gmtTkMuon: "all" -# # L1gmtMuon: "all" -# # L1gmtDispMuon: "all" -# # ## TF Muons -# # L1MuonKMTF: "all" -# # L1MuonOMTF: "all" -# # L1MuonEMTF: "all" -# # L1DispMuonKMTF: "all" -# # L1DispMuonOMTF: "all" -# # L1DispMuonEMTF: "all" -# HtoLLPto4b_M125_Phi60_ctau100: -# ntuple_path: /eos/cms/store/group/dpg_trigger/comm_trigger/L1Trigger/alobanov/phase2/menu/ntuples/14X/v37/HiddenGluGluH_mH-125_Phi-60_ctau-100_bbbb_TuneCP5_14TeV-pythia8/HiddenHto4b_M125_Phi60_ctau100_IBv8_wTT/240411_082132/0000/*.root -# trees_branches: -# Events: -# GenJet: "all" -# # # jets -# L1puppiJetSC4sums: [pt, phi] -# # L1puppiJetSC4: [pt, eta, phi] -# # L1puppiJetSC8: [pt, eta, phi] -# # L1puppiExtJetSC4: [pt, eta, phi, btagScore] -# # L1caloJet: [pt, eta, phi] -# ## track-only -# # L1TrackMET: [pt] -# L1TrackHT: [ht, mht] -# L1ExtTrackHT: [ht, mht] -# # L1TrackJet: [pt, eta, phi] + L1ExtTrackHT: [ht] \ No newline at end of file diff --git a/configs/V38nano/caching_signal.yaml b/configs/V38nano/caching_signal.yaml new file mode 100644 index 00000000..b1ed26e9 --- /dev/null +++ b/configs/V38nano/caching_signal.yaml @@ -0,0 +1,109 @@ +V38nano: + HHToBBTauTau: + ntuple_path: /eos/cms/store/group/dpg_trigger/comm_trigger/L1Trigger/alobanov/phase2/menu/ntuples/14X/v38/GluGluToHHTo2B2Tau_node_SM_TuneCP5_14TeV-madgraph-pythia8/HHTo2B2Tau_131_200PU_IBv9_wTT/240412_210926/0000/*.root + trees_branches: + Events: + # PV + L1PV: [z0] + ## EG + L1tkPhoton: "all" + L1tkElectron: "all" + L1EGbarrel: "all" + L1EGendcap: "all" + ## MUONS + L1gmtTkMuon: "all" + L1gmtMuon: "all" # aka gmtMuon + L1gmtDispMuon: "all" + ## TAUS + L1nnPuppiTau: "all" + L1hpsTau: "all" + L1caloTau: "all" + L1nnCaloTau: "all" + ## MET/Sums + L1puppiMET: [pt, phi] + L1puppiMLMET: [pt] + L1puppiJetSC4sums: [pt, phi] + L1puppiHistoJetSums: [pt, phi] + # # jets + L1puppiJetSC4: [pt, eta, phi] + L1puppiJetSC8: [pt, eta, phi] + L1puppiExtJetSC4: [pt, eta, phi, btagScore] + L1puppiJetHisto: [pt, eta, phi] + L1caloJet: [pt, eta, phi] + ## track-only + L1TrackMET: [pt] + L1TrackHT: [ht, mht] + L1TrackJet: [pt, eta, phi] + L1TrackTripletWord: [pt] + L1ExtTrackHT: [ht] + + HtoLLPto4B_M125_Phi60_ctau100: + ntuple_path: /eos/cms/store/group/dpg_trigger/comm_trigger/L1Trigger/alobanov/phase2/menu/ntuples/14X/v38/HiddenGluGluH_mH-125_Phi-60_ctau-100_bbbb_TuneCP5_14TeV-pythia8/*/*/*/*.root + trees_branches: + Events: + # PV + L1PV: [z0] + ## EG + L1tkPhoton: "all" + L1tkElectron: "all" + L1EGbarrel: "all" + L1EGendcap: "all" + ## MUONS + L1gmtTkMuon: "all" + L1gmtMuon: "all" # aka gmtMuon + L1gmtDispMuon: "all" + ## TAUS + L1nnPuppiTau: "all" + L1hpsTau: "all" + L1caloTau: "all" + L1nnCaloTau: "all" + ## MET/Sums + L1puppiMET: [pt, phi] + L1puppiMLMET: [pt] + L1puppiJetSC4sums: [pt, phi] + L1puppiHistoJetSums: [pt, phi] + # # jets + L1puppiJetSC4: [pt, eta, phi] + L1puppiJetSC8: [pt, eta, phi] + L1puppiExtJetSC4: [pt, eta, phi, btagScore] + L1puppiJetHisto: [pt, eta, phi] + L1caloJet: [pt, eta, phi] + ## track-only + L1TrackMET: [pt] + L1TrackHT: [ht, mht] + L1TrackJet: [pt, eta, phi] + L1TrackTripletWord: [pt] + L1ExtTrackHT: [ht] +# # #### LLP +# # HtoLLPto4mu_Ctau900mm: +# # ntuple_path: /eos/cms/store/group/dpg_trigger/comm_trigger/L1Trigger/alobanov/phase2/menu/ntuples/14X/v36/HTo2LongLivedTo4mu_MH-125_MFF-12_CTau-900mm_TuneCP5_14TeV-pythia8/HtoLLPto4mu_Ctau90cm_131_L1Fix_myIBv6_noTkTrg_resub/240403_222836/0000/L1Nano_*.root +# # trees_branches: +# # Events: +# # GenPart: "all" +# # ## Muons +# # L1gmtTkMuon: "all" +# # L1gmtMuon: "all" +# # L1gmtDispMuon: "all" +# # ## TF Muons +# # L1MuonKMTF: "all" +# # L1MuonOMTF: "all" +# # L1MuonEMTF: "all" +# # L1DispMuonKMTF: "all" +# # L1DispMuonOMTF: "all" +# # L1DispMuonEMTF: "all" +# HtoLLPto4b_M125_Phi60_ctau100: +# ntuple_path: /eos/cms/store/group/dpg_trigger/comm_trigger/L1Trigger/alobanov/phase2/menu/ntuples/14X/v37/HiddenGluGluH_mH-125_Phi-60_ctau-100_bbbb_TuneCP5_14TeV-pythia8/HiddenHto4b_M125_Phi60_ctau100_IBv8_wTT/240411_082132/0000/*.root +# trees_branches: +# Events: +# GenJet: "all" +# # # jets +# L1puppiJetSC4sums: [pt, phi] +# # L1puppiJetSC4: [pt, eta, phi] +# # L1puppiJetSC8: [pt, eta, phi] +# # L1puppiExtJetSC4: [pt, eta, phi, btagScore] +# # L1caloJet: [pt, eta, phi] +# ## track-only +# # L1TrackMET: [pt] +# L1TrackHT: [ht, mht] +# L1ExtTrackHT: [ht, mht] +# # L1TrackJet: [pt, eta, phi] diff --git a/configs/V38nano/object_performance/jets_trigger.yaml b/configs/V38nano/object_performance/jets_trigger.yaml index 4700dc09..b49f5cc5 100644 --- a/configs/V38nano/object_performance/jets_trigger.yaml +++ b/configs/V38nano/object_performance/jets_trigger.yaml @@ -14,12 +14,12 @@ JetTurnonBarrel: test_objects: # L1puppiJetHisto:default:barrel: "pt" L1puppiJetSC4:default:barrel: "pt" - # L1caloJet:default:barrel: "pt" - # L1TrackJet:default:barrel: "pt" + L1caloJet:default:barrel: "pt" + L1TrackJet:default:barrel: "pt" thresholds: [50, 100] - scalings: - method: "naive" - threshold: 0.95 + # scalings: + # method: "naive" + # threshold: 0.95 xlabel: "Gen. $p_T$ (GeV)" ylabel: "Trigger Efficiency ( GeV, barrel)" binning: @@ -43,12 +43,12 @@ JetTurnonEndcap: test_objects: # L1puppiJetHisto:default:endcap: "pt" L1puppiJetSC4:default:endcap: "pt" - # L1caloJet:default:endcap: "pt" - # L1TrackJet:default:endcap: "pt" + L1caloJet:default:endcap: "pt" + L1TrackJet:default:endcap: "pt" thresholds: [50, 100] - scalings: - method: "naive" - threshold: 0.95 + # scalings: + # method: "naive" + # threshold: 0.95 xlabel: "Gen. $p_T$ (GeV)" ylabel: "Trigger Efficiency ( GeV, endcap)" binning: @@ -72,11 +72,11 @@ JetTurnonForward: test_objects: # L1puppiJetHisto:default:forward: "pt" L1puppiJetSC4:default:forward: "pt" - # L1caloJet:default:forward: "pt" - # thresholds: [50, 100] - scalings: - method: "naive" - threshold: 0.95 + L1caloJet:default:forward: "pt" + thresholds: [50, 100] + # scalings: + # method: "naive" + # threshold: 0.95 xlabel: "Gen. $p_T$ (GeV)" ylabel: "Trigger Efficiency ( GeV, forward)" binning: diff --git a/configs/V38nano/object_performance/met_ht_mht.yaml b/configs/V38nano/object_performance/met_ht_mht.yaml index 5207d6e3..bd1eacf3 100644 --- a/configs/V38nano/object_performance/met_ht_mht.yaml +++ b/configs/V38nano/object_performance/met_ht_mht.yaml @@ -1,4 +1,31 @@ -HT_90perc: +# HT_90perc: +# sample: TT +# version: V38nano +# reference_object: +# object: "GenJet" +# x_arg: "pt" +# label: "Gen HT" +# trafo: "HT" +# cuts: +# object: +# - "abs({eta}) < 2.4" +# - "{pt} > 30" +# test_objects: +# # L1puppiHistoJetSums:HT: "pt" +# L1puppiJetSC4sums:HT: "pt" +# L1TrackHT:HT: "ht" +# thresholds: [350] +# scalings: +# method: "naive" +# threshold: 0.90 +# xlabel: "Gen. HT (GeV)" +# ylabel: "Trigger Efficiency ( GeV)" +# binning: +# min: 0 +# max: 750 +# step: 20 + +TkHT_90perc: sample: TT version: V38nano reference_object: @@ -11,10 +38,10 @@ HT_90perc: - "abs({eta}) < 2.4" - "{pt} > 30" test_objects: - L1puppiHistoJetSums:HT: "pt" + # L1puppiHistoJetSums:HT: "pt" L1puppiJetSC4sums:HT: "pt" L1TrackHT:HT: "ht" - thresholds: [350] + thresholds: [150, 350] scalings: method: "naive" threshold: 0.90 @@ -25,54 +52,54 @@ HT_90perc: max: 750 step: 20 -MHT_50perc: - sample: TT - version: V38nano - reference_object: - object: "GenJet" - x_arg: "pt" - label: "Gen MHT" - cuts: - object: - - "abs({eta}) < 2.4" - - "{pt} > 30" - trafo: "MHT" - test_objects: - L1puppiHistoJetSums:MHT: "pt" - L1puppiJetSC4sums:MHT: "pt" - L1TrackHT:MHT: "mht" - thresholds: [70, 150] - scalings: - method: "naive" - threshold: 0.50 - xlabel: "Gen. MHT30 (GeV)" - ylabel: "Trigger Efficiency ( GeV)" - binning: - min: 0 - max: 500 - step: 20 +# MHT_50perc: +# sample: TT +# version: V38nano +# reference_object: +# object: "GenJet" +# x_arg: "pt" +# label: "Gen MHT" +# cuts: +# object: +# - "abs({eta}) < 2.4" +# - "{pt} > 30" +# trafo: "MHT" +# test_objects: +# L1puppiHistoJetSums:MHT: "pt" +# L1puppiJetSC4sums:MHT: "pt" +# L1TrackHT:MHT: "mht" +# thresholds: [70, 150] +# scalings: +# method: "naive" +# threshold: 0.50 +# xlabel: "Gen. MHT30 (GeV)" +# ylabel: "Trigger Efficiency ( GeV)" +# binning: +# min: 0 +# max: 500 +# step: 20 -MET_90perc: - sample: TT - version: V38nano - reference_object: - object: "GenMET" - x_arg: "pt" - label: "Gen MET" - test_objects: - L1puppiMET:default: "pt" - L1puppiMLMET:default: "pt" - L1TrackMET:default: "pt" - thresholds: [125, 150, 175, 200] - xlabel: "Gen. MET (GeV)" - ylabel: "Trigger Efficiency ( GeV)" - scalings: - method: "naive" - threshold: 0.90 - binning: - min: 0 - max: 500 - step: 20 +# MET_90perc: +# sample: TT +# version: V38nano +# reference_object: +# object: "GenMET" +# x_arg: "pt" +# label: "Gen MET" +# test_objects: +# L1puppiMET:default: "pt" +# L1puppiMLMET:default: "pt" +# L1TrackMET:default: "pt" +# thresholds: [125, 150, 175, 200] +# xlabel: "Gen. MET (GeV)" +# ylabel: "Trigger Efficiency ( GeV)" +# scalings: +# method: "naive" +# threshold: 0.90 +# binning: +# min: 0 +# max: 500 +# step: 20 # MET_90perc_scTanh: # sample: TT diff --git a/configs/V38nano/object_performance/muonTF_trigger.yaml b/configs/V38nano/object_performance/muonTF_trigger.yaml new file mode 100644 index 00000000..4a1cc020 --- /dev/null +++ b/configs/V38nano/object_performance/muonTF_trigger.yaml @@ -0,0 +1,93 @@ +MuonTFsTrigger_Barrel: + sample: DYLL_M50 + version: V38nano + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "eta" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) < 0.83" + test_objects: + L1gmtMuon:default:barrel: "pt" + L1MuonKMTF:default:barrel: "pt" + L1MuonOMTF:default:barrel: "pt" + L1MuonEMTF:default:barrel: "pt" + L1gmtTkMuon:default:barrel: "pt" + xlabel: "Gen. pT (GeV)" + ylabel: "Trigger Efficiency (barrel, L1 $p_T > 20$ GeV)" + thresholds: [20, 25] + # scalings: + # method: "naive" + # threshold: 0.95 + binning: + min: 0 + max: 50 + step: 1.5 + +# MuonTFsTrigger_Overlap: +# sample: DYLL_M50 +# version: V38nano +# match_test_to_ref: True +# reference_object: +# object: "GenPart" +# x_arg: "eta" +# label: "Gen Muons" +# cuts: +# event: +# - "(({statusFlags}>>7)&1) == 1" +# - "abs({pdgId}) == 13" +# object: +# - "abs({eta}) > 0.83" +# - "abs({eta}) < 1.24" +# test_objects: +# L1gmtMuon:default:overlap: "pt" +# L1MuonKMTF:default:overlap: "pt" +# L1MuonOMTF:default:overlap: "pt" +# L1MuonEMTF:default:overlap: "pt" +# L1gmtTkMuon:default:overlap: "pt" +# xlabel: "Gen. pT (GeV)" +# ylabel: "Trigger Efficiency (overlap, L1 $p_T > 20$ GeV)" +# thresholds: [20, 25] +# # scalings: +# # method: "naive" +# # threshold: 0.95 +# binning: +# min: 0 +# max: 50 +# step: 1.5 + +# MuonTFsTrigger_Endcap: +# sample: DYLL_M50 +# version: V38nano +# match_test_to_ref: True +# reference_object: +# object: "GenPart" +# x_arg: "eta" +# label: "Gen Muons" +# cuts: +# event: +# - "(({statusFlags}>>7)&1) == 1" +# - "abs({pdgId}) == 13" +# object: +# - "abs({eta}) > 1.24" +# test_objects: +# L1gmtMuon:default:endcap: "pt" +# L1MuonKMTF:default:endcap: "pt" +# L1MuonOMTF:default:endcap: "pt" +# L1MuonEMTF:default:endcap: "pt" +# L1gmtTkMuon:default:endcap: "pt" +# xlabel: "Gen. pT (GeV)" +# ylabel: "Trigger Efficiency (endcap, L1 $p_T > 20$ GeV)" +# thresholds: [20, 25] +# # scalings: +# # method: "naive" +# # threshold: 0.95 +# binning: +# min: 0 +# max: 50 +# step: 1.5 diff --git a/configs/V38nano/object_performance/muon_matching_eta.yaml b/configs/V38nano/object_performance/muon_matching_eta.yaml index a340ccf7..bd247676 100644 --- a/configs/V38nano/object_performance/muon_matching_eta.yaml +++ b/configs/V38nano/object_performance/muon_matching_eta.yaml @@ -16,6 +16,7 @@ MuonsMatching_Eta_Pt2to5: - "abs({eta}) < 2.4" test_objects: L1gmtMuon:default: "eta" + L1gmtMuon:dR0p6: "eta" L1gmtTkMuon:default: "eta" xlabel: "Gen. $\\eta$" ylabel: "Matching Efficiency (2-5 GeV)" diff --git a/configs/V38nano/object_performance/muon_matching_v2.yaml b/configs/V38nano/object_performance/muon_matching_v2.yaml new file mode 100644 index 00000000..d3902da4 --- /dev/null +++ b/configs/V38nano/object_performance/muon_matching_v2.yaml @@ -0,0 +1,77 @@ +MuonsMatchingBarrel_Alt: + sample: DYLL_M50 + version: V38nano + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "pt" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) < 0.83" + test_objects: + L1gmtMuon:default:barrel: "pt" + L1gmtMuon:dR0p6:barrel: "pt" + L1gmtTkMuon:VLoose:barrel: "pt" + # L1gmtTkMuon:VLooseDr0p6:barrel: "pt" + xlabel: "Gen. $p_T$ (GeV)" + ylabel: "Matching Efficiency (barrel)" + binning: + min: 0 + max: 100 + step: 3 + +MuonsMatchingOverlap_Alt: + sample: DYLL_M50 + version: V38nano + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "pt" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) > 0.83" + - "abs({eta}) < 1.24" + test_objects: + L1gmtMuon:default:overlap: "pt" + L1gmtMuon:dR0p6:overlap: "pt" + L1gmtTkMuon:default:overlap: "pt" + xlabel: "Gen. $p_T$ (GeV)" + ylabel: "Matching Efficiency (overlap)" + binning: + min: 0 + max: 100 + step: 3 + +MuonsMatchingEndcap_Alt: + sample: DYLL_M50 + version: V38nano + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "pt" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) > 1.24" + - "abs({eta}) < 2.4" + test_objects: + L1gmtMuon:default:endcap: "pt" + L1gmtMuon:dR0p6:endcap: "pt" + L1gmtTkMuon:default:endcap: "pt" + xlabel: "Gen. $p_T$ (GeV)" + ylabel: "Matching Efficiency (endcap)" + binning: + min: 0 + max: 100 + step: 3 diff --git a/configs/V38nano/objects/muons.yaml b/configs/V38nano/objects/muons.yaml index 478fabeb..96b2e80d 100644 --- a/configs/V38nano/objects/muons.yaml +++ b/configs/V38nano/objects/muons.yaml @@ -45,22 +45,31 @@ L1gmtTkMuon: L1gmtMuon: label: "GMT Muon" - match_dR: 0.3 + match_dR: 0.6 eta_ranges: inclusive: [0, 7] barrel: [0, 0.83] overlap: [0.83, 1.24] endcap: [1.24, 2.4] ids: - default: {} + default: + cuts: + overlap: + - "{hwQual} >= 12" + endcap: + - "{hwQual} >= 14" dR0p6: label: "GMT Muon, match dR < 0.6" match_dR: 0.6 - cuts: {} + cuts: + overlap: + - "{hwQual} >= 12" + endcap: + - "{hwQual} >= 14" L1gmtDispMuon: label: "GMT Displaced Muon" - match_dR: 0.3 + match_dR: 0.6 eta_ranges: inclusive: [0, 7] barrel: [0, 0.83] diff --git a/configs/V38nano/rate_plots/disp_ht_sig.yaml b/configs/V38nano/rate_plots/disp_ht_sig.yaml new file mode 100644 index 00000000..acba1b3e --- /dev/null +++ b/configs/V38nano/rate_plots/disp_ht_sig.yaml @@ -0,0 +1,13 @@ + +DispHTRates_Signal: + sample: HtoLLPto4B_M125_Phi60_ctau100 + version: V38nano + test_objects: + # - L1puppiHistoJetSums:HT + - L1puppiJetSC4sums:HT + - L1TrackHT:HT + - L1ExtTrackHT:HT + binning: + min: 50 + max: 975 + step: 25 diff --git a/configs/V38nano/rate_plots/ht.yaml b/configs/V38nano/rate_plots/ht.yaml index c4107b28..e3efeba0 100644 --- a/configs/V38nano/rate_plots/ht.yaml +++ b/configs/V38nano/rate_plots/ht.yaml @@ -4,7 +4,7 @@ HTRates: test_objects: # - L1puppiHistoJetSums:HT - L1puppiJetSC4sums:HT - # - L1TrackHT:HT + - L1TrackHT:HT binning: min: 50 max: 975 @@ -34,3 +34,27 @@ DispHTRates: min: 50 max: 975 step: 25 +# MHTRates: +# sample: MinBias +# version: V38nano +# test_objects: +# # - L1puppiHistoJetSums:MHT +# - L1puppiJetSC4sums:MHT +# - L1TrackHT:MHT +# binning: +# min: 50 +# max: 975 +# step: 25 + +# DispHTRates: +# sample: MinBias +# version: V38nano +# test_objects: +# # - L1puppiHistoJetSums:HT +# - L1puppiJetSC4sums:HT +# - L1TrackHT:HT +# - L1ExtTrackHT:HT +# binning: +# min: 50 +# max: 975 +# step: 25 diff --git a/configs/V38nano/rate_plots/jets.yaml b/configs/V38nano/rate_plots/jets.yaml index d0a06144..d20998dd 100644 --- a/configs/V38nano/rate_plots/jets.yaml +++ b/configs/V38nano/rate_plots/jets.yaml @@ -2,9 +2,9 @@ JetDefaultRates: sample: MinBias version: V38nano test_objects: - - L1puppiJetHisto:default + # - L1puppiJetHisto:default - L1puppiJetSC4:default - - L1caloJet:default + # - L1caloJet:default # - L1TrackJet:default binning: min: 40 diff --git a/configs/V38nano_DT12x/README.md b/configs/V38nano_DT12x/README.md new file mode 100644 index 00000000..5f545258 --- /dev/null +++ b/configs/V38nano_DT12x/README.md @@ -0,0 +1,6 @@ +# V38 DT12x version + +Based on https://github.com/cms-l1-dpg/Phase2-L1Nano/tree/v38_1400pre3v9 + +Uses the Annual Review branch 1400pre3v9 with modified DT (Drift Tube) TPs corresponding to the 125x release. +Included rerunning the TrackTrigger, and thus is similar to pure V38. \ No newline at end of file diff --git a/configs/V38nano_DT12x/caching.yaml b/configs/V38nano_DT12x/caching.yaml new file mode 100644 index 00000000..1201c37b --- /dev/null +++ b/configs/V38nano_DT12x/caching.yaml @@ -0,0 +1,58 @@ +V38nano_DT12x: + DYLL_M50: + ntuple_path: /eos/cms/store/group/dpg_trigger/comm_trigger/L1Trigger/alobanov/phase2/menu/ntuples/14X/IBv9_muons/IBv9_Combined/12DT_wTT/ForArthurPartial/DYToLL_IBv9_12DT.root + trees_branches: + Events: + GenPart: "all" + ## EG + # L1tkElectron: "all" + # L1EGbarrel: "all" + # L1EGendcap: "all" + ## Muons + L1gmtTkMuon: "all" + L1gmtMuon: "all" + # L1gmtDispMuon: "all" + ## TF Muons + L1MuonKMTF: "all" + L1MuonOMTF: "all" + L1MuonEMTF: "all" + # L1DispMuonKMTF: "all" + # L1DispMuonOMTF: "all" + # L1DispMuonEMTF: "all" + MinBias: + ntuple_path: /eos/cms/store/group/dpg_trigger/comm_trigger/L1Trigger/alobanov/phase2/menu/ntuples/14X/IBv9_muons/IBv9_Combined/12DT_wTT/ForArthurPartial/Minbias.root + trees_branches: + Events: + # PV + L1PV: [z0] + ## EG + L1tkPhoton: "all" + L1tkElectron: "all" + L1EGbarrel: "all" + L1EGendcap: "all" + ## MUONS + L1gmtTkMuon: "all" + L1gmtMuon: "all" # aka gmtMuon + L1gmtDispMuon: "all" + ## TAUS + L1nnPuppiTau: "all" + L1hpsTau: "all" + L1caloTau: "all" + L1nnCaloTau: "all" + ## MET/Sums + L1puppiMET: [pt, phi] + L1puppiMLMET: [pt] + L1puppiJetSC4sums: [pt, phi] + L1puppiHistoJetSums: [pt, phi] + # # jets + L1puppiJetSC4: [pt, eta, phi] + L1puppiJetSC8: [pt, eta, phi] + L1puppiExtJetSC4: [pt, eta, phi, btagScore] + L1puppiJetHisto: [pt, eta, phi] + L1caloJet: [pt, eta, phi] + ## track-only + L1TrackMET: [pt] + L1TrackHT: [ht, mht] + L1TrackJet: [pt, eta, phi] + L1TrackTripletWord: [pt] + L1ExtTrackHT: [ht] \ No newline at end of file diff --git a/configs/V38nano_DT12x/object_performance/muonTF_matching.yaml b/configs/V38nano_DT12x/object_performance/muonTF_matching.yaml new file mode 100644 index 00000000..d232595c --- /dev/null +++ b/configs/V38nano_DT12x/object_performance/muonTF_matching.yaml @@ -0,0 +1,82 @@ +MuonTFsMatchingBarrel: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "pt" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) < 0.83" + test_objects: + L1gmtMuon:default:barrel: "pt" + L1MuonKMTF:default:barrel: "pt" + L1MuonOMTF:default:barrel: "pt" + L1MuonEMTF:default:barrel: "pt" + L1gmtTkMuon:default:barrel: "pt" + xlabel: "Gen. $p_T$ (GeV)" + ylabel: "Matching Efficiency (barrel)" + binning: + min: 0 + max: 100 + step: 3 + +MuonTFsMatchingOverlap: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "pt" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) > 0.83" + - "abs({eta}) < 1.24" + test_objects: + L1gmtMuon:default:overlap: "pt" + L1MuonKMTF:default:overlap: "pt" + L1MuonOMTF:default:overlap: "pt" + L1MuonEMTF:default:overlap: "pt" + L1gmtTkMuon:default:overlap: "pt" + xlabel: "Gen. $p_T$ (GeV)" + ylabel: "Matching Efficiency (overlap)" + binning: + min: 0 + max: 100 + step: 3 + +MuonTFsMatchingEndcap: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "pt" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) > 1.24" + - "abs({eta}) < 2.4" + test_objects: + L1gmtMuon:default:endcap: "pt" + L1MuonKMTF:default:endcap: "pt" + L1MuonOMTF:default:endcap: "pt" + L1MuonEMTF:default:endcap: "pt" + L1gmtTkMuon:default:endcap: "pt" + xlabel: "Gen. $p_T$ (GeV)" + ylabel: "Matching Efficiency (endcap)" + binning: + min: 0 + max: 100 + step: 3 diff --git a/configs/V38nano_DT12x/object_performance/muonTF_matching_eta.yaml b/configs/V38nano_DT12x/object_performance/muonTF_matching_eta.yaml new file mode 100644 index 00000000..6786473f --- /dev/null +++ b/configs/V38nano_DT12x/object_performance/muonTF_matching_eta.yaml @@ -0,0 +1,56 @@ +MuonTFsMatching_Eta_Pt2to5: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "eta" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + - "{pt} > 2" + - "{pt} < 5" + object: + - "abs({eta}) < 2.4" + test_objects: + L1gmtMuon:default: "eta" + L1MuonKMTF:default: "eta" + L1MuonOMTF:default: "eta" + L1MuonEMTF:default: "eta" + L1gmtTkMuon:default: "eta" + xlabel: "Gen. $\\eta$" + ylabel: "Matching Efficiency (2-5 GeV)" + binning: + min: -3 + max: 3 + step: 0.2 + +MuonTFsMatching_Eta_Pt15toInf: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "eta" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + - "{pt} > 15" + object: + - "abs({eta}) < 2.4" + test_objects: + L1gmtMuon:default: "eta" + L1MuonKMTF:default: "eta" + L1MuonOMTF:default: "eta" + L1MuonEMTF:default: "eta" + L1gmtTkMuon:default: "eta" + xlabel: "Gen. $\\eta$" + ylabel: "Matching Efficiency (>15 GeV)" + binning: + min: -3 + max: 3 + step: 0.2 diff --git a/configs/V38nano_DT12x/object_performance/muonTF_trigger.yaml b/configs/V38nano_DT12x/object_performance/muonTF_trigger.yaml new file mode 100644 index 00000000..c65961be --- /dev/null +++ b/configs/V38nano_DT12x/object_performance/muonTF_trigger.yaml @@ -0,0 +1,93 @@ +MuonTFsTrigger_Barrel: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "eta" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) < 0.83" + test_objects: + L1gmtMuon:default:barrel: "pt" + L1MuonKMTF:default:barrel: "pt" + L1MuonOMTF:default:barrel: "pt" + L1MuonEMTF:default:barrel: "pt" + L1gmtTkMuon:default:barrel: "pt" + xlabel: "Gen. pT (GeV)" + ylabel: "Trigger Efficiency (barrel, L1 $p_T > 20$ GeV)" + thresholds: [20, 25] + # scalings: + # method: "naive" + # threshold: 0.95 + binning: + min: 0 + max: 50 + step: 1.5 + +MuonTFsTrigger_Overlap: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "eta" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) > 0.83" + - "abs({eta}) < 1.24" + test_objects: + L1gmtMuon:default:overlap: "pt" + L1MuonKMTF:default:overlap: "pt" + L1MuonOMTF:default:overlap: "pt" + L1MuonEMTF:default:overlap: "pt" + L1gmtTkMuon:default:overlap: "pt" + xlabel: "Gen. pT (GeV)" + ylabel: "Trigger Efficiency (overlap, L1 $p_T > 20$ GeV)" + thresholds: [20, 25] + # scalings: + # method: "naive" + # threshold: 0.95 + binning: + min: 0 + max: 50 + step: 1.5 + +MuonTFsTrigger_Endcap: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "eta" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) > 1.24" + test_objects: + L1gmtMuon:default:endcap: "pt" + L1MuonKMTF:default:endcap: "pt" + L1MuonOMTF:default:endcap: "pt" + L1MuonEMTF:default:endcap: "pt" + L1gmtTkMuon:default:endcap: "pt" + xlabel: "Gen. pT (GeV)" + ylabel: "Trigger Efficiency (endcap, L1 $p_T > 20$ GeV)" + thresholds: [20, 25] + # scalings: + # method: "naive" + # threshold: 0.95 + binning: + min: 0 + max: 50 + step: 1.5 diff --git a/configs/V38nano_DT12x/object_performance/muon_matching.yaml b/configs/V38nano_DT12x/object_performance/muon_matching.yaml new file mode 100644 index 00000000..d60ff9db --- /dev/null +++ b/configs/V38nano_DT12x/object_performance/muon_matching.yaml @@ -0,0 +1,73 @@ +MuonsMatchingBarrel: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "pt" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) < 0.83" + test_objects: + L1gmtMuon:default:barrel: "pt" + L1gmtTkMuon:default:barrel: "pt" + xlabel: "Gen. $p_T$ (GeV)" + ylabel: "Matching Efficiency (barrel)" + binning: + min: 0 + max: 100 + step: 3 + +MuonsMatchingOverlap: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "pt" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) > 0.83" + - "abs({eta}) < 1.24" + test_objects: + L1gmtMuon:default:overlap: "pt" + L1gmtTkMuon:default:overlap: "pt" + xlabel: "Gen. $p_T$ (GeV)" + ylabel: "Matching Efficiency (overlap)" + binning: + min: 0 + max: 100 + step: 3 + +MuonsMatchingEndcap: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "pt" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) > 1.24" + - "abs({eta}) < 2.4" + test_objects: + L1gmtMuon:default:endcap: "pt" + L1gmtTkMuon:default:endcap: "pt" + xlabel: "Gen. $p_T$ (GeV)" + ylabel: "Matching Efficiency (endcap)" + binning: + min: 0 + max: 100 + step: 3 diff --git a/configs/V38nano_DT12x/object_performance/muon_matching_eta.yaml b/configs/V38nano_DT12x/object_performance/muon_matching_eta.yaml new file mode 100644 index 00000000..14e5c798 --- /dev/null +++ b/configs/V38nano_DT12x/object_performance/muon_matching_eta.yaml @@ -0,0 +1,78 @@ +# MuonsMatching_Eta_Pt2to5: +# sample: DYLL_M50 +# version: V38nano_DT12x +# match_test_to_ref: True +# reference_object: +# object: "GenPart" +# x_arg: "eta" +# label: "Gen Muons" +# cuts: +# event: +# - "(({statusFlags}>>7)&1) == 1" +# - "abs({pdgId}) == 13" +# - "{pt} > 2" +# - "{pt} < 5" +# object: +# - "abs({eta}) < 2.4" +# test_objects: +# L1gmtMuon:default: "eta" +# L1gmtMuon:dR0p6: "eta" +# L1gmtTkMuon:default: "eta" +# xlabel: "Gen. $\\eta$" +# ylabel: "Matching Efficiency (2-5 GeV)" +# binning: +# min: -3 +# max: 3 +# step: 0.2 + +# MuonsMatching_Eta_Pt15toInf: +# sample: DYLL_M50 +# version: V38nano_DT12x +# match_test_to_ref: True +# reference_object: +# object: "GenPart" +# x_arg: "eta" +# label: "Gen Muons" +# cuts: +# event: +# - "(({statusFlags}>>7)&1) == 1" +# - "abs({pdgId}) == 13" +# - "{pt} > 15" +# object: +# - "abs({eta}) < 2.4" +# test_objects: +# L1gmtMuon:default: "eta" +# L1gmtTkMuon:default: "eta" +# xlabel: "Gen. $\\eta$" +# ylabel: "Matching Efficiency (>15 GeV)" +# binning: +# min: -3 +# max: 3 +# step: 0.2 + +MuonsMatching_Eta_Pt2to5_status1: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "eta" + label: "Gen Muons" + cuts: + event: + - "{status} == 1" + - "abs({pdgId}) == 13" + - "{pt} > 2" + - "{pt} < 5" + object: + - "abs({eta}) < 2.4" + test_objects: + L1gmtMuon:default: "eta" + L1gmtMuon:dR0p6: "eta" + L1gmtTkMuon:default: "eta" + xlabel: "Gen. $\\eta$" + ylabel: "Matching Efficiency (2-5 GeV)" + binning: + min: -3 + max: 3 + step: 0.2 \ No newline at end of file diff --git a/configs/V38nano_DT12x/object_performance/muon_matching_v2.yaml b/configs/V38nano_DT12x/object_performance/muon_matching_v2.yaml new file mode 100644 index 00000000..0d8e6e52 --- /dev/null +++ b/configs/V38nano_DT12x/object_performance/muon_matching_v2.yaml @@ -0,0 +1,77 @@ +MuonsMatchingBarrel_Alt: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "pt" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) < 0.83" + test_objects: + L1gmtMuon:default:barrel: "pt" + L1gmtMuon:dR0p6:barrel: "pt" + L1gmtTkMuon:VLoose:barrel: "pt" + # L1gmtTkMuon:VLooseDr0p6:barrel: "pt" + xlabel: "Gen. $p_T$ (GeV)" + ylabel: "Matching Efficiency (barrel)" + binning: + min: 0 + max: 100 + step: 3 + +MuonsMatchingOverlap_Alt: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "pt" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) > 0.83" + - "abs({eta}) < 1.24" + test_objects: + L1gmtMuon:default:overlap: "pt" + L1gmtMuon:dR0p6:overlap: "pt" + L1gmtTkMuon:default:overlap: "pt" + xlabel: "Gen. $p_T$ (GeV)" + ylabel: "Matching Efficiency (overlap)" + binning: + min: 0 + max: 100 + step: 3 + +MuonsMatchingEndcap_Alt: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "pt" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) > 1.24" + - "abs({eta}) < 2.4" + test_objects: + L1gmtMuon:default:endcap: "pt" + L1gmtMuon:dR0p6:endcap: "pt" + L1gmtTkMuon:default:endcap: "pt" + xlabel: "Gen. $p_T$ (GeV)" + ylabel: "Matching Efficiency (endcap)" + binning: + min: 0 + max: 100 + step: 3 diff --git a/configs/V38nano_DT12x/object_performance/muon_trigger.yaml b/configs/V38nano_DT12x/object_performance/muon_trigger.yaml new file mode 100644 index 00000000..0ff812ac --- /dev/null +++ b/configs/V38nano_DT12x/object_performance/muon_trigger.yaml @@ -0,0 +1,84 @@ +MuonsTrigger_Barrel: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "eta" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) < 0.83" + test_objects: + L1gmtMuon:default:barrel: "pt" + L1gmtTkMuon:default:barrel: "pt" + xlabel: "Gen. pT (GeV)" + ylabel: "Trigger Efficiency (barrel, L1 $p_T > 20$ GeV)" + thresholds: [20, 25] + scalings: + method: "naive" + threshold: 0.95 + binning: + min: 0 + max: 50 + step: 1.5 + +MuonsTrigger_Overlap: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "eta" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) > 0.83" + - "abs({eta}) < 1.24" + test_objects: + L1gmtMuon:default:overlap: "pt" + L1gmtTkMuon:default:overlap: "pt" + xlabel: "Gen. pT (GeV)" + ylabel: "Trigger Efficiency (overlap, L1 $p_T > 20$ GeV)" + thresholds: [20, 25] + scalings: + method: "naive" + threshold: 0.95 + binning: + min: 0 + max: 50 + step: 1.5 + +MuonsTrigger_Endcap: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "eta" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) > 1.24" + test_objects: + L1gmtMuon:default:endcap: "pt" + L1gmtTkMuon:default:endcap: "pt" + xlabel: "Gen. pT (GeV)" + ylabel: "Trigger Efficiency (endcap, L1 $p_T > 20$ GeV)" + thresholds: [20, 25] + scalings: + method: "naive" + threshold: 0.95 + binning: + min: 0 + max: 50 + step: 1.5 diff --git a/configs/V38nano_DT12x/object_performance/tkmuon_matching.yaml b/configs/V38nano_DT12x/object_performance/tkmuon_matching.yaml new file mode 100644 index 00000000..3c4fe5ea --- /dev/null +++ b/configs/V38nano_DT12x/object_performance/tkmuon_matching.yaml @@ -0,0 +1,85 @@ +TkMuonsMatchingBarrel: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "pt" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) < 0.83" + test_objects: + # L1gmtMuon:default:barrel: "pt" + L1gmtTkMuon:default:barrel: "pt" + L1gmtTkMuon:VLoose:barrel: "pt" + L1gmtTkMuon:Loose:barrel: "pt" + L1gmtTkMuon:Medium:barrel: "pt" + L1gmtTkMuon:Tight:barrel: "pt" + xlabel: "Gen. $p_T$ (GeV)" + ylabel: "Matching Efficiency (barrel)" + binning: + min: 0 + max: 100 + step: 3 + +TkMuonsMatchingOverlap: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "pt" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) > 0.83" + - "abs({eta}) < 1.24" + test_objects: + # L1gmtMuon:default:overlap: "pt" + L1gmtTkMuon:default:overlap: "pt" + L1gmtTkMuon:VLoose:overlap: "pt" + L1gmtTkMuon:Loose:overlap: "pt" + L1gmtTkMuon:Medium:overlap: "pt" + L1gmtTkMuon:Tight:overlap: "pt" + xlabel: "Gen. $p_T$ (GeV)" + ylabel: "Matching Efficiency (overlap)" + binning: + min: 0 + max: 100 + step: 3 + +TkMuonsMatchingEndcap: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "pt" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) > 1.24" + - "abs({eta}) < 2.4" + test_objects: + # L1gmtMuon:default:endcap: "pt" + L1gmtTkMuon:default:endcap: "pt" + L1gmtTkMuon:VLoose:endcap: "pt" + L1gmtTkMuon:Loose:endcap: "pt" + L1gmtTkMuon:Medium:endcap: "pt" + L1gmtTkMuon:Tight:endcap: "pt" + xlabel: "Gen. $p_T$ (GeV)" + ylabel: "Matching Efficiency (endcap)" + binning: + min: 0 + max: 100 + step: 3 diff --git a/configs/V38nano_DT12x/object_performance/tkmuon_matching_eta.yaml b/configs/V38nano_DT12x/object_performance/tkmuon_matching_eta.yaml new file mode 100644 index 00000000..18a90e1b --- /dev/null +++ b/configs/V38nano_DT12x/object_performance/tkmuon_matching_eta.yaml @@ -0,0 +1,58 @@ +TkMuonsMatching_Eta_Pt2to5: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "eta" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + - "{pt} > 2" + - "{pt} < 5" + object: + - "abs({eta}) < 2.4" + test_objects: + # L1gmtMuon:default: "eta" + L1gmtTkMuon:default: "eta" + L1gmtTkMuon:VLoose: "eta" + L1gmtTkMuon:Loose: "eta" + L1gmtTkMuon:Medium: "eta" + L1gmtTkMuon:Tight: "eta" + xlabel: "Gen. $\\eta$" + ylabel: "Matching Efficiency (2-5 GeV)" + binning: + min: -3 + max: 3 + step: 0.2 + +TkMuonsMatching_Eta_Pt15toInf: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "eta" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + - "{pt} > 15" + object: + - "abs({eta}) < 2.4" + test_objects: + # L1gmtMuon:default: "eta" + L1gmtTkMuon:default: "eta" + L1gmtTkMuon:VLoose: "eta" + L1gmtTkMuon:Loose: "eta" + L1gmtTkMuon:Medium: "eta" + L1gmtTkMuon:Tight: "eta" + xlabel: "Gen. $\\eta$" + ylabel: "Matching Efficiency (>15 GeV)" + binning: + min: -3 + max: 3 + step: 0.2 diff --git a/configs/V38nano_DT12x/object_performance/tkmuon_trigger.yaml b/configs/V38nano_DT12x/object_performance/tkmuon_trigger.yaml new file mode 100644 index 00000000..0935cf6e --- /dev/null +++ b/configs/V38nano_DT12x/object_performance/tkmuon_trigger.yaml @@ -0,0 +1,96 @@ +TkMuonsTrigger_Barrel: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "eta" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) < 0.83" + test_objects: + # L1gmtMuon:default:barrel: "pt" + # L1gmtTkMuon:default:barrel: "pt" + L1gmtTkMuon:VLoose:barrel: "pt" + L1gmtTkMuon:Loose:barrel: "pt" + L1gmtTkMuon:Medium:barrel: "pt" + L1gmtTkMuon:Tight:barrel: "pt" + xlabel: "Gen. pT (GeV)" + ylabel: "Trigger Efficiency (barrel, L1 $p_T > 20$ GeV)" + thresholds: [20, 25] + scalings: + method: "naive" + threshold: 0.95 + binning: + min: 0 + max: 50 + step: 1.5 + +TkMuonsTrigger_Overlap: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "eta" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) > 0.83" + - "abs({eta}) < 1.24" + test_objects: + # L1gmtMuon:default:overlap: "pt" + # L1gmtTkMuon:default:overlap: "pt" + L1gmtTkMuon:VLoose:overlap: "pt" + L1gmtTkMuon:Loose:overlap: "pt" + L1gmtTkMuon:Medium:overlap: "pt" + L1gmtTkMuon:Tight:overlap: "pt" + xlabel: "Gen. pT (GeV)" + ylabel: "Trigger Efficiency (overlap, L1 $p_T > 20$ GeV)" + thresholds: [20, 25] + scalings: + method: "naive" + threshold: 0.95 + binning: + min: 0 + max: 50 + step: 1.5 + +TkMuonsTrigger_Endcap: + sample: DYLL_M50 + version: V38nano_DT12x + match_test_to_ref: True + reference_object: + object: "GenPart" + x_arg: "eta" + label: "Gen Muons" + cuts: + event: + - "(({statusFlags}>>7)&1) == 1" + - "abs({pdgId}) == 13" + object: + - "abs({eta}) > 1.24" + test_objects: + # L1gmtMuon:default:endcap: "pt" + # L1gmtTkMuon:default:endcap: "pt" + L1gmtTkMuon:VLoose:endcap: "pt" + L1gmtTkMuon:Loose:endcap: "pt" + L1gmtTkMuon:Medium:endcap: "pt" + L1gmtTkMuon:Tight:endcap: "pt" + xlabel: "Gen. pT (GeV)" + ylabel: "Trigger Efficiency (endcap, L1 $p_T > 20$ GeV)" + thresholds: [20, 25] + scalings: + method: "naive" + threshold: 0.95 + binning: + min: 0 + max: 50 + step: 1.5 diff --git a/configs/V38nano_DT12x/objects/electrons.yaml b/configs/V38nano_DT12x/objects/electrons.yaml new file mode 100644 index 00000000..d96a7f7d --- /dev/null +++ b/configs/V38nano_DT12x/objects/electrons.yaml @@ -0,0 +1,46 @@ +L1tkElectron: + match_dR: 0.15 + eta_ranges: + inclusive: [0, 7] + barrel: [0, 1.479] + endcap: [1.479, 5] + ids: + NoIso: + label: "TkElectron" + cuts: + inclusive: + - "abs({eta}) < 2.4" + - "({eleId} == 1) | ({pt} < 25)" + NoIsoForIso: + # This id is exclusively used for the + # isoloation wp derivation + label: "TkElectron, no ID" + cuts: + inclusive: + - "abs({eta}) < 2.7" + Iso: + label: "TkIsoElectron" + cuts: + inclusive: + - "abs({eta}) < 2.4" + barrel: + - "abs({relIso}) < 0.13" + endcap: + - "abs({relIso}) < 0.28" + +L1EG: + match_dR: 0.2 + eta_ranges: + inclusive: [0, 7] + barrel: [0, 1.479] + endcap: [1.479, 3.0] + label: "EG" + ids: + default: + cuts: + inclusive: + - "abs({eta}) < 3.0" + barrel: + - "{eleId} == 1" + endcap: + - "{saId} == 1" diff --git a/configs/V38nano_DT12x/objects/jets.yaml b/configs/V38nano_DT12x/objects/jets.yaml new file mode 100644 index 00000000..481cccda --- /dev/null +++ b/configs/V38nano_DT12x/objects/jets.yaml @@ -0,0 +1,103 @@ +L1caloJet: + match_dR: 0.3 + label: "Calo Jet" + eta_ranges: + inclusive: [0, 7] + barrel: [0, 1.5] + endcap: [1.5, 2.4] + forward: [2.4, 5] + cuts: + inclusive: + - "abs({eta}) < 7" + ids: + default: + cuts: + inclusive: + - "abs({eta}) < 7" + +L1puppiExtJetSC4: + match_dR: 0.35 + label: "Seeded Cone Extended PuppiJet" + eta_ranges: + inclusive: [0, 7] + barrel: [0, 1.5] + endcap: [1.5, 2.4] + forward: [2.4, 5] + ids: + default: + cuts: + inclusive: + - "abs({eta}) < 5" + PtGe25: + cuts: + inclusive: + - "abs({eta}) < 7" + - "abs({pt}) >= 25" + bjetnn: + label: "SC Extended PuppiJet, BtagScore > 0.71" + cuts: + inclusive: + - "abs({eta}) < 2.4" + - "{btagScore} > 0.71" + +L1puppiJetHisto: + match_dR: 0.3 + label: "Histogrammed PuppiJet" + eta_ranges: + inclusive: [0, 7] + barrel: [0, 1.5] + endcap: [1.5, 2.4] + forward: [2.4, 5] + ids: + default: + cuts: + inclusive: + - "abs({eta}) < 7" + +L1puppiJetSC4: + match_dR: 0.35 + label: "Seeded Cone PuppiJet" + eta_ranges: + inclusive: [0, 7] + barrel: [0, 1.5] + endcap: [1.5, 2.4] + forward: [2.4, 5] + ids: + default: + cuts: + inclusive: + - "abs({eta}) < 7" + PtGe25: + cuts: + inclusive: + - "abs({eta}) < 7" + - "abs({pt}) >= 25" + +L1puppiJetSC8: + match_dR: 0.35 + label: "Seeded Cone PuppiJet 8" + eta_ranges: + inclusive: [0, 7] + barrel: [0, 1.5] + endcap: [1.5, 2.4] + forward: [2.4, 5] + ids: + default: + cuts: + inclusive: + - "abs({eta}) < 7" + +L1TrackJet: + match_dR: 0.4 + label: "Tracker Jet" + eta_ranges: + inclusive: [0, 7] + barrel: [0, 1.5] + endcap: [1.5, 2.4] + ids: + default: + cuts: + inclusive: + - "abs({eta}) < 7" + + diff --git a/configs/V38nano_DT12x/objects/met_ht_mht.yaml b/configs/V38nano_DT12x/objects/met_ht_mht.yaml new file mode 100644 index 00000000..8dbdb2fd --- /dev/null +++ b/configs/V38nano_DT12x/objects/met_ht_mht.yaml @@ -0,0 +1,69 @@ +# phase1PuppiHT: +# label: "Histogrammed Puppi HT" +# ids: +# default: {} + +# phase1PuppiMHT: +# label: "Phase1 Puppi MHT" +# ids: +# default: {} + +L1puppiMET: + label: "Puppi MET" + ids: + default: {} + +L1puppiMLMET: + label: "Puppi MLMET" + ids: + default: {} + +L1puppiJetSC4sums: + ids: + HT: + label: "SeededCone HT" + cuts: + inclusive: + - "{sumType} == 0" + MHT: + label: "SeededCone MHT" + cuts: + inclusive: + - "{sumType} == 1" + +L1puppiHistoJetSums: + ids: + HT: + label: "Histogrammed Puppi HT" + cuts: + inclusive: + - "{sumType} == 0" + MHT: + label: "Histogrammed Puppi MHT" + cuts: + inclusive: + - "{sumType} == 1" + +L1TrackHT: + ids: + HT: + label: "Tracker HT" + MHT: + label: "Tracker MHT" + +L1ExtTrackHT: + ids: + HT: + label: "ext. Tracker HT" + MHT: + label: "ext. Tracker MHT" + +L1TrackMET: + label: "Tracker MET" + ids: + default: {} + +L1TrackTripletWord: + label: "Track Triplet for W3Pi" + ids: + default: {} \ No newline at end of file diff --git a/configs/V38nano_DT12x/objects/muons.yaml b/configs/V38nano_DT12x/objects/muons.yaml new file mode 100644 index 00000000..290ea88e --- /dev/null +++ b/configs/V38nano_DT12x/objects/muons.yaml @@ -0,0 +1,133 @@ +GenPart: + label: "Gen Muon" + eta_ranges: + inclusive: [0, 7] + ids: + gen_electron_default: + cuts: + inclusive: + - "({statusFlags}>>7)&1 == 1" + +L1gmtTkMuon: + label: "GMT TkMuon" + match_dR: 0.1 + eta_ranges: + inclusive: [0, 7] + barrel: [0, 0.83] + overlap: [0.83, 1.24] + endcap: [1.24, 2.4] + ids: + default: + label: "GMT TkMuon" + cuts: + inclusive: + - "(({hwQual}>>1)&1 == 1) | (({pt} > 8) & (({hwQual}>>0)&1 == 1))" # Loose (bit 2) for pt < 8 VLoose (bit 1) for pt > 8 + VLoose: # x.numberOfMatches() > 0 + label: "GMT TkMuon, VLoose ID" + cuts: + inclusive: + - "({hwQual}>>0)&1 == 1" + Loose: # x.numberOfMatches() >1 + label: "GMT TkMuon, Loose ID" + cuts: + inclusive: + - "({hwQual}>>1)&1 == 1" + Medium: # x.stubs().size()>1 + label: "GMT TkMuon, Medium ID" + cuts: + inclusive: + - "({hwQual}>>2)&1 == 1" + Tight: # x.numberOfMatches()>2 + label: "GMT TkMuon, Tight ID" + cuts: + inclusive: + - "({hwQual}>>3)&1 == 1" + +L1gmtMuon: + label: "GMT Muon" + match_dR: 0.6 + eta_ranges: + inclusive: [0, 7] + barrel: [0, 0.83] + overlap: [0.83, 1.24] + endcap: [1.24, 2.4] + ids: + default: + cuts: + overlap: + - "{hwQual} >= 12" + endcap: + - "{hwQual} >= 14" + dR0p6: + label: "GMT Muon, match dR < 0.6" + match_dR: 0.6 + cuts: {} + +L1gmtDispMuon: + label: "GMT Displaced Muon" + match_dR: 0.6 + eta_ranges: + inclusive: [0, 7] + barrel: [0, 0.83] + overlap: [0.83, 1.24] + endcap: [1.24, 2.4] + ids: + default: {} + dXYge8: + label: "Disp. Muon, dXY>8" + cuts: + endcap: + - "{d0} >= 8" + dXYge8Qual15: + label: "Disp. Muon, dXY>8, qual>=15" + cuts: + endcap: + - "{hwQual} >= 15" + - "{d0} >= 8" + qual15: + label: "Disp. Muon, qual>=15" + cuts: + endcap: + - "{hwQual} >= 15" + qual15_Eta2p0: + label: "Disp. Muon, eta < 2, qual>=15" + cuts: + inclusive: + - "abs({eta}) < 2" + endcap: + - "{hwQual} >= 15" + +L1MuonKMTF: + label: "KMTF Muon" + match_dR: 0.3 + eta_ranges: + inclusive: [0, 7] + barrel: [0, 0.83] + overlap: [0.83, 1.24] + endcap: [1.24, 2.4] + ids: + default: {} + +L1MuonOMTF: + label: "OMTF Muon" + match_dR: 0.3 + eta_ranges: + inclusive: [0, 7] + barrel: [0, 0.83] + overlap: [0.83, 1.24] + endcap: [1.24, 2.4] + ids: + default: {} + +L1MuonEMTF: + label: "EMTF Muon" + match_dR: 0.3 + eta_ranges: + inclusive: [0, 7] + barrel: [0, 0.83] + overlap: [0.83, 1.24] + endcap: [1.24, 2.4] + ids: + default: {} + + \ No newline at end of file diff --git a/configs/V38nano_DT12x/objects/photons.yaml b/configs/V38nano_DT12x/objects/photons.yaml new file mode 100644 index 00000000..12d51f0c --- /dev/null +++ b/configs/V38nano_DT12x/objects/photons.yaml @@ -0,0 +1,29 @@ +L1tkPhoton: + match_dR: 0.15 + eta_ranges: + inclusive: [0, 5] + barrel: [0, 1.479] + endcap: [1.479, 2.4] + ids: + NoIso: + label: "L1tkPhoton" + cuts: + inclusive: + - "abs({eta}) < 2.4" + - "{pt} > 5" + barrel: + - "{eleId} == 1" + endcap: + - "{phoId} == 1" + Iso: + label: "L1tkIsoPhoton" + cuts: + inclusive: + - "abs({eta}) < 2.4" + - "{pt} > 5" + barrel: + - "abs({relIso}) < 0.25" + - "{eleId} == 1" + endcap: + - "abs({relIso}) < 0.205" + - "{phoId} == 1" diff --git a/configs/V38nano_DT12x/objects/pv.yaml b/configs/V38nano_DT12x/objects/pv.yaml new file mode 100644 index 00000000..25fea9c0 --- /dev/null +++ b/configs/V38nano_DT12x/objects/pv.yaml @@ -0,0 +1,4 @@ +L1PV: + label: "Primary Vertex" + ids: + default: {} diff --git a/configs/V38nano_DT12x/objects/taus.yaml b/configs/V38nano_DT12x/objects/taus.yaml new file mode 100644 index 00000000..11e49a74 --- /dev/null +++ b/configs/V38nano_DT12x/objects/taus.yaml @@ -0,0 +1,61 @@ +L1nnPuppiTau: + label: "NN Tau" + match_dR: 0.1 + eta_ranges: + inclusive: [0, 7] + barrel: [0, 1.5] + endcap: [1.5, 2.4] + ids: + default: + cuts: + inclusive: + - "abs({eta}) < 2.4" + # - "{passLooseNN}==1" + # Current IB (22 Feb recipe) does not have updated WP, so cut on NN score rather than checking passLooseNN + - "{chargedIso} > 0.22" + +L1hpsTau: + label: "HPS Tau" + match_dR: 0.1 + eta_ranges: + inclusive: [0, 7] + barrel: [0, 1.5] + endcap: [1.5, 2.4] + ids: + default: + cuts: + inclusive: + - "abs({eta}) < 2.4" + +L1caloTau: + label: "Calo Tau" + match_dR: 0.3 + eta_ranges: + inclusive: [0, 7] + barrel: [0, 1.5] + endcap: [1.5, 2.4] + ids: + default: + cuts: + inclusive: + - "abs({eta}) < 2.4" + PtGe20: + label: "Calo Tau, pt > 20" + cuts: + inclusive: + - "abs({eta}) < 2.4" + - "{pt} > 20" + +L1nnCaloTau: + label: "NN Calo Tau" + match_dR: 0.3 + eta_ranges: + inclusive: [0, 7] + barrel: [0, 1.5] + endcap: [1.5, 2.4] + ids: + default: + cuts: + inclusive: + - "abs({eta}) < 2.4" + - "{hwQual}==3" diff --git a/configs/V38nano_DT12x/rate_plots/bjet.yaml b/configs/V38nano_DT12x/rate_plots/bjet.yaml new file mode 100644 index 00000000..92af29fa --- /dev/null +++ b/configs/V38nano_DT12x/rate_plots/bjet.yaml @@ -0,0 +1,10 @@ +BJetRates: + sample: MinBias + version: V38nano_DT12x + test_objects: + - L1puppiExtJetSC4:default + - L1puppiExtJetSC4:bjetnn + binning: + min: 40 + max: 420 + step: 20 diff --git a/configs/V38nano_DT12x/rate_plots/disp_ht_sig.yaml b/configs/V38nano_DT12x/rate_plots/disp_ht_sig.yaml new file mode 100644 index 00000000..72a23ce6 --- /dev/null +++ b/configs/V38nano_DT12x/rate_plots/disp_ht_sig.yaml @@ -0,0 +1,13 @@ + +DispHTRates_Signal: + sample: HtoLLPto4B_M125_Phi60_ctau100 + version: V38nano_DT12x + test_objects: + # - L1puppiHistoJetSums:HT + - L1puppiJetSC4sums:HT + - L1TrackHT:HT + - L1ExtTrackHT:HT + binning: + min: 50 + max: 975 + step: 25 diff --git a/configs/V38nano_DT12x/rate_plots/disp_muons.yaml b/configs/V38nano_DT12x/rate_plots/disp_muons.yaml new file mode 100644 index 00000000..550b7132 --- /dev/null +++ b/configs/V38nano_DT12x/rate_plots/disp_muons.yaml @@ -0,0 +1,40 @@ +gmtDispMuon: + sample: MinBias + version: V38nano_DT12x + test_objects: + - L1gmtMuon:default + - L1gmtDispMuon:default + binning: + min: 0 + max: 75 + step: 3 + +gmtDispMuonByRegion: + sample: MinBias + version: V38nano_DT12x + test_objects: + # - L1gmtMuon:default + # - L1gmtDispMuon:default + - L1gmtDispMuon:default:barrel + - L1gmtDispMuon:default:overlap + - L1gmtDispMuon:default:endcap + binning: + min: 0 + max: 75 + step: 3 + +gmtDispMuonEndcap: + sample: MinBias + version: V38nano_DT12x + test_objects: + # - L1gmtDispMuon:default:barrel + # - L1gmtDispMuon:default:overlap + - L1gmtDispMuon:default:endcap + - L1gmtDispMuon:dXYge8:endcap + - L1gmtDispMuon:dXYge8Qual15:endcap + - L1gmtDispMuon:qual15:endcap + - L1gmtDispMuon:qual15_Eta2p0:endcap + binning: + min: 0 + max: 75 + step: 3 \ No newline at end of file diff --git a/configs/V38nano_DT12x/rate_plots/eg.yaml b/configs/V38nano_DT12x/rate_plots/eg.yaml new file mode 100644 index 00000000..becfac42 --- /dev/null +++ b/configs/V38nano_DT12x/rate_plots/eg.yaml @@ -0,0 +1,12 @@ +EGRates: + sample: MinBias + version: V38nano_DT12x + test_objects: + - L1EG:default + - L1tkElectron:NoIso + - L1tkElectron:Iso + - L1tkPhoton:Iso + binning: + min: 10 + max: 97 + step: 3 diff --git a/configs/V38nano_DT12x/rate_plots/ht.yaml b/configs/V38nano_DT12x/rate_plots/ht.yaml new file mode 100644 index 00000000..8354d76a --- /dev/null +++ b/configs/V38nano_DT12x/rate_plots/ht.yaml @@ -0,0 +1,36 @@ +HTRates: + sample: MinBias + version: V38nano_DT12x + test_objects: + # - L1puppiHistoJetSums:HT + - L1puppiJetSC4sums:HT + - L1TrackHT:HT + binning: + min: 50 + max: 975 + step: 25 + +# MHTRates: +# sample: MinBias +# version: V38nano_DT12x +# test_objects: +# # - L1puppiHistoJetSums:MHT +# - L1puppiJetSC4sums:MHT +# - L1TrackHT:MHT +# binning: +# min: 50 +# max: 975 +# step: 25 + +# DispHTRates: +# sample: MinBias +# version: V38nano_DT12x +# test_objects: +# # - L1puppiHistoJetSums:HT +# - L1puppiJetSC4sums:HT +# - L1TrackHT:HT +# - L1ExtTrackHT:HT +# binning: +# min: 50 +# max: 975 +# step: 25 diff --git a/configs/V38nano_DT12x/rate_plots/jets.yaml b/configs/V38nano_DT12x/rate_plots/jets.yaml new file mode 100644 index 00000000..5f6a9c1d --- /dev/null +++ b/configs/V38nano_DT12x/rate_plots/jets.yaml @@ -0,0 +1,84 @@ +JetDefaultRates: + sample: MinBias + version: V38nano_DT12x + test_objects: + # - L1puppiJetHisto:default + - L1puppiJetSC4:default + # - L1caloJet:default + # - L1TrackJet:default + binning: + min: 40 + max: 420 + step: 20 + +# JetsByRegion: +# sample: MinBias +# version: V38nano_DT12x +# test_objects: +# - L1puppiJetSC4:default:barrel +# - L1puppiJetSC4:default:endcap +# - L1puppiJetSC4:default:forward +# - L1caloJet:default:barrel +# - L1caloJet:default:endcap +# - L1caloJet:default:forward +# # - L1TrackJet:default:barrel +# # - L1TrackJet:default:endcap +# binning: +# min: 40 +# max: 420 +# step: 20 + +JetExtendedRates: + sample: MinBias + version: V38nano_DT12x + test_objects: + - L1puppiJetSC4:default:inclusive + - L1puppiExtJetSC4:default:inclusive + # - L1puppiExtJetSC4:default:barrel + # - L1puppiExtJetSC4:default:endcap + # - L1puppiExtJetSC4:default:forward + binning: + min: 40 + max: 420 + step: 20 + +JetExtendedRatesByRegion: + sample: MinBias + version: V38nano_DT12x + test_objects: + # - L1puppiJetSC4:default:barrel + # - L1puppiJetSC4:default:endcap + # - L1puppiJetSC4:default:forward + - L1puppiExtJetSC4:default:barrel + - L1puppiExtJetSC4:default:endcap + - L1puppiExtJetSC4:default:forward + binning: + min: 40 + max: 420 + step: 20 + +# JetSC8Rates: +# sample: MinBias +# version: V38nano_DT12x +# test_objects: +# - L1puppiJetSC4:default +# - L1puppiJetSC8:default +# binning: +# min: 40 +# max: 420 +# step: 20 + + +# JetSC8Rates_byRegion: +# sample: MinBias +# version: V38nano_DT12x +# test_objects: +# # - L1puppiJetSC4:default +# - L1puppiJetSC8:default +# - L1puppiJetSC8:default:barrel +# - L1puppiJetSC8:default:endcap +# - L1puppiJetSC8:default:forward +# binning: +# min: 40 +# max: 420 +# step: 20 diff --git a/configs/V38nano_DT12x/rate_plots/met.yaml b/configs/V38nano_DT12x/rate_plots/met.yaml new file mode 100644 index 00000000..79619963 --- /dev/null +++ b/configs/V38nano_DT12x/rate_plots/met.yaml @@ -0,0 +1,11 @@ +METRates: + sample: MinBias + version: V38nano_DT12x + test_objects: + - L1puppiMET:default + - L1puppiMLMET:default + # - L1TrackMET:default + binning: + min: 50 + max: 500 + step: 25 diff --git a/configs/V38nano_DT12x/rate_plots/muons.yaml b/configs/V38nano_DT12x/rate_plots/muons.yaml new file mode 100644 index 00000000..b6251b83 --- /dev/null +++ b/configs/V38nano_DT12x/rate_plots/muons.yaml @@ -0,0 +1,34 @@ +gmtMuonByRegion: + sample: MinBias + version: V38nano_DT12x + test_objects: + - L1gmtMuon:default:barrel + - L1gmtMuon:default:overlap + - L1gmtMuon:default:endcap + binning: + min: 0 + max: 75 + step: 3 + +gmtTkMuonByRegion: + sample: MinBias + version: V38nano_DT12x + test_objects: + - L1gmtTkMuon:default:barrel + - L1gmtTkMuon:default:overlap + - L1gmtTkMuon:default:endcap + binning: + min: 0 + max: 75 + step: 3 + +MuonRates: + sample: MinBias + version: V38nano_DT12x + test_objects: + - L1gmtMuon:default + - L1gmtTkMuon:default + binning: + min: 0 + max: 75 + step: 3 diff --git a/configs/V38nano_DT12x/rate_plots/taus.yaml b/configs/V38nano_DT12x/rate_plots/taus.yaml new file mode 100644 index 00000000..911de0ed --- /dev/null +++ b/configs/V38nano_DT12x/rate_plots/taus.yaml @@ -0,0 +1,25 @@ +TauRates: + sample: MinBias + version: V38nano_DT12x + test_objects: + - L1nnPuppiTau:default + - L1hpsTau:default + - L1caloTau:default + - L1nnCaloTau:default + binning: + min: 10 + max: 155 + step: 5 + +TauRatesByRegion: + sample: MinBias + version: V38nano_DT12x + test_objects: + - L1caloTau:default:barrel + - L1caloTau:default:endcap + - L1nnPuppiTau:default:barrel + - L1nnPuppiTau:default:endcap + binning: + min: 10 + max: 155 + step: 5 diff --git a/configs/V38nano_DT12x/rate_plots/test.yml b/configs/V38nano_DT12x/rate_plots/test.yml new file mode 100644 index 00000000..92658714 --- /dev/null +++ b/configs/V38nano_DT12x/rate_plots/test.yml @@ -0,0 +1,13 @@ +JetSC8Rates_byRegion2: + sample: MinBias + version: V38nano_DT12x + test_objects: + # - L1puppiJetSC4:default + - L1puppiJetSC8:default + - L1puppiJetSC8:default:inclusive + - L1puppiJetSC8:default:barrel + #- L1puppiJetSC8:default:endcap + binning: + min: 40 + max: 420 + step: 20 diff --git a/configs/V38nano_DT12x/rate_plots/tkmuons.yaml b/configs/V38nano_DT12x/rate_plots/tkmuons.yaml new file mode 100644 index 00000000..06f87f26 --- /dev/null +++ b/configs/V38nano_DT12x/rate_plots/tkmuons.yaml @@ -0,0 +1,51 @@ +gmtTkMuonByID: + sample: MinBias + version: V38nano_DT12x + test_objects: + - L1gmtTkMuon:VLoose + - L1gmtTkMuon:Loose + - L1gmtTkMuon:Medium + - L1gmtTkMuon:Tight + binning: + min: 0 + max: 75 + step: 3 + +gmtTkMuonByID_barrel: + sample: MinBias + version: V38nano_DT12x + test_objects: + - L1gmtTkMuon:VLoose:barrel + - L1gmtTkMuon:Loose:barrel + - L1gmtTkMuon:Medium:barrel + - L1gmtTkMuon:Tight:barrel + binning: + min: 0 + max: 75 + step: 3 + +gmtTkMuonByID_overlap: + sample: MinBias + version: V38nano_DT12x + test_objects: + - L1gmtTkMuon:VLoose:overlap + - L1gmtTkMuon:Loose:overlap + - L1gmtTkMuon:Medium:overlap + - L1gmtTkMuon:Tight:overlap + binning: + min: 0 + max: 75 + step: 3 + +gmtTkMuonByID_endcap: + sample: MinBias + version: V38nano_DT12x + test_objects: + - L1gmtTkMuon:VLoose:endcap + - L1gmtTkMuon:Loose:endcap + - L1gmtTkMuon:Medium:endcap + - L1gmtTkMuon:Tight:endcap + binning: + min: 0 + max: 75 + step: 3 \ No newline at end of file diff --git a/configs/V38nano_DT12x/rate_table/v38_Step1And2_cfg.yml b/configs/V38nano_DT12x/rate_table/v38_Step1And2_cfg.yml new file mode 100644 index 00000000..bf9a7881 --- /dev/null +++ b/configs/V38nano_DT12x/rate_table/v38_Step1And2_cfg.yml @@ -0,0 +1,4 @@ +version: "V38nano_DT12x" +sample: "MinBias" +menu_config: "configs/V38nano_DT12x/rate_table/v38_menu_Step1and2.yml" +table_fname: "rates_Step1and2" diff --git a/configs/V38nano_DT12x/rate_table/v38_Step1_cfg.yml b/configs/V38nano_DT12x/rate_table/v38_Step1_cfg.yml new file mode 100644 index 00000000..96cbd69e --- /dev/null +++ b/configs/V38nano_DT12x/rate_table/v38_Step1_cfg.yml @@ -0,0 +1,4 @@ +version: "V38nano_DT12x" +sample: "MinBias" +menu_config: "configs/V38nano_DT12x/rate_table/v38_menu_Step1.yml" +table_fname: "menu_Step1" diff --git a/configs/V38nano_DT12x/rate_table/v38_Step2_cfg.yml b/configs/V38nano_DT12x/rate_table/v38_Step2_cfg.yml new file mode 100644 index 00000000..4f45a47a --- /dev/null +++ b/configs/V38nano_DT12x/rate_table/v38_Step2_cfg.yml @@ -0,0 +1,4 @@ +version: "V38nano_DT12x" +sample: "MinBias" +menu_config: "configs/V38nano_DT12x/rate_table/v38_menu_Step2.yml" +table_fname: "rates_Step2" diff --git a/configs/V38nano_DT12x/rate_table/v38_menu_Step1.yml b/configs/V38nano_DT12x/rate_table/v38_menu_Step1.yml new file mode 100644 index 00000000..99e74e38 --- /dev/null +++ b/configs/V38nano_DT12x/rate_table/v38_menu_Step1.yml @@ -0,0 +1,447 @@ +L1_PFHTT: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 450.0 + obj: L1puppiJetSC4sums:HT +L1_PFMHTT: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 135.5 + obj: L1puppiJetSC4sums:MHT +L1_PFMet: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 200.0 + obj: L1puppiMET:default +# L1_PFMLMet: +# cross_masks: [] +# leg1: +# threshold_cut: offline_pt >= 200.0 +# obj: L1puppiMLMET:default +L1_TkMu_PfJet_dRMax_DoubleJet_dEtaMax: + cross_masks: + - abs(leg2.eta) < 2.4 + - abs(leg2.z0-leg1.z0) < 1 + - leg2.deltaR(leg3) < 0.4 + - abs(leg5.eta-leg4.eta) < 1.6 + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: offline_pt >= 12.0 + obj: L1gmtTkMuon:VLoose + leg3: + threshold_cut: offline_pt >= 40.0 + obj: L1puppiJetSC4:PtGe25 + leg4: + threshold_cut: offline_pt >= 40.0 + obj: L1puppiJetSC4:PtGe25 + leg5: + threshold_cut: offline_pt >= 40.0 + obj: L1puppiJetSC4:PtGe25 +L1_SingleTkPhoIso: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 36.0 + obj: L1tkPhoton:Iso +L1_DoubleTkPhoIso: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 22.0 + obj: L1tkPhoton:Iso + leg2: + threshold_cut: offline_pt >= 12.0 + obj: L1tkPhoton:Iso +L1_PFTau_PFTau: + cross_masks: + - leg1.deltaR(leg2) > 0.5 + leg1: + threshold_cut: offline_pt > 90.0 + obj: L1caloTau:default + leg2: + threshold_cut: offline_pt > 90.0 + obj: L1caloTau:default +L1_SingleEGEle: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 51.0 + obj: L1EG:default:inclusive +L1_SinglePFTau: + cross_masks: [] + leg1: + threshold_cut: offline_pt > 150.0 + obj: L1caloTau:default +L1_SinglePfJet: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 230.0 + obj: L1puppiJetSC4:PtGe25 +L1_SingleTkEle: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 36.0 + obj: L1tkElectron:NoIso:inclusive +L1_SingleTkEleIso: + cross_masks: [] + leg1: + threshold_cut: offline_pt > 28.0 + obj: L1tkElectron:Iso:inclusive +L1_SingleTkMu: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 22.0 + obj: L1gmtTkMuon:VLoose +L1_TkEleIso_EG: + cross_masks: + - leg1.deltaR(leg2) > 0.1 + leg1: + threshold_cut: offline_pt >= 22.0 + obj: L1tkElectron:Iso:inclusive + leg2: + threshold_cut: offline_pt >= 12.0 + obj: L1EG:default:inclusive +L1_TkEleIso_PFHTT: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: offline_pt >= 26.0 + obj: L1tkElectron:Iso:inclusive + leg3: + threshold_cut: offline_pt >= 190.0 + obj: L1puppiJetSC4sums:HT +L1_TkEleIso_PFIsoTau: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: offline_pt >= 22.0 + obj: L1tkElectron:Iso:inclusive + leg3: + threshold_cut: offline_pt >= 45.0 + obj: L1nnPuppiTau:default +L1_TkEle_PFJet_dRMin: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + - leg2.deltaR(leg3) > 0.3 + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: offline_pt >= 28.0 + obj: L1tkElectron:NoIso:inclusive + leg3: + threshold_cut: offline_pt >= 40.0 + obj: L1puppiJetSC4:PtGe25 +L1_TkEle_TkMu: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + leg1: + threshold_cut: offline_pt >= 10.0 + obj: L1tkElectron:NoIso:inclusive + leg2: + threshold_cut: offline_pt >= 20.0 + obj: L1gmtTkMuon:VLoose +L1_TkMu_DoubleTkEle: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + - abs(leg3.z0-leg1.z0) < 1 + leg1: + threshold_cut: pt > 6 + obj: L1gmtTkMuon:VLoose + leg2: + threshold_cut: offline_pt >= 17.0 + obj: L1tkElectron:NoIso:inclusive + leg3: + threshold_cut: offline_pt >= 17.0 + obj: L1tkElectron:NoIso:inclusive +L1_TkMu_PfHTT: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: pt > 6 + obj: L1gmtTkMuon:VLoose + leg3: + threshold_cut: offline_pt >= 320.0 + obj: L1puppiJetSC4sums:HT +L1_TkMu_PfJet_PfMet: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: pt > 3 + obj: L1gmtTkMuon:VLoose + leg3: + threshold_cut: offline_pt >= 110.0 + obj: L1puppiJetSC4:PtGe25 + leg4: + threshold_cut: offline_pt >= 120.0 + obj: L1puppiMET:default +L1_TkMu_TkEle: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + leg1: + threshold_cut: pt > 7 + obj: L1gmtTkMuon:VLoose + leg2: + threshold_cut: offline_pt >= 23.0 + obj: L1tkElectron:NoIso:inclusive +L1_TkMu_TkEleIso: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + leg1: + threshold_cut: pt > 7 + obj: L1gmtTkMuon:VLoose + leg2: + threshold_cut: offline_pt >= 20.0 + obj: L1tkElectron:Iso:inclusive +L1_DoubleTkEle_PFHTT: + cross_masks: + - (abs(leg2.z0-leg1.z0) < 1 & (leg2.deltaR(leg3) > 0)) + - (abs(leg3.z0-leg1.z0) < 1 & (leg2.deltaR(leg3) > 0)) + - (leg3.deltaR(leg2) > 0) + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: offline_pt > 8.0 + obj: L1tkElectron:NoIso:inclusive + leg3: + threshold_cut: offline_pt > 8.0 + obj: L1tkElectron:NoIso:inclusive + leg4: + threshold_cut: offline_pt > 390.0 + obj: L1puppiJetSC4sums:HT +L1_DoubleEGEle: + cross_masks: + - leg1.deltaR(leg2) > 0.1 + leg1: + threshold_cut: offline_pt >= 37.0 + obj: L1EG:default:inclusive + leg2: + threshold_cut: offline_pt >= 24.0 + obj: L1EG:default:inclusive +L1_DoublePFJet_MassMin: + cross_masks: + - (leg1 + leg2).mass > 620 + leg1: + threshold_cut: offline_pt >= 160.0 + obj: L1puppiJetSC4:PtGe25 + leg2: + threshold_cut: offline_pt >= 35.0 + obj: L1puppiJetSC4:PtGe25 +L1_DoublePFJet_dEtaMax: + cross_masks: + - abs(leg2.eta-leg1.eta) < 1.6 + leg1: + threshold_cut: leg1.offline_pt >= 112.0 + obj: L1puppiJetSC4:PtGe25 + leg2: + threshold_cut: leg2.offline_pt >= 112.0 + obj: L1puppiJetSC4:PtGe25 +L1_DoubleTkEle: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + leg1: + threshold_cut: offline_pt >= 25.0 + obj: L1tkElectron:NoIso:inclusive + leg2: + threshold_cut: offline_pt >= 12.0 + obj: L1tkElectron:NoIso:inclusive +L1_DoubleTkMu: + cross_masks: + - ((abs(leg1.z0-leg2.z0) < 1) & (leg1.deltaR(leg2) > 0)) + leg1: + threshold_cut: offline_pt > 15.0 + obj: L1gmtTkMuon:VLoose + leg2: + threshold_cut: pt > 7 + obj: L1gmtTkMuon:VLoose +L1_DoubleTkMu_PfHTT: + cross_masks: + - (abs(leg2.z0-leg1.z0) < 1 & (leg3.deltaR(leg2) > 0)) + - (abs(leg3.z0-leg1.z0) < 1 & (leg3.deltaR(leg2) > 0)) + - (leg3.deltaR(leg2) > 0) + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: pt > 3 + obj: L1gmtTkMuon:VLoose + leg3: + threshold_cut: pt > 3 + obj: L1gmtTkMuon:VLoose + leg4: + threshold_cut: offline_pt >= 300.0 + obj: L1puppiJetSC4sums:HT +L1_DoubleTkMu_PfJet_PfMet: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + - abs(leg3.z0-leg1.z0) < 1 + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: pt > 3 + obj: L1gmtTkMuon:VLoose + leg3: + threshold_cut: pt > 3 + obj: L1gmtTkMuon:VLoose + leg4: + threshold_cut: offline_pt >= 60.0 + obj: L1puppiJetSC4:PtGe25 + leg5: + threshold_cut: offline_pt >= 130.0 + obj: L1puppiMET:default +L1_DoubleTkMu_TkEle: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + - abs(leg3.z0-leg1.z0) < 1 + leg1: + threshold_cut: pt > 5 + obj: L1gmtTkMuon:VLoose + leg2: + threshold_cut: pt > 5 + obj: L1gmtTkMuon:VLoose + leg3: + threshold_cut: offline_pt >= 9.0 + obj: L1tkElectron:NoIso:inclusive +L1_PFHTT_QuadJet: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 400.0 + obj: L1puppiJetSC4sums:HT + leg2: + threshold_cut: offline_pt >= 70.0 + obj: L1puppiJetSC4:PtGe25 + leg3: + threshold_cut: offline_pt >= 55.0 + obj: L1puppiJetSC4:PtGe25 + leg4: + threshold_cut: offline_pt >= 40.0 + obj: L1puppiJetSC4:PtGe25 + leg5: + threshold_cut: offline_pt >= 40.0 + obj: L1puppiJetSC4:PtGe25 +L1_PFIsoTau_PFIsoTau: + cross_masks: + - leg1.deltaR(leg2) > 0.5 + leg1: + threshold_cut: offline_pt >= 52.0 + obj: L1nnPuppiTau:default + leg2: + threshold_cut: offline_pt >= 52.0 + obj: L1nnPuppiTau:default +L1_PFIsoTau_PFMet: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 55.0 + obj: L1nnPuppiTau:default + leg2: + threshold_cut: offline_pt >= 190.0 + obj: L1puppiMET:default +L1_PFIsoTau_TkMu: + cross_masks: + - abs(leg3.z0-leg1.z0) < 1 + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: offline_pt >= 42.0 + obj: L1nnPuppiTau:default + leg3: + threshold_cut: offline_pt >= 18.0 + obj: L1gmtTkMuon:VLoose +######################## +###### BPH SEEDS ####### +######################## +L1_TripleTkMu: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + - abs(leg3.z0-leg1.z0) < 1 + leg1: + threshold_cut: pt > 5 + obj: L1gmtTkMuon:default + leg2: + threshold_cut: pt > 3 + obj: L1gmtTkMuon:default + leg3: + threshold_cut: pt > 3 + obj: L1gmtTkMuon:default +L1_DoubleTkMu4p5er2p0_SQ_OS_Mass7to18: + cross_masks: + - (((leg1+leg2).mass > 7.0) & (leg1.deltaR(leg2) > 0)) + - (((leg1+leg2).mass < 18.0) & (leg1.deltaR(leg2) > 0)) + - ((leg1.charge*leg2.charge < 0.0) & (leg1.deltaR(leg2) > 0)) + - ((abs(leg2.z0-leg1.z0) < 1) & (leg1.deltaR(leg2) > 0)) + leg1: + threshold_cut: pt > 4.4 + obj: L1gmtTkMuon:default + leg2: + threshold_cut: pt > 4.4 + obj: L1gmtTkMuon:default +L1_DoubleTkMu0er1p5_SQ_OS_dR_Max1p4: + cross_masks: + - (abs(leg1.eta) < 1.5) + - (abs(leg2.eta) < 1.5) + - ((leg1.deltaR(leg2) < 1.4)) + - ((leg1.charge*leg2.charge < 0.0)) + - ((abs(leg2.z0-leg1.z0) < 1)) + - ((leg1.deltaR(leg2) > 0)) + leg1: + threshold_cut: pt > 0 + obj: L1gmtTkMuon:default + leg2: + threshold_cut: pt > 0 + obj: L1gmtTkMuon:default +L1_TripleTkMu_5SQ_3SQ_0OQ_DoubleMu_5_3_SQ_OS_Mass_Max9: + cross_masks: + - (leg1+leg2).mass < 9.0 + - leg1.charge*leg2.charge < 0.0 + - abs(leg2.z0-leg1.z0) < 1 + - abs(leg3.z0-leg1.z0) < 1 + leg1: + threshold_cut: pt > 5 + obj: L1gmtTkMuon:default + leg2: + threshold_cut: pt > 3 + obj: L1gmtTkMuon:default + leg3: + threshold_cut: pt > 0 + obj: L1gmtTkMuon:default +L1_TripleTkMu_5_3p5_2p5_OS_Mass_5to17: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + - leg1.charge*leg3.charge < 0.0 + - (leg1+leg3).mass > 5.0 + - (leg1+leg3).mass < 17.0 + - abs(leg3.z0-leg1.z0) < 1 + leg1: + threshold_cut: pt > 5 + obj: L1gmtTkMuon:default + leg2: + threshold_cut: pt > 3.5 + obj: L1gmtTkMuon:default + leg3: + threshold_cut: pt > 2.5 + obj: L1gmtTkMuon:default +L1_DoubleTkMu4_SQ_OS_dR_Max1p2: + cross_masks: + - ((leg1.deltaR(leg2) < 1.2) & (leg1.deltaR(leg2) > 0)) + - ((leg1.charge*leg2.charge < 0.0) & (leg1.deltaR(leg2) > 0)) + - ((abs(leg2.z0-leg1.z0) < 1) & (leg1.deltaR(leg2) > 0)) + leg1: + threshold_cut: pt > 4 + obj: L1gmtTkMuon:default + leg2: + threshold_cut: pt > 4 + obj: L1gmtTkMuon:default \ No newline at end of file diff --git a/configs/V38nano_DT12x/rate_table/v38_menu_Step1and2.yml b/configs/V38nano_DT12x/rate_table/v38_menu_Step1and2.yml new file mode 100644 index 00000000..58573404 --- /dev/null +++ b/configs/V38nano_DT12x/rate_table/v38_menu_Step1and2.yml @@ -0,0 +1,537 @@ +################################# +########## STEP 1 +################################# +L1_PFHTT: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 450.0 + obj: L1puppiJetSC4sums:HT +L1_PFMHTT: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 135.5 + obj: L1puppiJetSC4sums:MHT +L1_PFMet: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 200.0 + obj: L1puppiMET:default +# L1_PFMLMet: +# cross_masks: [] +# leg1: +# threshold_cut: offline_pt >= 200.0 +# obj: L1puppiMLMET:default +L1_TkMu_PfJet_dRMax_DoubleJet_dEtaMax: + cross_masks: + - abs(leg2.eta) < 2.4 + - abs(leg2.z0-leg1.z0) < 1 + - leg2.deltaR(leg3) < 0.4 + - abs(leg5.eta-leg4.eta) < 1.6 + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: offline_pt >= 12.0 + obj: L1gmtTkMuon:VLoose + leg3: + threshold_cut: offline_pt >= 40.0 + obj: L1puppiJetSC4:PtGe25 + leg4: + threshold_cut: offline_pt >= 40.0 + obj: L1puppiJetSC4:PtGe25 + leg5: + threshold_cut: offline_pt >= 40.0 + obj: L1puppiJetSC4:PtGe25 +L1_SingleTkPhoIso: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 36.0 + obj: L1tkPhoton:Iso +L1_DoubleTkPhoIso: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 22.0 + obj: L1tkPhoton:Iso + leg2: + threshold_cut: offline_pt >= 12.0 + obj: L1tkPhoton:Iso +L1_PFTau_PFTau: + cross_masks: + - leg1.deltaR(leg2) > 0.5 + leg1: + threshold_cut: offline_pt > 90.0 + obj: L1caloTau:default + leg2: + threshold_cut: offline_pt > 90.0 + obj: L1caloTau:default +L1_SingleEGEle: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 51.0 + obj: L1EG:default:inclusive +L1_SinglePFTau: + cross_masks: [] + leg1: + threshold_cut: offline_pt > 150.0 + obj: L1caloTau:default +L1_SinglePfJet: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 230.0 + obj: L1puppiJetSC4:PtGe25 +L1_SingleTkEle: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 36.0 + obj: L1tkElectron:NoIso:inclusive +L1_SingleTkEleIso: + cross_masks: [] + leg1: + threshold_cut: offline_pt > 28.0 + obj: L1tkElectron:Iso:inclusive +L1_SingleTkMu: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 22.0 + obj: L1gmtTkMuon:VLoose +L1_TkEleIso_EG: + cross_masks: + - leg1.deltaR(leg2) > 0.1 + leg1: + threshold_cut: offline_pt >= 22.0 + obj: L1tkElectron:Iso:inclusive + leg2: + threshold_cut: offline_pt >= 12.0 + obj: L1EG:default:inclusive +L1_TkEleIso_PFHTT: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: offline_pt >= 26.0 + obj: L1tkElectron:Iso:inclusive + leg3: + threshold_cut: offline_pt >= 190.0 + obj: L1puppiJetSC4sums:HT +L1_TkEleIso_PFIsoTau: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: offline_pt >= 22.0 + obj: L1tkElectron:Iso:inclusive + leg3: + threshold_cut: offline_pt >= 45.0 + obj: L1nnPuppiTau:default +L1_TkEle_PFJet_dRMin: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + - leg2.deltaR(leg3) > 0.3 + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: offline_pt >= 28.0 + obj: L1tkElectron:NoIso:inclusive + leg3: + threshold_cut: offline_pt >= 40.0 + obj: L1puppiJetSC4:PtGe25 +L1_TkEle_TkMu: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + leg1: + threshold_cut: offline_pt >= 10.0 + obj: L1tkElectron:NoIso:inclusive + leg2: + threshold_cut: offline_pt >= 20.0 + obj: L1gmtTkMuon:VLoose +L1_TkMu_DoubleTkEle: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + - abs(leg3.z0-leg1.z0) < 1 + leg1: + threshold_cut: pt > 6 + obj: L1gmtTkMuon:VLoose + leg2: + threshold_cut: offline_pt >= 17.0 + obj: L1tkElectron:NoIso:inclusive + leg3: + threshold_cut: offline_pt >= 17.0 + obj: L1tkElectron:NoIso:inclusive +L1_TkMu_PfHTT: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: pt > 6 + obj: L1gmtTkMuon:VLoose + leg3: + threshold_cut: offline_pt >= 320.0 + obj: L1puppiJetSC4sums:HT +L1_TkMu_PfJet_PfMet: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: pt > 3 + obj: L1gmtTkMuon:VLoose + leg3: + threshold_cut: offline_pt >= 110.0 + obj: L1puppiJetSC4:PtGe25 + leg4: + threshold_cut: offline_pt >= 120.0 + obj: L1puppiMET:default +L1_TkMu_TkEle: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + leg1: + threshold_cut: pt > 7 + obj: L1gmtTkMuon:VLoose + leg2: + threshold_cut: offline_pt >= 23.0 + obj: L1tkElectron:NoIso:inclusive +L1_TkMu_TkEleIso: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + leg1: + threshold_cut: pt > 7 + obj: L1gmtTkMuon:VLoose + leg2: + threshold_cut: offline_pt >= 20.0 + obj: L1tkElectron:Iso:inclusive +L1_DoubleTkEle_PFHTT: + cross_masks: + - (abs(leg2.z0-leg1.z0) < 1 & (leg2.deltaR(leg3) > 0)) + - (abs(leg3.z0-leg1.z0) < 1 & (leg2.deltaR(leg3) > 0)) + - (leg3.deltaR(leg2) > 0) + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: offline_pt > 8.0 + obj: L1tkElectron:NoIso:inclusive + leg3: + threshold_cut: offline_pt > 8.0 + obj: L1tkElectron:NoIso:inclusive + leg4: + threshold_cut: offline_pt > 390.0 + obj: L1puppiJetSC4sums:HT +L1_DoubleEGEle: + cross_masks: + - leg1.deltaR(leg2) > 0.1 + leg1: + threshold_cut: offline_pt >= 37.0 + obj: L1EG:default:inclusive + leg2: + threshold_cut: offline_pt >= 24.0 + obj: L1EG:default:inclusive +L1_DoublePFJet_MassMin: + cross_masks: + - (leg1 + leg2).mass > 620 + leg1: + threshold_cut: offline_pt >= 160.0 + obj: L1puppiJetSC4:PtGe25 + leg2: + threshold_cut: offline_pt >= 35.0 + obj: L1puppiJetSC4:PtGe25 +L1_DoublePFJet_dEtaMax: + cross_masks: + - abs(leg2.eta-leg1.eta) < 1.6 + leg1: + threshold_cut: leg1.offline_pt >= 112.0 + obj: L1puppiJetSC4:PtGe25 + leg2: + threshold_cut: leg2.offline_pt >= 112.0 + obj: L1puppiJetSC4:PtGe25 +L1_DoubleTkEle: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + leg1: + threshold_cut: offline_pt >= 25.0 + obj: L1tkElectron:NoIso:inclusive + leg2: + threshold_cut: offline_pt >= 12.0 + obj: L1tkElectron:NoIso:inclusive +L1_DoubleTkMu: + cross_masks: + - ((abs(leg1.z0-leg2.z0) < 1) & (leg1.deltaR(leg2) > 0)) + leg1: + threshold_cut: offline_pt > 15.0 + obj: L1gmtTkMuon:VLoose + leg2: + threshold_cut: pt > 7 + obj: L1gmtTkMuon:VLoose +L1_DoubleTkMu_PfHTT: + cross_masks: + - (abs(leg2.z0-leg1.z0) < 1 & (leg3.deltaR(leg2) > 0)) + - (abs(leg3.z0-leg1.z0) < 1 & (leg3.deltaR(leg2) > 0)) + - (leg3.deltaR(leg2) > 0) + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: pt > 3 + obj: L1gmtTkMuon:VLoose + leg3: + threshold_cut: pt > 3 + obj: L1gmtTkMuon:VLoose + leg4: + threshold_cut: offline_pt >= 300.0 + obj: L1puppiJetSC4sums:HT +L1_DoubleTkMu_PfJet_PfMet: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + - abs(leg3.z0-leg1.z0) < 1 + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: pt > 3 + obj: L1gmtTkMuon:VLoose + leg3: + threshold_cut: pt > 3 + obj: L1gmtTkMuon:VLoose + leg4: + threshold_cut: offline_pt >= 60.0 + obj: L1puppiJetSC4:PtGe25 + leg5: + threshold_cut: offline_pt >= 130.0 + obj: L1puppiMET:default +L1_DoubleTkMu_TkEle: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + - abs(leg3.z0-leg1.z0) < 1 + leg1: + threshold_cut: pt > 5 + obj: L1gmtTkMuon:VLoose + leg2: + threshold_cut: pt > 5 + obj: L1gmtTkMuon:VLoose + leg3: + threshold_cut: offline_pt >= 9.0 + obj: L1tkElectron:NoIso:inclusive +L1_PFHTT_QuadJet: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 400.0 + obj: L1puppiJetSC4sums:HT + leg2: + threshold_cut: offline_pt >= 70.0 + obj: L1puppiJetSC4:PtGe25 + leg3: + threshold_cut: offline_pt >= 55.0 + obj: L1puppiJetSC4:PtGe25 + leg4: + threshold_cut: offline_pt >= 40.0 + obj: L1puppiJetSC4:PtGe25 + leg5: + threshold_cut: offline_pt >= 40.0 + obj: L1puppiJetSC4:PtGe25 +L1_PFIsoTau_PFIsoTau: + cross_masks: + - leg1.deltaR(leg2) > 0.5 + leg1: + threshold_cut: offline_pt >= 52.0 + obj: L1nnPuppiTau:default + leg2: + threshold_cut: offline_pt >= 52.0 + obj: L1nnPuppiTau:default +L1_PFIsoTau_PFMet: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 55.0 + obj: L1nnPuppiTau:default + leg2: + threshold_cut: offline_pt >= 190.0 + obj: L1puppiMET:default +L1_PFIsoTau_TkMu: + cross_masks: + - abs(leg3.z0-leg1.z0) < 1 + leg1: + threshold_cut: null + obj: L1PV:default + leg2: + threshold_cut: offline_pt >= 42.0 + obj: L1nnPuppiTau:default + leg3: + threshold_cut: offline_pt >= 18.0 + obj: L1gmtTkMuon:VLoose +######################## +###### BPH SEEDS ####### +######################## +L1_TripleTkMu: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + - abs(leg3.z0-leg1.z0) < 1 + leg1: + threshold_cut: pt > 5 + obj: L1gmtTkMuon:default + leg2: + threshold_cut: pt > 3 + obj: L1gmtTkMuon:default + leg3: + threshold_cut: pt > 3 + obj: L1gmtTkMuon:default +L1_DoubleTkMu4p5er2p0_SQ_OS_Mass7to18: + cross_masks: + - (((leg1+leg2).mass > 7.0) & (leg1.deltaR(leg2) > 0)) + - (((leg1+leg2).mass < 18.0) & (leg1.deltaR(leg2) > 0)) + - ((leg1.charge*leg2.charge < 0.0) & (leg1.deltaR(leg2) > 0)) + - ((abs(leg2.z0-leg1.z0) < 1) & (leg1.deltaR(leg2) > 0)) + leg1: + threshold_cut: pt > 4.4 + obj: L1gmtTkMuon:default + leg2: + threshold_cut: pt > 4.4 + obj: L1gmtTkMuon:default +L1_DoubleTkMu0er1p5_SQ_OS_dR_Max1p4: + cross_masks: + - (abs(leg1.eta) < 1.5) + - (abs(leg2.eta) < 1.5) + - ((leg1.deltaR(leg2) < 1.4)) + - ((leg1.charge*leg2.charge < 0.0)) + - ((abs(leg2.z0-leg1.z0) < 1)) + - ((leg1.deltaR(leg2) > 0)) + leg1: + threshold_cut: pt > 0 + obj: L1gmtTkMuon:default + leg2: + threshold_cut: pt > 0 + obj: L1gmtTkMuon:default +L1_TripleTkMu_5SQ_3SQ_0OQ_DoubleMu_5_3_SQ_OS_Mass_Max9: + cross_masks: + - (leg1+leg2).mass < 9.0 + - leg1.charge*leg2.charge < 0.0 + - abs(leg2.z0-leg1.z0) < 1 + - abs(leg3.z0-leg1.z0) < 1 + leg1: + threshold_cut: pt > 5 + obj: L1gmtTkMuon:default + leg2: + threshold_cut: pt > 3 + obj: L1gmtTkMuon:default + leg3: + threshold_cut: pt > 0 + obj: L1gmtTkMuon:default +L1_TripleTkMu_5_3p5_2p5_OS_Mass_5to17: + cross_masks: + - abs(leg2.z0-leg1.z0) < 1 + - leg1.charge*leg3.charge < 0.0 + - (leg1+leg3).mass > 5.0 + - (leg1+leg3).mass < 17.0 + - abs(leg3.z0-leg1.z0) < 1 + leg1: + threshold_cut: pt > 5 + obj: L1gmtTkMuon:default + leg2: + threshold_cut: pt > 3.5 + obj: L1gmtTkMuon:default + leg3: + threshold_cut: pt > 2.5 + obj: L1gmtTkMuon:default +L1_DoubleTkMu4_SQ_OS_dR_Max1p2: + cross_masks: + - ((leg1.deltaR(leg2) < 1.2) & (leg1.deltaR(leg2) > 0)) + - ((leg1.charge*leg2.charge < 0.0) & (leg1.deltaR(leg2) > 0)) + - ((abs(leg2.z0-leg1.z0) < 1) & (leg1.deltaR(leg2) > 0)) + leg1: + threshold_cut: pt > 4 + obj: L1gmtTkMuon:default + leg2: + threshold_cut: pt > 4 + obj: L1gmtTkMuon:default +################################# +########## STEP 2 +################################# +### SC8 wide cone jet seeds +L1_SinglePfJet8: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 230.0 + obj: L1puppiJetSC8:default +L1_DoublePFJet8_dEtaMax: + cross_masks: + - abs(leg2.eta-leg1.eta) < 1.6 + leg1: + threshold_cut: leg1.offline_pt >= 200.0 + obj: L1puppiJetSC8:default + leg2: + threshold_cut: leg2.offline_pt >= 200.0 + obj: L1puppiJetSC8:default +### Bjet seed +L1_PFHTT_QuadJet_BTagNNScore: + cross_masks: + - (leg2.btagScore + leg3.btagScore + leg4.btagScore + leg5.btagScore) > 2.20 + leg1: + threshold_cut: offline_pt >= 299.0 + obj: L1puppiJetSC4sums:HT + leg2: + threshold_cut: pt >= 25 + obj: L1puppiExtJetSC4:default + leg3: + threshold_cut: pt >= 25 + obj: L1puppiExtJetSC4:default + leg4: + threshold_cut: pt >= 25 + obj: L1puppiExtJetSC4:default + leg5: + threshold_cut: pt >= 25 + obj: L1puppiExtJetSC4:default +############################## +### Displaced Muons +############################## +L1_SingleDispMu: + cross_masks: [] + leg1: + threshold_cut: pt >= 22.0 + obj: L1gmtDispMuon:qual15_Eta2p0 +# L1_SingleDispMu_BMTF: +# cross_masks: [] +# leg1: +# threshold_cut: pt >= 22.0 +# obj: L1gmtDispMuon:default:barrel +# L1_SingleDispMu_OMTF: +# cross_masks: [] +# leg1: +# threshold_cut: pt >= 22.0 +# obj: L1gmtDispMuon:default:overlap +# # L1_SingleDispMu_EMTF: +# # cross_masks: [] +# # leg1: +# # threshold_cut: pt >= 22.0 +# # obj: L1gmtDispMuon:default:endcap +# L1_SingleDispMu_EMTF_SQ_eta2p0: +# cross_masks: [] +# leg1: +# threshold_cut: pt >= 22.0 +# obj: L1gmtDispMuon:qual15_Eta2p0:endcap +L1_DoubleDispMu: + cross_masks: [] + # - ((abs(leg1.z0-leg2.z0) < 1) & (leg1.deltaR(leg2) > 0)) + leg1: + threshold_cut: pt > 15.0 + obj: L1gmtDispMuon:default + leg2: + threshold_cut: pt > 7 + obj: L1gmtDispMuon:default +# ############################## +# ### GTT +# ############################## +L1_W3pi_GTT: + cross_masks: [] + leg1: + threshold_cut: pt > -99 + obj: L1TrackTripletWord:default +# L1_TkDispHT: +# cross_masks: [] +# leg1: +# threshold_cut: ht >= 200 +# obj: L1ExtTrackHT:HT \ No newline at end of file diff --git a/configs/V38nano_DT12x/rate_table/v38_menu_Step2.yml b/configs/V38nano_DT12x/rate_table/v38_menu_Step2.yml new file mode 100644 index 00000000..1399f49d --- /dev/null +++ b/configs/V38nano_DT12x/rate_table/v38_menu_Step2.yml @@ -0,0 +1,125 @@ +### SC8 wide cone jet seeds +L1_SinglePfJet8: + cross_masks: [] + leg1: + threshold_cut: offline_pt >= 230.0 + obj: L1puppiJetSC8:default +L1_DoublePFJet8_dEtaMax: + cross_masks: + - abs(leg2.eta-leg1.eta) < 1.6 + leg1: + threshold_cut: leg1.offline_pt >= 200.0 + obj: L1puppiJetSC8:default + leg2: + threshold_cut: leg2.offline_pt >= 200.0 + obj: L1puppiJetSC8:default +### Bjet seed +L1_PFHTT_QuadJet_BTagNNScore: + cross_masks: + - (leg2.btagScore + leg3.btagScore + leg4.btagScore + leg5.btagScore) > 2.20 + leg1: + threshold_cut: offline_pt >= 299.0 + obj: L1puppiJetSC4sums:HT + leg2: + threshold_cut: pt >= 25 + obj: L1puppiExtJetSC4:default + leg3: + threshold_cut: pt >= 25 + obj: L1puppiExtJetSC4:default + leg4: + threshold_cut: pt >= 25 + obj: L1puppiExtJetSC4:default + leg5: + threshold_cut: pt >= 25 + obj: L1puppiExtJetSC4:default +# ############################## +# ### Displaced Muons +# ############################## +L1_SingleDispMu: + cross_masks: [] + leg1: + threshold_cut: pt >= 22.0 + obj: L1gmtDispMuon:qual15_Eta2p0 +# L1_SingleDispMu_BMTF: +# cross_masks: [] +# leg1: +# threshold_cut: pt >= 22.0 +# obj: L1gmtDispMuon:default:barrel +# L1_SingleDispMu_OMTF: +# cross_masks: [] +# leg1: +# threshold_cut: pt >= 22.0 +# obj: L1gmtDispMuon:default:overlap +# # L1_SingleDispMu_EMTF: +# # cross_masks: [] +# # leg1: +# # threshold_cut: pt >= 22.0 +# # obj: L1gmtDispMuon:default:endcap +# L1_SingleDispMu_EMTF_SQ_eta2p0: +# cross_masks: [] +# leg1: +# threshold_cut: pt >= 22.0 +# obj: L1gmtDispMuon:qual15_Eta2p0:endcap +L1_DoubleDispMu: + cross_masks: [] + leg1: + threshold_cut: pt > 15.0 + obj: L1gmtDispMuon:default + leg2: + threshold_cut: pt > 7 + obj: L1gmtDispMuon:default +# # ############################## +# # ### GTT +# # ############################## +L1_W3pi_GTT: + cross_masks: [] + leg1: + threshold_cut: pt > -99 + obj: L1TrackTripletWord:default +# L1_TkDispHT: +# cross_masks: [] +# leg1: +# threshold_cut: ht >= 200 +# obj: L1ExtTrackHT:HT + + +# #### FOR DEBUG +# #### STEP1 muons +# L1_SingleTkMu: +# cross_masks: [] +# leg1: +# threshold_cut: offline_pt >= 22.0 +# obj: L1gmtTkMuon:Medium +# L1_TripleTkMu: +# cross_masks: +# - abs(leg2.z0-leg1.z0) < 1 +# - abs(leg3.z0-leg1.z0) < 1 +# leg1: +# threshold_cut: pt > 5 +# obj: L1gmtTkMuon:Medium +# leg2: +# threshold_cut: pt > 3 +# obj: L1gmtTkMuon:Medium +# leg3: +# threshold_cut: pt > 3 +# obj: L1gmtTkMuon:Medium +# L1_DoubleTkMu: +# cross_masks: +# - ((abs(leg1.z0-leg2.z0) < 1) & (leg1.deltaR(leg2) > 0)) +# leg1: +# threshold_cut: offline_pt > 15.0 +# obj: L1gmtTkMuon:Medium +# leg2: +# threshold_cut: pt > 7 +# obj: L1gmtTkMuon:Medium +# L1_DoubleTkMu4_SQ_OS_dR_Max1p2: +# cross_masks: +# - ((leg1.deltaR(leg2) < 1.2) & (leg1.deltaR(leg2) > 0)) +# - ((leg1.charge*leg2.charge < 0.0) & (leg1.deltaR(leg2) > 0)) +# - ((abs(leg2.z0-leg1.z0) < 1) & (leg1.deltaR(leg2) > 0)) +# leg1: +# threshold_cut: pt > 4 +# obj: L1gmtTkMuon:Medium +# leg2: +# threshold_cut: pt > 4 +# obj: L1gmtTkMuon:Medium \ No newline at end of file diff --git a/menu_tools/rate_table/L1Table.ipynb b/menu_tools/rate_table/L1Table.ipynb new file mode 100644 index 00000000..1baff32c --- /dev/null +++ b/menu_tools/rate_table/L1Table.ipynb @@ -0,0 +1,218 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from collections import defaultdict\n", + "import csv\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "! ls /eos/home-a/alobanov/www/L1T/Phase2/menu/Validation/NewMenuTools/V38nano_DT12x/rate_tables/*.csv" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#fname = \"/afs/cern.ch/user/a/alobanov/work/L1T/phase2/menu/MenuTools/test/Phase2-L1MenuTools/outputs/V38nano_DT12x/rate_tables/rates_Step2_V38nano_DT12x.csv\"\n", + "# fname = \"/eos/home-a/alobanov/www/L1T/Phase2/menu/Validation/NewMenuTools/V38nano_DT12x/rate_tables/rate_table_V38_DT12x/rates_Step1and2_V38nano_DT12x.csv\"\n", + "\n", + "# Step1\n", + "#fname = \"/eos/home-a/alobanov/www/L1T/Phase2/menu/Validation/NewMenuTools/V38nano_DT12x/rate_tables/menu_Step1_V38nano_DT12x.csv\"\n", + "# Step1+2\n", + "fname = \"/eos/home-a/alobanov/www/L1T/Phase2/menu/Validation/NewMenuTools/V38nano_DT12x/rate_tables/rates_Step1and2_V38nano_DT12x.csv\"\n", + "df = pd.read_csv(fname)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "### UNCOMMENT FOR OFFLINE THRESHOLDS -> DERIVED EXTERNALLY \n", + "\n", + "# l1_obj = []\n", + "# thresholds = defaultdict(list)\n", + "# with open(\"onl2off_th_update.txt\") as f:\n", + "# for line in f:\n", + "# if \"####\" in line: continue\n", + "# if \"L1_\" in line:\n", + "# l1_obj.append(line)\n", + "# obj = line\n", + "# if \"leg\" in line:\n", + "# legs = line.split(',')\n", + "# _dict = {}\n", + "# _dict[legs[0].split(' Eta = ')[0]] = {'offline': legs[1].split(' = ')[1], 'online': legs[2].split(' = ')[1][:-1]}\n", + "# thresholds[obj[:-1]].append(_dict)\n", + "# # print(line) \n", + "\n", + "# l1_thresholds = defaultdict(list)\n", + "# rates = defaultdict(list)\n", + "# for _obj in thresholds:\n", + "# # if _obj == 'L1_PFMHTT': continue # not in menu\n", + "# dfi= df[df.seed==_obj]\n", + "# if(len(dfi) == 0):\n", + "# print(f\"... {_obj} missing ...\")\n", + "# continue\n", + "# rates[_obj] = float(dfi.rate)\n", + "# offlines = []\n", + "# onlines = []\n", + "# for legs in thresholds[_obj]:\n", + "# for leg in legs:\n", + "# onlines.append(int(float(legs[leg]['online'])))\n", + "# offlines.append(int(float(legs[leg]['offline'])))\n", + "# l1_thresholds[_obj] = (onlines, offlines)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "l1_names_map = {\n", + " \"Single/Double/Triple Lepton (electron, muon) seeds\":\n", + " {\"L1_SingleTkMu\": [\"Single tkMuon\", r\"$|\\eta|<2.4$\", \"95\"],\n", + " \"L1_DoubleTkMu\": [\"Double tkMuon\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$\", \"95\"],\n", + "# \"L1_DoubleTkMu9_SQ\": [\"\\color{black}Double TkMuon 9 SQ\", r\"$|\\eta|<2.4$\", \"?\"], \n", + " \"L1_SingleTkEle\": [\"Single tkElectron\", r\"$|\\eta|<2.4$\", \"93\"],\n", + " \"L1_SingleTkEleIso\": [\"Single tkIsoElectron\", r\"$|\\eta|<2.4$\", \"93\"],\n", + " \"L1_TkEleIso_EG\": [\"TkIsoElectron-StaEG\", r\"$|\\eta|<2.4$\", \"93,99\"],\n", + " \"L1_DoubleTkEle\": [\"Double tkElectron\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$\", \"93\"],\n", + " \"L1_SingleEGEle\": [\"Single StaEG\", r\"$|\\eta|<2.4$\", \"99\"],\n", + " \"L1_DoubleEGEle\": [\"Double StaEG\", r\"$|\\eta|<2.4$\", \"99\"],},\n", + " \n", + " \"Photon seeds\":\n", + " {\"L1_SingleTkPhoIso\": [\"Single TkIsoPhoton\", r\"$|\\eta|<2.4$\", \"97\"],\n", + " \"L1_DoubleTkPhoIso\": [\"Double TkIsoPhoton\", r\"$|\\eta|<2.4$\", \"97\"],},\n", + " \n", + " \"Tau seeds\":\n", + " {\"L1_SinglePFTau\": [\"Single CaloTau\", r\"$|\\eta|<2.172$\", \"99\"],\n", + " \"L1_PFTau_PFTau\": [\"Double CaloTau\", r\"$|\\eta|<2.172$, ${\\Delta}R >0.5$\", \"99\"],\n", + " \"L1_PFIsoTau_PFIsoTau\": [\"Double PuppiTau\", r\"$|\\eta|<2.172$, ${\\Delta}R >0.5$, $\\text{LooseNN} > 0$\", \"90\"],},\n", + " \n", + " r\"Hadronic seeds (jets,\\HT)\":\n", + " {\"L1_SinglePfJet\": [\"Single PuppiJet\", r\"$|\\eta|<2.4$\", \"100\"],\n", + " \"L1_DoublePFJet_dEtaMax\": [\"Double PuppiJet\", r\"$|\\eta|<2.4$, ${\\Delta}\\eta <1.6$\", \"100\"],\n", + " \"L1_PFHTT\": [\"Puppi\\HT\", r\"jets: $|\\eta|<2.4$, $\\pt >30$\", \"100\"],\n", + " \"L1_PFMHTT\": [r\"Puppi$\\slashed{\\ensuremath{H}}_{\\mathrm{T}}$\", r\"jets: $|\\eta|<2.4$, $\\pt >30$\", \"100\"],\n", + " \"L1_PFHTT_QuadJet\": [\"QuadPuppiJets-Puppi\\HT(**)\", r\"jets: $|\\eta|<2.4$, $\\pt >25$\", \"100,100\"],},\n", + "\n", + " r\"\\ETmiss seeds\":\n", + " {\"L1_PFMet\": [r\"PuppiE_{T}^{miss}\", \"\", \"100\"],},\n", + " \n", + " \"Cross Lepton seeds\":\n", + " {\"L1_TkMu_TkEleIso\": [\"TkMuon-TkIsoElectron\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$\", \"95,93\"],\n", + " \"L1_TkMu_TkEle\": [\"TkMuon-TkElectron\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$\", \"95,93\"],\n", + " \"L1_TkEle_TkMu\": [\"\\color{black}TkElectron-TkMuon\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$\", \"93,95\"],\n", + " \"L1_TripleTkMu\": [\"Triple TkMuon\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$, Qual $>$ 0\", \"95\"],\n", + " \"L1_TkMu_DoubleTkEle\": [\"TkMuon-DoubleTkElectron\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$\", \"95,93\"],\n", + " \"L1_DoubleTkMu_TkEle\": [\"DoubleTkMuon-TkElectron\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$, Qual $>$ 0\", \"95,93\"],\n", + " \"L1_PFIsoTau_TkMu\": [\"PuppiTau-TkMuon\", r\" $|\\eta|<2.172$, $|\\eta|<2.1$, ${\\Delta}z <1$, $\\text{LooseNN} > 0$\", \"90,95\"],\n", + " \"L1_TkEleIso_PFIsoTau\": [\"TkIsoElectron-PuppiTau\", r\"$|\\eta|<2.172$, $|\\eta|<2.1$, ${\\Delta}z <1$, $\\text{LooseNN} > 0$\", \"93,90\"],},\n", + " \n", + " \"Cross Hadronic-Lepton seeds\":\n", + " {\"L1_TkMu_PfHTT\": [r\"TkMuon-Puppi\\HT\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$\", \"95,100\"],\n", + " \"L1_TkMu_PfJet_dRMax_DoubleJet_dEtaMax\": [\"TkMuon-TriplePuppiJet\", r\"$|\\eta|<2.4$, ${\\Delta}R_{j1\\mu}<0.4$,${\\Delta}\\eta_{j2j3}<1.6$, ${\\Delta}z <1$\", \"95,100\"],\n", + " \"L1_DoubleTkEle_PFHTT\": [\"DoubleTkElectron-Puppi\\HT\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$\", \"93,100\"],\n", + " \"L1_DoubleTkMu_PfHTT\": [\"DoubleTkMuon-Puppi\\HT\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$, Qual $>$ 0\", \"93,100\"],\n", + " \"L1_DoubleTkMu_PfJet_PfMet\": [\"DoubleTkMuon-PuppiJet-PuppiETmiss\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$, Qual $>$ 0\", \"95,100,100\"],\n", + " \"L1_TkEleIso_PFHTT\": [\"TkIsoElectron-Puppi\\HT\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$, $\\text{LooseNN} > 0$\", \"93,100\"],\n", + " \"L1_TkEle_PFJet_dRMin\": [\"TkElectron-PuppiJet (**)\", r\"$|\\eta|<2.1$, $|\\eta|<2.4$, ${\\Delta}R>0.3$, ${\\Delta}z <1$\", \"93,100\"],\n", + " \"L1_PFIsoTau_PFMet\": [\"PuppiTau-PuppiE_{T}^{miss}\", r\"$|\\eta|<2.172$, $\\text{LooseNN} > 0$\", \"90,100\"],\n", + " \"L1_TkMu_PfJet_PfMet\": [\"TkMuon-PuppiJet-PuppiETmiss\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$, Qual $>$ 0\", \"95,100,100\"],},\n", + " \n", + " \"VBF seeds\":\n", + " {\"L1_DoublePFJet_MassMin\": [\"Double PuppiJets (**)\", r\"$|\\eta|<5$, $m_{jj}>620$\", \"100\"]},\n", + " \n", + " \"BPH seeds\": {\n", + " \"L1_DoubleTkMu0er1p5_SQ_OS_dR_Max1p4\": [\"\\color{black}Double TkMuon\", r\"$|\\eta|<1.5$, ${\\Delta}z <1$, ${\\Delta}R <1.4$, $q_1\\times q_2 <0$\", \"95\"],\n", + " \"L1_DoubleTkMu4_SQ_OS_dR_Max1p2\": [\"\\color{black}Double TkMuon\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$, ${\\Delta}R <1.5$, $q_1\\times q_2 <0$, Qual $>$ 0\", \"95\"],\n", + " \"L1_DoubleTkMu4p5er2p0_SQ_OS_Mass7to18\": [\"\\color{black}Double TkMuon\", r\"$|\\eta|<2.0$, ${\\Delta}z <1$, $7 < m <18$, $q_1\\times q_2 <0$, Qual $>$ 0\", \"95\"],\n", + " \"L1_TripleTkMu_5SQ_3SQ_0OQ_DoubleMu_5_3_SQ_OS_Mass_Max9\": [\"Triple TkMuon\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$, $0< m <9$, $q_1\\times q_2 <0$, Qual $>$ 0\", \"95\"],\n", + " \"L1_TripleTkMu_5_3p5_2p5_OS_Mass_5to17\": [\"Triple TkMuon\", r\"$|\\eta|<2.4$, ${\\Delta}z <1$,$5 $ 0\", \"95\"],\n", + " },\n", + " \n", + " \"Step2 seeds\":{\n", + " \"L1_PFHTT_QuadJet_BTagNNScore\": [\"QuadPuppiJets-Puppi\\HT\", r\"$|\\eta|<2.4$, Tot. b-tag score $>$ 2.2\", \"95\"],\n", + " \"L1_SinglePfJet8\": [\"Single Ak8 PuppiJet\", r\"$|\\eta|<2.4$\", \"100\"],\n", + " \"L1_DoublePFJet8_dEtaMax\": [\"Double Ak8 PuppiJet\", r\"$|\\eta|<2.4$, ${\\Delta}\\eta_{j1j2}<1.6$\", \"100\"], \n", + " \n", + " \"L1_SingleDispMu\": [\"Single Displaced Muon\", r\"$|\\eta|<2.0$, Qual $\\geq$ 15\", \"99\"],\n", + " \"L1_DoubleDispMu\": [\"Single Displaced Muon\", r\"$|\\eta|<2.4$\", \"99\"],\n", + " \n", + " \"L1_W3pi_GTT\": [\"Track Triplet for W3Pi\", \"\", \"100\"],\n", + " }\n", + "\n", + " }" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "tot_rate = int(df[df.seed=='Total'].rate)\n", + "tot_rate_30pc = int(1.3*tot_rate)\n", + "my_rates = []\n", + "# print('L1 Trigger seeds & Offline Threshold(s) at 90\\% or 95\\% [GeV] & Online Threshold(s) (Barrel) [kHz] & Rate [kHz] \\\\\\\\')\n", + "for seed in l1_names_map:\n", + " print(f\"\\\\hline \\\\multicolumn{{5}}{{|l|}}{{{seed}}} \\\\\\\\\")\n", + " for obj in l1_names_map[seed]:\n", + " if obj not in l1_thresholds.keys(): continue\n", + " print(f\"\\\\hline {l1_names_map[seed][obj][0]}\", end = \" & \") #obj.replace('_', '\\_'), end=\" & \")\n", + " print(*l1_thresholds[obj][1], end= \" & \", sep = \",\")\n", + "# if \"0.0\" in l1_thresholds[obj][0]:\n", + "# print(\"--\", sep=\",\", end = \" & \")\n", + "# else:\n", + "# print(*l1_thresholds[obj][0], sep=\",\", end = \" & \")\n", + " print(int(rates[obj]), end = \" & \")\n", + " my_rates.append(rates[obj])\n", + " print(l1_names_map[seed][obj][1], end = \" & \")\n", + " print(l1_names_map[seed][obj][2], end = '\\\\\\\\\\n')\n", + " print(\"\\\\hline\")\n", + "\n", + "print(\"\\\\hline\")\n", + "print(f\"\\multicolumn{{3}}{{|l}}{{Rate for above Trigger seeds}} & \\\\multicolumn{{2}}{{r|}}{{{{\\color{{black}}{tot_rate}}}}}\\\\\\\\\")\n", + "print(\"\\\\hline\")\n", + "print(f\"\\multicolumn{{3}}{{|l}}{{\\\\bf Total \\\\Lone Menu Rate (+30\\\\%)}} & \\\\multicolumn{{2}}{{r|}}{{{{\\color{{black}}{tot_rate_30pc}}}}}\\\\\\\\\")\n", + "print(\"\\\\hline\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/menu_tools/rate_table/Pure_rate.ipynb b/menu_tools/rate_table/Pure_rate.ipynb new file mode 100644 index 00000000..afafea9f --- /dev/null +++ b/menu_tools/rate_table/Pure_rate.ipynb @@ -0,0 +1,362 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "1b8a651b", + "metadata": {}, + "outputs": [], + "source": [ + "# import argparse \n", + "import os, sys \n", + "\n", + "import awkward as ak\n", + " \n", + "import matplotlib.pyplot as plt \n", + "import mplhep as hep \n", + "plt.style.use(hep.style.CMS)\n", + "\n", + "from matplotlib.colors import LogNorm\n", + "\n", + "# import uproot\n", + "\n", + "import numpy as np \n", + "import pandas as pd\n", + " \n", + "from glob import glob" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "67769805", + "metadata": {}, + "outputs": [], + "source": [ + "plt.rcParams['figure.facecolor'] = \"white\"" + ] + }, + { + "cell_type": "markdown", + "id": "582d9747", + "metadata": {}, + "source": [ + "# compare masks" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5e91706a", + "metadata": {}, + "outputs": [], + "source": [ + "! ls /eos/home-a/alobanov/www/L1T/Phase2/menu/Validation/NewMenuTools/V38nano_DT12x/rate_tables/*.parquet" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "92cb4a57", + "metadata": {}, + "outputs": [], + "source": [ + "# fname = \"~/cernbox/SWAN_projects/L1T-Ph2-Menu/rates/menu/outputs/new_fwk_rates/V29_fromCache_Full_wBtag/rates_full_wBtag_V29_masks.parquet\"\n", + "# fname = \"/eos/home-a/alobanov/www/L1T/Phase2/menu/Validation/NewMenuTools/V38nano/rate_tables/rates_full_Final_V38nano_masks.parquet\"\n", + "#fname = \"/eos/home-a/alobanov/www/L1T/Phase2/menu/Validation/NewMenuTools/V38nano_DT12x/rate_tables/menu_Step1_tkMuVLoose_V38nano_DT12x_masks.parquet\"\n", + "# fname = \"/eos/home-a/alobanov/www/L1T/Phase2/menu/Validation/NewMenuTools/V38nano_DT12x/rate_tables/menu_Step1_V38nano_DT12x_masks.parquet\"\n", + "fname = \"/eos/home-a/alobanov/www/L1T/Phase2/menu/Validation/NewMenuTools/V38nano_DT12x/rate_tables/rates_Step1and2_V38nano_DT12x_masks.parquet\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4e522641", + "metadata": {}, + "outputs": [], + "source": [ + "new_masks = ak.from_parquet(fname)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "44712c41", + "metadata": {}, + "outputs": [], + "source": [ + "new_masks" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f7a10a4c", + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "# new fwk\n", + "df_masks = ak.to_dataframe(new_masks)" + ] + }, + { + "cell_type": "markdown", + "id": "048a9bc0", + "metadata": {}, + "source": [ + "### Pure" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f3d1bfee", + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "test_seed = \"L1_DoublePFJet_dEtaMax\"\n", + "\n", + "or_all_excl_seed = False\n", + "\n", + "for seed in new_masks.fields:\n", + " if seed == test_seed: continue\n", + " \n", + " or_all_excl_seed = or_all_excl_seed | new_masks[seed]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a725d02a", + "metadata": {}, + "outputs": [], + "source": [ + "np.sum((or_all_excl_seed==False) & new_masks[seed])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "005dd97c", + "metadata": {}, + "outputs": [], + "source": [ + "np.sum(new_masks[seed])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6ad6c26a", + "metadata": {}, + "outputs": [], + "source": [ + "np.sum(or_all_excl_seed)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "058c7b0d", + "metadata": {}, + "outputs": [], + "source": [ + "df_masks[seed].sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "89bf081b", + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "counts = {}\n", + "\n", + "for seed in df_masks.columns:\n", + " counts[seed] = {\n", + " \"total\": df_masks[seed].sum(), \n", + " \"pure\" : ((df_masks[seed]==True)&~(df_masks.drop(seed, axis=1).any(axis=1))).sum()}\n", + "\n", + "df_counts = pd.DataFrame(counts).T" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a5c409f4", + "metadata": {}, + "outputs": [], + "source": [ + "df_counts.sort_values(\"total\", ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7ced193f", + "metadata": {}, + "outputs": [], + "source": [ + "df_counts.sort_values(\"total\", ascending=False).plot.barh(figsize = (10,20))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7140bb52", + "metadata": {}, + "outputs": [], + "source": [ + "ax = df_counts.sort_values(\"total\", ascending=False).plot.barh(figsize = (10,20))\n", + "ax.set_xscale(\"log\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0f9727ac", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21738288", + "metadata": {}, + "outputs": [], + "source": [ + "sel = df_counts.index.str.contains(\"Mu\")\n", + "df_counts[sel].sort_values(\"total\", ascending=False).plot.barh(figsize = (10,10))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b444b84a", + "metadata": {}, + "outputs": [], + "source": [ + "# df_counts" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ec1e086e", + "metadata": {}, + "outputs": [], + "source": [ + "f,axs = plt.subplots(1,3,figsize = (20,16), sharey = True)\n", + "# hep.cms.label(ax=axs[0], llabel=\"Phase-2 Simulation\", rlabel = \"14 TeV\")\n", + "# hep.cms.label(ax=axs[0], llabel=\"Phase-2 Simulation\")\n", + "# hep.cms.label(ax=axs[2], label = \"14 TeV\")\n", + "\n", + "ax1,ax2,ax3 = axs\n", + "rate_fact = 11.2*2700/len(df_masks)\n", + "df = df_counts.sort_values(\"pure\")*rate_fact\n", + "df.plot(kind = \"barh\", ax = ax1)\n", + "df.plot(kind = \"barh\", ax = ax2)\n", + "\n", + "ax1.set_xlabel(\"L1 Rate [kHz]\")\n", + "ax1.grid()\n", + "\n", + "ax2.set_xscale(\"log\")\n", + "ax2.set_xlabel(\"L1 Rate [kHz]\")\n", + "ax2.grid()\n", + "\n", + "# pure/total\n", + "(df.pure/df.total).plot(kind = \"barh\", ax = ax3, legend = False, color = \"C2\")\n", + "\n", + "# ax3.set_xscale(\"log\")\n", + "ax3.set_xlabel(\"Pure/Total\")\n", + "ax3.grid()\n", + "\n", + "\n", + "plt.subplots_adjust(wspace=0, hspace=0)\n", + "\n", + "plt.tight_layout()\n", + "\n", + "for ext in [\".png\",\".pdf\"]:\n", + " outfname = fname.replace(\".parquet\",f\"_pureRates{ext}\")\n", + " plt.savefig(outfname)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0409d04f", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b4b8bb96", + "metadata": {}, + "outputs": [], + "source": [ + "outfname" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "36a75bd5", + "metadata": {}, + "outputs": [], + "source": [ + "! ls /eos/home-a/alobanov/www/L1T/Phase2/menu/Validation/NewMenuTools/V38nano_DT12x/rate_tables/menu_Step1_V38nano_DT12x_masks_pureRates.png" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4e4b3c97", + "metadata": {}, + "outputs": [], + "source": [ + "! readlink -f /eos/home-a/alobanov/www/L1T/Phase2/menu/Validation/NewMenuTools/V38nano_DT12x/rate_tables" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d9ddb8fe", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "@webio": { + "lastCommId": null, + "lastKernelId": null + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.5" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/menu_tools/rate_table/rate_table.py b/menu_tools/rate_table/rate_table.py index acd4f642..b0449573 100755 --- a/menu_tools/rate_table/rate_table.py +++ b/menu_tools/rate_table/rate_table.py @@ -22,7 +22,7 @@ def main(): menu_table.save_table() menu_table.dump_masks() - menu_table.compute_tot_and_pure() + # menu_table.compute_tot_and_pure() if __name__ == "__main__":