From a4c1747fa424de4cc30fd295b8990371523a4e5a Mon Sep 17 00:00:00 2001
From: Tomasz Bold <tomasz.bold@gmail.com>
Date: Thu, 16 Aug 2018 22:43:25 +0200
Subject: [PATCH] Prototype for comete menu configuration using Comp
 Accumlators

---
 .../TrigUpgradeTest/python/TestUtils.py       |  8 ++--
 .../TrigUpgradeTest/share/newJOtest.py        | 39 +++++++++++--------
 .../TriggerJobOpts/CMakeLists.txt             |  5 +++
 .../TriggerJobOpts/python/TriggerConfig.py    | 15 ++++++-
 .../python/TriggerConfigFlags.py              |  3 ++
 5 files changed, 48 insertions(+), 22 deletions(-)

diff --git a/Trigger/TrigValidation/TrigUpgradeTest/python/TestUtils.py b/Trigger/TrigValidation/TrigUpgradeTest/python/TestUtils.py
index c17c60d6221..0d2a34eb6e8 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/python/TestUtils.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/python/TestUtils.py
@@ -13,10 +13,10 @@ def writeEmulationFiles(data):
 # Testing menu used in the L1 decoders
 class MenuTest:
     
-    CTPToChainMapping = {"LT_e3_etcut":   "L1_EM3",        
-                         "LT_e5_etcut":   "L1_EM3",        
-                         "LT_g5_etcut":   "L1_EM3",        
-                         "LT_e7_etcut":   "L1_EM7",        
+    CTPToChainMapping = {"HLT_e3_etcut":   "L1_EM3",        
+                         "HLT_e5_etcut":   "L1_EM3",        
+                         "HLT_g5_etcut":   "L1_EM3",        
+                         "HLT_e7_etcut":   "L1_EM7",        
                          "HLT_mu6idperf": "L1_EM7",        
                          "HLT_mu6":       "L1_EM7",        
                          "HLT_xs20":      "L1_EM7",        
diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/newJOtest.py b/Trigger/TrigValidation/TrigUpgradeTest/share/newJOtest.py
index c8a46bc6909..2c9ad0065d1 100644
--- a/Trigger/TrigValidation/TrigUpgradeTest/share/newJOtest.py
+++ b/Trigger/TrigValidation/TrigUpgradeTest/share/newJOtest.py
@@ -22,6 +22,7 @@ flags.set( "global.InputFiles",
 flags.set( "Trigger.LVL1ConfigFile", "LVL1config_Physics_pp_v7.xml" )
 flags.set( "Trigger.L1Decoder.forceEnableAllChains", True)
 
+
 flags.lock()
 
 from AthenaCommon.Constants import INFO,DEBUG
@@ -59,23 +60,26 @@ from TrigUpgradeTest.TriggerHistSvcConfig import TriggerHistSvcConfig
 acc.merge(TriggerHistSvcConfig(flags ))
 
 def menu( mf ):
-    menuAcc = ComponentAccumulator()
-    HLTSteps =  seqAND( "HLTSteps")
-    menuAcc.addSequence( HLTSteps )
-    menuAcc.addSequence( parOR("HLTStep_1_filters"), parentName="HLTSteps" )
-    menuAcc.addSequence( parOR("HLTStep_1"), parentName="HLTSteps" )
-    menuAcc.addSequence( parOR("HLTStep_2_filters"), parentName="HLTSteps" )
-    menuAcc.addSequence( parOR("HLTStep_2"), parentName="HLTSteps" )
+    from TrigUpgradeTest.MenuComponents import HLTMenuAccumulator
+    menuAcc = HLTMenuAccumulator()
+
+    # here menu generation starts
+
+    if flags.get("Trigger.menu.electrons"): # maybe it is better if this check is done in generateElectrons 
+        from TrigUpgradeTest.ElectronMenuConfig import generateElectrons
+        accElectrons, electronSteps = generateElectrons( flags ) 
+        if len( electronSteps ) != 0:
+            menuAcc.setupSteps( electronSteps )         
+            menuAcc.merge( accElectrons )
 
-    from TrigUpgradeTest.EgammaCaloMod import EgammaCaloMod
-    accECM,seqECM=EgammaCaloMod(flags)
-    menuAcc.merge(accECM)
-    menuAcc.addSequence(seqECM, parentName="HLTStep_1" )
-    return menuAcc, HLTSteps
+    # here setting of the Summary + top level Monitoring algs should be done
+    menuAcc.printConfig()    
+    
+    return menuAcc, menuAcc.steps()
 
 
 from TriggerJobOpts.TriggerConfig import triggerRunCfg
-acc.merge( triggerRunCfg(flags, menu) )
+acc.merge( triggerRunCfg( flags, menu ) )
 
 
 from EventInfoMgt.EventInfoMgtConf import TagInfoMgr
@@ -102,10 +106,13 @@ acc.merge( RegSelConfig( flags ) )
 acc.getEventAlgo( "TrigSignatureMoniMT" ).OutputLevel=DEBUG
 print acc.getEventAlgo( "TrigSignatureMoniMT" )
 
-from TrigUpgradeTest.TestUtils import applyMenu
-applyMenu( acc.getEventAlgo( "L1Decoder" ) )
+
+
+# from TrigUpgradeTest.TestUtils import applyMenu
+# applyMenu( acc.getEventAlgo( "L1Decoder" ) )
 acc.getEventAlgo( "L1Decoder" ).OutputLevel=DEBUG
-acc.getEventAlgo( "L2CaloHypo" ).OutputLevel=DEBUG
+acc.getEventAlgo( "L2ElectronCaloHypo" ).OutputLevel=DEBUG
+acc.getEventAlgo( "FastEMCaloAlgo" ).OutputLevel=DEBUG
 
 
 acc.printConfig()
diff --git a/Trigger/TriggerCommon/TriggerJobOpts/CMakeLists.txt b/Trigger/TriggerCommon/TriggerJobOpts/CMakeLists.txt
index 529724f1f89..2eff2428fb8 100644
--- a/Trigger/TriggerCommon/TriggerJobOpts/CMakeLists.txt
+++ b/Trigger/TriggerCommon/TriggerJobOpts/CMakeLists.txt
@@ -18,6 +18,11 @@ atlas_add_test( TriggerConfigFlagsTest
    SCRIPT python -m unittest TriggerJobOpts.TriggerConfigFlags
    POST_EXEC_SCRIPT nopost.sh )
 
+atlas_add_test( TriggerMenuFlagsTest
+   SCRIPT python -m unittest TriggerJobOpts.MenuConfigFlags
+   POST_EXEC_SCRIPT nopost.sh )
+
+
 atlas_add_test( TriggerConfigTest
    SCRIPT python -m TriggerJobOpts.TriggerConfig
    POST_EXEC_SCRIPT nopost.sh )
diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py
index 471a219ea8f..5d47b50b37a 100644
--- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfig.py
@@ -68,7 +68,17 @@ def triggerMonitoringCfg(flags, hypos):
 
     return acc, mon
 
+def setupL1DecoderFromMenu( flags, l1Decoder ):
+    """ Post setup of the L1Decoder, once approved, it should be moved to L1DecoderCfg function """
+    l1Decoder.ctpUnpacker.CTPToChainMapping = {} 
+    from TriggerJobOpts.MenuConfigFlags import MenuUtils
+    l1Decoder.ctpUnpacker.CTPToChainMapping.update( MenuUtils.toCTPSeedingDict( flags ) )
 
+    # this will go away once full L1 config info will be used by L1 Decoder
+    for c in flags.get( "Trigger.menu.electrons" ) + flags.get( "Trigger.menu.photons" ) :
+        chain, l1item = c.split()[:2]
+        threshold = l1item.split("_")[1] 
+        l1Decoder.roiUnpackers["EMRoIsUnpackingTool"].ThresholdToChainMapping += [ "%s : %s" % (threshold, chain) ]
 
 
 def triggerRunCfg(flags, menu=None):
@@ -81,14 +91,15 @@ def triggerRunCfg(flags, menu=None):
         pass
     
     acc = ComponentAccumulator()
-    
+
     from L1Decoder.L1DecoderConfig import L1DecoderCfg
     #TODO
     # information about the menu has to be injected into L1 decoder config
     # necessary ingreedient is list of mappings from L1 item to chain
     # and item to threshold (the later can be maybe extracted from L1 config file)
     l1DecoderAcc, l1DecoderAlg = L1DecoderCfg( flags )
-    acc.merge( l1DecoderAcc)    
+    setupL1DecoderFromMenu( flags, l1DecoderAlg )
+    acc.merge( l1DecoderAcc )    
             
 
     # detour to the menu here, (missing now, instead a temporary hack)
diff --git a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfigFlags.py b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfigFlags.py
index dc11900ca95..2c17a6132ca 100644
--- a/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfigFlags.py
+++ b/Trigger/TriggerCommon/TriggerJobOpts/python/TriggerConfigFlags.py
@@ -140,6 +140,9 @@ def createTriggerFlags():
 
     # muons
     flags.addFlag('Trigger.muon.doEFRoIDrivenAccess', False)
+
+    from TriggerJobOpts.MenuConfigFlags import createMenuFlags
+    flags.join( createMenuFlags() )
                 
     return flags
     # for reference, this flags are skipped as never used or never set in fact, or set identical to de default or used in a very old JO:
-- 
GitLab