ATLAS Offline Software
Functions
TrigNavSlimmingMTConfig Namespace Reference

Functions

def isCollectionInInputPOOLFile (flags, checkString)
 
def getTrigNavSlimmingMTOnlineConfig (flags)
 
def TrigNavSlimmingMTDerivationCfg (flags, chainsFilter=[])
 
def AddRun3TrigNavSlimmingCollectionsToSlimmingHelper (slimmingHelper)
 
def TrigNavSlimmingMTCfg (flags)
 

Function Documentation

◆ AddRun3TrigNavSlimmingCollectionsToSlimmingHelper()

def TrigNavSlimmingMTConfig.AddRun3TrigNavSlimmingCollectionsToSlimmingHelper (   slimmingHelper)

Definition at line 97 of file TrigNavSlimmingMTConfig.py.

98  slimmingHelper.AppendToDictionary.update({'HLTNav_Summary_DAODSlimmed':'xAOD::TrigCompositeContainer','HLTNav_Summary_DAODSlimmedAux':'xAOD::TrigCompositeAuxContainer',
99  'HLTNav_RepackedFeatures_Particle':'xAOD::ParticleContainer','HLTNav_RepackedFeatures_ParticleAux':'xAOD::ParticleAuxContainer',
100  'HLTNav_RepackedFeatures_MET':'xAOD::TrigMissingETContainer','HLTNav_RepackedFeatures_METAux':'xAOD::TrigMissingETAuxContainer',
101  'HLTNav_RepackedROIs':'TrigRoiDescriptorCollection'})
102 
103  slimmingHelper.AllVariables += ['HLTNav_Summary_DAODSlimmed',
104  'HLTNav_RepackedFeatures_Particle',
105  'HLTNav_RepackedFeatures_MET',
106  'HLTNav_RepackedROIs']
107 
108 #
109 # Return an ComponentAccumulator which configures trigger navigation slimming during
110 # RAW->ALL, RAW->ESD or ESD->AOD (and MC equivalents)
111 #
112 # The collections should only be created once, if already present in an input POOL file then we do not re-create.
113 #
114 # The ESD level data contains a minimal slimming on top of the Online slimming.
115 # Some graph nodes and edges which were only of use online are removed.
116 # This level of slimming is designed to support T0 trigger monitoring.
117 #
118 # If the job is configured to produce AODFULL level output, then the ESD level graph is saved also to the AOD.
119 # Hence T0 trigger monitoring is also supported in AODFULL as it is in ESD.
120 #
121 # If the job is configured to produce AODSLIM level output, then the graph is additionally slimmed.
122 # The navigation graph is reduced to only refer to the final-feature and initial-ROI,
123 # all nodes from intermediate steps between these two are dropped.
124 # All branches corresponding to chains which failed the trigger are dropped.
125 # This is insufficient for T0 monitoring, but retains the information needed for trigger-matching for analyses.
126 # Unlike at DAOD level, in AODRun3_SMALL slimmed we do still keep reference to the actual trigger features
127 # (in case we needed to do offline trigger matching with more than the 4-vector, for example) and no chainsFilter
128 # is applied.
129 #

◆ getTrigNavSlimmingMTOnlineConfig()

def TrigNavSlimmingMTConfig.getTrigNavSlimmingMTOnlineConfig (   flags)

Definition at line 21 of file TrigNavSlimmingMTConfig.py.

