20#ifndef ROOT_Math_GenVector_CylindricalEta3D
21#define ROOT_Math_GenVector_CylindricalEta3D 1
67 template <
class CoordSystem >
72 static Scalar bigEta =
Scalar(-0.3) *
log(std::numeric_limits<Scalar>::epsilon());
73 if (std::fabs(
fEta) > bigEta) {
149 :
fEta > etaMax<T>() ?
fEta - etaMax<T>() :
fEta < -etaMax<T>() ? -
fEta - etaMax<T>() : 0;
202 }
else if (
fEta > etaMax<T>() ) {
203 fEta = (
fEta-etaMax<T>())*
a + etaMax<T>();
204 }
else if (
fEta < -etaMax<T>() ) {
205 fEta = (
fEta+etaMax<T>())*
a - etaMax<T>();
222 template <
class CoordSystem >
246 T
x()
const {
return X();}
247 T
y()
const {
return Y();}
248 T
z()
const {
return Z(); }
254#if defined(__MAKECINT__) || defined(G__DICTIONARY)
266 void SetTheta(
Scalar theta);
288#if defined(__MAKECINT__) || defined(G__DICTIONARY)
302#if defined(__MAKECINT__) || defined(G__DICTIONARY)
316void CylindricalEta3D<T>::SetY(
Scalar yy) {
317 GenVector_exception
e(
"CylindricalEta3D::SetY() is not supposed to be called");
319 Cartesian3D<Scalar>
v(*
this);
v.SetY(yy);
320 *
this = CylindricalEta3D<Scalar>(
v);
323void CylindricalEta3D<T>::SetZ(
Scalar zz) {
324 GenVector_exception
e(
"CylindricalEta3D::SetZ() is not supposed to be called");
326 Cartesian3D<Scalar>
v(*
this);
v.SetZ(zz);
327 *
this = CylindricalEta3D<Scalar>(
v);
330void CylindricalEta3D<T>::SetR(
Scalar r) {
331 GenVector_exception
e(
"CylindricalEta3D::SetR() is not supposed to be called");
333 Polar3D<Scalar>
v(*
this);
v.SetR(
r);
334 *
this = CylindricalEta3D<Scalar>(
v);
337void CylindricalEta3D<T>::SetTheta(
Scalar theta) {
338 GenVector_exception
e(
"CylindricalEta3D::SetTheta() is not supposed to be called");
340 Polar3D<Scalar>
v(*
this);
v.SetTheta(theta);
341 *
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
CylindricalEta3D()
Default constructor with rho=eta=phi=0.
void SetXYZ(Scalar x, Scalar y, Scalar z)
set all values using cartesian coordinates
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
CylindricalEta3D & operator=(const CylindricalEta3D &v)
assignment operator
CylindricalEta3D(const CylindricalEta3D &v)
copy constructor
void SetRho(T rho)
set the rho coordinate value keeping eta and phi constant
CylindricalEta3D(Scalar rho, Scalar eta, Scalar phi)
Construct from rho eta and phi values.
bool operator==(const CylindricalEta3D &rhs) const
Exact component-by-component equality Note: Peculiar representaions of the zero vector such as (0,...
bool operator!=(const CylindricalEta3D &rhs) const
Namespace for new Math classes and functions.
Rotation3D::Scalar Scalar
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
#define dest(otri, vertexptr)