ATLAS Offline Software
Loading...
Searching...
No Matches
TrigTauRecToolsConfig Namespace Reference

Functions

 trigTauVertexFinderCfg (flags, name='')
 trigTauTrackFinderCfg (flags, name='', TrackParticlesContainer='')
 tauVertexVariablesCfg (flags, name='')
 trigTauJetLVNNEvaluatorCfg (flags, tau_id='', use_taujet_rnnscore=True)
 trigTauJetONNXEvaluatorCfg (flags, str tau_id, str tau_container='', str hits_decoration_container='', str|None ptau_sfx=None, str|None pjet_sfx=None)
 trigTauWPDecoratorRNNCfg (flags, str tau_id, str precision_seq_name)
 trigTauWPDecoratorCfg (flags, str tau_id, str precision_seq_name, str tauContainerName)

Function Documentation

◆ tauVertexVariablesCfg()

TrigTauRecToolsConfig.tauVertexVariablesCfg ( flags,
name = '' )
Vertex variables calculation

Definition at line 55 of file TrigTauRecToolsConfig.py.

55def tauVertexVariablesCfg(flags, name=''):
56 '''Vertex variables calculation'''
57 acc = ComponentAccumulator()
58
59 from TrkConfig.TrkVertexFittersConfig import TauAdaptiveVertexFitterCfg
60 TauAdaptiveVertexFitter = acc.popToolsAndMerge(TauAdaptiveVertexFitterCfg(flags))
61
62 from TrkConfig.TrkVertexSeedFinderToolsConfig import CrossDistancesSeedFinderCfg
63 CrossDistancesSeedFinder = acc.popToolsAndMerge(CrossDistancesSeedFinderCfg(flags))
64
65 acc.setPrivateTools(CompFactory.TauVertexVariables(
66 name = name,
67 VertexFitter = TauAdaptiveVertexFitter,
68 SeedFinder = CrossDistancesSeedFinder,
69 ))
70
71 return acc
72

◆ trigTauJetLVNNEvaluatorCfg()

TrigTauRecToolsConfig.trigTauJetLVNNEvaluatorCfg ( flags,
tau_id = '',
use_taujet_rnnscore = True )
TauJet identification inference based on LVNN models, for RNNs and DeepSets

Definition at line 73 of file TrigTauRecToolsConfig.py.

73def trigTauJetLVNNEvaluatorCfg(flags, tau_id='', use_taujet_rnnscore=True):
74 '''TauJet identification inference based on LVNN models, for RNNs and DeepSets'''
75 acc = ComponentAccumulator()
76
77 try: id_flags = getattr(flags.Trigger.Offline.Tau, tau_id)
78 except NameError: raise ValueError(f'Invalid LVNN (RNN, DeepSet) TauID configuration: {tau_id}')
79
80 # For legacy mediumRNN/tightRNN_tracktwoMVA/tracktwoLLP/trackLRT chains
81 output_variable = 'RNNJetScore' if use_taujet_rnnscore else f'{tau_id}_Score'
82
83 # This is to prevent clashes between the same ID running over the legacy chains, and the new decorator-based chains
84 sfx = '_RNNJetScore' if use_taujet_rnnscore else ''
85
86 acc.setPrivateTools(CompFactory.TauJetRNNEvaluator(
87 name = f'TrigTau_TauJetLVNNEvaluator_{tau_id}{sfx}',
88 useTRT = flags.Detector.EnableTRT,
89
90 # Network config:
91 NetworkFile0P = id_flags.NetworkConfig[0],
92 NetworkFile1P = id_flags.NetworkConfig[1],
93 NetworkFile3P = id_flags.NetworkConfig[2],
94 InputLayerScalar = 'scalar',
95 InputLayerTracks = 'tracks',
96 InputLayerClusters = 'clusters',
97 OutputLayer = 'rnnid_output',
98 OutputNode = 'sig_prob',
99
100 # Inputs:
101 MaxTracks = id_flags.MaxTracks,
102 MaxClusters = id_flags.MaxClusters,
103 MaxClusterDR = 1.0,
104 VertexCorrection = False,
105 TrackClassification = False,
106
107 # Decorated TauJet variable names:
108 OutputVarname = output_variable,
109 ))
110
111 return acc
112

