From c5713d7a4a132166a0d91ee39ea1d17d13548a06 Mon Sep 17 00:00:00 2001
From: Krzysztof Jamrog <krzysztof.piotr.jamrog@cern.ch>
Date: Thu, 14 Mar 2019 16:55:23 +0100
Subject: [PATCH] Added combo steps handling in newJO

---
 .../TrigUpgradeTest/share/EmuNewJO.ref        |  4 +--
 .../HLTMenuConfig/Menu/HLTCFConfig_newJO.py   | 29 +++++--------------
 2 files changed, 9 insertions(+), 24 deletions(-)

diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/EmuNewJO.ref b/Trigger/TrigValidation/TrigUpgradeTest/share/EmuNewJO.ref
index e94238cc340..4b9adbc6363 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/share/EmuNewJO.ref
+++ b/Trigger/TrigValidation/TrigUpgradeTest/share/EmuNewJO.ref
@@ -1,7 +1,7 @@
 TrigSignatureMo...   INFO HLT_e5                        2         2         1         1         1
 TrigSignatureMo...   INFO HLT_e5 decisions                                  2         2
 TrigSignatureMo...   INFO HLT_e5_e8                     2         2         1         0         1
-TrigSignatureMo...   INFO HLT_e5_e8 decisions                               4         0
+TrigSignatureMo...   INFO HLT_e5_e8 decisions                               6         0
 TrigSignatureMo...   INFO HLT_e5_v2                     0         0         0         0         0
 TrigSignatureMo...   INFO HLT_e5_v2 decisions                               0         0
 TrigSignatureMo...   INFO HLT_e5_v3                     1         1         1         1         1
@@ -17,4 +17,4 @@ TrigSignatureMo...   INFO HLT_mu8 decisions                                 2
 TrigSignatureMo...   INFO HLT_mu8_1step                 2         2         2         0         2
 TrigSignatureMo...   INFO HLT_mu8_1step decisions                           2         0
 TrigSignatureMo...   INFO HLT_mu8_e8                    1         1         1         1         1
-TrigSignatureMo...   INFO HLT_mu8_e8 decisions                              3         3
+TrigSignatureMo...   INFO HLT_mu8_e8 decisions                              4         4
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py
index d010d2962e2..23b63195b7a 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py
@@ -1,5 +1,7 @@
 # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
 
+from collections import defaultdict
+from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponentsNaming import CFNaming
 from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFConfig import buildFilter, makeSummary
 from AthenaCommon.CFElements import parOR, seqAND
@@ -10,23 +12,6 @@ log = logging.getLogger('HLTCFConfig_newJO')
 log.setLevel( VERBOSE )
 
 
-def connectStepToFilter(chainStep, filterNode):
-    filter_output = filterNode.getOutputList()
-    if len(filter_output) == 0:
-        raise ValueError('ERROR: no filter outputs are set')
-
-    if len(filter_output) != len(chainStep.sequences):
-        msg = 'ERROR: found {} filter outputs and {} MenuSequences in step {}'.format(len(filter_output),
-            len(chainStep.sequences), chainStep.name)
-        raise ValueError(msg)
-
-    for nseq, sequence in enumerate(chainStep.sequences):
-        output = filter_output[nseq]
-        log.debug("Found input %s to sequence::%s from Filter::%s (from seed %s)", output,
-                  sequence.name, filterNode.Alg.name(), sequence.seed)
-        sequence.connectToFilter(output)
-
-
 def printStepsMatrix(matrix):
     print('----- Steps matrix ------')
     for nstep in matrix:
@@ -38,9 +23,6 @@ def printStepsMatrix(matrix):
 
 
 def generateDecisionTree(chains):
-    from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
-    from collections import defaultdict
-
     acc = ComponentAccumulator()
     mainSequenceName = 'HLTAllSteps'
     acc.addSequence( seqAND(mainSequenceName) )
@@ -98,12 +80,15 @@ def generateDecisionTree(chains):
             stepsAcc = ComponentAccumulator()
 
             for chain in chainsInCell:
-                connectStepToFilter(chain.steps[nstep], sfilter)
-                for seq in chain.steps[nstep].sequences:
+                step = chain.steps[nstep]
+                CFSequence(step, sfilter)
+                for seq in step.sequences:
                     if seq.ca is None:
                         raise ValueError('ComponentAccumulator missing in sequence {} in chain {}'.format(seq.name, chain.name))
                     stepsAcc.merge( seq.ca )
                     recoAcc.addEventAlgo( seq.hypo.Alg, sequenceName = stepView.getName() )
+                if step.isCombo:
+                    recoAcc.addEventAlgo( step.combo.Alg, sequenceName = stepView.getName() )
                 sfilter.setChains(chain.name)
 
             recoAcc.merge(stepsAcc, sequenceName = stepReco.getName())
-- 
GitLab