ATLAS Offline Software
Loading...
Searching...
No Matches
python.TauCommonConfig Namespace Reference

Functions

 TauCPContentCfg (flags)
 AddTauAugmentationCfg (flags, wp="GNTauVeryLoose", **kwargs)
 AddTauMassDecoratorCfg (flags, **kwargs)
 AddTauIDDecorationCfg (flags, **kwargs)
 AddTauTESCompatibilityDecorationCfg (flags, **kwargs)
 AddTauIDDisplacedDecorationCfg (flags, **kwargs)
 AddMuonRemovalTauAODReRecoAlgCfg (flags, **kwargs)
 TauThinningCfg (flags, name, **kwargs)

Function Documentation

◆ AddMuonRemovalTauAODReRecoAlgCfg()

AddMuonRemovalTauAODReRecoAlgCfg ( flags,
** kwargs )
Configure the MuonRM AOD tau building

Definition at line 257 of file TauCommonConfig.py.

257def AddMuonRemovalTauAODReRecoAlgCfg(flags, **kwargs):
258 """Configure the MuonRM AOD tau building"""
259
260 acc = ComponentAccumulator()
261 inputTauJets = kwargs.setdefault("Key_tauContainer", "TauJets")
262 kwargs.setdefault("Key_tauOutputContainer", "TauJets_MuonRM")
263 kwargs.setdefault("Key_pi0OutputContainer", "TauFinalPi0s_MuonRM")
264 kwargs.setdefault("Key_neutralPFOOutputContainer", "TauNeutralParticleFlowObjects_MuonRM")
265 kwargs.setdefault("Key_chargedPFOOutputContainer", "TauChargedParticleFlowObjects_MuonRM")
266 kwargs.setdefault("Key_hadronicPFOOutputContainer", "TauHadronicParticleFlowObjects_MuonRM")
267 kwargs.setdefault("Key_tauTrackOutputContainer", "TauTracks_MuonRM")
268 kwargs.setdefault("Key_vertexOutputContainer", "TauSecondaryVertices_MuonRM")
269
270 # get tools from holder
271 import tauRec.TauToolHolder as tauTools
272 if "modificationTools" not in kwargs:
273 tools_mod = []
274 tools_mod.append( acc.popToolsAndMerge(tauTools.TauAODMuonRemovalCfg(flags)) )
275 for tool in tools_mod:
276 tool.inAOD = True
277 kwargs.setdefault("modificationTools", tools_mod)
278
279 if "officialTools" not in kwargs:
280 tools_after = []
281 tools_after.append( acc.popToolsAndMerge(tauTools.TauVertexedClusterDecoratorCfg(flags)) )
282 tools_after.append( acc.popToolsAndMerge(tauTools.TauTrackRNNClassifierCfg(flags)) )
283 tools_after.append( acc.popToolsAndMerge(tauTools.EnergyCalibrationLCCfg(flags,force_zero_mass=True)) )
284 tools_after.append( acc.popToolsAndMerge(tauTools.TauCommonCalcVarsCfg(flags)) )
285 tools_after.append( acc.popToolsAndMerge(tauTools.TauSubstructureCfg(flags)) )
286 tools_after.append( acc.popToolsAndMerge(tauTools.Pi0ClusterCreatorCfg(flags)) )
287 tools_after.append( acc.popToolsAndMerge(tauTools.Pi0ClusterScalerCfg(flags)) )
288 tools_after.append( acc.popToolsAndMerge(tauTools.Pi0ScoreCalculatorCfg(flags)) )
289 tools_after.append( acc.popToolsAndMerge(tauTools.Pi0SelectorCfg(flags)) )
290 tools_after.append( acc.popToolsAndMerge(tauTools.TauVertexVariablesCfg(flags)) )
291 import PanTauAlgs.JobOptions_Main_PanTau as pantau
292 tools_after.append( acc.popToolsAndMerge(pantau.PanTauCfg(flags)) )
293 tools_after.append( acc.popToolsAndMerge(tauTools.TauCombinedTESCfg(flags)) )
294 tools_after.append( acc.popToolsAndMerge(tauTools.MvaTESVariableDecoratorCfg(flags)) )
295 tools_after[-1].EventShapeKey = ''
296 tools_after.append( acc.popToolsAndMerge(tauTools.MvaTESEvaluatorCfg(flags)) )
297 tools_after.append( acc.popToolsAndMerge(tauTools.TauIDVarCalculatorCfg(flags)) )
298 tools_after.append( acc.popToolsAndMerge(tauTools.TauJetRNNEvaluatorCfg(flags,applyLooseTrackSel=True)) )
299 tools_after.append( acc.popToolsAndMerge(tauTools.TauWPDecoratorJetRNNCfg(flags)) )
300 tools_after.append( acc.popToolsAndMerge(tauTools.TauEleRNNEvaluatorCfg(flags,applyLooseTrackSel=True )) )
301 tools_after.append( acc.popToolsAndMerge(tauTools.TauWPDecoratorEleRNNCfg(flags)) )
302 tools_after.append( acc.popToolsAndMerge(tauTools.TauDecayModeNNClassifierCfg(flags)) )
303 for tool in tools_after:
304 tool.inAOD = True
305 kwargs.setdefault("officialTools", tools_after)
306
307 if flags.Input.isMC:
308 kwargs.setdefault("ExtraInputs",
309 [ ( 'xAOD::TauJetContainer' , f"StoreGateSvc+{inputTauJets}.truthJetLink" ),
310 ( 'xAOD::TauJetContainer' , f"StoreGateSvc+{inputTauJets}.truthParticleLink" ) ] )
311 TauAODRunnerAlg=CompFactory.getComp("TauAODRunnerAlg")
312 myTauAODRunnerAlg = TauAODRunnerAlg(
313 name = "MuonRemovalTauAODReRecoAlg",
314 **kwargs
315 )
316 acc.addEventAlgo(myTauAODRunnerAlg)
317 return acc
318
319
The implementation of the TauAODRunnerAlg, which is meant to run at AOD level.

