3 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory
import CompFactory
6 from ActsInterop
import UnitConstants
15 noStrip: bool =
False) -> list:
17 if flags.Detector.EnableITkPixel
and pixel
is not None:
19 if flags.Detector.EnableITkStrip
and strip
is not None and not noStrip:
21 if flags.Acts.useHGTDClusterInTrackFinding
and hgtd
is not None:
28 strip: list =
None) -> list:
29 keys =
isdet(flags, pixel=pixel, strip=strip)
30 if flags.Acts.useStripSeedsFirst:
35 name: str =
"ActsTrackStatePrinterTool",
36 **kwargs) -> ComponentAccumulator:
39 kwargs.setdefault(
"InputSpacePoints",
isdet(flags, noStrip=flags.Tracking.doITkFastTracking,
40 pixel=[
'ITkPixelSpacePoints_Cached']
if flags.Acts.useCache
else [
'ITkPixelSpacePoints'],
41 strip=[
'ITkStripSpacePoints_Cached',
'ITkStripOverlapSpacePoints_Cached']
if flags.Acts.useCache
else [
'ITkStripSpacePoints',
'ITkStripOverlapSpacePoints']))
43 if 'TrackingGeometryTool' not in kwargs:
44 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
46 "TrackingGeometryTool",
50 acc.setPrivateTools(CompFactory.ActsTrk.TrackStatePrinterTool(name, **kwargs))
56 name: str =
"ActsTrackFindingAlg",
57 **kwargs) -> ComponentAccumulator:
59 return c
if isinstance(c, list)
else [c]
63 from ActsConfig.ActsGeometryConfig
import (ActsDetectorElementToActsGeometryIdMappingAlgCfg,
64 ActsVolumeIdToDetectorCollectionMappingAlgCfg)
66 kwargs.setdefault(
'DetectorElementToActsGeometryIdMapKey',
'DetectorElementToActsGeometryIdMap')
69 if not flags.Acts.useHGTDClusterInTrackFinding:
73 kwargs.setdefault(
'EndOfTheWorldVolumeIds', [2, 25])
76 kwargs.setdefault(
"ActsVolumeIdToDetectorElementCollectionMapKey",
"VolumeIdToDetectorElementCollectionMap")
77 def filterCollections(flags, pixel_col, strip_col) :
79 if flags.Detector.GeometryITkPixel:
81 if flags.Detector.GeometryITkStrip:
84 kwargs.setdefault(
"DetElStatus",filterCollections(flags,
'ITkStripDetectorElementStatus',
'ITkPixelDetectorElementStatus'))
89 kwargs.setdefault(
"SeedLabels",
seedOrder(flags, pixel=[
"PPP"], strip=[
"SSS"]))
90 kwargs.setdefault(
"SeedContainerKeys",
seedOrder(flags, pixel=[
"ActsPixelSeeds"], strip=[
"ActsStripSeeds"]))
91 kwargs.setdefault(
'DetectorElementsKeys',
seedOrder(flags, pixel=[
'ITkPixelDetectorElementCollection'], strip=[
'ITkStripDetectorElementCollection']))
93 kwargs.setdefault(
"UncalibratedMeasurementContainerKeys",
isdet(flags, pixel=[
"ITkPixelClusters_Cached" if flags.Acts.useCache
else "ITkPixelClusters"], strip=[
"ITkStripClusters_Cached" if flags.Acts.useCache
else "ITkStripClusters"], hgtd=[
"HGTD_Clusters"]))
95 kwargs.setdefault(
'ACTSTracksLocation',
'ActsTracks')
97 kwargs.setdefault(
"maxPropagationStep", 10000)
98 kwargs.setdefault(
"skipDuplicateSeeds", flags.Acts.skipDuplicateSeeds)
99 kwargs.setdefault(
"refitSeeds",
seedOrder(flags, pixel=[
False], strip=[
False]))
100 kwargs.setdefault(
"doTwoWay", flags.Acts.doTwoWayCKF)
101 kwargs.setdefault(
"autoReverseSearch", flags.Acts.autoReverseSearchCKF)
107 if flags.Detector.GeometryITk:
108 kwargs.setdefault(
"etaBins", flags.Tracking.ActiveConfig.etaBins)
110 if flags.Tracking.doITkFastTracking:
111 kwargs.setdefault(
"chi2CutOff", [100])
112 kwargs.setdefault(
"chi2OutlierCutOff", [100])
114 kwargs.setdefault(
"chi2CutOff", [25])
115 kwargs.setdefault(
"chi2OutlierCutOff", [25])
116 kwargs.setdefault(
"branchStopperPtMinFactor", 0.9)
117 kwargs.setdefault(
"branchStopperAbsEtaMaxExtra", 0.1)
119 kwargs.setdefault(
"numMeasurementsCutOff", [1])
123 kwargs.setdefault(
"StatisticEtaBins", [eta/10.
for eta
in range(5, 40, 5)])
125 kwargs.setdefault(
"absEtaMax", flags.Tracking.ActiveConfig.maxEta)
126 kwargs.setdefault(
"ptMin", [p / Units.GeV * UnitConstants.GeV
for p
in tolist(flags.Tracking.ActiveConfig.minPT)])
128 kwargs.setdefault(
"z0Min", [-flags.Tracking.ActiveConfig.maxZImpactSeed / Units.mm * UnitConstants.mm
for etabin
in flags.Tracking.ActiveConfig.etaBins[:-1]])
129 kwargs.setdefault(
"z0Max", [ flags.Tracking.ActiveConfig.maxZImpactSeed / Units.mm * UnitConstants.mm
for etabin
in flags.Tracking.ActiveConfig.etaBins[:-1]])
130 kwargs.setdefault(
"d0Min", [-d0 / Units.mm * UnitConstants.mm
for d0
in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpact)])
131 kwargs.setdefault(
"d0Max", [ d0 / Units.mm * UnitConstants.mm
for d0
in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpact)])
132 kwargs.setdefault(
"minMeasurements", tolist(flags.Tracking.ActiveConfig.minClusters))
133 kwargs.setdefault(
"maxHoles", tolist(flags.Tracking.ActiveConfig.maxHoles))
134 kwargs.setdefault(
"minPixelHits", tolist(flags.Tracking.ActiveConfig.minPixel))
135 kwargs.setdefault(
"maxPixelHoles", tolist(flags.Tracking.ActiveConfig.maxPixelHoles))
136 kwargs.setdefault(
"maxStripHoles", tolist(flags.Tracking.ActiveConfig.maxSctHoles))
140 kwargs.setdefault(
"ptMinMeasurements",
isdet(flags, pixel=[3], strip=[6]))
141 kwargs.setdefault(
"absEtaMaxMeasurements",
isdet(flags, pixel=[3], strip=[999999]))
143 if 'TrackingGeometryTool' not in kwargs:
144 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
146 "TrackingGeometryTool",
150 if 'ATLASConverterTool' not in kwargs:
151 from ActsConfig.ActsEventCnvConfig
import ActsToTrkConverterToolCfg
154 if 'TrackParamsEstimationTool' not in kwargs:
155 from ActsConfig.ActsTrackParamsEstimationConfig
import ActsTrackParamsEstimationToolCfg
158 if 'ExtrapolationTool' not in kwargs:
159 from ActsConfig.ActsGeometryConfig
import ActsExtrapolationToolCfg
165 if flags.Acts.doPrintTrackStates
and 'TrackStatePrinter' not in kwargs:
171 if 'FitterTool' not in kwargs:
172 from ActsConfig.ActsTrackFittingConfig
import ActsFitterCfg
176 ReverseFilteringPt=0,
177 OutlierChi2Cut=
float(
'inf')))
180 if 'PixelCalibrator' not in kwargs:
181 from AthenaConfiguration.Enums
import BeamType
182 from ActsConfig.ActsConfigFlags
import PixelCalibrationStrategy
183 from ActsConfig.ActsMeasurementCalibrationConfig
import ActsAnalogueClusteringToolCfg
185 if not (flags.Tracking.doPixelDigitalClustering
or flags.Beam.Type
is BeamType.Cosmics):
186 if flags.Acts.PixelCalibrationStrategy
in (PixelCalibrationStrategy.AnalogueClustering,
187 PixelCalibrationStrategy.AnalogueClusteringAfterSelection) :
191 CalibrateAfterMeasurementSelection = flags.Acts.PixelCalibrationStrategy
is PixelCalibrationStrategy.AnalogueClusteringAfterSelection))
194 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
195 from ActsConfig.ActsMonitoringConfig
import ActsTrackFindingMonitoringToolCfg
196 kwargs.setdefault(
'MonTool', acc.popToolsAndMerge(
199 acc.addEventAlgo(CompFactory.ActsTrk.TrackFindingAlg(name, **kwargs))
205 **kwargs) -> ComponentAccumulator:
209 dataPrepPrefix = f
'{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}'
210 if not flags.Tracking.ActiveConfig.isSecondaryPass:
212 pixelClusters = f
'ITk{dataPrepPrefix}PixelClusters'
213 stripClusters = f
'ITk{dataPrepPrefix}StripClusters'
214 hgtdClusters = f
'{dataPrepPrefix}HGTD_Clusters'
216 if flags.Acts.useCache:
217 pixelClusters +=
'_Cached'
218 stripClusters +=
'_Cached'
222 pixelSeedLabels = [
'PPP']
223 stripSeedLabels = [
'SSS']
225 if flags.Tracking.ActiveConfig.extension
in [
'ActsConversion',
'ActsLargeRadius']:
226 pixelSeedLabels =
None
228 elif flags.Tracking.doITkFastTracking:
229 stripSeedLabels =
None
232 pixelSeedKeys = [f
'{flags.Tracking.ActiveConfig.extension}PixelSeeds']
233 stripSeedKeys = [f
'{flags.Tracking.ActiveConfig.extension}StripSeeds']
234 pixelDetElements = [
'ITkPixelDetectorElementCollection']
235 stripDetElements = [
'ITkStripDetectorElementCollection']
236 if pixelSeedLabels
is None:
238 pixelDetElements =
None
239 if stripSeedLabels
is None:
241 stripDetElements =
None
243 kwargs.setdefault(
'ACTSTracksLocation', f
"{flags.Tracking.ActiveConfig.extension}Tracks")
244 kwargs.setdefault(
'UncalibratedMeasurementContainerKeys',
isdet(flags, pixel=[pixelClusters], strip=[stripClusters], hgtd=[hgtdClusters]))
245 kwargs.setdefault(
'SeedLabels',
seedOrder(flags, pixel=pixelSeedLabels, strip=stripSeedLabels))
246 kwargs.setdefault(
'SeedContainerKeys',
seedOrder(flags, pixel=pixelSeedKeys, strip=stripSeedKeys))
247 kwargs.setdefault(
'DetectorElementsKeys',
seedOrder(flags, pixel=pixelDetElements, strip=stripDetElements))
250 name=f
"{flags.Tracking.ActiveConfig.extension}TrackFindingAlg",
254 if flags.Acts.Tracks.doAnalysis:
255 from ActsConfig.ActsAnalysisConfig
import ActsTrackAnalysisAlgCfg
257 name=f
"{flags.Tracking.ActiveConfig.extension}TrackAnalysisAlg",
258 TracksLocation=f
"{flags.Tracking.ActiveConfig.extension}Tracks"))
261 if flags.Acts.EDM.PersistifyTracks:
263 prefix = f
"{flags.Tracking.ActiveConfig.extension}"
264 toAOD += [f
"xAOD::TrackSummaryContainer#{prefix}TrackSummary",
265 f
"xAOD::TrackSummaryAuxContainer#{prefix}TrackSummaryAux.",
266 f
"xAOD::TrackStateContainer#{prefix}TrackStates",
267 f
"xAOD::TrackStateAuxContainer#{prefix}TrackStatesAux.-uncalibratedMeasurement",
268 f
"xAOD::TrackParametersContainer#{prefix}TrackParameters",
269 f
"xAOD::TrackParametersAuxContainer#{prefix}TrackParametersAux.",
270 f
"xAOD::TrackJacobianContainer#{prefix}TrackJacobians",
271 f
"xAOD::TrackJacobianAuxContainer#{prefix}TrackJacobiansAux.",
272 f
"xAOD::TrackMeasurementContainer#{prefix}TrackMeasurements",
273 f
"xAOD::TrackMeasurementAuxContainer#{prefix}TrackMeasurementsAux.",
274 f
"xAOD::TrackSurfaceContainer#{prefix}TrackStateSurfaces",
275 f
"xAOD::TrackSurfaceAuxContainer#{prefix}TrackStateSurfacesAux.",
276 f
"xAOD::TrackSurfaceContainer#{prefix}TrackSurfaces",
277 f
"xAOD::TrackSurfaceAuxContainer#{prefix}TrackSurfacesAux."]
278 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
285 name: str =
"ActsScoreBasedAmbiguityResolutionAlg",
286 **kwargs) -> ComponentAccumulator:
289 kwargs.setdefault(
'TracksLocation',
'ActsTracks')
290 kwargs.setdefault(
'ResolvedTracksLocation',
'ActsResolvedTracks')
291 kwargs.setdefault(
'MinScore',1.0)
292 kwargs.setdefault(
'MinScoreSharedTracks', 1.0)
293 kwargs.setdefault(
'MaxSharedTracksPerMeasurement', 20)
294 kwargs.setdefault(
'MaxShared', 5)
295 kwargs.setdefault(
'MinUnshared', 5)
296 kwargs.setdefault(
'UseAmbiguityScoring',
True)
297 kwargs.setdefault(
'jsonFileName',
'ActsAmbiguityConfig.json')
299 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
300 from ActsConfig.ActsMonitoringConfig
import ActsAmbiguityResolutionMonitoringToolCfg
301 kwargs.setdefault(
'MonTool', acc.popToolsAndMerge(
303 if 'TrackingGeometryTool' not in kwargs:
304 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
306 "TrackingGeometryTool",
309 CompFactory.ActsTrk.ScoreBasedAmbiguityResolutionAlg(name, **kwargs))
314 name: str =
"ActsAmbiguityResolutionAlg",
315 **kwargs) -> ComponentAccumulator:
318 kwargs.setdefault(
'TracksLocation',
'ActsTracks')
319 kwargs.setdefault(
'ResolvedTracksLocation',
'ActsResolvedTracks')
320 kwargs.setdefault(
'MaximumSharedHits', 3)
321 kwargs.setdefault(
'MaximumIterations', 10000)
322 kwargs.setdefault(
'NMeasurementsMin', 7)
324 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
325 from ActsConfig.ActsMonitoringConfig
import ActsAmbiguityResolutionMonitoringToolCfg
326 kwargs.setdefault(
'MonTool', acc.popToolsAndMerge(
328 if 'TrackingGeometryTool' not in kwargs:
329 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
331 "TrackingGeometryTool",
334 CompFactory.ActsTrk.AmbiguityResolutionAlg(name, **kwargs))
339 **kwargs) -> ComponentAccumulator:
341 kwargs.setdefault(
'TracksLocation', f
"{flags.Tracking.ActiveConfig.extension}Tracks")
342 kwargs.setdefault(
'ResolvedTracksLocation', f
"{flags.Tracking.ActiveConfig.extension}ResolvedTracks")
343 from ActsConfig.ActsConfigFlags
import AmbiguitySolverStrategy
345 if flags.Acts.AmbiguitySolverStrategy
is AmbiguitySolverStrategy.ScoreBased:
347 name=f
"{flags.Tracking.ActiveConfig.extension}ScoreBasedAmbiguityResolutionAlg",
351 name=f
"{flags.Tracking.ActiveConfig.extension}AmbiguityResolutionAlg",
354 if flags.Acts.Tracks.doAnalysis:
355 from ActsConfig.ActsAnalysisConfig
import ActsTrackAnalysisAlgCfg
357 name=f
"{flags.Tracking.ActiveConfig.extension}ResolvedTrackAnalysisAlg",
358 TracksLocation=f
"{flags.Tracking.ActiveConfig.extension}ResolvedTracks"))
361 if flags.Acts.EDM.PersistifyTracks:
363 prefix = f
"{flags.Tracking.ActiveConfig.extension}Resolved"
364 toAOD += [f
"xAOD::TrackSummaryContainer#{prefix}TrackSummary",
365 f
"xAOD::TrackSummaryAuxContainer#{prefix}TrackSummaryAux.",
366 f
"xAOD::TrackStateContainer#{prefix}TrackStates",
367 f
"xAOD::TrackStateAuxContainer#{prefix}TrackStatesAux.-uncalibratedMeasurement",
368 f
"xAOD::TrackParametersContainer#{prefix}TrackParameters",
369 f
"xAOD::TrackParametersAuxContainer#{prefix}TrackParametersAux.",
370 f
"xAOD::TrackJacobianContainer#{prefix}TrackJacobians",
371 f
"xAOD::TrackJacobianAuxContainer#{prefix}TrackJacobiansAux.",
372 f
"xAOD::TrackMeasurementContainer#{prefix}TrackMeasurements",
373 f
"xAOD::TrackMeasurementAuxContainer#{prefix}TrackMeasurementsAux.",
374 f
"xAOD::TrackSurfaceContainer#{prefix}TrackStateSurfaces",
375 f
"xAOD::TrackSurfaceAuxContainer#{prefix}TrackStateSurfacesAux.",
376 f
"xAOD::TrackSurfaceContainer#{prefix}TrackSurfaces",
377 f
"xAOD::TrackSurfaceAuxContainer#{prefix}TrackSurfacesAux."]
378 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
384 name: str =
"ActsTrackToTrackParticleCnvAlg",
385 **kwargs) -> ComponentAccumulator:
389 from BeamSpotConditions.BeamSpotConditionsConfig
import BeamSpotCondAlgCfg
392 if 'ExtrapolationTool' not in kwargs:
393 from ActsConfig.ActsGeometryConfig
import ActsExtrapolationToolCfg
396 kwargs.setdefault(
'BeamSpotKey',
'BeamSpotData')
397 kwargs.setdefault(
'FirstAndLastParameterOnly',
True)
401 if flags.Detector.EnableITkPixel:
402 det_elements += [
'ITkPixelDetectorElementCollection']
404 if flags.Detector.EnableITkStrip:
405 det_elements += [
'ITkStripDetectorElementCollection']
408 kwargs.setdefault(
'SiDetectorElementCollections',det_elements)
409 kwargs.setdefault(
'SiDetEleCollToMeasurementType',element_types)
410 kwargs.setdefault(
"PerigeeExpression", flags.Tracking.perigeeExpression)
411 kwargs.setdefault(
'VertexContainerKey',
'PrimaryVertices')
413 CompFactory.ActsTrk.TrackToTrackParticleCnvAlg(name, **kwargs))