CLHEP VERSION Reference Documentation
   
CLHEP Home Page     CLHEP Documentation     CLHEP Bug Reports

Vector/Vector/EulerAngles.h
Go to the documentation of this file.
1 #ifndef HEP_EULERANGLES_H
2 #define HEP_EULERANGLES_H
3 
4 // ----------------------------------------------------------------------
5 //
6 // EulerAngles.h EulerAngles class --
7 // Support class for PhysicsVectors classes
8 //
9 // History:
10 // 09-Jan-1998 WEB FixedTypes is now found in ZMutility
11 // 12-Jan-1998 WEB PI is now found in ZMutility
12 // 15-Jun-1998 WEB Added namespace support
13 // 02-May-2000 WEB No global using
14 // 26-Jul-2000 MF CLHEP version
15 //
16 // ----------------------------------------------------------------------
17 
18 #include <iostream>
19 #include "CLHEP/Vector/defs.h"
20 
21 namespace CLHEP {
22 
23 // Declarations of classes and global methods
24 class HepEulerAngles;
25 std::ostream & operator<<(std::ostream & os, const HepEulerAngles & aa);
26 std::istream & operator>>(std::istream & is, HepEulerAngles & aa);
27 
32 class HepEulerAngles {
33 
34 protected:
35  typedef HepEulerAngles EA; // just an abbreviation
36  static double tolerance; // to determine relative nearness
37 
38 public:
39 
40  // ---------- Constructors:
41  inline HepEulerAngles();
42  inline HepEulerAngles( double phi, double theta, double psi );
43 
44  // ---------- Destructor, copy constructor, assignment:
45  // use C++ defaults
46 
47  // ---------- Accessors:
48 
49 public:
50  inline double getPhi() const;
51  inline double phi() const;
52  inline EA & setPhi( double phi );
53 
54  inline double getTheta() const;
55  inline double theta() const;
56  inline EA & setTheta( double theta );
57 
58  inline double getPsi() const;
59  inline double psi() const;
60  inline EA & setPsi( double psi );
61 
62  inline EA & set( double phi, double theta, double psi );
63 
64  // ---------- Operations:
65 
66  // comparisons:
67  inline int compare ( const EA & ea ) const;
68 
69  inline bool operator==( const EA & ea ) const;
70  inline bool operator!=( const EA & ea ) const;
71  inline bool operator< ( const EA & ea ) const;
72  inline bool operator<=( const EA & ea ) const;
73  inline bool operator> ( const EA & ea ) const;
74  inline bool operator>=( const EA & ea ) const;
75 
76  // relative comparison:
77  inline static double getTolerance();
78  inline static double setTolerance( double tol );
79 
80  bool isNear ( const EA & ea, double epsilon = tolerance ) const;
81  double howNear( const EA & ea ) const;
82 
83  // ---------- I/O:
84 
85  friend std::ostream & operator<<( std::ostream & os, const EA & ea );
86  friend std::istream & operator>>( std::istream & is, EA & ea );
87 
88  // ---------- Helper methods:
89 
90 protected:
91  double distance( const HepEulerAngles & ex ) const;
92 
93  // ---------- Data members:
94 protected:
95  double phi_;
96  double theta_;
97  double psi_;
98 
99 }; // HepEulerAngles
100 
101 } // namespace CLHEP
102 
103 
104 namespace zmpv {
105 
107 
108 } // end of namespace zmpv
109 
110 #define EULERANGLES_ICC
111 #include "CLHEP/Vector/EulerAngles.icc"
112 #undef EULERANGLES_ICC
113 
114 #ifdef ENABLE_BACKWARDS_COMPATIBILITY
115 // backwards compatibility will be enabled ONLY in CLHEP 1.9
116 using namespace CLHEP;
117 #endif
118 
119 
120 #endif // EULERANGLES_H
friend std::istream & operator>>(std::istream &is, EA &ea)
Definition: EulerAngles.cc:110
bool operator>=(const EA &ea) const
double phi() const
bool operator<=(const EA &ea) const
double getPhi() const
double theta() const
double distance(const HepEulerAngles &ex) const
double psi() const
bool operator<(const EA &ea) const
static double getTolerance()
bool operator>(const EA &ea) const
friend std::ostream & operator<<(std::ostream &os, const EA &ea)
Definition: EulerAngles.cc:101
EA & setTheta(double theta)
bool operator==(const EA &ea) const
static double setTolerance(double tol)
EA & setPsi(double psi)
bool operator!=(const EA &ea) const
double getTheta() const
double getPsi() const
double howNear(const EA &ea) const
EA & set(double phi, double theta, double psi)
EA & setPhi(double phi)
HepEulerAngles(double phi, double theta, double psi)
int compare(const EA &ea) const
bool isNear(const EA &ea, double epsilon=tolerance) const
std::ostream & operator<<(std::ostream &os, const HepAxisAngle &aa)
Definition: AxisAngle.cc:86
std::istream & operator>>(std::istream &is, HepAxisAngle &aa)
Definition: AxisAngle.cc:96
CLHEP::HepEulerAngles EulerAngles