35 decltype(std::declval<T>().fourPosition(std::declval<GeometryContext>()));
40 decltype(std::declval<T>().
position(std::declval<GeometryContext>()));
49 decltype(std::declval<T>().absoluteMomentum());
54 decltype(std::declval<T>().referenceSurface());
61 exists<TypeParametersVector, const T>;
63 exists<TypeCovarianceMatrix, const T>;
67 identical_to<BoundVector, ReturnTypeParameters, const T>;
72 identical_to<Vector4D, ReturnTypeFourPositionFromContext, const T>;
74 identical_to<Vector3D, ReturnTypePositionFromContext, const T>;
76 identical_to<double, ReturnTypeTime, const T>;
78 identical_to<Vector3D, ReturnTypeUnitDirection, const T>;
80 identical_to<double, ReturnTypeAbsoluteMomentum, const T>;
82 identical_to<double, ReturnTypeCharge, const T>;
84 identical_to<const Surface&, ReturnTypeReferenceSurface, const T>;
93 "Missing or invalid 'fourPosition' method");
95 "Missing or invalid 'position' method");
96 static_assert(
hasMethodTime,
"Missing or invalid 'time' method");
98 "Missing or invalid 'unitDirection' method");
100 "Missing or invalid 'absoluteMomentum' method");
103 "Missing or invalid 'referenceSurface' method");
113 template <
typename T>
118 exists<TypeParametersVector, const T>;
120 exists<TypeCovarianceMatrix, const T>;
124 identical_to<FreeVector, ReturnTypeParameters, const T>;
129 identical_to<Vector4D, ReturnTypeFourPosition, const T>;
131 identical_to<Vector3D, ReturnTypePosition, const T>;
133 identical_to<double, ReturnTypeTime, const T>;
135 identical_to<Vector3D, ReturnTypeUnitDirection, const T>;
137 identical_to<double, ReturnTypeAbsoluteMomentum, const T>;
139 identical_to<double, ReturnTypeCharge, const T>;
148 "Missing or invalid 'fourPosition' method");
150 static_assert(
hasMethodTime,
"Missing or invalid 'time' method");
152 "Missing or invalid 'unitDirection' method");
154 "Missing or invalid 'absoluteMomentum' method");
164 template <
typename parameters_t>
168 template <
typename parameters_t>