17#ifndef ROOT_Math_GenVector_DisplacementVector2D
18#define ROOT_Math_GenVector_DisplacementVector2D 1
55 template <
class CoordSystem,
class Tag = DefaultCoordinateSystemTag >
60 typedef typename CoordSystem::Scalar
Scalar;
84 template <
class OtherCoords>
93 template <
class OtherCoords>
102 template <
class ForeignVector>
115 template <
class OtherCoords>
126 template <
class OtherCoords>
129 SetXY(rhs.x(), rhs.y() );
138 template <
class ForeignVector>
281 template<
class OtherCoords >
283 return X()*
v.X() +
Y()*
v.Y();
290 template<
class OtherVector >
292 return X()*
v.x() +
Y()*
v.y();
300 template <
class OtherCoords>
310 template <
class OtherCoords>
393 template <
class OtherCoords,
class OtherTag>
396 template <
class OtherCoords,
class OtherTag>
399 template <
class OtherCoords,
class OtherTag>
403 template <
class OtherCoords,
class OtherTag>
406 template <
class OtherCoords,
class OtherTag>
409 template <
class OtherCoords,
class OtherTag>
412 template<
class OtherCoords,
class OtherTag >
415 template<
class OtherCoords,
class OtherTag >
430 template <
class CoordSystem1,
class CoordSystem2,
class U>
443 template <
class CoordSystem1,
class CoordSystem2,
class U>
445 DisplacementVector2D<CoordSystem1,U>
458 template <
class CoordSystem,
class U>
460 DisplacementVector2D<CoordSystem,U>
476 template<
class char_t,
class traits_t,
class T,
class U >
478 std::basic_ostream<char_t,traits_t> &
479 operator << ( std::basic_ostream<char_t,traits_t> & os
480 , DisplacementVector2D<T,U>
const &
v
485 typename T::Scalar
a,
b;
486 v.GetCoordinates(
a,
b);
490 typedef GenVector_detail::BitReproducible BR;
505 template<
class char_t,
class traits_t,
class T,
class U >
507 std::basic_istream<char_t,traits_t> &
514 typename T::Scalar
a,
b;
529 v.SetCoordinates(
a,
b);
Class describing a 2D cartesian coordinate system (x, y coordinates)
Class describing a generic displacement vector in 2 dimensions.
DisplacementVector2D()
Default constructor.
Scalar Mag2() const
Magnitute squared ( r^2 in spherical coordinate)
DisplacementVector2D(Scalar a, Scalar b)
Construct from three values of type Scalar.
DisplacementVector2D(const ForeignVector &v)
Construct from a foreign 2D vector type, for example, Hep2Vector Precondition: v must implement metho...
Scalar X() const
Cartesian X, converting if necessary from internal coordinate system.
DisplacementVector2D Cross(const DisplacementVector2D< OtherCoords, OtherTag > &) const
Scalar R() const
Polar R, converting if necessary from internal coordinate system.
DisplacementVector2D & operator=(const DisplacementVector2D< OtherCoords, OtherTag > &)
DisplacementVector2D< CoordSystem, Tag > & SetY(Scalar a)
Change Y - Cartesian2D coordinates only.
DisplacementVector2D & operator=(const DisplacementVector2D< OtherCoords, Tag > &v)
Assignment operator from a displacement vector of arbitrary type.
DisplacementVector2D operator+() const
Positive of the vector, return itself.
DisplacementVector2D operator-() const
Negative of the vector.
Scalar Dot(const OtherVector &v) const
Return the scalar (dot) product of two vectors.
CoordSystem Coordinates() const
Retrieve a copy of the coordinates object.
bool operator==(const DisplacementVector2D &rhs) const
Exact equality.
DisplacementVector2D< CoordSystem, Tag > & SetCoordinates(Scalar a, Scalar b)
Set internal data based on 2 Scalar numbers.
Scalar Phi() const
Polar phi, converting if necessary from internal coordinate system.
DisplacementVector2D(const DisplacementVector2D< OtherCoords, OtherTag > &)
Scalar Y() const
Cartesian Y, converting if necessary from internal coordinate system.
Scalar Dot(const DisplacementVector2D< OtherCoords, OtherTag > &) const
DisplacementVector2D & operator*=(Scalar a)
multiply this vector by a scalar quantity
DisplacementVector2D & operator-=(const DisplacementVector2D< OtherCoords, OtherTag > &)
DisplacementVector2D< CoordSystem, Tag > & SetPhi(Scalar ang)
Change Phi - Polar2D coordinates.
DisplacementVector2D & operator+=(const DisplacementVector2D< OtherCoords, OtherTag > &)
DisplacementVector2D & operator=(const PositionVector2D< OtherCoords, OtherTag > &)
DisplacementVector2D & operator/=(Scalar a)
divide this vector by a scalar quantity
CoordSystem CoordinateType
bool operator!=(const DisplacementVector2D &rhs) const
DisplacementVector2D unit() const
void Rotate(Scalar angle)
Rotate by an angle.
DisplacementVector2D< CoordSystem, Tag > & SetX(Scalar a)
Change X - Cartesian2D coordinates only.
CoordSystem::Scalar Scalar
DisplacementVector2D< CoordSystem, Tag > & SetR(Scalar a)
Change R - Polar2D coordinates only.
DisplacementVector2D(const DisplacementVector2D< OtherCoords, Tag > &v)
Construct from a displacement vector expressed in different coordinates, or using a different Scalar ...
DisplacementVector2D(const PositionVector2D< OtherCoords, OtherTag > &)
Scalar Dot(const DisplacementVector2D< OtherCoords, Tag > &v) const
Return the scalar (dot) product of two displacement vectors.
void GetCoordinates(Scalar &a, Scalar &b) const
get internal data into 2 Scalar numbers.
DisplacementVector2D operator*(Scalar a) const
Multiply a vector by a real number.
DisplacementVector2D(const PositionVector2D< OtherCoords, Tag > &p)
Construct from a position vector expressed in different coordinates but with the same coordinate syst...
DisplacementVector2D operator/(Scalar a) const
Division of a vector with a real number.
DisplacementVector2D< CoordSystem, Tag > & SetXY(Scalar a, Scalar b)
set the values of the vector from the cartesian components (x,y) (if the vector is held in polar coor...
DisplacementVector2D Unit() const
return unit vector parallel to this
Class describing a generic position vector (point) in 2 dimensions.
Namespace for new Math classes and functions.
char_t get_manip(std::basic_ios< char_t, traits_t > &ios, manip_t m)
std::basic_istream< char_t, traits_t > & require_delim(std::basic_istream< char_t, traits_t > &is, manip_t m)
void set_manip(std::basic_ios< char_t, traits_t > &ios, manip_t m, char_t ch)
std::basic_istream< char_t, traits_t > & operator>>(std::basic_istream< char_t, traits_t > &is, DisplacementVector2D< T, U > &v)
DisplacementVector2D< CoordSystem1, U > operator+(DisplacementVector2D< CoordSystem1, U > v1, const DisplacementVector2D< CoordSystem2, U > &v2)
Addition of DisplacementVector2D vectors.
DisplacementVector2D< CoordSystem1, U > operator-(DisplacementVector2D< CoordSystem1, U > v1, DisplacementVector2D< CoordSystem2, U > const &v2)
Difference between two DisplacementVector2D vectors.
AxisAngle operator*(RotationX const &r1, AxisAngle const &r2)
Multiplication of an axial rotation by an AxisAngle.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...