Geant4  10.04.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
BasicVector3D< T > Class Template Reference
Inheritance diagram for BasicVector3D< T >:
Normal3D< T > Point3D< T > Vector3D< T >

Public Types

enum  {
  X = 0, Y = 1, Z = 2, NUM_COORDINATES = 3,
  SIZE = NUM_COORDINATES
}
 

Public Member Functions

 BasicVector3D (T x1, T y1, T z1)
 
 BasicVector3D (const BasicVector3D< float > &v)
 
virtual ~BasicVector3D ()
 
 operator T * ()
 
 operator const T * () const
 
 operator CLHEP::Hep3Vector () const
 
BasicVector3D< T > & operator= (const BasicVector3D< T > &v)
 
BasicVector3D< T > & operator+= (const BasicVector3D< T > &v)
 
BasicVector3D< T > & operator-= (const BasicVector3D< T > &v)
 
BasicVector3D< T > & operator*= (double a)
 
BasicVector3D< T > & operator/= (double a)
 
operator() (int i) const
 
operator[] (int i) const
 
T & operator() (int i)
 
T & operator[] (int i)
 
x () const
 
y () const
 
z () const
 
void setX (T a)
 
void setY (T a)
 
void setZ (T a)
 
void set (T x1, T y1, T z1)
 
perp2 () const
 
perp () const
 
rho () const
 
void setPerp (T rh)
 
mag2 () const
 
mag () const
 
r () const
 
phi () const
 
theta () const
 
cosTheta () const
 
getR () const
 
getPhi () const
 
getTheta () const
 
void setMag (T ma)
 
void setR (T ma)
 
void setPhi (T ph)
 
void setTheta (T th)
 
pseudoRapidity () const
 
eta () const
 
getEta () const
 
void setEta (T a)
 
dot (const BasicVector3D< T > &v) const
 
BasicVector3D< T > cross (const BasicVector3D< T > &v) const
 
perp2 (const BasicVector3D< T > &v) const
 
perp (const BasicVector3D< T > &v) const
 
angle (const BasicVector3D< T > &v) const
 
BasicVector3D< T > unit () const
 
BasicVector3D< T > orthogonal () const
 
BasicVector3D< T > & rotateX (T a)
 
BasicVector3D< T > & rotateY (T a)
 
BasicVector3D< T > & rotateZ (T a)
 
BasicVector3D< T > & rotate (T a, const BasicVector3D< T > &v)
 

Protected Member Functions

 BasicVector3D ()
 

Protected Attributes

v_ [3]
 

Related Functions

(Note that these are not member functions.)

std::ostream & operator<< (std::ostream &, const BasicVector3D< float > &)
 
std::istream & operator>> (std::istream &, BasicVector3D< float > &)
 
BasicVector3D< float > operator+ (const BasicVector3D< float > &v)
 
BasicVector3D< float > operator+ (const BasicVector3D< float > &a, const BasicVector3D< float > &b)
 
BasicVector3D< float > operator- (const BasicVector3D< float > &v)
 
BasicVector3D< float > operator- (const BasicVector3D< float > &a, const BasicVector3D< float > &b)
 
BasicVector3D< float > operator* (const BasicVector3D< float > &v, double a)
 
float operator* (const BasicVector3D< float > &a, const BasicVector3D< float > &b)
 
BasicVector3D< float > operator* (double a, const BasicVector3D< float > &v)
 
BasicVector3D< float > operator/ (const BasicVector3D< float > &v, double a)
 
bool operator== (const BasicVector3D< float > &a, const BasicVector3D< float > &b)
 
bool operator!= (const BasicVector3D< float > &a, const BasicVector3D< float > &b)
 
std::ostream & operator<< (std::ostream &, const BasicVector3D< double > &)
 
std::istream & operator>> (std::istream &, BasicVector3D< double > &)
 
BasicVector3D< double > operator+ (const BasicVector3D< double > &v)
 
BasicVector3D< double > operator+ (const BasicVector3D< double > &a, const BasicVector3D< double > &b)
 
BasicVector3D< double > operator- (const BasicVector3D< double > &v)
 
BasicVector3D< double > operator- (const BasicVector3D< double > &a, const BasicVector3D< double > &b)
 
BasicVector3D< double > operator* (const BasicVector3D< double > &v, double a)
 
double operator* (const BasicVector3D< double > &a, const BasicVector3D< double > &b)
 
BasicVector3D< double > operator* (double a, const BasicVector3D< double > &v)
 
