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)
126 if flags.Detector.GeometryITk:
127 kwargs.setdefault(
"etaBins", flags.Tracking.ActiveConfig.etaBins)
129 from InDetConfig.ITkActsHelpers
import isFastPrimaryPass
131 kwargs.setdefault(
"chi2CutOff", [50])
132 kwargs.setdefault(
"chi2OutlierCutOff", [100])
134 kwargs.setdefault(
"chi2CutOff", [25])
135 kwargs.setdefault(
"chi2OutlierCutOff", [25])
136 kwargs.setdefault(
"branchStopperPtMinFactor", 0.9)
137 kwargs.setdefault(
"branchStopperAbsEtaMaxExtra", 0.1)
141 kwargs.setdefault(
"branchStopperMeasCutReduce", flags.Acts.branchStopperMeasCutReduce)
142 kwargs.setdefault(
"branchStopperAbsEtaMeasCut", flags.Acts.branchStopperAbsEtaMeasCut)
144 kwargs.setdefault(
"numMeasurementsCutOff", [1])
148 kwargs.setdefault(
"StatisticEtaBins", [eta/10.
for eta
in range(5, 40, 5)])
150 kwargs.setdefault(
"absEtaMax", flags.Tracking.ActiveConfig.maxEta)
151 kwargs.setdefault(
"ptMin", [p / Units.GeV * UnitConstants.GeV
for p
in tolist(flags.Tracking.ActiveConfig.minPT)])
153 kwargs.setdefault(
"z0Min", [-flags.Tracking.ActiveConfig.maxZImpactSeed / Units.mm * UnitConstants.mm
for etabin
in flags.Tracking.ActiveConfig.etaBins[:-1]])
154 kwargs.setdefault(
"z0Max", [ flags.Tracking.ActiveConfig.maxZImpactSeed / Units.mm * UnitConstants.mm
for etabin
in flags.Tracking.ActiveConfig.etaBins[:-1]])
155 kwargs.setdefault(
"d0Min", [-d0 / Units.mm * UnitConstants.mm
for d0
in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpact)])
156 kwargs.setdefault(
"d0Max", [ d0 / Units.mm * UnitConstants.mm
for d0
in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpact)])
157 kwargs.setdefault(
"minMeasurements", tolist(flags.Tracking.ActiveConfig.minClusters))
158 kwargs.setdefault(
"maxHoles", tolist(flags.Tracking.ActiveConfig.maxHoles))
159 kwargs.setdefault(
"minPixelHits", tolist(flags.Tracking.ActiveConfig.minPixel))
160 kwargs.setdefault(
"maxPixelHoles", tolist(flags.Tracking.ActiveConfig.maxPixelHoles))
161 kwargs.setdefault(
"maxStripHoles", tolist(flags.Tracking.ActiveConfig.maxSctHoles))
167 if flags.Acts.SeedingStrategy
is not SeedingStrategy.Gbts2:
168 kwargs.setdefault(
"ptMinMeasurements",
seedOrder(flags, pixel=[3], strip=[6]))
169 kwargs.setdefault(
"absEtaMaxMeasurements",
seedOrder(flags, pixel=[3], strip=[999999]))
171 if 'TrackingGeometryTool' not in kwargs:
172 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
174 "TrackingGeometryTool",
178 if 'ATLASConverterTool' not in kwargs:
179 from ActsConfig.ActsEventCnvConfig
import ActsToTrkConverterToolCfg
182 if 'TrackParamsEstimationTool' not in kwargs:
183 from ActsConfig.ActsTrackParamsEstimationConfig
import ActsTrackParamsEstimationToolCfg
186 if 'ExtrapolationTool' not in kwargs:
187 from ActsConfig.ActsGeometryConfig
import ActsExtrapolationToolCfg
193 if flags.Acts.doPrintTrackStates
and 'TrackStatePrinter' not in kwargs:
199 if 'FitterTool' not in kwargs:
200 from ActsConfig.ActsTrackFittingConfig
import ActsFitterCfg
204 ReverseFilteringPt=0,
205 OutlierChi2Cut=
float(
'inf')))
208 if 'PixelCalibrator' not in kwargs:
209 from AthenaConfiguration.Enums
import BeamType
210 from ActsConfig.ActsConfigFlags
import PixelCalibrationStrategy
211 from ActsConfig.ActsMeasurementCalibrationConfig
import ActsAnalogueClusteringToolCfg
213 if not (flags.Tracking.doPixelDigitalClustering
or flags.Beam.Type
is BeamType.Cosmics):
214 if flags.Acts.PixelCalibrationStrategy
in (PixelCalibrationStrategy.AnalogueClustering,
215 PixelCalibrationStrategy.AnalogueClusteringAfterSelection) :
219 CalibrateAfterMeasurementSelection = flags.Acts.PixelCalibrationStrategy
is PixelCalibrationStrategy.AnalogueClusteringAfterSelection))
222 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
223 from ActsConfig.ActsMonitoringConfig
import ActsTrackFindingMonitoringToolCfg
224 kwargs.setdefault(
'MonTool', acc.popToolsAndMerge(
227 acc.addEventAlgo(CompFactory.ActsTrk.TrackFindingAlg(name, **kwargs))