Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/global/HEPNumerics/include/G4PolynomialSolver.hh

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 /global/HEPNumerics/include/G4PolynomialSolver.hh (Version 11.3.0) and /global/HEPNumerics/include/G4PolynomialSolver.hh (Version 11.0.p3,)


** Warning: Cannot open xref database.

  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26 // G4PolynomialSolver                             
 27 //                                                
 28 // Class description:                             
 29 //                                                
 30 //   G4PolynomialSolver allows the user to sol    
 31 //   with a great precision. This is used by I    
 32 //                                                
 33 //   The Bezier clipping method is used to sol    
 34 //                                                
 35 // How to use it:                                 
 36 //   Create a class that is the function to be    
 37 //   This class could have internal parameters    
 38 //   the equation to be solved without recreat    
 39 //                                                
 40 //   Define a Polynomial solver, example:         
 41 //   G4PolynomialSolver<MyFunctionClass,G4doub    
 42 //     PolySolver (&MyFunction,                   
 43 //                 &MyFunctionClass::Function,    
 44 //                 &MyFunctionClass::Derivativ    
 45 //                 precision);                    
 46 //                                                
 47 //   The precision is relative to the function    
 48 //                                                
 49 //   In MyFunctionClass, provide the function     
 50 //   Example of function to provide :             
 51 //                                                
 52 //   x,y,z,dx,dy,dz,Rmin,Rmax are internal var    
 53 //                                                
 54 //   G4double MyFunctionClass::Function(G4doub    
 55 //   {                                            
 56 //     G4double Lx,Ly,Lz;                         
 57 //     G4double result;                           
 58 //                                                
 59 //     Lx = x + value*dx;                         
 60 //     Ly = y + value*dy;                         
 61 //     Lz = z + value*dz;                         
 62 //                                                
 63 //     result = TorusEquation(Lx,Ly,Lz,Rmax,Rm    
 64 //                                                
 65 //     return result ;                            
 66 //   }                                            
 67 //                                                
 68 //   G4double MyFunctionClass::Derivative(G4do    
 69 //   {                                            
 70 //     G4double Lx,Ly,Lz;                         
 71 //     G4double result;                           
 72 //                                                
 73 //     Lx = x + value*dx;                         
 74 //     Ly = y + value*dy;                         
 75 //     Lz = z + value*dz;                         
 76 //                                                
 77 //     result = dx*TorusDerivativeX(Lx,Ly,Lz,R    
 78 //     result += dy*TorusDerivativeY(Lx,Ly,Lz,    
 79 //     result += dz*TorusDerivativeZ(Lx,Ly,Lz,    
 80 //                                                
 81 //     return result;                             
 82 //   }                                            
 83 //                                                
 84 //   Then to have a root inside an interval [I    
 85 //   following:                                   
 86 //                                                
 87 //   MyRoot = PolySolver.solve(IntervalMin,Int    
 88                                                   
 89 // Author: E.Medernach, 19.12.2000 - First imp    
 90 // -------------------------------------------    
 91 #ifndef G4POL_SOLVER_HH                           
 92 #define G4POL_SOLVER_HH 1                         
 93                                                   
 94 #include "globals.hh"                             
 95                                                   
 96 template <class T, class F>                       
 97 class G4PolynomialSolver                          
 98 {                                                 
 99  public:                                          
100   G4PolynomialSolver(T* typeF, F func, F deriv    
101   ~G4PolynomialSolver();                          
102                                                   
103   G4double solve(G4double IntervalMin, G4doubl    
104                                                   
105  private:                                         
106   G4double Newton(G4double IntervalMin, G4doub    
107   // General Newton method with Bezier Clippin    
108                                                   
109   // Works for polynomial of order less or equ    
110   // But could be changed to work for polynomi    
111   // that we find the bezier control points.      
112                                                   
113   G4int BezierClipping(G4double* IntervalMin,     
114   // This is just one iteration of Bezier Clip    
115                                                   
116   T* FunctionClass;                               
117   F Function;                                     
118   F Derivative;                                   
119                                                   
120   G4double Precision;                             
121 };                                                
122                                                   
123 #include "G4PolynomialSolver.icc"                 
124                                                   
125 #endif                                            
126