ATLAS Offline Software
TrigTauToolsConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from AthenaCommon.SystemOfUnits import mm
6 
7 def trigTauVertexFinderCfg(flags,name=''):
9 
10  # Algorithm that overwrites numTrack() and charge() of tauJets in container
11  TauVertexFinder = CompFactory.TauVertexFinder(name=name,
12  UseTJVA = False,
13  AssociatedTracks = "GhostTrack",
14  InDetTrackSelectionToolForTJVA = "",
15  Key_trackPartInputContainer = "",
16  Key_vertexInputContainer = "",
17  OnlineMaxTransverseDistance = 2.5*mm,
18  OnlineMaxZ0SinTheta = 3.0*mm,
19  TVATool = "",
20  )
21 
22  acc.setPrivateTools(TauVertexFinder)
23  return acc
24 
25 def trigTauTrackFinderCfg(flags,name='',TrackParticlesContainer=''):
26  acc = ComponentAccumulator()
27 
28  from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
29  from TrackToVertex.TrackToVertexConfig import TrackToVertexCfg
30  from TrackToCalo.TrackToCaloConfig import ParticleCaloExtensionToolCfg
31 
32  from TrkConfig.TrkVertexFitterUtilsConfig import AtlasFullLinearizedTrackFactoryCfg,AtlasTrackToVertexIPEstimatorCfg
33 
34  TrigTauExtrapolatorTool = acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags,'TrigTau_theAtlasExtrapolator'))
35  acc.addPublicTool(TrigTauExtrapolatorTool)
36  TrigTauTrackToVertexTool = acc.popToolsAndMerge(TrackToVertexCfg(flags,'TrigTau_TrackToVertexTool',Extrapolator=TrigTauExtrapolatorTool))
37  acc.addPublicTool(TrigTauTrackToVertexTool )
38  TrigTauParticleCaloExtensionTool = acc.popToolsAndMerge(ParticleCaloExtensionToolCfg(flags,'TrigTau_ParticleCaloExtensionTool',Extrapolator=TrigTauExtrapolatorTool))
39  acc.addPublicTool(TrigTauParticleCaloExtensionTool)
40  TrigTauFullLinearizedTrackFactory = acc.popToolsAndMerge(AtlasFullLinearizedTrackFactoryCfg(flags,'TrigTau_TauFullLinearizedTrackFactory',Extrapolator=TrigTauExtrapolatorTool))
41  acc.addPublicTool(TrigTauFullLinearizedTrackFactory)
42  TrigTauTrackToVertexIPEstimator = acc.popToolsAndMerge(AtlasTrackToVertexIPEstimatorCfg(flags,'TrigTau_TauTrackToVertexIPEstimator',Extrapolator=TrigTauExtrapolatorTool,LinearizedTrackFactory=TrigTauFullLinearizedTrackFactory))
43  acc.addPublicTool(TrigTauTrackToVertexIPEstimator)
44 
45  from InDetConfig.InDetTrackSelectorToolConfig import InDetTrackSelectorToolCfg
46  from InDetConfig.InDetTrackSelectorToolConfig import InDetTrigTRTDriftCircleCutToolCfg
47 
48  TrigTauInDetTrackSelectorTool = acc.popToolsAndMerge(InDetTrackSelectorToolCfg(flags,'TrigTau_InDetTrackSelectorTool',
49  TrtDCCutTool = None if not flags.Tracking.ActiveConfig.doTRT else acc.popToolsAndMerge(InDetTrigTRTDriftCircleCutToolCfg(flags,'InDetTrigTRTDriftCircleCut')),
50  Extrapolator = TrigTauExtrapolatorTool,
51  pTMin = 1000.0,
52  IPd0Max = 2.,
53  IPz0Max = 9999.,
54  nHitBLayer = 0,
55  nHitBLayerPlusPix = 0,
56  nHitPix = 2, # PixelHits + PixelDeadSensors
57  nHitSct = 0, # SCTHits + SCTDeadSensors
58  nHitSi = 7, # PixelHits + SCTHits + PixelDeadSensors + SCTDeadSensors
59  nHitTrt = 0,
60  fitChi2OnNdfMax = 99999,
61  useTrackSummaryInfo= True,
62  useSharedHitInfo = False,
63  useTrackQualityInfo= True,
64  TrackSummaryTool = ""))
65  acc.addPublicTool(TrigTauInDetTrackSelectorTool)
66 
67 
68  TauTrackFinder = CompFactory.TauTrackFinder(name=name,
69  MaxJetDrTau = 0.2,
70  MaxJetDrWide = 0.4,
71  TrackSelectorToolTau = TrigTauInDetTrackSelectorTool,
72  TrackToVertexTool = TrigTauTrackToVertexTool,
73  Key_trackPartInputContainer = TrackParticlesContainer,
74  maxDeltaZ0wrtLeadTrk = 0.75*mm, #in mm
75  removeTracksOutsideZ0wrtLeadTrk = True,
76  ParticleCaloExtensionTool = TrigTauParticleCaloExtensionTool,
77  BypassSelector = False,
78  BypassExtrapolator = True,
79  tauParticleCache = "",
80  TrackToVertexIPEstimator = TrigTauTrackToVertexIPEstimator,
81  )
82 
83 
84  acc.setPrivateTools(TauTrackFinder)
85  return acc
86 
87 def tauVertexVariablesCfg(flags,name=''):
88  acc = ComponentAccumulator()
89 
90  from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
91  from TrkConfig.TrkVertexFittersConfig import TauAdaptiveVertexFitterCfg,SequentialVertexSmootherCfg
92  from TrkConfig.TrkVertexSeedFinderToolsConfig import CrossDistancesSeedFinderCfg
93  from TrkConfig.TrkVertexSeedFinderUtilsConfig import SeedNewtonTrkDistanceFinderCfg
94  from TrkConfig.TrkVertexFitterUtilsConfig import AtlasImpactPoint3dEstimatorCfg,TauDetAnnealingMakerCfg,AtlasFullLinearizedTrackFactoryCfg
95 
96  TrigTauExtrapolatorTool = acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags,'TrigTau_theAtlasExtrapolator'))
97  TrigTauSeedNewtonTrkDistanceFinder = acc.popToolsAndMerge(SeedNewtonTrkDistanceFinderCfg(flags,'TrigTau_TauSeedNewtonTrkDistanceFinder'))
98  acc.addPublicTool(TrigTauSeedNewtonTrkDistanceFinder)
99  TrigTauCrossDistancesSeedFinder = acc.popToolsAndMerge(CrossDistancesSeedFinderCfg(flags,'TauCrossDistancesSeedFinder',TrkDistanceFinder=TrigTauSeedNewtonTrkDistanceFinder))
100  acc.addPublicTool(TrigTauCrossDistancesSeedFinder)
101  TrigTauFullLinearizedTrackFactory = acc.popToolsAndMerge(AtlasFullLinearizedTrackFactoryCfg(flags,'TrigTau_TauFullLinearizedTrackFactory',Extrapolator=TrigTauExtrapolatorTool))
102  acc.addPublicTool(TrigTauFullLinearizedTrackFactory)
103  TrigTauImpactPoint3dEstimator = acc.popToolsAndMerge(AtlasImpactPoint3dEstimatorCfg(flags,'TrigTau_TauTrkImpactPoint3dEstimator'))
104  acc.addPublicTool(TrigTauImpactPoint3dEstimator)
105  TrigTauAnnealingMaker = acc.popToolsAndMerge(TauDetAnnealingMakerCfg(flags,'TrigTau_TauDetAnnealingMaker'))
106  acc.addPublicTool(TrigTauAnnealingMaker)
107  TrigTauVertexSmoother = acc.popToolsAndMerge(SequentialVertexSmootherCfg(flags,'TrigTau_TauSequentialVertexSmoother'))
108  acc.addPublicTool(TrigTauVertexSmoother)
109 
110  TrigTauAdaptiveVertexFitter = acc.popToolsAndMerge(TauAdaptiveVertexFitterCfg(flags,'TrigTau_TauAdaptiveVertexFitter',
111  SeedFinder = TrigTauCrossDistancesSeedFinder,
112  LinearizedTrackFactory=TrigTauFullLinearizedTrackFactory,
113  ImpactPoint3dEstimator=TrigTauImpactPoint3dEstimator,
114  AnnealingMaker=TrigTauAnnealingMaker,
115  VertexSmoother=TrigTauVertexSmoother))
116  acc.addPublicTool(TrigTauAdaptiveVertexFitter)
117 
118  TauVertexVariables = CompFactory.TauVertexVariables(name=name,
119  VertexFitter = TrigTauAdaptiveVertexFitter ,
120  SeedFinder = TrigTauCrossDistancesSeedFinder )
121  acc.setPrivateTools(TauVertexVariables)
122  return acc
123 
124 def trigTauJetRNNEvaluatorCfg(flags,name='',LLP = False):
125 
126  acc = ComponentAccumulator()
127 
128  name += '_LLP' if LLP else ''
129 
130  (NetworkFile0P, NetworkFile1P, NetworkFile3P) = \
131  flags.Trigger.Offline.Tau.TauJetRNNConfigLLP if LLP \
132  else flags.Trigger.Offline.Tau.TauJetRNNConfig
133 
134 
135  MyTauJetRNNEvaluator = CompFactory.TauJetRNNEvaluator(name = name,
136  NetworkFile0P = NetworkFile0P,
137  NetworkFile1P = NetworkFile1P,
138  NetworkFile3P = NetworkFile3P,
139  OutputVarname = "RNNJetScore",
140  MaxTracks = 10,
141  MaxClusters = 6,
142  MaxClusterDR = 1.0,
143  VertexCorrection = False,
144  TrackClassification = False,
145  InputLayerScalar = "scalar",
146  InputLayerTracks = "tracks",
147  InputLayerClusters = "clusters",
148  OutputLayer = "rnnid_output",
149  OutputNode = "sig_prob")
150 
151 
152  acc.setPrivateTools(MyTauJetRNNEvaluator)
153  return acc
154 
155 def trigTauWPDecoratorJetRNNCfg(flags,name='',LLP = False):
156  import PyUtils.RootUtils as ru
157  ROOT = ru.import_root()
158  import cppyy
159  cppyy.load_library('libxAODTau_cDict')
160 
161  acc = ComponentAccumulator()
162  name += '_LLP' if LLP else ''
163 
164  # currently the target efficiencies are the same for regular tau ID and LLP tau ID
165  # if we need different WPs, we can define new flags
166 
167  (flatteningFile0Prong, flatteningFile1Prong, flatteningFile3Prong) = \
168  flags.Trigger.Offline.Tau.TauJetRNNWPConfigLLP if LLP \
169  else flags.Trigger.Offline.Tau.TauJetRNNWPConfig
170 
171  (targetEff0Prong, targetEff1Prong, targetEff3Prong) = \
172  flags.Trigger.Offline.Tau.TauJetRNNLLPTargetEff if LLP \
173  else flags.Trigger.Offline.Tau.TauJetRNNTargetEff
174 
175  MyTauWPDecorator =CompFactory.TauWPDecorator( name=name,
176  flatteningFile0Prong = flatteningFile0Prong,
177  flatteningFile1Prong = flatteningFile1Prong,
178  flatteningFile3Prong = flatteningFile3Prong,
179  CutEnumVals =
180  [ ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigVeryLoose, ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigLoose,
181  ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigMedium, ROOT.xAOD.TauJetParameters.IsTauFlag.JetRNNSigTight ],
182  SigEff0P = targetEff0Prong,
183  SigEff1P = targetEff1Prong,
184  SigEff3P = targetEff3Prong,
185  ScoreName = "RNNJetScore",
186  NewScoreName = "RNNJetScoreSigTrans",
187  DefineWPs = True )
188 
189  acc.setPrivateTools(MyTauWPDecorator)
190  return acc
python.TrkVertexFittersConfig.TauAdaptiveVertexFitterCfg
def TauAdaptiveVertexFitterCfg(flags, name="TauAdaptiveVertexFitter", **kwargs)
Definition: TrkVertexFittersConfig.py:97
SystemOfUnits
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.TrkVertexFitterUtilsConfig.AtlasTrackToVertexIPEstimatorCfg
def AtlasTrackToVertexIPEstimatorCfg(flags, name='AtlasTrackToVertexIPEstimator', **kwargs)
Definition: TrkVertexFitterUtilsConfig.py:63
python.TrkVertexSeedFinderUtilsConfig.SeedNewtonTrkDistanceFinderCfg
def SeedNewtonTrkDistanceFinderCfg(flags, name='SeedNewtonTrkDistanceFinder', **kwargs)
Definition: TrkVertexSeedFinderUtilsConfig.py:22
TrigTauToolsConfig.trigTauJetRNNEvaluatorCfg
def trigTauJetRNNEvaluatorCfg(flags, name='', LLP=False)
Definition: TrigTauToolsConfig.py:124
TrigTauToolsConfig.trigTauWPDecoratorJetRNNCfg
def trigTauWPDecoratorJetRNNCfg(flags, name='', LLP=False)
Definition: TrigTauToolsConfig.py:155
TrigTauToolsConfig.trigTauTrackFinderCfg
def trigTauTrackFinderCfg(flags, name='', TrackParticlesContainer='')
Definition: TrigTauToolsConfig.py:25
TrigTauToolsConfig.tauVertexVariablesCfg
def tauVertexVariablesCfg(flags, name='')
Definition: TrigTauToolsConfig.py:87
python.AtlasExtrapolatorConfig.AtlasExtrapolatorCfg
def AtlasExtrapolatorCfg(flags, name='AtlasExtrapolator')
Definition: AtlasExtrapolatorConfig.py:63
python.TrkVertexFitterUtilsConfig.AtlasFullLinearizedTrackFactoryCfg
def AtlasFullLinearizedTrackFactoryCfg(flags, name='AtlasFullLinearizedTrkFactory', **kwargs)
Definition: TrkVertexFitterUtilsConfig.py:20
python.TrkVertexFittersConfig.SequentialVertexSmootherCfg
def SequentialVertexSmootherCfg(flags, name="SequentialVertexSmoother", **kwargs)
Definition: TrkVertexFittersConfig.py:53
python.TrkVertexFitterUtilsConfig.TauDetAnnealingMakerCfg
def TauDetAnnealingMakerCfg(flags, name='tauRec_TauDetAnnealingMaker', **kwargs)
Definition: TrkVertexFitterUtilsConfig.py:44
python.TrkVertexFitterUtilsConfig.AtlasImpactPoint3dEstimatorCfg
def AtlasImpactPoint3dEstimatorCfg(flags, name='AtlasImpactPoint3dEstimator', **kwargs)
Definition: TrkVertexFitterUtilsConfig.py:92
TrigTauToolsConfig.trigTauVertexFinderCfg
def trigTauVertexFinderCfg(flags, name='')
Definition: TrigTauToolsConfig.py:7
python.InDetTrackSelectorToolConfig.InDetTrackSelectorToolCfg
def InDetTrackSelectorToolCfg(flags, name='InDetTrackSelectorTool', **kwargs)
Definition: InDetTrackSelectorToolConfig.py:82
TrackToVertexConfig.TrackToVertexCfg
def TrackToVertexCfg(flags, name="AtlasTrackToVertexTool", **kwargs)
Definition: TrackToVertexConfig.py:6
python.TrkVertexSeedFinderToolsConfig.CrossDistancesSeedFinderCfg
def CrossDistancesSeedFinderCfg(flags, name="CrossDistancesSeedFinder", **kwargs)
Definition: TrkVertexSeedFinderToolsConfig.py:33
python.InDetTrackSelectorToolConfig.InDetTrigTRTDriftCircleCutToolCfg
def InDetTrigTRTDriftCircleCutToolCfg(flags, name='InDetTrigTRTDriftCircleCutTool', **kwargs)
Definition: InDetTrackSelectorToolConfig.py:261
TrackToCaloConfig.ParticleCaloExtensionToolCfg
def ParticleCaloExtensionToolCfg(flags, name='ParticleCaloExtensionTool', **kwargs)
Definition: TrackToCaloConfig.py:10