From 006d5e4ce34eb4bd226b3aba3c14423c3c8bab1e Mon Sep 17 00:00:00 2001 From: Sven Dildick Date: Fri, 5 Nov 2021 13:15:23 -0500 Subject: [PATCH 1/2] Implement muon showers --- rate-estimation/menu2lib/menu2lib.py | 14 ------- .../menu2lib/templates/MenuTemplate.cc | 3 +- .../menu2lib/templates/MuonShowerTemplate.cc | 39 +++++++++++++++++++ .../menu2lib/templates/SignalsTemplate.cc | 3 +- 4 files changed, 41 insertions(+), 18 deletions(-) create mode 100644 rate-estimation/menu2lib/templates/MuonShowerTemplate.cc diff --git a/rate-estimation/menu2lib/menu2lib.py b/rate-estimation/menu2lib/menu2lib.py index 2c5b381..dfdb429 100644 --- a/rate-estimation/menu2lib/menu2lib.py +++ b/rate-estimation/menu2lib/menu2lib.py @@ -43,15 +43,6 @@ tmEventSetup.MUSOOT1: 'muonShower' } -# Muon showers: Add mapping for event setup types to L1Analysis types; -# it can be done for Centrality signals, as well -ANALYSIS_TYPES = { - tmEventSetup.MUS0: 'kOneNominal', # how to map these types? - tmEventSetup.MUS1: 'kOneTight', - tmEventSetup.MUSOOT0: 'kInvalid', - tmEventSetup.MUSOOT1: 'kInvalid' -} - ########### # Helpers # ########### @@ -408,10 +399,6 @@ def warning(message): print(message) return '' -# Muon showers: add filter function to get analysis type for use in templates -def getAnalysisType(key): - return ANALYSIS_TYPES[key.getType()] - def render(menu, template): module_dir = os.path.dirname(os.path.abspath(__file__)) templates_dir = os.path.join(module_dir, 'templates') @@ -440,7 +427,6 @@ def render(menu, template): j2_env.filters['getIndexCut'] = getIndexCut j2_env.filters['getScale'] = getScale j2_env.filters['getLookUpTable'] = getLookUpTable - j2_env.filters['getAnalysisType'] = getAnalysisType # Muon showers data = { "tmGrammar": tmGrammar, "tmEventSetup": tmEventSetup, diff --git a/rate-estimation/menu2lib/templates/MenuTemplate.cc b/rate-estimation/menu2lib/templates/MenuTemplate.cc index 5826ab9..f8efa9e 100644 --- a/rate-estimation/menu2lib/templates/MenuTemplate.cc +++ b/rate-estimation/menu2lib/templates/MenuTemplate.cc @@ -317,9 +317,8 @@ PermutationFactory::cache_t PermutationFactory::cache_ = {}; // Muon showers: associate the condition type and a given template; // it can be done for Centrality signals, as well #} - {# {% elif cond.getType() == tmEventSetup.MuonShower0, tmEventSetup.MuonShower1, tmEventSetup.MuonShowerOutOfTime0, tmEventSetup.MuonShowerOutOfTime1 %} #} {% elif cond.getType() in ShowerSignalTypes %} - {% include 'SignalsTemplate.cc' %} + {% include 'MuonShowerTemplate.cc' %} {% endif -%} {% endfor %} diff --git a/rate-estimation/menu2lib/templates/MuonShowerTemplate.cc b/rate-estimation/menu2lib/templates/MuonShowerTemplate.cc new file mode 100644 index 0000000..81525ff --- /dev/null +++ b/rate-estimation/menu2lib/templates/MuonShowerTemplate.cc @@ -0,0 +1,39 @@ +{# + # @author: Sven Dildick (Rice University) + #} +{# Template for muon showers #} +{# See in: L1Trigger/L1TNtuples/interface/L1AnalysisL1UpgradeDataFormat.h #} + +{% block MuonShowerTemplate scoped %} +{% import 'macros.jinja2' as macros %} +{% set object = cond.getObjects()[0] %} +{% set prefix = object | getPrefix %} + +bool +{{ cond.getName() }} +(L1Analysis::L1AnalysisL1UpgradeDataFormat* data) +{ + bool pass = false; + {# Are signals in same bx? #} + if (data->{{ prefix }}Bx.at(0) == {{ object.getBxOffset() }}) + { + {% if cond.getType() == tmEventSetup.MuonShower0 -%} + if (data->{{ prefix }}OneNominal.at(0)) + { + pass = true; + } + {% elif cond.getType() == tmEventSetup.MuonShower1 -%} + if (data->{{ prefix }}OneTight.at(0)) + { + pass = true; + } + {% elif cond.getType() == tmEventSetup.MuonShowerOutOfTime0 -%} + {# not implemented #} + {% elif cond.getType() == tmEventSetup.MuonShowerOutOfTime1 -%} + {# not implemented #} + {% endif -%} + } + return pass; +} +{% endblock MuonShowerTemplate %} +{# eof #} diff --git a/rate-estimation/menu2lib/templates/SignalsTemplate.cc b/rate-estimation/menu2lib/templates/SignalsTemplate.cc index 9870c4d..51ee67d 100644 --- a/rate-estimation/menu2lib/templates/SignalsTemplate.cc +++ b/rate-estimation/menu2lib/templates/SignalsTemplate.cc @@ -1,5 +1,4 @@ -{# Template for signal type conditions like centrality or muon showers #} -{# MuonShowerType from L1TNtuples: kInvalid, kOneNominal,kOneTight, kTwoLoose #} +{# Template for signal type conditions like centrality #} {# See in: L1Trigger/L1TNtuples/interface/L1AnalysisL1UpgradeDataFormat.h #} {% block SignalsTemplate scoped %} From 41f37eaf206b9783df050f66d0c6b52ed17f9da6 Mon Sep 17 00:00:00 2001 From: Sven Dildick Date: Mon, 8 Nov 2021 21:57:24 -0600 Subject: [PATCH 2/2] Suggestion by Si Xie --- .../menu2lib/templates/MuonShowerTemplate.cc | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/rate-estimation/menu2lib/templates/MuonShowerTemplate.cc b/rate-estimation/menu2lib/templates/MuonShowerTemplate.cc index 81525ff..67dce6f 100644 --- a/rate-estimation/menu2lib/templates/MuonShowerTemplate.cc +++ b/rate-estimation/menu2lib/templates/MuonShowerTemplate.cc @@ -14,25 +14,30 @@ bool (L1Analysis::L1AnalysisL1UpgradeDataFormat* data) { bool pass = false; - {# Are signals in same bx? #} - if (data->{{ prefix }}Bx.at(0) == {{ object.getBxOffset() }}) - { - {% if cond.getType() == tmEventSetup.MuonShower0 -%} + + {# Is there at least one shower object? #} + if (data->nMuonShowers >= 1) { + + {# Are signals in same bx? #} + if (data->{{ prefix }}Bx.at(0) == {{ object.getBxOffset() }}) + { + {% if cond.getType() == tmEventSetup.MuonShower0 -%} if (data->{{ prefix }}OneNominal.at(0)) { pass = true; } - {% elif cond.getType() == tmEventSetup.MuonShower1 -%} + {% elif cond.getType() == tmEventSetup.MuonShower1 -%} if (data->{{ prefix }}OneTight.at(0)) { pass = true; } - {% elif cond.getType() == tmEventSetup.MuonShowerOutOfTime0 -%} + {% elif cond.getType() == tmEventSetup.MuonShowerOutOfTime0 -%} {# not implemented #} - {% elif cond.getType() == tmEventSetup.MuonShowerOutOfTime1 -%} + {% elif cond.getType() == tmEventSetup.MuonShowerOutOfTime1 -%} {# not implemented #} - {% endif -%} - } + {% endif -%} + } + } return pass; } {% endblock MuonShowerTemplate %}