From f974ee590c4e7d55698159c841e9d9127f9dc1b2 Mon Sep 17 00:00:00 2001
From: Krzysztof Jamrog <krzysztof.piotr.jamrog@cern.ch>
Date: Fri, 15 Mar 2019 09:20:40 +0100
Subject: [PATCH] Add .dot generating in newJO CF creation

---
 .../HLTMenuConfig/Menu/HLTCFConfig_newJO.py   | 31 +++++++++++++++----
 1 file changed, 25 insertions(+), 6 deletions(-)

diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py
index 23b63195b7a..45798dbcef1 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig_newJO.py
@@ -4,7 +4,9 @@ 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
+from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFDot import stepCF_DataFlow_to_dot, \
+    stepCF_ControlFlow_to_dot, all_DataFlow_to_dot
+from AthenaCommon.CFElements import parOR, seqAND, seqOR, findOwningSequence
 from AthenaCommon.Logging import logging
 from AthenaCommon.Constants import VERBOSE
 
@@ -38,6 +40,8 @@ def generateDecisionTree(chains):
 
     printStepsMatrix(chainStepsMatrix)
 
+    allCFSequences = []
+
     ## Matrix with steps lists generated. Creating filters for each cell
     for nstep in sorted(chainStepsMatrix.keys()):
         stepDecisions = []
@@ -48,9 +52,12 @@ def generateDecisionTree(chains):
         filterAcc = ComponentAccumulator()
         filterAcc.addSequence( parOR(stepFilterNodeName) )
 
-        stepRecoNodeName = '{}_{}'.format(mainSequenceName, stepName)
+        stepRecoNodeName = CFNaming.stepRecoNodeName(mainSequenceName, stepName)
+        stepRecoNode = parOR(stepRecoNodeName)
         recoAcc = ComponentAccumulator()
-        recoAcc.addSequence( parOR(stepRecoNodeName) )
+        recoAcc.addSequence(stepRecoNode)
+
+        CFSequences = []
 
         for chainName in chainStepsMatrix[nstep]:
             chainsInCell = chainStepsMatrix[nstep][chainName]
@@ -79,16 +86,21 @@ def generateDecisionTree(chains):
 
             stepsAcc = ComponentAccumulator()
 
+            CFSequenceAdded = False
+
             for chain in chainsInCell:
                 step = chain.steps[nstep]
-                CFSequence(step, sfilter)
+                CFSeq = CFSequence(step, sfilter)
+                if not CFSequenceAdded:
+                    CFSequences.append(CFSeq)
+                    CFSequenceAdded = True
                 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() )
+                    recoAcc.addEventAlgo(seq.hypo.Alg, sequenceName = stepView.getName())
                 if step.isCombo:
-                    recoAcc.addEventAlgo( step.combo.Alg, sequenceName = stepView.getName() )
+                    recoAcc.addEventAlgo(step.combo.Alg, sequenceName = stepView.getName())
                 sfilter.setChains(chain.name)
 
             recoAcc.merge(stepsAcc, sequenceName = stepReco.getName())
@@ -102,6 +114,13 @@ def generateDecisionTree(chains):
         summary = makeSummary('TriggerSummary{}'.format(stepName), stepDecisions)
         acc.addSequence(summary, parentName = mainSequenceName)
 
+        allCFSequences.append(CFSequences)
+
+        stepCF_DataFlow_to_dot(stepRecoNodeName, CFSequences)
+        stepCF_ControlFlow_to_dot(stepRecoNode)
+
     acc.printConfig()
 
+    all_DataFlow_to_dot(mainSequenceName, allCFSequences)
+
     return acc
-- 
GitLab