def __init__(self, name='L1Decoder', *args, **kwargs): super(L1Decoder, self).__init__(name, *args, **kwargs) from TriggerJobOpts.TriggerFlags import TriggerFlags # CTP unpacker ctpUnpacker = CompFactory.CTPUnpackingTool() self.ctpUnpacker = ctpUnpacker from TrigEDMConfig.TriggerEDMRun3 import recordable self.roiUnpackers += [ CompFactory.FSRoIsUnpackingTool("FSRoIsUnpackingTool", Decisions=mapThresholdToL1DecisionCollection("FSNOSEED"), OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("FSNOSEED") )) ] # EM unpacker if TriggerFlags.doID() or TriggerFlags.doCalo(): unpackers, rerunUnpackers = createCaloRoIUnpackers() self.roiUnpackers += unpackers self.rerunRoiUnpackers += rerunUnpackers # MU unpacker if TriggerFlags.doMuon(): unpackers, rerunUnpackers = createMuonRoIUnpackers() self.roiUnpackers += unpackers self.rerunRoiUnpackers += rerunUnpackers self.prescaler = createPrescalingTool() from AthenaConfiguration.AllConfigFlags import ConfigFlags as flags self.DoCostMonitoring = flags.Trigger.CostMonitoring.doCostMonitoring self.CostMonitoringChain = flags.Trigger.CostMonitoring.chain self.L1DecoderSummaryKey = "L1DecoderSummary"
def L1DecoderCfg(flags, seqName = None): from AthenaCommon.Configurable import Configurable Configurable.configurableRun3Behavior += 1 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator #from L1Decoder.L1DecoderConf import L1Decoder, CTPUnpackingTool from L1Decoder.L1DecoderMonitoring import CTPUnpackingMonitoring acc = ComponentAccumulator(sequenceName = seqName) decoderAlg = CompFactory.L1Decoder() decoderAlg.RoIBResult = "RoIBResult" if flags.Trigger.enableL1CaloLegacy or not flags.Trigger.enableL1Phase1 else "" decoderAlg.L1TriggerResult = "L1TriggerResult" if flags.Trigger.enableL1Phase1 else "" decoderAlg.L1DecoderSummaryKey = "L1DecoderSummary" # Transient, consumed by DecisionSummaryMakerAlg decoderAlg.ctpUnpacker = CompFactory.CTPUnpackingTool( ForceEnableAllChains = flags.Trigger.L1Decoder.forceEnableAllChains, MonTool = CTPUnpackingMonitoring(512, 200), UseNewConfig = flags.Trigger.readLVL1FromJSON ) #Transient bytestream if flags.Input.Format == "POOL": transTypeKey = ("TransientBSOutType","StoreGateSvc+TransientBSOutKey") decoderAlg.ExtraInputs += [transTypeKey] from TrigEDMConfig.TriggerEDMRun3 import recordable decoderAlg.roiUnpackers += [ CompFactory.FSRoIsUnpackingTool("FSRoIsUnpackingTool", Decisions=mapThresholdToL1DecisionCollection("FSNOSEED"), OutputTrigRoIs = recordable(mapThresholdToL1RoICollection("FSNOSEED")) ) ] if flags.Trigger.doCalo: unpackers, rerunUnpackers = createCaloRoIUnpackers() decoderAlg.roiUnpackers += unpackers decoderAlg.rerunRoiUnpackers += rerunUnpackers if flags.Trigger.doMuon: unpackers, rerunUnpackers = createMuonRoIUnpackers() decoderAlg.roiUnpackers += unpackers decoderAlg.rerunRoiUnpackers += rerunUnpackers decoderAlg.prescaler = createPrescalingTool() decoderAlg.DoCostMonitoring = flags.Trigger.CostMonitoring.doCostMonitoring decoderAlg.CostMonitoringChain = flags.Trigger.CostMonitoring.chain acc.addEventAlgo( decoderAlg, sequenceName = seqName ) if flags.Input.Format == "BS": # Add the algorithm decoding ByteStream into xAOD (Run-3 L1) and/or RoIBResult (legacy L1) from TrigT1ResultByteStream.TrigT1ResultByteStreamConfig import L1TriggerByteStreamDecoderCfg acc.merge( L1TriggerByteStreamDecoderCfg(flags), sequenceName = seqName ) # Add the algorithm creating L1TriggerResult which is the input to L1Decoder (Run-3 L1) if flags.Trigger.enableL1Phase1: acc.addEventAlgo( getL1TriggerResultMaker(), sequenceName = seqName ) from TrigConfigSvc.TrigConfigSvcCfg import TrigConfigSvcCfg, HLTPrescaleCondAlgCfg acc.merge( TrigConfigSvcCfg( flags ) ) acc.merge( HLTPrescaleCondAlgCfg( flags ) ) Configurable.configurableRun3Behavior -= 1 return acc