BasicVector3D< double > operator/ (const BasicVector3D< double > &v, double a)
 
bool operator== (const BasicVector3D< double > &a, const BasicVector3D< double > &b)
 
bool operator!= (const BasicVector3D< double > &a, const BasicVector3D< double > &b)
 

Detailed Description

template<class T>
class HepGeom::BasicVector3D< T >

Base class for Point3D<T>, Vector3D<T> and Normal3D<T>. It defines only common functionality for those classes and should not be used as separate class.

Author
Evgeni Chernyaev Evgue.nosp@m.ni.T.nosp@m.chern.nosp@m.iaev.nosp@m.@cern.nosp@m..ch

Member Enumeration Documentation

anonymous enum

Safe indexing of the coordinates when using with matrices, arrays, etc.

Enumerator

index for x-component

index for y-component

index for z-component

NUM_COORDINATES 

number of components

SIZE 

number of components

Constructor & Destructor Documentation

BasicVector3D ( )
protected

Default constructor. It is protected - this class should not be instantiated directly.

BasicVector3D ( x1,
y1,
z1 
)

Constructor from three numbers.

BasicVector3D ( const BasicVector3D< float > &  v)

Copy constructor. Note: BasicVector3D<double> has constructors from BasicVector3D<double> (provided by compiler) and from BasicVector3D<float> (defined in this file); BasicVector3D<float> has only the last one.

virtual ~BasicVector3D ( )
virtual

Destructor.

Member Function Documentation

operator T * ( )

Conversion (cast) to ordinary array.

References BasicVector3D< T >::v_.

operator const T * ( ) const

Conversion (cast) to ordinary const array.

References BasicVector3D< T >::v_.

operator CLHEP::Hep3Vector ( ) const

Conversion (cast) to CLHEP::Hep3Vector. This operator is needed only for backward compatibility and in principle should not exit.

BasicVector3D<T>& operator= ( const BasicVector3D< T > &  v)

Assignment.

BasicVector3D<T>& operator+= ( const BasicVector3D< T > &  v)

Addition.

BasicVector3D<T>& operator-= ( const BasicVector3D< T > &  v)

Subtraction.

BasicVector3D<T>& operator*= ( double  a)

Multiplication by scalar.

BasicVector3D<T>& operator/= ( double  a)

Division by scalar.

T operator() ( int  i) const

Gets components by index.

T operator[] ( int  i) const

Gets components by index.

T& operator() ( int  i)

Sets components by index.

T& operator[] ( int  i)

Sets components by index.

void setX ( a)

Sets x-component in cartesian coordinate system.

Referenced by BasicVector3D< G4double >::setPhi().

void setY ( a)

Sets y-component in cartesian coordinate system.

Referenced by BasicVector3D< G4double >::setPhi().

void setZ ( a)

Sets z-component in cartesian coordinate system.

T perp2 ( ) const

Gets transverse component squared.

Referenced by BasicVector3D< G4double >::perp().

T rho ( ) const

Gets rho-component in cylindrical coordinate system

void setPerp ( rh)

Sets transverse component keeping phi and z constant.

T r ( ) const

Gets r-component in spherical coordinate system

Referenced by BasicVector3D< G4double >::getR().

T phi ( ) const
T theta ( ) const

Gets polar angle.

Referenced by BasicVector3D< G4double >::getTheta().

T cosTheta ( ) const

Gets cosine of polar angle.

T getR ( ) const

Gets r-component in spherical coordinate system

T getPhi ( ) const

Gets phi-component in spherical coordinate system

T getTheta ( ) const

Gets theta-component in spherical coordinate system

void setMag ( ma)

Sets magnitude.

Referenced by BasicVector3D< G4double >::setR().

void setR ( ma)

Sets r-component in spherical coordinate system.

void setPhi ( ph)

Sets phi-component in spherical coordinate system.

void setTheta ( th)

Sets theta-component in spherical coordinate system.

T pseudoRapidity ( ) const

Gets pseudo-rapidity: -ln(tan(theta/2))

Referenced by BasicVector3D< G4double >::eta(), and BasicVector3D< G4double >::getEta().

T eta ( ) const

Gets pseudo-rapidity.

T getEta ( ) const

Gets pseudo-rapidity.

void setEta ( a)

Sets pseudo-rapidity, keeping magnitude and phi fixed.

T dot ( const BasicVector3D< T > &  v) const
BasicVector3D<T> cross ( const BasicVector3D< T > &  v) const

