ant
A2 ant: class-based analysis framework
ant::vec3 Struct Reference

#include <vec3.h>

Public Member Functions

constexpr vec3 () noexcept=default
 
constexpr vec3 (const vec3 &) noexcept=default
 
constexpr vec3 (vec3 &&) noexcept=default
 
constexpr vec3 (const double X, const double Y, const double Z) noexcept
 
constexpr vec3 (const vec2 &XY, const double Z) noexcept
 
vec3operator= (const vec3 &) noexcept=default
 
vec3operator= (vec3 &&) noexcept=default
 
 vec3 (const TVector3 &v) noexcept
 
vec3operator= (const TVector3 &v) noexcept
 
 operator TVector3 () const noexcept
 
vec3operator+= (const vec3 &other) noexcept
 
vec3operator-= (const vec3 &other) noexcept
 
vec3 operator+ (const vec3 &other) const noexcept
 
vec3 operator- (const vec3 &other) const noexcept
 
vec3 operator- () const noexcept
 
vec3operator*= (const double s) noexcept
 
vec3operator/= (const double s) noexcept
 
vec3 operator* (const double s) const noexcept
 
vec3 operator/ (const double s) const noexcept
 
double R2 () const noexcept
 Get the length squared. More...
 
double R () const noexcept
 Get the length or radius. More...
 
void SetR (double r) noexcept
 SetR rescales vector, keeping theta/phi constant. More...
 
double Angle (const vec3 &other) const
 Angle to another vec3. More...
 
double Dot (const vec3 &other) const noexcept
 Dot product. More...
 
vec3 Cross (const vec3 &p) const noexcept
 Cross product. More...
 
double Phi () const
 Calculate the phi angle. More...
 
void SetPhi (double phi)
 
double Theta () const
 Calculate the theta angle. More...
 
vec3 Unit () const noexcept
 Get a vector of unit length parallel to this one. More...
 
bool operator== (const vec3 &other) const noexcept
 
bool operator!= (const vec3 &other) const noexcept
 
vec2 XY () const noexcept
 Get X and Y as vec2. More...
 
vec2 YZ () const noexcept
 Get Y and Z as a vec2. More...
 
vec2 XZ () const noexcept
 Get X and Z as a vec2. More...
 
template<class Archive >
void serialize (Archive &archive)
 

Static Public Member Functions

static vec3 RThetaPhi (const double r, const double theta, const double phi) noexcept
 Create a new vec3 from Radius and theta and phi angles. More...
 

Public Attributes

double x = {}
 
double y = {}
 
double z = {}
 

Friends

std::ostream & operator<< (std::ostream &stream, const vec3 &v)
 

Constructor & Destructor Documentation

◆ vec3() [1/6]

constexpr ant::vec3::vec3 ( )
defaultnoexcept

◆ vec3() [2/6]

constexpr ant::vec3::vec3 ( const vec3 )
defaultnoexcept

◆ vec3() [3/6]

constexpr ant::vec3::vec3 ( vec3 &&  )
defaultnoexcept

◆ vec3() [4/6]

constexpr ant::vec3::vec3 ( const double  X,
const double  Y,
const double  Z 
)
inlinenoexcept

◆ vec3() [5/6]

constexpr ant::vec3::vec3 ( const vec2 XY,
const double  Z 
)
inlinenoexcept

◆ vec3() [6/6]

vec3::vec3 ( const TVector3 &  v)
noexcept

Member Function Documentation

◆ Angle()

double ant::vec3::Angle ( const vec3 other) const
inline

Angle to another vec3.

Parameters
other
Returns
(radians)

Taken from ROOT TVector3

◆ Cross()

vec3 ant::vec3::Cross ( const vec3 p) const
inlinenoexcept

Cross product.

Parameters
pother vector
Returns

◆ Dot()

double ant::vec3::Dot ( const vec3 other) const
inlinenoexcept

Dot product.

Parameters
other
Returns

◆ operator TVector3()

vec3::operator TVector3 ( ) const
noexcept

◆ operator!=()

bool ant::vec3::operator!= ( const vec3 other) const
inlinenoexcept

◆ operator*()

vec3 ant::vec3::operator* ( const double  s) const
inlinenoexcept

◆ operator*=()

vec3& ant::vec3::operator*= ( const double  s)
inlinenoexcept

◆ operator+()

vec3 ant::vec3::operator+ ( const vec3 other) const
inlinenoexcept

◆ operator+=()

vec3& ant::vec3::operator+= ( const vec3 other)
inlinenoexcept

◆ operator-() [1/2]

vec3 ant::vec3::operator- ( const vec3 other) const
inlinenoexcept

◆ operator-() [2/2]

vec3 ant::vec3::operator- ( ) const
inlinenoexcept

◆ operator-=()

vec3& ant::vec3::operator-= ( const vec3 other)
inlinenoexcept

◆ operator/()

vec3 ant::vec3::operator/ ( const double  s) const
inlinenoexcept

◆ operator/=()

vec3& ant::vec3::operator/= ( const double  s)
inlinenoexcept

◆ operator=() [1/3]

vec3& ant::vec3::operator= ( const vec3 )
defaultnoexcept

◆ operator=() [2/3]

vec3& ant::vec3::operator= ( vec3 &&  )
defaultnoexcept

◆ operator=() [3/3]

vec3 & vec3::operator= ( const TVector3 &  v)
noexcept

◆ operator==()

bool ant::vec3::operator== ( const vec3 other) const
inlinenoexcept

◆ Phi()

double ant::vec3::Phi ( ) const
inline

Calculate the phi angle.

Returns
(radians)

◆ R()

double ant::vec3::R ( ) const
inlinenoexcept

Get the length or radius.

Returns
See also
R2()

◆ R2()

double ant::vec3::R2 ( ) const
inlinenoexcept

Get the length squared.

Returns
See also
R()

◆ RThetaPhi()

static vec3 ant::vec3::RThetaPhi ( const double  r,
const double  theta,
const double  phi 
)
inlinestaticnoexcept

Create a new vec3 from Radius and theta and phi angles.

Parameters
rRadius/Length of vector
theta(radians) Angle to the z-axis
phi(radians)
Returns

◆ serialize()

template<class Archive >
void ant::vec3::serialize ( Archive &  archive)
inline

◆ SetPhi()

void ant::vec3::SetPhi ( double  phi)
inline

◆ SetR()

void ant::vec3::SetR ( double  r)
inlinenoexcept

SetR rescales vector, keeping theta/phi constant.

◆ Theta()

double ant::vec3::Theta ( ) const
inline

Calculate the theta angle.

Returns
(radians) Taken from TVector3

◆ Unit()

vec3 ant::vec3::Unit ( ) const
inlinenoexcept

Get a vector of unit length parallel to this one.

Returns

◆ XY()

vec2 ant::vec3::XY ( ) const
inlinenoexcept

Get X and Y as vec2.

Returns
(X,Y)

◆ XZ()

vec2 ant::vec3::XZ ( ) const
inlinenoexcept

Get X and Z as a vec2.

Returns
(X,Z)

◆ YZ()

vec2 ant::vec3::YZ ( ) const
inlinenoexcept

Get Y and Z as a vec2.

Returns
(Y,Z)

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  stream,
const vec3 v 
)
friend

Member Data Documentation

◆ x

double ant::vec3::x = {}

◆ y

double ant::vec3::y = {}

◆ z

double ant::vec3::z = {}

The documentation for this struct was generated from the following files: