55 **kwargs) -> ComponentAccumulator:
56 def tolist(c):
57 return c if isinstance(c, list) else [c]
58
59 acc = ComponentAccumulator()
60
61 from ActsConfig.ActsGeometryConfig import ActsInDetVolumeIdToDetectorCollectionMappingAlgCfg
62
63 acc.merge( ActsInDetVolumeIdToDetectorCollectionMappingAlgCfg(flags) )
64 kwargs.setdefault("ActsVolumeIdToDetectorElementCollectionMapKey", "VolumeIdToDetectorElementCollectionMap")
65
66 if flags.Detector.EnablePixel:
67 from PixelConditionsAlgorithms.PixelConditionsConfig import PixelDetectorElementStatusAlgCfg
68 acc.merge(PixelDetectorElementStatusAlgCfg(flags))
69 if flags.Detector.EnableSCT:
70 from SCT_ConditionsAlgorithms.SCT_ConditionsAlgorithmsConfig import SCT_DetectorElementStatusAlgCfg
71 acc.merge(SCT_DetectorElementStatusAlgCfg(flags))
72 kwargs.setdefault("DetElStatus", seedOrder(flags, pixel=["PixelDetectorElementStatus"], strip=["SCTDetectorElementStatus"]))
73
74
75
76
77 kwargs.setdefault("SeedLabels", seedOrder(flags, pixel=["PPP"], strip=["SSS"]))
78 kwargs.setdefault("SeedContainerKeys", seedOrder(flags, pixel=["ActsPixelSeeds"], strip=["ActsSCT_Seeds"]))
79 kwargs.setdefault('DetectorElementsKeys', seedOrder(flags, pixel=['PixelDetectorElementCollection'], strip=['SCT_DetectorElementCollection']))
80 if flags.Acts.Tracks.doAnalysis:
81 kwargs.setdefault("SeedDestiny", [f'{seedkey}Destiny' for seedkey in kwargs["SeedContainerKeys"]])
82
83 kwargs.setdefault("UncalibratedMeasurementContainerKeys", isdet(flags, pixel=["PixelClusters"], strip=["SCT_Clusters"]))
84
85 kwargs.setdefault('ACTSTracksLocation', 'ActsTracks')
86
87 kwargs.setdefault("maxPropagationStep", 10000)
88 kwargs.setdefault("skipDuplicateSeeds", True)
89 kwargs.setdefault("seedMeasOffset", 1)
90
91
92 kwargs.setdefault("ambiStrategy", flags.Acts.AmbiguitySolverMode.value)
93
94 if (not flags.Acts.doAmbiguityResolution) :
95 kwargs.setdefault("MaximumSharedHits", 3)
96 kwargs.setdefault("MaximumIterations", 10000)
97 kwargs.setdefault("NMeasurementsMin", 7)
98
99 kwargs.setdefault("doTwoWay", flags.Acts.doTwoWayCKF)
100 kwargs.setdefault("inflateCovarianceTwoWay", True)
101 kwargs.setdefault("twoWayinflateCovarianceFactor", 100.0)
102 kwargs.setdefault("autoReverseSearch", flags.Tracking.ActiveConfig.autoReverseSearch)
103
104
105
106 kwargs.setdefault("forceTrackOnSeed", flags.Acts.forceTrackOnSeed and not flags.Tracking.ActiveConfig.isSecondaryPass)
107
108
109
110
111
112 kwargs.setdefault("etaBins", flags.Tracking.ActiveConfig.etaBins)
113
114 kwargs.setdefault("chi2CutOff", tolist(flags.Tracking.ActiveConfig.Xi2max*1))
115 kwargs.setdefault("chi2OutlierCutOff", tolist(flags.Tracking.ActiveConfig.Xi2maxNoAdd*1))
116 kwargs.setdefault("checkCounts", True)
117 kwargs.setdefault("doBranchStopper", True)
118
119 kwargs.setdefault("branchStopperPtMinFactor", 0.9)
120 kwargs.setdefault("branchStopperAbsEtaMaxExtra", 0.1)
121
122
123
124 kwargs.setdefault("branchStopperMeasCutReduce", flags.Acts.branchStopperMeasCutReduce)
125 kwargs.setdefault("branchStopperAbsEtaMeasCut", flags.Acts.branchStopperAbsEtaMeasCut)
126
127 kwargs.setdefault("numMeasurementsCutOff", [1])
128
129
130
131 kwargs.setdefault("StatisticEtaBins", [eta/10. for eta in range(5, 40, 5)])
132
133 kwargs.setdefault("absEtaMax", flags.Tracking.ActiveConfig.maxEta)
134 kwargs.setdefault("ptMin", [p / Units.GeV * UnitConstants.GeV for p in tolist(flags.Tracking.ActiveConfig.minPT)])
135
136 kwargs.setdefault("z0Min", [-flags.Tracking.ActiveConfig.maxZImpact / Units.mm * UnitConstants.mm for etabin in flags.Tracking.ActiveConfig.etaBins[:-1]])
137 kwargs.setdefault("z0Max", [ flags.Tracking.ActiveConfig.maxZImpact / Units.mm * UnitConstants.mm for etabin in flags.Tracking.ActiveConfig.etaBins[:-1]])
138 kwargs.setdefault("d0Min", [-d0 / Units.mm * UnitConstants.mm for d0 in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpactList)])
139 kwargs.setdefault("d0Max", [ d0 / Units.mm * UnitConstants.mm for d0 in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpactList)])
140 kwargs.setdefault("minMeasurements", tolist([ 8, 8, 8]))
141 kwargs.setdefault("maxHoles", tolist(flags.Tracking.ActiveConfig.maxHoles))
142 kwargs.setdefault("minPixelHits", tolist(flags.Tracking.ActiveConfig.minPixel))
143 kwargs.setdefault("maxPixelHoles", tolist(flags.Tracking.ActiveConfig.maxPixelHoles))
144 kwargs.setdefault("maxStripHoles", tolist(flags.Tracking.ActiveConfig.maxSctHoles))
145
146
147
148
149
150 if flags.Tracking.ActiveConfig.PixelSeedingStrategy is not SeedingStrategy.Gbts:
151 kwargs.setdefault("ptMinMeasurements", seedOrder(flags, pixel=[3], strip=[6]))
152 kwargs.setdefault("absEtaMaxMeasurements", seedOrder(flags, pixel=[3], strip=[999999]))
153
154 from ActsConfig.ActsGeometryConfig import ActsGeometryRealmConvToolCfg
155 kwargs.setdefault("GeometryRealmConvTool", acc.getPrimaryAndMerge(ActsGeometryRealmConvToolCfg(flags)))
156
157 if 'TrackParamsEstimationTool' not in kwargs:
158 from ActsConfig.ActsTrackParamsEstimationConfig import ActsTrackParamsEstimationToolCfg
159 tpe = acc.popToolsAndMerge(ActsTrackParamsEstimationToolCfg(flags))
160 kwargs.setdefault('TrackParamsEstimationTool', seedOrder(flags, pixel=[tpe], strip=[tpe]))
161
162 if flags.Acts.doPrintTrackStates and 'TrackStatePrinter' not in kwargs:
163 kwargs.setdefault(
164 "TrackStatePrinter",
165 acc.popToolsAndMerge(ActsInDetTrackStatePrinterToolCfg(flags)),
166 )
167
168
169 if 'PixelCalibrator' not in kwargs:
170 from AthenaConfiguration.Enums import BeamType
171
172 if flags.Beam.Type is not BeamType.Cosmics and flags.Acts.PixelCalibrationStrategy.usesCalibration():
173 from ActsConfig.ActsMeasurementCalibrationConfig import ActsPixelCalibrationToolCfg
174
175 kwargs.setdefault(
176 'PixelCalibrator',
177 acc.popToolsAndMerge(ActsPixelCalibrationToolCfg(flags))
178 )
179
180 if 'StripCalibrator' not in kwargs:
181 from AthenaConfiguration.Enums import BeamType
182
183 if flags.Beam.Type is not BeamType.Cosmics and flags.Acts.StripCalibrationStrategy.usesCalibration():
184 from ActsConfig.ActsMeasurementCalibrationConfig import ActsStripCalibrationToolCfg
185
186 kwargs.setdefault(
187 'StripCalibrator',
188 acc.popToolsAndMerge(ActsStripCalibrationToolCfg(flags))
189 )
190
191 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
192 from ActsConfig.ActsMonitoringConfig import ActsTrackFindingMonitoringToolCfg
193 kwargs.setdefault('MonTool', acc.popToolsAndMerge(
194 ActsTrackFindingMonitoringToolCfg(flags)))
195
196 acc.addEventAlgo(CompFactory.ActsTrk.TrackFindingAlg(name, **kwargs))
197 return acc
198
199
200