ATLAS Offline Software
Loading...
Searching...
No Matches
InDetAlgorithmConfig.py
Go to the documentation of this file.
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
11from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
12from AthenaConfiguration.ComponentFactory import CompFactory
13
14
15def 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
52def OfflineElectronDecoratorAlgCfg( flags, name="OfflineElectronDecoratorAlg", **kwargs ):
53 acc = ComponentAccumulator()
54 acc.addEventAlgo( CompFactory.IDTPM.OfflineElectronDecoratorAlg( name, **kwargs ) )
55 return acc
56
57
58def 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
66def OfflineMuonDecoratorAlgCfg( flags, name="OfflineMuonDecoratorAlg", **kwargs ):
67 acc = ComponentAccumulator()
68 acc.addEventAlgo( CompFactory.IDTPM.OfflineMuonDecoratorAlg( name, **kwargs ) )
69 return acc
70
71
72def 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
80def 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
89def 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
98def 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
107def 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
116def 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
131def 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
172def TruthDecoratorAlgCfg( flags, name="TruthDecoratorAlg", **kwargs ):
173 acc = ComponentAccumulator()
174 acc.addEventAlgo( CompFactory.IDTPM.TruthDecoratorAlg( name, **kwargs ) )
175 return acc
OfflineTauBDT3prongDecoratorAlgCfg(flags, name="OfflineTauBDT3prongDecoratorAlg", **kwargs)
TruthDecoratorAlgCfg(flags, name="TruthDecoratorAlg", **kwargs)
TruthHitDecoratorAlgCfg(flags, name="InDetPhysValTruthDecoratorAlg", **kwargs)
OfflineElectronGSFDecoratorAlgCfg(flags, name="OfflineElectronGSFDecoratorAlg", **kwargs)
OfflineObjectDecoratorAlgCfg(flags, name="OfflineObjectDecoratorAlg", **kwargs)
OfflineTauRNN3prongDecoratorAlgCfg(flags, name="OfflineTauRNN3prongDecoratorAlg", **kwargs)
OfflineTauRNN1prongDecoratorAlgCfg(flags, name="OfflineTauRNN1prongDecoratorAlg", **kwargs)
OfflineElectronDecoratorAlgCfg(flags, name="OfflineElectronDecoratorAlg", **kwargs)
OfflineMuonCombDecoratorAlgCfg(flags, name="OfflineMuonDecoratorAlg", **kwargs)
OfflineTauBDT1prongDecoratorAlgCfg(flags, name="OfflineTauBDT1prongDecoratorAlg", **kwargs)
OfflineJetDecoratorAlgCfg(flags, name="OfflineJetDecoratorAlg", **kwargs)
OfflineMuonDecoratorAlgCfg(flags, name="OfflineMuonDecoratorAlg", **kwargs)