Global Helper functions for generic Vector classes. More...
Functions | |
template<class Vector1 , class Vector2 > | |
double | Angle (const Vector1 &v1, const Vector2 &v2) |
Find Angle between two vectors. More... | |
template<class LVector , class BoostVector > | |
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 requirement on the vector is that implements the X(), Y(), Z(), T() and SetXYZT methods. More... | |
template<class LVector , class T > | |
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 the vector is that implements the X(), Y(), Z(), T() and SetXYZT methods. More... | |
template<class LVector > | |
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 the vector is that implements the X(), Y(), Z(), T() methods and be constructed from x,y,z,t values The beta of the boost must be <= 1 or a nul Lorentz Vector will be returned. More... | |
template<class LVector > | |
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 the vector is that implements the X(), Y(), Z(), T() methods and be constructed from x,y,z,t values The beta of the boost must be <= 1 or a nul Lorentz Vector will be returned. More... | |
template<class Vector1 , class Vector2 > | |
double | CosTheta (const Vector1 &v1, const Vector2 &v2) |
Find CosTheta Angle between two generic 3D vectors pre-requisite: vectors implement the X(), Y() and Z() More... | |
template<class Vector1 , class Vector2 > | |
Vector1::Scalar | DeltaPhi (const Vector1 &v1, const Vector2 &v2) |
Find aximutal Angle difference between two generic vectors ( v2.Phi() - v1.Phi() ) The only requirements on the Vector classes is that they implement the Phi() method. More... | |
template<class Vector1 , class Vector2 > | |
Vector1::Scalar | DeltaR (const Vector1 &v1, const Vector2 &v2) |
Find difference in pseudorapidity (Eta) and Phi betwen two generic vectors The only requirements on the Vector classes is that they implement the Phi() and Eta() method. More... | |
template<class Vector1 , class Vector2 > | |
Vector1::Scalar | DeltaR2 (const Vector1 &v1, const Vector2 &v2) |
Find square of the difference in pseudorapidity (Eta) and Phi betwen two generic vectors The only requirements on the Vector classes is that they implement the Phi() and Eta() method. More... | |
template<class Vector1 , class Vector2 > | |
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 need to implement the X() , Y(), Z() and E() methods. More... | |
template<class Vector1 , class Vector2 > | |
Vector1::Scalar | InvariantMass2 (const Vector1 &v1, const Vector2 &v2) |
template<class Matrix , class CoordSystem , class U > | |
DisplacementVector3D< CoordSystem, U > | Mult (const Matrix &m, const DisplacementVector3D< CoordSystem, U > &v) |
Multiplications of a generic matrices with a DisplacementVector3D of any coordinate system. More... | |
template<class CoordSystem , class Matrix > | |
LorentzVector< CoordSystem > | Mult (const Matrix &m, const LorentzVector< CoordSystem > &v) |
Multiplications of a generic matrices with a LorentzVector described in any coordinate system. More... | |
template<class Matrix , class CoordSystem , class U > | |
PositionVector3D< CoordSystem, U > | Mult (const Matrix &m, const PositionVector3D< CoordSystem, U > &p) |
Multiplications of a generic matrices with a generic PositionVector Assume that the matrix implements the operator( i,j) and that it has at least 3 columns and 3 rows. More... | |
template<class Vector1 , class Vector2 > | |
double | Perp (const Vector1 &v, const Vector2 &u) |
Find the magnitude of the vector component of v perpendicular to the given direction of u. More... | |
template<class Vector1 , class Vector2 > | |
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. More... | |
template<class Vector1 , class Vector2 > | |
Vector1 | PerpVector (const Vector1 &v, const Vector2 &u) |
Find the vector component of v perpendicular to the given direction of u. More... | |
double | Phi_0_2pi (double phi) |
Return a phi angle in the interval (0,2*PI]. More... | |
double | Phi_mpi_pi (double phi) |
Returns phi angle in the interval (-PI,PI]. More... | |
template<class Vector1 , class Vector2 > | |
Vector1 | ProjVector (const Vector1 &v, const Vector2 &u) |
Find the projection of v along the given direction u. More... | |
template<class Vector , class RotationMatrix > | |
Vector | Rotate (const Vector &v, const RotationMatrix &rot) |
rotation on a generic vector using a generic rotation class. More... | |
template<class Vector > | |
Vector | RotateX (const Vector &v, double alpha) |
rotation along X axis for a generic vector by an Angle alpha returning a new vector. More... | |
template<class Vector > | |
Vector | RotateY (const Vector &v, double alpha) |
rotation along Y axis for a generic vector by an Angle alpha returning a new vector. More... | |
template<class Vector > | |
Vector | RotateZ (const Vector &v, double alpha) |
rotation along Z axis for a generic vector by an Angle alpha returning a new vector. More... | |
Global Helper functions for generic Vector classes.
Any Vector classes implementing some defined member functions, like Phi() or Eta() or mag() can use these functions. The functions returning a scalar value, returns always double precision number even if the vector are based on another precision type
|
inline |
Find Angle between two vectors.
Use the CosTheta() function
v1 | Vector v1 |
v2 | Vector v2 |
\[ \theta = \cos ^{-1} \frac { \vec{v1} \cdot \vec{v2} }{ | \vec{v1} | | \vec{v2} | } \]
Definition at line 138 of file VectorUtil.h.
LVector ROOT::Math::VectorUtil::boost | ( | const LVector & | v, |
const BoostVector & | b | ||
) |
Boost a generic Lorentz Vector class using a generic 3D Vector class describing the boost The only requirement on the vector is that implements the X(), Y(), Z(), T() and SetXYZT methods.
The requirement on the boost vector is that needs to implement the X(), Y() , Z() retorning the vector elements describing the boost The beta of the boost must be <= 1 or a nul Lorentz Vector will be returned
Definition at line 327 of file VectorUtil.h.
LVector ROOT::Math::VectorUtil::boostX | ( | const LVector & | v, |
T | beta | ||
) |
Boost a generic Lorentz Vector class along the X direction with a factor beta The only requirement on the vector is that implements the X(), Y(), Z(), T() and SetXYZT methods.
The beta of the boost must be <= 1 or a nul Lorentz Vector will be returned
Definition at line 356 of file VectorUtil.h.
LVector ROOT::Math::VectorUtil::boostY | ( | const LVector & | v, |
double | beta | ||
) |
Boost a generic Lorentz Vector class along the Y direction with a factor beta The only requirement on the vector is that implements the X(), Y(), Z(), T() methods and be constructed from x,y,z,t values The beta of the boost must be <= 1 or a nul Lorentz Vector will be returned.
Definition at line 377 of file VectorUtil.h.
LVector ROOT::Math::VectorUtil::boostZ | ( | const LVector & | v, |
double | beta | ||
) |
Boost a generic Lorentz Vector class along the Z direction with a factor beta The only requirement on the vector is that implements the X(), Y(), Z(), T() methods and be constructed from x,y,z,t values The beta of the boost must be <= 1 or a nul Lorentz Vector will be returned.
Definition at line 397 of file VectorUtil.h.
double ROOT::Math::VectorUtil::CosTheta | ( | const Vector1 & | v1, |
const Vector2 & | v2 | ||
) |
Find CosTheta Angle between two generic 3D vectors pre-requisite: vectors implement the X(), Y() and Z()
v1 | Vector v1 |
v2 | Vector v2 |
\[ \cos \theta = \frac { \vec{v1} \cdot \vec{v2} }{ | \vec{v1} | | \vec{v2} | } \]
Definition at line 112 of file VectorUtil.h.
|
inline |
Find aximutal Angle difference between two generic vectors ( v2.Phi() - v1.Phi() ) The only requirements on the Vector classes is that they implement the Phi() method.
v1 | Vector of any type implementing the Phi() operator |
v2 | Vector of any type implementing the Phi() operator |
\[ \Delta \phi = \phi_2 - \phi_1 \]
Definition at line 59 of file VectorUtil.h.
|
inline |
Find difference in pseudorapidity (Eta) and Phi betwen two generic vectors The only requirements on the Vector classes is that they implement the Phi() and Eta() method.
v1 | Vector 1 |
v2 | Vector 2 |
\[ \Delta R = \sqrt{ ( \Delta \phi )^2 + ( \Delta \eta )^2 } \]
Definition at line 95 of file VectorUtil.h.
|
inline |
Find square of the difference in pseudorapidity (Eta) and Phi betwen two generic vectors The only requirements on the Vector classes is that they implement the Phi() and Eta() method.
v1 | Vector 1 |
v2 | Vector 2 |
\[ \Delta R2 = ( \Delta \phi )^2 + ( \Delta \eta )^2 \]
Definition at line 80 of file VectorUtil.h.
|
inline |
return the invariant mass of two LorentzVector The only requirement on the LorentzVector is that they need to implement the X() , Y(), Z() and E() methods.
v1 | LorenzVector 1 |
v2 | LorenzVector 2 |
\[ M_{12} = \sqrt{ (\vec{v1} + \vec{v2} ) \cdot (\vec{v1} + \vec{v2} ) } \]
Definition at line 215 of file VectorUtil.h.
|
inline |
Definition at line 229 of file VectorUtil.h.
|
inline |
Multiplications of a generic matrices with a DisplacementVector3D of any coordinate system.
Assume that the matrix implements the operator( i,j) and that it has at least 3 columns and 3 rows. There is no check on the matrix size !!
Definition at line 425 of file VectorUtil.h.
|
inline |
Multiplications of a generic matrices with a LorentzVector described in any coordinate system.
Assume that the matrix implements the operator( i,j) and that it has at least 4 columns and 4 rows. There is no check on the matrix size !!
Definition at line 457 of file VectorUtil.h.
|
inline |
Multiplications of a generic matrices with a generic PositionVector Assume that the matrix implements the operator( i,j) and that it has at least 3 columns and 3 rows.
There is no check on the matrix size !!
Definition at line 440 of file VectorUtil.h.
|
inline |
Find the magnitude of the vector component of v perpendicular to the given direction of u.
v | Vector v for which the perpendicular component is to be found |
u | Vector specifying the direction |
\[ perp = | \vec{v} - \frac{ \vec{v} \cdot \vec{u} }{|\vec{u}|}\vec{u} | \]
Precondition is that Vector1 implements Dot function and Vector2 implements X(),Y() and Z()Definition at line 196 of file VectorUtil.h.
|
inline |
Find the magnitude square of the vector component of v perpendicular to the given direction of u.
v | Vector v for which the perpendicular component is to be found |
u | Vector specifying the direction |
\[ perp = | \vec{v} - \frac{ \vec{v} \cdot \vec{u} }{|\vec{u}|}\vec{u} |^2 \]
Precondition is that Vector1 implements Dot function and Vector2 implements X(),Y() and Z()Definition at line 180 of file VectorUtil.h.
|
inline |
Find the vector component of v perpendicular to the given direction of u.
v | Vector v for which the perpendicular component is to be found |
u | Vector specifying the direction |
\[ \vec{perp} = \vec{v} - \frac{ \vec{v} \cdot \vec{u} }{|\vec{u}|}\vec{u} \]
Precondition is that Vector1 implements Dot function and Vector2 implements X(),Y() and Z()Definition at line 167 of file VectorUtil.h.
double ROOT::Math::VectorUtil::Phi_0_2pi | ( | double | phi | ) |
Return a phi angle in the interval (0,2*PI].
Definition at line 22 of file VectorUtil.cxx.
double ROOT::Math::VectorUtil::Phi_mpi_pi | ( | double | phi | ) |
Returns phi angle in the interval (-PI,PI].
Definition at line 36 of file VectorUtil.cxx.
Vector1 ROOT::Math::VectorUtil::ProjVector | ( | const Vector1 & | v, |
const Vector2 & | u | ||
) |
Find the projection of v along the given direction u.
v | Vector v for which the propjection is to be found |
u | Vector specifying the direction |
\[ \vec{proj} = \frac{ \vec{v} \cdot \vec{u} }{|\vec{u}|}\vec{u} \]
Precondition is that Vector1 implements Dot function and Vector2 implements X(),Y() and Z()Definition at line 151 of file VectorUtil.h.
Vector ROOT::Math::VectorUtil::Rotate | ( | const Vector & | v, |
const RotationMatrix & | rot | ||
) |
rotation on a generic vector using a generic rotation class.
The only requirement on the vector is that implements the X(), Y(), Z() and SetXYZ methods. The requirement on the rotation matrix is that need to implement the (i,j) operator returning the matrix element with R(0,0) = xx element
Definition at line 306 of file VectorUtil.h.
Vector ROOT::Math::VectorUtil::RotateX | ( | const Vector & | v, |
double | alpha | ||
) |
rotation along X axis for a generic vector by an Angle alpha returning a new vector.
The only pre requisite on the Vector is that it has to implement the X() , Y() and Z() and SetXYZ methods.
Definition at line 253 of file VectorUtil.h.
Vector ROOT::Math::VectorUtil::RotateY | ( | const Vector & | v, |
double | alpha | ||
) |
rotation along Y axis for a generic vector by an Angle alpha returning a new vector.
The only pre requisite on the Vector is that it has to implement the X() , Y() and Z() and SetXYZ methods.
Definition at line 270 of file VectorUtil.h.
Vector ROOT::Math::VectorUtil::RotateZ | ( | const Vector & | v, |
double | alpha | ||
) |
rotation along Z axis for a generic vector by an Angle alpha returning a new vector.
The only pre requisite on the Vector is that it has to implement the X() , Y() and Z() and SetXYZ methods.
Definition at line 287 of file VectorUtil.h.