diff --git a/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt b/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt index a81d2b35ba6d16bd1f5d91b2cf57accc36a134ba..876746b073ceafa1c67c21eec2806527ff524d88 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt +++ b/Trigger/TriggerCommon/TriggerMenuMT/CMakeLists.txt @@ -68,7 +68,7 @@ function( atlas_test_hlt_trigger_menu menu ) SCRIPT ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_HLTmenu.sh ${menu} PROPERTIES TIMEOUT 500 PRIVATE_WORKING_DIRECTORY - POST_EXEC_SCRIPT nopost.sh ) + POST_EXEC_SCRIPT "check_log.py --errors ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/unitTestRun_HLT_${menu}/HLT_${menu}.log" ) endfunction() # Test all L1 menus (as this is fast): diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py index 932c5194789138dcdfff885ddeb8110ec74bdc9d..017f883c5d623f4fb6fe70422a0b61d7e1fa67af 100755 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py @@ -4,11 +4,6 @@ import importlib import itertools import string -# Configure the scheduler -from AthenaCommon.AlgScheduler import AlgScheduler -AlgScheduler.ShowControlFlow( True ) -AlgScheduler.ShowDataFlow( True ) - from .TriggerConfigHLT import TriggerConfigHLT from .HLTCFConfig import makeHLTTree from .DictFromChainName import dictFromChainName @@ -52,6 +47,8 @@ class GenerateMenuMT(object, metaclass=Singleton): self.availableSignatures = [] self.signaturesToGenerate = [] self.calibCosmicMonSigs = ['Streaming','Monitor','Beamspot','Cosmic', 'Calib', 'EnhancedBias'] + self.combinedSigs = ['MinBias','Egamma','Muon','Tau','Jet', 'Bjet','MET','UnconventionalTracking'] + self.defaultSigs = ['Streaming'] # for noalg chains self.chainDefModule = {} # Generate[SIG]ChainDefs module for each SIGnature @@ -72,37 +69,57 @@ class GenerateMenuMT(object, metaclass=Singleton): def getChainDicts(self): - all_chain_dicts = [] - all_chains = itertools.chain.from_iterable(self.chainsInMenu.values()) - for chainCounter, chain in enumerate(all_chains, start=1): - log.debug("Now processing chain: %s ", chain) - chainDict = dictFromChainName(chain) - chainDict['chainCounter'] = chainCounter - - #set default chain prescale - chainDict['prescale'] = 1 - all_chain_dicts += [chainDict] - self.chainDicts = all_chain_dicts - - return + + def validSignature(currentSig, chainSig): + """Check if chain is asssigned to the correct signature""" + + # Translate Egamma signatures + if 'Electron' in chainSig or 'Photon' in chainSig: + chainSig.discard('Electron') + chainSig.discard('Photon') + chainSig.add('Egamma') + + if ( (currentSig in chainSig) or + (currentSig=='Combined' and set(chainSig).issubset(self.combinedSigs)) or + (chainSig==set(['Streaming'])) ): + return True + else: + return False + + chainCounter = 0 + for sig, chains in self.chainsInMenu.items(): + for chain in chains: + log.debug("Now processing chain: %s ", chain) + chainCounter += 1 + chainDict = dictFromChainName(chain) + chainDict['chainCounter'] = chainCounter + chainDict['prescale'] = 1 # set default chain prescale + + self.chainDicts.append(chainDict) + + if not validSignature(sig, set(chainDict['signatures'])): + log.error('Chain %s assigned to signature %s but creates %s', + chainDict['chainName'], sig, set(chainDict['signatures'])) + def importSignaturesToGenerate(self): """check if all the signature files can be imported and then import them""" - log.debug("signaturesToGenerate: %s", self.signaturesToGenerate) + # List of all non-empty signatures + self.signaturesToGenerate = [s for s,chains in self.chainsInMenu.items() + if len(chains)>0] + + log.info("Enabled signature(s): %s", self.signaturesToGenerate) # Extend the list to satisfy certain requirements - extendedSignatureToGenerate = set(self.signaturesToGenerate) - # always import the Streaming sig because noalg chains are moved to StreamingSlice - extendedSignatureToGenerate.add('Streaming') + extendedSignatureToGenerate = set(self.signaturesToGenerate + self.defaultSigs) # Combined chains themselves are created by merging # If we activate combined chains, we need all of the (legal) sub-signatures if "Combined" in extendedSignatureToGenerate: log.info("Combined chains requested -- activate other necessary signatures") extendedSignatureToGenerate.remove("Combined") - extendedSignatureToGenerate.update(["MinBias","Egamma","Muon","Tau","Jet", - "Bjet","MET","UnconventionalTracking"]) + extendedSignatureToGenerate.update(self.combinedSigs) for sig in extendedSignatureToGenerate: log.debug("[getSignaturesInMenu] sig: %s", sig) @@ -144,19 +161,8 @@ class GenerateMenuMT(object, metaclass=Singleton): alignmentGroups_to_align = set() length_of_configs = {} - previous_sig = '' for chainDict in self.chainDicts: - if len(set(chainDict['signatures'])) == 1: - current_sig = chainDict['signatures'][0] - if current_sig != previous_sig: - previous_sig = current_sig - log.info("Now starting generation of signature %s",current_sig) - elif len(set(chainDict['signatures'])) > 1 and set(chainDict['signatures'])!= set(['Bjet','Jet']): - current_sig = 'Combined' - if current_sig != previous_sig: - previous_sig = current_sig - log.info("Now starting generation of signature %s",current_sig) - log.debug("Next: getting chain configuration for chain %s ", chainDict['chainName']) + log.debug("Next: getting chain configuration for chain %s ", chainDict['chainName']) chainConfig,lengthOfChainConfigs = self.__generateChainConfig(chainDict) all_chains += [(chainDict,chainConfig,lengthOfChainConfigs)] @@ -294,12 +300,6 @@ class GenerateMenuMT(object, metaclass=Singleton): self.chainsInMenu[signame] = [c for c in self.chainsInMenu[signame] if self.chainFilter(signame, c.name)] - # List of all non-empty signatures - self.signaturesToGenerate = [s for s,chains in self.chainsInMenu.items() - if len(chains)>0] - - log.info("Enabled signature(s): %s", self.signaturesToGenerate) - if not self.chainsInMenu: log.warning("There seem to be no chains in the menu - please check") elif log.isEnabledFor(logging.DEBUG): @@ -335,17 +335,9 @@ class GenerateMenuMT(object, metaclass=Singleton): chainName = chainPartDict['chainName'] log.debug('Checking chainDict for chain %s in signature %s, alignment group %s' , chainName, currentSig, currentAlignGroup) - sigFolder = '' - if currentSig == 'Electron' or currentSig == 'Photon': - sigFolder = 'Egamma' - elif currentSig in self.calibCosmicMonSigs: - sigFolder = 'CalibCosmicMon' - else: - sigFolder = currentSig - if currentSig in self.availableSignatures: try: - log.debug("[__generateChainConfigs] Trying to get chain config for %s in folder %s", currentSig, sigFolder) + log.debug("[__generateChainConfigs] Trying to get chain config for %s", currentSig) chainPartConfig = self.chainDefModule[currentSig].generateChainConfigs(chainPartDict) except Exception: log.error('[__generateChainConfigs] Problems creating ChainDef for chain %s ', chainName)