diff --git a/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt b/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt index 9f3f3365f844b0d1a8a3a54ae4f14b5ae1f91c2f..0f06716225e314cbca3049decfe9b1053e196d21 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 a5b804e581b4a485d21b34a75c4dfb4ac7b605c2..abaa584fd3f61cf9dace5a40a4013edd02ffcbef 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/ElectronDef.py @@ -5,10 +5,41 @@ logging.getLogger().info("Importing %s",__name__) log = logging.getLogger("TriggerMenuMT.HLTMenuConfig.Egamma.ElectronDef") -from TrigUpgradeTest.electronMenuDefs import fastCaloSequence, electronSequence -from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import Chain, ChainStep + +from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import Chain, ChainStep, RecoFragmentsPool 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() + +def electronSequenceCfg( flags ): + from TrigUpgradeTest.electronMenuDefs import electronSequence + return electronSequence() + +def generateChain(flags, chainDict ): # in New JO we will add flags here + chainDict = type("chainDict", (object,), chainDict) + # translation from chainDict["chainName"] to chainDict.chainName (less typing), + # 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 + # + + + # 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]) + ]) + + + + class Chain_electron: def __init__(self, chainDict): @@ -37,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/__init__.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/generateElectronChainDefs.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Egamma/generateElectronChainDefs.py index 84bc075d92fd3e27c397d09085fa13fddbe58a1d..19d20153e81a999e4a9edd948df004140215f4fd 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 Chain_electron as Chain_electron +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,8 +22,10 @@ def generateChainConfigs( chainDict ): for subChainDict in listOfChainDicts: log.debug("IN ELECTRON GENERATION CODE") - Electron = Chain_electron(subChainDict).assembleChain() - log.debug('Electron object: type name of class: %s', Electron.__class__.__name__) + + Electron = generateElectronChain( None, subChainDict ) + #Electron = Chain_electron(subChainDict).assembleChain() + listOfChainDefs += [Electron] log.debug('length of chaindefs %s', len(listOfChainDefs) ) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py index 41581a8626d3a37e90ecb2bf252f26b483ec4693..a12de7eff48b818264fc8054bfe3118117dbd4ab 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.electron and self.doEgammaChains: + chains += ConfigFlags.Trigger.menu.electron + 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/scripts/test_HLTmenu.sh b/Trigger/TriggerCommon/TriggerMenuMT/scripts/test_HLTmenu.sh old mode 100644 new mode 100755 index 53f5e39704237e68106cd72259ebff280268f04b..bba2ef6c262f350f5b3adfffd1fc0dfc818e0441 --- 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