icemc
Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
Vector Class Reference

This class represents a three-vector. Operators are overloaded to provide for the familiar operations of vector addition, subtraction, scalar multiplication and division, and the dot product. More...

#include <vector.hh>

Inheritance diagram for Vector:
Position

Public Member Functions

double operator[] (int i) const
 
 Vector (double x_inp, double y_inp, double z_inp)
 
 Vector (double *xarray)
 
 Vector (double theta, double phi)
 
 Vector ()
 
Vector RotateX (double angle) const
 
Vector RotateY (double angle) const
 
Vector RotateZ (double angle) const
 
Vector Cross (const Vector &vec) const
 
double Dot (const Vector &vec) const
 
Vector Rotate (double angle, const Vector &axis) const
 
Vector Zero ()
 
double Mag2 () const
 
double Mag () const
 
double Angle (const Vector &vec) const
 
Vector ChangeCoord (const Vector &new_x_axis, const Vector &new_y_axis) const
 
Vector ChangeCoord (const Vector &new_z_axis) const
 
Vector Orthogonal () const
 
Vector Unit () const
 
double GetX () const
 
double GetY () const
 
double GetZ () const
 
double X () const
 
double Y () const
 
double Z () const
 
double Theta () const
 
double Phi () const
 
void Print () const
 
void SetX (double inp)
 
void SetY (double inp)
 
void SetZ (double inp)
 
void SetXYZ (double inpx, double inpy, double inpz)
 
void Reset (double x_inp, double y_inp, double z_inp)
 

Protected Member Functions

void UpdateThetaPhi () const
 

Protected Attributes

double x
 
double y
 
double z
 
double theta
 
double phi
 
bool angles_need_updating
 

Friends

Vector operator+ (const Vector &vector1, const Vector &vector2)
 
void operator+= (Vector &vector1, const Vector &vector2)
 
Vector operator- (const Vector &vector1, const Vector &vector2)
 
void operator-= (Vector &vector1, const Vector &vector2)
 
Vector operator- (const Vector &vec)
 
double operator* (const Vector &vector1, const Vector &vector2)
 
Vector operator/ (const Vector &v, const double &a)
 
Vector operator* (const double &a, const Vector &v)
 
Vector operator* (const Vector &v, const double &a)
 
ostream & operator<< (ostream &outs, const Vector &vec)
 

Detailed Description

This class represents a three-vector. Operators are overloaded to provide for the familiar operations of vector addition, subtraction, scalar multiplication and division, and the dot product.

Constructor & Destructor Documentation

◆ Vector() [1/4]

Vector::Vector ( double  x_inp,
double  y_inp,
double  z_inp 
)

◆ Vector() [2/4]

Vector::Vector ( double *  xarray)

◆ Vector() [3/4]

Vector::Vector ( double  theta,
double  phi 
)

◆ Vector() [4/4]

Vector::Vector ( )

Member Function Documentation

◆ Angle()

double Vector::Angle ( const Vector vec) const

◆ ChangeCoord() [1/2]

Vector Vector::ChangeCoord ( const Vector new_x_axis,
const Vector new_y_axis 
) const

◆ ChangeCoord() [2/2]

Vector Vector::ChangeCoord ( const Vector new_z_axis) const

◆ Cross()

Vector Vector::Cross ( const Vector vec) const

◆ Dot()

double Vector::Dot ( const Vector vec) const

◆ GetX()

double Vector::GetX ( ) const
inline

◆ GetY()

double Vector::GetY ( ) const
inline

◆ GetZ()

double Vector::GetZ ( ) const
inline

◆ Mag()

double Vector::Mag ( ) const

◆ Mag2()

double Vector::Mag2 ( ) const
inline

◆ operator[]()

double Vector::operator[] ( int  i) const
inline

◆ Orthogonal()

Vector Vector::Orthogonal ( ) const

◆ Phi()

double Vector::Phi ( ) const

◆ Print()

void Vector::Print ( ) const

◆ Reset()

void Vector::Reset ( double  x_inp,
double  y_inp,
double  z_inp 
)
inline

◆ Rotate()

Vector Vector::Rotate ( double  angle,
const Vector axis 
) const

◆ RotateX()

Vector Vector::RotateX ( double  angle) const

◆ RotateY()

Vector Vector::RotateY ( double  angle) const

◆ RotateZ()

Vector Vector::RotateZ ( double  angle) const

◆ SetX()

void Vector::SetX ( double  inp)
inline

◆ SetXYZ()

void Vector::SetXYZ ( double  inpx,
double  inpy,
double  inpz 
)
inline

◆ SetY()

void Vector::SetY ( double  inp)
inline

◆ SetZ()

void Vector::SetZ ( double  inp)
inline

◆ Theta()

double Vector::Theta ( ) const

◆ Unit()

Vector Vector::Unit ( ) const

◆ UpdateThetaPhi()

void Vector::UpdateThetaPhi ( ) const
protected

◆ X()

double Vector::X ( ) const
inline

◆ Y()

double Vector::Y ( ) const
inline

◆ Z()

double Vector::Z ( ) const
inline

◆ Zero()

Vector Vector::Zero ( )

Friends And Related Function Documentation

◆ operator* [1/3]

double operator* ( const Vector vector1,
const Vector vector2 
)
friend

◆ operator* [2/3]

Vector operator* ( const double &  a,
const Vector v 
)
friend

◆ operator* [3/3]

Vector operator* ( const Vector v,
const double &  a 
)
friend

◆ operator+

Vector operator+ ( const Vector vector1,
const Vector vector2 
)
friend

◆ operator+=

void operator+= ( Vector vector1,
const Vector vector2 
)
friend

◆ operator- [1/2]

Vector operator- ( const Vector vector1,
const Vector vector2 
)
friend

◆ operator- [2/2]

Vector operator- ( const Vector vec)
friend

◆ operator-=

void operator-= ( Vector vector1,
const Vector vector2 
)
friend

◆ operator/

Vector operator/ ( const Vector v,
const double &  a 
)
friend

◆ operator<<

ostream& operator<< ( ostream &  outs,
const Vector vec 
)
friend

Member Data Documentation

◆ angles_need_updating

bool Vector::angles_need_updating
mutableprotected

◆ phi

double Vector::phi
mutableprotected

◆ theta

double Vector::theta
mutableprotected

◆ x

double Vector::x
protected

◆ y

double Vector::y
protected

◆ z

double Vector::z
protected

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