diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py index f1f6285a0a9e38c96260507f88bddf3d7a400f2c..761e50f84a4ddc1ba23d1f93c3b56709523e34eb 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/HLTCFConfig.py @@ -5,7 +5,7 @@ from AthenaCommon.CFElements import parOR, seqAND, seqOR from AthenaCommon.Logging import logging 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 * +from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponentsNaming import CFNaming import sys import copy @@ -49,7 +49,7 @@ def createStepRecoNode(name, seq_list, dump=False): """ elementary HLT reco step, contianing all sequences of the step """ log.debug("Create reco step %s with %d sequences", name, len(seq_list)) - stepCF = parOR(name + RECO_POSTFIX) + stepCF = parOR(name + CFNaming.RECO_POSTFIX) for seq in seq_list: stepCF += createCFTree(seq) @@ -61,7 +61,7 @@ def createStepFilterNode(name, seq_list, dump=False): """ elementary HLT filter step: OR node containing all Filters of the sequences. The node gates execution of next reco step """ log.debug("Create filter step %s with %d filters", name, len(seq_list)) - stepCF = parOR(name + FILTER_POSTFIX) + stepCF = parOR(name + CFNaming.FILTER_POSTFIX) for seq in seq_list: filterAlg = seq.filter.Alg log.info("Add %s to filter node %s", filterAlg.name(), name) @@ -77,8 +77,8 @@ def createCFTree(CFseq): log.debug(" *** Create CF Tree for CFSequence %s", CFseq.step.name) filterAlg = CFseq.filter.Alg - stepReco = parOR(CFseq.step.name + RECO_POSTFIX) # all reco algoritms from al lthe sequences in a parallel sequence - seqAndView = seqAND(CFseq.step.name + VIEW_POSTFIX, [stepReco]) # include in seq:And to run in views: add here the Hypo + stepReco = parOR(CFseq.step.name + CFNaming.RECO_POSTFIX) # all reco algoritms from al lthe sequences in a parallel sequence + seqAndView = seqAND(CFseq.step.name + CFNaming.VIEW_POSTFIX, [stepReco]) # include in seq:And to run in views: add here the Hypo seqAndWithFilter = seqAND(CFseq.step.name, [filterAlg, seqAndView]) # add to the main step+filter already_connected = [] @@ -218,7 +218,7 @@ def decisionTree_From_Chains(HLTNode, chains): for nstep in range(0, NSTEPS): finalDecisions.append([]) # list of final deciisons per step - stepCF_name = StepName(nstep) + stepCF_name = CFNaming.stepName(nstep) CFseq_list = [] step_decisions = [] @@ -246,7 +246,7 @@ def decisionTree_From_Chains(HLTNode, chains): log.debug("Connect to previous sequence through these filter inputs: %s" %str( filter_input) ) # get the filter: - filter_name = FilterName(chain_step.name) + filter_name = CFNaming.filterName(chain_step.name) (foundFilter, sfilter) = findFilter(filter_name, CFseq_list) if not foundFilter: sfilter = buildFilter(filter_name, filter_input) @@ -280,13 +280,13 @@ def decisionTree_From_Chains(HLTNode, chains): allSeq_list.append(CFseq_list) # then the reco step - recoNodeName = StepRecoNodeName(HLTNodeName, stepCF_name) + recoNodeName = CFNaming.stepRecoNodeName(HLTNodeName, stepCF_name) stepCF = createStepRecoNode(recoNodeName, CFseq_list, dump=False) HLTNode += stepCF # then the monitor summary - summary=makeSummary(StepSummaryName(stepCF_name), step_decisions) + summary=makeSummary(CFNaming.stepSummaryName(stepCF_name), step_decisions) HLTNode += summary @@ -409,7 +409,7 @@ def buildFilter(filter_name, filter_input): from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import RoRSequenceFilterNode sfilter = RoRSequenceFilterNode(name=filter_name) for i in filter_input: sfilter.addInput(i) - for i in filter_input: sfilter.addOutput(FilterOutName(filter_name, i)) + for i in filter_input: sfilter.addOutput(CFNaming.filterOutName(filter_name, i)) log.debug("Added inputs to filter: %s", sfilter.getInputList()) log.debug("Added outputs to filter: %s", sfilter.getOutputList()) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py index 9752808d27522de918f1b52ce6b318d8e4242cb5..3d10902136f8d0c13623b5917e440c7de851ecb5 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py @@ -1,3 +1,5 @@ +# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration + import sys, re, copy from AthenaCommon.Logging import logging from AthenaCommon.Constants import VERBOSE,INFO,DEBUG @@ -6,7 +8,7 @@ log.setLevel( VERBOSE ) logLevel=DEBUG from DecisionHandling.DecisionHandlingConf import RoRSeqFilter -from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponentsNaming import * +from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponentsNaming import CFNaming class Node(): """ base class representing one Alg + inputs + outputs, to be used to Draw dot diagrams and connect objects""" @@ -287,7 +289,7 @@ class MenuSequence(): """ Class to group reco sequences with the Hypo""" def __init__(self, Sequence, Maker, Hypo, HypoToolGen ): from AthenaCommon.AlgSequence import AthSequencer - self.name = MenuSequenceName(Hypo.name()) + self.name = CFNaming.menuSequenceName(Hypo.name()) self.sequence = Node( Alg=Sequence) self.maker = InputMakerNode( Alg = Maker ) self.hypoToolConf = HypoToolConf( HypoToolGen ) @@ -306,12 +308,12 @@ class MenuSequence(): #### Connect filter to the InputMaker self.maker.addInput(outfilter) - input_maker_output = InputMakerOutName(self.maker.Alg.name(),outfilter) + input_maker_output = CFNaming.inputMakerOutName(self.maker.Alg.name(),outfilter) self.maker.addOutput(input_maker_output) #### Add input/output Decision to Hypo self.hypo.setPreviousDecision( input_maker_output) - hypo_output = HypoAlgOutName(self.hypo.Alg.name(), input_maker_output) + hypo_output = CFNaming.hypoAlgOutName(self.hypo.Alg.name(), input_maker_output) self.hypo.addOutput(hypo_output) # needed for drawing @@ -462,7 +464,7 @@ class ChainStep: def makeCombo(self, Sequences): # For combo sequences, duplicate the sequence, the Hypo with differnt names and create the ComboHypoAlg - self.combo = ComboMaker(ComboHypoName(self.name)) + self.combo = ComboMaker(CFNaming.comboHypoName(self.name)) duplicatedHypos = [] for sequence in Sequences: oldhypo=sequence.hypo.Alg @@ -470,9 +472,9 @@ class ChainStep: ncopy=duplicatedHypos.count(oldhypo.name()) new_sequence=copy.deepcopy(sequence) - new_sequence.name = ComboSequenceCopyName(sequence.name,ncopy, self.name) + new_sequence.name = CFNaming.comboSequenceCopyName(sequence.name,ncopy, self.name) - newHypoAlgName = ComboHypoCopyName(oldhypo.name(),ncopy, self.name) + newHypoAlgName = CFNaming.comboHypoCopyName(oldhypo.name(),ncopy, self.name) new_hypoAlg=oldhypo.clone(newHypoAlgName) new_sequence.replaceHypoForCombo(new_hypoAlg) self.sequences.append(new_sequence) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponentsNaming.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponentsNaming.py index 58106680a4bda8e006bfc9af265d104c535d7897..ea1a2dc45db13a4adf1e83aa0e5e197432b6b357 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponentsNaming.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponentsNaming.py @@ -1,44 +1,62 @@ -RECO_POSTFIX = "_reco" -VIEW_POSTFIX = "_view" -FILTER_POSTFIX = "_filter" +# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration -def ReduceName(line): - splitLine = filter( lambda x: not ( x == "from" or x == "Filter"), line.split("_") ) # eliminate common words - splitLine =[ k[0] for k in filter( lambda x: not ( "Step" in x[0] or "Step" in x[1]), zip(splitLine, [""]+splitLine) )] # eliminate the word contaning Step and the one after - return "_".join(splitLine) +class CFNaming (): + """Class to collect all string manipulations on CF object names """ + + RECO_POSTFIX = "_reco" + VIEW_POSTFIX = "_view" + FILTER_POSTFIX = "_filter" -def StepName(nstep): - return "Step%i"%(nstep+1) + + @staticmethod + def reduceName(line): + splitLine = filter( lambda x: not ( x == "from" or x == "Filter"), line.split("_") ) # eliminate common words + splitLine =[ k[0] for k in filter( lambda x: not ( "Step" in x[0] or "Step" in x[1]), zip(splitLine, [""]+splitLine) )] # eliminate the word contaning Step and the one after + return "_".join(splitLine) -def MenuSequenceName(Hypo): - return ("S_" + Hypo) + @staticmethod + def stepName(nstep): + return "Step%i"%(nstep+1) -def FilterName(ChainStepName): - return ("Filter_" + ChainStepName) + @staticmethod + def menuSequenceName(Hypo): + return ("S_" + Hypo) -def FilterOutName(filter_name, filterIn): - return (filter_name + "_from_" + filterIn) + @staticmethod + def filterName(ChainStepName): + return ("Filter_" + ChainStepName) -def InputMakerOutName(IMname, filterOut): - return "%s_from_%s"%(IMname, filterOut) -# return (IMname + "_" + ReduceName(filterOut)) + @staticmethod + def filterOutName(filter_name, filterIn): + return (filter_name + "_from_" + filterIn) -def HypoAlgOutName(HypoName, HypoInput): - return (HypoName + "_" + ReduceName(HypoInput)) + @staticmethod + def inputMakerOutName(IMname, filterOut): + return "%s_from_%s"%(IMname, filterOut) + # return (IMname + "_" + reduceName(filterOut)) -def ComboHypoName(HypoName): - return ("ComboHypo_" + HypoName) + @staticmethod + def hypoAlgOutName(HypoName, HypoInput): + return (HypoName + "_" + CFNaming.reduceName(HypoInput)) -def ComboSequenceCopyName(SequenceName, ncopy, StepName): - return "%s%d_for_%s"%(SequenceName, ncopy, StepName) + @staticmethod + def comboHypoName(HypoName): + return ("ComboHypo_" + HypoName) -def ComboHypoCopyName(HypoName,ncopy,StepName): - return "%s%d_for_%s"%(HypoName,ncopy,StepName) + @staticmethod + def comboSequenceCopyName(SequenceName, ncopy, StepName): + return "%s%d_for_%s"%(SequenceName, ncopy, StepName) -def StepRecoNodeName(HLTNodeName, stepCF_name): - return (HLTNodeName + "_" + stepCF_name) + @staticmethod + def comboHypoCopyName(HypoName,ncopy,StepName): + return "%s%d_for_%s"%(HypoName,ncopy,StepName) -def StepSummaryName(stepCF_name): - return ("TriggerSummary"+ stepCF_name) + @staticmethod + def stepRecoNodeName(HLTNodeName, stepCFname): + return (HLTNodeName + "_" + stepCFname) + + @staticmethod + def stepSummaryName(stepCFname): + return ("TriggerSummary"+ stepCFname)