3 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory
import CompFactory
6 from ActsInterop
import UnitConstants
13 strip: list =
None) -> list:
15 if flags.Detector.EnableITkPixel
and pixel
is not None:
17 if flags.Detector.EnableITkStrip
and strip
is not None:
22 name: str =
"ActsTrackStatePrinterTool",
23 **kwargs) -> ComponentAccumulator:
26 kwargs.setdefault(
"InputSpacePoints",
isdet(flags, pixel=[
"ITkPixelSpacePoints"], strip=[
"ITkStripSpacePoints",
"ITkStripOverlapSpacePoints"]))
28 if 'TrackingGeometryTool' not in kwargs:
29 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
31 "TrackingGeometryTool",
35 if 'ATLASConverterTool' not in kwargs:
36 from ActsConfig.ActsEventCnvConfig
import ActsToTrkConverterToolCfg
42 acc.setPrivateTools(CompFactory.ActsTrk.TrackStatePrinter(name, **kwargs))
48 name: str =
"ActsTrackFindingAlg",
49 **kwargs) -> ComponentAccumulator:
51 return c
if isinstance(c, list)
else [c]
56 kwargs.setdefault(
"SeedLabels",
isdet(flags, pixel=[
"PPP"], strip=[
"SSS"]))
57 kwargs.setdefault(
"EstimatedTrackParametersKeys",
isdet(flags, pixel=[
"ActsPixelEstimatedTrackParams"], strip=[
"ActsStripEstimatedTrackParams"]))
58 kwargs.setdefault(
"SeedContainerKeys",
isdet(flags, pixel=[
"ActsPixelSeeds"], strip=[
"ActsStripSeeds"]))
60 kwargs.setdefault(
"UncalibratedMeasurementContainerKeys",
isdet(flags, pixel=[
"ITkPixelClusters_Cached" if flags.Acts.useCache
else "ITkPixelClusters"], strip=[
"ITkStripClusters_Cached" if flags.Acts.useCache
else "ITkStripClusters"]))
61 kwargs.setdefault(
"DetectorElementCollectionKeys",
isdet(flags, pixel=[
"ITkPixelDetectorElementCollection"], strip=[
"ITkStripDetectorElementCollection"]))
63 kwargs.setdefault(
'ACTSTracksLocation',
'ActsTracks')
65 kwargs.setdefault(
"maxPropagationStep", 10000)
66 kwargs.setdefault(
"skipDuplicateSeeds", flags.Acts.skipDuplicateSeeds)
67 kwargs.setdefault(
"doTwoWay", flags.Acts.doTwoWayCKF)
69 if flags.Detector.GeometryITk:
70 kwargs.setdefault(
"etaBins", flags.Tracking.ActiveConfig.etaBins)
71 kwargs.setdefault(
"chi2CutOff", tolist(flags.Tracking.ActiveConfig.Xi2maxNoAdd))
81 kwargs.setdefault(
"numMeasurementsCutOff", [1])
85 kwargs.setdefault(
"StatisticEtaBins", [eta/10.
for eta
in range(5, 40, 5)])
87 if flags.Acts.doTrackFindingTrackSelector:
90 kwargs.setdefault(
"absEtaMax", flags.Tracking.ActiveConfig.maxEta)
91 kwargs.setdefault(
"ptMin",
92 [p / Units.GeV * UnitConstants.GeV
for p
in tolist(flags.Tracking.ActiveConfig.minPT)])
93 kwargs.setdefault(
"minMeasurements",
94 tolist(flags.Tracking.ActiveConfig.minClusters))
95 if flags.Acts.doTrackFindingTrackSelector == 2:
97 kwargs[
"ptMin"] = [
min(kwargs[
"ptMin"])]
98 kwargs[
"minMeasurements"] = [
min(kwargs[
"minMeasurements"])]
99 elif flags.Acts.doTrackFindingTrackSelector != 3:
101 kwargs.setdefault(
"maxHoles", tolist(flags.Tracking.ActiveConfig.maxHoles))
102 if flags.Acts.doTrackFindingTrackSelector != 5:
104 kwargs.setdefault(
"maxOutliers", tolist(flags.Tracking.ActiveConfig.maxHoles))
105 kwargs.setdefault(
"maxSharedHits", tolist(flags.Tracking.ActiveConfig.maxShared))
106 if flags.Acts.doTrackFindingTrackSelector == 4:
108 kwargs.setdefault(
"doBranchStopper",
False)
109 if flags.Acts.doTrackFindingTrackSelector == 1:
110 kwargs.setdefault(
"ptMinMeasurements",
isdet(flags, pixel=[3], strip=[6]))
111 kwargs.setdefault(
"absEtaMaxMeasurements",
isdet(flags, pixel=[3], strip=[999999]))
113 if 'TrackingGeometryTool' not in kwargs:
114 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
116 "TrackingGeometryTool",
120 if 'ExtrapolationTool' not in kwargs:
121 from ActsConfig.ActsGeometryConfig
import ActsExtrapolationToolCfg
127 if 'ATLASConverterTool' not in kwargs:
128 from ActsConfig.ActsEventCnvConfig
import ActsToTrkConverterToolCfg
130 "ATLASConverterTool",
134 if flags.Acts.doPrintTrackStates
and 'TrackStatePrinter' not in kwargs:
140 if 'FitterTool' not in kwargs:
141 from ActsConfig.ActsTrackFittingConfig
import ActsFitterCfg
145 ReverseFilteringPt=0,
149 if 'PixelCalibrator' not in kwargs:
150 from AthenaConfiguration.Enums
import BeamType
151 from ActsConfig.ActsConfigFlags
import PixelCalibrationStrategy
152 from ActsConfig.ActsMeasurementCalibrationConfig
import ActsAnalogueClusteringToolCfg
154 if not (flags.Tracking.doPixelDigitalClustering
or flags.Beam.Type
is BeamType.Cosmics):
155 if flags.Acts.PixelCalibrationStrategy
in (PixelCalibrationStrategy.AnalogueClustering,
156 PixelCalibrationStrategy.AnalogueClusteringAfterSelection) :
160 CalibrateAfterMeasurementSelection = flags.Acts.PixelCalibrationStrategy
is PixelCalibrationStrategy.AnalogueClusteringAfterSelection))
163 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
164 from ActsConfig.ActsMonitoringConfig
import ActsTrackFindingMonitoringToolCfg
165 kwargs.setdefault(
'MonTool', acc.popToolsAndMerge(
168 kwargs.setdefault(
"UseDefaultActsMeasurementSelector",flags.Acts.useDefaultActsMeasurementSelector)
170 acc.addEventAlgo(CompFactory.ActsTrk.TrackFindingAlg(name, **kwargs))
176 **kwargs) -> ComponentAccumulator:
180 dataPrepPrefix = f
'ITk{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}'
181 if not flags.Tracking.ActiveConfig.isSecondaryPass:
182 dataPrepPrefix =
'ITk'
183 pixelClusters = f
'{dataPrepPrefix}PixelClusters'
184 stripClusters = f
'{dataPrepPrefix}StripClusters'
186 if flags.Acts.useCache:
187 pixelClusters +=
'_Cached'
188 stripClusters +=
'_Cached'
192 pixelSeedLabels = [
'PPP']
193 stripSeedLabels = [
'SSS']
195 if flags.Tracking.ActiveConfig.extension
in [
'ActsConversion',
'ActsLargeRadius']:
196 pixelSeedLabels =
None
198 elif flags.Tracking.ActiveConfig.extension
in [
'Acts']
and flags.Tracking.doITkFastTracking:
199 stripSeedLabels =
None
202 pixelSeedKeys = [f
'{flags.Tracking.ActiveConfig.extension}PixelSeeds']
203 stripSeedKeys = [f
'{flags.Tracking.ActiveConfig.extension}StripSeeds']
204 pixelParameterKeys = [f
'{flags.Tracking.ActiveConfig.extension}PixelEstimatedTrackParams']
205 stripParameterKeys = [f
'{flags.Tracking.ActiveConfig.extension}StripEstimatedTrackParams']
206 if pixelSeedLabels
is None:
208 pixelParameterKeys =
None
209 if stripSeedLabels
is None:
211 stripParameterKeys =
None
213 kwargs.setdefault(
'ACTSTracksLocation', f
"{flags.Tracking.ActiveConfig.extension}Tracks")
214 kwargs.setdefault(
'UncalibratedMeasurementContainerKeys',
isdet(flags, pixel=[pixelClusters], strip=[stripClusters]))
215 kwargs.setdefault(
'SeedLabels',
isdet(flags, pixel=pixelSeedLabels, strip=stripSeedLabels))
216 kwargs.setdefault(
'SeedContainerKeys',
isdet(flags, pixel=pixelSeedKeys, strip=stripSeedKeys))
217 kwargs.setdefault(
'EstimatedTrackParametersKeys',
isdet(flags, pixel=pixelParameterKeys, strip=stripParameterKeys))
220 name=f
"{flags.Tracking.ActiveConfig.extension}TrackFindingAlg",
224 if flags.Acts.doAnalysis:
225 from ActsConfig.ActsAnalysisConfig
import ActsTrackAnalysisAlgCfg
227 name=f
"{flags.Tracking.ActiveConfig.extension}TrackAnalysisAlg",
228 TracksLocation=f
"{flags.Tracking.ActiveConfig.extension}Tracks"))
233 name: str =
"ActsAmbiguityResolutionAlg",
234 **kwargs) -> ComponentAccumulator:
237 kwargs.setdefault(
'TracksLocation',
'ActsTracks')
238 kwargs.setdefault(
'ResolvedTracksLocation',
'ActsResolvedTracks')
239 kwargs.setdefault(
'MaximumSharedHits', 3)
240 kwargs.setdefault(
'MaximumIterations', 10000)
241 kwargs.setdefault(
'NMeasurementsMin', 7)
243 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
244 from ActsConfig.ActsMonitoringConfig
import ActsAmbiguityResolutionMonitoringToolCfg
245 kwargs.setdefault(
'MonTool', acc.popToolsAndMerge(
247 if 'TrackingGeometryTool' not in kwargs:
248 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
250 "TrackingGeometryTool",
253 CompFactory.ActsTrk.AmbiguityResolutionAlg(name, **kwargs))
258 **kwargs) -> ComponentAccumulator:
260 kwargs.setdefault(
'TracksLocation', f
"{flags.Tracking.ActiveConfig.extension}Tracks")
261 kwargs.setdefault(
'ResolvedTracksLocation', f
"{flags.Tracking.ActiveConfig.extension}ResolvedTracks")
263 name=f
"{flags.Tracking.ActiveConfig.extension}AmbiguityResolutionAlg",
267 if flags.Acts.doAnalysis:
268 from ActsConfig.ActsAnalysisConfig
import ActsTrackAnalysisAlgCfg
270 name=f
"{flags.Tracking.ActiveConfig.extension}ResolvedTrackAnalysisAlg",
271 TracksLocation=f
"{flags.Tracking.ActiveConfig.extension}ResolvedTracks"))
275 name: str =
"ActsTrackToTrackParticleCnvAlg",
276 **kwargs) -> ComponentAccumulator:
279 if 'ExtrapolationTool' not in kwargs:
280 from ActsConfig.ActsGeometryConfig
import ActsExtrapolationToolCfg
283 kwargs.setdefault(
'BeamSpotKey',
'BeamSpotData')
284 kwargs.setdefault(
'FirstAndLastParameterOnly',
True)
288 if flags.Detector.EnableITkPixel:
289 det_elements += [
'ITkPixelDetectorElementCollection']
291 if flags.Detector.EnableITkStrip:
292 det_elements += [
'ITkStripDetectorElementCollection']
295 kwargs.setdefault(
'SiDetectorElementCollections',det_elements)
296 kwargs.setdefault(
'SiDetEleCollToMeasurementType',element_types)
298 CompFactory.ActsTrk.TrackToTrackParticleCnvAlg(name, **kwargs))