Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Static Protected Attributes | Friends
CLHEP::HepAxisAngle Class Reference

#include <AxisAngle.h>

Public Types

typedef double Scalar
 

Public Member Functions

 HepAxisAngle ()
 
 HepAxisAngle (const Hep3Vector axis, Scalar delta)
 
Hep3Vector getAxis () const
 
Hep3Vector axis () const
 
AA & setAxis (const Hep3Vector axis)
 
double getDelta () const
 
double delta () const
 
AA & setDelta (Scalar delta)
 
AA & set (const Hep3Vector axis, Scalar delta)
 
int compare (const AA &aa) const
 
bool operator== (const AA &aa) const
 
bool operator!= (const AA &aa) const
 
bool operator< (const AA &aa) const
 
bool operator<= (const AA &aa) const
 
bool operator> (const AA &aa) const
 
bool operator>= (const AA &aa) const
 
bool isNear (const AA &aa, Scalar epsilon=tolerance) const
 
double howNear (const AA &aa) const
 

Static Public Member Functions

static double getTolerance ()
 
static double setTolerance (Scalar tol)
 

Protected Types

typedef HepAxisAngle AA
 

Protected Member Functions

double distance (const HepAxisAngle &aa) const
 

Static Protected Attributes

static Scalar tolerance = Hep3Vector::ToleranceTicks * 1.0e-08
 

Friends

std::ostream & operator<< (std::ostream &os, const AA &aa)
 
std::istream & operator>> (std::istream &is, AA &aa)
 

Detailed Description

Author

Definition at line 36 of file AxisAngle.h.

Member Typedef Documentation

Definition at line 42 of file AxisAngle.h.

Definition at line 39 of file AxisAngle.h.

Constructor & Destructor Documentation

CLHEP::HepAxisAngle::HepAxisAngle ( )
inline
CLHEP::HepAxisAngle::HepAxisAngle ( const Hep3Vector  axis,
Scalar  delta 
)
inline

Member Function Documentation

Hep3Vector CLHEP::HepAxisAngle::axis ( ) const
inline
int CLHEP::HepAxisAngle::compare ( const AA &  aa) const
inline
double CLHEP::HepAxisAngle::delta ( ) const
inline
double CLHEP::HepAxisAngle::distance ( const HepAxisAngle &  aa) const
protected

Definition at line 45 of file AxisAngle.cc.

Referenced by howNear(), and isNear().

45  {
46 
47  double thisRep[9];
48  double aaRep[9];
49 
50  ZMpvAxisAngleRep( *this, thisRep );
51  ZMpvAxisAngleRep( aa, aaRep );
52 
53  double sum = 0.0;
54  for ( int i = 0; i < 9; i++ ) {
55  sum += thisRep[i] * aaRep[i];
56  }
57 
58  double d = 3.0 - sum; // NaN-proofing:
59  return (d >= 0) ? d : 0; // std::sqrt(distance) is used in howNear()
60 
61 } // HepAxisAngle::distance()
Hep3Vector CLHEP::HepAxisAngle::getAxis ( ) const
inline
double CLHEP::HepAxisAngle::getDelta ( ) const
inline
static double CLHEP::HepAxisAngle::getTolerance ( )
inlinestatic
double CLHEP::HepAxisAngle::howNear ( const AA &  aa) const

Definition at line 71 of file AxisAngle.cc.

References distance().

71  {
72 
73  return std::sqrt( distance( aa ) );
74 
75 } // HepAxisAngle::howNear()
double distance(const HepAxisAngle &aa) const
Definition: AxisAngle.cc:45
bool CLHEP::HepAxisAngle::isNear ( const AA &  aa,
Scalar  epsilon = tolerance 
) const

Definition at line 64 of file AxisAngle.cc.

References distance().

64  {
65 
66  return distance( aa ) <= epsilon * epsilon;
67 
68 } // HepAxisAngle::isNear()
double distance(const HepAxisAngle &aa) const
Definition: AxisAngle.cc:45
bool CLHEP::HepAxisAngle::operator!= ( const AA &  aa) const
inline
bool CLHEP::HepAxisAngle::operator< ( const AA &  aa) const
inline
bool CLHEP::HepAxisAngle::operator<= ( const AA &  aa) const
inline
bool CLHEP::HepAxisAngle::operator== ( const AA &  aa) const
inline
bool CLHEP::HepAxisAngle::operator> ( const AA &  aa) const
inline
bool CLHEP::HepAxisAngle::operator>= ( const AA &  aa) const
inline
AA& CLHEP::HepAxisAngle::set ( const Hep3Vector  axis,
Scalar  delta 
)
inline

Referenced by CLHEP::operator>>().

AA& CLHEP::HepAxisAngle::setAxis ( const Hep3Vector  axis)
inline
AA& CLHEP::HepAxisAngle::setDelta ( Scalar  delta)
inline
static double CLHEP::HepAxisAngle::setTolerance ( Scalar  tol)
inlinestatic

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const AA &  aa 
)
friend

Definition at line 85 of file AxisAngle.cc.

85  {
86  os << '(' << aa.axis() << ", " << aa.delta() << ')';
87  return os;
88 } // operator<<()
std::istream& operator>> ( std::istream &  is,
AA &  aa 
)
friend

Definition at line 95 of file AxisAngle.cc.

95  {
96  Hep3Vector axis;
97  double delta;
98  double x,y,z;
99  ZMinputAxisAngle ( is, x, y, z, delta );
100  axis.set(x,y,z);
101  aa.set ( axis, delta );
102  return is;
103 } // operator>>()
void ZMinputAxisAngle(std::istream &is, double &x, double &y, double &z, double &delta)
Definition: ZMinput.cc:156
G4double z
Definition: TRTMaterials.hh:39
Hep3Vector axis() const
double delta() const

Field Documentation

double CLHEP::HepAxisAngle::tolerance = Hep3Vector::ToleranceTicks * 1.0e-08
staticprotected

Definition at line 43 of file AxisAngle.h.


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