Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/clhep/src/BoostX.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /externals/clhep/src/BoostX.cc (Version 11.3.0) and /externals/clhep/src/BoostX.cc (Version 8.0)


  1 // -*- C++ -*-                                      1 
  2 // -------------------------------------------    
  3 //                                                
  4 // This file is a part of the CLHEP - a Class     
  5 //                                                
  6 // This is the implementation of the HepBoostX    
  7 //                                                
  8                                                   
  9 #include "CLHEP/Vector/BoostX.h"                  
 10 #include "CLHEP/Vector/Boost.h"                   
 11 #include "CLHEP/Vector/Rotation.h"                
 12 #include "CLHEP/Vector/LorentzRotation.h"         
 13                                                   
 14 #include <cmath>                                  
 15 #include <iostream>                               
 16                                                   
 17 namespace CLHEP  {                                
 18                                                   
 19                                                   
 20 // ----------  Constructors and Assignment:       
 21                                                   
 22 HepBoostX & HepBoostX::set (double bbeta) {       
 23   double b2 = bbeta*bbeta;                        
 24   if (b2 >= 1) {                                  
 25     std::cerr << "HepBoostX::set() - "            
 26       << "Beta supplied to set HepBoostX repre    
 27     beta_  = 1.0 - 1.0E-8;    // NaN-proofing     
 28     gamma_ = 1.0 / std::sqrt(1.0 - b2);           
 29     return *this;                                 
 30   }                                               
 31   beta_  = bbeta;                                 
 32   gamma_ = 1.0 / std::sqrt(1.0 - b2);             
 33   return *this;                                   
 34 }                                                 
 35                                                   
 36 // ----------  Accessors:                         
 37                                                   
 38 HepRep4x4 HepBoostX::rep4x4() const {             
 39   double bg = beta_*gamma_;                       
 40   return HepRep4x4( gamma_,   0,    0,    bg,     
 41                       0,      1,    0,    0,      
 42                       0,      0,    1,    0,      
 43                      bg,      0,    0,  gamma_    
 44 }                                                 
 45                                                   
 46 HepRep4x4Symmetric HepBoostX::rep4x4Symmetric(    
 47   double bg = beta_*gamma_;                       
 48   return HepRep4x4Symmetric( gamma_,   0,    0    
 49                                      1,    0,     
 50                                            1,     
 51                                            gam    
 52 }                                                 
 53                                                   
 54 // ----------  Decomposition:                     
 55                                                   
 56 void HepBoostX::decompose (HepRotation & rotat    
 57   HepAxisAngle vdelta = HepAxisAngle();           
 58   rotation = HepRotation(vdelta);                 
 59   Hep3Vector bbeta = boostVector();               
 60   boost = HepBoost(bbeta);                        
 61 }                                                 
 62                                                   
 63 void HepBoostX::decompose (HepAxisAngle & rota    
 64   rotation = HepAxisAngle();                      
 65   boost = boostVector();                          
 66 }                                                 
 67                                                   
 68 void HepBoostX::decompose (HepBoost & boost, H    
 69   HepAxisAngle vdelta = HepAxisAngle();           
 70   rotation = HepRotation(vdelta);                 
 71   Hep3Vector bbeta = boostVector();               
 72   boost = HepBoost(bbeta);                        
 73 }                                                 
 74                                                   
 75 void HepBoostX::decompose (Hep3Vector & boost,    
 76   rotation = HepAxisAngle();                      
 77   boost = boostVector();                          
 78 }                                                 
 79                                                   
 80 // ----------  Comparisons:                       
 81                                                   
 82 double HepBoostX::distance2( const HepBoost &     
 83   return b.distance2(*this);                      
 84 }                                                 
 85                                                   
 86 double HepBoostX::distance2( const HepRotation    
 87   double db2 = norm2();                           
 88   double dr2  = r.norm2();                        
 89   return (db2 + dr2);                             
 90 }                                                 
 91                                                   
 92 double HepBoostX::distance2( const HepLorentzR    
 93   HepBoost b1;                                    
 94   HepRotation r1;                                 
 95   lt.decompose(b1,r1);                            
 96   double db2 = distance2(b1);                     
 97   double dr2  = r1.norm2();                       
 98   return (db2 + dr2);                             
 99 }                                                 
100                                                   
101 bool HepBoostX::isNear (const HepRotation & r,    
102   double db2 = norm2();                           
103   if (db2 > epsilon*epsilon) return false;        
104   double dr2  = r.norm2();                        
105   return (db2+dr2 <= epsilon*epsilon);            
106 }                                                 
107                                                   
108 bool HepBoostX::isNear ( const HepLorentzRotat    
109              double epsilon) const {              
110   HepBoost b1;                                    
111   HepRotation r1;                                 
112   double db2 = distance2(b1);                     
113   lt.decompose(b1,r1);                            
114   if (db2 > epsilon*epsilon) return false;        
115   double dr2  = r1.norm2();                       
116   return (db2 + dr2);                             
117 }                                                 
118                                                   
119 // ----------  Properties:                        
120                                                   
121 void HepBoostX::rectify() {                       
122   // Assuming the representation of this is cl    
123   // but may have drifted due to round-off err    
124   // this forms an "exact" pure boostX matrix     
125                                                   
126   double b2 = beta_*beta_;                        
127   if (b2 >= 1) {                                  
128     beta_ = 1.0 - 1.0e-8;   // NaN-proofing       
129     b2 = beta_*beta_;                             
130   }                                               
131   gamma_ = 1.0 / std::sqrt(1.0 - b2);             
132 }                                                 
133                                                   
134 // ---------- Application:                        
135                                                   
136 // ---------- Operations in the group of 4-Rot    
137                                                   
138 HepBoostX HepBoostX::operator * (const HepBoos    
139   return HepBoostX ( (beta()+b.beta()) / (1+be    
140 }                                                 
141 HepLorentzRotation HepBoostX::operator * (cons    
142   HepLorentzRotation me (*this);                  
143   return me*b;                                    
144 }                                                 
145 HepLorentzRotation HepBoostX::operator * (cons    
146   HepLorentzRotation me (*this);                  
147   return me*r;                                    
148 }                                                 
149 HepLorentzRotation HepBoostX::operator * (cons    
150   HepLorentzRotation me (*this);                  
151   return me*lt;                                   
152 }                                                 
153                                                   
154 // ---------- I/O:                                
155                                                   
156 std::ostream & HepBoostX::print( std::ostream     
157   os << "Boost in X direction (beta = " << bet    
158       << ", gamma = " << gamma_ << ") ";          
159   return os;                                      
160 }                                                 
161                                                   
162 }  // namespace CLHEP                             
163