22  onlineSlim = CompFactory.TrigNavSlimmingMTAlg('TrigNavSlimmingMTAlg_Online')
23  onlineSlim.TrigDecisionTool = "" # We do NOT filter on chains online, no additional tools/services required.
24  onlineSlim.OutputCollection = "HLTNav_Summary_OnlineSlimmed"
25  onlineSlim.PrimaryInputCollection = "HLTNav_Summary"
26  onlineSlim.KeepFailedBranched = True
27  onlineSlim.KeepOnlyFinalFeatures = False
28  onlineSlim.RemoveEmptySteps = False
29  onlineSlim.EdgesToDrop = []
30  onlineSlim.NodesToDrop = []
31  onlineSlim.ChainsFilter = []
32  onlineSlim.RuntimeValidation = flags.Trigger.doRuntimeNaviVal
33  return onlineSlim
34 
35 #
36 # Return an instance of the TrigNavSlimmingMTAlg to be used during AOD->DAOD
37 #
38 # Any additional DAOD->DAOD will not change the slimmed navigation collection.
39 #
40 # The navigation graph is reduced to only refer to the final-feature and initial-ROI,
41 # all nodes from intermediate steps between these two are dropped.
42 # All branches corresponding to chains which failed the trigger are dropped.
43 #
44 # A chainsFilter is optionally supplied. All graph nodes which are not active for at least one chain
45 # supplied on this filter are dropped. (Assuming a non-empty list was supplied).
46 #
47 # Trigger features are reduced to xAOD::Particle representation only, all their 4-vectors
48 # are packed into a single compact container. Separate containers are used to pack features
49 # which do not derive from IParticle, e.g. MET. The RoIs are similarly repacked.
50 #
51 # NOTE: Unlike all other levels, the content of the DAOD is not controlled by TrigEDMRun3.py
52 # NOTE: We therefore also need to run AddRun3TrigNavSlimmingCollectionsToSlimmingHelper to register the outputs to a SlimmingHelper
53 #

◆ isCollectionInInputPOOLFile()

def TrigNavSlimmingMTConfig.isCollectionInInputPOOLFile (   flags,
  checkString 
)

Definition at line 12 of file TrigNavSlimmingMTConfig.py.

12 def isCollectionInInputPOOLFile(flags, checkString):
13  return any(checkString in entry for entry in flags.Input.Collections)
14 
15 #
16 # Return an instance of the TrigNavSlimmingMTAlg to be used in an online environment, either at P1,
17 # during standalone execution of the trigger on data, or during the RDOtoRDOTrigger step for MC.
18 #
19 # Returns a single alg with no dependencies, no need to make this function return a ComponentAccumulator.
20 #

◆ TrigNavSlimmingMTCfg()

def TrigNavSlimmingMTConfig.TrigNavSlimmingMTCfg (   flags)

Definition at line 130 of file TrigNavSlimmingMTConfig.py.

