9 PerigeeExpression: str = None) -> ComponentAccumulator:
10
11
12
13
14
15
16
17
18
19 assert isinstance(TrackContainers, list)
20 for container in TrackContainers:
21 assert isinstance(container, str)
22
23
24
25 if PerigeeExpression is None:
26 PerigeeExpression = flags.Tracking.perigeeExpression
27
28 print(
"Storing track and track particle containers:")
29 print(f
"- track collection(s): {TrackContainers}")
30 print(f
"- track particle collection: {TrackParticleContainer}")
31
32 acc = ComponentAccumulator()
33
34 prefix = "ActsCombined" if not flags.hasCategory("Tracking.ActiveConfig") else flags.Tracking.ActiveConfig.extension
35 prefix += f"To{TrackParticleContainer}"
36 from ActsConfig.ActsTrackFindingConfig import ActsTrackToTrackParticleCnvAlgCfg
37 acc.merge(ActsTrackToTrackParticleCnvAlgCfg(flags,
38 name = f"{prefix}TrackToTrackParticleCnvAlg",
39 ACTSTracksLocation = TrackContainers,
40 TrackParticlesOutKey = TrackParticleContainer,
41 PerigeeExpression = PerigeeExpression))
42
43 if flags.Tracking.doTruth :
45 track_to_truth_maps = []
46 from ActsConfig.ActsTruthConfig import ActsTrackParticleTruthDecorationAlgCfg
47 for trackContainer in TrackContainers:
48 track_to_truth_maps.append(f"{trackContainer}ToTruthParticleAssociation")
49 acc.merge(ActsTrackParticleTruthDecorationAlgCfg(flags,
50 name = f'{prefix}TruthDecorationAlg',
51 TrackToTruthAssociationMaps = track_to_truth_maps,
52 TrackParticleContainerName = TrackParticleContainer,
53 OutputLevel = WARNING if len(TrackContainers)==1 else INFO,
54 ComputeTrackRecoEfficiency = False if len(TrackContainers)==1 else True))
55
56
57 if flags.Acts.storeTrackStateInfo:
58 from ActsConfig.ActsObjectDecorationConfig import ActsMeasurementToTrackParticleDecorationAlgCfg
59 acc.merge(ActsMeasurementToTrackParticleDecorationAlgCfg(flags,
60 name = f"ActsMeasurementTo{TrackParticleContainer}DecorationAlg",
61 TrackParticleKey = TrackParticleContainer))
62
63 if flags.Acts.Particles.doAnalysis:
64 from ActsConfig.ActsAnalysisConfig import ActsResidualAnalysisAlgCfg
65 acc.merge(ActsResidualAnalysisAlgCfg(flags,
66 name = f"Acts{TrackParticleContainer}ResidualAnalysisAlg",
67 TrackParticles = TrackParticleContainer))
68
69
70
71
72
73 if persistifyCollection:
74 toAOD = []
75 trackparticles_shortlist = [] if flags.Acts.EDM.PersistifyTracks else ['-actsTrack']
76 trackparticles_variables = ".".join(trackparticles_shortlist)
77 toAOD += [f"xAOD::TrackParticleContainer#{TrackParticleContainer}",
78 f"xAOD::TrackParticleAuxContainer#{TrackParticleContainer}Aux." + trackparticles_variables]
79
80 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
81 acc.merge(addToAOD(flags, toAOD))
82
83 return acc
84
85
void print(char *figname, TCanvas *c1)