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))
164 m_mutableTrackBackend = std::exchange(
other.m_mutableTrackBackend,
nullptr);
165 m_mutableTrackBackendAux = std::exchange(
other.m_mutableTrackBackendAux,
nullptr);
168 m_mutableTrackBackend->setStore(m_mutableTrackBackendAux.get());
171 m_surfaces = std::move(
other.m_surfaces);
172 m_decorations = std::move(
other.m_decorations);
180 other.m_surfaces.clear();
181 other.m_decorations.clear();
187 m_mutableTrackBackend->push_back(std::make_unique<xAOD::TrackSummary>());
188 m_mutableTrackBackend->back()->resize();
190 m_mutableTrackBackend->back()->setParticleHypothesis(
xAOD::pion);
191 m_surfaces.push_back(
nullptr);
192 return m_mutableTrackBackend->size() - 1;
197 if (itrack >= m_mutableTrackBackend->size()) {
198 throw std::out_of_range(
"removeTrack_impl track backend");
200 if (itrack >= m_surfaces.size()) {
201 throw std::out_of_range(
"removeTrack_impl surfaces");
203 m_mutableTrackBackend->erase(m_mutableTrackBackend->begin() + itrack);
204 m_surfaces.erase(m_surfaces.begin() + itrack);
210 const std::any& src_ptr) {
211 if ( staticVariableHashes.count(
key) == 1) {
return; }
212 for (
const auto&
d: m_decorations) {
213 if (
d.hash !=
key) {
continue; }
214 d.copier(m_mutableTrackBackendAux.get(), itrack,
d.auxid, src_ptr);
220 std::any
result = ::component_impl(*m_mutableTrackBackend,
key, itrack);
224 for (
auto&
d : m_decorations) {
226 return d.setter(m_mutableTrackBackendAux.get(), itrack,
d.auxid);
229 throw std::runtime_error(
"TrackSummaryContainer no such component " +
235 return m_mutableTrackBackend->at(itrack)->paramsEigen();
240 return m_mutableTrackBackend->at(itrack)->covParamsEigen();
245 for (
auto&
d :
other.m_decorations) {
246 m_decorations.push_back(
d);
252 for (
auto&
d :
other.m_decorations) {
253 m_decorations.push_back(
d);
258 m_mutableTrackBackend->reserve(
size);
262 m_mutableTrackBackend->clear();
268 m_surfaces[itrack] = std::move(surface);
272 dest->resize(m_surfaces.size());
273 size_t destIndex = 0;
277 if ( m_surfaces[
index] ==
nullptr or m_surfaces[
index]->geometryId().
value() != 0 ) {
278 m_mutableTrackBackend->at(
index)->setSurfaceIndex(Acts::kTrackIndexInvalid);
280 m_mutableTrackBackend->at(
index)->setSurfaceIndex(destIndex);
285 dest->resize(destIndex);