diff --git a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu.py b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu.py index 730a1cbbd692780d4a25c15cf5e911a3725ac8d7..7d15d47658b6430d9fca3665a117f7d57eb82c8c 100644 --- a/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu.py +++ b/Trigger/TrigValidation/TrigUpgradeTest/share/full_menu.py @@ -88,12 +88,7 @@ if opt.doMuonSlice == True: stepFSmuEFCB=ChainStep("Step_FSmuEFCB", [muEFCBFSSequence()]) - # 2muons - step1_2mufast= ChainStep("Step1_2muFast", [ muFastSequence(), muFastSequence()], multiplicity=2) - step2_2muComb= ChainStep("Step1_2muComb", [ muCombSequence(), muCombSequence()], multiplicity=2) - step3_2muEFSA= ChainStep("Step3_2muEFSA", [ muEFSASequence(), muEFSASequence()], multiplicity=2) - step4_2muEFCB= ChainStep("Step4_2muEFCB", [ muEFCBSequence(), muEFCBSequence()], multiplicity=2) - + emptyStep=ChainStep("Step2_empty") @@ -104,12 +99,17 @@ if opt.doMuonSlice == True: MuonChains += [Chain(name='HLT_mu6msonly', Seed="L1_MU6", ChainSteps=[ step1mufast, emptyStep, step3muEFSA ])] # removed due to muEFSA isuue(?) MuonChains += [Chain(name='HLT_mu20_ivar', Seed="L1_MU6", ChainSteps=[ step1mufast, step2muComb, step3muIso ])] - # multi muon trigger - MuonChains += [Chain(name='HLT_2mu6Comb', Seed="L1_MU6", ChainSteps=[ step1mufast, step2muComb ])] - MuonChains += [Chain(name='HLT_2mu6', Seed="L1_MU6", ChainSteps=[ step1mufast, step2muComb, step3muEFSA, step4muEFCB ])] + # multi muon trigger + # 2muons + step1_2mufast_sym= ChainStep("Step1_2muFast_sym", [ muFastSequence()], multiplicity=2) + step2_2muComb_sym= ChainStep("Step1_2muComb_sym", [ muCombSequence()], multiplicity=2) + + step3_2muEFSA_sym= ChainStep("Step3_2muEFSA_sym", [ muEFSASequence()], multiplicity=2) + step4_2muEFCB_sym= ChainStep("Step4_2muEFCB_sym", [ muEFCBSequence()], multiplicity=2) + + MuonChains += [Chain(name='HLT_2mu6Comb', Seed="L1_MU6", ChainSteps=[ step1_2mufast_sym, step2_2muComb_sym ])] + MuonChains += [Chain(name='HLT_2mu6', Seed="L1_MU6", ChainSteps=[ step1_2mufast_sym, step2_2muComb_sym, step3_2muEFSA_sym, step4_2muEFCB_sym ])] - ## MuonChains += [Chain(name='HLT_2mu6Comb', Seed="L1_2MU6", ChainSteps=[ step1_2mufast, step2_2muComb ])] - ## MuonChains += [Chain(name='HLT_2mu6', Seed="L1_2MU6", ChainSteps=[ step1_2mufast, step2_2muComb, step3_2muEFSA, step4_2muEFCB ])] #FS Muon trigger MuonChains += [Chain(name='HLT_mu6nol1', Seed="L1_MU6", ChainSteps=[stepFSmuEFSA, stepFSmuEFCB])] diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py index e4abbdd371d7b40a278514dc43e8715512b8342d..7a3976955780b36af9150a5036dda1241c31202b 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py @@ -9,7 +9,7 @@ ++ Seeds -++ Combined chains +++ Combined chain strategy - The combined chains use duplicates of the single-object-HypoAlg, called HypoAlgName_for_stepName. These duplicates are connected to a dedicated ComboHypoAlg (added by the framework), able to count object multiplicity @@ -25,9 +25,6 @@ """ - - - # Classes to configure the CF graph, via Nodes from AthenaCommon.CFElements import parOR, seqAND, seqOR, isSequence from AthenaCommon.Logging import logging @@ -35,7 +32,7 @@ from AthenaCommon.AlgSequence import dumpSequence from TriggerMenuMT.HLTMenuConfig.Menu.HLTCFDot import stepCF_DataFlow_to_dot, stepCF_ControlFlow_to_dot, all_DataFlow_to_dot from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponentsNaming import CFNaming -import sys, copy +import copy log = logging.getLogger('HLTCFConfig') @@ -354,7 +351,6 @@ def createDataFlow(chains, allDicts): if len(filter_input) == 0 or (len(filter_input) != 1 and not chain_step.isCombo): log.error("ERROR: Filter for step %s has %d inputs! One is expected", chain_step.name, len(filter_input)) - sys.exit("ERROR, in configuration of step "+chain_step.name) # get the filter: @@ -589,7 +585,6 @@ def findFilter(filter_name, cfseqList): #foundFilters = [cfseq.filter for cfseq in cfseqList if filter_name in cfseq.filter.Alg.name()] if len(foundFilters) > 1: log.error("found %d filters with name %s", len( foundFilters ), filter_name) - sys.exit("ERROR, in filter configuration") found = bool(foundFilters) if found: diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py index 886b368c86a4193a1b3ca7b40b51f7b79fca0115..4bb3140f85561d95990da6f80945360d0426c3ce 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py @@ -1,6 +1,6 @@ # Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -import sys, re, copy +import re, copy from AthenaCommon.Logging import logging log = logging.getLogger('MenuComponents') @@ -81,7 +81,7 @@ class AlgNode(Node): if self.outputProp is not '': self.setPar(self.outputProp,name) else: - sys.exit("no OutputProp set") + log.error("no OutputProp set") Node.addOutput(self, name) @@ -104,7 +104,7 @@ class AlgNode(Node): if self.inputProp is not '': self.setPar(self.inputProp,name) else: - sys.exit("no InputProp set") + log.error("no InputProp set") Node.addInput(self, name) @@ -230,15 +230,14 @@ class ComboMaker(AlgNode): cval = self.Alg.getProperties()[self.prop] # check necessary to see if chain was added already? if type(cval) is dict: if chain in cval.keys(): - log.error("ERROR in cofiguration: ComboAlg %s has already been configured for chain %s", self.name, chain) - sys.exit("ERROR, in chain configuration") + log.error("ERROR in cofiguration: ComboAlg %s has already been configured for chain %s", self.Alg.name(), chain) else: - cval[chain]=[allMultis] + cval[chain]=allMultis else: cval=newdict setattr(self.Alg, self.prop, cval) - log.debug("Added chain %s to ComboAlg %s", self.getPar(self.prop), self.name) + log.debug("ComboAlg %s has now these chains chain %s", self.Alg.name(), self.getPar(self.prop)) @@ -325,7 +324,6 @@ class MenuSequence(object): hypo_output = CFNaming.hypoAlgOutName(self.hypo.Alg.name(), input_maker_output) if len(self.hypo.getOutputList()): log.error("Hypo " + self.hypo.name() +" has already an output configured: you may want to duplicate the Hypo!") - sys.exit("ERROR, in chain configuration") self.hypo.addOutput(hypo_output) # needed for drawing @@ -363,7 +361,6 @@ def DoMapSeedToL1Decoder(seed): stripSeed = filter(lambda x: x.isalpha(), seed) if stripSeed not in mapSeedToL1Decoder: log.error("Seed "+ seed + " not mapped to any Decision objects! Available are: " + str(mapSeedToL1Decoder.values())) - sys.exit("ERROR, in chain configuration") return (mapSeedToL1Decoder[stripSeed]) ################################################# @@ -419,7 +416,6 @@ class Chain(object): else: log.error("found %d sequences in this chain and %d seeds. What to do??", tot_seq, tot_seed) - sys.exit("ERROR, in chain configuration") def decodeHypoToolConfs(self, allChainDicts): """ This is extrapolating the hypotool configuration from the (combined) chain name""" @@ -433,7 +429,6 @@ class Chain(object): if len(chainDict['chainParts']) != len(step.sequences): log.error("Error in step %s: found %d chain parts and %d sequences", step.name, len(chainDict['chainParts']), len(step.sequences)) - sys.exit("ERROR, in chain configuration") for seq, chainDictPart in zip(step.sequences, chainDict['chainParts']): if seq.ca is not None: # The CA merging took care of everything @@ -478,14 +473,13 @@ class CFSequence(object): filter_output = self.filter.getOutputList() if len(filter_output) == 0: log.error("ERROR, no filter outputs are set!") - sys.exit("ERROR, no filter outputs are set!") + if len(self.step.sequences): # check whether the number of filter outputs are the same as the number of sequences in the step if len(filter_output) != len(self.step.sequences): log.error("Found %d filter outputs and %d MenuSequences in Step %s", len(self.filter.getOutputList()), len(self.step.sequences), self.step.name) - sys.exit("ERROR: Found %d filter outputs differnt from %d MenuSequences in Step %s", len(self.filter.getOutputList()), len(self.step.sequences), self.step.name) nseq=0 for seq in self.step.sequences: filter_out = filter_output[nseq]