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 from ..Config.MenuComponents
import EmptyMenuSequence
12 log = logging.getLogger(__name__)
17 Add one extra chain step for TLA Activities
21 log.debug(
"addTLAStep: processing chain: %s", chainDict[
'chainName'])
24 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 SequenceGens = tlaSequencesList,
37 chainDicts = prevStep.stepDicts)
39 log.debug(
"addTLAStep: About to add step %s ", stepName)
40 chain.steps.append(step)
46 signature= chainPart[
'signature']
48 if signature ==
'Photon':
49 photonOutCollectionName =
"HLT_egamma_Photons"
52 elif signature ==
'Muon':
55 elif signature ==
'Jet':
58 jetChainConfig.prepareDataDependencies(flags)
59 jetInputCollectionName = jetChainConfig.jetName
60 log.debug(f
"TLA jet input collection = {jetInputCollectionName}")
62 elif signature ==
'MET':
63 return EmptyMenuSequence(
"EmptyMETTLA")
66 raise ValueError(f
"Unsupported TLA signature: No TLA sequence specified for signature {signature}.")
70 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]
71 if len(tlaSteps) == 0:
73 elif len(tlaSteps) > 1:
74 raise RuntimeError(
'Multiple TLA steps in one chain are not supported. ', len(tlaSteps),
' were found in chain ' + chainConfig.name)
80 TLAEventBuildTypes = (
'PhysicsTLA',
'FTagPEBTLA',
'EgammaPEBTLA',
'DarkJetPEBTLA')
81 all_tla_chain_configs = [ch
for ch
in chain_configs
if any(ebtype
in chain_dicts[ch.name][
'eventBuildType']
for ebtype
in TLAEventBuildTypes)]
83 def getTLAStepPosition(chainConfig):
85 log.debug(
'getTLAStepPosition found step %s and return %d',tlaStep,chainConfig.steps.index(tlaStep) + 1)
86 return chainConfig.steps.index(tlaStep) + 1
89 maxTLAStepPosition = 0
90 for chain
in all_tla_chain_configs:
91 tlaStepPosition = getTLAStepPosition(chain)
92 if tlaStepPosition > maxTLAStepPosition:
93 maxTLAStepPosition = tlaStepPosition
95 log.debug(
'maxTLAStepPosition=%d',maxTLAStepPosition)
98 for chain
in all_tla_chain_configs:
99 tlaStepPosition = getTLAStepPosition(chain)
100 log.debug(
'Aligning TLA step at step %d for chain %s ', tlaStepPosition, chain.name)
101 if tlaStepPosition < maxTLAStepPosition:
102 numStepsNeeded = maxTLAStepPosition - tlaStepPosition
103 log.debug(
'Aligning TLA step for chain %s by adding %d empty steps', chain.name, numStepsNeeded)
104 chain.insertEmptySteps(
'EmptyTLAAlign', numStepsNeeded, tlaStepPosition-1)
105 chain.numberAllSteps()