Changeset 850 for trunk/source/global
- Timestamp:
- Sep 10, 2008, 5:40:37 PM (16 years ago)
- Location:
- trunk/source/global
- Files:
-
- 117 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/global/HEPGeometry/include/G4LorentzRotation.hh
r833 r850 26 26 // 27 27 // $Id: G4LorentzRotation.hh,v 1.5 2006/06/29 18:59:04 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 #ifndef G4LorentzRotation_hh -
trunk/source/global/HEPGeometry/include/G4LorentzVector.hh
r833 r850 26 26 // 27 27 // $Id: G4LorentzVector.hh,v 1.5 2006/06/29 18:59:06 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 #ifndef G4LorentzVector_hh -
trunk/source/global/HEPGeometry/include/G4Normal3D.hh
r833 r850 26 26 // 27 27 // $Id: G4Normal3D.hh,v 1.5 2006/06/29 18:59:09 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 #ifndef G4NORMAL3D_HH -
trunk/source/global/HEPGeometry/include/G4Plane3D.hh
r833 r850 26 26 // 27 27 // $Id: G4Plane3D.hh,v 1.5 2006/06/29 18:59:11 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 #ifndef G4PLANE3D_HH -
trunk/source/global/HEPGeometry/include/G4Point3D.hh
r833 r850 26 26 // 27 27 // $Id: G4Point3D.hh,v 1.5 2006/06/29 18:59:14 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 #ifndef G4POINT3D_HH -
trunk/source/global/HEPGeometry/include/G4Transform3D.hh
r833 r850 26 26 // 27 27 // $Id: G4Transform3D.hh,v 1.5 2006/06/29 18:59:16 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 #ifndef G4TRANSFORM3D_HH -
trunk/source/global/HEPGeometry/include/G4Vector3D.hh
r833 r850 26 26 // 27 27 // $Id: G4Vector3D.hh,v 1.5 2006/06/29 18:59:18 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 #ifndef G4VECTOR3D_HH -
trunk/source/global/HEPGeometry/include/geomdefs.hh
r833 r850 26 26 // 27 27 // $Id: geomdefs.hh,v 1.8 2007/05/18 07:21:39 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/HEPNumerics/include/G4AnalyticalPolSolver.hh
r833 r850 26 26 // 27 27 // $Id: G4AnalyticalPolSolver.hh,v 1.5 2006/06/29 18:59:23 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Class description: -
trunk/source/global/HEPNumerics/include/G4ChebyshevApproximation.hh
r833 r850 26 26 // 27 27 // $Id: G4ChebyshevApproximation.hh,v 1.6 2006/06/29 18:59:26 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Class description: -
trunk/source/global/HEPNumerics/include/G4DataInterpolation.hh
r833 r850 26 26 // 27 27 // $Id: G4DataInterpolation.hh,v 1.5 2006/06/29 18:59:29 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Class description: -
trunk/source/global/HEPNumerics/include/G4GaussChebyshevQ.hh
r833 r850 26 26 // 27 27 // $Id: G4GaussChebyshevQ.hh,v 1.5 2006/06/29 18:59:32 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Class description: -
trunk/source/global/HEPNumerics/include/G4GaussHermiteQ.hh
r833 r850 26 26 // 27 27 // $Id: G4GaussHermiteQ.hh,v 1.6 2006/06/29 18:59:35 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Class description: -
trunk/source/global/HEPNumerics/include/G4GaussJacobiQ.hh
r833 r850 26 26 // 27 27 // $Id: G4GaussJacobiQ.hh,v 1.5 2006/06/29 18:59:38 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Class description: -
trunk/source/global/HEPNumerics/include/G4GaussLaguerreQ.hh
r833 r850 26 26 // 27 27 // $Id: G4GaussLaguerreQ.hh,v 1.6 2006/06/29 18:59:40 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Class description: -
trunk/source/global/HEPNumerics/include/G4GaussLegendreQ.hh
r833 r850 26 26 // 27 27 // $Id: G4GaussLegendreQ.hh,v 1.6 2006/06/29 18:59:42 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Class description: -
trunk/source/global/HEPNumerics/include/G4Integrator.hh
r833 r850 26 26 // 27 27 // $Id: G4Integrator.hh,v 1.7 2006/06/29 18:59:45 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Class description: -
trunk/source/global/HEPNumerics/include/G4Integrator.icc
r833 r850 26 26 // 27 27 // $Id: G4Integrator.icc,v 1.13 2006/06/29 18:59:47 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Implementation of G4Integrator methods. -
trunk/source/global/HEPNumerics/include/G4JTPolynomialSolver.hh
r833 r850 26 26 // 27 27 // $Id: G4JTPolynomialSolver.hh,v 1.6 2006/06/29 18:59:49 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Class description: -
trunk/source/global/HEPNumerics/include/G4PolynomialSolver.hh
r833 r850 26 26 // 27 27 // $Id: G4PolynomialSolver.hh,v 1.4 2006/06/29 18:59:52 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // class G4PolynomialSolver -
trunk/source/global/HEPNumerics/include/G4PolynomialSolver.icc
r833 r850 26 26 // 27 27 // $Id: G4PolynomialSolver.icc,v 1.8 2006/06/29 18:59:54 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // class G4PolynomialSolver -
trunk/source/global/HEPNumerics/include/G4SimpleIntegration.hh
r833 r850 26 26 // 27 27 // $Id: G4SimpleIntegration.hh,v 1.6 2006/06/29 18:59:56 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Class description: -
trunk/source/global/HEPNumerics/include/G4SimplexDownhill.hh
r833 r850 26 26 // 27 27 // $Id: G4SimplexDownhill.hh,v 1.3 2007/06/21 15:04:12 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Class description: -
trunk/source/global/HEPNumerics/include/G4SimplexDownhill.icc
r833 r850 26 26 // 27 27 // $Id: G4SimplexDownhill.icc,v 1.2 2007/05/11 13:05:53 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Author: Tatsumi Koi (SLAC/SCCS), 2007 -
trunk/source/global/HEPNumerics/include/G4VGaussianQuadrature.hh
r833 r850 26 26 // 27 27 // $Id: G4VGaussianQuadrature.hh,v 1.7 2006/06/29 18:59:58 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Class description: -
trunk/source/global/HEPNumerics/src/G4AnalyticalPolSolver.cc
r833 r850 26 26 // 27 27 // $Id: G4AnalyticalPolSolver.cc,v 1.7 2007/11/13 17:35:06 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 -
trunk/source/global/HEPNumerics/src/G4ChebyshevApproximation.cc
r833 r850 26 26 // 27 27 // $Id: G4ChebyshevApproximation.cc,v 1.7 2007/11/13 17:35:06 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 -
trunk/source/global/HEPNumerics/src/G4DataInterpolation.cc
r833 r850 25 25 // 26 26 // 27 // $Id: G4DataInterpolation.cc,v 1. 9.2.1 2008/04/23 09:22:49gcosmo Exp $28 // GEANT4 tag $Name: geant4-09-01-patch-02$27 // $Id: G4DataInterpolation.cc,v 1.10 2008/03/13 09:35:56 gcosmo Exp $ 28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 #include "G4DataInterpolation.hh" -
trunk/source/global/HEPNumerics/src/G4GaussChebyshevQ.cc
r833 r850 26 26 // 27 27 // $Id: G4GaussChebyshevQ.cc,v 1.6 2006/06/29 19:00:07 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 #include "G4GaussChebyshevQ.hh" -
trunk/source/global/HEPNumerics/src/G4GaussHermiteQ.cc
r833 r850 26 26 // 27 27 // $Id: G4GaussHermiteQ.cc,v 1.8 2007/11/13 17:35:06 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 #include "G4GaussHermiteQ.hh" -
trunk/source/global/HEPNumerics/src/G4GaussJacobiQ.cc
r833 r850 26 26 // 27 27 // $Id: G4GaussJacobiQ.cc,v 1.8 2007/11/13 17:35:06 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 #include "G4GaussJacobiQ.hh" -
trunk/source/global/HEPNumerics/src/G4GaussLaguerreQ.cc
r833 r850 26 26 // 27 27 // $Id: G4GaussLaguerreQ.cc,v 1.8 2007/11/13 17:35:06 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 #include "G4GaussLaguerreQ.hh" -
trunk/source/global/HEPNumerics/src/G4GaussLegendreQ.cc
r833 r850 26 26 // 27 27 // $Id: G4GaussLegendreQ.cc,v 1.8 2007/11/13 17:35:06 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 #include "G4GaussLegendreQ.hh" -
trunk/source/global/HEPNumerics/src/G4JTPolynomialSolver.cc
r833 r850 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4JTPolynomialSolver.cc,v 1. 6.2.1 2008/04/23 09:22:49gcosmo Exp $27 // GEANT4 tag $Name: geant4-09-01-patch-02$26 // $Id: G4JTPolynomialSolver.cc,v 1.7 2008/03/13 09:35:57 gcosmo Exp $ 27 // GEANT4 tag $Name: HEAD $ 28 28 // 29 29 // -------------------------------------------------------------------- -
trunk/source/global/HEPNumerics/src/G4SimpleIntegration.cc
r833 r850 26 26 // 27 27 // $Id: G4SimpleIntegration.cc,v 1.7 2006/06/29 19:00:21 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Implementation file for simple integration methods -
trunk/source/global/HEPNumerics/src/G4VGaussianQuadrature.cc
r833 r850 26 26 // 27 27 // $Id: G4VGaussianQuadrature.cc,v 1.7 2006/06/29 19:00:23 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Implementation file for G4VGaussianQuadrature virtual base class -
trunk/source/global/HEPRandom/include/G4Poisson.hh
r833 r850 26 26 // 27 27 // $Id: G4Poisson.hh,v 1.9 2006/06/29 19:00:44 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/HEPRandom/include/G4RandomDirection.hh
r833 r850 25 25 // 26 26 // 27 // $Id: G4RandomDirection.hh,v 1. 3 2006/06/29 19:00:47 gunterExp $28 // GEANT4 tag $Name: geant4-09-01-patch-02$27 // $Id: G4RandomDirection.hh,v 1.5 2008/03/19 17:00:20 gcosmo Exp $ 28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // … … 34 34 // Class description: 35 35 // 36 // Fun tion returning a unit 3-vector homogeneously randomised over 4pi36 // Function returning a unit 3-vector homogeneously randomised over 4pi 37 37 // solid angle. It can be used in any particle scattering methods 38 38 // instead of: 39 39 // z=R1, x=SQRT(1-R1*R1)*SIN(2*pi*R2), y=SQRT(1-R1*R1)*COS(2*pi*R2) 40 40 // providing more performant results. 41 42 // History: 43 // 18.03.08 V. Grichine, unit radius sphere surface based algorithm 44 // ~ 2007 M. Kossov, algorithm based on 8 Quadrants technique 45 // 41 46 // ------------------------------------------------------------ 42 47 #ifndef G4RANDOMDIR_HH … … 49 54 inline G4ThreeVector G4RandomDirection() 50 55 { 51 // Randomization in one of 8 Quadrants (x>0, y>0, z>0) 52 // 53 G4double x=G4UniformRand(), y=G4UniformRand(), z=G4UniformRand(); 54 G4double r2= x*x+y*y+z*z; 55 while(r2>1.||r2<.000001) 56 { 57 x = G4UniformRand(); y = G4UniformRand(); z = G4UniformRand(); 58 r2=x*x+y*y+z*z; 59 } 60 G4double r=std::sqrt(r2), quad=G4UniformRand(); 61 62 if(quad>0.5) 63 { 64 if(quad>0.75) 65 { 66 if(quad>0.875) return G4ThreeVector(-x/r,-y/r,-z/r); 67 else return G4ThreeVector(-x/r,-y/r, z/r); 68 } 69 else 70 { 71 if(quad>0.625) return G4ThreeVector(-x/r, y/r,-z/r); 72 else return G4ThreeVector(-x/r, y/r, z/r); 73 } 74 } 75 else 76 { 77 if(quad>0.25) 78 { 79 if(quad>0.375) return G4ThreeVector( x/r,-y/r,-z/r); 80 else return G4ThreeVector( x/r,-y/r, z/r); 81 } 82 else if(quad>0.125) return G4ThreeVector( x/r, y/r,-z/r); 83 } 84 return G4ThreeVector( x/r, y/r, z/r); 56 G4double cosTheta = 2.*G4UniformRand()-1.; 57 G4double sinTheta2 = 1. - cosTheta*cosTheta; 58 if( sinTheta2 < 0.) sinTheta2 = 0.; 59 G4double sinTheta = std::sqrt(sinTheta2); 60 G4double phi = twopi*G4UniformRand(); 61 return G4ThreeVector(sinTheta*std::cos(phi), 62 sinTheta*std::sin(phi), cosTheta).unit(); 85 63 } 86 64 -
trunk/source/global/HEPRandom/include/Randomize.hh
r833 r850 26 26 // 27 27 // $Id: Randomize.hh,v 1.7 2006/06/29 19:00:50 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 #ifndef randomize_h -
trunk/source/global/History
r833 r850 1 $Id: History,v 1. 190.2.1 2008/04/23 09:22:48gcosmo Exp $1 $Id: History,v 1.206 2008/09/03 07:21:32 gcosmo Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 18 18 ---------------------------------------------------------- 19 19 20 Apr 23, 2008 G.Cosmo (global-V09-00-03) 20 Aug 15, 2008 G.Cosmo (global-V09-01-12) 21 - Restored original implementation of G4SwapPtr() but using reference of 22 pointers as arguments, allowing for unambiguous use from client code. 23 24 Aug 14, 2008 P.Gumplinger (global-V09-01-10) 25 - Corrected G4SwapPtr() function in templates.hh (see also problem 26 report #1020). 27 28 Jun 26, 2008 G.Cosmo (global-V09-01-09) 29 - Corrected version number tag. 30 31 Jun 23, 2008 G.Cosmo (global-V09-01-08) 32 - Changed date for release 9.2-beta. 33 34 May 06, 2008 M.Maire (global-V09-01-07) 35 - G4UnitsTable: added units for electric-field, V/m. 36 37 Apr 23, 2008 G.Cosmo (global-V09-01-06) 21 38 - Changed date for release 9.1.p02. 22 - Tag for release 9.1.p02. 39 40 Apr 21, 2008 V.Ivantchenko (global-V09-01-05) 41 - Corrected deletion of temporary in G4PhysicsVector::FillSecondDerivatives(). 42 43 Apr 07, 2008 A.Bagulya, V.Ivantchenko (global-V09-01-04) 44 - G4PhysicsVector: 45 o Introduced cubic spline interpolation, optionally selectable. 46 o Optimised implementation of GetValue() method. 47 - G4LPhysicsFreeVector: corrected use of GetValue() to adopt implementation 48 available from the base class. 49 50 Mar 19, 2008 V.Grichine (global-V09-01-03) 51 - Modified G4RandomDirection global function to use unit radius sphere surface 52 algorithm instead of 8-quadrants technique, giving 30% performance boost. 23 53 24 54 Mar 13, 2008 G.Cosmo (global-V09-01-02) -
trunk/source/global/management/include/G4Allocator.hh
r833 r850 26 26 // 27 27 // $Id: G4Allocator.hh,v 1.18 2006/06/29 19:01:16 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4AllocatorPool.hh
r833 r850 26 26 // 27 27 // $Id: G4AllocatorPool.hh,v 1.5 2006/06/29 19:01:18 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4ApplicationState.hh
r833 r850 26 26 // 27 27 // $Id: G4ApplicationState.hh,v 1.4 2006/06/29 19:01:20 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 -
trunk/source/global/management/include/G4DataVector.hh
r833 r850 26 26 // 27 27 // $Id: G4DataVector.hh,v 1.15 2007/11/13 17:35:06 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4DataVector.icc
r833 r850 26 26 // 27 27 // $Id: G4DataVector.icc,v 1.2 2006/06/29 19:01:24 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4ErrorPropagatorData.hh
r833 r850 26 26 // 27 27 // $Id: G4ErrorPropagatorData.hh,v 1.3 2007/06/08 10:33:47 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4ErrorPropagatorData.icc
r833 r850 26 26 // 27 27 // $Id: G4ErrorPropagatorData.icc,v 1.4 2007/06/08 10:33:47 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4ExceptionSeverity.hh
r833 r850 26 26 // 27 27 // $Id: G4ExceptionSeverity.hh,v 1.3 2006/06/29 19:01:27 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Class Description: -
trunk/source/global/management/include/G4FPEDetection.hh
r833 r850 26 26 // 27 27 // $Id: G4FPEDetection.hh,v 1.2 2006/11/15 16:00:18 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4FastVector.hh
r833 r850 26 26 // 27 27 // $Id: G4FastVector.hh,v 1.5 2006/06/29 19:01:48 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4GeometryTolerance.hh
r833 r850 26 26 // 27 27 // $Id: G4GeometryTolerance.hh,v 1.2 2007/06/18 13:26:40 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -------------------------------------------------------------------- -
trunk/source/global/management/include/G4LPhysicsFreeVector.hh
r833 r850 25 25 // 26 26 // 27 // $Id: G4LPhysicsFreeVector.hh,v 1. 8 2006/06/29 19:01:51 gunterExp $28 // GEANT4 tag $Name: geant4-09-01-patch-02$27 // $Id: G4LPhysicsFreeVector.hh,v 1.10 2008/04/07 14:18:57 gcosmo Exp $ 28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // … … 42 42 43 43 // F.W. Jones, TRIUMF, 04-JUN-96 44 //45 // 10-JUL-96 FWJ: adapted to changes in G4PhysicsVector.46 //47 // 27-MAR-97 FWJ: first version for Alpha release48 // 20-JUN-97 FWJ: added comment re GetValue(): no longer virtual49 44 // 11-NOV-00 H.Kurashige: use STL vector for dataVector and binVector 50 // 45 // 02-APR-08 A.Bagulya: use GetValue() from base class 46 // ------------------------------------------------------------------ 51 47 52 48 #ifndef G4LPhysicsFreeVector_h … … 58 54 { 59 55 60 public: 56 public: // with description 61 57 62 58 G4LPhysicsFreeVector(); 63 64 public: // with description65 59 66 60 G4LPhysicsFreeVector(size_t nbin, G4double binmin, G4double binmax); … … 71 65 // G4PhysicsVector has PutValue() but it is inconvenient. 72 66 // Want to simultaneously fill the bin and data vectors. 73 74 G4double GetValue(G4double theEnergy, G4bool& isOutRange);75 // Note that theEnergy could be energy, momentum, or whatever.76 67 77 68 void SetVerboseLevel(G4int value); -
trunk/source/global/management/include/G4LPhysicsFreeVector.icc
r833 r850 25 25 // 26 26 // 27 // $Id: G4LPhysicsFreeVector.icc,v 1. 7 2006/06/29 19:02:10 gunterExp $28 // GEANT4 tag $Name: geant4-09-01-patch-02$27 // $Id: G4LPhysicsFreeVector.icc,v 1.11 2008/09/06 19:52:16 vnivanch Exp $ 28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // … … 40 40 // 41 41 // F.W. Jones, TRIUMF, 04-JUN-96 42 // 05 Sep. 2008, V.Ivanchenko : added protections for zero-length vector 42 43 // -------------------------------------------------------------------------- 43 44 // G4PhysicsVector has PutValue() but it is inconvenient.45 // Want to simultaneously fill the bin and data vectors.46 44 47 45 inline 48 46 void G4LPhysicsFreeVector::PutValues(size_t binNumber, 49 47 G4double binValue, G4double dataValue) 48 // G4PhysicsVector has PutValue() but it is inconvenient. 49 // Want to simultaneously fill the bin and data vectors. 50 50 { 51 binVector[binNumber] = binValue; 52 dataVector[binNumber] = dataValue; 51 if(binNumber <= numberOfBin) { 52 binVector[binNumber] = binValue; 53 dataVector[binNumber]= dataValue; 54 if(0 == binNumber) edgeMin = binValue; 55 else if( numberOfBin - 1 == binNumber) edgeMax = binValue; 56 } 53 57 } 54 55 // Note that theEnergy could be energy, momentum, or whatever.56 // Note: GetValue() is no longer virtual in the parent class57 // G4PhysicsVector, so at present the following function cannot58 // be called through a base class pointer.59 60 inline61 G4double G4LPhysicsFreeVector::GetValue(G4double theEnergy, G4bool& isOutRange)62 {63 G4double returnValue = 0.;64 65 // verboseLevel = 2;66 67 if (theEnergy < edgeMin)68 {69 isOutRange = true;70 71 #ifdef G4VERBOSE72 if (verboseLevel > 1)73 {74 G4cout << "G4LPhysicsFreeVector::GetValue " << theEnergy75 << " " << dataVector[0] << " " << isOutRange << G4endl;76 }77 #endif78 returnValue = dataVector[0];79 }80 else if (theEnergy > edgeMax)81 {82 isOutRange = true;83 84 #ifdef G4VERBOSE85 if (verboseLevel > 1)86 {87 G4cout << "G4LPhysicsFreeVector::GetValue " << theEnergy88 << " " << dataVector[numberOfBin - 1]89 << " " << isOutRange << G4endl;90 }91 #endif92 returnValue = dataVector[numberOfBin - 1];93 }94 else95 {96 isOutRange = false;97 98 G4int n = FindBinLocation(theEnergy);99 100 G4double dsde = (dataVector[n + 1] - dataVector[n])/101 (binVector[n + 1] - binVector[n]);102 #ifdef G4VERBOSE103 if (verboseLevel > 1)104 {105 G4cout << "G4LPhysicsFreeVector::GetValue " << theEnergy106 << " " << dataVector[n] + (theEnergy - binVector[n])*dsde107 << " " << isOutRange << G4endl;108 }109 #endif110 returnValue = dataVector[n] + (theEnergy - binVector[n])*dsde;111 }112 return returnValue;113 }114 58 115 59 inline -
trunk/source/global/management/include/G4OrderedTable.hh
r833 r850 26 26 // 27 27 // $Id: G4OrderedTable.hh,v 1.14 2007/11/13 17:35:06 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4PhysicsFreeVector.hh
r833 r850 26 26 // 27 27 // $Id: G4PhysicsFreeVector.hh,v 1.10 2006/06/29 19:02:18 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4PhysicsLinearVector.hh
r833 r850 26 26 // 27 27 // $Id: G4PhysicsLinearVector.hh,v 1.10 2006/06/29 19:02:21 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4PhysicsLnVector.hh
r833 r850 26 26 // 27 27 // $Id: G4PhysicsLnVector.hh,v 1.12 2006/06/29 19:02:23 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4PhysicsLogVector.hh
r833 r850 26 26 // 27 27 // $Id: G4PhysicsLogVector.hh,v 1.11 2006/06/29 19:02:25 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4PhysicsOrderedFreeVector.hh
r833 r850 26 26 // 27 27 // $Id: G4PhysicsOrderedFreeVector.hh,v 1.9 2006/06/29 19:02:28 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 //////////////////////////////////////////////////////////////////////// -
trunk/source/global/management/include/G4PhysicsOrderedFreeVector.icc
r833 r850 26 26 // 27 27 // $Id: G4PhysicsOrderedFreeVector.icc,v 1.8 2006/06/29 19:02:31 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 //////////////////////////////////////////////////////////////////////// -
trunk/source/global/management/include/G4PhysicsTable.hh
r833 r850 26 26 // 27 27 // $Id: G4PhysicsTable.hh,v 1.18 2007/11/13 17:35:06 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4PhysicsTable.icc
r833 r850 26 26 // 27 27 // $Id: G4PhysicsTable.icc,v 1.8 2006/06/29 19:02:36 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4PhysicsVector.hh
r833 r850 25 25 // 26 26 // 27 // $Id: G4PhysicsVector.hh,v 1.1 4 2006/06/29 19:02:38 gunterExp $28 // GEANT4 tag $Name: geant4-09-01-patch-02$27 // $Id: G4PhysicsVector.hh,v 1.17 2008/04/07 14:18:57 gcosmo Exp $ 28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // … … 48 48 // 01 Jul. 1996, K.Amako : Now GetValue not virtual 49 49 // 21 Sep. 1996, K.Amako : Added [] and () operators 50 // 11 Nov. 2000, H.Kurashige : use STL vector for dataVector and binVector51 // 18 Jan. 2001, H.Kurashige : removed ptrNextTable52 // 0 9 Mar. 2001, H.Kurashige : added G4PhysicsVectorType & Store/Retrieve()50 // 11 Nov. 2000, H.Kurashige : Use STL vector for dataVector and binVector 51 // 09 Mar. 2001, H.Kurashige : Added G4PhysicsVectorType & Store/Retrieve() 52 // 02 Apr. 2008, A.Bagulya : Added SplineInterpolation() and SetSpline() 53 53 // 54 54 //--------------------------------------------------------------- … … 63 63 #include <fstream> 64 64 65 #include 65 #include "G4PhysicsVectorType.hh" 66 66 67 67 class G4PhysicsVector … … 69 69 public: 70 70 71 G4PhysicsVector( );71 G4PhysicsVector(G4bool spline = false); 72 72 // constructor 73 73 // This class is an abstract class with pure virtual method of … … 129 129 inline G4PhysicsVectorType GetType() const; 130 130 // Get physics vector type 131 132 inline void SetSpline(G4bool); 133 // Activate/deactivate Spline interpolation. 131 134 132 135 virtual G4bool Store(std::ofstream& fOut, G4bool ascii=false); … … 137 140 138 141 protected: 139 140 inline G4double LinearInterpolation(G4double theEnergy, size_t theLocBin);141 // Linear interpolation function142 142 143 143 virtual size_t FindBinLocation(G4double theEnergy) const=0; … … 161 161 private: 162 162 163 G4String comment; 163 inline G4double LinearInterpolation(); 164 // Linear interpolation function 165 inline G4double SplineInterpolation(); 166 // Spline interpolation function 167 168 inline void Interpolation(); 169 170 void FillSecondDerivatives(); 171 // Initialise second derivatives for spline 172 173 G4double* secDerivative; 174 175 G4String comment; 176 G4bool useSpline; 164 177 }; 165 178 -
trunk/source/global/management/include/G4PhysicsVector.icc
r833 r850 25 25 // 26 26 // 27 // $Id: G4PhysicsVector.icc,v 1. 9 2006/06/29 19:02:40 gunterExp $28 // GEANT4 tag $Name: geant4-09-01-patch-02$27 // $Id: G4PhysicsVector.icc,v 1.14 2008/09/05 18:04:45 vnivanch Exp $ 28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // … … 41 41 // energy scale, for example like 'log', 'linear', 'free', etc. 42 42 // 43 //--------------------------------------------------------------- 44 43 // Modified: 44 // 05 Sep. 2008, V.Ivanchenko : added protections for zero-length vector 45 //--------------------------------------------------------------- 45 46 46 47 inline … … 50 51 } 51 52 53 //--------------------------------------------------------------- 52 54 53 55 inline … … 57 59 } 58 60 61 //--------------------------------------------------------------- 59 62 60 63 inline … … 64 67 } 65 68 66 67 68 inline 69 G4double G4PhysicsVector::LinearInterpolation(G4double theEnergy, 70 size_t theLocBin) 71 { 72 69 //--------------------------------------------------------------- 70 71 inline 72 G4double G4PhysicsVector::LinearInterpolation() 73 { 73 74 // Linear interpolation is used to get the value. If the give energy 74 75 // is in the highest bin, no interpolation will be Done. Because … … 77 78 // numberOfBin-1. 78 79 79 G4double intplFactor = (theEnergy-binVector[theLocBin]) 80 / (binVector[theLocBin+1]-binVector[theLocBin]); // Interpolation factor 81 82 return dataVector[theLocBin] + 83 ( dataVector[theLocBin+1]-dataVector[theLocBin] ) * intplFactor; 84 } 85 86 87 inline 88 G4double G4PhysicsVector::GetValue(G4double theEnergy, 89 G4bool& isOutRange) 90 { 91 80 G4double intplFactor = (lastEnergy-binVector[lastBin]) 81 / (binVector[lastBin+1]-binVector[lastBin]); // Interpolation factor 82 83 return dataVector[lastBin] + 84 ( dataVector[lastBin+1]-dataVector[lastBin] ) * intplFactor; 85 } 86 87 //--------------------------------------------------------------- 88 89 inline 90 G4double G4PhysicsVector::SplineInterpolation() 91 { 92 // Spline interpolation is used to get the value. If the give energy 93 // is in the highest bin, no interpolation will be Done. Because 94 // there is an extra bin hidden from a user at locBin=numberOfBin, 95 // the following interpolation is valid even the current locBin= 96 // numberOfBin-1. 97 98 if( !secDerivative ) { FillSecondDerivatives(); } 99 100 // check bin value 101 G4double delta = binVector[lastBin+1] - binVector[lastBin]; 102 103 G4double a = (binVector[lastBin+1] - lastEnergy)/delta; 104 G4double b = (lastEnergy - binVector[lastBin])/delta; 105 106 // Final evaluation of cubic spline polynomial for return 107 G4double y1 = dataVector[lastBin]; 108 G4double y2 = dataVector[lastBin+1]; 109 110 G4double res = a*y1 + b*y2 + 111 ((a*a*a - a)*secDerivative[lastBin] + 112 (b*b*b - b)*secDerivative[lastBin+1])*delta*delta/6.0 ; 113 114 return res; 115 } 116 117 //--------------------------------------------------------------- 118 119 inline 120 G4double G4PhysicsVector::GetValue(G4double theEnergy, G4bool&) 121 { 92 122 // Use cache for speed up - check if the value 'theEnergy' is same as the 93 123 // last call. If it is same, then use the last bin location. Also the … … 95 125 // bin of last call, then the last bin location is used. 96 126 97 isOutRange = false; // No range check. 98 99 size_t locBin = 0; 100 101 if( !(theEnergy != lastEnergy) ) { 102 return lastValue; 103 104 } else if( (theEnergy < lastEnergy) 105 && (theEnergy >= binVector[lastBin]) ) { 106 locBin = lastBin; 107 108 lastEnergy = theEnergy; 109 lastValue = LinearInterpolation(theEnergy, locBin); 110 return lastValue; 111 112 } else if( theEnergy < edgeMin ){ 127 if( theEnergy == lastEnergy ) { 128 129 } else if( theEnergy <= edgeMin ) { 113 130 lastBin = 0; 114 131 lastEnergy = theEnergy; 115 lastValue = dataVector[0]; 116 return lastValue; 132 lastValue = dataVector[0]; 133 134 } else if(theEnergy < lastEnergy && theEnergy >= binVector[lastBin]) { 135 lastEnergy = theEnergy; 136 Interpolation(); 137 138 } else if(theEnergy < lastEnergy && theEnergy >= binVector[lastBin-1]) { 139 lastBin--; 140 lastEnergy = theEnergy; 141 Interpolation(); 117 142 118 143 } else if( theEnergy >= edgeMax ){ 119 144 lastBin = numberOfBin-1; 120 lastEnergy = theEnergy; 121 lastValue = dataVector[ numberOfBin-1 ]; 122 return lastValue; 123 124 } else { 125 locBin = FindBinLocation(theEnergy); 126 127 lastBin = locBin; 128 lastEnergy = theEnergy; 129 lastValue = LinearInterpolation(theEnergy, locBin); 130 return lastValue; 145 lastEnergy = edgeMax; 146 lastValue = dataVector[lastBin]; 147 148 } else { 149 lastBin = FindBinLocation(theEnergy); 150 lastEnergy = theEnergy; 151 Interpolation(); 131 152 } 132 133 } 153 return lastValue; 154 } 155 156 //--------------------------------------------------------------- 157 158 inline 159 void G4PhysicsVector::Interpolation() 160 { 161 if(useSpline) { lastValue = SplineInterpolation(); } 162 else { lastValue = LinearInterpolation(); } 163 } 164 165 //--------------------------------------------------------------- 134 166 135 167 inline 136 168 void G4PhysicsVector::PutValue(size_t binNumber, G4double theValue) 137 169 { 138 dataVector[binNumber] = theValue; 139 140 // Fill the bin which is hidden to user with theValue. This is to 141 // handle correctly when Energy=theEmax in getValue. 142 if(binNumber==numberOfBin-1) { 143 dataVector[binNumber+1] = theValue; 144 } 145 } 170 if(binNumber < numberOfBin) { 171 dataVector[binNumber] = theValue; 172 173 // Fill the bin which is hidden to user with theValue. This is to 174 // handle correctly when Energy=theEmax in getValue. 175 176 if(binNumber==numberOfBin-1) { dataVector[binNumber+1] = theValue; } 177 } 178 } 179 180 //--------------------------------------------------------------- 146 181 147 182 inline … … 154 189 } 155 190 191 //--------------------------------------------------------------- 156 192 157 193 inline … … 161 197 } 162 198 199 //--------------------------------------------------------------- 200 163 201 inline 164 202 const G4String& G4PhysicsVector::GetComment() const … … 167 205 } 168 206 207 //--------------------------------------------------------------- 208 169 209 inline 170 210 G4PhysicsVectorType G4PhysicsVector::GetType() const … … 172 212 return type; 173 213 } 214 215 //--------------------------------------------------------------- 216 217 inline 218 void G4PhysicsVector::SetSpline(G4bool val) 219 { 220 useSpline = val; 221 } -
trunk/source/global/management/include/G4PhysicsVectorType.hh
r833 r850 26 26 // 27 27 // $Id: G4PhysicsVectorType.hh,v 1.4 2006/06/29 19:02:42 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -------------------------------------------------------------- -
trunk/source/global/management/include/G4ReferenceCountedHandle.hh
r833 r850 26 26 // 27 27 // $Id: G4ReferenceCountedHandle.hh,v 1.15 2006/06/29 19:02:46 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4RotationMatrix.hh
r833 r850 26 26 // 27 27 // $Id: G4RotationMatrix.hh,v 1.5 2006/06/29 19:02:54 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4SIunits.hh
r833 r850 26 26 // 27 27 // $Id: G4SIunits.hh,v 1.5 2006/09/15 08:16:10 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // ---------------------------------------------------------------------- -
trunk/source/global/management/include/G4SliceTimer.hh
r833 r850 26 26 // 27 27 // $Id: G4SliceTimer.hh,v 1.1 2006/10/23 07:43:31 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4SliceTimer.icc
r833 r850 26 26 // 27 27 // $Id: G4SliceTimer.icc,v 1.1 2006/10/23 07:43:31 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4StateManager.hh
r833 r850 26 26 // 27 27 // $Id: G4StateManager.hh,v 1.10 2006/06/29 19:02:59 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4StateManager.icc
r833 r850 26 26 // 27 27 // $Id: G4StateManager.icc,v 1.2 2006/06/29 19:03:02 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4String.hh
r833 r850 25 25 // 26 26 // 27 // $Id: G4String.hh,v 1. 7.2.1 2008/04/23 09:22:49gcosmo Exp $28 // GEANT4 tag $Name: geant4-09-01-patch-02$27 // $Id: G4String.hh,v 1.8 2008/03/13 09:35:08 gcosmo Exp $ 28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4String.icc
r833 r850 26 26 // 27 27 // $Id: G4String.icc,v 1.9 2007/11/13 17:35:06 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4ThreeVector.hh
r833 r850 26 26 // 27 27 // $Id: G4ThreeVector.hh,v 1.5 2006/06/29 19:03:12 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4Timer.hh
r833 r850 26 26 // 27 27 // $Id: G4Timer.hh,v 1.14 2006/06/29 19:03:15 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4Timer.icc
r833 r850 26 26 // 27 27 // $Id: G4Timer.icc,v 1.2 2006/06/29 19:03:17 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4Tokenizer.hh
r833 r850 26 26 // 27 27 // $Id: G4Tokenizer.hh,v 1.2 2006/06/29 19:03:20 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4TwoVector.hh
r833 r850 26 26 // 27 27 // $Id: G4TwoVector.hh,v 1.1 2007/02/09 12:10:30 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4Types.hh
r833 r850 26 26 // 27 27 // $Id: G4Types.hh,v 1.14 2006/06/29 19:03:22 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4UnitsTable.hh
r833 r850 26 26 // 27 27 // $Id: G4UnitsTable.hh,v 1.18 2006/11/30 10:37:57 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4UnitsTable.icc
r833 r850 26 26 // 27 27 // $Id: G4UnitsTable.icc,v 1.2 2006/06/29 19:03:26 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4UserLimits.hh
r833 r850 26 26 // 27 27 // $Id: G4UserLimits.hh,v 1.9 2006/06/29 19:03:28 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4UserLimits.icc
r833 r850 26 26 // 27 27 // $Id: G4UserLimits.icc,v 1.8 2006/06/29 19:03:31 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4VExceptionHandler.hh
r833 r850 26 26 // 27 27 // $Id: G4VExceptionHandler.hh,v 1.2 2006/06/29 19:03:33 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4VNotifier.hh
r833 r850 26 26 // 27 27 // $Id: G4VNotifier.hh,v 1.2 2006/06/29 19:03:35 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // class G4VNotifier -
trunk/source/global/management/include/G4VStateDependent.hh
r833 r850 26 26 // 27 27 // $Id: G4VStateDependent.hh,v 1.5 2006/06/29 19:03:37 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4Version.hh
r833 r850 25 25 // 26 26 // 27 // $Id: G4Version.hh,v 1.1 3.2.1 2008/04/23 09:22:49gcosmo Exp $28 // GEANT4 tag $Name: geant4-09-01-patch-02$27 // $Id: G4Version.hh,v 1.16 2008/06/26 06:38:51 gcosmo Exp $ 28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // Version information … … 47 47 48 48 #ifndef G4VERSION_NUMBER 49 #define G4VERSION_NUMBER 9 1249 #define G4VERSION_NUMBER 920 50 50 #endif 51 51 52 52 #ifndef G4VERSION_TAG 53 #define G4VERSION_TAG "$Name: geant4-09-01-patch-02$"53 #define G4VERSION_TAG "$Name: HEAD $" 54 54 #endif 55 55 … … 58 58 #include "G4String.hh" 59 59 60 static const G4String G4Version = "$Name: geant4-09-01-patch-02$";61 static const G4String G4Date = "( 9-May-2008)";60 static const G4String G4Version = "$Name: HEAD $"; 61 static const G4String G4Date = "(4-July-2008)"; 62 62 63 63 #endif -
trunk/source/global/management/include/G4coutDestination.hh
r833 r850 26 26 // 27 27 // $Id: G4coutDestination.hh,v 1.6 2006/06/29 19:03:41 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4ios.hh
r833 r850 26 26 // 27 27 // $Id: G4ios.hh,v 1.10 2006/06/29 19:03:43 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/G4strstreambuf.hh
r833 r850 26 26 // 27 27 // $Id: G4strstreambuf.hh,v 1.16 2007/11/13 17:35:06 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // ==================================================================== 30 30 // -
trunk/source/global/management/include/G4strstreambuf.icc
r833 r850 26 26 // 27 27 // $Id: G4strstreambuf.icc,v 1.13 2006/06/29 19:03:49 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // ==================================================================== 30 30 // G4strstreambuf.icc -
trunk/source/global/management/include/globals.hh
r833 r850 26 26 // 27 27 // $Id: globals.hh,v 1.27 2006/06/29 19:03:51 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/include/templates.hh
r833 r850 25 25 // 26 26 // 27 // $Id: templates.hh,v 1.1 0.8.1 2008/04/23 09:22:49gcosmo Exp $28 // GEANT4 tag $Name: geant4-09-01-patch-02$27 // $Id: templates.hh,v 1.13 2008/08/15 12:15:53 gcosmo Exp $ 28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // … … 112 112 113 113 template <class T> 114 inline void G4SwapPtr(T* a, T*b) {115 T* tmp= a;114 inline void G4SwapPtr(T*& a, T*& b) { 115 T* tmp= a; 116 116 a = b; 117 117 b = tmp; -
trunk/source/global/management/src/G4AllocatorPool.cc
r833 r850 26 26 // 27 27 // $Id: G4AllocatorPool.cc,v 1.4 2006/06/29 19:03:57 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/src/G4DataVector.cc
r833 r850 26 26 // 27 27 // $Id: G4DataVector.cc,v 1.9 2007/11/13 17:35:06 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/src/G4ErrorPropagatorData.cc
r833 r850 26 26 // 27 27 // $Id: G4ErrorPropagatorData.cc,v 1.3 2007/06/05 13:04:30 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/src/G4Exception.cc
r833 r850 26 26 // 27 27 // $Id: G4Exception.cc,v 1.21 2007/11/13 17:35:06 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/src/G4GeometryTolerance.cc
r833 r850 25 25 // 26 26 // 27 // $Id: G4GeometryTolerance.cc,v 1. 2.4.1 2008/04/23 09:22:49gcosmo Exp $28 // GEANT4 tag $Name: geant4-09-01-patch-02$27 // $Id: G4GeometryTolerance.cc,v 1.3 2008/02/15 07:29:51 gcosmo Exp $ 28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // class G4GeometryTolerance -
trunk/source/global/management/src/G4LPhysicsFreeVector.cc
r833 r850 25 25 // 26 26 // 27 // $Id: G4LPhysicsFreeVector.cc,v 1.1 2 2007/05/14 10:27:06 gcosmoExp $28 // GEANT4 tag $Name: geant4-09-01-patch-02$27 // $Id: G4LPhysicsFreeVector.cc,v 1.17 2008/09/06 19:52:16 vnivanch Exp $ 28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // … … 37 37 // 38 38 // 27-MAR-97 FWJ: first version for Alpha release 39 // 05-SEP-2008, V.Ivanchenko : added protections for zero-length vector 40 // -------------------------------------------------------------------- 39 41 40 42 #include "G4LPhysicsFreeVector.hh" … … 42 44 #include "G4ios.hh" 43 45 46 // -------------------------------------------------------------------- 47 44 48 G4LPhysicsFreeVector::G4LPhysicsFreeVector() 45 : verboseLevel(0)49 : G4PhysicsVector(), verboseLevel(0) 46 50 { 47 type = T_G4LPhysicsFreeVector; 51 type = T_G4LPhysicsFreeVector; 52 } 48 53 49 edgeMin = 0.0; 50 edgeMax = 0.0; 51 numberOfBin = 0; 52 } 54 // -------------------------------------------------------------------- 53 55 54 56 G4LPhysicsFreeVector::G4LPhysicsFreeVector(size_t nbin, 55 57 G4double binmin, 56 58 G4double binmax) 57 :verboseLevel(0)59 : G4PhysicsVector(), verboseLevel(0) 58 60 { 59 type = T_G4LPhysicsFreeVector; 61 type = T_G4LPhysicsFreeVector; 62 63 numberOfBin = nbin; 64 if(nbin > 0) { 65 binVector.resize(nbin+1); 66 dataVector.resize(nbin+1); 67 edgeMin = binmin; 68 edgeMax = binmax; 69 for (size_t i=0; i<=numberOfBin; i++) { 70 binVector[i] = binmin; 71 dataVector[i]= 0.0; 72 } 73 } 74 } 60 75 61 edgeMin = binmin; 62 edgeMax = binmax; 63 numberOfBin = nbin; 64 lastEnergy = 0.; 65 lastValue = 0.; 66 lastBin = 0; 67 binVector.reserve(nbin+1); 68 dataVector.reserve(nbin+1); 69 for (size_t i=0; i<=numberOfBin; i++) 70 { 71 binVector.push_back(0.0); 72 dataVector.push_back(0.0); 73 } 74 } 76 // -------------------------------------------------------------------- 75 77 76 78 G4LPhysicsFreeVector::~G4LPhysicsFreeVector() 77 79 { 78 80 } 81 82 // -------------------------------------------------------------------- 79 83 80 84 void G4LPhysicsFreeVector::DumpValues() -
trunk/source/global/management/src/G4OrderedTable.cc
r833 r850 26 26 // 27 27 // $Id: G4OrderedTable.cc,v 1.6 2007/11/13 17:35:06 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/src/G4PhysicsFreeVector.cc
r833 r850 26 26 // 27 27 // $Id: G4PhysicsFreeVector.cc,v 1.10 2006/06/29 19:04:10 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/src/G4PhysicsLinearVector.cc
r833 r850 26 26 // 27 27 // $Id: G4PhysicsLinearVector.cc,v 1.12 2006/06/29 19:04:13 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/src/G4PhysicsLnVector.cc
r833 r850 26 26 // 27 27 // $Id: G4PhysicsLnVector.cc,v 1.15 2006/06/29 19:04:15 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/src/G4PhysicsLogVector.cc
r833 r850 25 25 // 26 26 // 27 // $Id: G4PhysicsLogVector.cc,v 1.1 3 2006/06/29 19:04:17 gunterExp $28 // GEANT4 tag $Name: $27 // $Id: G4PhysicsLogVector.cc,v 1.16 2008/09/06 19:52:16 vnivanch Exp $ 28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // … … 41 41 // 11 Nov. 2000, H.Kurashige : use STL vector for dataVector and binVector 42 42 // 9 Mar. 2001, H.Kurashige : add PhysicsVector type and Retrieve 43 // 05 Sep. 2008, V.Ivanchenko : added protections for zero-length vector 43 44 // 44 45 // -------------------------------------------------------------- … … 47 48 48 49 G4PhysicsLogVector::G4PhysicsLogVector() 49 : dBin(0.), baseBin(0.)50 : G4PhysicsVector(), dBin(0.), baseBin(0.) 50 51 { 51 52 type = T_G4PhysicsLogVector; … … 53 54 54 55 G4PhysicsLogVector::G4PhysicsLogVector(size_t theNbin) 55 : dBin(0.), baseBin(0.)56 : G4PhysicsVector(), dBin(0.), baseBin(0.) 56 57 { 57 58 type = T_G4PhysicsLogVector; … … 59 60 // Add extra one bin (hidden to user) to handle correctly when 60 61 // Energy=theEmax in getValue. 61 dataVector.reserve(theNbin+1);62 binVector.reserve(theNbin+1);63 62 64 63 numberOfBin = theNbin; 65 64 66 edgeMin = 0.; 67 edgeMax = 0.; 68 69 lastBin = INT_MAX; 70 lastEnergy = -DBL_MAX; 71 lastValue = DBL_MAX; 72 73 for (size_t i=0; i<=numberOfBin; i++) 74 { 75 binVector.push_back(0.0); 76 dataVector.push_back(0.0); 65 if(numberOfBin > 0) { 66 dataVector.resize(theNbin+1); 67 binVector.resize(theNbin+1); 68 edgeMin = 1; 69 edgeMax = numberOfBin; 70 for (size_t i=0; i<=numberOfBin; i++) { 71 binVector[i] = i + 1; 72 dataVector[i]= 0.0; 73 } 77 74 } 78 75 } … … 80 77 G4PhysicsLogVector::G4PhysicsLogVector(G4double theEmin, 81 78 G4double theEmax, size_t theNbin) 82 : dBin(std::log10(theEmax/theEmin)/theNbin),79 : G4PhysicsVector(), dBin(std::log10(theEmax/theEmin)/theNbin), 83 80 baseBin(std::log10(theEmin)/dBin) 84 81 { … … 87 84 // Add extra one bin (hidden to user) to handle correctly when 88 85 // Energy=theEmax in getValue. 89 dataVector.res erve(theNbin+1);90 binVector.res erve(theNbin+1);86 dataVector.resize(theNbin+1); 87 binVector.resize(theNbin+1); 91 88 92 89 numberOfBin = theNbin; 93 90 94 for (size_t i=0; i<numberOfBin+1; i++) 95 { 96 binVector.push_back(std::pow(10., std::log10(theEmin)+i*dBin)); 97 dataVector.push_back(0.0); 91 if(numberOfBin > 0) { 92 for (size_t i=0; i<=numberOfBin; i++) { 93 binVector[i] = std::pow(10., std::log10(theEmin)+i*dBin); 94 dataVector[i]= 0.0; 95 } 96 edgeMin = binVector[0]; 97 edgeMax = binVector[numberOfBin-1]; 98 98 } 99 100 edgeMin = binVector[0];101 edgeMax = binVector[numberOfBin-1];102 103 lastBin = INT_MAX;104 lastEnergy = -DBL_MAX;105 lastValue = DBL_MAX;106 99 } 107 100 -
trunk/source/global/management/src/G4PhysicsOrderedFreeVector.cc
r833 r850 26 26 // 27 27 // $Id: G4PhysicsOrderedFreeVector.cc,v 1.10 2006/06/29 19:04:20 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 //////////////////////////////////////////////////////////////////////// -
trunk/source/global/management/src/G4PhysicsTable.cc
r833 r850 26 26 // 27 27 // $Id: G4PhysicsTable.cc,v 1.15 2007/11/13 17:35:06 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/src/G4PhysicsVector.cc
r833 r850 25 25 // 26 26 // 27 // $Id: G4PhysicsVector.cc,v 1. 17 2006/06/29 19:04:25 gunterExp $28 // GEANT4 tag $Name: geant4-09-01-patch-02$27 // $Id: G4PhysicsVector.cc,v 1.22 2008/09/05 18:04:45 vnivanch Exp $ 28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // … … 42 42 // 18 Jan. 2001, H.Kurashige : removed ptrNextTable 43 43 // 09 Mar. 2001, H.Kurashige : added G4PhysicsVector type 44 // 05 Sep. 2008, V.Ivanchenko : added protections for zero-length vector 44 45 // -------------------------------------------------------------- 45 46 … … 47 48 #include <iomanip> 48 49 49 G4PhysicsVector::G4PhysicsVector() 50 // -------------------------------------------------------------- 51 52 G4PhysicsVector::G4PhysicsVector(G4bool spline) 50 53 : type(T_G4PhysicsVector), 51 edgeMin(0.), edgeMax(0.), numberOfBin(0), 52 lastEnergy(0.), lastValue(0.), lastBin(0) 53 { 54 } 54 edgeMin(DBL_MAX), edgeMax(0.), numberOfBin(0), 55 lastEnergy(0.), lastValue(0.), lastBin(0), 56 secDerivative(0), useSpline(spline) 57 { 58 binVector.push_back(edgeMin); 59 dataVector.push_back(0.0); 60 } 61 62 // -------------------------------------------------------------- 55 63 56 64 G4PhysicsVector::~G4PhysicsVector() 57 65 { 58 d ataVector.clear();59 binVector.clear(); 60 type = T_G4PhysicsVector; 61 } 66 delete [] secDerivative; 67 } 68 69 // -------------------------------------------------------------- 62 70 63 71 G4PhysicsVector::G4PhysicsVector(const G4PhysicsVector& right) … … 65 73 *this=right; 66 74 } 75 76 // -------------------------------------------------------------- 67 77 68 78 G4PhysicsVector& G4PhysicsVector::operator=(const G4PhysicsVector& right) … … 80 90 dataVector = right.dataVector; 81 91 binVector = right.binVector; 92 secDerivative = right.secDerivative; 93 useSpline = right.useSpline; 82 94 comment = right.comment; 83 95 return *this; 84 96 } 85 97 98 // -------------------------------------------------------------- 99 86 100 G4int G4PhysicsVector::operator==(const G4PhysicsVector &right) const 87 101 { … … 89 103 } 90 104 105 // -------------------------------------------------------------- 106 91 107 G4int G4PhysicsVector::operator!=(const G4PhysicsVector &right) const 92 108 { … … 94 110 } 95 111 112 // -------------------------------------------------------------- 113 96 114 G4double G4PhysicsVector::GetLowEdgeEnergy(size_t binNumber) const 97 115 { 98 116 return binVector[binNumber]; 99 117 } 118 119 // -------------------------------------------------------------- 100 120 101 121 G4bool G4PhysicsVector::Store(std::ofstream& fOut, G4bool ascii) … … 129 149 return true; 130 150 } 151 152 // -------------------------------------------------------------- 131 153 132 154 G4bool G4PhysicsVector::Retrieve(std::ifstream& fIn, G4bool ascii) … … 153 175 binVector.reserve(size); 154 176 dataVector.reserve(size); 177 G4double vBin, vData; 178 155 179 for(size_t i = 0; i < size ; i++) 156 180 { 157 G4double vBin=0., vData=0.; 181 vBin = 0.; 182 vData= 0.; 158 183 fIn >> vBin >> vData; 159 184 if (fIn.fail()) { return false; } … … 176 201 G4double* value = new G4double[2*size]; 177 202 fIn.read((char*)(value), 2*size*(sizeof(G4double)) ); 178 if (G4int(fIn.gcount()) != G4int(2*size*(sizeof(G4double))) ){ 203 if (G4int(fIn.gcount()) != G4int(2*size*(sizeof(G4double))) ) 204 { 179 205 delete [] value; 180 206 return false; … … 183 209 binVector.reserve(size); 184 210 dataVector.reserve(size); 185 for(size_t i = 0; i < size; i++) { 211 for(size_t i = 0; i < size; i++) 212 { 186 213 binVector.push_back(value[2*i]); 187 214 dataVector.push_back(value[2*i+1]); … … 190 217 return true; 191 218 } 192 219 220 // -------------------------------------------------------------- 221 222 void G4PhysicsVector::FillSecondDerivatives() 223 { 224 secDerivative = new G4double [numberOfBin]; 225 226 secDerivative[0] = 0.0 ; 227 228 // cannot compute derivatives for less than 3 points 229 if(3 > numberOfBin) { 230 secDerivative[numberOfBin-1] = 0.0 ; 231 return; 232 } 233 234 G4double* u = new G4double [numberOfBin]; 235 u[0] = 0.0 ; 236 237 // Decomposition loop for tridiagonal algorithm. secDerivative[i] 238 // and u[i] are used for temporary storage of the decomposed factors. 239 240 for(size_t i=1; i<numberOfBin-1; i++) 241 { 242 G4double sig = (binVector[i]-binVector[i-1]) 243 / (binVector[i+1]-binVector[i-1]) ; 244 G4double p = sig*secDerivative[i-1] + 2.0 ; 245 secDerivative[i] = (sig - 1.0)/p ; 246 u[i] = (dataVector[i+1]-dataVector[i])/(binVector[i+1]-binVector[i]) 247 - (dataVector[i]-dataVector[i-1])/(binVector[i]-binVector[i-1]) ; 248 u[i] =(6.0*u[i]/(binVector[i+1]-binVector[i-1]) - sig*u[i-1])/p ; 249 } 250 251 G4double qn = 0.0 ; 252 G4double un = 0.0 ; 253 254 secDerivative[numberOfBin-1] = (un - qn*u[numberOfBin-2]) 255 / (qn*secDerivative[numberOfBin-2] + 1.0) ; 256 257 // The back-substitution loop for the triagonal algorithm of solving 258 // a linear system of equations. 259 260 for(G4int k=numberOfBin-2; k>=0; k--) 261 { 262 secDerivative[k] = secDerivative[k]*secDerivative[k+1] + u[k]; 263 } 264 delete [] u; 265 } 266 267 // -------------------------------------------------------------- 268 193 269 std::ostream& operator<<(std::ostream& out, const G4PhysicsVector& pv) 194 270 { -
trunk/source/global/management/src/G4SliceTimer.cc
r833 r850 26 26 // 27 27 // $Id: G4SliceTimer.cc,v 1.2 2006/11/02 15:39:39 gcosmo Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/src/G4StateManager.cc
r833 r850 26 26 // 27 27 // $Id: G4StateManager.cc,v 1.13 2006/11/23 00:41:56 asaim Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/src/G4Timer.cc
r833 r850 26 26 // 27 27 // $Id: G4Timer.cc,v 1.15 2006/06/29 19:04:30 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/src/G4UnitsTable.cc
r833 r850 25 25 // 26 26 // 27 // $Id: G4UnitsTable.cc,v 1.3 6 2006/11/30 10:37:57 gcosmoExp $28 // GEANT4 tag $Name: $27 // $Id: G4UnitsTable.cc,v 1.37 2008/05/06 17:17:08 maire Exp $ 28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... … … 42 42 // MeV*cm2/g ..etc.. ("Energy*Surface/Mass") 43 43 // 18-08-06: remove symbol mum (mma) 44 // 06-05-08: V/m ("Electric field") (mma) 44 45 // 45 46 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... … … 296 297 new G4UnitDefinition("megavolt","MV","Electric potential",megavolt); 297 298 299 //Electric field 300 new G4UnitDefinition( "volt/m","V/m","Electric field",volt/m); 301 298 302 //Magnetic flux 299 303 new G4UnitDefinition("weber","Wb","Magnetic flux",weber); -
trunk/source/global/management/src/G4VExceptionHandler.cc
r833 r850 26 26 // 27 27 // $Id: G4VExceptionHandler.cc,v 1.3 2006/06/29 19:04:35 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/src/G4VNotifier.cc
r833 r850 26 26 // 27 27 // $Id: G4VNotifier.cc,v 1.2 2006/06/29 19:04:37 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // G4VNotifier -
trunk/source/global/management/src/G4VStateDependent.cc
r833 r850 26 26 // 27 27 // $Id: G4VStateDependent.cc,v 1.5 2006/06/29 19:04:39 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/src/G4coutDestination.cc
r833 r850 26 26 // 27 27 // $Id: G4coutDestination.cc,v 1.2 2006/06/29 19:04:41 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 // -
trunk/source/global/management/src/G4ios.cc
r833 r850 26 26 // 27 27 // $Id: G4ios.cc,v 1.9 2006/06/29 19:04:43 gunter Exp $ 28 // GEANT4 tag $Name: $28 // GEANT4 tag $Name: HEAD $ 29 29 // 30 30 //
Note: See TracChangeset
for help on using the changeset viewer.