Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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
25namespace CLHEP {
26
27// Declarations of classes and global methods
28class HepAxisAngle;
29std::ostream & operator<<( std::ostream & os, const HepAxisAngle & aa );
30std::istream & operator>>( std::istream & is, HepAxisAngle & aa );
31
32/**
33 * @author
34 * @ingroup vector
35 */
37
38public:
39 typedef double Scalar;
40
41protected:
42 typedef HepAxisAngle AA; // just an abbreviation
43 static Scalar tolerance; // to determine relative nearness
44
45public:
46
47 // ---------- Constructors:
48 inline HepAxisAngle();
50
51 // ---------- Destructor, copy constructor, assignment:
52 // use C++ defaults
53
54 // ---------- Accessors:
55
56public:
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
83protected:
84 double distance( const HepAxisAngle & aa ) const;
85public:
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
95private:
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
static double getTolerance()
bool operator==(const AA &aa) const
double getDelta() const
bool isNear(const AA &aa, Scalar epsilon=tolerance) const
Definition: AxisAngle.cc:64
bool operator>(const AA &aa) const
HepAxisAngle(const Hep3Vector axis, Scalar delta)
AA & setAxis(const Hep3Vector axis)
double distance(const HepAxisAngle &aa) const
Definition: AxisAngle.cc:45
double delta() const
bool operator>=(const AA &aa) const
static double setTolerance(Scalar tol)
double howNear(const AA &aa) const
Definition: AxisAngle.cc:71
Hep3Vector getAxis() const
int compare(const AA &aa) const
bool operator<(const AA &aa) const
static Scalar tolerance
Definition: AxisAngle.h:43
HepAxisAngle AA
Definition: AxisAngle.h:42
bool operator<=(const AA &aa) const
Hep3Vector axis() const
bool operator!=(const AA &aa) const
friend std::istream & operator>>(std::istream &is, AA &aa)
Definition: AxisAngle.cc:95
friend std::ostream & operator<<(std::ostream &os, const AA &aa)
Definition: AxisAngle.cc:85
AA & setDelta(Scalar delta)
AA & set(const Hep3Vector axis, Scalar delta)
Definition: DoubConv.h:17
std::istream & operator>>(std::istream &is, HepRandom &dist)
Definition: Random.cc:120
std::ostream & operator<<(std::ostream &os, const HepRandom &dist)
Definition: Random.cc:116