Geant4 Cross Reference |
1 // -*- C++ -*- 1 2 // ------------------------------------------- 3 // 4 // This file is a part of the CLHEP - a Class 5 // 6 // This is the implementation of methods of th 7 // were introduced when ZOOM PhysicsVectors wa 8 // pulling in of LorentzTransformation related 9 // 10 11 #include "CLHEP/Vector/Rotation.h" 12 #include "CLHEP/Vector/LorentzRotation.h" 13 14 #include <cmath> 15 16 namespace CLHEP { 17 18 // ---------- distance2 and related member fu 19 // 20 // WHy do we have forms for HepLorentzRotation 21 // HepBoostX, HepBoostY, HepBoostZ? Because t 22 // implicit conversion to HepBoost; but if we 23 // then this would involve double conversion w 24 25 double HepRotation::distance2( const HepLorent 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 35 double HepRotation::distance2( const HepBoost 36 return distance2( HepLorentzRotation(lt)); 37 } 38 39 double HepRotation::howNear( const HepLorentzR 40 return std::sqrt( distance2( lt ) ); 41 } 42 43 double HepRotation::howNear( const HepBoost & 44 return std::sqrt( distance2( lt ) ); 45 } 46 47 bool HepRotation::isNear( const HepLorentzRo 48 double ep 49 return distance2( lt ) <= epsilon*epsilon; 50 } 51 52 bool HepRotation::isNear( const HepBoost & l 53 double ep 54 return distance2( lt ) <= epsilon*epsilon; 55 } 56 57 } // namespace CLHEP 58 59