20#ifndef ROOT_Math_GenVector_CylindricalEta3D
21#define ROOT_Math_GenVector_CylindricalEta3D 1
72 template <
class CoordSystem >
77 static Scalar bigEta =
Scalar(-0.3) * log(std::numeric_limits<Scalar>::epsilon());
78 if (std::fabs(
fEta) > bigEta) {
124 T
X()
const {
using std::cos;
return fRho * cos(
fPhi); }
125 T
Y()
const {
using std::sin;
return fRho * sin(
fPhi); }
208 template <
class CoordSystem >
232 T
x()
const {
return X();}
233 T
y()
const {
return Y();}
234 T
z()
const {
return Z(); }
240#if defined(__ROOTCLING__) || defined(G__DICTIONARY)
252 void SetTheta(
Scalar theta);
272#if defined(__ROOTCLING__) || defined(G__DICTIONARY)
286#if defined(__ROOTCLING__) || defined(G__DICTIONARY)
300void CylindricalEta3D<T>::SetY(Scalar yy) {
301 GenVector_exception
e(
"CylindricalEta3D::SetY() is not supposed to be called");
303 Cartesian3D<Scalar>
v(*
this);
v.SetY(yy);
304 *
this = CylindricalEta3D<Scalar>(
v);
307void CylindricalEta3D<T>::SetZ(Scalar zz) {
308 GenVector_exception
e(
"CylindricalEta3D::SetZ() is not supposed to be called");
310 Cartesian3D<Scalar>
v(*
this);
v.SetZ(zz);
311 *
this = CylindricalEta3D<Scalar>(
v);
Class describing a 3D cartesian coordinate system (x, y, z coordinates).
Class describing a cylindrical coordinate system based on eta (pseudorapidity) instead of z.
void SetEta(T eta)
set the eta coordinate value keeping rho and phi constant
void SetXYZ(Scalar x, Scalar y, Scalar z)
set all values using cartesian coordinates
CylindricalEta3D & operator=(const CoordSystem &c)
generic assignment operator from any coordinate system
void SetCoordinates(const Scalar src[])
Set internal data based on an array of 3 Scalar numbers.
void SetCoordinates(Scalar rho, Scalar eta, Scalar phi)
Set internal data based on 3 Scalar numbers.
void GetCoordinates(Scalar dest[]) const
get internal data into an array of 3 Scalar numbers
void Negate()
negate the vector
CylindricalEta3D(const CoordSystem &v)
Construct from any Vector or coordinate system implementing Rho(), Eta() and Phi().
void Scale(T a)
scale by a scalar quantity a – for cylindrical eta coords, as long as a >= 0, only rho changes!
void GetCoordinates(Scalar &rho, Scalar &eta, Scalar &phi) const
get internal data into 3 Scalar numbers
void SetPhi(T phi)
set the phi coordinate value keeping rho and eta constant
constexpr CylindricalEta3D() noexcept=default
Default constructor with rho=eta=phi=0.
void SetRho(T rho)
set the rho coordinate value keeping eta and phi constant
static constexpr unsigned int Dimension
bool operator==(const CylindricalEta3D &rhs) const
Exact component-by-component equality Note: Peculiar representations of the zero vector such as (0,...
bool operator!=(const CylindricalEta3D &rhs) const
Class describing a polar coordinate system based on r, theta and phi Phi is restricted to be in the r...
Namespace for new Math classes and functions.
T etaMax()
Function providing the maximum possible value of pseudorapidity for a non-zero rho,...
Rotation3D::Scalar Scalar