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