ATLAS Offline Software
TriggerMatchingCommonConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
2 
3 #====================================================================
4 # TriggerMatchingCommonConfig.py
5 # This defines the common trigger matching shared by PHYS and PHYSLITE
6 # Using it avoids name clashes when running in trains
7 # In principle it can also be used by other formats who want to take
8 # advantage of PHYS/PHYSLITE containers
9 # Component accumulator version
10 #====================================================================
11 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
12 from AthenaConfiguration.ComponentFactory import CompFactory
13 from PathResolver import PathResolver
14 
16  """Read a text file containing a list of triggers
17 
18  Returns the list of triggers held in the file
19  """
20  triggers = []
21  with open(PathResolver.FindCalibFile(fname)) as fp:
22  for line in fp:
23  line = line.strip()
24  if line == "" or line.startswith("#"):
25  continue
26  triggers.append(line)
27  return triggers
28 
29 
31  """Adds the trigger matching info to the slimming helper"""
32 
33  slimmingHelper = kwargs['SlimmingHelper']
34  triggerList = kwargs['TriggerList']
35  containerPrefix = kwargs['OutputContainerPrefix']
36 
37  outputContainers = [
38  "{0}{1}".format(containerPrefix, chain).replace(".", "_")
39  for chain in triggerList
40  ]
41 
42  slimmingHelper.AllVariables += outputContainers
43  for cont in outputContainers:
44  slimmingHelper.AppendToDictionary.update(
45  {
46  cont: "xAOD::TrigCompositeContainer",
47  cont + "Aux": "AOD::AuxContainerBase!",
48  }
49  )
50 
51 
52 def TriggerMatchingCommonRun2Cfg(ConfigFlags, name, **kwargs):
53  """Configure the common trigger matching for run 2 DAODs using the run 2 analysis formalism (matching happens during derivation)"""
54 
55  acc = ComponentAccumulator()
56 
57  # Create trigger matching decorations
58  from DerivationFrameworkTrigger.TriggerMatchingToolConfig import TriggerMatchingToolCfg
59  PhysCommonTriggerMatchingTool = acc.getPrimaryAndMerge(TriggerMatchingToolCfg(ConfigFlags, name=name, **kwargs))
60  CommonAugmentation = CompFactory.DerivationFramework.CommonAugmentation
61  outputContainerPrefix = kwargs['OutputContainerPrefix']
62  acc.addEventAlgo(CommonAugmentation(f"{outputContainerPrefix}TriggerMatchingKernel",
63  AugmentationTools=[PhysCommonTriggerMatchingTool]))
64 
65  return(acc)
66 
67 def TriggerMatchingCommonRun2ToRun3Cfg(ConfigFlags, **kwargs):
68  """Covert run 2 trigger navigation data these data into the run 3 formalism (matching happens from DAOD)"""
69 
70  acc = ComponentAccumulator()
71 
72  if not ConfigFlags.Trigger.doEDMVersionConversion:
73  return(acc)
74 
75  from AthenaCommon.Logging import logging
76  msg = logging.getLogger('TriggerMatchingCommonRun2ToRun3Cfg')
77  msg.info('doEDMVersionConversion is True, now scheduling conversion of Run 2 trigger navigation to Run 3')
78 
79  from TrigNavTools.NavConverterConfig import NavConverterCfg
80 
81  # And then run the run 3 slimming on the output of NavConverter
82  triggerList = kwargs['TriggerList']
83  acc.merge(NavConverterCfg(ConfigFlags, chainsList = triggerList))
84  from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import TrigNavSlimmingMTDerivationCfg
85  acc.merge(TrigNavSlimmingMTDerivationCfg(ConfigFlags,chainsFilter=triggerList))
86 
87  return(acc)
88 
89 
90 def TriggerMatchingCommonRun3Cfg(ConfigFlags, **kwargs):
91  """Configure the common trigger matching for run 3 DAODs using the run 3 formalism (matching happens from DAOD)"""
92 
93  if ConfigFlags.Trigger.EDMVersion != 3:
94  raise ValueError('This configuration can only be used for Run 3 trigger navigation')
95 
96  triggerList = kwargs['TriggerList']
97 
98  acc = ComponentAccumulator()
99 
100  # Run 3 trigger navigation slimming proposal for in-DAOD trigger matching.
101  from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import TrigNavSlimmingMTDerivationCfg
102  acc.merge(TrigNavSlimmingMTDerivationCfg(ConfigFlags,chainsFilter=triggerList))
103 
104  return(acc)
105 
106 
replace
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition: hcg.cxx:307
PathResolver::FindCalibFile
static std::string FindCalibFile(const std::string &logical_file_name)
Definition: PathResolver.h:108
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
vtune_athena.format
format
Definition: vtune_athena.py:14
TrigNavSlimmingMTConfig.TrigNavSlimmingMTDerivationCfg
def TrigNavSlimmingMTDerivationCfg(flags, chainsFilter=[])
Definition: TrigNavSlimmingMTConfig.py:54
python.TriggerMatchingCommonConfig.AddRun2TriggerMatchingToSlimmingHelper
def AddRun2TriggerMatchingToSlimmingHelper(**kwargs)
Definition: TriggerMatchingCommonConfig.py:30
python.TriggerMatchingCommonConfig.TriggerMatchingCommonRun3Cfg
def TriggerMatchingCommonRun3Cfg(ConfigFlags, **kwargs)
Definition: TriggerMatchingCommonConfig.py:90
python.TriggerMatchingCommonConfig.TriggerMatchingCommonRun2ToRun3Cfg
def TriggerMatchingCommonRun2ToRun3Cfg(ConfigFlags, **kwargs)
Definition: TriggerMatchingCommonConfig.py:67
TriggerMatchingToolConfig.TriggerMatchingToolCfg
def TriggerMatchingToolCfg(ConfigFlags, name, UseTypedScoringTool=False, **kwargs)
Definition: PhysicsAnalysis/DerivationFramework/DerivationFrameworkTrigger/python/TriggerMatchingToolConfig.py:19
python.TriggerMatchingCommonConfig.TriggerMatchingCommonRun2Cfg
def TriggerMatchingCommonRun2Cfg(ConfigFlags, name, **kwargs)
Definition: TriggerMatchingCommonConfig.py:52
python.TriggerMatchingCommonConfig.read_trig_list_file
def read_trig_list_file(fname)
Definition: TriggerMatchingCommonConfig.py:15
Trk::open
@ open
Definition: BinningType.h:40
python.NavConverterConfig.NavConverterCfg
def NavConverterCfg(flags, chainsList=[], runTheChecker=False)
Definition: NavConverterConfig.py:12