Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/clhep/include/CLHEP/Vector/EulerAngles.h

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

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