130 def TrigNavSlimmingMTCfg(flags):
131 
132  log = logging.getLogger("TrigNavSlimmingMTCfg.py")
133 
134  from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
135  ca = ComponentAccumulator()
136 
137  if flags.Trigger.EDMVersion in [1, 2] and not flags.Trigger.doEDMVersionConversion:
138  log.debug("Not going to run Run 3 navigation slimming on a R2 input file as we are not setup to run the navigation conversion in this job")
139  return ca
140 
141  # We only run this if we are in a job which is decoding the HLT data in reconstruction, and if the slimming has not been switched off
142  if flags.Trigger.decodeHLT is False:
143  log.debug("Nothing to do as Trigger.decodeHLT is False")
144  return ca
145 
146  if flags.Trigger.doNavigationSlimming is False:
147  log.debug("Nothing to do as Trigger.doNavigationSlimming is False")
148  return ca
149 
150  doESD = flags.Output.doWriteESD
151  doAOD = flags.Output.doWriteAOD
152 
153  from TrigDecisionTool.TrigDecisionToolConfig import TrigDecisionToolCfg, getRun3NavigationContainerFromInput, possible_keys
154 
155  # NOTE: Derivations currently have a different configuration hook, see TrigNavSlimmingMTDerivationCfg above.
156 
157  inputCollection = getRun3NavigationContainerFromInput(flags)
158  doESDSlim = not isCollectionInInputPOOLFile(flags, "HLTNav_Summary_ESDSlimmed")
159  doAODSlim = not isCollectionInInputPOOLFile(flags, "HLTNav_Summary_AODSlimmed")
160 
161  if doESD and doESDSlim:
162  tdt = ca.getPrimaryAndMerge(TrigDecisionToolCfg(flags))
163  esdSlim = CompFactory.TrigNavSlimmingMTAlg('TrigNavSlimmingMTAlg_ESD')
164  esdSlim.TrigDecisionTool = tdt
165  esdSlim.OutputCollection = "HLTNav_Summary_ESDSlimmed"
166  esdSlim.PrimaryInputCollection = inputCollection
167  esdSlim.AllOutputContainers = possible_keys
168  esdSlim.KeepFailedBranched = True
169  esdSlim.KeepOnlyFinalFeatures = False
170  esdSlim.RemoveEmptySteps = False
171  esdSlim.RepackROIs = False
172  esdSlim.RepackFeatures = False
173  esdSlim.EdgesToDrop = ["view"]
174  esdSlim.NodesToDrop = ["F"]
175  esdSlim.ChainsFilter = []
176  ca.addEventAlgo(esdSlim)
177  #
178  collections = [f"xAOD::TrigCompositeContainer#{esdSlim.OutputCollection}", f"xAOD::TrigCompositeAuxContainer#{esdSlim.OutputCollection}Aux.-"]
179  from OutputStreamAthenaPool.OutputStreamConfig import addToESD
180  ca.merge(addToESD(flags, collections))
181  #
182  log.info("Producing ESD Slimmed Trigger Navigation Collection. Reading {} and writing {}".format(esdSlim.PrimaryInputCollection, esdSlim.OutputCollection))
183  if esdSlim.OutputCollection not in possible_keys:
184  log.error("Producing a collection {} which is not listed in 'possible_keys'! Add this here too.".format(esdSlim.OutputCollection))
185  else:
186  log.info("Will not create ESD Slimmed Trigger Navigation Collection in this job")
187 
188  if doAOD and doAODSlim:
189  tdt = ca.getPrimaryAndMerge(TrigDecisionToolCfg(flags))
190  aodSlim = CompFactory.TrigNavSlimmingMTAlg('TrigNavSlimmingMTAlg_AOD')
191  aodSlim.TrigDecisionTool = tdt
192  aodSlim.OutputCollection = "HLTNav_Summary_AODSlimmed"
193  aodSlim.PrimaryInputCollection = inputCollection
194  aodSlim.AllOutputContainers = possible_keys
195  aodSlim.RemoveEmptySteps = False
196  aodSlim.RepackROIs = False
197  aodSlim.RepackFeatures = False
198  aodSlim.EdgesToDrop = ["view"]
199  aodSlim.NodesToDrop = ["F"]
200  aodSlim.ChainsFilter = []
201  #
202  if flags.Trigger.AODEDMSet == "AODFULL":
203  aodSlim.KeepFailedBranched = True
204  aodSlim.KeepOnlyFinalFeatures = False
205  log.info("Producing AODFULL Slimmed Trigger Navigation Collection. Reading {} and writing {}".format(aodSlim.PrimaryInputCollection, aodSlim.OutputCollection))
206  else:
207  aodSlim.KeepFailedBranched = False
208  aodSlim.KeepOnlyFinalFeatures = True
209  log.info("Producing AODSLIM Trigger Navigation Collection. Reading {} and writing {}".format(aodSlim.PrimaryInputCollection, aodSlim.OutputCollection))
210  ca.addEventAlgo(aodSlim)
211  #
212  collections = [f"xAOD::TrigCompositeContainer#{aodSlim.OutputCollection}", f"xAOD::TrigCompositeAuxContainer#{aodSlim.OutputCollection}Aux.-"]
213  from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
214  ca.merge(addToAOD(flags, collections))
215  #
216  if aodSlim.OutputCollection not in possible_keys:
217  log.error("Producing a collection {} which is not listed in 'possible_keys'! Add this here too.".format(esdSlim.OutputCollection))
218  else:
219  log.info("Will not create AOD Slimmed Trigger Navigation Collection in this job")
220 
221  return ca

◆ TrigNavSlimmingMTDerivationCfg()

def TrigNavSlimmingMTConfig.TrigNavSlimmingMTDerivationCfg (   flags,
  chainsFilter = [] 
)

Definition at line 54 of file TrigNavSlimmingMTConfig.py.

