6 TrackContainers: list[str],
7 TrackParticleContainer: str,
8 persistifyCollection: bool =
True,
9 PerigeeExpression: str =
None) -> ComponentAccumulator:
19 assert isinstance(TrackContainers, list)
20 for container
in TrackContainers:
21 assert isinstance(container, str)
25 if PerigeeExpression
is None:
26 PerigeeExpression = flags.Tracking.perigeeExpression
28 print(
"Storing track and track particle containers:")
29 print(f
"- track collection(s): {TrackContainers}")
30 print(f
"- track particle collection: {TrackParticleContainer}")
32 acc = ComponentAccumulator()
34 prefix =
"ActsCombined" if not flags.hasCategory(
"Tracking.ActiveConfig")
else flags.Tracking.ActiveConfig.extension
35 prefix += f
"To{TrackParticleContainer}"
36 from ActsConfig.ActsEventCnvConfig
import ActsTrackToTrackParticleCnvAlgCfg, xAODtoTrkConverterAlgCfg
37 acc.merge(ActsTrackToTrackParticleCnvAlgCfg(flags,
38 name = f
"{prefix}TrackToTrackParticleCnvAlg",
39 ACTSTracksLocation = TrackContainers,
40 TrackParticlesOutKey = TrackParticleContainer,
41 PerigeeExpression = PerigeeExpression))
44 if "Temporary" not in TrackParticleContainer
and \
45 "Seed" not in TrackParticleContainer:
46 acc.merge(xAODtoTrkConverterAlgCfg(flags,
47 name=f
"{prefix}TrackParticleToTrkCnvAlg",
48 TrackParticles = TrackParticleContainer,
49 OutTrackContainer=
"Combined{tracks}Tracks".format(tracks =
50 TrackParticleContainer[:TrackParticleContainer.rfind(
"Track")]) ))
51 if flags.Tracking.doTruth :
53 track_to_truth_maps = []
54 from ActsConfig.ActsTruthConfig
import ActsTrackParticleTruthDecorationAlgCfg
55 for trackContainer
in TrackContainers:
56 track_to_truth_maps.append(f
"{trackContainer}ToTruthParticleAssociation")
57 acc.merge(ActsTrackParticleTruthDecorationAlgCfg(flags,
58 name = f
'{prefix}TruthDecorationAlg',
59 TrackToTruthAssociationMaps = track_to_truth_maps,
60 TrackParticleContainerName = TrackParticleContainer,
61 OutputLevel = WARNING
if len(TrackContainers)==1
else INFO,
62 ComputeTrackRecoEfficiency =
False if len(TrackContainers)==1
else True))
65 if flags.Acts.storeTrackStateInfo:
66 from ActsConfig.ActsObjectDecorationConfig
import ActsMeasurementToTrackParticleDecorationAlgCfg
67 acc.merge(ActsMeasurementToTrackParticleDecorationAlgCfg(flags,
68 name = f
"ActsMeasurementTo{TrackParticleContainer}DecorationAlg",
69 TrackParticleKey = TrackParticleContainer))
71 if flags.Acts.Particles.doAnalysis:
72 from ActsConfig.ActsAnalysisConfig
import ActsResidualAnalysisAlgCfg
73 acc.merge(ActsResidualAnalysisAlgCfg(flags,
74 name = f
"Acts{TrackParticleContainer}ResidualAnalysisAlg",
75 TrackParticles = TrackParticleContainer))
81 if persistifyCollection:
82 from ActsConfig.ActsPersistificationConfig
import PersistifyTrackParticles
83 acc.merge(PersistifyTrackParticles(flags,
84 trackParticleCollections=[TrackParticleContainer]))
89 acc = ComponentAccumulator()
92 if flags.Tracking.ActiveConfig.storeSiSPSeededTracks:
94 TrackParticleContainer = f
'SiSPSeededTracks{flags.Tracking.ActiveConfig.extension}TrackParticles'
96 TrackContainers = [f
"{flags.Tracking.ActiveConfig.extension}Tracks"],
97 TrackParticleContainer = TrackParticleContainer))
102 if flags.Tracking.ActiveConfig.storeSeparateContainer:
107 acts_tracks = f
"{flags.Tracking.ActiveConfig.extension}Tracks" if not flags.Acts.doAmbiguityResolution
else f
"{flags.Tracking.ActiveConfig.extension}ResolvedTracks"
108 from InDetConfig.ITkActsHelpers
import separateTrackParticleContainerName
109 TrackParticles = separateTrackParticleContainerName(flags)
111 TrackContainers = [acts_tracks],
112 TrackParticleContainer = TrackParticles))
ComponentAccumulator ITkActsTrackParticleCreationCfg(flags, *, list[str] TrackContainers, str TrackParticleContainer, bool persistifyCollection=True, str PerigeeExpression=None)
ComponentAccumulator ITkActsTrackParticlePersistificationCfg(flags)