◆ trigTauJetONNXEvaluatorCfg()

TrigTauRecToolsConfig.trigTauJetONNXEvaluatorCfg ( flags,
str tau_id,
str tau_container = '',
str hits_decoration_container = '',
str | None ptau_sfx = None,
str | None pjet_sfx = None )
TauJet identification inference based on ONNX models, for GNNs, transformers, etc...

Definition at line 113 of file TrigTauRecToolsConfig.py.

120):
121 '''TauJet identification inference based on ONNX models, for GNNs, transformers, etc...'''
122 acc = ComponentAccumulator()
123
124 try: id_flags = getattr(flags.Trigger.Offline.Tau, tau_id)
125 except NameError: raise ValueError(f'Invalid ONNX TauID configuration: {tau_id}')
126
127 if isinstance(id_flags.ONNXConfig, str):
128 network_config = {'NetworkFileInclusive': id_flags.ONNXConfig}
129 elif isinstance(id_flags.ONNXConfig, (list, tuple)) and len(id_flags.ONNXConfig) == 3:
130 network_config = {
131 'NetworkFile0P': id_flags.ONNXConfig[0],
132 'NetworkFile1P': id_flags.ONNXConfig[1],
133 'NetworkFile3P': id_flags.ONNXConfig[2],
134 }
135 else:
136 raise ValueError(f'Invalid {tau_id} ONNX network config file')
137
138 name = f'TrigTau_TauJetONNXEvaluator_{tau_id}'
139 if tau_container: name += f'_{tau_container}'
140 if hits_decoration_container: name += f'_{hits_decoration_container}'
141
142 ptau_decor = id_flags.OutputPTau if hasattr(id_flags, 'OutputPTau') else f'{tau_id}_ProbTau'
143 if ptau_sfx: ptau_decor += f'_{ptau_sfx}'
144 pjet_decor = id_flags.OutputPJet if hasattr(id_flags, 'OutputPJet') else f'{tau_id}_ProbJet'
145 if pjet_sfx: pjet_decor += f'_{pjet_sfx}'
146
147 acc.setPrivateTools(CompFactory.TauGNNEvaluator(
148 name = name,
149 useTRT = flags.Detector.EnableTRT,
150
151 # Network config:
152 **network_config,
153 InputLayerScalar = 'tau_vars',
154 InputLayerTracks = 'track_vars',
155 InputLayerClusters = 'cluster_vars',
156 InputLayerHits = 'hit_vars',
157 NodeNameTau = id_flags.NodeNameTau if hasattr(id_flags, 'NodeNameTau') else 'pTau',
158 NodeNameJet = id_flags.NodeNameJet if hasattr(id_flags, 'NodeNameJet') else 'pJet',
159
160 # Inputs:
161 MaxTracks = id_flags.MaxTracks if hasattr(id_flags, 'MaxTracks') else 0,
162 MaxClusters = id_flags.MaxClusters if hasattr(id_flags, 'MaxClusters') else 0,
163 MaxClusterDR = 1.0,
164 MaxHits = id_flags.MaxHits if hasattr(id_flags, 'MaxHits') else 0,
165 TauContainerName = tau_container,
166 HitsHandleKey = hits_decoration_container,
167 VertexCorrection = False,
168 TrackClassification = False,
169
170 # Decorated TauJet variable names:
171 OutputVarname = f'{tau_id}_Score',
172 OutputDiscriminant = id_flags.OutputDiscriminant,
173 OutputPTau = ptau_decor,
174 OutputPJet = pjet_decor,
175
176 # Tau prongness selection
177 MinProngTrackPt = id_flags.MinProngTrackPt if hasattr(id_flags, 'MinProngTrackPt') else 0,
178 ))
179
180 return acc
181

