From 10b1d60e448ae099a22978283c1d2d8793c7112c Mon Sep 17 00:00:00 2001
From: Tomasz Bold <tomasz.bold@gmail.com>
Date: Fri, 22 Nov 2019 11:47:39 +0000
Subject: [PATCH] made generation of the dot files configurable

---
 .../share/EmuStepProcessingTest.py            |  2 +-
 .../python/TriggerConfigFlags.py              |  3 +++
 .../TriggerJobOpts/python/TriggerFlags.py     |  7 ++++++
 .../python/HLTMenuConfig/Menu/HLTCFConfig.py  | 22 ++++++++++---------
 .../python/HLTMenuConfig/Menu/HLTCFDot.py     |  6 +++++
 .../python/HLTMenuConfig/Menu/LS2_v1_newJO.py |  1 +
 .../TriggerMenuMT/share/generateMT.py         |  3 ++-
 7 files changed, 32 insertions(+), 12 deletions(-)

diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/EmuStepProcessingTest.py b/Trigger/TrigValidation/TrigUpgradeTest/share/EmuStepProcessingTest.py
index 4bf6695fd43..8764b3927c6 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/share/EmuStepProcessingTest.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/share/EmuStepProcessingTest.py
@@ -12,7 +12,7 @@
 
 from TriggerJobOpts.TriggerFlags import TriggerFlags
 TriggerFlags.triggerMenuSetup = "LS2_emu_v1"
-
+TriggerFlags.generateMenuDiagnostics=True
 
 
 from TrigUpgradeTest.EmuStepProcessingConfig import generateL1DecoderAndChains
diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfigFlags.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfigFlags.py
index d7f5019d533..0299b625e12 100644
--- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfigFlags.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfigFlags.py
@@ -92,6 +92,9 @@ def createTriggerFlags():
     # name of the trigger menu
     flags.addFlag('Trigger.triggerMenuSetup', 'LS2_v1')
 
+    # name of the trigger menu
+    flags.addFlag('Trigger.generateMenuDiagnostics', False)
+
     # version of the menu
     from AthenaCommon.AppMgr import release_metadata
     flags.addFlag('Trigger.menuVersion',
diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerFlags.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerFlags.py
index 8331898c095..9d2356269e9 100644
--- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerFlags.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerFlags.py
@@ -909,6 +909,13 @@ class outputHLTmenuJsonFile(JobProperty):
 
 _flags.append(outputHLTmenuJsonFile)
 
+class generateMenuDiagnostics(JobProperty):
+    """ Generate additional files heling in menu diagnostics """
+    statusOn=True
+    StoredValue=False
+_flags.append( generateMenuDiagnostics )
+
+
 class inputL1TopoConfigFile(JobProperty):
     """Used to define an external L1Topo configuration file. To be
     used together with trigger flag readL1TopoConfigFromXML.
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py
index 17200e6cd20..f91bd685e2e 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py
@@ -28,7 +28,7 @@
 # Classes to configure the CF graph, via Nodes
 from AthenaCommon.CFElements import parOR, seqAND, seqOR
 from AthenaCommon.AlgSequence import dumpSequence
-from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFDot import  stepCF_DataFlow_to_dot, stepCF_ControlFlow_to_dot, all_DataFlow_to_dot
+from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFDot import  stepCF_DataFlow_to_dot, stepCF_ControlFlow_to_dot, all_DataFlow_to_dot, create_dot
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponentsNaming import CFNaming
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import ChainStep
 
@@ -305,7 +305,8 @@ def decisionTree_From_Chains(HLTNode, chains, allDicts, newJO):
         createControlFlowNewJO(HLTNode, CFseq_list)
 
     log.debug("finalDecisions: %s", finalDecisions)
-    all_DataFlow_to_dot(HLTNodeName, CFseq_list)
+    if create_dot():
+        all_DataFlow_to_dot(HLTNodeName, CFseq_list)
 
     # matrix display
     matrixDisplay( CFseq_list )
@@ -490,9 +491,10 @@ def createControlFlow(HLTNode, CFseq_list):
         summary=makeSummary(CFNaming.stepSummaryName(stepCF_name), step_decisions)
         HLTNode += summary
 
-        log.debug("Now Draw...")
-        stepCF_DataFlow_to_dot(recoNodeName, CFseq_list[nstep])
-        stepCF_ControlFlow_to_dot(stepCF)
+        if create_dot():
+            log.debug("Now Draw...")
+            stepCF_DataFlow_to_dot(recoNodeName, CFseq_list[nstep])
+            stepCF_ControlFlow_to_dot(stepCF)
 
         log.info("************* End of step %d, %s", nstep+1, stepCF_name)
 
@@ -599,12 +601,12 @@ def generateDecisionTreeOld(HLTNode, chains, allChainDicts):
         HLTNode += stepFilter
         HLTNode += stepCF
         HLTNode += summary
+        if create_dot():
+            stepCF_DataFlow_to_dot('{}_{}'.format(HLTNode.name(), stepName), CFsequences)
+            stepCF_ControlFlow_to_dot(stepCF)
+            all_DataFlow_to_dot(HLTNode.name(), allSequences)
 
-        stepCF_DataFlow_to_dot('{}_{}'.format(HLTNode.name(), stepName), CFsequences)
-        stepCF_ControlFlow_to_dot(stepCF)
-
-    all_DataFlow_to_dot(HLTNode.name(), allSequences)
-    matrixDisplay( allSequences )
+        matrixDisplay( allSequences )
     return acc
 
 
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py
index 65ad231353f..b2dd2f93e43 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFDot.py
@@ -5,6 +5,12 @@ from AthenaCommon.AlgSequence import AthSequencer
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import isHypoBase, isInputMakerBase, isFilterAlg
 import itertools
 
+def create_dot():
+    from TriggerJobOpts.TriggerFlags import TriggerFlags
+    from AthenaConfiguration.AllConfigFlags import ConfigFlags
+    return TriggerFlags.generateMenuDiagnostics() or ConfigFlags.Trigger.generateMenuDiagnostics
+
+
 def algColor(alg):
     """ Set given color to Alg type"""
     if isHypoBase(alg):      
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py
index 8855925c882..346bf089d94 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py
@@ -78,6 +78,7 @@ if __name__ == "__main__":
     Configurable.configurableRun3Behavior=True
 
     from AthenaConfiguration.AllConfigFlags import ConfigFlags
+    ConfigFlags.Trigger.generateMenuDiagnostics = True
     setupMenu(ConfigFlags)
 
     from AthenaConfiguration.TestDefaults import defaultTestFiles
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/share/generateMT.py b/Trigger/TriggerCommon/TriggerMenuMT/share/generateMT.py
index e4428689bef..eac3b0e4bcb 100755
--- a/Trigger/TriggerCommon/TriggerMenuMT/share/generateMT.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/share/generateMT.py
@@ -2,6 +2,7 @@
 
 setMenu             = "LS2_v1"
 endJobAfterGenerate = False
-
+from TriggerJobOpts.TriggerFlags import TriggerFlags
+TriggerFlags.generateMenuDiagnostics = True
 include("TrigUpgradeTest/testHLT_MT.py")
 
-- 
GitLab