ATLAS Offline Software
ActsAnalysisConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 
7  name: str = "ActsTrackAnalysisAlg",
8  **kwargs) -> ComponentAccumulator:
10 
11  kwargs.setdefault('TracksLocation', 'ActsTracks')
12  kwargs.setdefault("MonGroupName", kwargs['TracksLocation'])
13 
14  from AthenaMonitoring import AthMonitorCfgHelper
15  helper = AthMonitorCfgHelper(flags, kwargs['TracksLocation'] + 'AnalysisAlgCfg')
16 
17  monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.TrackAnalysisAlg, name, **kwargs)
18  monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs['MonGroupName'], '/ActsAnalysis/')
19 
20  monitoringGroup.defineHistogram('Ntracks', title='Number of Tracks;N;Entries', type='TH1I', path=kwargs['MonGroupName'],
21  xbins=500, xmin=0, xmax=20000)
22  import math
23  monitoringGroup.defineHistogram('theta', title='Track polar angle;#theta;Entries', type='TH1I', path=kwargs['MonGroupName'],
24  xbins=128, xmin=0, xmax=math.pi)
25  monitoringGroup.defineHistogram('phi', title='Track azimuthal angle;#phi;Entries', type='TH1I', path=kwargs['MonGroupName'],
26  xbins=128, xmin=-math.pi, xmax=math.pi)
27  monitoringGroup.defineHistogram('qoverp', title='track inverse momentum;q/p [1/GeV];Entries', type='TH1I', path=kwargs['MonGroupName'],
28  xbins=200, xmin=-1.2, xmax=1.2)
29  monitoringGroup.defineHistogram('chi2OverNdof', title='fit chi2 / ndof;#chi^{2}/nDoF;Entries', type='TH1I', path=kwargs['MonGroupName'],
30  xbins=100, xmin=0, xmax=20)
31  monitoringGroup.defineHistogram('nStates', title='Number of states / track;# states;Entries', type='TH1I', path=kwargs['MonGroupName'],
32  xbins=60, xmin=0, xmax=60)
33  monitoringGroup.defineHistogram('nMeasurements', title='Number of measurements / track;# measurements;Entries', type='TH1I', path=kwargs['MonGroupName'],
34  xbins=35, xmin=0, xmax=35)
35  monitoringGroup.defineHistogram('nPixelHits', title='Number of pixel hits / track;# pixel hits;Entries', type='TH1I', path=kwargs['MonGroupName'],
36  xbins=35, xmin=0, xmax=35)
37  monitoringGroup.defineHistogram('nStripHits', title='Number of strip hits / track;# strip hits;Entries', type='TH1I', path=kwargs['MonGroupName'],
38  xbins=35, xmin=0, xmax=35)
39  monitoringGroup.defineHistogram('surfaceType', title='type of reference surface;type;Entries', type='TH1I', path=kwargs['MonGroupName'],
40  xbins=35, xmin=0, xmax=35)
41 
42 
43  acc.merge(helper.result())
44  return acc
45 
47  name: str = 'ActsTrackParticleAnalysisAlg',
48  **kwargs) -> ComponentAccumulator:
49  acc = ComponentAccumulator()
50  kwargs.setdefault('MonitorTrackStateCounts',True)
51  kwargs.setdefault('TrackParticleLocation', 'ActsTrackParticles')
52 
53  kwargs.setdefault('MonGroupName', kwargs['TrackParticleLocation'])
54 
55  from AthenaMonitoring import AthMonitorCfgHelper
56  helper = AthMonitorCfgHelper(flags, 'TrackParticleAnalysisAlgCfg')
57  monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.TrackParticleAnalysisAlg, name, **kwargs)
58  monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs['MonGroupName'], '/'+name+'/')
59 
60  monitoringGroup.defineHistogram('pt', title='TrackParticle pt;pt (MeV);Entries', type='TH1F', path=kwargs['MonGroupName'],
61  xbins=100, xmin=0, xmax=10e3)
62  monitoringGroup.defineHistogram('eta', title='TrackParticle eta;eta;Entries', type='TH1F', path=kwargs['MonGroupName'],
63  xbins=50, xmin=-4, xmax=4)
64 
65  # hit counts
66  monitoringGroup.defineHistogram('pixelHits', title='Number of pixel hits;N;Entries', type='TH1I', path=kwargs['MonGroupName'],
67  xbins=50, xmin=-1, xmax=49)
68  monitoringGroup.defineHistogram('innermostHits', title='Number of innermost pixel hits;N;Entries', type='TH1I', path=kwargs['MonGroupName'],
69  xbins=6, xmin=-1, xmax=5)
70  monitoringGroup.defineHistogram('nextToInnermostHits', title='Number of next-to-innermost pixel hits;N;Entries', type='TH1I',
71  path=kwargs['MonGroupName'], xbins=6, xmin=-1, xmax=5)
72  monitoringGroup.defineHistogram('expectInnermostHit', title='Innermost pixel hit expected;N;Entries', type='TH1I', path=kwargs['MonGroupName'],
73  xbins=3, xmin=-1, xmax=2)
74  monitoringGroup.defineHistogram('expectNextToInnermostHit', title='Next-to-innermost pixel hit expected;N;Entries', type='TH1I',
75  path=kwargs['MonGroupName'],xbins=3, xmin=-1, xmax=2)
76 
77  if kwargs['MonitorTrackStateCounts'] :
78  # have to add artifical dependency, because the ActsTracks are created by
79  # a special reader algorithm from the various component branches, but the
80  # element links pointing to the ActsTracks would not add this dependency
81  # by themselves.
82  if 'ExtraInputs' not in kwargs :
83  tracks_name = kwargs['TrackParticleLocation']
84  if tracks_name[-len('TrackParticles'):] == 'TrackParticles' :
85  kwargs.setdefault('ExtraInputs',{('ActsTrk::TrackContainer',tracks_name[:-len('TrackParticles')]+'Tracks')})
86 
87  monitoringGroup.defineHistogram('States', title='Number of states on track;N;Entries', type='TH1I', path=kwargs['MonGroupName'],
88  xbins=50, xmin=0, xmax=50)
89  monitoringGroup.defineHistogram('Measurements', title='Number of measurements on track;N;Entries', type='TH1I', path=kwargs['MonGroupName'],
90  xbins=50, xmin=0, xmax=50)
91  monitoringGroup.defineHistogram('Parameters', title='Number of parameters on track;N;Entries', type='TH1I', path=kwargs['MonGroupName'],
92  xbins=50, xmin=0, xmax=50)
93  monitoringGroup.defineHistogram('Outliers', title='Number of outliers on track;N;Entries', type='TH1I', path=kwargs['MonGroupName'],
94  xbins=50, xmin=0, xmax=50)
95  monitoringGroup.defineHistogram('Holes', title='Number of holes on track;N;Entries', type='TH1I', path=kwargs['MonGroupName'],
96  xbins=50, xmin=0, xmax=50)
97  monitoringGroup.defineHistogram('SharedHits', title='Number of shared hits on track;N;Entries', type='TH1I', path=kwargs['MonGroupName'],
98  xbins=50, xmin=0, xmax=50)
99  monitoringGroup.defineHistogram('MaterialStates', title='Number of material states on track;N;Entries', type='TH1I', path=kwargs['MonGroupName'],
100  xbins=50, xmin=0, xmax=50)
101  acc.merge(helper.result())
102 
103  acc.addEventAlgo( CompFactory.ActsTrk.TrackParticleAnalysisAlg(name, **kwargs) )
104  return acc
105 
107  name: str = "ActsHgtdClusterAnalysisAlg",
108  **kwargs) -> ComponentAccumulator:
109  if flags.HGTD.Geometry.useGeoModelXml:
110  from HGTD_GeoModelXml.HGTD_GeoModelConfig import HGTD_ReadoutGeometryCfg
111  else:
112  from HGTD_GeoModel.HGTD_GeoModelConfig import HGTD_ReadoutGeometryCfg
113  acc = HGTD_ReadoutGeometryCfg(flags)
114 
115  kwargs.setdefault("MonGroupName", "ActsHgtdClusters")
116 
117  from AthenaMonitoring import AthMonitorCfgHelper
118  helper = AthMonitorCfgHelper(flags, 'ActsHgtdClusterAnalysisAlgCfg')
119 
120  monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.HgtdClusterAnalysisAlg, name, **kwargs)
121  monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs['MonGroupName'], '/ActsAnalysis/')
122 
123  path = "ActsHgtdClusters"
124  monitoringGroup.defineHistogram('localX,localY;h_localXY', title="h_localXY; x [mm]; y [mm]", type="TH2F", path=path,
125  xbins=20, xmin=-30, xmax=30,
126  ybins=20, ymin=-30, ymax=30)
127  monitoringGroup.defineHistogram('globalX,globalY;h_globalXY', title="h_globalXY; x [mm]; y [mm]", type="TH2F", path=path,
128  xbins=100, xmin=-750, xmax=750,
129  ybins=100, ymin=-750, ymax=750)
130  monitoringGroup.defineHistogram('globalZ,globalR;h_globalZR', title="h_globalZR; z [mm]; r [mm]", type="TH2F", path=path,
131  xbins=100, xmin=-3600, xmax=3600,
132  ybins=100, ymin=0, ymax=800)
133  monitoringGroup.defineTree('localX,localY,localT,localCovXX,localCovYY,localCovTT,globalX,globalY,globalZ,globalR,eta;HgtdClusters',
134  path='ntuples',
135  treedef='localX/vector<float>:localY/vector<float>:localT/vector<float>:localCovXX/vector<float>:localCovYY/vector<float>:localCovTT/vector<float>:globalX/vector<float>:globalY/vector<float>:globalZ/vector<float>:globalR/vector<float>:eta/vector<float>')
136 
137  acc.merge(helper.result())
138  return acc
139 
141  name: str = "ActsPixelClusterAnalysisAlg",
142  extension: str = "Acts",
143  **kwargs) -> ComponentAccumulator:
144  path = extension.replace("Acts", "") + "PixelClusters"
145 
146  from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelReadoutGeometryCfg
147  acc = ITkPixelReadoutGeometryCfg(flags)
148 
149  kwargs.setdefault("MonGroupName", extension + "ClusterAnalysisAlg")
150 
151  from AthenaMonitoring import AthMonitorCfgHelper
152  helper = AthMonitorCfgHelper(flags, extension + 'ClusterAnalysisAlgCfg')
153 
154  monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.PixelClusterAnalysisAlg, name, **kwargs)
155  monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs['MonGroupName'], '/ActsAnalysis/')
156 
157  monitoringGroup.defineHistogram('globalZ,perp;h_globalZR', title="h_globalZR; z [mm]; r [mm]", type="TH2F", path=path,
158  xbins=1500, xmin=-3000, xmax=3000,
159  ybins=400, ymin=0, ymax=400)
160  monitoringGroup.defineHistogram('globalX,globalY;h_globalXY', title="h_globalXY; x [mm]; y [mm]", type="TH2F", path=path,
161  xbins=800, xmin=-400, xmax=400,
162  ybins=800, ymin=-400, ymax=400)
163  monitoringGroup.defineHistogram('eta;h_etaCluster', title="h_etaCluster; cluster #eta", type="TH1F", path=path,
164  xbins=100, xmin=-5, xmax=5)
165 
166  monitoringGroup.defineTree('barrelEndcap,layerDisk,phiModule,etaModule,isInnermost,isNextToInnermost,eta,globalX,globalY,globalZ,perp,localX,localY,localCovXX,localCovYY,sizeX,sizeY,widthY;PixelClusters',
167  path='ntuples',
168  treedef='barrelEndcap/vector<int>:layerDisk/vector<int>:phiModule/vector<int>:etaModule/vector<int>:isInnermost/vector<int>:isNextToInnermost/vector<int>:eta/vector<double>:globalX/vector<float>:globalY/vector<float>:globalZ/vector<float>:perp/vector<float>:localX/vector<float>:localY/vector<float>:localCovXX/vector<float>:localCovYY/vector<float>:sizeX/vector<int>:sizeY/vector<int>:widthY/vector<float>')
169 
170  acc.merge(helper.result())
171  return acc
172 
173 
175  name: str = "ActsStripClusterAnalysisAlg",
176  extension: str = "Acts",
177  **kwargs) -> ComponentAccumulator:
178  path = extension.replace("Acts", "") + "StripClusters"
179 
180  from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
181  acc = ITkStripReadoutGeometryCfg(flags)
182 
183  kwargs.setdefault("MonGroupName", extension + "ClusterAnalysisAlg")
184 
185  from AthenaMonitoring import AthMonitorCfgHelper
186  helper = AthMonitorCfgHelper(flags, extension + "ClusterAnalysisAlgCfg")
187 
188  monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.StripClusterAnalysisAlg, name, **kwargs)
189  monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs['MonGroupName'], '/ActsAnalysis/')
190 
191  monitoringGroup.defineHistogram('globalZ,perp;h_globalZR', title="h_globalZR; z [mm]; r [mm]", type="TH2F", path=path,
192  xbins=1500, xmin=-3000, xmax=3000,
193  ybins=400, ymin=300, ymax=1100)
194  monitoringGroup.defineHistogram('globalX,globalY;h_globalXY', title="h_globalXY; x [mm]; y [mm]", type="TH2F", path=path,
195  xbins=1600, xmin=-1100, xmax=1100,
196  ybins=1600, ymin=-1100, ymax=1100)
197  monitoringGroup.defineHistogram('eta;h_etaCluster', title="h_etaCluster; cluster #eta", type="TH1F", path=path,
198  xbins=100, xmin=-5, xmax=5)
199 
200  monitoringGroup.defineTree(f'barrelEndcap,layerDisk,phiModule,etaModule,sideModule,eta,globalX,globalY,globalZ,perp,localX,localCovXX,sizeX;{path}',
201  path='ntuples',
202  treedef='barrelEndcap/vector<int>:layerDisk/vector<int>:phiModule/vector<int>:etaModule/vector<int>:sideModule/vector<int>:eta/vector<double>:globalX/vector<float>:globalY/vector<float>:globalZ/vector<float>:perp/vector<float>:localX/vector<float>:localCovXX/vector<float>:sizeX/vector<int>')
203 
204  acc.merge(helper.result())
205  return acc
206 
208  name: str = "",
209  extension: str = "Acts",
210  histoPath = "",
211  ntupleName = "",
212  **kwargs) -> ComponentAccumulator:
213  isPixel = 'Pixel' in name
214  perp_min = 0 if isPixel else 300
215  perp_max = 400 if isPixel else 1100
216 
217  acc = ComponentAccumulator()
218  from AthenaMonitoring import AthMonitorCfgHelper
219  helper = AthMonitorCfgHelper(flags, extension + 'SpacePointAnalysisAlgCfg')
220 
221  kwargs.setdefault("MonGroupName", extension + "SpacePointAnalysisAlg")
222 
223  monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.SpacePointAnalysisAlg, name, **kwargs)
224  monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs['MonGroupName'], '/ActsAnalysis/')
225 
226 
227  monitoringGroup.defineHistogram('Nsp;h_Nsp', title="Number of Space Points;N;Entries", type="TH1I", path=f"{histoPath}",
228  xbins=100, xmin=0, xmax=0)
229 
230  monitoringGroup.defineHistogram('globalX,globalY;h_globalXY', title="h_globalXY; x [mm]; y [mm]", type="TH2F", path=f"{histoPath}",
231  xbins=800, xmin=-perp_max, xmax=perp_max,
232  ybins=800, ymin=-perp_max, ymax=perp_max)
233  monitoringGroup.defineHistogram('globalZ,perp;h_globalZR', title="h_globalZR; z [mm]; r [mm]", type="TH2F", path=f"{histoPath}",
234  xbins=1500, xmin=-3000, xmax=3000,
235  ybins=400, ymin=perp_min, ymax=perp_max)
236  monitoringGroup.defineHistogram('eta;h_etaSpacePoint', title="h_etaSpacePoint; space point #eta", type="TH1F", path=f"{histoPath}",
237  xbins=100, xmin=-5, xmax=5)
238 
239  monitoringGroup.defineTree(f'barrelEndcap,layerDisk,phiModule,etaModule,sideModule,isInnermost,isNextToInnermost,isOverlap,eta,globalX,globalY,globalZ,perp,globalCovR,globalCovZ;{ntupleName}',
240  path='ntuples',
241  treedef='barrelEndcap/vector<int>:layerDisk/vector<int>:phiModule/vector<int>:etaModule/vector<int>:sideModule/vector<int>:isInnermost/vector<int>:isNextToInnermost/vector<int>:isOverlap/vector<int>:eta/vector<double>:globalX/vector<double>:globalY/vector<double>:globalZ/vector<double>:perp/vector<double>:globalCovR/vector<double>:globalCovZ/vector<double>')
242 
243  acc.merge(helper.result())
244  return acc
245 
247  name: str = "ActsPixelSpacePointAnalysisAlg",
248  extension: str = "Acts",
249  **kwargs) -> ComponentAccumulator:
250  acc = ComponentAccumulator()
251 
252  from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelReadoutGeometryCfg
253  acc.merge(ITkPixelReadoutGeometryCfg(flags))
254 
255  kwargs.setdefault("SpacePointContainerKey", "ITkPixelSpacePoints")
256  kwargs.setdefault("UsePixel", True)
257  kwargs.setdefault("UseOverlap", False)
258 
259  acc.merge(ActsBaseSpacePointAnalysisAlgCfg(flags,
260  name = name,
261  extension = extension,
262  histoPath = extension.replace("Acts", "") + "PixelSpacePoints",
263  ntupleName = extension.replace("Acts", "") + "PixelSpacePoints",
264  **kwargs))
265  return acc
266 
267 
268 
270  name: str = "ActsStripSpacePointAnalysisAlg",
271  extension: str = "Acts",
272  **kwargs) -> ComponentAccumulator:
273  acc = ComponentAccumulator()
274 
275  from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
276  acc.merge(ITkStripReadoutGeometryCfg(flags))
277 
278  kwargs.setdefault("SpacePointContainerKey", "ITkStripSpacePoints")
279  kwargs.setdefault("UsePixel", False)
280  kwargs.setdefault("UseOverlap", False)
281 
282  acc.merge(ActsBaseSpacePointAnalysisAlgCfg(flags,
283  name = name,
284  extension = extension,
285  histoPath = extension.replace("Acts", "") + "StripSpacePoints",
286  ntupleName = extension.replace("Acts", "") + "StripSpacePoints",
287  **kwargs))
288  return acc
289 
290 
292  name: str = "ActsStripOverlapSpacePointAnalysisAlg",
293  extension: str = "Acts",
294  **kwargs) -> ComponentAccumulator:
295  from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
296  acc = ITkStripReadoutGeometryCfg(flags)
297 
298  kwargs.setdefault("SpacePointContainerKey", "ITkStripOverlapSpacePoints")
299  kwargs.setdefault("UsePixel", False)
300  kwargs.setdefault("UseOverlap", True)
301 
302  acc.merge(ActsBaseSpacePointAnalysisAlgCfg(flags,
303  name = name,
304  extension = extension,
305  histoPath = extension.replace("Acts", "") + "StripOverlapSpacePoints",
306  ntupleName = extension.replace("Acts", "") + "StripOverlapSpacePoints",
307  **kwargs))
308  return acc
309 
310 
312  name: str = "",
313  extension: str = "Acts",
314  histoPath: str = "",
315  ntupleName: str = "",
316  **kwargs) -> ComponentAccumulator:
317  acc = ComponentAccumulator()
318 
319  isPixel = 'Pixel' in name
320  perp_min = 0 if isPixel else 300
321  perp_max = 400 if isPixel else 1100
322 
323  kwargs.setdefault('MonGroupName', extension + 'SeedAnalysisAlg')
324 
325  from AthenaMonitoring import AthMonitorCfgHelper
326  helper = AthMonitorCfgHelper(flags, extension + 'SeedAnalysisAlgCfg')
327 
328  from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg
329  geoTool = acc.popToolsAndMerge(ActsTrackingGeometryToolCfg(flags))
330  acc.addPublicTool(geoTool)
331 
332  # ATLAS Converter Tool
333  from ActsConfig.ActsEventCnvConfig import ActsToTrkConverterToolCfg
334  converterTool = acc.popToolsAndMerge(ActsToTrkConverterToolCfg(flags))
335 
336  # Track Param Estimation Tool
337  from ActsConfig.ActsTrackParamsEstimationConfig import ActsTrackParamsEstimationToolCfg
338  trackEstimationTool = acc.popToolsAndMerge(ActsTrackParamsEstimationToolCfg(flags))
339 
340  kwargs.setdefault('TrackingGeometryTool', acc.getPublicTool(geoTool.name)) # PublicToolHandle
341  kwargs.setdefault('ATLASConverterTool', converterTool)
342  kwargs.setdefault('TrackParamsEstimationTool', trackEstimationTool)
343 
344  monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.SeedAnalysisAlg, name, **kwargs)
345  monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs['MonGroupName'], '/ActsAnalysis/')
346 
347  monitoringGroup.defineHistogram('Nseed', title='Number of Seeds;N;Entries', type='TH1I', path=f'{histoPath}',
348  xbins=100, xmin=0, xmax=0)
349 
350  monitoringGroup.defineHistogram('z1,r1;zr1', title='Bottom SP - Z coordinate vs R;z [mm];r [mm]', type='TH2F', path=f'{histoPath}',
351  xbins=1500, xmin=-3000, xmax=3000,
352  ybins=400, ymin=perp_min, ymax=perp_max)
353  monitoringGroup.defineHistogram('z2,r2;zr2', title='Middle SP - Z coordinate vs R;z [mm];r [mm]', type='TH2F', path=f'{histoPath}',
354  xbins=1500, xmin=-3000, xmax=3000,
355  ybins=400, ymin=perp_min, ymax=perp_max)
356  monitoringGroup.defineHistogram('z3,r3;zr3', title='Top SP - Z coordinate vs R;z [mm];r [mm]', type='TH2F', path=f'{histoPath}',
357  xbins=1500, xmin=-3000, xmax=3000,
358  ybins=400, ymin=perp_min, ymax=perp_max)
359 
360  monitoringGroup.defineHistogram('x1;x1', title='Bottom SP - x coordinate;x [mm];Entries;', type='TH1F', path=f'{histoPath}',
361  xbins=100, xmin=-perp_max, xmax=perp_max)
362  monitoringGroup.defineHistogram('y1;y1', title='Bottom SP - y coordinate;y [mm];Entries;', type='TH1F', path=f'{histoPath}',
363  xbins=100, xmin=-perp_max, xmax=perp_max)
364  monitoringGroup.defineHistogram('z1;z1', title='Bottom SP - z coordinate;z [mm];Entries;', type='TH1F', path=f'{histoPath}',
365  xbins=100, xmin=-3000, xmax=3000)
366  monitoringGroup.defineHistogram('r1;r1', title='Bottom SP - radius coordinate;r [mm];Entries;', type='TH1F', path=f'{histoPath}',
367  xbins=100, xmin=perp_min, xmax=perp_max)
368 
369  monitoringGroup.defineHistogram('x2;x2', title='Middle SP - x coordinate;x [mm];Entries;', type='TH1F', path=f'{histoPath}',
370  xbins=100, xmin=-perp_max, xmax=perp_max)
371  monitoringGroup.defineHistogram('y2;y2', title='Middle SP - y coordinate;y [mm];Entries;', type='TH1F', path=f'{histoPath}',
372  xbins=100, xmin=-perp_max, xmax=perp_max)
373  monitoringGroup.defineHistogram('z2;z2', title='Middle SP - z coordinate;z [mm];Entries;', type='TH1F', path=f'{histoPath}',
374  xbins=100, xmin=-3000, xmax=3000)
375  monitoringGroup.defineHistogram('r2;r2', title='Middle SP - radius coordinate;r [mm];Entries;', type='TH1F', path=f'{histoPath}',
376  xbins=100, xmin=perp_min, xmax=perp_max)
377 
378  monitoringGroup.defineHistogram('x3;x3', title='Top SP - x coordinate;x [mm];Entries;', type='TH1F', path=f'{histoPath}',
379  xbins=100, xmin=-perp_max, xmax=perp_max)
380  monitoringGroup.defineHistogram('y3;y3', title='Top SP - y coordinate;y [mm];Entries;', type='TH1F', path=f'{histoPath}',
381  xbins=100, xmin=-perp_max, xmax=perp_max)
382  monitoringGroup.defineHistogram('z3;z3', title='Top SP - z coordinate;z [mm];Entries;', type='TH1F', path=f'{histoPath}',
383  xbins=100, xmin=-3000, xmax=3000)
384  monitoringGroup.defineHistogram('r3;r3', title='Top SP - radius coordinate;r [mm];Entries;', type='TH1F', path=f'{histoPath}',
385  xbins=100, xmin=perp_min, xmax=perp_max)
386 
387  if 'PixelSeeds' in ntupleName:
388  monitoringGroup.defineHistogram('pt;pT', title='Pt;Pt;Entries;', type='TH1F', path=f'{histoPath}',
389  xbins=100, xmin=0, xmax=100)
390  monitoringGroup.defineHistogram('d0;d0', title='d0;d0 [mm];Entries;', type='TH1F', path=f'{histoPath}',
391  xbins=50, xmin=0, xmax=2)
392  monitoringGroup.defineHistogram('eta;Eta', title='Pseudo-Rapidity;Pseudo-Rapidity;Entries;', type='TH1F', path=f'{histoPath}',
393  xbins=50, xmin=0, xmax=4.5)
394  monitoringGroup.defineHistogram('theta;Theta', title='Theta;Theta;Entries;', type='TH1F', path=f'{histoPath}',
395  xbins=50, xmin=0, xmax=1.6)
396  monitoringGroup.defineHistogram('penalty;Penalty', title='Penalty;Penalty;Entries;', type='TH1F', path=f'{histoPath}',
397  xbins=50, xmin=0, xmax=200)
398  monitoringGroup.defineHistogram('dzdr_b;dzdr_b', title='dzdr_b;;;', type='TH1F', path=f'{histoPath}',
399  xbins=50, xmin=-30, xmax=30)
400  monitoringGroup.defineHistogram('dzdr_t;dzdr_t', title='dzdr_t;;;', type='TH1F', path=f'{histoPath}',
401  xbins=50, xmin=-30, xmax=30)
402  elif 'StripSeeds' in ntupleName:
403  monitoringGroup.defineHistogram('pt;pT', title='Pt;Pt;Entries;', type='TH1F', path=f'{histoPath}',
404  xbins=100, xmin=0, xmax=2300)
405  monitoringGroup.defineHistogram('d0;d0', title='d0;d0 [mm];Entries;', type='TH1F', path=f'{histoPath}',
406  xbins=50, xmin=0, xmax=120)
407  monitoringGroup.defineHistogram('eta;Eta', title='Pseudo-Rapidity;Pseudo-Rapidity;Entries;', type='TH1F', path=f'{histoPath}',
408  xbins=50, xmin=0, xmax=4.5)
409  monitoringGroup.defineHistogram('theta;Theta', title='Theta;Theta;Entries;', type='TH1F', path=f'{histoPath}',
410  xbins=50, xmin=0, xmax=1.6)
411  monitoringGroup.defineHistogram('penalty;Penalty', title='Penalty;Penalty;Entries;', type='TH1F', path=f'{histoPath}',
412  xbins=50, xmin=0, xmax=20000)
413  monitoringGroup.defineHistogram('dzdr_b;dzdr_b', title='dzdr_b;;;', type='TH1F', path=f'{histoPath}',
414  xbins=50, xmin=-6.5, xmax=6.5)
415  monitoringGroup.defineHistogram('dzdr_t;dzdr_t', title='dzdr_t;;;', type='TH1F', path=f'{histoPath}',
416  xbins=50, xmin=-6.5, xmax=6.5)
417 
418  if flags.Tracking.doTruth:
419  monitoringGroup.defineHistogram('passed,estimated_eta;EfficiencyEta', title='Efficiency vs eta;eta;Efficiency', type='TEfficiency', path=f'{histoPath}',
420  xbins=50, xmin=-5, xmax=5)
421  monitoringGroup.defineHistogram('passed,estimated_pt;EfficiencyPt', title='Efficiency vs pT;pT [GeV];Efficiency', type='TEfficiency', path=f'{histoPath}',
422  xbins=30, xmin=0, xmax=120)
423 
424  # Tree
425  list_variables = "x1,y1,z1,r1,x2,y2,z2,r2,x3,y3,z3,r3,pt,theta,eta,d0,dzdr_b,dzdr_t,penalty,event_number,actual_mu"
426  tree_def = "x1/vector<double>:y1/vector<double>:z1/vector<double>:r1/vector<double>:x2/vector<double>:y2/vector<double>:z2/vector<double>:r2/vector<double>:x3/vector<double>:y3/vector<double>:z3/vector<double>:r3/vector<double>\
427 :pt/vector<float>:theta/vector<float>:eta/vector<float>:d0/vector<float>:dzdr_b/vector<float>:dzdr_t/vector<float>:penalty/vector<float>:event_number/l:actual_mu/F"
428  if flags.Tracking.doTruth:
429  list_variables += ",truth_barcode,truth_prob"
430  tree_def += ":truth_barcode/vector<int>:truth_prob/vector<double>"
431 
432  monitoringGroup.defineTree(f'{list_variables};{ntupleName}',
433  path='ntuples',
434  treedef=tree_def )
435 
436  acc.merge(helper.result())
437  return acc
438 
439 
440 
442  name: str = "ActsPixelSeedAnalysisAlg",
443  extension: str = "Acts",
444  **kwargs) -> ComponentAccumulator:
445  kwargs.setdefault('InputSeedCollection', 'ActsPixelSeeds')
446 
447  if flags.Tracking.doTruth:
448  kwargs.setdefault('DetectorElements', 'ITkPixelDetectorElementCollection')
449  kwargs.setdefault('ITkClustersTruth', 'PRD_MultiTruthITkPixel')
450 
451  return ActsBaseSeedAnalysisAlgCfg(flags,
452  name,
453  extension,
454  histoPath = extension.replace("Acts", "") + 'PixelSeeds',
455  ntupleName = extension.replace("Acts", "") + 'PixelSeeds',
456  **kwargs)
457 
458 
460  name: str = "ActsStripSeedAnalysisAlg",
461  extension: str = "Acts",
462  **kwargs) -> ComponentAccumulator:
463  kwargs.setdefault('InputSeedCollection', 'ActsStripSeeds')
464  kwargs.setdefault('UsePixel', False)
465 
466  if flags.Tracking.doTruth:
467  kwargs.setdefault('DetectorElements', 'ITkStripDetectorElementCollection')
468  kwargs.setdefault('ITkClustersTruth', 'PRD_MultiTruthITkStrip')
469 
470  return ActsBaseSeedAnalysisAlgCfg(flags,
471  name,
472  extension,
473  histoPath = extension.replace("Acts", "") + 'StripSeeds',
474  ntupleName = extension.replace("Acts", "") + 'StripSeeds',
475  **kwargs)
476 
477 
479  name: str = "",
480  extension: str = "Acts",
481  histoPath: str = "",
482  ntupleName: str = "",
483  **kwargs) -> ComponentAccumulator:
484  from AthenaMonitoring import AthMonitorCfgHelper
485  helper = AthMonitorCfgHelper(flags,extension + 'EstimatedTrackParamsAnalysisAlgCfg')
486 
487  kwargs.setdefault('MonGroupName', extension + 'SeedAnalysisAlg')
488 
489  monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.EstimatedTrackParamsAnalysisAlg, name, **kwargs)
490  monitoringGroup = helper.addGroup(monitoringAlgorithm, kwargs['MonGroupName'], '/ActsAnalysis/')
491 
492  monitoringGroup.defineHistogram('Nparams', title='Number of Estimated Parameters from Seeds;N;Entries', type='TH1I', path=f'{histoPath}',
493  xbins=100, xmin=0, xmax=0)
494 
495  monitoringGroup.defineTree(f"track_param_pt,track_param_eta,track_param_phi,track_param_loc0,track_param_loc1,track_param_theta,track_param_qoverp,track_param_time,track_param_charge;{ntupleName}",
496  path="ntuples",
497  treedef="track_param_pt/vector<double>:track_param_eta/vector<double>:track_param_phi/vector<double>:track_param_loc0/vector<double>:track_param_loc1/vector<double>:track_param_theta/vector<double>:track_param_qoverp/vector<double>:track_param_time/vector<double>:track_param_charge/vector<int>")
498 
499  return helper.result()
500 
502  name: str = "ActsSeedingAlgorithmAnalysis",
503  **kwargs) -> ComponentAccumulator:
504  acc = ComponentAccumulator()
505 
506  MonitoringGroupNames = []
507 
508  if "SeedingTools" not in kwargs:
509  from InDetConfig.SiSpacePointsSeedToolConfig import ITkSiSpacePointsSeedMakerCfg
510  ITkSiSpacePointsSeedMaker = acc.popToolsAndMerge(ITkSiSpacePointsSeedMakerCfg(flags))
511  ITkSiSpacePointsSeedMaker.maxSize = 1e8
512  MonitoringGroupNames.append("ITkSiSpacePointSeedMaker")
513 
514  from ActsConfig.ActsSeedingConfig import ActsSiSpacePointsSeedMakerToolCfg
515  # The default Acts pixel seeding tool performs by default a seed selection after the seed finding
516  # We have to disable it or a fair comparison with the other seed computations
517  from ActsConfig.ActsSeedingConfig import ActsPixelSeedingToolCfg
518  seedToolPixel = acc.popToolsAndMerge(ActsPixelSeedingToolCfg(flags, doSeedQualitySelection=False))
519  # We then override the pixel seeding tool inside the ActsSiSpacePointsSeedMakerToolCfg so that we pick this one
520  ActsITkSiSpacePointsSeedMaker = acc.popToolsAndMerge(ActsSiSpacePointsSeedMakerToolCfg(flags, SeedToolPixel=seedToolPixel))
521  ActsITkSiSpacePointsSeedMaker.doSeedConversion = False
522  MonitoringGroupNames.append("ActsITkSiSpacePointSeedMaker")
523 
524  from ActsConfig.ActsSeedingConfig import ActsPixelOrthogonalSeedingToolCfg, ActsStripOrthogonalSeedingToolCfg
525  pixel_orthogonal_seeding_tool = acc.popToolsAndMerge(ActsPixelOrthogonalSeedingToolCfg(flags))
526  strip_orthogonal_seeding_tool = acc.popToolsAndMerge(ActsStripOrthogonalSeedingToolCfg(flags))
527  ActsITkSiSpacePointsSeedMakerOrthogonal = \
528  acc.popToolsAndMerge(ActsSiSpacePointsSeedMakerToolCfg(flags,
529  name="ActsSiSpacePointsSeedMakerOrthogonal",
530  SeedToolPixel=pixel_orthogonal_seeding_tool,
531  SeedToolStrip=strip_orthogonal_seeding_tool))
532  ActsITkSiSpacePointsSeedMakerOrthogonal.doSeedConversion = False
533  MonitoringGroupNames.append("ActsOrthogonalITkSiSpacePointSeedMaker")
534 
535  from GaudiKernel.GaudiHandles import PrivateToolHandleArray
536  kwargs.setdefault("SeedingTools",
537  PrivateToolHandleArray([ITkSiSpacePointsSeedMaker,
538  ActsITkSiSpacePointsSeedMaker,
539  ActsITkSiSpacePointsSeedMakerOrthogonal]))
540 
541  kwargs.setdefault("MonitorNames", MonitoringGroupNames)
542 
543  from AthenaMonitoring import AthMonitorCfgHelper
544  helper = AthMonitorCfgHelper(flags, 'SeedingAlgorithmAnalysisAlgCfg')
545  monitoringAlgorithm = helper.addAlgorithm(CompFactory.ActsTrk.SeedingAlgorithmAnalysisAlg, name, **kwargs)
546 
547  for groupName in MonitoringGroupNames:
548  monitoringGroup = helper.addGroup(monitoringAlgorithm, groupName, '/'+groupName+'/')
549  monitoringGroup.defineTree('eventNumber,stripSeedInitialisationTime,stripSeedProductionTime,pixelSeedInitialisationTime,pixelSeedProductionTime,numberPixelSpacePoints,numberStripSpacePoints,numberPixelSeeds,numberStripSeeds;seedInformation',
550  path='ntuples',
551  treedef='eventNumber/I:stripSeedInitialisationTime/F:stripSeedProductionTime/F:pixelSeedInitialisationTime/F:pixelSeedProductionTime/F:numberPixelSpacePoints/I:numberStripSpacePoints/I:numberPixelSeeds/I:numberStripSeeds/I')
552 
553  acc.merge(helper.result())
554  return acc
555 
556 
558  name: str = 'ActsPixelEstimatedTrackParamsAnalysisAlg',
559  extension: str = "Acts",
560  **kwargs) -> ComponentAccumulator:
561  kwargs.setdefault('InputTrackParamsCollection', 'ActsPixelEstimatedTrackParams')
563  name,
564  extension,
565  histoPath = extension.replace("Acts", "") + 'PixelEstimatedTrackParams',
566  ntupleName = extension.replace("Acts", "") + 'PixelEstimatedTrackParams',
567  **kwargs)
568 
569 
571  name: str = 'ActsStripEstimatedTrackParamsAnalysisAlg',
572  extension: str = "Acts",
573  **kwargs) -> ComponentAccumulator:
574  kwargs.setdefault('InputTrackParamsCollection', 'ActsStripEstimatedTrackParams')
576  name,
577  extension,
578  histoPath = extension.replace("Acts", "") + 'StripEstimatedTrackParams',
579  ntupleName = extension.replace("Acts", "") + 'StripEstimatedTrackParams',
580  **kwargs)
581 
582 def PhysValActsCfg(flags,
583  name: str = 'PhysValActs',
584  **kwargs) -> ComponentAccumulator:
585  acc = ComponentAccumulator()
586 
587  # deduce what to analyse from the collectiosn in the input file
588  typedCollections = flags.Input.TypedCollections
589  for col in typedCollections:
590  col_type, col_name = col.split("#")
591  if col_type == "xAOD::PixelClusterContainer":
592  kwargs.setdefault("doPixelClusters", True)
593  elif col_type == "xAOD::StripClusterContainer":
594  kwargs.setdefault("doStripClusters", True)
595  elif col_type == "xAOD::HGTDClusterContainer":
596  kwargs.setdefault("doHgtdClusters", flags.PhysVal.IDPVM.doHGTD)
597  elif col_type == "xAOD::SpacePointContainer":
598  if 'Pixel' in col_name:
599  kwargs.setdefault("doPixelSpacePoints", True)
600  elif 'Strip' in col_name:
601  kwargs.setdefault("doStripSpacePoints", True)
602  kwargs.setdefault("doStripOverlapSpacePoints", True)
603 
604  acc.setPrivateTools(CompFactory.ActsTrk.PhysValTool(name=name,
605  **kwargs))
606  return acc
607 
608 def ActsSeedAnalysisCfg(flags) -> ComponentAccumulator:
609  acc = ComponentAccumulator()
610  if flags.Detector.EnableITkPixel:
611  acc.merge(ActsPixelSeedAnalysisAlgCfg(flags))
612  if flags.Detector.EnableITkStrip:
613  acc.merge(ActsStripSeedAnalysisAlgCfg(flags))
614  return acc
615 
616 
617 def ActsEstimatedTrackParamsAnalysisCfg(flags) -> ComponentAccumulator:
618  acc = ComponentAccumulator()
619  if flags.Detector.EnableITkPixel:
621  if flags.Detector.EnableITkStrip:
623  return acc
ActsSeedingConfig.ActsPixelOrthogonalSeedingToolCfg
ComponentAccumulator ActsPixelOrthogonalSeedingToolCfg(flags, str name="ActsPixelOrthogonalSeedingTool", **kwargs)
Definition: ActsSeedingConfig.py:89
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
ActsAnalysisConfig.ActsPixelEstimatedTrackParamsAnalysisAlgCfg
ComponentAccumulator ActsPixelEstimatedTrackParamsAnalysisAlgCfg(flags, str name='ActsPixelEstimatedTrackParamsAnalysisAlg', str extension="Acts", **kwargs)
Definition: ActsAnalysisConfig.py:557
ActsAnalysisConfig.ActsStripSpacePointAnalysisAlgCfg
ComponentAccumulator ActsStripSpacePointAnalysisAlgCfg(flags, str name="ActsStripSpacePointAnalysisAlg", str extension="Acts", **kwargs)
Definition: ActsAnalysisConfig.py:269
ActsAnalysisConfig.ActsStripSeedAnalysisAlgCfg
ComponentAccumulator ActsStripSeedAnalysisAlgCfg(flags, str name="ActsStripSeedAnalysisAlg", str extension="Acts", **kwargs)
Definition: ActsAnalysisConfig.py:459
ActsEventCnvConfig.ActsToTrkConverterToolCfg
ComponentAccumulator ActsToTrkConverterToolCfg(flags, str name="ActsToTrkConverterTool", **kwargs)
Definition: ActsEventCnvConfig.py:6
ActsAnalysisConfig.ActsSeedAnalysisCfg
ComponentAccumulator ActsSeedAnalysisCfg(flags)
Definition: ActsAnalysisConfig.py:608
ActsSeedingConfig.ActsPixelSeedingToolCfg
ComponentAccumulator ActsPixelSeedingToolCfg(flags, str name="ActsPixelSeedingTool", **kwargs)
Definition: ActsSeedingConfig.py:10
ActsAnalysisConfig.ActsStripClusterAnalysisAlgCfg
ComponentAccumulator ActsStripClusterAnalysisAlgCfg(flags, str name="ActsStripClusterAnalysisAlg", str extension="Acts", **kwargs)
Definition: ActsAnalysisConfig.py:174
ActsAnalysisConfig.ActsPixelSeedAnalysisAlgCfg
ComponentAccumulator ActsPixelSeedAnalysisAlgCfg(flags, str name="ActsPixelSeedAnalysisAlg", str extension="Acts", **kwargs)
Definition: ActsAnalysisConfig.py:441
ActsAnalysisConfig.ActsPixelSpacePointAnalysisAlgCfg
ComponentAccumulator ActsPixelSpacePointAnalysisAlgCfg(flags, str name="ActsPixelSpacePointAnalysisAlg", str extension="Acts", **kwargs)
Definition: ActsAnalysisConfig.py:246
ActsAnalysisConfig.ActsTrackAnalysisAlgCfg
ComponentAccumulator ActsTrackAnalysisAlgCfg(flags, str name="ActsTrackAnalysisAlg", **kwargs)
Definition: ActsAnalysisConfig.py:6
ActsAnalysisConfig.ActsHgtdClusterAnalysisAlgCfg
ComponentAccumulator ActsHgtdClusterAnalysisAlgCfg(flags, str name="ActsHgtdClusterAnalysisAlg", **kwargs)
Definition: ActsAnalysisConfig.py:106
ActsAnalysisConfig.ActsSeedingAlgorithmAnalysisAlgCfg
ComponentAccumulator ActsSeedingAlgorithmAnalysisAlgCfg(flags, str name="ActsSeedingAlgorithmAnalysis", **kwargs)
Definition: ActsAnalysisConfig.py:501
ActsAnalysisConfig.ActsBaseEstimatedTrackParamsAnalysisAlgCfg
ComponentAccumulator ActsBaseEstimatedTrackParamsAnalysisAlgCfg(flags, str name="", str extension="Acts", str histoPath="", str ntupleName="", **kwargs)
Definition: ActsAnalysisConfig.py:478
ActsAnalysisConfig.ActsStripOverlapSpacePointAnalysisAlgCfg
ComponentAccumulator ActsStripOverlapSpacePointAnalysisAlgCfg(flags, str name="ActsStripOverlapSpacePointAnalysisAlg", str extension="Acts", **kwargs)
Definition: ActsAnalysisConfig.py:291
ActsTrackParamsEstimationConfig.ActsTrackParamsEstimationToolCfg
ComponentAccumulator ActsTrackParamsEstimationToolCfg(ConfigFlags, str name="ActsTrackParamsEstimationTool", **kwargs)
Definition: ActsTrackParamsEstimationConfig.py:6
ActsAnalysisConfig.ActsBaseSeedAnalysisAlgCfg
ComponentAccumulator ActsBaseSeedAnalysisAlgCfg(flags, str name="", str extension="Acts", str histoPath="", str ntupleName="", **kwargs)
Definition: ActsAnalysisConfig.py:311
HGTD_GeoModelConfig.HGTD_ReadoutGeometryCfg
def HGTD_ReadoutGeometryCfg(flags)
Definition: python/HGTD_GeoModelConfig.py:23
ActsGeometryConfig.ActsTrackingGeometryToolCfg
ComponentAccumulator ActsTrackingGeometryToolCfg(flags, str name="ActsTrackingGeometryTool")
Definition: ActsGeometryConfig.py:99
ActsAnalysisConfig.ActsStripEstimatedTrackParamsAnalysisAlgCfg
ComponentAccumulator ActsStripEstimatedTrackParamsAnalysisAlgCfg(flags, str name='ActsStripEstimatedTrackParamsAnalysisAlg', str extension="Acts", **kwargs)
Definition: ActsAnalysisConfig.py:570
ActsSeedingConfig.ActsSiSpacePointsSeedMakerToolCfg
ComponentAccumulator ActsSiSpacePointsSeedMakerToolCfg(flags, str name='ActsSiSpacePointsSeedMakerTool', **kwargs)
Definition: ActsSeedingConfig.py:140
ActsAnalysisConfig.ActsEstimatedTrackParamsAnalysisCfg
ComponentAccumulator ActsEstimatedTrackParamsAnalysisCfg(flags)
Definition: ActsAnalysisConfig.py:617
ITkPixelGeoModelConfig.ITkPixelReadoutGeometryCfg
def ITkPixelReadoutGeometryCfg(flags, setGeometryAlignable=False, setAlignmentFolderName="/Indet/Align")
Definition: ITkPixelGeoModelConfig.py:39
python.SiSpacePointsSeedToolConfig.ITkSiSpacePointsSeedMakerCfg
def ITkSiSpacePointsSeedMakerCfg(flags, name="ITkSpSeedsMaker", **kwargs)
Definition: SiSpacePointsSeedToolConfig.py:201
ITkStripGeoModelConfig.ITkStripReadoutGeometryCfg
def ITkStripReadoutGeometryCfg(flags, setGeometryAlignable=False, setAlignmentFolderName="/Indet/Align")
Definition: ITkStripGeoModelConfig.py:39
ActsAnalysisConfig.PhysValActsCfg
ComponentAccumulator PhysValActsCfg(flags, str name='PhysValActs', **kwargs)
Definition: ActsAnalysisConfig.py:582
ActsAnalysisConfig.ActsTrackParticleAnalysisAlgCfg
ComponentAccumulator ActsTrackParticleAnalysisAlgCfg(flags, str name='ActsTrackParticleAnalysisAlg', **kwargs)
Definition: ActsAnalysisConfig.py:46
ActsSeedingConfig.ActsStripOrthogonalSeedingToolCfg
ComponentAccumulator ActsStripOrthogonalSeedingToolCfg(flags, str name="ActsStripOrthogonalSeedingTool", **kwargs)
Definition: ActsSeedingConfig.py:112
ActsAnalysisConfig.ActsBaseSpacePointAnalysisAlgCfg
ComponentAccumulator ActsBaseSpacePointAnalysisAlgCfg(flags, str name="", str extension="Acts", histoPath="", ntupleName="", **kwargs)
Definition: ActsAnalysisConfig.py:207
ActsAnalysisConfig.ActsPixelClusterAnalysisAlgCfg
ComponentAccumulator ActsPixelClusterAnalysisAlgCfg(flags, str name="ActsPixelClusterAnalysisAlg", str extension="Acts", **kwargs)
Definition: ActsAnalysisConfig.py:140