ATLAS Offline Software
Loading...
Searching...
No Matches
TriggerMatchingCommonConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 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#====================================================================
11from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
12from AthenaConfiguration.ComponentFactory import CompFactory
13from 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
30 """Adds the trigger matching info to the slimming helper"""
31
32 slimmingHelper = kwargs['SlimmingHelper']
33 triggerList = kwargs['TriggerList']
34 containerPrefix = kwargs['OutputContainerPrefix']
35
36 outputContainers = [
37 "{0}{1}".format(containerPrefix, chain).replace(".", "_")
38 for chain in triggerList
39 ]
40
41 slimmingHelper.AllVariables += outputContainers
42 for cont in outputContainers:
43 slimmingHelper.AppendToDictionary.update(
44 {
45 cont: "xAOD::TrigCompositeContainer",
46 cont + "Aux": "AOD::AuxContainerBase!",
47 }
48 )
49
50def AddLegacyL1JetRoIsToSlimmingHelper(**kwargs):
51 slimmingHelper = kwargs['SlimmingHelper']
52 slimmingHelper.AppendToDictionary.update(
53 {
54 "LVL1JetRoIs":"xAOD::JetRoIContainer",
55 "LVL1JetRoIsAux":"xAOD::JetRoIAuxContainer"
56 }
57 )
58 slimmingHelper.AllVariables += ["LVL1JetRoIs"]
59
60def AddjFexRoIsToSlimmingHelper(**kwargs):
61 slimmingHelper = kwargs['SlimmingHelper']
62 slimmingHelper.AppendToDictionary.update(
63 {
64 "L1_jFexSRJetRoI":"xAOD::jFexSRJetRoIContainer",
65 "L1_jFexSRJetRoIAux":"xAOD::jFexSRJetRoIAuxContainer"
66 }
67 )
68 slimmingHelper.AllVariables += ["L1_jFexSRJetRoI"]
69
70
71def TriggerMatchingCommonRun2Cfg(flags, name, **kwargs):
72 """Configure the common trigger matching for run 2 DAODs using the run 2 analysis formalism (matching happens during derivation)"""
73
74 acc = ComponentAccumulator()
75
76 # Create trigger matching decorations
77 from DerivationFrameworkTrigger.TriggerMatchingToolConfig import TriggerMatchingToolCfg
78 PhysCommonTriggerMatchingTool = acc.getPrimaryAndMerge(TriggerMatchingToolCfg(flags, name=name, **kwargs))
79 CommonAugmentation = CompFactory.DerivationFramework.CommonAugmentation
80 outputContainerPrefix = kwargs['OutputContainerPrefix']
81 acc.addEventAlgo(CommonAugmentation(f"{outputContainerPrefix}TriggerMatchingKernel",
82 AugmentationTools=[PhysCommonTriggerMatchingTool]))
83
84 return(acc)
85
86def TriggerMatchingCommonRun2ToRun3Cfg(flags, **kwargs):
87 """Covert run 2 trigger navigation data these data into the run 3 formalism (matching happens from DAOD)"""
88
89 acc = ComponentAccumulator()
90
91 if not flags.Trigger.doEDMVersionConversion:
92 return(acc)
93
94 from AthenaCommon.Logging import logging
95 msg = logging.getLogger('TriggerMatchingCommonRun2ToRun3Cfg')
96 msg.info('doEDMVersionConversion is True, now scheduling conversion of Run 2 trigger navigation to Run 3')
97
98 from TrigNavTools.NavConverterConfig import NavConverterCfg
99
100 # And then run the run 3 slimming on the output of NavConverter
101 triggerList = kwargs['TriggerList']
102 acc.merge(NavConverterCfg(flags, chainsList = triggerList))
103 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import TrigNavSlimmingMTDerivationCfg
104 acc.merge(TrigNavSlimmingMTDerivationCfg(flags,chainsFilter=triggerList))
105
106 return(acc)
107
108
109def TriggerMatchingCommonRun3Cfg(flags, **kwargs):
110 """Configure the common trigger matching for run 3 DAODs using the run 3 formalism (matching happens from DAOD)"""
111
112 if flags.Trigger.EDMVersion != 3:
113 raise ValueError('This configuration can only be used for Run 3 trigger navigation')
114
115 triggerList = kwargs['TriggerList']
116
117 acc = ComponentAccumulator()
118
119 # Run 3 trigger navigation slimming proposal for in-DAOD trigger matching.
120 from TrigNavSlimmingMT.TrigNavSlimmingMTConfig import TrigNavSlimmingMTDerivationCfg
121 acc.merge(TrigNavSlimmingMTDerivationCfg(flags,chainsFilter=triggerList))
122
123 return(acc)
static std::string FindCalibFile(const std::string &logical_file_name)