16 #ifndef ROOT_Math_GenVector_Translation3D
17 #define ROOT_Math_GenVector_Translation3D 1
29 #include <type_traits>
50 template <
typename T =
double>
81 template<
class CoordSystem,
class Tag>
94 template <
class CoordSystem,
class Tag>
158 template<
class CoordSystem,
class Tag >
165 template <
class CoordSystem,
class Tag>
175 template<
class CoordSystem,
class Tag >
182 template <
class CoordSystem,
class Tag>
191 template<
class CoordSystem,
class Tag1,
class Tag2 >
201 template <
class CoordSystem,
class Tag1,
class Tag2>
212 template <
class CoordSystem>
220 template <
class CoordSystem>
237 return PLANE(
operator()(n),
operator()(p));
292 std::ostream &operator<<(std::ostream &os, const Translation3D<T> &t)
298 t.GetComponents(m, m + 3);
299 return os <<
"\n" << m[0] <<
" " << m[1] <<
" " << m[2] <<
"\n";
PositionVector3D< CoordSystem, Tag > operator()(const PositionVector3D< CoordSystem, Tag > &p) const
Transformation operation for Position Vector in any coordinate system and default tag...
Class describing a generic LorentzVector in the 4D space-time, using the specified coordinate system ...
DisplacementVector3D< Cartesian3D< T >, DefaultCoordinateSystemTag > Vector
void GetComponents(IT begin) const
Get the 3 matrix components into data specified by an iterator begin.
DisplacementVector3D< CoordSystem, Tag > & SetCoordinates(const Scalar src[])
Set internal data based on a C-style array of 3 Scalar numbers.
const Vector & Vect() const
return a const reference to the underline vector representing the translation
Translation3D(T dx, T dy, T dz)
Construct from x,y,z values representing the translation.
void GetComponents(IT begin, IT end) const
Get the 3 components into data specified by an iterator begin and another to the end of the desired d...
DisplacementVector3D< CoordSystem, Tag > & SetXYZ(Scalar a, Scalar b, Scalar c)
set the values of the vector from the cartesian components (x,y,z) (if the vector is held in polar or...
void Invert()
Invert the transformation in place.
Translation3D(const PositionVector3D< CoordSystem, Tag > &p1, const PositionVector3D< CoordSystem, Tag > &p2)
Construct transformation from one coordinate system defined one point (the origin) to a new coordinat...
LorentzVector< CoordSystem > operator*(const LorentzVector< CoordSystem > &q) const
Transformation operation.
void GetComponents(T &dx, T &dy, T &dz) const
Get the components into 3 scalars.
Scalar Y() const
Cartesian Y, converting if necessary from internal coordinate system.
Class describing a generic position vector (point) in 3 dimensions.
void GetCoordinates(Scalar &a, Scalar &b, Scalar &c) const
get internal data into 3 Scalar numbers
Translation3D(IT begin, IT end)
Construct given a pair of pointers or iterators defining the beginning and end of an array of 3 Scala...
Translation3D< T > Inverse() const
Return the inverse of the transformation.
Scalar Z() const
Cartesian Z, converting if necessary from internal coordinate system.
Vector Normal() const
Return normal vector to the plane as Cartesian DisplacementVector.
Scalar Y() const
Cartesian Y, converting if necessary from internal coordinate system.
Translation3D(const DisplacementVector3D< CoordSystem, Tag > &v)
Construct from any Displacement vector in ant tag and coordinate system.
Scalar X() const
Cartesian X, converting if necessary from internal coordinate system.
static double p2(double t, double a, double b, double c)
Class describing a 3 dimensional translation.
Translation3D()
Default constructor ( zero translation )
LorentzVector< CoordSystem > operator()(const LorentzVector< CoordSystem > &q) const
Transformation operation for a Lorentz Vector in any coordinate system A LorentzVector contains a dis...
Class describing a generic displacement vector in 3 dimensions.
void SetXYZ(T dx, T dy, T dz)
Set the XYZ vector components from 3 scalars.
void SetComponents(IT begin, IT end)
Set the 3 components given an iterator to the start of the desired data, and another to the end (3 pa...
Plane3D< T > operator()(const Plane3D< T > &plane) const
Transformation on a 3D plane.
void Transform(const PositionVector3D< CoordSystem, Tag1 > &p1, PositionVector3D< CoordSystem, Tag2 > &p2) const
Transformation operation for points between different coordinate system tags.
static double p1(double t, double a, double b)
Translation3D< T > & operator*=(const Translation3D< T > &t)
multiply (combine) with another transformation in place
Scalar Z() const
Cartesian Z, converting if necessary from internal coordinate system.
bool operator==(const Translation3D< T > &rhs) const
Equality/inequality operators.
bool operator!=(const Translation3D< T > &rhs) const
PositionVector3D< CoordSystem, Tag > & SetXYZ(Scalar a, Scalar b, Scalar c)
set the values of the vector from the cartesian components (x,y,z) (if the vector is held in polar or...
DisplacementVector3D< CoordSystem, Tag > operator*(const DisplacementVector3D< CoordSystem, Tag > &v) const
Transformation operation.
Scalar X() const
Cartesian X, converting if necessary from internal coordinate system.
Impl::Translation3D< float > Translation3DF
Class describing a geometrical plane in 3 dimensions.
DefaultCoordinateSystemTag Default tag for identifying any coordinate system.
Impl::Translation3D< double > Translation3D
Scalar HesseDistance() const
Return the Hesse Distance (distance from the origin) of the plane or the d coefficient expressed in n...
void SetComponents(T dx, T dy, T dz)
Set the components from 3 scalars.
void Transform(const DisplacementVector3D< CoordSystem, Tag1 > &v1, DisplacementVector3D< CoordSystem, Tag2 > &v2) const
Transformation operation for Displacement Vector of different coordinate systems. ...
Translation3D< T > operator*(const Translation3D< T > &t) const
multiply (combine) two transformations
PositionVector3D< CoordSystem, Tag > operator*(const PositionVector3D< CoordSystem, Tag > &v) const
Transformation operation.