◆ AddTauAugmentationCfg()

AddTauAugmentationCfg ( flags,
wp = "GNTauVeryLoose",
** kwargs )

Definition at line 28 of file TauCommonConfig.py.

28def AddTauAugmentationCfg(flags, wp="GNTauVeryLoose", **kwargs):
29 kwargs.setdefault("TauContainerName", "TauJets")
30
31 acc = ComponentAccumulator()
32
33 # tau selection relies on RNN electron veto, we must decorate the fixed eveto WPs before applying tau selection
34 acc.merge(AddTauIDDecorationCfg(flags, TauContainerName=kwargs["TauContainerName"]))
35
36 from DerivationFrameworkTools.DerivationFrameworkToolsConfig import AsgSelectionToolWrapperCfg
37 from TauAnalysisTools.TauAnalysisToolsConfig import TauSelectionToolCfg
38
39 TauAugmentationTools = []
40
41 config = {
42 "GNTauVeryLoose" : "TauAnalysisAlgorithms/tau_selection_gntau_veryloose_noeleid.conf",
43 "GNTauLoose" : "TauAnalysisAlgorithms/tau_selection_gntau_loose_noeleid.conf",
44 "GNTauMedium" : "TauAnalysisAlgorithms/tau_selection_gntau_medium_noeleid.conf",
45 "GNTauTight" : "TauAnalysisAlgorithms/tau_selection_gntau_tight_noeleid.conf",
46 }
47
48 TauSelector = acc.popToolsAndMerge(TauSelectionToolCfg(flags,
49 name = f'TauSelector{wp}',
50 ConfigPath = config[wp]))
51 acc.addPublicTool(TauSelector)
52
53 TauWrapper = acc.getPrimaryAndMerge(AsgSelectionToolWrapperCfg(flags,
54 name = f"Tau{wp}Wrapper",
55 AsgSelectionTool = TauSelector,
56 StoreGateEntryName = f"DFTau{wp}",
57 ContainerName = kwargs["TauContainerName"]))
58 TauAugmentationTools.append(TauWrapper)
59
60 CommonAugmentation = CompFactory.DerivationFramework.CommonAugmentation
61 acc.addEventAlgo(CommonAugmentation(f"Tau{wp}AugmentationKernel", AugmentationTools = TauAugmentationTools))
62 return acc
63

◆ AddTauIDDecorationCfg()

AddTauIDDecorationCfg ( flags,
** kwargs )
Decorate tau ID scores and working points

Definition at line 84 of file TauCommonConfig.py.

