5 from TriggerMenuMT.HLT.Config.MenuComponents
import ChainStep
6 from AthenaCommon.Logging
import logging
7 from ..Jet.JetChainConfiguration
import JetChainConfiguration
8 from ..Photon.PrecisionPhotonTLAMenuSequenceConfig
import PhotonTLAMenuSequenceGenCfg
9 from ..Jet.JetTLASequenceConfig
import JetTLAMenuSequenceGenCfg
10 from ..Muon.MuonTLASequenceConfig
import MuonTLAMenuSequenceGenCfg
11 log = logging.getLogger(__name__)
16 Add one extra chain step for TLA Activities
20 log.debug(
"addTLAStep: processing chain: %s", chainDict[
'chainName'])
23 for cPart
in chainDict[
'chainParts']:
25 log.debug(
"addTLAStep: processing signature: %s", cPart[
'signature'] )
27 tlaSequencesList.append(functools.partial(getTLASignatureSequenceGenCfg, flags, chainDict=chainDict, chainPart=cPart))
29 log.debug(
"addTLAStep: About to add a step with: %d parallel sequences.", len(tlaSequencesList))
33 prevStep = chain.steps[-1]
34 stepName =
'TLAStep_{:s}'.
format(prevStep.name)
35 step = ChainStep(name = stepName,
36 Sequences = tlaSequencesList,
37 multiplicity = prevStep.multiplicity,
38 chainDicts = prevStep.stepDicts)
40 log.debug(
"addTLAStep: About to add step %s ", stepName)
41 chain.steps.append(step)
47 signature= chainPart[
'signature']
49 if signature ==
'Photon':
50 photonOutCollectionName =
"HLT_egamma_Photons"
53 elif signature ==
'Muon':
56 elif signature ==
'Jet' or signature ==
'Bjet':
59 jetChainConfig.prepareDataDependencies(flags)
60 jetInputCollectionName = jetChainConfig.jetName
61 log.debug(f
"TLA jet input collection = {jetInputCollectionName}")
69 if jetChainConfig.recoDict[
"trkopt"] ==
"notrk": attachBtag =
False
74 tlaSteps = [s
for s
in chainConfig.steps
if 'TLAStep' in s.name
and 'EmptyPEBAlign' not in s.name
and 'EmptyTLAAlign' not in s.name
and 'PEBInfoWriter' not in s.name]
75 if len(tlaSteps) == 0:
77 elif len(tlaSteps) > 1:
78 raise RuntimeError(
'Multiple TLA steps in one chain are not supported. ', len(tlaSteps),
' were found in chain ' + chainConfig.name)
84 all_tla_chain_configs = [ch
for ch
in chain_configs
if 'PhysicsTLA' in chain_dicts[ch.name][
'eventBuildType']]
86 def getTLAStepPosition(chainConfig):
88 log.debug(
'getTLAStepPosition found step %s and return %d',tlaStep,chainConfig.steps.index(tlaStep) + 1)
89 return chainConfig.steps.index(tlaStep) + 1
92 maxTLAStepPosition = 0
93 for chain
in all_tla_chain_configs:
94 tlaStepPosition = getTLAStepPosition(chain)
95 if tlaStepPosition > maxTLAStepPosition:
96 maxTLAStepPosition = tlaStepPosition
98 log.debug(
'maxTLAStepPosition=%d',maxTLAStepPosition)
101 for chain
in all_tla_chain_configs:
102 tlaStepPosition = getTLAStepPosition(chain)
103 log.debug(
'Aligning TLA step at step %d for chain %s ', tlaStepPosition, chain.name)
104 if tlaStepPosition < maxTLAStepPosition:
105 numStepsNeeded = maxTLAStepPosition - tlaStepPosition
106 log.debug(
'Aligning TLA step for chain %s by adding %d empty steps', chain.name, numStepsNeeded)
107 chain.insertEmptySteps(
'EmptyTLAAlign', numStepsNeeded, tlaStepPosition-1)
108 chain.numberAllSteps()