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 =
"ActsFitterTool",
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)
37 if 'ATLASConverterTool' not in kwargs:
38 from ActsConfig.ActsEventCnvConfig
import ActsToTrkConverterToolCfg
41 if "SummaryTool" not in kwargs:
42 from TrkConfig.TrkTrackSummaryToolConfig
import InDetTrackSummaryToolCfg
45 if 'BoundaryCheckTool' not in kwargs:
46 if flags.Detector.GeometryITk:
47 from InDetConfig.InDetBoundaryCheckToolConfig
import ITkBoundaryCheckToolCfg
50 from InDetConfig.InDetBoundaryCheckToolConfig
import InDetBoundaryCheckToolCfg
53 if flags.Acts.trackFitterType
is TrackFitterType.KalmanFitter:
54 acc.setPrivateTools(CompFactory.ActsTrk.KalmanFitterTool(name, **kwargs))
55 elif flags.Acts.trackFitterType
is TrackFitterType.GaussianSumFitter:
56 name = name.replace(
"KalmanFitter",
"GaussianSumFitter")
57 acc.setPrivateTools(CompFactory.ActsTrk.GaussianSumFitterTool(name, **kwargs))
58 elif flags.Acts.trackFitterType
is TrackFitterType.GlobalChiSquareFitter:
59 name = name.replace(
"KalmanFitter",
"GlobalChiSquareFitter")
60 acc.setPrivateTools(CompFactory.ActsTrk.GlobalChiSquareFitterTool(name, **kwargs))
67 name : str =
"ActsReFitterAlg",
68 **kwargs) -> ComponentAccumulator:
70 kwargs.setdefault(
"ActsFitter", acc.popToolsAndMerge(
ActsFitterCfg(flags)))
71 kwargs.setdefault(
"TrackName",
"ResolvedTracks")
72 kwargs.setdefault(
"NewTrackName",
"Refitted_Tracks")
73 kwargs.setdefault(
"DoReFitFromPRD", flags.Acts.fitFromPRD)
74 acc.addEventAlgo(CompFactory.ActsTrk.ReFitterAlg(name, **kwargs))
76 if flags.Acts.writeTrackCollection:
83 flags = flags.cloneAndReplace(
"Tracking.ActiveConfig",
84 flags.Tracking.ITkPrimaryPassConfig.value)
89 trackName: str =
'ResolvedTracks',
90 newTrackName: str =
'ReFitted_Tracks') -> ComponentAccumulator:
93 from xAODTrackingCnv.xAODTrackingCnvConfig
import ITkTrackParticleCnvAlgCfg
95 if flags.Tracking.doTruth:
96 from InDetConfig.ITkTrackTruthConfig
import ITkTrackTruthCfg
99 DetailedTruth = f
"{trackName}DetailedTruth",
100 TracksTruth = f
"{trackName}TruthCollection"))
102 Tracks = newTrackName,
103 DetailedTruth = f
"{newTrackName}DetailedTruth",
104 TracksTruth = f
"{newTrackName}TruthCollection"))
107 name = f
"{trackName}TrackParticleCnvAlg",
108 TrackContainerName = trackName,
109 xAODTrackParticlesFromTracksContainerName = f
"{trackName}TrackParticles",
110 TrackTruthContainerName = f
"{trackName}TruthCollection"))
112 name = f
"{newTrackName}TrackParticleCnvAlg",
113 TrackContainerName = newTrackName,
114 xAODTrackParticlesFromTracksContainerName = f
"{newTrackName}TrackParticles",
115 TrackTruthContainerName = f
"{newTrackName}TruthCollection"))
117 from OutputStreamAthenaPool.OutputStreamConfig
import addToESD, addToAOD
118 itemList = [f
"xAOD::TrackParticleContainer#{trackName}TrackParticles",
119 f
"xAOD::TrackParticleAuxContainer#{trackName}TrackParticlesAux.",
120 f
"xAOD::TrackParticleContainer#{newTrackName}TrackParticles",
121 f
"xAOD::TrackParticleAuxContainer#{newTrackName}TrackParticlesAux."]
123 acc.merge(
addToESD(flags, itemList))
124 acc.merge(
addToAOD(flags, itemList))