CLHEP/Vector/EulerAngles.h

#ifndef HEP_EULERANGLES_H
#define HEP_EULERANGLES_H

// ----------------------------------------------------------------------
//
//  EulerAngles.h 	EulerAngles class --
//  			Support class for PhysicsVectors classes
//
// History:
//   09-Jan-1998  WEB  FixedTypes is now found in ZMutility
//   12-Jan-1998  WEB  PI is now found in ZMutility
//   15-Jun-1998  WEB  Added namespace support
//   02-May-2000  WEB  No global using
//   26-Jul-2000  MF   CLHEP version
//
// ----------------------------------------------------------------------

#include "CLHEP/config/CLHEP.h"
#include "CLHEP/config/iostream.h"

// Declarations of classes and global methods
class HepEulerAngles;
HepStd::ostream & operator<<(HepStd::ostream & os, const HepEulerAngles & aa);
HepStd::istream & operator>>(HepStd::istream & is,       HepEulerAngles & aa);

class HepEulerAngles {

protected:
  typedef HepEulerAngles EA;       // just an abbreviation
  static HepDouble tolerance;      // to determine relative nearness

public:

  // ----------  Constructors:
  inline HepEulerAngles();
  inline HepEulerAngles( HepDouble phi, HepDouble theta, HepDouble psi );

  // ----------  Destructor, copy constructor, assignment:
  // use C++ defaults

  // ----------  Accessors:

public:
  inline  HepDouble  getPhi() const;
  inline  HepDouble  phi()    const;
  inline  EA &       setPhi( HepDouble phi );

  inline  HepDouble  getTheta() const;
  inline  HepDouble  theta()    const;
  inline  EA &       setTheta( HepDouble theta );

  inline  HepDouble  getPsi() const;
  inline  HepDouble  psi()    const;
  inline  EA &       setPsi( HepDouble psi );

  inline EA & set( HepDouble phi, HepDouble theta, HepDouble psi );

  // ----------  Operations:

  //   comparisons:
  inline int  compare   ( const EA & ea ) const;

  inline HepBoolean operator==( const EA & ea ) const;
  inline HepBoolean operator!=( const EA & ea ) const;
  inline HepBoolean operator< ( const EA & ea ) const;
  inline HepBoolean operator<=( const EA & ea ) const;
  inline HepBoolean operator> ( const EA & ea ) const;
  inline HepBoolean operator>=( const EA & ea ) const;

  //   relative comparison:
  inline static HepDouble getTolerance();
  inline static HepDouble setTolerance( HepDouble tol );

  HepBoolean isNear ( const EA & ea, HepDouble epsilon = tolerance ) const;
  HepDouble  howNear( const EA & ea ) const;

  // ----------  I/O:

  friend HepStd::ostream & operator<<( HepStd::ostream & os, const EA & ea );
  friend HepStd::istream & operator>>( HepStd::istream & is,       EA & ea );

  // ---------- Helper methods:

protected:
    HepDouble distance( const HepEulerAngles & ex ) const;

  // ----------  Data members:
protected:
  HepDouble phi_;
  HepDouble theta_;
  HepDouble psi_;

};  // HepEulerAngles


HEP_BEGIN_NAMESPACE( zmpv )	/*  namespace zmpv  {  */

typedef HepEulerAngles EulerAngles;

HEP_END_NAMESPACE( zmpv )	/*  }  // namespace zmpv  */


#define EULERANGLES_ICC
#include "CLHEP/Vector/EulerAngles.icc"
#undef EULERANGLES_ICC


#endif // EULERANGLES_H

Generated by GNU enscript 1.6.1.