84def AddTauIDDecorationCfg(flags, **kwargs):
85 """Decorate tau ID scores and working points"""
86
87 #kwargs.setdefault("evetoFix", True)
88 #kwargs.setdefault("GNNTauID", True)
89 tauContainerKey = kwargs.setdefault("TauContainerName", "TauJets")
90 #kwargs.setdefault("prefix", kwargs['TauContainerName'])
91
92 acc = ComponentAccumulator()
93
94 import tauRec.TauToolHolder as tauTools
95 tools = []
96 doEvetoWP = False
97 scoreNames = []
98 WPNames = []
99 # The vertex-corrected clusters are consumed by more than one network below,
100 # but must only be rebuilt once.
101 doVertexedClusters = False
102
103 #def cacheToolProperties(tool):
104 # doEvetoWP = tool.UseAbsEta
105 # scoreName = [tool.ScoreName] if tools[-1].ScoreName != "RNNEleScore" else []
106 # wpName = tool.DecorWPNames
107
108 if kwargs.pop('evetoFix', True):
109 tools.append( acc.popToolsAndMerge(tauTools.TauWPDecoratorEleRNNCfg(flags)) )
110 # Cache tool properties
111 doEvetoWP |= tools[-1].UseAbsEta
112 # The original RNNEleScore should not be overriden
113 if tools[-1].ScoreName != "RNNEleScore": scoreNames.append(tools[-1].ScoreName)
114 scoreNames.append(tools[-1].NewScoreName)
115 WPNames += tools[-1].DecorWPNames
116
117 if kwargs.pop('GNNTauID', True):
118 # vertex-corrected clusters must be rebuilt for tau ID
119 tools.append( acc.popToolsAndMerge(tauTools.TauVertexedClusterDecoratorCfg(flags)) )
120 doVertexedClusters = True
121 # Add in GNTau!
122 # evaluate GNTau score for v0prune model
123 tools.append( acc.popToolsAndMerge(tauTools.TauGNNEvaluatorCfg(flags,0,applyLooseTrackSel=True)) )
124 # evaluate GNTau score for v1trunc model
125 tools.append( acc.popToolsAndMerge(tauTools.TauGNNEvaluatorCfg(flags,1,applyLooseTrackSel=True)) )
126 # set WPs decision for v0prune model
127 tools.append( acc.popToolsAndMerge(tauTools.TauWPDecoratorGNNCfg(flags,0)) )
128 # Cache tool properties
129 doEvetoWP |= tools[-1].UseAbsEta
130 # The original RNNEleScore should not be overriden
131 if tools[-1].ScoreName != "RNNEleScore": scoreNames.append(tools[-1].ScoreName)
132 scoreNames.append(tools[-1].NewScoreName)
133 WPNames += tools[-1].DecorWPNames
134
135 # set WPs decision for v1trunc model
136 tools.append( acc.popToolsAndMerge(tauTools.TauWPDecoratorGNNCfg(flags,1)) )
137 # Cache tool properties
138 doEvetoWP |= tools[-1].UseAbsEta
139 # The original RNNEleScore should not be overriden
140 if tools[-1].ScoreName != "RNNEleScore": scoreNames.append(tools[-1].ScoreName)
141 scoreNames.append(tools[-1].NewScoreName)
142 WPNames += tools[-1].DecorWPNames
143
144 if flags.GeoModel.Run <= LHCPeriod.Run3:
145 # Add the dedicated e-veto GNN score and WP decoration when the standard GNTauID configuration branch is active.
146 tools.append( acc.popToolsAndMerge(tauTools.TauGNNeVetoEvaluatorCfg(flags, applyTightTrackSel=True, applyLooseTrackSel=True)) )
147 tools.append( acc.popToolsAndMerge(tauTools.TauGNNeVetoWPDecoratorCfg(flags)) )
148 if tools[-1].ScoreName != "RNNEleScore": scoreNames.append(tools[-1].ScoreName)
149 scoreNames.append(tools[-1].NewScoreName)
150 WPNames += tools[-1].DecorWPNames
151
152 if kwargs.pop('TausRUs', flags.Tau.doTausRUs):
153 if not doVertexedClusters:
154 tools.append( acc.popToolsAndMerge(tauTools.TauVertexedClusterDecoratorCfg(flags)) )
155 doVertexedClusters = True
156 # Give the container a unique name for running
157 tools.append( acc.popToolsAndMerge(tauTools.TausRUsEvaluatorCfg(
158 flags,
159 name=f"{tauContainerKey}_TausRUs",
160 tauTrackContainerName=tauContainerKey.replace("TauJets", "TauTracks"))) )
161 # The tools run on a shallow copy of the taus, so every tau decoration
162 # has to be copied back, which is what the score list is. The per-track
163 # decorations need no copy-back: the tracks the shallow copy links to
164 # are the originals.
165 scoreNames += tauTools.TausRUsDecorationNames()
166
167 if tools:
168 kwargs.setdefault("DoEvetoWP", doEvetoWP)
169 kwargs.setdefault("ScoreDecorationKeys", scoreNames)
170 kwargs.setdefault("WPDecorationKeys", WPNames)
171
172 for tool in tools:
173 acc.addPublicTool(tool)
174 kwargs.setdefault("TauIDTools", tools)
175
176 TauIDDecoratorWrapper = CompFactory.DerivationFramework.TauIDDecoratorWrapper
177 TauIDDecoratorKernel = CompFactory.DerivationFramework.CommonAugmentation
178
179 prefix = kwargs.pop('prefix', tauContainerKey)
180 tauIDDecoratorWrapper = TauIDDecoratorWrapper(name = f"{prefix}_TauIDDecoratorWrapper",
181 **kwargs)
182 print("PXQW TauIDDecoratorsWrapper: " + str(tauIDDecoratorWrapper))
183 acc.addPublicTool(tauIDDecoratorWrapper)
184 acc.addEventAlgo(TauIDDecoratorKernel(name = f"{prefix}_TauIDDecorKernel",
185 AugmentationTools = [tauIDDecoratorWrapper]))
186
187 return acc
188
189
void print(char *figname, TCanvas *c1)

