20#ifndef ROOT_Math_GenVector_CylindricalEta3D
21#define ROOT_Math_GenVector_CylindricalEta3D 1
69 template <
class CoordSystem >
147 :
fEta > etaMax<T>() ?
fEta - etaMax<T>() :
fEta < -etaMax<T>() ? -
fEta - etaMax<T>() : 0;
200 }
else if (
fEta > etaMax<T>() ) {
201 fEta = (
fEta-etaMax<T>())*
a + etaMax<T>();
202 }
else if (
fEta < -etaMax<T>() ) {
203 fEta = (
fEta+etaMax<T>())*
a - etaMax<T>();
220 template <
class CoordSystem >
244 T x()
const {
return X();}
245 T y()
const {
return Y();}
246 T z()
const {
return Z(); }
252#if defined(__MAKECINT__) || defined(G__DICTIONARY)
264 void SetTheta(
Scalar theta);
286#if defined(__MAKECINT__) || defined(G__DICTIONARY)
300#if defined(__MAKECINT__) || defined(G__DICTIONARY)
314void CylindricalEta3D<T>::SetY(
Scalar yy) {
315 GenVector_exception
e(
"CylindricalEta3D::SetY() is not supposed to be called");
317 Cartesian3D<Scalar>
v(*
this);
v.SetY(yy);
318 *
this = CylindricalEta3D<Scalar>(
v);
321void CylindricalEta3D<T>::SetZ(
Scalar zz) {
322 GenVector_exception
e(
"CylindricalEta3D::SetZ() is not supposed to be called");
324 Cartesian3D<Scalar>
v(*
this);
v.SetZ(zz);
325 *
this = CylindricalEta3D<Scalar>(
v);
328void CylindricalEta3D<T>::SetR(
Scalar r) {
329 GenVector_exception
e(
"CylindricalEta3D::SetR() is not supposed to be called");
331 Polar3D<Scalar>
v(*
this);
v.SetR(
r);
332 *
this = CylindricalEta3D<Scalar>(
v);
335void CylindricalEta3D<T>::SetTheta(
Scalar theta) {
336 GenVector_exception
e(
"CylindricalEta3D::SetTheta() is not supposed to be called");
338 Polar3D<Scalar>
v(*
this);
v.SetTheta(theta);
339 *
this = CylindricalEta3D<Scalar>(
v);
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.
VecExpr< UnaryOp< Fabs< T >, VecExpr< A, T, D >, T >, T, D > fabs(const VecExpr< A, T, D > &rhs)
Rotation3D::Scalar Scalar
#define dest(otri, vertexptr)