18 #ifndef ROOT_Math_GenVector_PxPyPzM4D
19 #define ROOT_Math_GenVector_PxPyPzM4D 1
46 template <
class ScalarType =
double>
74 template <
class CoordSystem>
103 template <
class AnyCoordSystem>
116 fX=src[0];
fY=src[1];
fZ=src[2];
fM=src[3];
124 { dest[0] =
fX; dest[1] =
fY; dest[2] =
fZ; dest[3] =
fM; }
189 return e2 > 0 ? e2 : 0;
219 " Pz^2 > E^2 so the transverse mass would be imaginary");
230 return pt2 == 0 ? 0 :
E2() * pt2/( pt2 +
fZ*
fZ );
303 GenVector::Throw (
"PxPyPzM4D::Negate - cannot negate the energy - can negate only the spatial components");
337 #if defined(__MAKECINT__) || defined(G__DICTIONARY)
356 if (
fM >=0 )
return;
358 GenVector::Throw(
"PxPyPzM4D::unphysical value of mass, set to closest physical value");
389 template <
class ScalarType>
395 #if defined(__MAKECINT__) || defined(G__DICTIONARY)
401 template <
class ScalarType>
407 template <
class ScalarType>
408 inline void PxPyPzM4D<ScalarType>::SetEta(ScalarType eta) {
409 GenVector_exception
e(
"PxPyPzM4D::SetEta() is not supposed to be called");
411 PtEtaPhiE4D<ScalarType>
v(*
this);
v.SetEta(eta); *
this = PxPyPzM4D<ScalarType>(
v);
413 template <
class ScalarType>
414 inline void PxPyPzM4D<ScalarType>::SetPhi(ScalarType phi) {
415 GenVector_exception
e(
"PxPyPzM4D::SetPhi() is not supposed to be called");
417 PtEtaPhiE4D<ScalarType>
v(*
this);
v.SetPhi(phi); *
this = PxPyPzM4D<ScalarType>(
v);
419 template <
class ScalarType>
420 inline void PxPyPzM4D<ScalarType>::SetE(ScalarType energy) {
421 GenVector_exception
e(
"PxPyPzM4D::SetE() is not supposed to be called");
423 PxPyPzE4D<ScalarType>
v(*
this);
v.SetE(energy);
424 *
this = PxPyPzM4D<ScalarType>(
v);
428 #endif // endif __MAKE__CINT || G__DICTIONARY
436 #endif // ROOT_Math_GenVector_PxPyPzM4D
Class describing a 4D cylindrical coordinate system using Pt , Phi, Eta and E (or rho...
Scalar Et2() const
transverse energy squared
Scalar Et() const
transverse energy
Scalar P2() const
squared magnitude of spatial components
Scalar Mt2() const
transverse mass squared
void Scale(const Scalar &a)
scale coordinate values by a scalar quantity a
void Negate()
negate the 4-vector - Note that the energy cannot be negate (would need an additional data member) th...
PxPyPzM4D(const CoordSystem &v)
construct from any 4D coordinate system class implementing X(), Y(), X() and M()
void SetPy(Scalar py)
set Y value
Scalar Mt() const
transverse mass
void SetM(Scalar m)
set T value
VecExpr< UnaryOp< Sqrt< T >, VecExpr< A, T, D >, T >, T, D > sqrt(const VecExpr< A, T, D > &rhs)
Class describing a 4D cartesian coordinate system (x, y, z, t coordinates) or momentum-energy vectors...
Class describing a 4D coordinate system or momentum-energy vectors stored as (Px, Py...
ScalarType fX
(contigous) data containing the coordinate values x,y,z,t
Scalar Eta() const
pseudorapidity
PxPyPzM4D()
Default constructor with x=y=z=m=0.
Scalar E2() const
energy squared
Scalar Pt2() const
transverse spatial component squared
PxPyPzM4D(const PxPyPzM4D &v)
copy constructor
void SetCoordinates(const Scalar src[])
Set internal data based on an array of 4 Scalar numbers.
void GetCoordinates(Scalar dest[]) const
get internal data into an array of 4 Scalar numbers
Scalar Phi() const
azimuthal angle
void Throw(const char *)
function throwing exception, by creating internally a GenVector_exception only when needed ...
Scalar M2() const
vector magnitude squared (or mass squared) In case of negative mass (spacelike particles return negat...
Scalar Eta_FromRhoZ(Scalar rho, Scalar z)
Calculate eta given rho and zeta.
bool operator==(const PxPyPzM4D &rhs) const
Exact equality.
void SetPxPyPzE(Scalar px, Scalar py, Scalar pz, Scalar e)
set all values
Scalar Pt() const
Transverse spatial component (P_perp or rho)
double atan2(double, double)
void GetCoordinates(Scalar &px, Scalar &py, Scalar &pz, Scalar &m) const
get internal data into 4 Scalar numbers
you should not use this method at all Int_t Int_t Double_t Double_t Double_t e
void SetCoordinates(Scalar px, Scalar py, Scalar pz, Scalar m)
Set internal data based on 4 Scalar numbers.
PxPyPzM4D & operator=(const PxPyPzM4D &v)
assignment operator
#define dest(otri, vertexptr)
bool operator!=(const PxPyPzM4D &rhs) const
void SetPz(Scalar pz)
set Z value
void SetPx(Scalar px)
set X value
PxPyPzM4D(Scalar px, Scalar py, Scalar pz, Scalar m)
Constructor from x, y , z , m values.
Scalar P() const
magnitude of spatial components (magnitude of 3-momentum)
Rotation3D::Scalar Scalar
Scalar Theta() const
polar angle