source: trunk/CLHEP/Vector/EulerAngles.h@ 20

Last change on this file since 20 was 4, checked in by Pavel Demin, 16 years ago

first commit

File size: 3.0 KB
RevLine 
[4]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
21namespace CLHEP {
22
23// Declarations of classes and global methods
24class HepEulerAngles;
25std::ostream & operator<<(std::ostream & os, const HepEulerAngles & aa);
26std::istream & operator>>(std::istream & is, HepEulerAngles & aa);
27
28/**
29 * @author
30 * @ingroup vector
31 */
32class HepEulerAngles {
33
34protected:
35 typedef HepEulerAngles EA; // just an abbreviation
36 static double tolerance; // to determine relative nearness
37
38public:
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
49public:
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
90protected:
91 double distance( const HepEulerAngles & ex ) const;
92
93 // ---------- Data members:
94protected:
95 double phi_;
96 double theta_;
97 double psi_;
98
99}; // HepEulerAngles
100
101} // namespace CLHEP
102
103
104namespace zmpv {
105
106typedef CLHEP::HepEulerAngles EulerAngles;
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
116using namespace CLHEP;
117#endif
118
119
120#endif // EULERANGLES_H
Note: See TracBrowser for help on using the repository browser.