ATLAS Offline Software
TrigDecisionToolConfig.py
Go to the documentation of this file.
1 #
2 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 #
4 
5 from AthenaConfiguration.AccumulatorCache import AccumulatorCache
6 from AthenaCommon.Logging import logging
7 
8 
9 @AccumulatorCache
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 # or flags.Trigger.doEDMVersionConversion (to be added when this is working)
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  # Full Athena
46  # This pre-loads libraries required to read the run 2 trigger navigation
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
64  from TrigDecisionTool.TrigDecisionToolHelpers import (
65  getRun3NavigationContainerFromInput_forAnalysisBase)
67 
68 
69 if __name__ == '__main__':
70  from AthenaConfiguration.AllConfigFlags import initConfigFlags
71  from AthenaConfiguration.TestDefaults import defaultTestFiles
72  import sys
73 
74  flags = initConfigFlags()
75  if '--RAWRUN2' in sys.argv:
76  flags.Input.Files = defaultTestFiles.RAW_RUN2
77  else:
78  flags.Input.Files = defaultTestFiles.AOD_RUN2_DATA
79  #TODO expand the test scope Run3 AODs and RAWs
80 
81  flags.lock()
82  acc = TrigDecisionToolCfg(flags)
83  acc.printConfig(withDetails=True, summariseProps=True, prefix='UnitTest')
84  acc.wasMerged()
85  # TODO possibly add EDM printing alg using the TDT
86 
python.TrigDecisionToolHelpers.getRun3NavigationContainerFromInput_forAnalysisBase
def getRun3NavigationContainerFromInput_forAnalysisBase(flags)
Definition: TrigDecisionToolHelpers.py:22
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
TrigConfxAODConfig.getxAODConfigSvc
def getxAODConfigSvc(flags)
Definition: TrigConfxAODConfig.py:5
python.TrigDecisionToolConfig.getRun3NavigationContainerFromInput
def getRun3NavigationContainerFromInput(flags)
Definition: TrigDecisionToolConfig.py:63
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
str
Definition: BTagTrackIpAccessor.cxx:11
python.TrigDecisionToolConfig.TrigDecisionToolCfg
def TrigDecisionToolCfg(flags)
Definition: TrigDecisionToolConfig.py:10