54 def TrigNavSlimmingMTDerivationCfg(flags, chainsFilter = []):
55 
56  log = logging.getLogger("TrigNavSlimmingMTDerivationCfg.py")
57 
58  if isCollectionInInputPOOLFile(flags, "HLTNav_Summary_DAODSlimmed"):
59  log.info("Will not create a new DAOD Slimmed Trigger Navigation Collection in this job (already present in input file)")
60  from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
61  return ComponentAccumulator()
62 
63  from TrigDecisionTool.TrigDecisionToolConfig import TrigDecisionToolCfg, getRun3NavigationContainerFromInput, possible_keys
64  ca = TrigDecisionToolCfg(flags)
65  tdt = ca.getPrimary()
66 
67  inputCollection = getRun3NavigationContainerFromInput(flags)
68 
69  daodSlim = CompFactory.TrigNavSlimmingMTAlg('TrigNavSlimmingMTAlg_DAOD')
70  daodSlim.TrigDecisionTool = tdt
71  daodSlim.OutputCollection = "HLTNav_Summary_DAODSlimmed"
72  daodSlim.PrimaryInputCollection = inputCollection
73  daodSlim.AllOutputContainers = possible_keys
74  daodSlim.KeepFailedBranched = False
75  daodSlim.KeepOnlyFinalFeatures = True
76  daodSlim.RemoveEmptySteps = True
77  daodSlim.RepackROIs = False # CAUTION: There may be an ROI memory management issue which needs solving in order to enable this functionality (ATLASG-1662).
78  daodSlim.RepackROIsOutputCollection = "HLTNav_RepackedROIs"
79  daodSlim.RepackMET = True # To check: Is there any analysis need to have online-MET(s) in DAOD?
80  daodSlim.RepackFeatures = True
81 
82  daodSlim.RepackFeaturesOutputCollection_Particle = "HLTNav_RepackedFeatures_Particle"
83  daodSlim.RepackFeaturesOutputCollection_MET = "HLTNav_RepackedFeatures_MET"
84  daodSlim.EdgesToDrop = ["view"] # "view" element links, only useful online.
85  daodSlim.NodesToDrop = ["F", "CH"] # Filter nodes, only useful online. CH=ComboHypo nodes, not useful given we run here with KeepFailedBranched=False
86  daodSlim.ChainsFilter = chainsFilter
87  ca.addEventAlgo(daodSlim)
88 
89  log.info("Producing DAOD Slimmed Trigger Navigation Collection. Reading {} and writing {}".format(daodSlim.PrimaryInputCollection, daodSlim.OutputCollection))
90 
91  if daodSlim.OutputCollection not in possible_keys:
92  log.error("Producing a collection {} which is not listed in 'possible_keys'! Add this here too.".format(daodSlim.OutputCollection))
93 
94  return ca
95 
96 # Adds the branches to the slimming helper component accumulator
TrigNavSlimmingMTConfig.AddRun3TrigNavSlimmingCollectionsToSlimmingHelper
def AddRun3TrigNavSlimmingCollectionsToSlimmingHelper(slimmingHelper)
Definition: TrigNavSlimmingMTConfig.py:97
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.TrigDecisionToolConfig.getRun3NavigationContainerFromInput
def getRun3NavigationContainerFromInput(flags)
Definition: TrigDecisionToolConfig.py:75
python.OutputStreamConfig.addToESD
def addToESD(flags, itemOrList, **kwargs)
Definition: OutputStreamConfig.py:127
python.TriggerInterface.TrigDecisionToolCfg
def TrigDecisionToolCfg(flags)
Definition: TriggerInterface.py:14
TrigNavSlimmingMTConfig.getTrigNavSlimmingMTOnlineConfig
def getTrigNavSlimmingMTOnlineConfig(flags)
Definition: TrigNavSlimmingMTConfig.py:21
TrigNavSlimmingMTConfig.TrigNavSlimmingMTCfg
def TrigNavSlimmingMTCfg(flags)
Definition: TrigNavSlimmingMTConfig.py:130
python.OutputStreamConfig.addToAOD
def addToAOD(flags, itemOrList, **kwargs)
Definition: OutputStreamConfig.py:142
TrigNavSlimmingMTConfig.isCollectionInInputPOOLFile
def isCollectionInInputPOOLFile(flags, checkString)
Definition: TrigNavSlimmingMTConfig.py:12