128 {
129
130
131 std::unique_ptr<ActsTrk::MultiTrajectory> constMtj =
132 moveToConst(std::move(
tc.trackStateContainer()), evtContext);
133
135 if (constMtjHandle.record(std::move(constMtj)).isFailure()) {
136 throw std::runtime_error(
137 "MutableTrackContainerHandlesHelper::moveToConst, can't record "
138 "ConstMultiTrajectory");
139 }
140
141 auto trackSurfacesAux = std::make_unique<xAOD::TrackSurfaceAuxContainer>();
142 tc.container().encodeSurfaces(trackSurfacesAux.get(), geoContext);
143
144 auto interfaceTrackSummaryContainer =
146 tc.container().m_mutableTrackBackendAux.get());
148
150 trackSurfacesAux.get());
152
153 auto constTrackSummary = std::make_unique<ActsTrk::TrackSummaryContainer>(
155 evtContext));
156 constTrackSummary->restoreDecorations();
157 constTrackSummary->fillFrom(
tc.container());
158
160 if (constTrackSummaryHandle.record(std::move(constTrackSummary))
161 .isFailure()) {
162 throw std::runtime_error(
163 "MutableTrackContainerHandlesHelper::moveToConst, can't record "
164 "TrackSummary");
165 }
166 auto constTrack = std::make_unique<ActsTrk::PersistentTrackContainer>(
168 evtContext),
169 DataLink<ActsTrk::MultiTrajectory>(
m_mtjKey.key(), evtContext));
170 return constTrack;
171}
std::unique_ptr< ActsTrk::PersistentTrackContainer > moveToConst(ActsTrk::MutablePersistentTrackContainer &&tc, const Acts::GeometryContext &geoContext, const EventContext &evtContext) const
produces ActsTrk::ConstTrackContainer with all backends stored in SG