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
103
104 kwargs.setdefault("forceTrackOnSeed", flags.Acts.forceTrackOnSeed and not flags.Tracking.ActiveConfig.isSecondaryPass)
105
106
107
108
109
110 kwargs.setdefault("etaBins", flags.Tracking.ActiveConfig.etaBins)
111
112 kwargs.setdefault("chi2CutOffSigma", tolist(flags.Tracking.ActiveConfig.Xi2maxSigma))
113 kwargs.setdefault("chi2OutlierCutOffSigma", tolist(flags.Tracking.ActiveConfig.Xi2maxNoAddSigma))
114 kwargs.setdefault("checkCounts", True)
115 kwargs.setdefault("doBranchStopper", True)
116
117 kwargs.setdefault("branchStopperPtMinFactor", 0.9)
118 kwargs.setdefault("branchStopperAbsEtaMaxExtra", 0.1)
119
120
121
122 kwargs.setdefault("branchStopperMeasCutReduce", flags.Acts.branchStopperMeasCutReduce)
123 kwargs.setdefault("branchStopperAbsEtaMeasCut", flags.Acts.branchStopperAbsEtaMeasCut)
124
125 kwargs.setdefault("numMeasurementsCutOff", [1])
126
127
128
129 kwargs.setdefault("StatisticEtaBins", [eta/10. for eta in range(5, 40, 5)])
130
131 kwargs.setdefault("absEtaMax", flags.Tracking.ActiveConfig.maxEta)
132 kwargs.setdefault("ptMin", [p / Units.GeV * UnitConstants.GeV for p in tolist(flags.Tracking.ActiveConfig.minPT)])
133
134 kwargs.setdefault("z0Min", [-flags.Tracking.ActiveConfig.maxZImpact / Units.mm * UnitConstants.mm for etabin in flags.Tracking.ActiveConfig.etaBins[:-1]])
135 kwargs.setdefault("z0Max", [ flags.Tracking.ActiveConfig.maxZImpact / Units.mm * UnitConstants.mm for etabin in flags.Tracking.ActiveConfig.etaBins[:-1]])
136 kwargs.setdefault("d0Min", [-d0 / Units.mm * UnitConstants.mm for d0 in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpactList)])
137 kwargs.setdefault("d0Max", [ d0 / Units.mm * UnitConstants.mm for d0 in tolist(flags.Tracking.ActiveConfig.maxPrimaryImpactList)])
138 kwargs.setdefault("minMeasurements", tolist([ 8, 8, 8]))
139 kwargs.setdefault("maxHoles", tolist(flags.Tracking.ActiveConfig.maxHoles))
140 kwargs.setdefault("minPixelHits", tolist(flags.Tracking.ActiveConfig.minPixel))
141 kwargs.setdefault("maxPixelHoles", tolist(flags.Tracking.ActiveConfig.maxPixelHoles))
142 kwargs.setdefault("maxStripHoles", tolist(flags.Tracking.ActiveConfig.maxSctHoles))
143
144
145
146
147
148 if flags.Tracking.ActiveConfig.PixelSeedingStrategy is not SeedingStrategy.Gbts:
149 kwargs.setdefault("ptMinMeasurements", seedOrder(flags, pixel=[3], strip=[6]))
150 kwargs.setdefault("absEtaMaxMeasurements", seedOrder(flags, pixel=[3], strip=[999999]))
151
152 from ActsConfig.ActsGeometryConfig import ActsGeometryRealmConvToolCfg
153 kwargs.setdefault("GeometryRealmConvTool", acc.getPrimaryAndMerge(ActsGeometryRealmConvToolCfg(flags)))
154
155 if 'TrackParamsEstimationTool' not in kwargs:
156 from ActsConfig.ActsTrackParamsEstimationConfig import ActsTrackParamsEstimationToolCfg
157 tpe = acc.popToolsAndMerge(ActsTrackParamsEstimationToolCfg(flags))
158 kwargs.setdefault('TrackParamsEstimationTool', seedOrder(flags, pixel=[tpe], strip=[tpe]))
159
160 if flags.Acts.doPrintTrackStates and 'TrackStatePrinter' not in kwargs:
161 kwargs.setdefault(
162 "TrackStatePrinter",
163 acc.popToolsAndMerge(ActsInDetTrackStatePrinterToolCfg(flags)),
164 )
165
166
167 if 'PixelCalibrator' not in kwargs:
168 from AthenaConfiguration.Enums import BeamType
169
170 if flags.Beam.Type is not BeamType.Cosmics and flags.Acts.PixelCalibrationStrategy.usesCalibration():
171 from ActsConfig.ActsMeasurementCalibrationConfig import ActsPixelCalibrationToolCfg
172
173 kwargs.setdefault(
174 'PixelCalibrator',
175 acc.popToolsAndMerge(ActsPixelCalibrationToolCfg(flags))
176 )
177
178 if 'StripCalibrator' not in kwargs:
179 from AthenaConfiguration.Enums import BeamType
180
181 if flags.Beam.Type is not BeamType.Cosmics and flags.Acts.StripCalibrationStrategy.usesCalibration():
182 from ActsConfig.ActsMeasurementCalibrationConfig import ActsStripCalibrationToolCfg
183
184 kwargs.setdefault(
185 'StripCalibrator',
186 acc.popToolsAndMerge(ActsStripCalibrationToolCfg(flags))
187 )
188
189 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
190 from ActsConfig.ActsMonitoringConfig import ActsTrackFindingMonitoringToolCfg
191 kwargs.setdefault('MonTool', acc.popToolsAndMerge(
192 ActsTrackFindingMonitoringToolCfg(flags)))
193
194 acc.addEventAlgo(CompFactory.ActsTrk.TrackFindingAlg(name, **kwargs))
195 return acc
196
197
198