3 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory
import CompFactory
5 from ActsConfig.ActsConfigFlags
import SeedingStrategy
6 from ActsConfig.ActsUtilities
import extractChildKwargs
7 from ActsInterop
import UnitConstants
8 from AthenaCommon.Utils.unixtools
import find_datafile
12 name: str =
"ActsPixelSeedingTool",
13 **kwargs) -> ComponentAccumulator:
17 kwargs.setdefault(
"numSeedIncrement" ,
float(
"inf"))
18 kwargs.setdefault(
"deltaZMax" ,
float(
"inf"))
19 kwargs.setdefault(
"maxPtScattering",
float(
"inf"))
20 kwargs.setdefault(
"useVariableMiddleSPRange",
False)
21 kwargs.setdefault(
"rMax", 320. * UnitConstants.mm)
22 kwargs.setdefault(
"rBinEdges", [0, kwargs[
'rMax']])
23 kwargs.setdefault(
"rRangeMiddleSP", [
37 acc.setPrivateTools(CompFactory.ActsTrk.SeedingTool(name, **kwargs))
41 name: str =
"ActsFastPixelSeedingTool",
42 **kwargs) -> ComponentAccumulator:
44 kwargs.setdefault(
"minPt", 1000 * UnitConstants.MeV)
45 kwargs.setdefault(
"collisionRegionMin", -150 * UnitConstants.mm)
46 kwargs.setdefault(
"collisionRegionMax", 150 * UnitConstants.mm)
47 kwargs.setdefault(
"maxPhiBins", 200)
48 kwargs.setdefault(
"gridRMax", 250 * UnitConstants.mm)
49 kwargs.setdefault(
"deltaRMax", 200 * UnitConstants.mm)
50 kwargs.setdefault(
"zBinsCustomLooping" , [3, 11, 4, 10, 7, 5, 9, 6, 8])
51 kwargs.setdefault(
"rRangeMiddleSP", [
65 kwargs.setdefault(
"useVariableMiddleSPRange",
False)
66 kwargs.setdefault(
"useExperimentCuts",
True)
67 kwargs.setdefault(
"rMax", 320 * UnitConstants.mm)
68 kwargs.setdefault(
"rBinEdges", [0, kwargs[
'rMax']])
73 name: str =
"ActsStripSeedingTool",
74 **kwargs) -> ComponentAccumulator:
78 kwargs.setdefault(
"doSeedQualitySelection",
False)
80 kwargs.setdefault(
"gridRMax" , 1000. * UnitConstants.mm)
81 kwargs.setdefault(
"deltaRMax" , 600. * UnitConstants.mm)
82 kwargs.setdefault(
"impactMax" , 20. * UnitConstants.mm)
84 kwargs.setdefault(
"rMax" , 1200. * UnitConstants.mm)
85 kwargs.setdefault(
"deltaRMinTopSP" , 20. * UnitConstants.mm)
86 kwargs.setdefault(
"deltaRMaxTopSP" , 300. * UnitConstants.mm)
87 kwargs.setdefault(
"deltaRMinBottomSP" , 20. * UnitConstants.mm)
88 kwargs.setdefault(
"deltaRMaxBottomSP" , 300. * UnitConstants.mm)
89 kwargs.setdefault(
"deltaZMax" , 900. * UnitConstants.mm)
90 kwargs.setdefault(
"interactionPointCut" ,
False)
91 kwargs.setdefault(
"zBinsCustomLooping" , [7, 8, 6, 9, 5, 10, 4, 11, 3, 12, 2])
92 kwargs.setdefault(
"deltaRMiddleMinSPRange" , 30 * UnitConstants.mm)
93 kwargs.setdefault(
"deltaRMiddleMaxSPRange" , 150 * UnitConstants.mm)
94 kwargs.setdefault(
"useDetailedDoubleMeasurementInfo" ,
True)
95 kwargs.setdefault(
"maxPtScattering",
float(
"inf"))
97 kwargs.setdefault(
"useDeltaRorTopRadius" ,
False)
98 kwargs.setdefault(
"seedConfirmationInFilter" ,
False)
99 kwargs.setdefault(
"impactWeightFactor" , 1.)
100 kwargs.setdefault(
"compatSeedLimit" , 4)
101 kwargs.setdefault(
"numSeedIncrement" , 1.)
102 kwargs.setdefault(
"seedWeightIncrement" , 10100.)
103 kwargs.setdefault(
"maxSeedsPerSpMConf" , 100)
104 kwargs.setdefault(
"maxQualitySeedsPerSpMConf" , 100)
106 kwargs.setdefault(
"zBinNeighborsBottom" , [(0,0),(0,1),(0,1),(0,1),(0,2),(0,1),(0,0),(-1,0),(-2,0),(-1,0),(-1,0),(-1,0),(0,0)])
108 kwargs.setdefault(
"rBinEdges", [0, kwargs[
'rMax']])
110 acc.setPrivateTools(CompFactory.ActsTrk.SeedingTool(name, **kwargs))
114 name: str =
"ActsPixelOrthogonalSeedingTool",
115 **kwargs) -> ComponentAccumulator:
118 acc.setPrivateTools(CompFactory.ActsTrk.OrthogonalSeedingTool(name, **kwargs))
122 name: str =
"ActsFastPixelOrthogonalSeedingTool",
123 **kwargs) -> ComponentAccumulator:
128 kwargs.setdefault(
"minPt", 1000 * UnitConstants.MeV)
129 kwargs.setdefault(
"collisionRegionMin", -150 * UnitConstants.mm)
130 kwargs.setdefault(
"collisionRegionMax", 150 * UnitConstants.mm)
131 kwargs.setdefault(
"useExperimentCuts",
True)
133 acc.setPrivateTools(CompFactory.ActsTrk.OrthogonalSeedingTool(name, **kwargs))
137 name: str =
"ActsStripOrthogonalSeedingTool",
138 **kwargs) -> ComponentAccumulator:
142 kwargs.setdefault(
"impactMax" , 20. * UnitConstants.mm)
143 kwargs.setdefault(
'rMax', 1200. * UnitConstants.mm)
144 kwargs.setdefault(
"deltaRMinTopSP" , 20. * UnitConstants.mm)
145 kwargs.setdefault(
"deltaRMaxTopSP" , 300. * UnitConstants.mm)
146 kwargs.setdefault(
"deltaRMinBottomSP" , 20. * UnitConstants.mm)
147 kwargs.setdefault(
"deltaRMaxBottomSP" , 300. * UnitConstants.mm)
148 kwargs.setdefault(
"deltaZMax" , 900. * UnitConstants.mm)
149 kwargs.setdefault(
"interactionPointCut" ,
False)
150 kwargs.setdefault(
"impactWeightFactor" , 1.)
151 kwargs.setdefault(
"compatSeedLimit" , 4)
152 kwargs.setdefault(
"seedWeightIncrement" , 10100.)
153 kwargs.setdefault(
"numSeedIncrement" , 1.)
154 kwargs.setdefault(
"seedConfirmationInFilter" ,
False)
155 kwargs.setdefault(
"maxSeedsPerSpMConf" , 100)
156 kwargs.setdefault(
"maxQualitySeedsPerSpMConf" , 100)
157 kwargs.setdefault(
"useDeltaRorTopRadius" ,
False)
158 kwargs.setdefault(
"rMinMiddle", 33. * UnitConstants.mm)
159 kwargs.setdefault(
"rMaxMiddle", 1200. * UnitConstants.mm)
161 acc.setPrivateTools(CompFactory.ActsTrk.OrthogonalSeedingTool(name, **kwargs))
165 name: str =
"ActsPixelGbtsSeedingTool",
166 **kwargs) -> ComponentAccumulator:
170 kwargs.setdefault(
"connector_input_file" ,
find_datafile(
"ActsPatternRecognition/GBTS_EdgeProbabilites_ITKPixels.txt"))
171 acc.setPrivateTools(CompFactory.ActsTrk.GbtsSeedingTool(name = name, **kwargs))
175 name: str =
'ActsSiSpacePointsSeedMakerTool',
176 **kwargs) -> ComponentAccumulator:
177 assert isinstance(name, str)
181 if flags.Tracking.ActiveConfig.extension ==
"ActsValidateConversionSeeds":
182 kwargs.setdefault(
'useOverlapSpCollection',
False)
185 kwargs.setdefault(
'usePixel',
186 flags.Tracking.ActiveConfig.useITkPixel
and
187 flags.Tracking.ActiveConfig.useITkPixelSeeding)
188 kwargs.setdefault(
'useStrip',
189 flags.Tracking.ActiveConfig.useITkStrip
and
190 flags.Tracking.ActiveConfig.useITkStripSeeding)
191 kwargs.setdefault(
'useOverlapSpCollection',
192 flags.Tracking.ActiveConfig.useITkStrip
and
193 flags.Tracking.ActiveConfig.useITkStripSeeding)
194 kwargs.setdefault(
'ActsSpacePointsPixelName' ,
"ITkPixelSpacePoints")
195 kwargs.setdefault(
'ActsSpacePointsStripName' ,
"ITkStripSpacePoints")
196 kwargs.setdefault(
'ActsSpacePointsOverlapName' ,
"ITkStripOverlapSpacePoints")
206 useClusters = flags.Tracking.ActiveConfig.doAthenaToActsCluster
and not flags.Tracking.ActiveConfig.doAthenaToActsSpacePoint
207 kwargs.setdefault(
'useClustersForSeedConversion', useClusters)
209 if flags.Tracking.ActiveConfig.usePrdAssociationTool:
211 kwargs.setdefault(
'PRDtoTrackMap', (
212 'ITkPRDtoTrackMap' + flags.Tracking.ActiveConfig.extension))
216 seedTool_pixel =
None
217 if 'SeedToolPixel' not in kwargs:
218 if flags.Acts.SeedingStrategy
is SeedingStrategy.Orthogonal:
219 if flags.Tracking.doITkFastTracking:
223 elif flags.Acts.SeedingStrategy
is SeedingStrategy.Gbts:
226 if flags.Tracking.doITkFastTracking:
227 kwargs.setdefault(
"useFastTracking",
True)
232 seedTool_strip =
None
233 if 'SeedToolStrip' not in kwargs:
234 if flags.Acts.SeedingStrategy
is SeedingStrategy.Orthogonal:
238 rMax=flags.Tracking.ActiveConfig.radMax))
240 kwargs.setdefault(
'SeedToolPixel', seedTool_pixel)
241 kwargs.setdefault(
'SeedToolStrip', seedTool_strip)
244 if flags.Tracking.writeSeedValNtuple:
245 kwargs.setdefault(
'WriteNtuple',
True)
246 HistService = CompFactory.THistSvc(Output = [
"valNtuples DATAFILE='SeedMakerValidation.root' OPT='RECREATE'"])
247 acc.addService(HistService)
249 acc.setPrivateTools(CompFactory.ActsTrk.SiSpacePointsSeedMaker(name, **kwargs))
255 name: str =
'ActsPixelSeedingAlg',
256 **kwargs) -> ComponentAccumulator:
260 from BeamSpotConditions.BeamSpotConditionsConfig
import BeamSpotCondAlgCfg
263 from MagFieldServices.MagFieldServicesConfig
import AtlasFieldCacheCondAlgCfg
266 from PixelGeoModelXml.ITkPixelGeoModelConfig
import ITkPixelReadoutGeometryCfg
271 if 'TrackingGeometryTool' not in kwargs:
272 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
274 acc.addPublicTool(geoTool)
275 kwargs.setdefault(
'TrackingGeometryTool', acc.getPublicTool(geoTool.name))
278 if 'ATLASConverterTool' not in kwargs:
279 from ActsConfig.ActsEventCnvConfig
import ActsToTrkConverterToolCfg
283 if 'TrackParamsEstimationTool' not in kwargs:
284 from ActsConfig.ActsTrackParamsEstimationConfig
import ActsTrackParamsEstimationToolCfg
287 useFastTracking = kwargs.get(
"useFastTracking", flags.Tracking.doITkFastTracking)
289 if "SeedTool" not in kwargs:
290 if flags.Acts.SeedingStrategy
is SeedingStrategy.Orthogonal:
295 elif flags.Acts.SeedingStrategy
is SeedingStrategy.Gbts:
303 kwargs.setdefault(
"useFastTracking", useFastTracking)
304 kwargs.setdefault(
'InputSpacePoints', [
'ITkPixelSpacePoints_Cached']
if flags.Acts.useCache
else [
'ITkPixelSpacePoints'])
305 kwargs.setdefault(
'OutputSeeds',
'ActsPixelSeeds')
306 kwargs.setdefault(
'OutputEstimatedTrackParameters',
'ActsPixelEstimatedTrackParams')
307 kwargs.setdefault(
'DetectorElements',
'ITkPixelDetectorElementCollection')
308 kwargs.setdefault(
'UsePixel',
True)
310 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
311 from ActsConfig.ActsMonitoringConfig
import ActsITkPixelSeedingMonitoringToolCfg
314 acc.addEventAlgo(CompFactory.ActsTrk.SeedingAlg(name, **kwargs))
319 name: str =
'ActsStripSeedingAlg',
320 **kwargs) -> ComponentAccumulator:
324 from BeamSpotConditions.BeamSpotConditionsConfig
import BeamSpotCondAlgCfg
327 from MagFieldServices.MagFieldServicesConfig
import AtlasFieldCacheCondAlgCfg
330 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
335 if 'TrackingGeometryTool' not in kwargs:
336 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
338 acc.addPublicTool(geoTool)
339 kwargs.setdefault(
'TrackingGeometryTool', acc.getPublicTool(geoTool.name))
342 if 'ATLASConverterTool' not in kwargs:
343 from ActsConfig.ActsEventCnvConfig
import ActsToTrkConverterToolCfg
347 if 'TrackParamsEstimationTool' not in kwargs:
348 from ActsConfig.ActsTrackParamsEstimationConfig
import ActsTrackParamsEstimationToolCfg
349 kwargs.setdefault(
'TrackParamsEstimationTool', acc.popToolsAndMerge(
ActsTrackParamsEstimationToolCfg(flags, useTopSp=flags.Acts.reverseTrackFindingForStrips)))
351 if "SeedTool" not in kwargs:
352 if flags.Acts.SeedingStrategy
is SeedingStrategy.Orthogonal:
357 kwargs.setdefault(
'InputSpacePoints', [
'ITkStripSpacePoints_Cached',
'ITkStripOverlapSpacePoints_Cached']
if flags.Acts.useCache
else [
'ITkStripSpacePoints',
'ITkStripOverlapSpacePoints'])
358 kwargs.setdefault(
'OutputSeeds',
'ActsStripSeeds')
359 kwargs.setdefault(
'OutputEstimatedTrackParameters',
'ActsStripEstimatedTrackParams')
360 kwargs.setdefault(
'DetectorElements',
'ITkStripDetectorElementCollection')
361 kwargs.setdefault(
'UsePixel',
False)
363 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
364 from ActsConfig.ActsMonitoringConfig
import ActsITkStripSeedingMonitoringToolCfg
367 kwargs.setdefault(
'useTopSp', flags.Acts.reverseTrackFindingForStrips)
369 acc.addEventAlgo(CompFactory.ActsTrk.SeedingAlg(name, **kwargs))
374 **kwargs) -> ComponentAccumulator:
377 kwargs.setdefault(
'processPixels', flags.Detector.EnableITkPixel)
378 kwargs.setdefault(
'processStrips', flags.Detector.EnableITkStrip)
380 if kwargs[
'processPixels']:
382 if kwargs[
'processStrips']:
386 if flags.Acts.doAnalysis:
387 if kwargs[
'processPixels']:
388 from ActsConfig.ActsAnalysisConfig
import ActsPixelSeedAnalysisAlgCfg, ActsPixelEstimatedTrackParamsAnalysisAlgCfg
392 if kwargs[
'processStrips']:
393 from ActsConfig.ActsAnalysisConfig
import ActsStripSeedAnalysisAlgCfg, ActsStripEstimatedTrackParamsAnalysisAlgCfg
401 processPixels = flags.Detector.EnableITkPixel
402 processStrips = flags.Detector.EnableITkStrip
405 if flags.Tracking.ActiveConfig.extension
in [
"ActsConversion",
"ActsLargeRadius"]:
406 processPixels =
False
408 elif flags.Tracking.doITkFastTracking:
409 processStrips =
False
412 kwargs.setdefault(
'processPixels', processPixels)
413 kwargs.setdefault(
'processStrips', processStrips)
416 if flags.Tracking.ActiveConfig.extension ==
"ActsHeavyIon" and processPixels:
418 name=f
'{flags.Tracking.ActiveConfig.extension}PixelSeedingTool',
419 minPt=flags.Tracking.ActiveConfig.minPTSeed)))
420 if processStrips
and flags.Acts.SeedingStrategy
is SeedingStrategy.Default:
422 name=f
'{flags.Tracking.ActiveConfig.extension}StripSeedingTool',
423 rMax=flags.Tracking.ActiveConfig.radMax)))
427 kwargs.setdefault(
'PixelSeedingAlg.name', f
'{flags.Tracking.ActiveConfig.extension}PixelSeedingAlg')
428 kwargs.setdefault(
'PixelSeedingAlg.useFastTracking', flags.Tracking.doITkFastTracking)
429 kwargs.setdefault(
'PixelSeedingAlg.OutputSeeds', f
'{flags.Tracking.ActiveConfig.extension}PixelSeeds')
430 kwargs.setdefault(
'PixelSeedingAlg.OutputEstimatedTrackParameters', f
'{flags.Tracking.ActiveConfig.extension}PixelEstimatedTrackParams')
432 pixelSpacePoints = [
'ITkPixelSpacePoints_Cached']
if flags.Acts.useCache
else [
'ITkPixelSpacePoints']
433 if flags.Tracking.ActiveConfig.isSecondaryPass:
434 pixelSpacePoints = [f
'ITk{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}PixelSpacePoints_Cached']
if flags.Acts.useCache
else [f
'ITk{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}PixelSpacePoints']
435 kwargs.setdefault(
'PixelSeedingAlg.InputSpacePoints', pixelSpacePoints)
438 if flags.Acts.doAnalysis:
439 kwargs.setdefault(
'PixelSeedAnalysisAlg.name', f
'{flags.Tracking.ActiveConfig.extension}PixelSeedAnalysisAlg')
440 kwargs.setdefault(
'PixelSeedAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
441 kwargs.setdefault(
'PixelSeedAnalysisAlg.InputSeedCollection', kwargs[
'PixelSeedingAlg.OutputSeeds'])
443 kwargs.setdefault(
'PixelEstimatedTrackParamsAnalysisAlg.name', f
'{flags.Tracking.ActiveConfig.extension}PixelEstimatedTrackParamsAnalysisAlg')
444 kwargs.setdefault(
'PixelEstimatedTrackParamsAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
445 kwargs.setdefault(
'PixelEstimatedTrackParamsAnalysisAlg.InputTrackParamsCollection', kwargs[
'PixelSeedingAlg.OutputEstimatedTrackParameters'])
449 kwargs.setdefault(
'StripSeedingAlg.name', f
'{flags.Tracking.ActiveConfig.extension}StripSeedingAlg')
450 kwargs.setdefault(
'StripSeedingAlg.OutputSeeds', f
'{flags.Tracking.ActiveConfig.extension}StripSeeds')
451 kwargs.setdefault(
'StripSeedingAlg.OutputEstimatedTrackParameters', f
'{flags.Tracking.ActiveConfig.extension}StripEstimatedTrackParams')
454 if flags.Tracking.ActiveConfig.extension ==
'ActsConversion':
455 kwargs.setdefault(
'StripSeedingAlg.InputSpacePoints', [
'ITkConversionStripSpacePoints_Cached']
if flags.Acts.useCache
else [
'ITkConversionStripSpacePoints'])
456 elif flags.Tracking.ActiveConfig.extension ==
'ActsLargeRadius':
457 kwargs.setdefault(
'StripSeedingAlg.InputSpacePoints', [
'ITkLargeRadiusStripSpacePoints_Cached',
458 'ITkLargeRadiusStripOverlapSpacePoints_Cached']
if flags.Acts.useCache
else [
'ITkLargeRadiusStripSpacePoints',
459 'ITkLargeRadiusStripOverlapSpacePoints'])
460 elif flags.Tracking.ActiveConfig.extension ==
'ActsLowPt':
461 kwargs.setdefault(
'StripSeedingAlg.InputSpacePoints', [
'ITkLowPtStripSpacePoints_Cached',
462 'ITkLowPtStripOverlapSpacePoints_Cached']
if flags.Acts.useCache
else [
'ITkLowPtStripSpacePoints',
463 'ITkLowPtStripOverlapSpacePoints'])
465 kwargs.setdefault(
'StripSeedingAlg.InputSpacePoints', [
'ITkStripSpacePoints_Cached',
466 'ITkStripOverlapSpacePoints_Cached']
if flags.Acts.useCache
else [
'ITkStripSpacePoints',
467 'ITkStripOverlapSpacePoints'])
470 if flags.Acts.doAnalysis:
471 kwargs.setdefault(
'StripSeedAnalysisAlg.name', f
'{flags.Tracking.ActiveConfig.extension}StripSeedAnalysisAlg')
472 kwargs.setdefault(
'StripSeedAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
473 kwargs.setdefault(
'StripSeedAnalysisAlg.InputSeedCollection', kwargs[
'StripSeedingAlg.OutputSeeds'])
475 kwargs.setdefault(
'StripEstimatedTrackParamsAnalysisAlg.name', f
'{flags.Tracking.ActiveConfig.extension}StripEstimatedTrackParamsAnalysisAlg')
476 kwargs.setdefault(
'StripEstimatedTrackParamsAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
477 kwargs.setdefault(
'StripEstimatedTrackParamsAnalysisAlg.InputTrackParamsCollection', kwargs[
'StripSeedingAlg.OutputEstimatedTrackParameters'])
481 if flags.Tracking.ActiveConfig.storeTrackSeeds:
483 seedKey = f
'{flags.Tracking.ActiveConfig.extension}PixelSeeds'
484 trackKey = f
'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}Tracks'
485 particleKey = f
'SiSPSeedSegments{flags.Tracking.ActiveConfig.extension}'
487 name=f
"{flags.Tracking.ActiveConfig.extension}SeedToTrackCnvAlg"),
488 SeedContainerKey=seedKey,
489 ACTSTracksLocation=trackKey)
490 from ActsConfig.ActsTrackFindingConfig
import ActsTrackToTrackParticleCnvAlgCfg
492 name=f
"{flags.Tracking.ActiveConfig.extension}TracksSeedToTrackParticleCnvAlg",
493 TrackParticlesOutKey=particleKey,
494 ACTSTracksLocation=[trackKey]))
499 name: str =
'ActsSeedToTrackCnvAlg',
500 **kwargs: dict) -> ComponentAccumulator:
502 from ActsConfig.ActsGeometryConfig
import ActsDetectorElementToActsGeometryIdMappingAlgCfg
504 kwargs.setdefault(
'DetectorElementToActsGeometryIdMapKey',
'DetectorElementToActsGeometryIdMap')
506 kwargs.setdefault(
'SeedContainerKey', f
'{flags.Tracking.ActiveConfig.extension}PixelSeeds')
507 kwargs.setdefault(
'EstimatedTrackParametersKey',f
'{flags.Tracking.ActiveConfig.extension}PixelEstimatedTrackParams')
509 kwargs.setdefault(
'ACTSTracksLocation', f
'SiSPTracksSeedSegments{flags.Tracking.ActiveConfig.extension}Tracks')
511 if 'TrackingGeometryTool' not in kwargs:
512 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
515 acc.addEventAlgo(CompFactory.ActsTrk.SeedToTrackCnvAlg(name, **kwargs), primary=
True)