Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RotationL.cc
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// This is the implementation of methods of the HepRotation class which
7// were introduced when ZOOM PhysicsVectors was merged in, which might cause
8// pulling in of LorentzTransformation related code units.
9//
10
13
14#include <cmath>
15
16namespace CLHEP {
17
18// ---------- distance2 and related member functions:
19//
20// WHy do we have forms for HepLorentzRotation and HepBoost but not for
21// HepBoostX, HepBoostY, HepBoostZ? Because the latter can be gotten by
22// implicit conversion to HepBoost; but if we just had HepLorentzRotation
23// then this would involve double conversion when HepBoostX was used.
24
25double HepRotation::distance2( const HepLorentzRotation & lt ) const {
26 HepAxisAngle a;
27 Hep3Vector b;
28 lt.decompose(b, a);
29 double bet = b.beta();
30 double bet2 = bet*bet;
31 HepRotation r(a);
32 return bet2/(1-bet2) + distance2(r);
33}
34
35double HepRotation::distance2( const HepBoost & lt ) const {
36 return distance2( HepLorentzRotation(lt));
37}
38
39double HepRotation::howNear( const HepLorentzRotation & lt ) const {
40 return std::sqrt( distance2( lt ) );
41}
42
43double HepRotation::howNear( const HepBoost & lt ) const {
44 return std::sqrt( distance2( lt ) );
45}
46
48 double epsilon) const {
49 return distance2( lt ) <= epsilon*epsilon;
50}
51
53 double epsilon) const {
54 return distance2( lt ) <= epsilon*epsilon;
55}
56
57} // namespace CLHEP
58
G4double epsilon(G4double density, G4double temperature)
double beta() const
Definition: SpaceVectorP.cc:26
void decompose(Hep3Vector &boost, HepAxisAngle &rotation) const
double distance2(const HepRotation &r) const
Definition: RotationP.cc:29
bool isNear(const HepRotation &r, double epsilon=Hep4RotationInterface::tolerance) const
Definition: RotationP.cc:41
double howNear(const HepRotation &r) const
Definition: RotationP.cc:37
Definition: DoubConv.h:17