10def TrigDecisionToolCfg(flags):
11 '''
12 @brief Configures and returns the TrigDecisionTool (TDT) for use in Athena-MT.
13 The TDT uses a Tool interface such that it can be used in either Athena or AnalysisBase releases.
14 The manages an MT-safe internal state, hence we should only have one instance of it configured in any job.
15 It is thus one of the few places where it OK to use a PublicTool in Athena-MT.
16
17 Obtain the configured public tool instance by calling getPrimary()
18 on the ComponentAccumulator returned by this function, or by calling
19 getPublicTool('TrigDecisionTool') or getPrimaryAndMerge()
20 on any downstream merged ComponentAccumulator.
21
22
23 When running in AnalysisBase, the tdt.TrigConfigTool='TrigConf::xAODConfigTool' should be used
24 in place of the TrigConf::xAODConfigSvc
25 '''
26 msg = logging.getLogger('TrigDecisionToolCfg')
27 from AthenaConfiguration.ComponentFactory import CompFactory
28 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
29 from AthenaConfiguration.Enums import Format, Project
30 acc = ComponentAccumulator()
31
32 from TrigConfxAOD.TrigConfxAODConfig import getxAODConfigSvc
33 cfgsvc = acc.getPrimaryAndMerge(getxAODConfigSvc(flags))
34
35 tdt = CompFactory.Trig.TrigDecisionTool('TrigDecisionTool')
36 tdt.TrigConfigSvc = cfgsvc
37 use_run3_format = flags.Trigger.EDMVersion >= 3
38 tdt.NavigationFormat = 'TrigComposite' if use_run3_format else 'TriggerElement'
39 tdt.HLTSummary = getRun3NavigationContainerFromInput(flags)
40
41 if flags.Input.Format is Format.BS and flags.Trigger.EDMVersion in [1, 2]:
42 tdt.UseAODDecision = True
43
44 if flags.Common.Project is not Project.AthAnalysis:
45
46
47 from TrigEDMConfig.TriggerEDM import EDMLibraries
48 nav = CompFactory.HLT.Navigation('Navigation')
49 nav.Dlls = [e for e in EDMLibraries if 'TPCnv' not in e]
50 tdt.Navigation = nav
51 acc.addPublicTool(nav)
52
53 acc.addPublicTool(tdt, primary=True)
54
55 msg.info('Configuring the TrigDecisionTool and xAODConfigSvc to use ConfigSource: %s, Run3NavigationFormat: %s, Run3NavigationSummaryCollection: %s',
56 'InFileMetadata' if flags.Trigger.triggerConfig == 'INFILE' else 'ConditionsAndDetStore',
57 str(use_run3_format),
58 tdt.HLTSummary)
59
60 return acc
61
62@AccumulatorCache