ATLAS Offline Software
InDetAlgorithmConfig.py
Go to the documentation of this file.
1 #
2 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 #
4 
5 '''@file InDetAlgorithmConfig.py
6 @author M. Aparo
7 @date 02-10-2023
8 @brief CA-based python configurations for the event algorithms in this package
9 '''
10 
11 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
12 from AthenaConfiguration.ComponentFactory import CompFactory
13 
14 
15 def TruthHitDecoratorAlgCfg( flags, name="InDetPhysValTruthDecoratorAlg", **kwargs ):
16  '''
17  create decoration algorithm which decorates
18  truth particles with track parameters at the perigee.
19  '''
20  acc = ComponentAccumulator()
21 
22  from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
23  extrapolator = acc.popToolsAndMerge( AtlasExtrapolatorCfg( flags ) )
24  acc.addPublicTool( extrapolator )
25  kwargs.setdefault( "Extrapolator", extrapolator )
26 
27  PixelClusterContainerName = "PixelClusters"
28  SCTClusterContainerName = "SCT_Clusters"
29  if flags.Detector.GeometryITk :
30  if flags.PhysVal.IDTPM.currentTrkAna.useActsSiMeasurements :
31  PixelClusterContainerName = "ITkPixelMeasurements_offl"
32  SCTClusterContainerName = "ITkStripMeasurements_offl"
33  else :
34  PixelClusterContainerName = "ITkPixelMeasurements"
35  SCTClusterContainerName = "ITkStripMeasurements"
36 
37  kwargs.setdefault( "PixelClusterContainerName", PixelClusterContainerName )
38  kwargs.setdefault( "SCTClusterContainerName", SCTClusterContainerName )
39 
40  doTechEff = False
41  for trkAnaName in flags.PhysVal.IDTPM.trkAnaNames:
42  if getattr( flags.PhysVal.IDTPM, trkAnaName+".plotTechnicalEfficiencies" ):
43  doTechEff = True
44  break
45  kwargs.setdefault( 'TruthParticleIndexDecoration', 'origTruthIndex' if doTechEff else '' )
46 
47 
48  acc.addEventAlgo( CompFactory.InDetPhysValTruthDecoratorAlg( name, **kwargs ) )
49  return acc
50 
51 
52 def OfflineElectronDecoratorAlgCfg( flags, name="OfflineElectronDecoratorAlg", **kwargs ):
53  acc = ComponentAccumulator()
54  acc.addEventAlgo( CompFactory.IDTPM.OfflineElectronDecoratorAlg( name, **kwargs ) )
55  return acc
56 
57 
58 def OfflineElectronGSFDecoratorAlgCfg( flags, name="OfflineElectronGSFDecoratorAlg", **kwargs ):
59  acc = ComponentAccumulator()
60  kwargs.setdefault( "OfflineTrkParticleContainerName", "GSFTrackParticles" )
61  kwargs.setdefault( "useGSF", True )
62  acc.addEventAlgo( CompFactory.IDTPM.OfflineElectronDecoratorAlg( name, **kwargs ) )
63  return acc
64 
65 
66 def OfflineMuonDecoratorAlgCfg( flags, name="OfflineMuonDecoratorAlg", **kwargs ):
67  acc = ComponentAccumulator()
68  acc.addEventAlgo( CompFactory.IDTPM.OfflineMuonDecoratorAlg( name, **kwargs ) )
69  return acc
70 
71 
72 def OfflineMuonCombDecoratorAlgCfg( flags, name="OfflineMuonDecoratorAlg", **kwargs ):
73  acc = ComponentAccumulator()
74  kwargs.setdefault( "OfflineTrkParticleContainerName", "CombinedMuonTrackParticles" )
75  kwargs.setdefault( "useCombinedMuonTracks", True )
76  acc.addEventAlgo( CompFactory.IDTPM.OfflineMuonDecoratorAlg( name, **kwargs ) )
77  return acc
78 
79 
80 def OfflineTauBDT1prongDecoratorAlgCfg( flags, name="OfflineTauBDT1prongDecoratorAlg", **kwargs ):
81  acc = ComponentAccumulator()
82  kwargs.setdefault( "Prefix", "LinkedTauBDT1prong_" )
83  kwargs.setdefault( "TauType", "BDT" )
84  kwargs.setdefault( "TauNprongs", 1 )
85  acc.addEventAlgo( CompFactory.IDTPM.OfflineTauDecoratorAlg( name, **kwargs ) )
86  return acc
87 
88 
89 def OfflineTauBDT3prongDecoratorAlgCfg( flags, name="OfflineTauBDT3prongDecoratorAlg", **kwargs ):
90  acc = ComponentAccumulator()
91  kwargs.setdefault( "Prefix", "LinkedTauBDT3prong_" )
92  kwargs.setdefault( "TauType", "BDT" )
93  kwargs.setdefault( "TauNprongs", 3 )
94  acc.addEventAlgo( CompFactory.IDTPM.OfflineTauDecoratorAlg( name, **kwargs ) )
95  return acc
96 
97 
98 def OfflineTauRNN1prongDecoratorAlgCfg( flags, name="OfflineTauRNN1prongDecoratorAlg", **kwargs ):
99  acc = ComponentAccumulator()
100  kwargs.setdefault( "Prefix", "LinkedTauRNN1prong_" )
101  kwargs.setdefault( "TauType", "RNN" )
102  kwargs.setdefault( "TauNprongs", 1 )
103  acc.addEventAlgo( CompFactory.IDTPM.OfflineTauDecoratorAlg( name, **kwargs ) )
104  return acc
105 
106 
107 def OfflineTauRNN3prongDecoratorAlgCfg( flags, name="OfflineTauRNN3prongDecoratorAlg", **kwargs ):
108  acc = ComponentAccumulator()
109  kwargs.setdefault( "Prefix", "LinkedTauRNN3prong_" )
110  kwargs.setdefault( "TauType", "RNN" )
111  kwargs.setdefault( "TauNprongs", 3 )
112  acc.addEventAlgo( CompFactory.IDTPM.OfflineTauDecoratorAlg( name, **kwargs ) )
113  return acc
114 
115 
116 def OfflineJetDecoratorAlgCfg( flags, name="OfflineJetDecoratorAlg", **kwargs ):
117  acc = ComponentAccumulator()
118  kwargs.setdefault( "Prefix", "LinkedJet_" )
119  kwargs.setdefault( "OfflineTrkParticleContainerName",
120  flags.PhysVal.IDTPM.currentTrkAna.OfflineTrkKey )
121  kwargs.setdefault( "JetContainerName", flags.PhysVal.IDTPM.currentTrkAna.JetContainerName )
122  kwargs.setdefault( "maxTrkJetDR", flags.PhysVal.IDTPM.currentTrkAna.maxTrkJetDR )
123  kwargs.setdefault( "JetAbsEtaMin", flags.PhysVal.IDTPM.currentTrkAna.jetMinAbsEta )
124  kwargs.setdefault( "JetAbsEtaMax", flags.PhysVal.IDTPM.currentTrkAna.jetMaxAbsEta )
125  kwargs.setdefault( "JetPtMin", flags.PhysVal.IDTPM.currentTrkAna.jetMinPt )
126  kwargs.setdefault( "JetPtMax", flags.PhysVal.IDTPM.currentTrkAna.jetMaxPt )
127  acc.addEventAlgo( CompFactory.IDTPM.OfflineJetDecoratorAlg( name, **kwargs ) )
128  return acc
129 
130 
131 def OfflineObjectDecoratorAlgCfg( flags, name="OfflineObjectDecoratorAlg", **kwargs ):
132  '''
133  create decoration algorithm(s) to decorate offline tracks with a link to
134  the offline object they correspond to in the event reconstruction
135  '''
136  acc = ComponentAccumulator()
137 
138  objStrList = []
139  tauTypeList = []
140  for trkAnaName in flags.PhysVal.IDTPM.trkAnaNames:
141  objStr = getattr( flags.PhysVal.IDTPM, trkAnaName+".SelectOfflineObject" )
142  if objStr : objStrList.append( objStr )
143  tauType = getattr( flags.PhysVal.IDTPM, trkAnaName+".TauType" )
144  if tauType : tauTypeList.append( tauType )
145 
146  if "ElectronGSF" in objStrList:
147  acc.merge( OfflineElectronGSFDecoratorAlgCfg(flags) )
148 
149  if "Electron" in objStrList:
150  acc.merge( OfflineElectronDecoratorAlgCfg(flags) )
151 
152  if "MuonComb" in objStrList:
153  acc.merge( OfflineMuonCombDecoratorAlgCfg(flags) )
154 
155  if "Muon" in objStrList:
156  acc.merge( OfflineMuonDecoratorAlgCfg(flags) )
157 
158  if "Tau" in objStrList:
159  if "BDT" in tauTypeList:
160  acc.merge( OfflineTauBDT1prongDecoratorAlgCfg(flags) )
161  acc.merge( OfflineTauBDT3prongDecoratorAlgCfg(flags) )
162  if "RNN" in tauTypeList:
163  acc.merge( OfflineTauRNN1prongDecoratorAlgCfg(flags) )
164  acc.merge( OfflineTauRNN3prongDecoratorAlgCfg(flags) )
165 
166  if "Jet" in objStrList:
167  acc.merge( OfflineJetDecoratorAlgCfg(flags) )
168 
169  return acc
170 
171 
172 def TruthDecoratorAlgCfg( flags, name="TruthDecoratorAlg", **kwargs ):
173  acc = ComponentAccumulator()
174  acc.addEventAlgo( CompFactory.IDTPM.TruthDecoratorAlg( name, **kwargs ) )
175  return acc
InDetAlgorithmConfig.OfflineMuonDecoratorAlgCfg
def OfflineMuonDecoratorAlgCfg(flags, name="OfflineMuonDecoratorAlg", **kwargs)
Definition: InDetAlgorithmConfig.py:66
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
InDetAlgorithmConfig.OfflineJetDecoratorAlgCfg
def OfflineJetDecoratorAlgCfg(flags, name="OfflineJetDecoratorAlg", **kwargs)
Definition: InDetAlgorithmConfig.py:116
python.AtlasExtrapolatorConfig.AtlasExtrapolatorCfg
def AtlasExtrapolatorCfg(flags, name='AtlasExtrapolator')
Definition: AtlasExtrapolatorConfig.py:63
InDetAlgorithmConfig.OfflineObjectDecoratorAlgCfg
def OfflineObjectDecoratorAlgCfg(flags, name="OfflineObjectDecoratorAlg", **kwargs)
Definition: InDetAlgorithmConfig.py:131
InDetAlgorithmConfig.OfflineTauBDT3prongDecoratorAlgCfg
def OfflineTauBDT3prongDecoratorAlgCfg(flags, name="OfflineTauBDT3prongDecoratorAlg", **kwargs)
Definition: InDetAlgorithmConfig.py:89
InDetAlgorithmConfig.OfflineTauRNN1prongDecoratorAlgCfg
def OfflineTauRNN1prongDecoratorAlgCfg(flags, name="OfflineTauRNN1prongDecoratorAlg", **kwargs)
Definition: InDetAlgorithmConfig.py:98
InDetAlgorithmConfig.OfflineTauBDT1prongDecoratorAlgCfg
def OfflineTauBDT1prongDecoratorAlgCfg(flags, name="OfflineTauBDT1prongDecoratorAlg", **kwargs)
Definition: InDetAlgorithmConfig.py:80
InDetAlgorithmConfig.OfflineElectronDecoratorAlgCfg
def OfflineElectronDecoratorAlgCfg(flags, name="OfflineElectronDecoratorAlg", **kwargs)
Definition: InDetAlgorithmConfig.py:52
InDetAlgorithmConfig.TruthHitDecoratorAlgCfg
def TruthHitDecoratorAlgCfg(flags, name="InDetPhysValTruthDecoratorAlg", **kwargs)
Definition: InDetAlgorithmConfig.py:15
InDetAlgorithmConfig.OfflineElectronGSFDecoratorAlgCfg
def OfflineElectronGSFDecoratorAlgCfg(flags, name="OfflineElectronGSFDecoratorAlg", **kwargs)
Definition: InDetAlgorithmConfig.py:58
InDetAlgorithmConfig.OfflineMuonCombDecoratorAlgCfg
def OfflineMuonCombDecoratorAlgCfg(flags, name="OfflineMuonDecoratorAlg", **kwargs)
Definition: InDetAlgorithmConfig.py:72
InDetAlgorithmConfig.OfflineTauRNN3prongDecoratorAlgCfg
def OfflineTauRNN3prongDecoratorAlgCfg(flags, name="OfflineTauRNN3prongDecoratorAlg", **kwargs)
Definition: InDetAlgorithmConfig.py:107
InDetAlgorithmConfig.TruthDecoratorAlgCfg
def TruthDecoratorAlgCfg(flags, name="TruthDecoratorAlg", **kwargs)
Definition: InDetAlgorithmConfig.py:172