File indexing completed on 2026-04-07 07:45:45
0001
0002
0003
0004
0005
0006
0007
0008
0009 #pragma once
0010
0011 #include "Acts/Definitions/Algebra.hpp"
0012 #include "Acts/Definitions/Units.hpp"
0013 #include "Acts/EventData/SpacePointData.hpp"
0014 #include "Acts/EventData/SpacePointProxy.hpp"
0015 #include "Acts/EventData/Utils.hpp"
0016 #include "Acts/Utilities/Diagnostics.hpp"
0017 #include "Acts/Utilities/Holders.hpp"
0018 #include "Acts/Utilities/detail/ContainerIterator.hpp"
0019
0020 #include <vector>
0021
0022 ACTS_PUSH_IGNORE_DEPRECATED()
0023
0024 namespace Acts {
0025
0026
0027 struct SpacePointContainerConfig {
0028
0029 bool useDetailedDoubleMeasurementInfo = false;
0030
0031
0032 bool isInInternalUnits = true;
0033 };
0034
0035
0036 struct SpacePointContainerOptions {
0037
0038 Acts::Vector2 beamPos{0 * Acts::UnitConstants::mm,
0039 0 * Acts::UnitConstants::mm};
0040
0041
0042 bool isInInternalUnits = true;
0043 };
0044
0045
0046 template <typename container_t, template <typename> class holder_t>
0047 class [[deprecated(
0048 "Will be dropped soon and is replaced by the new "
0049 "SpacePointContainer")]] SpacePointContainer {
0050 public:
0051 friend class Acts::SpacePointProxy<
0052 Acts::SpacePointContainer<container_t, holder_t>>;
0053
0054 public:
0055
0056 using SpacePointProxyType =
0057 Acts::SpacePointProxy<Acts::SpacePointContainer<container_t, holder_t>>;
0058
0059
0060 using iterator = detail::ContainerIterator<
0061 Acts::SpacePointContainer<container_t, holder_t>, SpacePointProxyType&,
0062 std::size_t, false>;
0063
0064 using const_iterator = detail::ContainerIterator<
0065 Acts::SpacePointContainer<container_t, holder_t>,
0066 const SpacePointProxyType&, std::size_t, true>;
0067
0068
0069 using ValueType = typename container_t::ValueType;
0070
0071 using ProxyType = SpacePointProxyType;
0072
0073 using value_type = ProxyType;
0074
0075 using size_type = std::size_t;
0076
0077 public:
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088 template <template <typename> class H = holder_t,
0089 typename = std::enable_if_t<Acts::detail::is_same_template<
0090 H, Acts::detail::RefHolder>::value>>
0091 SpacePointContainer(const Acts::SpacePointContainerConfig& config,
0092 const Acts::SpacePointContainerOptions& options,
0093 const container_t& container);
0094
0095
0096
0097
0098
0099
0100
0101 template <template <typename> class H = holder_t,
0102 typename = std::enable_if_t<Acts::detail::is_same_template<
0103 H, Acts::detail::ValueHolder>::value>>
0104 SpacePointContainer(const Acts::SpacePointContainerConfig& config,
0105 const Acts::SpacePointContainerOptions& options,
0106 container_t&& container);
0107
0108
0109 SpacePointContainer(SpacePointContainer& other) = delete;
0110 SpacePointContainer& operator=(SpacePointContainer& other) = delete;
0111
0112
0113
0114
0115 SpacePointContainer(SpacePointContainer&& other) noexcept = default;
0116
0117
0118
0119 SpacePointContainer& operator=(SpacePointContainer&& other) noexcept =
0120 default;
0121
0122
0123 ~SpacePointContainer() = default;
0124
0125
0126
0127 std::size_t size() const;
0128
0129
0130
0131 iterator begin();
0132
0133
0134 iterator end();
0135
0136
0137 const_iterator cbegin() const;
0138
0139
0140 const_iterator cend() const;
0141
0142
0143 const_iterator begin() const;
0144
0145
0146 const_iterator end() const;
0147
0148
0149
0150
0151 ProxyType& at(const std::size_t n);
0152
0153
0154
0155 const ProxyType& at(const std::size_t n) const;
0156
0157
0158
0159 const ValueType& sp(const std::size_t n) const;
0160
0161 private:
0162 void initialize();
0163
0164 const container_t& container() const;
0165 const ProxyType& proxy(const std::size_t n) const;
0166 std::vector<ProxyType>& proxies();
0167 const std::vector<ProxyType>& proxies() const;
0168
0169 float x(const std::size_t n) const;
0170 float y(const std::size_t n) const;
0171 float z(const std::size_t n) const;
0172 float phi(const std::size_t n) const;
0173 float radius(const std::size_t n) const;
0174 float varianceR(const std::size_t n) const;
0175 float varianceZ(const std::size_t n) const;
0176
0177 const Acts::Vector3& topStripVector(const std::size_t n) const;
0178 const Acts::Vector3& bottomStripVector(const std::size_t n) const;
0179 const Acts::Vector3& stripCenterDistance(const std::size_t n) const;
0180 const Acts::Vector3& topStripCenterPosition(const std::size_t n) const;
0181
0182 Acts::SpacePointContainerConfig m_config;
0183 Acts::SpacePointContainerOptions m_options;
0184 Acts::SpacePointData m_data;
0185 holder_t<const container_t> m_container;
0186 std::vector<ProxyType> m_proxies;
0187 };
0188
0189 }
0190
0191 #include "Acts/EventData/SpacePointContainer.ipp"
0192
0193 ACTS_POP_IGNORE_DEPRECATED()