Vector product.

Referenced by G4ErrorSurfaceTrajParam::GetPlaneNormal().

T perp2 ( const BasicVector3D< T > &  v) const

Returns transverse component w.r.t. given axis squared.

T perp ( const BasicVector3D< T > &  v) const

Returns transverse component w.r.t. given axis.

T angle ( const BasicVector3D< T > &  v) const

Returns angle w.r.t. another vector.

BasicVector3D<T> unit ( ) const

Returns unit vector parallel to this.

BasicVector3D<T> orthogonal ( ) const

Returns orthogonal vector.

BasicVector3D<T>& rotateX ( a)

Rotates around x-axis.

BasicVector3D<T>& rotateY ( a)

Rotates around y-axis.

BasicVector3D<T>& rotateZ ( a)

Rotates around z-axis.

BasicVector3D<T>& rotate ( a,
const BasicVector3D< T > &  v 
)

Rotates around the axis specified by another vector.

Friends And Related Function Documentation

std::ostream & operator<< ( std::ostream &  ,
const BasicVector3D< float > &   
)
related

Output to stream.

std::istream & operator>> ( std::istream &  ,
BasicVector3D< float > &   
)
related

Input from stream.

BasicVector3D< float > operator+ ( const BasicVector3D< float > &  v)
related

Unary plus.

BasicVector3D< float > operator+ ( const BasicVector3D< float > &  a,
const BasicVector3D< float > &  b 
)
related

Addition of two vectors.

References BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().

BasicVector3D< float > operator- ( const BasicVector3D< float > &  v)
related
BasicVector3D< float > operator- ( const BasicVector3D< float > &  a,
const BasicVector3D< float > &  b 
)
related

Subtraction of two vectors.

References BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().

BasicVector3D< float > operator* ( const BasicVector3D< float > &  v,
double  a 
)
related

Multiplication vector by scalar.

References BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().

float operator* ( const BasicVector3D< float > &  a,
const BasicVector3D< float > &  b 
)
related

Scalar product of two vectors.

References BasicVector3D< T >::dot().

BasicVector3D< float > operator* ( double  a,
const BasicVector3D< float > &  v 
)
related

Multiplication scalar by vector.

References BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().

BasicVector3D< float > operator/ ( const BasicVector3D< float > &  v,
double  a 
)
related

Division vector by scalar.

References BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().

bool operator== ( const BasicVector3D< float > &  a,
const BasicVector3D< float > &  b 
)
related

Comparison of two vectors for equality.

References BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().

bool operator!= ( const BasicVector3D< float > &  a,
const BasicVector3D< float > &  b 
)
related

Comparison of two vectors for inequality.

References BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().

std::ostream & operator<< ( std::ostream &  ,
const BasicVector3D< double > &   
)
related

Output to stream.

std::istream & operator>> ( std::istream &  ,
BasicVector3D< double > &   
)
related

Input from stream.

BasicVector3D< double > operator+ ( const BasicVector3D< double > &  v)
related

Unary plus.

BasicVector3D< double > operator+ ( const BasicVector3D< double > &  a,
const BasicVector3D< double > &  b 
)
related

Addition of two vectors.

References BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().

BasicVector3D< double > operator- ( const BasicVector3D< double > &  v)
related
BasicVector3D< double > operator- ( const BasicVector3D< double > &  a,
const BasicVector3D< double > &  b 
)
related

Subtraction of two vectors.

References BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().

BasicVector3D< double > operator* ( const BasicVector3D< double > &  v,
double  a 
)
related

Multiplication vector by scalar.

References BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().

double operator* ( const BasicVector3D< double > &  a,
const BasicVector3D< double > &  b 
)
related

Scalar product of two vectors.

References BasicVector3D< T >::dot().

BasicVector3D< double > operator* ( double  a,
const BasicVector3D< double > &  v 
)
related

Multiplication scalar by vector.

References BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().

BasicVector3D< double > operator/ ( const BasicVector3D< double > &  v,
double  a 
)
related

Division vector by scalar.

References BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().

bool operator== ( const BasicVector3D< double > &  a,
const BasicVector3D< double > &  b 
)
related

Comparison of two vectors for equality.

References BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().

bool operator!= ( const BasicVector3D< double > &  a,
const BasicVector3D< double > &  b 
)
related

Comparison of two vectors for inequality.

References BasicVector3D< T >::x(), BasicVector3D< T >::y(), and BasicVector3D< T >::z().

Member Data Documentation