5 #include <Acts/EventData/Types.hpp>
14 "params",
"covParams",
"nMeasurements",
"nHoles",
"chi2f",
15 "ndf",
"nOutliers",
"nSharedHits",
"tipIndex",
"stemIndex",
16 "particleHypothesis",
"surfaceIndex"};
18 using namespace Acts::HashedStringLiteral;
20 std::set<Acts::HashedString>
result;
22 result.insert(Acts::hashStringDynamic(
s));
30 : m_trackBackend(link)
35 if (itrack >= m_surfaces.size())
36 throw std::out_of_range(
37 "TrackSummaryContainer index out of range when accessing reference "
39 return m_surfaces[itrack].get();
47 return m_trackBackend->size();
52 std::any component_impl(C& container, Acts::HashedString
key,
54 using namespace Acts::HashedStringLiteral;
56 case "nMeasurements"_hash:
57 return container.at(itrack)->nMeasurementsPtr();
59 return container.at(itrack)->nHolesPtr();
61 return container.at(itrack)->chi2fPtr();
63 return container.at(itrack)->ndfPtr();
64 case "nOutliers"_hash:
65 return container.at(itrack)->nOutliersPtr();
66 case "nSharedHits"_hash:
67 return container.at(itrack)->nSharedHitsPtr();
69 return container.at(itrack)->tipIndexPtr();
70 case "stemIndex"_hash:
71 return container.at(itrack)->stemIndexPtr();
81 std::any
result = ::component_impl(*m_trackBackend,
key, itrack);
85 for (
auto&
d : m_decorations) {
88 return d.getter(m_trackBackend->getStore(), itrack,
d.auxid);
91 throw std::runtime_error(
"TrackSummaryContainer no such component " +
97 return m_trackBackend->at(itrack)->paramsEigen();
102 return m_trackBackend->at(itrack)->covParamsEigen();
115 std::vector<Acts::HashedString>
result;
116 for (
const auto&
d: m_decorations) {
117 if (staticVariableHashes.count(
d.hash) == 1) {
126 m_surfaces.reserve(
src->size());
127 for (
auto xAODSurfacePtr: *
src) {
148 m_mutableTrackBackend(std::move(
other.m_mutableTrackBackend)),
149 m_mutableTrackBackendAux(std::move(
other.m_mutableTrackBackendAux))
163 m_mutableTrackBackend = std::exchange(
other.m_mutableTrackBackend,
nullptr);
164 m_mutableTrackBackendAux = std::exchange(
other.m_mutableTrackBackendAux,
nullptr);
167 m_mutableTrackBackend->setStore(m_mutableTrackBackendAux.get());
170 m_surfaces = std::move(
other.m_surfaces);
171 m_decorations = std::move(
other.m_decorations);
179 other.m_surfaces.clear();
180 other.m_decorations.clear();
186 m_mutableTrackBackend->push_back(std::make_unique<xAOD::TrackSummary>());
187 m_mutableTrackBackend->back()->resize();
189 m_mutableTrackBackend->back()->setParticleHypothesis(
xAOD::pion);
190 m_surfaces.push_back(
nullptr);
191 return m_mutableTrackBackend->size() - 1;
196 if (itrack >= m_mutableTrackBackend->size()) {
197 throw std::out_of_range(
"removeTrack_impl track backend");
199 if (itrack >= m_surfaces.size()) {
200 throw std::out_of_range(
"removeTrack_impl surfaces");
202 m_mutableTrackBackend->erase(m_mutableTrackBackend->begin() + itrack);
203 m_surfaces.erase(m_surfaces.begin() + itrack);
209 const std::any& src_ptr) {
210 if ( staticVariableHashes.count(
key) == 1) {
return; }
211 for (
const auto&
d: m_decorations) {
212 if (
d.hash !=
key) {
continue; }
213 d.copier(m_mutableTrackBackendAux.get(), itrack,
d.auxid, src_ptr);
219 std::any
result = ::component_impl(*m_mutableTrackBackend,
key, itrack);
223 for (
auto&
d : m_decorations) {
225 return d.setter(m_mutableTrackBackendAux.get(), itrack,
d.auxid);
228 throw std::runtime_error(
"TrackSummaryContainer no such component " +
234 return m_mutableTrackBackend->at(itrack)->paramsEigen();
239 return m_mutableTrackBackend->at(itrack)->covParamsEigen();
244 for (
auto&
d :
other.m_decorations) {
245 m_decorations.push_back(
d);
251 for (
auto&
d :
other.m_decorations) {
252 m_decorations.push_back(
d);
257 m_mutableTrackBackend->reserve(
size);
261 m_mutableTrackBackend->clear();
267 m_surfaces[itrack] = surface;
271 dest->resize(m_surfaces.size());
272 size_t destIndex = 0;
276 if ( m_surfaces[
index] ==
nullptr or m_surfaces[
index]->geometryId().
value() != 0 ) {
277 m_mutableTrackBackend->at(
index)->setSurfaceIndex(Acts::kTrackIndexInvalid);
279 m_mutableTrackBackend->at(
index)->setSurfaceIndex(destIndex);
284 dest->resize(destIndex);