3 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory
import CompFactory
5 from ActsConfig.ActsConfigFlags
import TrackFitterType
6 from ActsInterop
import UnitConstants
9 name: str =
"ActsKalmanFitter",
10 **kwargs) -> ComponentAccumulator:
13 if flags.Acts.fitFromPRD:
15 if 'RotCreatorTool' not in kwargs:
16 from TrkConfig.TrkRIO_OnTrackCreatorConfig
import ITkRotCreatorCfg
17 kwargs.setdefault(
'RotCreatorTool', acc.popToolsAndMerge(
ITkRotCreatorCfg(flags)))
19 if 'BroadRotCreatorTool' not in kwargs:
20 from TrkConfig.TrkRIO_OnTrackCreatorConfig
import ITkBroadRotCreatorCfg
26 if "TrackingGeometryTool" not in kwargs:
27 from ActsConfig.ActsGeometryConfig
import ActsTrackingGeometryToolCfg
30 if "ExtrapolationTool" not in kwargs:
31 from ActsConfig.ActsGeometryConfig
import ActsExtrapolationToolCfg
34 if flags.Acts.trackFitterType
is TrackFitterType.KalmanFitter:
35 kwargs.setdefault(
"ReverseFilteringPt", 1.0 * UnitConstants.GeV)
36 kwargs.setdefault(
"OverstepLimit", 300 * UnitConstants.um)
38 if 'ATLASConverterTool' not in kwargs:
39 from ActsConfig.ActsEventCnvConfig
import ActsToTrkConverterToolCfg
42 if "SummaryTool" not in kwargs:
43 from TrkConfig.TrkTrackSummaryToolConfig
import InDetTrackSummaryToolCfg
46 if 'BoundaryCheckTool' not in kwargs:
47 if flags.Detector.GeometryITk:
48 from InDetConfig.InDetBoundaryCheckToolConfig
import ITkBoundaryCheckToolCfg
51 from InDetConfig.InDetBoundaryCheckToolConfig
import InDetBoundaryCheckToolCfg
54 if flags.Acts.trackFitterType
is TrackFitterType.KalmanFitter:
55 acc.setPrivateTools(CompFactory.ActsTrk.KalmanFitter(name, **kwargs))
56 elif flags.Acts.trackFitterType
is TrackFitterType.GaussianSumFitter:
57 name = name.replace(
"KalmanFitter",
"GaussianSumFitter")
58 acc.setPrivateTools(CompFactory.ActsTrk.GaussianSumFitter(name, **kwargs))
65 name : str =
"ActsReFitterAlg",
66 **kwargs) -> ComponentAccumulator:
68 kwargs.setdefault(
"ActsFitter", acc.popToolsAndMerge(
ActsFitterCfg(flags)))
69 kwargs.setdefault(
"TrackName",
"ResolvedTracks")
70 kwargs.setdefault(
"NewTrackName",
"Refitted_Tracks")
71 kwargs.setdefault(
"DoReFitFromPRD", flags.Acts.fitFromPRD)
72 acc.addEventAlgo(CompFactory.ActsTrk.ReFitterAlg(name, **kwargs))
74 if flags.Acts.writeTrackCollection:
81 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
82 flags.Tracking.ITkPrimaryPassConfig.value)
87 trackName: str =
'ResolvedTracks',
88 newTrackName: str =
'ReFitted_Tracks') -> ComponentAccumulator:
91 from xAODTrackingCnv.xAODTrackingCnvConfig
import ITkTrackParticleCnvAlgCfg
93 if flags.Tracking.doTruth:
94 from InDetConfig.ITkTrackTruthConfig
import ITkTrackTruthCfg
97 DetailedTruth = f
"{trackName}DetailedTruth",
98 TracksTruth = f
"{trackName}TruthCollection"))
100 Tracks = newTrackName,
101 DetailedTruth = f
"{newTrackName}DetailedTruth",
102 TracksTruth = f
"{newTrackName}TruthCollection"))
105 name = f
"{trackName}TrackParticleCnvAlg",
106 TrackContainerName = trackName,
107 xAODTrackParticlesFromTracksContainerName = f
"{trackName}TrackParticles",
108 TrackTruthContainerName = f
"{trackName}TruthCollection"))
110 name = f
"{newTrackName}TrackParticleCnvAlg",
111 TrackContainerName = newTrackName,
112 xAODTrackParticlesFromTracksContainerName = f
"{newTrackName}TrackParticles",
113 TrackTruthContainerName = f
"{newTrackName}TruthCollection"))
115 from OutputStreamAthenaPool.OutputStreamConfig
import addToESD, addToAOD
116 itemList = [f
"xAOD::TrackParticleContainer#{trackName}TrackParticles",
117 f
"xAOD::TrackParticleAuxContainer#{trackName}TrackParticlesAux.",
118 f
"xAOD::TrackParticleContainer#{newTrackName}TrackParticles",
119 f
"xAOD::TrackParticleAuxContainer#{newTrackName}TrackParticlesAux."]
121 acc.merge(
addToESD(flags, itemList))
122 acc.merge(
addToAOD(flags, itemList))