18#ifndef ROOT_Math_GenVector_PxPyPzE4D
19#define ROOT_Math_GenVector_PxPyPzE4D 1
43template <
class ScalarType =
double>
70 template <
class CoordSystem>
161 " P^2 > E^2 so the mass would be imaginary");
196 " Pz^2 > E^2 so the transverse mass would be imaginary");
208 return pt2 == 0 ? 0 :
fT*
fT * pt2/( pt2 +
fZ*
fZ );
298 template <
class AnyCoordSystem>
327#if defined(__MAKECINT__) || defined(G__DICTIONARY)
359#if defined(__MAKECINT__) || defined(G__DICTIONARY)
373template <
class ScalarType>
374void PxPyPzE4D<ScalarType>::SetPt(
Scalar pt) {
375 GenVector_exception
e(
"PxPyPzE4D::SetPt() is not supposed to be called");
377 PtEtaPhiE4D<Scalar>
v(*
this);
v.SetPt(
pt); *
this = PxPyPzE4D<Scalar>(
v);
379template <
class ScalarType>
380void PxPyPzE4D<ScalarType>::SetEta(
Scalar eta) {
381 GenVector_exception
e(
"PxPyPzE4D::SetEta() is not supposed to be called");
383 PtEtaPhiE4D<Scalar>
v(*
this);
v.SetEta(eta); *
this = PxPyPzE4D<Scalar>(
v);
385template <
class ScalarType>
386void PxPyPzE4D<ScalarType>::SetPhi(
Scalar phi) {
387 GenVector_exception
e(
"PxPyPzE4D::SetPhi() is not supposed to be called");
389 PtEtaPhiE4D<Scalar>
v(*
this);
v.SetPhi(phi); *
this = PxPyPzE4D<Scalar>(
v);
392template <
class ScalarType>
393void PxPyPzE4D<ScalarType>::SetM(
Scalar m) {
394 GenVector_exception
e(
"PxPyPzE4D::SetM() is not supposed to be called");
396 PtEtaPhiM4D<Scalar>
v(*
this);
v.SetM(
m);
397 *
this = PxPyPzE4D<Scalar>(
v);
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t dest
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t src
Class describing a 4D cartesian coordinate system (x, y, z, t coordinates) or momentum-energy vectors...
void GetCoordinates(Scalar dest[]) const
get internal data into an array of 4 Scalar numbers
constexpr PxPyPzE4D(const CoordSystem &v)
construct from any vector or coordinate system class implementing x(), y() and z() and t()
void GetCoordinates(Scalar &px, Scalar &py, Scalar &pz, Scalar &e) const
get internal data into 4 Scalar numbers
ScalarType fX
(contiguous) data containing the coordinate values x,y,z,t
PxPyPzE4D & operator=(const PxPyPzE4D &v)
assignment operator
void SetCoordinates(Scalar px, Scalar py, Scalar pz, Scalar e)
Set internal data based on 4 Scalar numbers.
bool operator==(const PxPyPzE4D &rhs) const
Exact equality.
Scalar Mt() const
transverse mass
Scalar Pt() const
Transverse spatial component (P_perp or rho)
PxPyPzE4D()
Default constructor with x=y=z=t=0.
void SetPz(Scalar pz)
set Z value
bool operator!=(const PxPyPzE4D &rhs) const
void SetCoordinates(const Scalar src[])
Set internal data based on an array of 4 Scalar numbers.
void Scale(const Scalar &a)
scale coordinate values by a scalar quantity a
void SetPxPyPzE(Scalar px, Scalar py, Scalar pz, Scalar e)
set all values using cartesian coordinates
void SetPx(Scalar px)
set X value
Scalar Eta() const
pseudorapidity
void Negate()
negate the 4-vector
Scalar Mt2() const
transverse mass squared
Scalar P2() const
squared magnitude of spatial components
PxPyPzE4D(const PxPyPzE4D &v)
copy constructor
Scalar M() const
invariant mass
Scalar Et() const
transverse energy
Scalar Et2() const
transverse energy squared
Scalar Pt2() const
transverse spatial component squared
Scalar Phi() const
azimuthal angle
Scalar Theta() const
polar angle
Scalar P() const
magnitude of spatial components (magnitude of 3-momentum)
static constexpr unsigned int Dimension
void SetE(Scalar e)
set T value
PxPyPzE4D(Scalar px, Scalar py, Scalar pz, Scalar e)
Constructor from x, y , z , t values.
void SetPy(Scalar py)
set Y value
Scalar M2() const
vector magnitude squared (or mass squared)
Namespace for new Math classes and functions.
void Throw(const char *)
function throwing exception, by creating internally a GenVector_exception only when needed
Scalar Eta_FromRhoZ(Scalar rho, Scalar z)
Calculate eta given rho and zeta.
VecExpr< UnaryOp< Sqrt< T >, VecExpr< A, T, D >, T >, T, D > sqrt(const VecExpr< A, T, D > &rhs)
Rotation3D::Scalar Scalar
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...