12 #include <type_traits>
21 #ifdef ACTS_PARAMETER_DEFINITIONS_HEADER
22 #include ACTS_PARAMETER_DEFINITIONS_HEADER
145 static_assert(std::is_enum_v<BoundParametersIndices>,
146 "'BoundParametersIndices' must be an enum type");
147 static_assert(std::is_convertible_v<BoundParametersIndices, size_t>,
148 "'BoundParametersIndices' must be convertible to size_t");
150 "Bound track parameters must have at least two components");
151 static_assert(std::is_floating_point_v<BoundParametersScalar>,
152 "'BoundParametersScalar' must be a floating point type");
155 static_assert(std::is_enum_v<FreeParametersIndices>,
156 "'FreeParametersIndices' must be an enum type");
157 static_assert(std::is_convertible_v<FreeParametersIndices, size_t>,
158 "'FreeParametersIndices' must be convertible to size_t");
160 "Free track parameters must have at least six components");
161 static_assert(std::is_floating_point_v<FreeParametersScalar>,
162 "'FreeParametersScalar' must be a floating point type");
165 static_assert(std::is_enum_v<SpacePointIndices>,
166 "'SpacePointIndices' is not an enum type");
167 static_assert(std::is_convertible_v<SpacePointIndices, size_t>,
168 "'SpacePointIndices' is not convertible to size_t");
170 "Space points must have at least three components");
171 static_assert(std::is_floating_point_v<SpacePointScalar>,
172 "'SpacePointScalar' must be a floating point type");
175 static_assert(
eLOC_0 !=
eLOC_1,
"Local parameters must be differents");
177 "Local radius must be a local parameter");
179 "Local phi must be a local parameter");
181 "Local r*phi must be a local parameter");
183 "Local z must be a local parameter");
185 "Local x must be a local parameter");
187 "Local y must be a local parameter");
189 "D0 must be a local parameter");
191 "Z0 must be a local parameter");
208 template <BoundParametersIndices>
226 static constexpr
double pMin() {
return 0; }
243 template <BoundParametersIndices kIndex>