18#ifndef ROOT_Math_GenVector_VectorUtil 
   19#define ROOT_Math_GenVector_VectorUtil  1 
   47      namespace VectorUtil {
 
   60         template <
class Vector1, 
class Vector2>
 
   62            typename Vector1::Scalar 
dphi = 
v2.Phi() - 
v1.Phi();
 
 
   81         template <
class Vector1, 
class Vector2>
 
   84            typename Vector1::Scalar 
deta = 
v2.Eta() - 
v1.Eta();
 
 
   96    template <
class Vector1, 
class Vector2>
 
   99       typename Vector1::Scalar 
drap = 
v2.Rapidity() - 
v1.Rapidity();
 
 
  111         template <
class Vector1, 
class Vector2>
 
  125         template <
class Vector1, 
class Vector2>
 
  141         template <
class Vector1, 
class Vector2>
 
  153               if(arg >  1.0) arg =  1.0;
 
  154               if(arg < -1.0) arg = -1.0;
 
 
  168         template <
class Vector1, 
class Vector2>
 
  182         template <
class Vector1, 
class Vector2>
 
  184            double magU2 = 
u.X()*
u.X() + 
u.Y()*
u.Y() + 
u.Z()*
u.Z();
 
 
  198         template <
class Vector1, 
class Vector2>
 
  211         template <
class Vector1, 
class Vector2>
 
  213            double magU2 = 
u.X()*
u.X() + 
u.Y()*
u.Y() + 
u.Z()*
u.Z();
 
 
  227         template <
class Vector1, 
class Vector2>
 
  247         template <
class Vector1, 
class Vector2>
 
  249            typedef typename  Vector1::Scalar 
Scalar;
 
  256            return mm2 < 0.0 ? -
sqrt(-mm2) : 
sqrt(mm2);
 
 
  262         template <
class Vector1, 
class Vector2>
 
  264            typedef typename  Vector1::Scalar 
Scalar;
 
 
  285         template <
class Vector>
 
  288            double sina = sin(alpha);
 
  290            double cosa = cos(alpha);
 
 
  304         template <
class Vector>
 
  307            double sina = sin(alpha);
 
  309            double cosa = cos(alpha);
 
 
  323         template <
class Vector>
 
  326            double sina = sin(alpha);
 
  328            double cosa = cos(alpha);
 
 
  344         template<
class Vector, 
class RotationMatrix>
 
  365         template <
class LVector, 
class BoostVector>
 
  372               GenVector::Throw ( 
"Beta Vector supplied to set Boost represents speed >= c");
 
  376            double gamma = 1.0 / 
sqrt(1.0 - b2);
 
  378            double gamma2 = b2 > 0 ? (gamma - 1.0)/b2 : 0.0;
 
  382            double t2 = gamma*(
v.T() + 
bp);
 
 
  395         template <
class LVector, 
class T>
 
  398               GenVector::Throw (
"Beta Vector supplied to set Boost represents speed >= c");
 
  403            typename LVector::Scalar 
x2 = gamma * 
v.X() + gamma * 
beta * 
v.T();
 
  404            typename LVector::Scalar 
t2 = gamma * 
beta * 
v.X() + gamma * 
v.T();
 
 
  417         template <
class LVector>
 
  420               GenVector::Throw (
"Beta Vector supplied to set Boost represents speed >= c");
 
  425            double y2 = gamma * 
v.Y() + gamma * 
beta * 
v.T();
 
  426            double t2 = gamma * 
beta * 
v.Y() + gamma * 
v.T();
 
 
  438         template <
class LVector>
 
  441               GenVector::Throw ( 
"Beta Vector supplied to set Boost represents speed >= c");
 
  446            double z2 = gamma * 
v.Z() + gamma * 
beta * 
v.T();
 
  447            double t2 = gamma * 
beta * 
v.Z() + gamma * 
v.T();
 
 
  461         template<
class Matrix, 
class CoordSystem, 
class U>
 
  465            vret.SetXYZ( 
m(0,0) * 
v.x() + 
m(0,1) * 
v.y() + 
m(0,2) * 
v.z() ,
 
  466                        m(1,0) * 
v.x() + 
m(1,1) * 
v.y() + 
m(1,2) * 
v.z() ,
 
  467                        m(2,0) * 
v.x() + 
m(2,1) * 
v.y() + 
m(2,2) * 
v.z() );
 
 
  476         template<
class Matrix, 
class CoordSystem, 
class U>
 
  480            pret.SetXYZ( 
m(0,0) * 
p.x() + 
m(0,1) * 
p.y() + 
m(0,2) * 
p.z() ,
 
  481                        m(1,0) * 
p.x() + 
m(1,1) * 
p.y() + 
m(1,2) * 
p.z() ,
 
  482                        m(2,0) * 
p.x() + 
m(2,1) * 
p.y() + 
m(2,2) * 
p.z() );
 
 
  493         template<
class CoordSystem, 
class Matrix>
 
  497            vret.SetXYZT( 
m(0,0)*
v.x() + 
m(0,1)*
v.y() + 
m(0,2)*
v.z() + 
m(0,3)* 
v.t() ,
 
  498                         m(1,0)*
v.x() + 
m(1,1)*
v.y() + 
m(1,2)*
v.z() + 
m(1,3)* 
v.t() ,
 
  499                         m(2,0)*
v.x() + 
m(2,1)*
v.y() + 
m(2,2)*
v.z() + 
m(2,3)* 
v.t() ,
 
  500                         m(3,0)*
v.x() + 
m(3,1)*
v.y() + 
m(3,2)*
v.z() + 
m(3,3)* 
v.t() );
 
 
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
winID h TVirtualViewer3D TVirtualGLPainter p
 
Option_t Option_t TPoint TPoint const char x2
 
Option_t Option_t TPoint TPoint const char y2
 
double beta(double x, double y)
Calculates the beta function.
 
Namespace for new Math classes and functions.
 
void Throw(const char *)
function throwing exception, by creating internally a GenVector_exception only when needed
 
DisplacementVector3D< CoordSystem, U > Mult(const Matrix &m, const DisplacementVector3D< CoordSystem, U > &v)
Multiplications of a generic matrices with a DisplacementVector3D of any coordinate system.
 
Vector1::Scalar DeltaR2(const Vector1 &v1, const Vector2 &v2)
Find square of the difference in pseudorapidity (Eta) and Phi between two generic vectors The only re...
 
double Perp(const Vector1 &v, const Vector2 &u)
Find the magnitude of the vector component of v perpendicular to the given direction of u.
 
LVector boostY(const LVector &v, double beta)
Boost a generic Lorentz Vector class along the Y direction with a factor beta The only requirement on...
 
Vector1::Scalar DeltaRapidityPhi(const Vector1 &v1, const Vector2 &v2)
Find difference in Rapidity (y) and Phi between two generic vectors The only requirements on the Vect...
 
Vector1::Scalar DeltaR(const Vector1 &v1, const Vector2 &v2)
Find difference in pseudorapidity (Eta) and Phi between two generic vectors The only requirements on ...
 
Vector1::Scalar DeltaPhi(const Vector1 &v1, const Vector2 &v2)
Find aximutal Angle difference between two generic vectors ( v2.Phi() - v1.Phi() ) The only requireme...
 
LVector boost(const LVector &v, const BoostVector &b)
Boost a generic Lorentz Vector class using a generic 3D Vector class describing the boost The only re...
 
double Angle(const Vector1 &v1, const Vector2 &v2)
Find Angle between two vectors.
 
Vector RotateZ(const Vector &v, double alpha)
rotation along Z axis for a generic vector by an Angle alpha returning a new vector.
 
Vector1::Scalar DeltaR2RapidityPhi(const Vector1 &v1, const Vector2 &v2)
Find square of the difference in true rapidity (y) and Phi between two generic vectors The only requi...
 
Vector RotateY(const Vector &v, double alpha)
rotation along Y axis for a generic vector by an Angle alpha returning a new vector.
 
Vector RotateX(const Vector &v, double alpha)
rotation along X axis for a generic vector by an Angle alpha returning a new vector.
 
double CosTheta(const Vector1 &v1, const Vector2 &v2)
Find CosTheta Angle between two generic 3D vectors pre-requisite: vectors implement the X(),...
 
Vector1 PerpVector(const Vector1 &v, const Vector2 &u)
Find the vector component of v perpendicular to the given direction of u.
 
double Perp2(const Vector1 &v, const Vector2 &u)
Find the magnitude square of the vector component of v perpendicular to the given direction of u.
 
double Phi_0_2pi(double phi)
Return a phi angle in the interval (0,2*PI].
 
Vector Rotate(const Vector &v, const RotationMatrix &rot)
rotation on a generic vector using a generic rotation class.
 
double Phi_mpi_pi(double phi)
Returns phi angle in the interval (-PI,PI].
 
Vector1::Scalar InvariantMass2(const Vector1 &v1, const Vector2 &v2)
 
Vector1 ProjVector(const Vector1 &v, const Vector2 &u)
Find the projection of v along the given direction u.
 
LVector boostZ(const LVector &v, double beta)
Boost a generic Lorentz Vector class along the Z direction with a factor beta The only requirement on...
 
LVector boostX(const LVector &v, T beta)
Boost a generic Lorentz Vector class along the X direction with a factor beta The only requirement on...
 
Vector1::Scalar InvariantMass(const Vector1 &v1, const Vector2 &v2)
return the invariant mass of two LorentzVector The only requirement on the LorentzVector is that they...
 
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...