◆ AddTauIDDisplacedDecorationCfg()

AddTauIDDisplacedDecorationCfg ( flags,
** kwargs )
Decorate displaced tau ID scores and working points. Follows AddTauIDDisplacedDecorationCfg()

Definition at line 217 of file TauCommonConfig.py.

217def AddTauIDDisplacedDecorationCfg(flags, **kwargs):
218 """Decorate displaced tau ID scores and working points. Follows AddTauIDDisplacedDecorationCfg()"""
219 tauContainerKey = kwargs.setdefault("TauContainerName", "TauJetsLRT")
220
221 flags_TauLRT = flags.cloneAndReplace("Tau.ActiveConfig", "Tau.TauLRT")
222
223 acc = ComponentAccumulator()
224
225 scoreNames = []
226
227 import tauRec.TauToolHolder as tauTools
228 tool_prompt = acc.popToolsAndMerge(tauTools.TauGNNEvaluatorCfg(flags,0,applyLooseTrackSel=True))
229 scoreNames += ["GNTauScore_v0prune"]
230
231 tool_displaced = acc.popToolsAndMerge(tauTools.TauGNNDisplacedEvaluatorCfg(flags_TauLRT, tauContainerName=tauContainerKey))
232 scoreNames += ["GNdTauScore", "GNdTauProbTau", "GNdTauProbJet"]
233
234 kwargs.setdefault("ScoreDecorationKeys", scoreNames)
235 kwargs.setdefault("WPDecorationKeys", [])
236
237 acc.addPublicTool(tool_prompt)
238 acc.addPublicTool(tool_displaced)
239 kwargs.setdefault("TauIDTools", [tool_prompt, tool_displaced])
240
241 tauIDDecoratorWrapper = CompFactory.DerivationFramework.TauIDDecoratorWrapper(
242 name = f"{tauContainerKey}_TauIDDisplacedDecoratorWrapper",
243 **kwargs,
244 )
245 acc.addPublicTool(tauIDDecoratorWrapper)
246
247 prefix = kwargs.pop('prefix', tauContainerKey)
248 acc.addEventAlgo(
249 CompFactory.DerivationFramework.CommonAugmentation(
250 name = f"{prefix}_TauDisplacedIDDecorKernel",
251 AugmentationTools = [tauIDDecoratorWrapper],
252 )
253 )
254 return acc
255
256# TauJets_MuonRM steering

◆ AddTauMassDecoratorCfg()

AddTauMassDecoratorCfg ( flags,
** kwargs )
Decorate/overwrite the tau visible mass

