Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
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
double epsilon(double density, double temperature)
static double getTolerance()
bool operator==(const AA &aa) const
double getDelta() const
bool isNear(const AA &aa, Scalar epsilon=tolerance) const
Definition: AxisAngle.cc:68
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:49
double delta() const
bool operator>=(const AA &aa) const
static double setTolerance(Scalar tol)
double howNear(const AA &aa) const
Definition: AxisAngle.cc:75
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:99
friend std::ostream & operator<<(std::ostream &os, const AA &aa)
Definition: AxisAngle.cc:89
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:223
std::ostream & operator<<(std::ostream &os, const HepRandom &dist)
Definition: Random.cc:219