◆ trigTauTrackFinderCfg()

TrigTauRecToolsConfig.trigTauTrackFinderCfg ( flags,
name = '',
TrackParticlesContainer = '' )
Tau track association

Definition at line 22 of file TrigTauRecToolsConfig.py.

22def trigTauTrackFinderCfg(flags, name='', TrackParticlesContainer=''):
23 '''Tau track association'''
24 acc = ComponentAccumulator()
25
26 from TrkConfig.TrkVertexFitterUtilsConfig import AtlasTrackToVertexIPEstimatorCfg
27 AtlasTrackToVertexIPEstimator = acc.popToolsAndMerge(AtlasTrackToVertexIPEstimatorCfg(flags))
28
29 from TrackToVertex.TrackToVertexConfig import TrackToVertexCfg
30 TrackToVertexTool = acc.popToolsAndMerge(TrackToVertexCfg(flags))
31
32 from TrackToCalo.TrackToCaloConfig import ParticleCaloExtensionToolCfg
33 ParticleCaloExtensionTool = acc.popToolsAndMerge(ParticleCaloExtensionToolCfg(flags))
34
35 from InDetConfig.InDetTrackSelectorToolConfig import TrigTauInDetTrackSelectorToolCfg
36 TrigTauInDetTrackSelectorTool = acc.popToolsAndMerge(TrigTauInDetTrackSelectorToolCfg(flags))
37
38 acc.setPrivateTools(CompFactory.TauTrackFinder(
39 name = name,
40 MaxJetDrTau = 0.2,
41 MaxJetDrWide = 0.4,
42 TrackSelectorToolTau = TrigTauInDetTrackSelectorTool,
43 TrackToVertexTool = TrackToVertexTool,
44 Key_trackPartInputContainer = TrackParticlesContainer,
45 maxDeltaZ0wrtLeadTrk = 0.75*mm,
46 removeTracksOutsideZ0wrtLeadTrk = True,
47 ParticleCaloExtensionTool = ParticleCaloExtensionTool,
48 BypassExtrapolator = True,
49 tauParticleCache = "",
50 TrackToVertexIPEstimator = AtlasTrackToVertexIPEstimator,
51 ))
52
53 return acc
54

◆ trigTauVertexFinderCfg()

TrigTauRecToolsConfig.trigTauVertexFinderCfg ( flags,
name = '' )
Algorithm that overwrites numTrack() and charge() of tauJets in container

Definition at line 7 of file TrigTauRecToolsConfig.py.

7def trigTauVertexFinderCfg(flags, name=''):
8 '''Algorithm that overwrites numTrack() and charge() of tauJets in container'''
9 acc = ComponentAccumulator()
10
11 acc.setPrivateTools(CompFactory.TauVertexFinder(
12 name = name,
13 UseTJVA = False,
14 AssociatedTracks = 'GhostTrack',
15 InDetTrackSelectionToolForTJVA = '',
16 Key_vertexInputContainer = '',
17 TVATool = '',
18 ))
19
20 return acc
21

◆ trigTauWPDecoratorCfg()

TrigTauRecToolsConfig.trigTauWPDecoratorCfg ( flags,
str tau_id,
str precision_seq_name,
str tauContainerName )
TauJet signal transformed score and ID WPs decorator tool

Definition at line 222 of file TrigTauRecToolsConfig.py.

