From 5fabf72f216c32c9dd35a2c469819afad5b7d1ee Mon Sep 17 00:00:00 2001
From: Tomasz Bold <tomasz.bold@gmail.com>
Date: Tue, 4 Dec 2018 13:13:54 +0100
Subject: [PATCH] obtained working MenuExample close to JO

---
 .../TriggerMenuMT/CMakeLists.txt              |  5 +++
 .../HLTMenuConfig/Egamma/ElectronDef.py       | 30 ++++++++--------
 .../Egamma/generateElectronChainDefs.py       |  8 +++--
 .../HLTMenuConfig/Menu/GenerateMenuMT.py      | 35 ++++++++++++-------
 .../python/HLTMenuConfig/Menu/LS2_v1_newJO.py |  2 +-
 .../TriggerMenuMT/scripts/testMenuMT.sh       |  2 +-
 .../TriggerMenuMT/scripts/test_HLTmenu.sh     |  2 +-
 7 files changed, 51 insertions(+), 33 deletions(-)
 mode change 100644 => 100755 Trigger/TriggerCommon/TriggerMenuMT/scripts/test_HLTmenu.sh

diff --git a/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt b/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt
index 9f3f3365f844..0f06716225e3 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt
+++ b/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt
@@ -107,6 +107,7 @@ atlas_install_scripts( scripts/generateMenuMT.py )
 atlas_install_scripts( scripts/generateL1MenuMT.sh )
 atlas_install_scripts( scripts/generateLVL1MenuMT.py )
 atlas_install_scripts( scripts/generateL1TopoMenuMT.py )
