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;
49 template <
class OtherPo
int>
137 return ret *= my_mag;
190 return x() *
v.x() +
y() *
v.y() +
z() *
v.z();
206 y() *
v.z() -
v.y() *
z(),
z() *
v.x() -
v.z() *
x(),
x() *
v.y() -
v.x() *
y());
223 return RT(
a.x() +
b.x(),
a.y() +
b.y(),
a.z() +
b.z());
227 return RT(
a.x() -
b.x(),
a.y() -
b.y(),
a.z() -
b.z());
234 return RT(
a.x() +
b.x(),
a.y() +
b.y(),
a.z() +
b.z());
241 return RT(
a.x() +
b.x(),
a.y() +
b.y(),
a.z() +
b.z());
248 return RT(
a.x() -
b.x(),
a.y() -
b.y(),
a.z() -
b.z());
255 return RT(
a.x() -
b.x(),
a.y() -
b.y(),
a.z() -
b.z());
268 return v1.x() * v2.
x() + v1.y() * v2.
y() + v1.z() * v2.
z();
274 return v1.x() * v2.
x() + v1.y() * v2.
y() + v1.z() * v2.
z();
291 template <
typename S>
293 return static_cast<long double>(
t) *
v;
296 template <
typename S>
298 return static_cast<long double>(
t) *
v;
304 template <
typename S>
306 long double t = 1 /
s;
313 #pragma clang diagnostic pop 316 #endif // GeometryVector_Basic3DVectorLD_h PreciseFloatType< T, U >::Type dot(const Basic3DVector< U > &v) const
bool operator==(const Basic3DVector &rh) const
Basic3DVector & operator*=(T t)
Scaling by a scalar value (multiplication)
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
T perp2() const
Squared magnitude of transverse component.
T perp2() const
Squared magnitude of transverse component.
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
ret
prodAgent to be discontinued
Geom::Spherical2Cartesian< T > Spherical
Basic3DVector cross(const Basic3DVector &v) const
Vector product, or "cross" product, with a vector of same type.
Basic3DVector(const Basic3DVector< U > &p)
Copy constructor and implicit conversion from Basic3DVector of different precision.
Basic3DVector & operator+=(const Basic3DVector< U > &p)
T y() const
Cartesian y coordinate.
Basic3DVector< long double > operator/(const Basic3DVector< long double > &v, S s)
Geom::Theta< T > theta() const
Basic3DVector operator-() const
Unary minus, returns a vector with components (-x(),-y(),-z())
Basic3DVector operator-() const
Unary minus, returns a vector with components (-x(),-y(),-z())
Geom::Phi< T > phi() const
Basic3DVector(const Geom::Theta< U > &theta, const Geom::Phi< U > &phi, const T &r)
T perp() const
Magnitude of transverse component.
Basic3DVector< T > MathVector
T z() const
Cartesian z coordinate.
class Basic3DVector< long double > __attribute__((aligned(16)))
T transverse() const
Another name for perp()
Basic3DVector & operator-=(const Basic3DVector< U > &p)
Basic3DVector< long double > Basic3DVectorLD
T perp() const
Magnitude of transverse component.
Basic3DVector unit() const
T z() const
Cartesian z coordinate.
Basic3DVector(const Basic2DVector< T > &p)
constructor from 2D vector (X and Y from 2D vector, z set to zero)
Basic2DVector< T > xy() const
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 mag2() const
The vector magnitude squared. Equivalent to vec.dot(vec)
T mag2() const
The vector magnitude squared. Equivalent to vec.dot(vec)
T dot(const Basic3DVector &v) const
Scalar product, or "dot" product, with a vector of same type.
Basic3DVector< long double > operator+(const Basic3DVector< long double > &a, const Basic3DVector< long double > &b)
vector sum and subtraction of vectors of possibly different precision
Geom::Phi< T > phi() const
Geom::Cylindrical2Cartesian< T > Cylindrical
Basic3DVector(const Basic3DVector &p)
Copy constructor from same type. Should not be needed but for gcc bug 12685.
T x() const
Cartesian x coordinate.
Basic3DVector & operator=(const Basic3DVector &)=default
Assignment operator.
Basic3DVector< typename PreciseFloatType< T, U >::Type > cross(const Basic3DVector< U > &v) const