Geant4 Cross Reference

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