100def TritonTracccTrackMakerCfg(flags, name="TritonTracccTrackMaker", **kwargs):
101 """Set up a TrackMaker algorithm and return it"""
102 acc = ComponentAccumulator()
103
104 prefix = "Traccc"
105 track_container_name = f'{prefix}Tracks'
106 track_particles_name = f"{prefix}TrackParticles"
107
108
109 kwargs.setdefault("TracccTritonTool", acc.popToolsAndMerge(TracccTritonToolCfg(flags,
110 SaveEventsToCSV=saveTracccEventsToCSV,
111 MaxEventsToSave=nEventsToSave)))
112
113 from ActsConfig.ActsGeometryConfig import ActsTrackingGeometrySvcCfg
114 kwargs.setdefault("TrackingGeometrySvc", acc.getPrimaryAndMerge(ActsTrackingGeometrySvcCfg(flags)))
115
116
117 from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelReadoutGeometryCfg
118 acc.merge(ITkPixelReadoutGeometryCfg(flags))
119 from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
120 acc.merge(ITkStripReadoutGeometryCfg(flags))
121
122 try:
123 if flags.Tracking.ActiveConfig.extension != "Acts":
124 raise RuntimeError(f"wrong tracking pass: {flags.Tracking.ActiveConfig.extension}")
125 except AttributeError:
126 flags = flags.cloneAndReplace("Tracking.ActiveConfig",
127 "Tracking.ITkActsPass")
128
129
130 acc.addEventAlgo(CompFactory.TritonTracccTrackMaker(name, doTruth=doTruth, **kwargs))
131
132
134
135 from ActsConfig.ActsEventCnvConfig import ActsTrackToTrackParticleCnvAlgCfg
136 acc.merge(ActsTrackToTrackParticleCnvAlgCfg(flags,
137 name=f"{prefix}TrackToTrackParticleCnvAlg",
138 ACTSTracksLocation=[track_container_name],
139 TrackParticlesOutKey=track_particles_name))
140
141
142 pixel_key = "xAODPixelClustersFromInDetCluster"
143 strip_key = "xAODStripClustersFromInDetCluster"
144
145
146 if doTruth:
147 addTruthClusterAssociations(
148 acc, flags, prefix=prefix, pixelKey=pixel_key, stripKey=strip_key)
149 addTrackTruthDecorations(acc, flags, prefix, track_container_name)
150
151
152 if writeOutput:
153
154
155 inputList = []
156
157 inputList.append("xAOD::TruthParticleContainer#*")
158 inputList.append("xAOD::TruthParticleAuxContainer#*")
159 inputList.append("xAOD::TrackJacobianContainer#*")
160 inputList.append("xAOD::TrackJacobianAuxContainer#*")
161 inputList.append("xAOD::TrackMeasurementContainer#*")
162 inputList.append("xAOD::TrackMeasurementAuxContainer#*")
163 inputList.append("xAOD::TrackSurfaceContainer#*")
164 inputList.append("xAOD::TrackSurfaceAuxContainer#*")
165 inputList.append("xAOD::TrackParticleContainer#*")
166 inputList.append("xAOD::TrackParticleAuxContainer#*")
167
168 if doTruth:
169 inputList.append("xAOD::PixelClusterContainer#xAODPixelClustersFromInDetCluster")
170 inputList.append("xAOD::StripClusterContainer#xAODStripClustersFromInDetCluster")
171 inputList.append("xAOD::PixelClusterAuxContainer#xAODPixelClustersFromInDetClusterAux.")
172 inputList.append("xAOD::StripClusterAuxContainer#xAODStripClustersFromInDetClusterAux.")
173 else:
174 inputList.append("xAOD::PixelClusterContainer#*")
175 inputList.append("xAOD::StripClusterContainer#*")
176 inputList.append("xAOD::PixelClusterAuxContainer#*")
177 inputList.append("xAOD::StripClusterAuxContainer#*")
178
179 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
180 acc.merge(OutputStreamCfg(flags, 'AOD', ItemList=inputList))
181
182 return acc