Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AxisAngle.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 // ---------------------------------------------------------------------------
3 //
4 // This file is a part of the CLHEP - a Class Library for High Energy Physics.
5 //
6 // ----------------------------------------------------------------------
7 // ----------------------------------------------------------------------
8 //
9 // AxisAngle.h - provide HepAxisAngle class
10 //
11 // History:
12 // 23-Jan-1998 WEB Initial draft
13 // 15-Jun-1998 WEB Added namespace support
14 // 02-May-2000 WEB No global using
15 // 27-Jul-2000 MF CLHEP version
16 //
17 // ----------------------------------------------------------------------
18 
19 #ifndef HEP_AXISANGLE_H
20 #define HEP_AXISANGLE_H
21 
22 #include <iostream>
24 
25 namespace CLHEP {
26 
27 // Declarations of classes and global methods
28 class HepAxisAngle;
29 std::ostream & operator<<( std::ostream & os, const HepAxisAngle & aa );
30 std::istream & operator>>( std::istream & is, HepAxisAngle & aa );
31 
32 /**
33  * @author
34  * @ingroup vector
35  */
36 class HepAxisAngle {
37 
38 public:
39  typedef double Scalar;
40 
41 protected:
42  typedef HepAxisAngle AA; // just an abbreviation
43  static Scalar tolerance; // to determine relative nearness
44 
45 public:
46 
47  // ---------- Constructors:
48  inline HepAxisAngle();
49  inline HepAxisAngle( const Hep3Vector axis, Scalar delta );
50 
51  // ---------- Destructor, copy constructor, assignment:
52  // use C++ defaults
53 
54  // ---------- Accessors:
55 
56 public:
57  inline Hep3Vector getAxis() const;
58  inline Hep3Vector axis() const;
59  inline AA & setAxis( const Hep3Vector axis );
60 
61  inline double getDelta() const;
62  inline double delta() const ;
63  inline AA & setDelta( Scalar delta );
64 
65  inline AA & set( const Hep3Vector axis, Scalar delta );
66 
67  // ---------- Operations:
68 
69  // comparisons:
70  inline int compare ( const AA & aa ) const;
71 
72  inline bool operator==( const AA & aa ) const;
73  inline bool operator!=( const AA & aa ) const;
74  inline bool operator< ( const AA & aa ) const;
75  inline bool operator<=( const AA & aa ) const;
76  inline bool operator> ( const AA & aa ) const;
77  inline bool operator>=( const AA & aa ) const;
78 
79  // relative comparison:
80  inline static double getTolerance();
81  inline static double setTolerance( Scalar tol );
82 
83 protected:
84  double distance( const HepAxisAngle & aa ) const;
85 public:
86 
87  bool isNear ( const AA & aa, Scalar epsilon = tolerance ) const;
88  double howNear( const AA & aa ) const;
89 
90  // ---------- I/O:
91 
92  friend std::ostream & operator<<( std::ostream & os, const AA & aa );
93  friend std::istream & operator>>( std::istream & is, AA & aa );
94 
95 private:
96  Hep3Vector axis_; // Note: After construction, this is always of mag 1
97  double delta_;
98 
99 }; // HepAxisAngle
100 
101 
102 } // namespace CLHEP
103 
104 #include "CLHEP/Vector/AxisAngle.icc"
105 
106 #endif // HEP_AXISANGLE_H
bool isNear(const AA &aa, Scalar epsilon=tolerance) const
Definition: AxisAngle.cc:64
friend std::istream & operator>>(std::istream &is, AA &aa)
Definition: AxisAngle.cc:95
double distance(const HepAxisAngle &aa) const
Definition: AxisAngle.cc:45
Hep3Vector getAxis() const
static Scalar tolerance
Definition: AxisAngle.h:43
bool operator>=(const AA &aa) const
static double setTolerance(Scalar tol)
bool operator<=(const AA &aa) const
bool operator!=(const AA &aa) const
HepAxisAngle AA
Definition: AxisAngle.h:42
bool operator>(const AA &aa) const
std::ostream & operator<<(std::ostream &os, const HepRandom &dist)
Definition: Random.cc:116
bool operator<(const AA &aa) const
static double getTolerance()
Hep3Vector axis() const
AA & set(const Hep3Vector axis, Scalar delta)
AA & setAxis(const Hep3Vector axis)
bool operator==(const AA &aa) const
double delta() const
int compare(const AA &aa) const
std::istream & operator>>(std::istream &is, HepRandom &dist)
Definition: Random.cc:120
friend std::ostream & operator<<(std::ostream &os, const AA &aa)
Definition: AxisAngle.cc:85
double howNear(const AA &aa) const
Definition: AxisAngle.cc:71
AA & setDelta(Scalar delta)
double getDelta() const