1 #ifndef GeometryVector_Basic3DVectorLD_h 2 #define GeometryVector_Basic3DVectorLD_h 5 #pragma clang diagnostic push 6 #pragma clang diagnostic ignored "-Wunused-private-field" 16 typedef long double T;
51 template <
class OtherPo
int>
99 return x()==rh.
x() &&
y()==rh.
y() &&
z()==rh.
z();
144 if (my_mag==0)
return *
this;
192 return x()*v.
x() +
y()*v.
y() +
z()*v.
z();
202 return x()*v.
x() +
y()*v.
y() +
z()*v.
z();
208 z()*v.
x() - v.
z()*
x(),
209 x()*v.
y() - v.
x()*
y());
222 z()*v.
x() - v.
z()*
x(),
223 x()*v.
y() - v.
x()*
y());
242 return RT(a.
x()+b.
x(), a.
y()+b.
y(), a.
z()+b.
z());
247 return RT(a.
x()-b.
x(), a.
y()-b.
y(), a.
z()-b.
z());
256 return RT(a.
x()+b.
x(), a.
y()+b.
y(), a.
z()+b.
z());
263 return RT(a.
x()+b.
x(), a.
y()+b.
y(), a.
z()+b.
z());
271 return RT(a.
x()-b.
x(), a.
y()-b.
y(), a.
z()-b.
z());
278 return RT(a.
x()-b.
x(), a.
y()-b.
y(), a.
z()-b.
z());
291 return v1.
x()*v2.
x() + v1.
y()*v2.
y() + v1.
z()*v2.
z();
297 return v1.
x()*v2.
x() + v1.
y()*v2.
y() + v1.
z()*v2.
z();
315 template <
typename S>
317 return static_cast<long double>(
t)*v;
320 template <
typename S>
322 return static_cast<long double>(
t)*v;
329 template <
typename S>
339 #pragma clang diagnostic pop 342 #endif // GeometryVector_Basic3DVectorLD_h
T y() const
Cartesian y coordinate.
T x() const
Cartesian x coordinate.
long double operator*(const Basic3DVector< long double > &v1, const Basic3DVector< long double > &v2)
scalar product of vectors of same precision
Geom::Phi< T > phi() const
Basic3DVector cross(const Basic3DVector &v) const
Vector product, or "cross" product, with a vector of same type.
T perp2() const
Squared magnitude of transverse component.
Geom::Spherical2Cartesian< T > Spherical
Geom::Theta< T > theta() const
Basic3DVector unit() const
T x() const
Cartesian x coordinate.
T dot(const Basic3DVector &v) const
Scalar product, or "dot" product, with a vector of same type.
Geom::Phi< T > phi() const
Basic3DVector(const Basic3DVector< U > &p)
Copy constructor and implicit conversion from Basic3DVector of different precision.
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
T transverse() const
Another name for perp()
Basic3DVector< long double > operator/(const Basic3DVector< long double > &v, S s)
Basic2DVector< T > xy() const
bool operator==(const Basic3DVector &rh) const
Basic3DVector & operator/=(T t)
Scaling by a scalar value (division)
T z() const
Cartesian z coordinate.
Basic3DVector(const Geom::Theta< U > &theta, const Geom::Phi< U > &phi, const T &r)
Basic3DVector & operator*=(T t)
Scaling by a scalar value (multiplication)
Basic3DVector< T > MathVector
Basic3DVector & operator+=(const Basic3DVector< U > &p)
Basic3DVector< typename PreciseFloatType< T, U >::Type > cross(const Basic3DVector< U > &v) const
class Basic3DVector< long double > __attribute__((aligned(16)))
Basic3DVector(const OtherPoint &p)
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)
T value() const
Explicit access to value in case implicit conversion not OK.
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.
PreciseFloatType< T, U >::Type dot(const Basic3DVector< U > &v) const
Basic3DVector(const T &x, const T &y, const T &z)
construct from cartesian coordinates
Basic3DVector< long double > operator+(const Basic3DVector< long double > &a, const Basic3DVector< long double > &b)
vector sum and subtraction of vectors of possibly different precision
T y() const
Cartesian y coordinate.
T z() const
Cartesian z coordinate.
Geom::Cylindrical2Cartesian< T > Cylindrical
Basic3DVector operator-() const
Unary minus, returns a vector with components (-x(),-y(),-z())
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)