1 #ifndef GeometryVector_Basic3DVectorLD_h
2 #define GeometryVector_Basic3DVectorLD_h
5 #pragma clang diagnostic push
6 #pragma clang diagnostic ignored "-Wunused-private-field"
14 typedef long double T;
46 template <
class OtherPo
int>
134 return ret *= my_mag;
187 return x() * v.
x() +
y() * v.
y() +
z() * v.
z();
203 y() * v.
z() - v.
y() *
z(),
z() * v.
x() - v.
z() *
x(),
x() * v.
y() - v.
x() *
y());
220 return RT(a.
x() + b.
x(), a.
y() + b.
y(), a.
z() + b.
z());
224 return RT(a.
x() - b.
x(), a.
y() - b.
y(), a.
z() - b.
z());
231 return RT(a.
x() + b.
x(), a.
y() + b.
y(), a.
z() + b.
z());
238 return RT(a.
x() + b.
x(), a.
y() + b.
y(), a.
z() + b.
z());
245 return RT(a.
x() - b.
x(), a.
y() - b.
y(), a.
z() - b.
z());
252 return RT(a.
x() - b.
x(), a.
y() - b.
y(), a.
z() - b.
z());
265 return v1.
x() * v2.
x() + v1.
y() * v2.
y() + v1.
z() * v2.
z();
271 return v1.
x() * v2.
x() + v1.
y() * v2.
y() + v1.
z() * v2.
z();
288 template <
typename S>
290 return static_cast<long double>(
t) * v;
293 template <
typename S>
295 return static_cast<long double>(
t) * v;
301 template <
typename S>
303 long double t = 1 /
s;
310 #pragma clang diagnostic pop
313 #endif // GeometryVector_Basic3DVectorLD_h
Basic3DVector< typename PreciseFloatType< T, U >::Type > cross(const Basic3DVector< U > &v) const
Basic3DVector & operator*=(T t)
Scaling by a scalar value (multiplication)
tuple ret
prodAgent to be discontinued
T y() const
Cartesian y coordinate.
T x() const
Cartesian x coordinate.
Geom::Phi< T > phi() const
Basic3DVector cross(const Basic3DVector &v) const
Vector product, or "cross" product, with a vector of same type.
MatrixMeschach operator+(const MatrixMeschach &mat1, const MatrixMeschach &mat2)
T perp2() const
Squared magnitude of transverse component.
Geom::Spherical2Cartesian< T > Spherical
Geom::Theta< T > theta() const
MatrixMeschach operator-(const MatrixMeschach &mat1, const MatrixMeschach &mat2)
T x() const
Cartesian x coordinate.
T dot(const Basic3DVector &v) const
Scalar product, or "dot" product, with a vector of same type.
T1 value() const
Explicit access to value in case implicit conversion not OK.
Geom::Phi< T > phi() const
Basic3DVector(const Basic3DVector< U > &p)
Copy constructor and implicit conversion from Basic3DVector of different precision.
Basic3DVector & operator+=(const Basic3DVector< U > &p)
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
Basic2DVector< T > xy() const
Basic3DVector operator-() const
Unary minus, returns a vector with components (-x(),-y(),-z())
bool operator==(const Basic3DVector &rh) const
T z() const
Cartesian z coordinate.
Basic3DVector(const Geom::Theta< U > &theta, const Geom::Phi< U > &phi, const T &r)
float __attribute__((vector_size(8))) cms_float32x2_t
Basic3DVector< T > MathVector
Basic3DVector(const OtherPoint &p)
PreciseFloatType< T, U >::Type dot(const Basic3DVector< U > &v) const
T perp() const
Magnitude of transverse component.
Basic3DVector & operator-=(const Basic3DVector< U > &p)
Basic3DVector< long double > Basic3DVectorLD
T mag2() const
The vector magnitude squared. Equivalent to vec.dot(vec)
T1 operator/(const Phi< T1, Range > &a, const Phi< T1, Range > &b)
Division.
T value() const
Explicit access to value in case implicit conversion not OK.
T perp() const
Magnitude of transverse component.
Basic3DVector(const Basic2DVector< T > &p)
constructor from 2D vector (X and Y from 2D vector, z set to zero)
T perp2() const
Squared magnitude of transverse component.
Basic3DVector & operator/=(T t)
Scaling by a scalar value (division)
Basic3DVector(const T &x, const T &y, const T &z)
construct from cartesian coordinates
T transverse() const
Another name for perp()
T y() const
Cartesian y coordinate.
MatrixMeschach operator*(const MatrixMeschach &mat1, const MatrixMeschach &mat2)
T z() const
Cartesian z coordinate.
Geom::Cylindrical2Cartesian< T > Cylindrical
Basic3DVector unit() const
Basic3DVector(const Basic3DVector &p)
Copy constructor from same type. Should not be needed but for gcc bug 12685.
T mag2() const
The vector magnitude squared. Equivalent to vec.dot(vec)