From deaf6a47d96dcb2bc5661e994ba0c8eb4898cd8e Mon Sep 17 00:00:00 2001
From: sherwood <peter.sherwood@cern.ch>
Date: Tue, 26 Jun 2018 14:31:27 +0200
Subject: [PATCH] Add functions for configuring jet hypo tools

TrigHLTJetHypo/python/TrigJetHypoToolConfig.py   configures a subset of chains using the EtEta
scenario. Raises exception if it cannot parse the chain nam.

TrigHLTJetHypo/src/TrigJetHypoToolConfig_EtaEt.h remove the unused property m_matchingAlg.

TrigUpgradeTest/python/MenuHypoTools.py tell the module about TrigJetHypoToolConfig


Former-commit-id: 8d3a3f10086db95bbd2004aa00def900bb2e19eb
---
 .../python/TrigJetHypoToolConfig.py           | 60 +++++++++++++++++++
 .../src/TrigJetHypoToolConfig_EtaEt.h         |  5 +-
 .../TrigUpgradeTest/python/MenuHypoTools.py   | 17 ++++++
 3 files changed, 78 insertions(+), 4 deletions(-)
 create mode 100644 Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py

diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py
new file mode 100644
index 000000000000..58bf966f92ec
--- /dev/null
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/python/TrigJetHypoToolConfig.py
@@ -0,0 +1,60 @@
+from TrigHLTJetHypo.TrigHLTJetHypoConf import (TrigJetHypoToolMT,
+                                               TrigJetHypoToolConfig_EtaEt)
+import re
+
+re_EtEta0 = re.compile(
+    r'^HLT_j(?P<thresh>\d+)(_(?P<etalo>\d{3})eta(?P<etahi>\d{3}))?$')
+# re_EtEta1 = re.compile(r'^HLT_j\d+(_\d{1-3}eta\d{3})?_L1')
+# re_EtEta2 = re.compile(r'^HLT_j\d+(_\d{3}eta\d{3})?_(jes|nojcalib|lcw)*$')
+
+
+def decodeEtEta(match, chain):
+    """Create a hypo tool for the Et - Eta scenario"""
+    default = {'etalo': '0', 'etahi': '320'}
+    conf_dict = match.groupdict()
+    for k, v in default.items():
+        if k not in conf_dict: conf_dict[k] = v
+        if conf_dict[k] is None: conf_dict[k] = v
+
+    conf_tool = TrigJetHypoToolConfig_EtaEt(name=chain)
+    conf_tool.EtThresholds = [float(conf_dict['thresh'])]
+    conf_tool.eta_mins = [float(conf_dict['etalo'])]
+    conf_tool.eta_maxs = [float(conf_dict['etahi'])]
+    conf_tool.asymmetricEtas = [0]
+    conf_tool.OutputLevel = 0
+    return conf_tool
+
+
+def  trigJetHypoToolFromName(chain):
+    """Configure a jet hypo tool from chain name.
+
+    Delegate to functions according to the hypo scenartio."""
+
+    
+    scenario_dict = {re_EtEta0: decodeEtEta}
+    for k, v in scenario_dict.items():
+        match = k.match(chain)
+        if match:
+            hypo_tool = TrigJetHypoToolMT()
+            hypo_tool.HypoConfigurer = v(match, chain)
+            return hypo_tool
+
+    msg = 'trigJetHypoToolFromName(%s) - decode error' % chain
+    raise NotImplementedError(msg)
+
+    
+    
+
+
+if __name__ == '__main__':
+
+    # EtaEt hypos
+    # from MC_pp_v7 import  TriggerFlags.JetSlice.signatures
+
+    chains = ('HLT_j85', 'HLT_j35_320eta490', 'HLT_nonsense')
+    wid = max(len(c) for c in chains)
+    for c in chains:
+        try:
+            print '%s' % c.rjust(wid), trigJetHypoToolFromName(c)
+        except Exception, e:
+            print e
diff --git a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_EtaEt.h b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_EtaEt.h
index 23c7a81f6e93..79151d2e9086 100644
--- a/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_EtaEt.h
+++ b/Trigger/TrigHypothesis/TrigHLTJetHypo/src/TrigJetHypoToolConfig_EtaEt.h
@@ -54,10 +54,7 @@ public extends<AthAlgTool, ITrigJetHypoToolConfig> {
 
   Gaudi::Property<std::vector<int>>
     m_asymmetricEtas{this, "asymmetricEtas", {}, "Apply asym. eta cuts"};
-  
-  Gaudi::Property<std::string>
-    m_matchingAlg{this, "matchingAlg", {}, "matcher alg"};
-  
+    
 
 
 
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/python/MenuHypoTools.py b/Trigger/TrigValidation/TrigUpgradeTest/python/MenuHypoTools.py
index 2481a465d5cf..7603dc7caf57 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/python/MenuHypoTools.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/python/MenuHypoTools.py
@@ -37,3 +37,20 @@ def TrigMufastHypoToolConf(name):
     #hypotool= TrigMufastHypoConfig.TrigMufastHypoToolFromName(name)
     hypotool.OutputLevel = DEBUG
     return hypotool
+
+
+
+def TrigJetHypoToolConf(name):
+    from AthenaCommon.Constants import DEBUG
+    from TrigHLTJetHypo.TrigJetHypoToolConfig import trigJetHypoToolFromName
+    try:
+        hypotool= trigJetHypoToolFromName(name)
+    except Exception, e:
+        print e
+        raise e
+    #hypotool= TrigMufastHypoConfig.TrigMufastHypoToolFromName(name)
+    hypotool.OutputLevel = DEBUG
+    return hypotool
+
+if __name__ == '__main__':
+    print TrigJetHypoToolConf('HLT_j85')
-- 
GitLab