Newer
Older
# Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration

Tomasz Bold
committed
from TriggerMenuMT.HLTMenuConfig.Electron.ElectronRecoSequences import l2CaloRecoCfg

Catrin Bernius
committed
from TriggerMenuMT.HLTMenuConfig.Photon.PhotonRecoSequences import l2PhotonRecoCfg, l2PhotonHypoCfg
from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import MenuSequenceCA, SelectionCA, ChainStep, Chain
from TriggerMenuMT.HLTMenuConfig.Menu.DictFromChainName import getChainMultFromDict
from TrigEDMConfig.TriggerEDMRun3 import recordable

Micael Verissimo De Araujo
committed
from TrigEgammaHypo.TrigEgammaFastCaloHypoTool import TrigEgammaFastCaloHypoToolFromDict
from TrigEgammaHypo.TrigEgammaFastPhotonHypoTool import TrigEgammaFastPhotonHypoToolFromDict
from AthenaConfiguration.AccumulatorCache import AccumulatorCache
import pprint
from AthenaCommon.Logging import logging
log = logging.getLogger(__name__)
@AccumulatorCache
def _fastCaloSeq(flags):
selAcc=SelectionCA('FastCaloPhoton')
selAcc.mergeReco(l2CaloRecoCfg(flags))
# this alg needs EventInfo decorated with the pileup info
from LumiBlockComps.LumiBlockMuWriterConfig import LumiBlockMuWriterCfg
selAcc.merge(LumiBlockMuWriterCfg(flags))

Tomasz Bold
committed
from TrigEgammaHypo.TrigEgammaFastCaloHypoTool import TrigEgammaFastCaloHypoAlgCfg
l2CaloHypo = TrigEgammaFastCaloHypoAlgCfg(flags,
name='ElectronEgammaFastCaloHypo',
CaloClusters=recordable('HLT_FastCaloEMClusters'))
selAcc.mergeHypo(l2CaloHypo)
fastCaloSequence = MenuSequenceCA(selAcc,
HypoToolGen=TrigEgammaFastCaloHypoToolFromDict)
return (selAcc , fastCaloSequence)
# TODO reuse electron calo setup (these two could share all algorithms)
def _fastCalo(flags, chainDict):
selAcc , fastCaloSequence = _fastCaloSeq(flags)
return ChainStep(name=selAcc.name, Sequences=[fastCaloSequence], chainDicts=[chainDict], multiplicity=getChainMultFromDict(chainDict))
@AccumulatorCache
def _fastPhotonSeq(flags):
selAcc=SelectionCA('FastPhoton')
selAcc.mergeReco(l2PhotonRecoCfg(flags))

Micael Verissimo De Araujo
committed
Photons = 'HLT_FastPhotons',
selAcc.addHypoAlgo(l2PhotonHypo)
l2PhotonSequence = MenuSequenceCA(selAcc,

Tomasz Bold
committed
HypoToolGen = TrigEgammaFastPhotonHypoToolFromDict)
return (selAcc , l2PhotonSequence)
def _fastPhoton(flags, chainDict):
selAcc , l2PhotonSequence = _fastPhotonSeq(flags)
return ChainStep(selAcc.name, Sequences=[l2PhotonSequence], chainDicts=[chainDict], multiplicity=getChainMultFromDict(chainDict) )
def generateChains(flags, chainDict):
l1Thresholds=[]
for part in chainDict['chainParts']:
l1Thresholds.append(part['L1threshold'])
log.debug('dictionary is: %s\n', pprint.pformat(chainDict))
chain = Chain(chainDict['chainName'], L1Thresholds=l1Thresholds, ChainSteps=[_fastCalo(flags, chainDict), _fastPhoton(flags, chainDict)])