+atlas_install_scripts( scripts/test_HLTmenu.sh )
 
 atlas_install_xmls( data/*.dtd data/*.xml )
 
@@ -120,6 +121,10 @@ atlas_add_test( generateMenuMT_newJO SCRIPT python -m TriggerMenuMT.HLTMenuConfi
                 PROPERTIES TIMEOUT 500 
               )
 
+atlas_add_test( generateMenuMT SCRIPT bash test_HLTmenu.sh
+                PROPERTIES TIMEOUT 1000 
+              )
+
 
 
 #file( MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/unitTestRun_generateMenu )
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py
index ea220ff08784..abaa584fd3f6 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py
@@ -13,11 +13,11 @@ from TriggerMenuMT.HLTMenuConfig.Menu.TriggerConfigHLT import TriggerConfigHLT
 # fragments generating configuration will be functions in New JO, so let's make them functions already now
 def fastCaloSequenceCfg( flags ):
     from TrigUpgradeTest.electronMenuDefs import fastCaloSequence
-    return fastCaloSequence
+    return fastCaloSequence()
     
 def electronSequenceCfg( flags ):
     from TrigUpgradeTest.electronMenuDefs import electronSequence        
-    return electronSequence
+    return electronSequence()
 
 def generateChain(flags, chainDict ): # in New JO  we will add flags here
     chainDict = type("chainDict", (object,), chainDict)
@@ -25,19 +25,17 @@ def generateChain(flags, chainDict ): # in New JO  we will add flags here
     # it is not exact as the things like the multiplicity are not converted to int, however they should be made int in the first place
     #
 
-    if 'etcut' ins chainDict.chainName:
-        # this is the cache, we hope we will be able to get rid of it in future
-        fastCalo = RecoFragmentsPool.retrieve( fastCaloSequenceCfg, None ) # the None will be used for flags in future
-        electronReco = RecoFragmentsPool.retrieve( electronSequenceCfg, None )
-        
-        return Chain(name = 'HLT_'+chainDict.chainName, 
-                     Seed = chainDict.L1Item, 
-                     ChainSteps = [
-                         ChainStep('ElectronStep1', [fastCalo]),
-                         ChainStep('ElectronStep2', [electronReco])
-                     ])
-    else:
-        raise RuntimeError("Unhandled chain %s" % chainDict.chainName) 
+
+    # this is the cache, we hope we will be able to get rid of it in future
+    fastCalo = RecoFragmentsPool.retrieve( fastCaloSequenceCfg, None ) # the None will be used for flags in future
+    electronReco = RecoFragmentsPool.retrieve( electronSequenceCfg, None )
+    
+    return Chain(name = chainDict.chainName,
+                 Seed = chainDict.L1item, 
+                 ChainSteps = [
+                     ChainStep('ElectronStep1', [fastCalo]),
+                     ChainStep('ElectronStep2', [electronReco])
+                 ])
     
     
 
@@ -70,7 +68,7 @@ class Chain_electron:
 
 
         self.chainSteps = chainSteps
-        myChain = Chain(name = 'HLT_'+self.chainName, 
+        myChain = Chain(name = self.chainName, 
                         Seed = self.chainL1Item, 
                         ChainSteps = self.chainSteps)
         return myChain
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/generateElectronChainDefs.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/generateElectronChainDefs.py
index 1d0e5090a568..19d20153e81a 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/generateElectronChainDefs.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/generateElectronChainDefs.py
@@ -1,8 +1,10 @@
 # Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
 
-from TriggerMenuMT.HLTMenuConfig.Egamma.ElectronDef import generteChain as generateElectronChain
+from TriggerMenuMT.HLTMenuConfig.Egamma.ElectronDef import generateChain as generateElectronChain
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import Chain
 from TriggerMenuMT.HLTMenuConfig.Menu.MenuUtils import splitChainDict
+#from TriggerMenuMT.HLTMenuConfig.Egamma.ElectronDef import Chain_electron as Chain_electron
+
 
 from AthenaCommon.Logging import logging
 log = logging.getLogger( 'TriggerMenuMT.HLTMenuConfig.Egamma.generateChainConfigs' )
@@ -20,7 +22,9 @@ def generateChainConfigs( chainDict ):
 
     for subChainDict in listOfChainDicts:
         log.debug("IN ELECTRON GENERATION CODE")
-        Electron = generateElectronChain( subChainDict )
+        
+        Electron = generateElectronChain( None, subChainDict )
+        #Electron = Chain_electron(subChainDict).assembleChain() 
 
 
         listOfChainDefs += [Electron]
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py
index 41581a8626d3..f525b6e6204c 100755
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py
@@ -51,7 +51,7 @@ class GenerateMenuMT:
 
     def setTriggerConfigHLT(self):
         # setting the hlt menu configuration
-        (HLTPrescales) = self.setupMenu()
+        #(HLTPrescales) = self.setupMenu()
         self.triggerConfigHLT = TriggerConfigHLT(TriggerFlags.outputHLTconfigFile())
         self.triggerConfigHLT.menuName = TriggerFlags.triggerMenuSetup()
         log.debug("Working with menu: %s", self.triggerConfigHLT.menuName)
@@ -63,10 +63,9 @@ class GenerateMenuMT:
         """
         if self.doEgammaChains:
             try:
-                import TriggerMenuMT.HLTMenuConfig.Egamma.generateElectronChainDefs 
+                import TriggerMenuMT.HLTMenuConfig.Egamma.generateElectronChainDefs                
             except:
-                log.error('Problems when importing generateElectronChainDefs, disabling egamma chains.')
-                log.info(traceback.print_exc())
+                log.exception('Problems when importing generateElectronChainDefs, disabling egamma chains.')
                 self.doEgammaChains = False
                         
         listOfChainConfigs = []
@@ -84,12 +83,14 @@ class GenerateMenuMT:
             if chainDict["signature"] == "Electron" and self.doEgammaChains:
                 try:
                     log.debug("Try to get chain config")
-                    chainConfigs = TriggerMenuMT.HLTMenuConfig.Egamma.generateElectronChainDefs.generateChainConfigs(chainDict)
+                    chainConfigs = TriggerMenuMT.HLTMenuConfig.Egamma.generateElectronChainDefs.generateChainConfigs(chainDict)                    
                 except:
-                    log.error('Problems creating ChainDef for chain %s ' % (chainDict['chainName']))
-                    log.info(traceback.print_exc())
+                    log.exception( 'Problems creating ChainDef for chain\n %s ' % (chainDict['chainName']) ) 
+
+
                     continue
             else:
+                
                 log.error('Chain %s ignored - either trigger signature is turned off or the corresponding chain dictionary cannot be read.' %(chainDict['chainName']))
                 log.debug('Chain dictionary of failed chain is %s.', chainDict)
             
@@ -102,7 +103,8 @@ class GenerateMenuMT:
 
         if len(listOfChainConfigs) == 0:  
             log.error('No Chain Configuration found ')
-            return False
+            return None
+        
         elif len(listOfChainConfigs)>1:
             if ("mergingStrategy" in chainDicts[0].keys()):
                 log.warning("Need to define merging strategy, returning only first chain part configuration")
@@ -125,9 +127,16 @@ class GenerateMenuMT:
 
         log.debug('Creating one big list of of enabled signatures and chains')
         chains = []
+        # we can already use new set of flags
+        from AthenaConfiguration.AllConfigFlags import ConfigFlags
+        from TriggerMenuMT.HLTMenuConfig.Menu.LS2_v1_newJO import setupMenu as setupMenuFlags
+        setupMenuFlags( ConfigFlags ) 
+        ConfigFlags.lock()
         
-        if (TriggerFlags.CombinedSlice.signatures() or TriggerFlags.EgammaSlice.signatures()) and self.doEgammaChains:
-            chains += TriggerFlags.EgammaSlice.signatures() 
+        #if (TriggerFlags.CombinedSlice.signatures() or TriggerFlags.EgammaSlice.signatures()) and self.doEgammaChains:
+        if ConfigFlags.Trigger.menu.egamma and self.doEgammaChains:
+            chains += ConfigFlags.Trigger.menu.egamma
+            log.debug("egamma chains "+str(ConfigFlags.Trigger.menu.egamma))
         else:
             self.doEgammaChains   = False
 
@@ -181,8 +190,10 @@ class GenerateMenuMT:
     def setupMenu(self):
         # go over the slices and put together big list of signatures requested
         #(L1Prescales, HLTPrescales, streamConfig) = lumi(self.triggerPythonConfig)
-        (self.L1Prescales, self.HLTPrescales) = lumi(self.triggerConfigHLT)
-        return (self.HLTPrescales)
+        # that does not seem to work
+        #(self.L1Prescales, self.HLTPrescales) = lumi(self.triggerConfigHLT)
+        #return (self.HLTPrescales)
+        pass
 
 
 
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 ca8079cd3722..5b22713d6d49 100644
--- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py
+++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py
@@ -31,7 +31,7 @@ def setupMenu(flags):
     ]
 
     flags.Trigger.menu.egamma = [
-        get_flag_item('HLT_e20_loose', 'L1_EM10', ['RATE:SingleElectron', 'BW:Electron'])
+        get_flag_item('HLT_e20_etcut', 'L1_EM10', ['RATE:SingleElectron', 'BW:Electron'])
     ]
 
     flags.Trigger.menu.combined = [
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/scripts/testMenuMT.sh b/Trigger/TriggerCommon/TriggerMenuMT/scripts/testMenuMT.sh
index a1701f22b7be..63d4c53d9bbc 100755
--- a/Trigger/TriggerCommon/TriggerMenuMT/scripts/testMenuMT.sh
+++ b/Trigger/TriggerCommon/TriggerMenuMT/scripts/testMenuMT.sh
@@ -62,7 +62,7 @@ cd $rundir
 
 generateLVL1MenuMT.py $menu >&! logfiletopo 
 generateL1TopoMenuMT.py $menu >&! logfilelvl1 
-generateMenuMT.py $menu >&! logfilehlt
+tgenerateMenuMT.py $menu >&! logfilehlt
 
 cp L1Topoconfig_*.xml ${dest}
 cp LVL1config_*.xml ${dest}
diff --git a/Trigger/TriggerCommon/TriggerMenuMT/scripts/test_HLTmenu.sh b/Trigger/TriggerCommon/TriggerMenuMT/scripts/test_HLTmenu.sh
old mode 100644
new mode 100755
index 53f5e3970423..bba2ef6c262f
--- a/Trigger/TriggerCommon/TriggerMenuMT/scripts/test_HLTmenu.sh
+++ b/Trigger/TriggerCommon/TriggerMenuMT/scripts/test_HLTmenu.sh
@@ -1,3 +1,3 @@
 #!bin/sh
 
-athena -l DEBUG --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TriggerMenuMT/generateMenuMT.py
+athena -l DEBUG --threads=1 --skipEvents=10 --evtMax=20 --filesInput="/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TrigP1Test/data17_13TeV.00327265.physics_EnhancedBias.merge.RAW._lb0100._SFO-1._0001.1" TriggerMenuMT/generateMT.py
-- 
GitLab