Definition at line 64 of file TauCommonConfig.py.

64def AddTauMassDecoratorCfg(flags, **kwargs):
65 """Decorate/overwrite the tau visible mass"""
66
67 kwargs.setdefault("TauContainerName", "TauJets")
68 kwargs.setdefault("prefix", kwargs['TauContainerName'])
69
70 acc = ComponentAccumulator()
71
72 #Rename existing decorations in input file, such that we can create new ones.
73 from SGComps.AddressRemappingConfig import InputRenameCfg
74 acc.merge(InputRenameCfg("xAOD::TauJetContainer", kwargs['TauContainerName'], "old_"+kwargs['TauContainerName']))
75 acc.merge(InputRenameCfg("xAOD::TauJetAuxContainer", kwargs['TauContainerName']+"Aux.", "old_"+kwargs['TauContainerName']+"Aux."))
76
77 acc.addEventAlgo(CompFactory.DerivationFramework.TauMassDecorator(name = kwargs['TauContainerName']+"_MassDecorator",
78 TauOutputName = kwargs['TauContainerName'],
79 TauInputName = "old_"+kwargs['TauContainerName']))
80
81 return acc
82
83

◆ AddTauTESCompatibilityDecorationCfg()

AddTauTESCompatibilityDecorationCfg ( flags,
** kwargs )
Decorate taus with a flag to check if Calo and MVA TES are compatible 

Definition at line 190 of file TauCommonConfig.py.

190def AddTauTESCompatibilityDecorationCfg(flags, **kwargs):
191 """Decorate taus with a flag to check if Calo and MVA TES are compatible """
192
193 acc = ComponentAccumulator()
194
195 import tauRec.TauToolHolder as tauTools
196
197 tauCombinedTESTool = acc.popToolsAndMerge(tauTools.TauCombinedTESCfg(
198 flags,
199 ))
200
201 acc.addPublicTool(tauCombinedTESTool)
202 kwargs.setdefault("TauCombinedTESTool", tauCombinedTESTool)
203 kwargs.setdefault("TauContainerName", "TauJets")
204
205 prefix = kwargs["TauContainerName"]
206 TauCombinedTESWrapper = CompFactory.DerivationFramework.TauCombinedTESWrapper
207 TauCombinedTESKernel = CompFactory.DerivationFramework.CommonAugmentation
208
209 TauCombinedTESWrapper = TauCombinedTESWrapper( name = f"{prefix}_TauCombinedTES", **kwargs )
210 acc.addPublicTool(TauCombinedTESWrapper)
211 acc.addEventAlgo(TauCombinedTESKernel(name = f"{prefix}_TauCombinedTESKernel",
212 AugmentationTools = [TauCombinedTESWrapper]))
213 return acc
214
215
216# Attach displaced Tau ID scores

◆ TauCPContentCfg()

TauCPContentCfg ( flags)
TauJets CP content, extended with the TausRUs heads when they are run.

Definition at line 7 of file TauCommonConfig.py.

7def TauCPContentCfg(flags):
8 """TauJets CP content, extended with the TausRUs heads when they are run."""
9 from DerivationFrameworkTau.TauJetsCPContent import TauJetsCPContent
10 if not flags.Tau.doTausRUs:
11 return TauJetsCPContent
12
13 import tauRec.TauToolHolder as tauTools
14 # The per-track head is decorated on the TauTracks, not on the taus, so the
15 # two lists go on different aux items.
16 extraVars = {
17 "TauJetsAux.": ".".join(tauTools.TausRUsDecorationNames()),
18 "TauTracksAux.": ".".join(tauTools.TausRUsTrackDecorationNames()),
19 }
20 content = []
21 for item in TauJetsCPContent:
22 for prefix, extra in extraVars.items():
23 if item.startswith(prefix):
24 item += "." + extra
25 content.append(item)
26 return content
27

◆ TauThinningCfg()

TauThinningCfg ( flags,
name,
** kwargs )
configure tau thinning

Definition at line 320 of file TauCommonConfig.py.

320def TauThinningCfg(flags, name, **kwargs):
321 """configure tau thinning"""
322
323 acc = ComponentAccumulator()
324 TauThinningTool = CompFactory.DerivationFramework.TauThinningTool
325 acc.addPublicTool(TauThinningTool(name, **kwargs), primary=True)
326 return acc