rivet is hosted by Hepforge, IPPP Durham
Rivet 4.0.2

Three-dimensional specialisation of Vector. More...

#include <Vector3.hh>

Inheritance diagram for Rivet::Vector3:
Rivet::Vector< 3 > Rivet::ThreeMomentum

Public Types

using EVector = RivetEigen::Matrix< double, N, 1 >
 Vector.
 

Public Member Functions

template<typename V3TYPE >
 Vector3 (const V3TYPE &other)
 
 Vector3 (const Vector< 3 > &other)
 
 Vector3 (double x, double y, double z)
 
double x () const
 
double x2 () const
 
Vector3setX (double x)
 
double y () const
 
double y2 () const
 
Vector3setY (double y)
 
double z () const
 
double z2 () const
 
Vector3setZ (double z)
 
double dot (const Vector3 &v) const
 Dot-product with another vector.
 
Vector3 cross (const Vector3 &v) const
 Cross-product with another vector.
 
double angle (const Vector3 &v) const
 Angle in radians to another vector.
 
Vector3 unitVec () const
 Unit-normalized version of this vector.
 
Vector3 unit () const
 Synonym for unitVec.
 
Vector3 polarVec () const
 Polar projection of this vector into the x-y plane.
 
Vector3 perpVec () const
 Synonym for polarVec.
 
Vector3 rhoVec () const
 Synonym for polarVec.
 
double polarRadius2 () const
 Square of the polar radius (.
 
double perp2 () const
 Synonym for polarRadius2.
 
double rho2 () const
 Synonym for polarRadius2.
 
double polarRadius () const
 Polar radius.
 
double perp () const
 Synonym for polarRadius.
 
double rho () const
 Synonym for polarRadius.
 
double azimuthalAngle (const PhiMapping mapping=ZERO_2PI) const
 Angle subtended by the vector's projection in x-y and the x-axis.
 
double phi (const PhiMapping mapping=ZERO_2PI) const
 Synonym for azimuthalAngle.
 
double tanTheta () const
 Tangent of the polar angle.
 
double polarAngle () const
 Angle subtended by the vector and the z-axis.
 
double theta () const
 Synonym for polarAngle.
 
double pseudorapidity () const
 Purely geometric approximation to rapidity.
 
double eta () const
 Synonym for pseudorapidity.
 
double abseta () const
 Convenience shortcut for fabs(eta())
 
Vector3operator*= (const double a)
 In-place scalar multiplication operator.
 
Vector3operator/= (const double a)
 In-place scalar division operator.
 
Vector3operator+= (const Vector3 &v)
 In-place addition operator.
 
Vector3operator-= (const Vector3 &v)
 In-place subtraction operator.
 
Vector3 operator- () const
 In-place negation operator.
 
const doubleget (const size_t index) const
 
doubleget (const size_t index)
 
const doubleoperator[] (const size_t index) const
 Direct access to vector elements by index.
 
doubleoperator[] (const size_t index)
 Direct access to vector elements by index.
 
Vector< N > & set (const size_t index, const double value)
 Set indexed value.
 
constexpr size_t size () const
 Vector dimensionality.
 
bool isZero (double tolerance=1E-5) const
 Check for nullness, allowing for numerical precision.
 
double mod2 () const
 Calculate the modulus-squared of a vector. \( \sum_{i=1}^N x_i^2 \).
 
double mod () const
 Calculate the modulus of a vector. \( \sqrt{\sum_{i=1}^N x_i^2} \).
 
bool operator== (const Vector< N > &a) const
 
bool operator!= (const Vector< N > &a) const
 

Static Public Member Functions

static Vector3 mkX ()
 
static Vector3 mkY ()
 
static Vector3 mkZ ()
 

Friends

class Matrix3
 
Vector3 multiply (const double, const Vector3 &)
 Unbound scalar-product function.
 
Vector3 multiply (const Vector3 &, const double)
 Unbound scalar-product function.
 
Vector3 add (const Vector3 &, const Vector3 &)
 Unbound vector addition function.
 
Vector3 subtract (const Vector3 &, const Vector3 &)
 Unbound vector subtraction function.
 

Detailed Description

Three-dimensional specialisation of Vector.

Member Function Documentation

◆ azimuthalAngle()

double Rivet::Vector3::azimuthalAngle ( const PhiMapping  mapping = ZERO_2PI) const
inline

Angle subtended by the vector's projection in x-y and the x-axis.

Note
Returns zero in the case of a vector with null x and y components.
Todo:
Would it be better to return NaN in the null-perp case? Or throw?!

References eta(), and Rivet::mapAngle().

Referenced by Rivet::FourVector::azimuthalAngle(), Rivet::deltaPhi(), Rivet::deltaPhi(), Rivet::deltaPhi(), Rivet::deltaR2(), Rivet::deltaR2(), Rivet::deltaR2(), and phi().

◆ pseudorapidity()

double Rivet::Vector3::pseudorapidity ( ) const
inline

Purely geometric approximation to rapidity.

eta = -ln[ tan(theta/2) ]

Also invariant under z-boosts, equal to y for massless particles.

Implemented using the tan half-angle formula tan(theta/2) = sin(theta) / [1 + cos(theta)] = pT / (p + pz)

<

Todo:
Add [[ unlikely ]] with C++20

<

Todo:
Add [[ unlikely ]] with C++20

References eta(), Rivet::Vector< 3 >::mod(), and perp().

Referenced by Rivet::deltaEta(), Rivet::deltaEta(), Rivet::deltaEta(), Rivet::deltaR2(), Rivet::deltaR2(), Rivet::deltaR2(), eta(), and Rivet::FourVector::pseudorapidity().


The documentation for this class was generated from the following file:
  • /Users/chrisg/software/rivet/include/Rivet/Math/Vector3.hh