60 name: str =
"ActsTrackFindingAlg",
61 **kwargs) -> ComponentAccumulator:
63 return c
if isinstance(c, list)
else [c]
67 from ActsConfig.ActsGeometryConfig
import ActsVolumeIdToDetectorCollectionMappingAlgCfg
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:
85 if flags.Detector.EnableITkPixel:
86 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
88 if flags.Detector.EnableITkStrip:
89 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import ITkStripDetectorElementStatusAlgCfg
91 kwargs.setdefault(
"DetElStatus",filterCollections(flags,
'ITkStripDetectorElementStatus',
'ITkPixelDetectorElementStatus'))
96 kwargs.setdefault(
"SeedLabels",
seedOrder(flags, pixel=[
"PPP"], strip=[
"SSS"]))
97 kwargs.setdefault(
"SeedContainerKeys",
seedOrder(flags, pixel=[
"ActsPixelSeeds"], strip=[
"ActsStripSeeds"]))
98 kwargs.setdefault(
'DetectorElementsKeys',
seedOrder(flags, pixel=[
'ITkPixelDetectorElementCollection'], strip=[
'ITkStripDetectorElementCollection']))
99 if flags.Acts.Tracks.doAnalysis:
100 kwargs.setdefault(
"SeedDestiny", [f
'{seedkey}Destiny' for seedkey
in kwargs[
"SeedContainerKeys"]])
102 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"]))
104 kwargs.setdefault(
'ACTSTracksLocation',
'ActsTracks')
106 kwargs.setdefault(
"maxPropagationStep", 10000)
107 kwargs.setdefault(
"skipDuplicateSeeds", flags.Acts.skipDuplicateSeeds)
108 kwargs.setdefault(
"seedMeasOffset", 1)
111 kwargs.setdefault(
"ambiStrategy", flags.Acts.AmbiguitySolverMode.value)
113 if (
not flags.Acts.doAmbiguityResolution) :
114 kwargs.setdefault(
"MaximumSharedHits", 3)
115 kwargs.setdefault(
"MaximumIterations", 10000)
116 kwargs.setdefault(
"NMeasurementsMin", 7)
118 kwargs.setdefault(
"refitSeeds",
seedOrder(flags, pixel=[
False], strip=[
False]))
119 kwargs.setdefault(
"doTwoWay", flags.Acts.doTwoWayCKF)
120 kwargs.setdefault(
"autoReverseSearch", flags.Acts.autoReverseSearchCKF)
122 kwargs.setdefault(
"forceTrackOnSeed", flags.Acts.forceTrackOnSeed
and not flags.Tracking.ActiveConfig.isSecondaryPass)
128 if flags.Detector.GeometryITk:
129 kwargs.setdefault(
"etaBins", flags.Tracking.ActiveConfig.etaBins)
131 from InDetConfig.ITkActsHelpers
import isFastPrimaryPass
133 kwargs.setdefault(
"chi2CutOff", [50])
134 kwargs.setdefault(
"chi2OutlierCutOff", [100])
136 kwargs.setdefault(
"chi2CutOff", [25])
137 kwargs.setdefault(
"chi2OutlierCutOff", [25])
138 kwargs.setdefault(
"branchStopperPtMinFactor", 0.9)
139 kwargs.setdefault(
"branchStopperAbsEtaMaxExtra", 0.1)
143 kwargs.setdefault(
"branchStopperMeasCutReduce", flags.Acts.branchStopperMeasCutReduce)
144 kwargs.setdefault(
"branchStopperAbsEtaMeasCut", flags.Acts.branchStopperAbsEtaMeasCut)
146 kwargs.setdefault(
"numMeasurementsCutOff", [1])
150 kwargs.setdefault(
"StatisticEtaBins", [eta/10.
for eta
in range(5, 40, 5)])
152 kwargs.setdefault(
"absEtaMax", flags.Tracking.ActiveConfig.maxEta)
153 kwargs.setdefault(
"ptMin", [p / Units.GeV * UnitConstants.GeV
for p
in tolist(flags.Tracking.ActiveConfig.minPT)])
155 kwargs.setdefault(
"z0Min", [-flags.Tracking.ActiveConfig.maxZImpactSeed / Units.mm * UnitConstants.mm
for etabin
in flags.Tracking.ActiveConfig.etaBins[:-1]])
156 kwargs.setdefault(
"z0Max", [ flags.Tracking.ActiveConfig.maxZImpactSeed / Units.mm * UnitConstants.mm
for etabin
in flags.Tracking.ActiveConfig.etaBins[:-1]])
157 kwargs.setdefault(
"d0Min", [-d0 / Units.mm * UnitConstants.mm
for d0
in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpact)])
158 kwargs.setdefault(
"d0Max", [ d0 / Units.mm * UnitConstants.mm
for d0
in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpact)])
159 kwargs.setdefault(
"minMeasurements", tolist(flags.Tracking.ActiveConfig.minClusters))
160 kwargs.setdefault(
"maxHoles", tolist(flags.Tracking.ActiveConfig.maxHoles))
161 kwargs.setdefault(
"minPixelHits", tolist(flags.Tracking.ActiveConfig.minPixel))
162 kwargs.setdefault(
"maxPixelHoles", tolist(flags.Tracking.ActiveConfig.maxPixelHoles))
163 kwargs.setdefault(
"maxStripHoles", tolist(flags.Tracking.ActiveConfig.maxSctHoles))
169 if flags.Acts.SeedingStrategy
is not SeedingStrategy.Gbts2:
170 kwargs.setdefault(
"ptMinMeasurements",
seedOrder(flags, pixel=[3], strip=[6]))
171 kwargs.setdefault(
"absEtaMaxMeasurements",
seedOrder(flags, pixel=[3], strip=[999999]))
173 if 'TrackingGeometryTool' not in kwargs:
174 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
176 "TrackingGeometryTool",
180 if 'ATLASConverterTool' not in kwargs:
181 from ActsConfig.ActsEventCnvConfig
import ActsToTrkConverterToolCfg
184 if 'TrackParamsEstimationTool' not in kwargs:
185 from ActsConfig.ActsTrackParamsEstimationConfig
import ActsTrackParamsEstimationToolCfg
188 if 'ExtrapolationTool' not in kwargs:
189 from ActsConfig.ActsGeometryConfig
import ActsExtrapolationToolCfg
195 if flags.Acts.doPrintTrackStates
and 'TrackStatePrinter' not in kwargs:
201 if 'FitterTool' not in kwargs:
202 from ActsConfig.ActsTrackFittingConfig
import ActsFitterCfg
206 ReverseFilteringPt=0,
207 OutlierChi2Cut=
float(
'inf')))
210 if 'PixelCalibrator' not in kwargs:
211 from AthenaConfiguration.Enums
import BeamType
212 from ActsConfig.ActsConfigFlags
import PixelCalibrationStrategy
213 from ActsConfig.ActsMeasurementCalibrationConfig
import ActsAnalogueClusteringToolCfg
215 if not (flags.Tracking.doPixelDigitalClustering
or flags.Beam.Type
is BeamType.Cosmics):
216 if flags.Acts.PixelCalibrationStrategy
in (PixelCalibrationStrategy.AnalogueClustering,
217 PixelCalibrationStrategy.AnalogueClusteringAfterSelection) :
221 CalibrateAfterMeasurementSelection = flags.Acts.PixelCalibrationStrategy
is PixelCalibrationStrategy.AnalogueClusteringAfterSelection))
224 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
225 from ActsConfig.ActsMonitoringConfig
import ActsTrackFindingMonitoringToolCfg
226 kwargs.setdefault(
'MonTool', acc.popToolsAndMerge(
229 acc.addEventAlgo(CompFactory.ActsTrk.TrackFindingAlg(name, **kwargs))