222def trigTauWPDecoratorCfg(flags, tau_id: str, precision_seq_name: str, tauContainerName: str):
223 '''TauJet signal transformed score and ID WPs decorator tool'''
224 acc = ComponentAccumulator()
225
226 try: id_flags = getattr(flags.Trigger.Offline.Tau, tau_id)
227 except NameError: raise ValueError(f'Invalid TauID configuration: {tau_id}')
228
229 if isinstance(id_flags.ScoreFlatteningConfig, str):
230 cfg = {
231 'flatteningFile0Prong': id_flags.ScoreFlatteningConfig,
232 'flatteningFile1Prong': id_flags.ScoreFlatteningConfig,
233 'flatteningFile3Prong': id_flags.ScoreFlatteningConfig,
234 }
235 elif isinstance(id_flags.ScoreFlatteningConfig, (list, tuple)) and len(id_flags.ScoreFlatteningConfig) == 3:
236 cfg = {
237 'flatteningFile0Prong': id_flags.ScoreFlatteningConfig[0],
238 'flatteningFile1Prong': id_flags.ScoreFlatteningConfig[1],
239 'flatteningFile3Prong': id_flags.ScoreFlatteningConfig[2],
240 }
241 else:
242 raise ValueError(f'Invalid {tau_id} WP decorator flattening config')
243
244
245 acc.setPrivateTools(CompFactory.TauWPDecorator(
246 name=f'TrigTau_TauWPDecorator_{precision_seq_name}_{tau_id}',
247 **cfg,
248 TauContainerName=tauContainerName,
249 DecorWPNames=[f'{tau_id}_{wp}' for wp in id_flags.TargetWPs],
250 DecorWPCutEffs0P=[eff[0] for eff in id_flags.TargetWPs.values()],
251 DecorWPCutEffs1P=[eff[1] for eff in id_flags.TargetWPs.values()],
252 DecorWPCutEffs3P=[eff[2] for eff in id_flags.TargetWPs.values()],
253 ScoreName=f'{tau_id}_Score',
254 NewScoreName=f'{tau_id}_ScoreSigTrans',
255 DefineWPs=True,
256 ))
257
258 return acc

◆ trigTauWPDecoratorRNNCfg()

TrigTauRecToolsConfig.trigTauWPDecoratorRNNCfg ( flags,
str tau_id,
str precision_seq_name )
TauJet signal transformed score and ID WPs decorator tool,
for the legacy mediumRNN/tightRNN_tracktwoMVA/tracktwoLLP/trackLRT chains ONLY!

Definition at line 182 of file TrigTauRecToolsConfig.py.

182def trigTauWPDecoratorRNNCfg(flags, tau_id: str, precision_seq_name: str):
183 '''
184 TauJet signal transformed score and ID WPs decorator tool,
185 for the legacy mediumRNN/tightRNN_tracktwoMVA/tracktwoLLP/trackLRT chains ONLY!
186 '''
187
188 acc = ComponentAccumulator()
189
190 try: id_flags = getattr(flags.Trigger.Offline.Tau, tau_id)
191 except NameError: raise ValueError(f'Invalid TauID configuration: {tau_id}')
192
193 # In this version we store the WPs as flags accessable through
194 # tau->isTau(xAOD::TauJetParameters::IsTauFlags::JetRNNSig...)
195 import PyUtils.RootUtils as ru
196 ROOT = ru.import_root()
197 import cppyy
198 cppyy.load_library('libxAODTau_cDict')
199 WPEnumVals = [
200 ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigVeryLoose,
201 ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigLoose,
202 ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigMedium,
203 ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigTight,
204 ]
205
206 acc.setPrivateTools(CompFactory.TauWPDecorator(
207 name=f'TrigTau_TauWPDecoratorRNN_{precision_seq_name}_{tau_id}',
208 flatteningFile0Prong=id_flags.ScoreFlatteningConfig[0],
209 flatteningFile1Prong=id_flags.ScoreFlatteningConfig[1],
210 flatteningFile3Prong=id_flags.ScoreFlatteningConfig[2],
211 CutEnumVals=WPEnumVals,
212 SigEff0P=id_flags.TargetEff[0],
213 SigEff1P=id_flags.TargetEff[1],
214 SigEff3P=id_flags.TargetEff[2],
215 ScoreName='RNNJetScore',
216 NewScoreName='RNNJetScoreSigTrans',
217 DefineWPs=True,
218 ))
219
220 return acc
221