G4HadronCrossSections.cc

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // GEANT4 tag $Name: not supported by cvs2svn $
00028 //
00029 //
00030 // G4 Hadron Physics class G4HadronCrossSections
00031 // F.W. Jones, TRIUMF, 03-DEC-96
00032 // 
00033 // This class encapsulates cross section data and calculations
00034 // from the Geant3/Gheisha routine GHESIG.
00035 // The overloaded method MakePhysicsVector can be used to Generate 
00036 // Physics Tables for different processes.
00037 //
00038 // Note: this is implemented as a SINGLETON class
00039 //
00040 // 27-MAR-97 FWJ: first version for Alpha release
00041 // 14-APR-97 FWJ: class name changed from G4LCrossSectionData
00042 //    to G4HadronicCrossSections
00043 // 23-Apr-97 Johannes Peter Wellisch: debugging, add the residual particles
00044 // 23-MAY-97 FWJ: corrected problem with neutron cross sections
00045 // 20-JUN-97 FWJ: added some missing elastic data (e.g. K+) and 
00046 //    fixed a momentum/energy units problem in the physics vectors
00047 // 14-APR-98 FWJ: rewritten as class G4HadronCrossSections
00048 //    and adapted to G4CrossSectionDataSet/DataStore class design.
00049 // 25-JUN-98 FWJ: optimised bin selection.
00050 // 06-NOV-98 FWJ: added first-order correction for low-energy
00051 //    inelastic cross sections
00052 //
00053 
00054 #include "G4HadronCrossSections.hh"
00055 #include "G4ios.hh"
00056 #include "G4SystemOfUnits.hh"
00057 #include "G4HadronicException.hh"
00058 #include "G4Pow.hh"
00059  
00060 // Initialize static pointer for singleton instance
00061 G4HadronCrossSections* G4HadronCrossSections::theInstance = 0;
00062 
00063 
00064 // Cross section tables from G3.21/GHEISHA routine GHESIG
00065 
00066 //---------------------------------------------------------------------
00067 // Lab Momentum in GeV/c
00068 //---------------------------------------------------------------------
00069 G4float G4HadronCrossSections::plab[TSIZE] = {
00070        0.00000E+00    , 0.10000    , 0.15000    , 0.20000    , 0.25000    ,
00071        0.30000        , 0.35000    , 0.40000    , 0.45000    , 0.50000    ,
00072        0.55000        , 0.60000    , 0.65000    , 0.70000    , 0.75000    ,
00073        0.80000        , 0.85000    , 0.90000    , 0.95000    ,  1.0000    ,
00074         1.1000        ,  1.2000    ,  1.3000    ,  1.4000    ,  1.5000    ,
00075         1.6000        ,  1.8000    ,  2.0000    ,  2.2000    ,  2.4000    ,
00076         2.6000        ,  2.8000    ,  3.0000    ,  4.0000    ,  5.0000    ,
00077         6.0000        ,  8.0000    ,  10.000    ,  20.000    ,  100.00    ,
00078         1000.0        
00079 };
00080 
00081 //---------------------------------------------------------------------
00082 // Elastic scattering on free protons
00083 //---------------------------------------------------------------------
00084 
00085 G4float G4HadronCrossSections::csel[NPARTS][TSIZE] = {
00086       {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //1
00087        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00088        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00089        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00090        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00091        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00092        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00093        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00094        0.00000E+00},
00095 
00096       {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //2
00097        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00098        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00099        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00100        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00101        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00102        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00103        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00104        0.00000E+00},
00105 
00106       {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //3
00107        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00108        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00109        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00110        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00111        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00112        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00113        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00114        0.00000E+00},
00115 
00116       {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //4
00117        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00118        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00119        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00120        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00121        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00122        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00123        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00124        0.00000E+00},
00125 
00126       {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //5
00127        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00128        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00129        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00130        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00131        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00132        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00133        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00134        0.00000E+00},
00135 
00136       {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //6
00137        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00138        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00139        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00140        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00141        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00142        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00143        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00144        0.00000E+00},
00145 
00146 // Elastic cross section for piplus - p
00147       {0.00000E+00,  6.0000    ,  20.000    ,  71.000    ,  155.00    , //7
00148         195.00    ,  130.00    ,  78.000    ,  60.000    ,  32.000    ,
00149         23.500    ,  18.500    ,  15.000    ,  12.500    ,  10.000    ,
00150         9.1000    ,  8.6000    ,  8.8000    ,  9.5000    ,  10.600    ,
00151         13.000    ,  15.500    ,  17.100    ,  17.200    ,  16.200    ,
00152         15.000    ,  12.300    ,  10.200    ,  9.0000    ,  8.0000    ,
00153         7.3000    ,  6.8000    ,  6.5000    ,  5.8000    ,  5.4000    ,
00154         5.2000    ,  5.0000    ,  4.9000    ,  3.8000    ,  3.2000    ,
00155         3.5000},
00156 
00157       {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //8
00158        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00159        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00160        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00161        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00162        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00163        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00164        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00165        0.00000E+00},
00166 
00167 // Elastic cross section for piminus - p
00168       {0.00000E+00,  1.0000    ,  3.0000    ,  8.0000    ,  18.000    , //9
00169         25.000    ,  27.500    ,  12.300    ,  10.600    ,  11.000    ,
00170         12.500    ,  14.500    ,  17.000    ,  19.400    ,  19.800    ,
00171         16.800    ,  14.000    ,  14.800    ,  20.000    ,  26.100    ,
00172         19.500    ,  15.000    ,  12.800    ,  11.500    ,  10.500    ,
00173         9.8000    ,  8.8000    ,  8.2000    ,  7.8000    ,  7.5000    ,
00174         7.2000    ,  7.0000    ,  6.8000    ,  6.1000    ,  5.7000    ,
00175         5.4000    ,  4.9000    ,  4.6000    ,  4.0000    ,  3.3000    ,
00176         3.5000},
00177 
00178       {10.000    ,  11.200    ,  11.300    ,  11.400    ,  11.500    , //10
00179         11.600    ,  11.800    ,  12.000    ,  12.100    ,  12.200    ,
00180         12.300    ,  12.400    ,  12.500    ,  12.500    ,  12.500    ,
00181         12.400    ,  12.300    ,  12.200    ,  12.000    ,  11.800    ,
00182         11.200    ,  11.500    ,  9.9000    ,  9.4000    ,  8.8000    ,
00183         8.4000    ,  7.5000    ,  6.9000    ,  6.3000    ,  5.9000    ,
00184         5.5000    ,  5.2000    ,  5.0000    ,  4.0000    ,  3.5000    ,
00185         3.3000    ,  3.1000    ,  3.1000    ,  3.0000    ,  2.5000    ,
00186         3.0000},
00187 
00188       {10.000    ,  11.200    ,  11.300    ,  11.400    ,  11.500    , //11
00189         11.600    ,  11.800    ,  12.000    ,  12.100    ,  12.200    ,
00190         12.300    ,  12.400    ,  12.500    ,  12.500    ,  12.500    ,
00191         12.400    ,  12.300    ,  12.200    ,  12.000    ,  11.800    ,
00192         11.200    ,  11.500    ,  9.9000    ,  9.4000    ,  8.8000    ,
00193         8.4000    ,  7.5000    ,  6.9000    ,  6.3000    ,  5.9000    ,
00194         5.5000    ,  5.2000    ,  5.0000    ,  4.0000    ,  3.5000    ,
00195         3.3000    ,  3.1000    ,  3.1000    ,  3.0000    ,  2.5000    ,
00196         3.0000},
00197 
00198       {160.83    ,  82.800    ,  58.575    ,  43.683    ,  34.792    , //12
00199         28.650    ,  24.367    ,  20.917    ,  18.192    ,  16.300    ,
00200         14.608    ,  13.017    ,  12.250    ,  11.700    ,  12.017    ,
00201         14.075    ,  15.842    ,  16.433    ,  16.042    ,  15.008    ,
00202         12.575    ,  10.708    ,  9.2000    ,  8.0167    ,  7.2833    ,
00203         7.0750    ,  6.6333    ,  6.1250    ,  5.6583    ,  5.2750    ,
00204         4.9333    ,  4.6250    ,  4.4583    ,  3.7333    ,  3.3833    ,
00205         3.1833    ,  2.9833    ,  2.7500    ,  2.3667    ,  2.2000    ,
00206         2.6000},
00207 
00208       {300.00    ,  140.00    ,  97.000    ,  70.000    ,  55.000    , //13
00209         45.000    ,  37.000    ,  31.000    ,  26.000    ,  23.000    ,
00210         20.000    ,  17.000    ,  15.500    ,  14.500    ,  14.700    ,
00211         18.500    ,  22.000    ,  23.000    ,  22.500    ,  20.700    ,
00212         16.500    ,  14.000    ,  11.500    ,  9.6000    ,  8.6000    ,
00213         8.5000    ,  8.3000    ,  7.6000    ,  7.0000    ,  6.4000    ,
00214         5.9000    ,  5.5000    ,  5.3000    ,  4.4000    ,  4.1000    ,
00215         3.9000    ,  3.7000    ,  3.3000    ,  2.6000    ,  2.5000    ,
00216         3.0000},
00217 
00218 // Elastic cross section for p-p
00219        {1100.0    ,  115.00    ,  105.00    ,  100.00    ,  56.000    , //14
00220         40.000    ,  27.000    ,  22.000    ,  21.000    ,  20.000    ,
00221         20.000    ,  20.000    ,  20.500    ,  21.000    ,  22.000    ,
00222         23.000    ,  24.000    ,  24.000    ,  24.400    ,  24.500    ,
00223         25.000    ,  25.500    ,  26.000    ,  26.500    ,  27.000    ,
00224         27.000    ,  26.000    ,  23.000    ,  21.500    ,  20.000    ,
00225         19.000    ,  18.000    ,  17.000    ,  13.000    ,  11.500    ,
00226         10.300    ,  9.4000    ,  9.0000    ,  8.8000    ,  7.0000    ,
00227         7.5000},
00228 
00229        {200.00    ,  163.00    ,  141.00    ,  120.00    ,  111.00    , //15
00230         99.500    ,  92.500    ,  86.500    ,  82.000    ,  78.000    ,
00231         74.000    ,  71.000    ,  67.500    ,  65.000    ,  62.500    ,
00232         59.700    ,  58.100    ,  56.300    ,  54.700    ,  52.700    ,
00233         50.000    ,  48.400    ,  47.000    ,  46.000    ,  45.200    ,
00234         42.800    ,  39.200    ,  36.300    ,  32.800    ,  30.400    ,
00235         28.100    ,  26.300    ,  24.500    ,  19.250    ,  16.840    ,
00236         14.600    ,  12.340    ,  11.210    ,  8.8500    ,  7.5000    ,
00237         7.5000}    ,
00238 
00239        {4200.0    ,  440.00    ,  420.00    ,  400.00    ,  230.00    , //16
00240         160.00    ,  105.00    ,  80.000    ,  62.000    ,  50.000    ,
00241         45.000    ,  41.000    ,  38.000    ,  36.000    ,  35.000    ,
00242         34.000    ,  33.000    ,  32.000    ,  31.500    ,  31.000    ,
00243         30.500    ,  30.000    ,  29.500    ,  29.000    ,  28.500    ,
00244         28.000    ,  26.000    ,  23.000    ,  21.500    ,  20.000    ,
00245         19.000    ,  18.000    ,  17.000    ,  13.000    ,  11.500    ,
00246         10.300    ,  9.4000    ,  9.0000    ,  8.8000    ,  7.0000    ,
00247         7.5000}    ,
00248 
00249        {185.88    ,  133.23    ,  119.37    ,  102.86    ,  93.102    , //17
00250         82.752    ,  76.205    ,  71.008    ,  67.366    ,  64.096    ,
00251         60.891    ,  58.501    ,  55.735    ,  53.773    ,  51.839    ,
00252         49.671    ,  48.485    ,  47.045    ,  45.803    ,  44.306    ,
00253         42.623    ,  41.786    ,  41.115    ,  40.630    ,  40.129    ,
00254         38.242    ,  35.233    ,  32.662    ,  29.639    ,  27.573    ,
00255         25.536    ,  23.948    ,  22.356    ,  17.723    ,  15.614    ,
00256         13.653    ,  11.675    ,  10.653    ,  8.6198    ,  7.4464    ,
00257         7.4821}    ,
00258 
00259        {1100.0    ,  115.00    ,  105.00    ,  100.00    ,  56.000    , //18
00260         40.000    ,  27.000    ,  22.000    ,  21.000    ,  20.000    ,
00261         20.000    ,  19.067    ,  19.333    ,  19.500    ,  19.833    ,
00262         20.567    ,  21.800    ,  22.900    ,  23.869    ,  23.809    ,
00263         22.161    ,  21.488    ,  19.732    ,  19.433    ,  19.345    ,
00264         19.029    ,  18.121    ,  16.280    ,  15.258    ,  14.280    ,
00265         13.644    ,  12.963    ,  12.316    ,  9.5333    ,  8.4333    ,
00266         7.5728    ,  6.9696    ,  6.7518    ,  6.6175    ,  5.6000    ,
00267         6.1145}    ,
00268 
00269        {157.65    ,  73.701    ,  76.096    ,  68.571    ,  57.305    , //19
00270         49.257    ,  43.616    ,  40.024    ,  38.098    ,  36.287    ,
00271         34.674    ,  33.105    ,  31.712    ,  30.685    ,  29.613    ,
00272         28.602    ,  28.336    ,  28.075    ,  27.786    ,  27.215    ,
00273         26.380    ,  26.146    ,  25.108    ,  24.783    ,  24.360    ,
00274         23.219    ,  21.431    ,  20.095    ,  18.382    ,  17.267    ,
00275         16.100    ,  15.175    ,  14.271    ,  11.573    ,  10.305    ,
00276         9.1471    ,  8.0149    ,  7.4349    ,  6.2499    ,  5.8928    ,
00277         6.0774}    ,
00278 
00279        {1100.0    ,  115.00    ,  105.00    ,  100.00    ,  56.000    , //20
00280         40.000    ,  27.000    ,  22.000    ,  21.000    ,  20.000    ,
00281         20.000    ,  19.067    ,  19.333    ,  19.500    ,  19.833    ,
00282         20.567    ,  21.800    ,  22.900    ,  23.869    ,  23.809    ,
00283         22.161    ,  21.488    ,  19.732    ,  19.433    ,  19.345    ,
00284         19.029    ,  18.121    ,  16.280    ,  15.258    ,  14.280    ,
00285         13.644    ,  12.963    ,  12.316    ,  9.5333    ,  8.4333    ,
00286         7.5728    ,  6.9696    ,  6.7518    ,  6.6175    ,  5.6000    ,
00287         6.1145}    ,
00288 
00289       {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //21
00290        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00291        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00292        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00293        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00294        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00295        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00296        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00297        0.00000E+00},
00298 
00299        {1100.0    ,  115.00    ,  105.00    ,  100.00    ,  56.000    , //22
00300         40.000    ,  27.000    ,  22.000    ,  21.000    ,  20.000    ,
00301         20.000    ,  19.067    ,  19.333    ,  19.500    ,  19.833    ,
00302         20.567    ,  21.800    ,  22.900    ,  23.869    ,  23.809    ,
00303         22.161    ,  21.488    ,  19.732    ,  19.433    ,  19.345    ,
00304         19.029    ,  18.121    ,  16.280    ,  15.258    ,  14.280    ,
00305         13.644    ,  12.963    ,  12.316    ,  9.5333    ,  8.4333    ,
00306         7.5728    ,  6.9696    ,  6.7518    ,  6.6175    ,  5.6000    ,
00307         6.1145}    ,
00308 
00309        {185.88    ,  133.23    ,  119.37    ,  102.86    ,  93.102    , //23
00310         82.752    ,  76.205    ,  71.008    ,  67.366    ,  64.096    ,
00311         60.891    ,  58.104    ,  55.241    ,  53.140    ,  50.934    ,
00312         48.660    ,  47.566    ,  46.585    ,  45.581    ,  44.003    ,
00313         41.134    ,  39.374    ,  36.878    ,  35.523    ,  34.503    ,
00314         32.334    ,  29.365    ,  27.370    ,  24.705    ,  22.921    ,
00315         21.229    ,  19.879    ,  18.559    ,  14.625    ,  12.758    ,
00316         11.041    ,  9.3440    ,  8.5484    ,  6.7104    ,  6.0000    ,
00317         6.1131}    ,
00318 
00319       {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //24
00320        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00321        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00322        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00323        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00324        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00325        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00326        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00327        0.00000E+00},
00328 
00329        {157.65    ,  73.701    ,  76.096    ,  68.571    ,  57.305    , //25
00330         49.257    ,  43.616    ,  40.024    ,  38.098    ,  36.287    ,
00331         34.674    ,  33.105    ,  31.712    ,  30.685    ,  29.613    ,
00332         28.602    ,  28.336    ,  28.075    ,  27.786    ,  27.215    ,
00333         26.380    ,  26.146    ,  25.108    ,  24.783    ,  24.360    ,
00334         23.219    ,  21.431    ,  20.095    ,  18.382    ,  17.267    ,
00335         16.100    ,  15.175    ,  14.271    ,  11.573    ,  10.305    ,
00336         9.1471    ,  8.0149    ,  7.4349    ,  6.2499    ,  5.8928    ,
00337         6.0774}    ,
00338 
00339        {1100.0    ,  115.00    ,  105.00    ,  100.00    ,  56.000    , //26
00340         40.000    ,  27.000    ,  22.000    ,  21.000    ,  20.000    ,
00341         20.000    ,  18.133    ,  18.167    ,  18.000    ,  17.667    ,
00342         18.133    ,  19.600    ,  21.800    ,  23.338    ,  23.118    ,
00343         19.323    ,  17.476    ,  13.464    ,  12.367    ,  11.691    ,
00344         11.057    ,  10.242    ,  9.5593    ,  9.0151    ,  8.5591    ,
00345         8.2884    ,  7.9253    ,  7.6311    ,  6.0667    ,  5.3667    ,
00346         4.8456    ,  4.5392    ,  4.5036    ,  4.4351    ,  4.2000    ,
00347         4.7289}    ,
00348 
00349        {1100.0    ,  115.00    ,  105.00    ,  100.00    ,  56.000    , //27
00350         40.000    ,  27.000    ,  22.000    ,  21.000    ,  20.000    ,
00351         20.000    ,  18.133    ,  18.167    ,  18.000    ,  17.667    ,
00352         18.133    ,  19.600    ,  21.800    ,  23.338    ,  23.118    ,
00353         19.323    ,  17.476    ,  13.464    ,  12.367    ,  11.691    ,
00354         11.057    ,  10.242    ,  9.5593    ,  9.0151    ,  8.5591    ,
00355         8.2884    ,  7.9253    ,  7.6311    ,  6.0667    ,  5.3667    ,
00356         4.8456    ,  4.5392    ,  4.5036    ,  4.4351    ,  4.2000    ,
00357         4.7289}    ,
00358 
00359        {157.65    ,  73.701    ,  76.096    ,  68.571    ,  57.305    , //28
00360         49.257    ,  43.616    ,  40.024    ,  38.098    ,  36.287    ,
00361         34.674    ,  32.708    ,  31.218    ,  30.052    ,  28.707    ,
00362         27.591    ,  27.417    ,  27.615    ,  27.564    ,  26.913    ,
00363         24.891    ,  23.734    ,  20.871    ,  19.677    ,  18.734    ,
00364         17.311    ,  15.563    ,  14.803    ,  13.448    ,  12.615    ,
00365         11.794    ,  11.106    ,  10.474    ,  8.4745    ,  7.4498    ,
00366         6.5350    ,  5.6835    ,  5.3300    ,  4.3406    ,  4.4464    ,
00367         4.7083}    ,
00368 
00369        {143.53    ,  43.935    ,  54.462    ,  51.429    ,  39.407    , //29
00370         32.510    ,  27.321    ,  24.532    ,  23.465    ,  22.383    ,
00371         21.566    ,  20.209    ,  19.453    ,  18.825    ,  18.046    ,
00372         17.562    ,  17.802    ,  18.360    ,  18.667    ,  18.519    ,
00373         17.514    ,  17.120    ,  14.985    ,  14.306    ,  13.663    ,
00374         12.753    ,  11.596    ,  11.165    ,  10.287    ,  9.7882    ,
00375         9.2294    ,  8.7539    ,  8.3300    ,  6.9480    ,  6.2234    ,
00376         5.5881    ,  5.0189    ,  4.7733    ,  4.1104    ,  4.3929    ,
00377         4.6905}    ,
00378 
00379       {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //30
00380        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00381        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00382        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00383        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00384        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00385        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00386        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00387        0.00000E+00},
00388 
00389       {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //31
00390        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00391        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00392        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00393        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00394        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00395        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00396        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00397        0.00000E+00},
00398 
00399       {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //32
00400        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00401        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00402        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00403        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00404        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00405        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00406        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00407        0.00000E+00},
00408 
00409        {1100.0    ,  115.00    ,  105.00    ,  100.00    ,  56.000    , //33
00410         40.000    ,  27.000    ,  22.000    ,  21.000    ,  20.000    ,
00411         20.000    ,  18.133    ,  18.167    ,  18.000    ,  17.667    ,
00412         18.133    ,  19.600    ,  21.800    ,  23.338    ,  23.118    ,
00413         19.323    ,  17.476    ,  13.464    ,  12.367    ,  11.691    ,
00414         11.057    ,  10.242    ,  9.5593    ,  9.0151    ,  8.5591    ,
00415         8.2884    ,  7.9253    ,  7.6311    ,  6.0667    ,  5.3667    ,
00416         4.8456    ,  4.5392    ,  4.5036    ,  4.4351    ,  4.2000    ,
00417         4.7289}   ,
00418 
00419        {143.53    ,  43.935    ,  54.462    ,  51.429    ,  39.407    , //34
00420         32.510    ,  27.321    ,  24.532    ,  23.465    ,  22.383    ,
00421         21.566    ,  20.209    ,  19.453    ,  18.825    ,  18.046    ,
00422         17.562    ,  17.802    ,  18.360    ,  18.667    ,  18.519    ,
00423         17.514    ,  17.120    ,  14.985    ,  14.306    ,  13.663    ,
00424         12.753    ,  11.596    ,  11.165    ,  10.287    ,  9.7882    ,
00425         9.2294    ,  8.7539    ,  8.3300    ,  6.9480    ,  6.2234    ,
00426         5.5881    ,  5.0189    ,  4.7733    ,  4.1104    ,  4.3929    ,
00427         4.6905}    ,
00428 
00429       {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //35
00430        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00431        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00432        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00433        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00434        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00435        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00436        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00437        0.00000E+00}
00438 };
00439 
00440 //---------------------------------------------------------------------
00441 // Inelastic scattering on free protons
00442 //---------------------------------------------------------------------
00443 
00444 G4float G4HadronCrossSections::csin[NPARTS][TSIZE] = {
00445 
00446        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //1
00447        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00448        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00449        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00450        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00451        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00452        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00453        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00454        0.00000E+00},
00455 
00456        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //2
00457        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00458        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00459        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00460        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00461        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00462        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00463        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00464        0.00000E+00},
00465 
00466        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //3
00467        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00468        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00469        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00470        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00471        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00472        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00473        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00474        0.00000E+00},
00475 
00476        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //4
00477        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00478        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00479        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00480        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00481        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00482        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00483        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00484        0.00000E+00},
00485 
00486        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //5
00487        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00488        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00489        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00490        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00491        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00492        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00493        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00494        0.00000E+00},
00495 
00496        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //6
00497        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00498        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00499        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00500        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00501        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00502        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00503        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00504        0.00000E+00},
00505 
00506 // Inelastic cross section for piplus - p
00507        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //7
00508        0.00000E+00, 0.00000E+00, 0.50000    ,  1.2000    ,  1.7000    ,
00509         2.2500    ,  3.0000    ,  3.6000    ,  4.5000    ,  5.4000    ,
00510         6.3000    ,  8.6000    ,  9.0000    ,  10.000    ,  11.500    ,
00511         14.000    ,  17.000    ,  19.500    ,  22.000    ,  24.000    ,
00512         21.500    ,  18.500    ,  19.000    ,  20.500    ,  22.200    ,
00513         23.000    ,  23.300    ,  23.000    ,  21.000    ,  20.500    ,
00514         20.200    ,  20.100    ,  20.000    ,  20.000    ,  20.000    ,
00515         21.000},
00516 
00517 
00518        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //8
00519        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00520        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00521        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00522        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00523        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00524        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00525        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00526        0.00000E+00},
00527 
00528 // Inelastic cross section for piminus - p
00529        {0.00000E+00,  3.0000    ,  9.2000    ,  20.500    ,  36.500    , //9
00530         45.000    ,  28.000    ,  19.500    ,  15.500    ,  14.200    ,
00531         15.500    ,  17.500    ,  20.000    ,  23.000    ,  26.000    ,
00532         20.000    ,  23.000    ,  26.500    ,  32.000    ,  35.000    ,
00533         28.500    ,  22.000    ,  22.500    ,  23.500    ,  24.000    ,
00534         24.500    ,  26.000    ,  27.500    ,  27.500    ,  27.000    ,
00535         26.500    ,  25.500    ,  25.000    ,  23.000    ,  22.500    ,
00536         22.200    ,  22.000    ,  22.000    ,  21.200    ,  20.700    ,
00537         21.000}    ,
00538 
00539        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //10
00540        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00541        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00542        0.50000    ,  1.5000    ,  2.7000    ,  3.8000    ,  4.8000    ,
00543         6.5000    ,  7.6000    ,  8.4000    ,  9.0000    ,  9.4000    ,
00544         9.8000    ,  10.500    ,  11.000    ,  11.500    ,  11.800    ,
00545         12.200    ,  12.400    ,  12.600    ,  13.200    ,  13.500    ,
00546         13.700    ,  14.000    ,  14.200    ,  14.500    ,  16.400    ,
00547         17.000}    ,
00548 
00549        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //11
00550        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00551        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00552        0.50000    ,  1.5000    ,  2.7000    ,  3.8000    ,  4.8000    ,
00553         6.5000    ,  7.6000    ,  8.4000    ,  9.0000    ,  9.4000    ,
00554         9.8000    ,  10.500    ,  11.000    ,  11.500    ,  11.800    ,
00555         12.200    ,  12.400    ,  12.600    ,  13.200    ,  13.500    ,
00556         13.700    ,  14.000    ,  14.200    ,  14.500    ,  16.400    ,
00557         17.000}    ,
00558 
00559         {266.67    ,  133.33    ,  83.333    ,  57.083    ,  44.500    , //12
00560         33.250    ,  24.583    ,  20.833    ,  18.333    ,  16.083    ,
00561         15.625    ,  15.083    ,  14.833    ,  15.083    ,  15.833    ,
00562         17.042    ,  18.958    ,  20.758    ,  22.533    ,  22.825    ,
00563         21.250    ,  18.567    ,  17.767    ,  18.100    ,  19.933    ,
00564         20.783    ,  21.225    ,  21.000    ,  20.558    ,  20.258    ,
00565         20.017    ,  19.767    ,  19.600    ,  19.183    ,  18.850    ,
00566         18.575    ,  18.350    ,  18.175    ,  17.808    ,  17.558    ,
00567         19.250}    ,
00568 
00569         {400.00    ,  200.00    ,  120.00    ,  81.000    ,  62.000    , //13
00570         47.000    ,  35.000    ,  28.000    ,  24.000    ,  21.000    ,
00571         19.500    ,  19.000    ,  18.800    ,  19.000    ,  20.000    ,
00572         21.000    ,  23.000    ,  25.000    ,  27.000    ,  27.500    ,
00573         25.500    ,  22.000    ,  20.800    ,  21.000    ,  23.000    ,
00574         24.000    ,  24.000    ,  23.800    ,  23.000    ,  22.500    ,
00575         22.000    ,  21.600    ,  21.400    ,  21.000    ,  20.500    ,
00576         20.200    ,  19.800    ,  19.500    ,  18.600    ,  17.500    ,
00577         20.000}    ,
00578 
00579 // Inelastic cross section for p - p
00580        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //14
00581        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00582        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00583        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.10000    ,  1.5000    ,
00584         7.0000    ,  12.000    ,  17.000    ,  19.500    ,  20.500    ,
00585         22.000    ,  23.500    ,  24.800    ,  25.800    ,  26.500    ,
00586         27.000    ,  27.500    ,  28.000    ,  30.000    ,  31.000    ,
00587         32.000    ,  32.500    ,  32.500    ,  33.000    ,  33.500    ,
00588         33.500}    ,
00589 
00590         {1500.0    ,  1160.0    ,  310.00    ,  230.00    ,  178.00    , //15
00591         153.00    ,  134.00    ,  124.00    ,  113.00    ,  106.00    ,
00592         101.00    ,  96.000    ,  92.000    ,  89.000    ,  87.000    ,
00593         84.000    ,  81.000    ,  78.500    ,  76.500    ,  75.000    ,
00594         72.000    ,  70.000    ,  68.000    ,  64.500    ,  63.000    ,
00595         62.000    ,  61.000    ,  59.500    ,  58.500    ,  56.500    ,
00596         56.500    ,  56.000    ,  55.500    ,  52.000    ,  50.000    ,
00597         48.000    ,  45.000    ,  44.000    ,  39.200    ,  34.500    ,
00598         34.500}    ,
00599 
00600        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //16
00601        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00602        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00603        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.10000    ,  1.5000    ,
00604         7.0000    ,  12.000    ,  17.000    ,  19.500    ,  20.500    ,
00605         22.000    ,  23.500    ,  24.800    ,  25.800    ,  26.500    ,
00606         27.000    ,  27.500    ,  28.000    ,  30.000    ,  31.000    ,
00607         32.000    ,  32.500    ,  32.500    ,  33.000    ,  33.500    ,
00608         34.000}    ,
00609 
00610         {1394.1    ,  948.17    ,  262.43    ,  197.14    ,  149.30    , //17
00611         127.25    ,  110.39    ,  101.79    ,  92.834    ,  87.104    ,
00612         83.109    ,  79.099    ,  75.965    ,  73.627    ,  72.161    ,
00613         69.889    ,  67.595    ,  65.595    ,  64.057    ,  63.054    ,
00614         61.377    ,  60.434    ,  59.485    ,  56.970    ,  55.931    ,
00615         55.398    ,  54.827    ,  53.538    ,  52.861    ,  51.247    ,
00616         51.344    ,  50.992    ,  50.644    ,  47.876    ,  46.358    ,
00617         44.887    ,  42.577    ,  41.815    ,  38.180    ,  34.254    ,
00618         34.418}    ,
00619 
00620        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //18
00621        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00622        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00623        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.97815E-01,  1.4577    ,
00624         6.2052    ,  10.112    ,  12.902    ,  14.300    ,  14.688    ,
00625         15.505    ,  16.379    ,  17.554    ,  18.309    ,  18.920    ,
00626         19.389    ,  19.804    ,  20.284    ,  22.000    ,  22.733    ,
00627         23.527    ,  24.097    ,  24.382    ,  24.816    ,  26.800    ,
00628         27.719}    ,
00629 
00630         {1182.4    ,  524.50    ,  167.30    ,  131.43    ,  91.895    , //19
00631         75.743    ,  63.184    ,  57.376    ,  52.502    ,  49.313    ,
00632         47.326    ,  44.762    ,  43.222    ,  42.015    ,  41.221    ,
00633         40.244    ,  39.504    ,  39.145    ,  38.860    ,  38.731    ,
00634         37.987    ,  37.814    ,  36.326    ,  34.750    ,  33.953    ,
00635         33.635    ,  33.349    ,  32.938    ,  32.785    ,  32.092    ,
00636         32.373    ,  32.312    ,  32.329    ,  31.261    ,  30.597    ,
00637         30.073    ,  29.228    ,  29.182    ,  27.683    ,  27.107    ,
00638         27.956}    ,
00639 
00640        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //20
00641        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00642        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00643        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.97815E-01,  1.4577    ,
00644         6.2052    ,  10.112    ,  12.902    ,  14.300    ,  14.688    ,
00645         15.505    ,  16.379    ,  17.554    ,  18.309    ,  18.920    ,
00646         19.389    ,  19.804    ,  20.284    ,  22.000    ,  22.733    ,
00647         23.527    ,  24.097    ,  24.382    ,  24.816    ,  26.800    ,
00648         27.719}    ,
00649 
00650        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //21
00651        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00652        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00653        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00654        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00655        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00656        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00657        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00658        0.00000E+00},
00659 
00660        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //22
00661        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00662        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00663        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.97815E-01,  1.4577    ,
00664         6.2052    ,  10.112    ,  12.902    ,  14.300    ,  14.688    ,
00665         15.505    ,  16.379    ,  17.554    ,  18.309    ,  18.920    ,
00666         19.389    ,  19.804    ,  20.284    ,  22.000    ,  22.733    ,
00667         23.527    ,  24.097    ,  24.382    ,  24.816    ,  26.800    ,
00668         27.719}    ,
00669 
00670         {1394.1    ,  948.17    ,  262.43    ,  197.14    ,  149.30    , //23
00671         127.25    ,  110.39    ,  101.79    ,  92.834    ,  87.104    ,
00672         83.109    ,  78.563    ,  75.292    ,  72.760    ,  70.900    ,
00673         68.467    ,  66.314    ,  64.955    ,  63.746    ,  62.623    ,
00674         59.233    ,  56.946    ,  53.355    ,  49.810    ,  48.090    ,
00675         46.839    ,  45.695    ,  44.863    ,  44.062    ,  42.599    ,
00676         42.684    ,  42.328    ,  42.041    ,  39.508    ,  37.880    ,
00677         36.299    ,  34.075    ,  33.553    ,  29.723    ,  27.600    ,
00678         28.120}    ,
00679 
00680        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //24
00681        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00682        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00683        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00684        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00685        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00686        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00687        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00688        0.00000E+00},
00689 
00690         {1182.4    ,  524.50    ,  167.30    ,  131.43    ,  91.895    , //25
00691         75.743    ,  63.184    ,  57.376    ,  52.502    ,  49.313    ,
00692         47.326    ,  44.762    ,  43.222    ,  42.015    ,  41.221    ,
00693         40.244    ,  39.504    ,  39.145    ,  38.860    ,  38.731    ,
00694         37.987    ,  37.814    ,  36.326    ,  34.750    ,  33.953    ,
00695         33.635    ,  33.349    ,  32.938    ,  32.785    ,  32.092    ,
00696         32.373    ,  32.312    ,  32.329    ,  31.261    ,  30.597    ,
00697         30.073    ,  29.228    ,  29.182    ,  27.683    ,  27.107    ,
00698         27.956}    ,
00699 
00700        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //26
00701        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00702        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00703        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.95639E-01,  1.4154    ,
00704         5.4104    ,  8.2240    ,  8.8031    ,  9.1000    ,  8.8761    ,
00705         9.0095    ,  9.2576    ,  10.307    ,  10.818    ,  11.341    ,
00706         11.778    ,  12.108    ,  12.569    ,  14.000    ,  14.467    ,
00707         15.054    ,  15.694    ,  16.263    ,  16.632    ,  20.100    ,
00708         21.438}    ,
00709 
00710        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //27
00711        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00712        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00713        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.95639E-01,  1.4154    ,
00714         5.4104    ,  8.2240    ,  8.8031    ,  9.1000    ,  8.8761    ,
00715         9.0095    ,  9.2576    ,  10.307    ,  10.818    ,  11.341    ,
00716         11.778    ,  12.108    ,  12.569    ,  14.000    ,  14.467    ,
00717         15.054    ,  15.694    ,  16.263    ,  16.632    ,  20.100    ,
00718         21.438}    ,
00719 
00720         {1182.4    ,  524.50    ,  167.30    ,  131.43    ,  91.895    , //28
00721         75.743    ,  63.184    ,  57.376    ,  52.502    ,  49.313    ,
00722         47.326    ,  44.225    ,  42.549    ,  41.148    ,  39.960    ,
00723         38.822    ,  38.223    ,  38.505    ,  38.549    ,  38.301    ,
00724         35.843    ,  34.326    ,  30.196    ,  27.590    ,  26.112    ,
00725         25.076    ,  24.217    ,  24.264    ,  23.985    ,  23.445    ,
00726         23.713    ,  23.647    ,  23.726    ,  22.892    ,  22.119    ,
00727         21.485    ,  20.726    ,  20.921    ,  19.226    ,  20.454    ,
00728         21.658}    ,
00729 
00730         {1076.5    ,  312.66    ,  119.74    ,  98.571    ,  63.193    , //29
00731         49.990    ,  39.579    ,  35.168    ,  32.335    ,  30.417    ,
00732         29.434    ,  27.325    ,  26.514    ,  25.775    ,  25.120    ,
00733         24.711    ,  24.818    ,  25.600    ,  26.106    ,  26.355    ,
00734         25.220    ,  24.760    ,  21.681    ,  20.060    ,  19.044    ,
00735         18.474    ,  18.044    ,  18.301    ,  18.347    ,  18.192    ,
00736         18.557    ,  18.639    ,  18.870    ,  18.769    ,  18.478    ,
00737         18.372    ,  18.302    ,  18.735    ,  18.206    ,  20.207    ,
00738         21.576}    ,
00739 
00740        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //30
00741        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00742        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00743        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00744        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00745        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00746        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00747        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00748        0.00000E+00},
00749 
00750        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //31
00751        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00752        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00753        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00754        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00755        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00756        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00757        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00758        0.00000E+00},
00759 
00760        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //32
00761        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00762        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00763        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00764        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00765        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00766        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00767        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00768        0.00000E+00},
00769 
00770        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //33
00771        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00772        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00773        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.95639E-01,  1.4154    ,
00774         5.4104    ,  8.2240    ,  8.8031    ,  9.1000    ,  8.8761    ,
00775         9.0095    ,  9.2576    ,  10.307    ,  10.818    ,  11.341    ,
00776         11.778    ,  12.108    ,  12.569    ,  14.000    ,  14.467    ,
00777         15.054    ,  15.694    ,  16.263    ,  16.632    ,  20.100    ,
00778         21.438}    ,
00779 
00780         {1076.5    ,  312.66    ,  119.74    ,  98.571    ,  63.193    , //34
00781         49.990    ,  39.579    ,  35.168    ,  32.335    ,  30.417    ,
00782         29.434    ,  27.325    ,  26.514    ,  25.775    ,  25.120    ,
00783         24.711    ,  24.818    ,  25.600    ,  26.106    ,  26.355    ,
00784         25.220    ,  24.760    ,  21.681    ,  20.060    ,  19.044    ,
00785         18.474    ,  18.044    ,  18.301    ,  18.347    ,  18.192    ,
00786         18.557    ,  18.639    ,  18.870    ,  18.769    ,  18.478    ,
00787         18.372    ,  18.302    ,  18.735    ,  18.206    ,  20.207    ,
00788         21.576}    ,
00789 
00790        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //35
00791        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00792        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00793        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00794        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00795        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00796        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00797        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
00798        0.00000E+00}
00799 
00800 };
00801 
00802 //---------------------------------------------------------------------
00803 // Elastic scattering of pion on nucleus
00804 //---------------------------------------------------------------------
00805 
00806 G4float G4HadronCrossSections::cspiel[3][TSIZE] = {
00807 
00808 // Elastic cross section for Pi on Al (mb)
00809        {0.00000E+00,  350.00    ,  580.00    ,  600.00    ,  550.00    , //1
00810         450.00    ,  410.00    ,  370.00    ,  340.00    ,  230.00    ,
00811         220.00    ,  205.00    ,  180.00    ,  155.00    ,  145.00    ,
00812         140.00    ,  160.00    ,  195.00    ,  235.00    ,  250.00    ,
00813         270.00    ,  280.00    ,  300.00    ,  300.00    ,  290.00    ,
00814         285.00    ,  265.00    ,  240.00    ,  230.00    ,  222.00    ,
00815         204.00    ,  196.00    ,  190.00    ,  170.00    ,  170.00    ,
00816         160.00    ,  150.00    ,  140.00    ,  120.00    ,  80.000    ,
00817         80.000},
00818 
00819 // Elastic cross section for Pi on Cu (mb)
00820        {0.00000E+00,  700.00    ,  1000.0    ,  1200.0    ,  1300.0    , //2
00821         1300.0    ,  1250.0    ,  1250.0    ,  1100.0    ,  1000.0    ,
00822         940.00    ,  740.00    ,  700.00    ,  670.00    ,  660.00    ,
00823         670.00    ,  680.00    ,  700.00    ,  735.00    ,  800.00    ,
00824         810.00    ,  820.00    ,  820.00    ,  810.00    ,  800.00    ,
00825         800.00    ,  700.00    ,  600.00    ,  500.00    ,  470.00    ,
00826         440.00    ,  410.00    ,  380.00    ,  330.00    ,  330.00    ,
00827         330.00    ,  330.00    ,  330.00    ,  285.00    ,  240.00    ,
00828         240.00},
00829 
00830 // Elastic cross section for Pi on Pb (mb)
00831        {0.00000E+00,  1700.0    ,  2200.0    ,  2200.0    ,  1800.0    , //3
00832         1300.0    ,  1200.0    ,  900.00    ,  900.00    ,  1000.0    ,
00833         1100.0    ,  1300.0    ,  1400.0    ,  1420.0    ,  1490.0    ,
00834         1560.0    ,  1580.0    ,  1690.0    ,  1795.0    ,  2000.0    ,
00835         2070.0    ,  2140.0    ,  2050.0    ,  2010.0    ,  1970.0    ,
00836         1880.0    ,  1690.0    ,  1500.0    ,  1420.0    ,  1390.0    ,
00837         1350.0    ,  1360.0    ,  1370.0    ,  1280.0    ,  1290.0    ,
00838         1295.0    ,  1250.0    ,  1200.0    ,  1050.0    ,  900.00    ,
00839         900.00}
00840 };
00841 
00842 //---------------------------------------------------------------------
00843 // Inelastic scattering of pion on nucleus
00844 //---------------------------------------------------------------------
00845 
00846 G4float G4HadronCrossSections::cspiin[3][TSIZE] = {
00847 
00848 // Inelastic cross section for Pi on Al (mb)
00849        {0.00000E+00,  200.00    ,  320.00    ,  500.00    ,  600.00    , //1
00850         600.00    ,  590.00    ,  530.00    ,  510.00    ,  470.00    ,
00851         430.00    ,  425.00    ,  420.00    ,  425.00    ,  425.00    ,
00852         430.00    ,  430.00    ,  435.00    ,  435.00    ,  440.00    ,
00853         430.00    ,  430.00    ,  420.00    ,  420.00    ,  420.00    ,
00854         415.00    ,  415.00    ,  410.00    ,  410.00    ,  408.00    ,
00855         406.00    ,  404.00    ,  400.00    ,  380.00    ,  340.00    ,
00856         340.00    ,  340.00    ,  340.00    ,  340.00    ,  340.00    ,
00857         340.00}    ,
00858 
00859 // Inelastic cross section for Pi on Cu (mb)
00860        {0.00000E+00,  400.00    ,  800.00    ,  1000.0    ,  1100.0    , //2
00861         1200.0    ,  1150.0    ,  1050.0    ,  1000.0    ,  900.00    ,
00862         860.00    ,  860.00    ,  850.00    ,  850.00    ,  840.00    ,
00863         830.00    ,  820.00    ,  810.00    ,  805.00    ,  800.00    ,
00864         800.00    ,  800.00    ,  800.00    ,  800.00    ,  800.00    ,
00865         800.00    ,  800.00    ,  800.00    ,  800.00    ,  780.00    ,
00866         760.00    ,  740.00    ,  720.00    ,  720.00    ,  700.00    ,
00867         690.00    ,  680.00    ,  670.00    ,  665.00    ,  660.00    ,
00868         660.00}    ,
00869 
00870 // Inelastic cross section for Pi on Pb (mb)
00871        {0.00000E+00,  1000.0    ,  1900.0    ,  2600.0    ,  2900.0    , //3
00872         3000.0    ,  2800.0    ,  2600.0    ,  2500.0    ,  2300.0    ,
00873         2200.0    ,  2000.0    ,  1900.0    ,  1880.0    ,  1860.0    ,
00874         1840.0    ,  1820.0    ,  1810.0    ,  1805.0    ,  1800.0    ,
00875         1780.0    ,  1760.0    ,  1750.0    ,  1740.0    ,  1730.0    ,
00876         1720.0    ,  1710.0    ,  1700.0    ,  1680.0    ,  1660.0    ,
00877         1650.0    ,  1640.0    ,  1630.0    ,  1620.0    ,  1610.0    ,
00878         1605.0    ,  1600.0    ,  1600.0    ,  1550.0    ,  1500.0    ,
00879         1500.0}    
00880 };
00881 
00882 //---------------------------------------------------------------------
00883 // Elastic scattering of proton on nucleus
00884 //---------------------------------------------------------------------
00885 
00886 G4float G4HadronCrossSections::cspnel[3][TSIZE] = {
00887 
00888 // Elastic cross section for P on Al (mb)
00889         {2100.0    ,  1800.0    ,  1500.0    ,  1050.0    ,  900.00    , //1
00890         950.00    ,  800.00    ,  650.00    ,  570.00    ,  390.00    ,
00891         300.00    ,  240.00    ,  230.00    ,  230.00    ,  220.00    ,
00892         220.00    ,  225.00    ,  225.00    ,  240.00    ,  240.00    ,
00893         290.00    ,  330.00    ,  335.00    ,  350.00    ,  355.00    ,
00894         370.00    ,  350.00    ,  330.00    ,  310.00    ,  290.00    ,
00895         270.00    ,  265.00    ,  260.00    ,  230.00    ,  210.00    ,
00896         210.00    ,  200.00    ,  200.00    ,  190.00    ,  180.00    ,
00897         180.00},
00898 
00899 // Elastic cross section for P on Cu (mb)
00900         {3800.0    ,  2900.0    ,  1850.0    ,  1550.0    ,  1450.0    , //2
00901         1520.0    ,  1460.0    ,  1300.0    ,  1140.0    ,  880.00    ,
00902         700.00    ,  620.00    ,  540.00    ,  560.00    ,  460.00    ,
00903         460.00    ,  470.00    ,  470.00    ,  480.00    ,  480.00    ,
00904         580.00    ,  600.00    ,  610.00    ,  620.00    ,  620.00    ,
00905         620.00    ,  590.00    ,  580.00    ,  460.00    ,  440.00    ,
00906         420.00    ,  400.00    ,  480.00    ,  430.00    ,  380.00    ,
00907         380.00    ,  380.00    ,  380.00    ,  380.00    ,  380.00    ,
00908         380.00},
00909 
00910 // Elastic cross section for P on Pb (mb)
00911         {7000.0    ,  6000.0    ,  4500.0    ,  3350.0    ,  2700.0    , //3
00912         3000.0    ,  3550.0    ,  3970.0    ,  3280.0    ,  2490.0    ,
00913         2100.0    ,  1510.0    ,  1440.0    ,  1370.0    ,  1370.0    ,
00914         1370.0    ,  1400.0    ,  1400.0    ,  1420.0    ,  1420.0    ,
00915         1440.0    ,  1460.0    ,  1460.0    ,  1450.0    ,  1450.0    ,
00916         1470.0    ,  1400.0    ,  1400.0    ,  1380.0    ,  1370.0    ,
00917         1360.0    ,  1350.0    ,  1340.0    ,  1330.0    ,  1320.0    ,
00918         1310.0    ,  1305.0    ,  1300.0    ,  1300.0    ,  1300.0    ,
00919         1300.0}
00920 };
00921 
00922 //---------------------------------------------------------------------
00923 // Inelastic scattering of proton on nucleus
00924 //---------------------------------------------------------------------
00925 
00926 G4float G4HadronCrossSections::cspnin[3][TSIZE] = {
00927 
00928 // Inelastic cross section for P on Al (mb)
00929        {0.00000E+00,  200.00    ,  400.00    ,  800.00    ,  800.00    , //1
00930         550.00    ,  500.00    ,  450.00    ,  430.00    ,  410.00    ,
00931         400.00    ,  390.00    ,  380.00    ,  370.00    ,  370.00    ,
00932         370.00    ,  365.00    ,  365.00    ,  360.00    ,  360.00    ,
00933         360.00    ,  360.00    ,  365.00    ,  370.00    ,  375.00    ,
00934         380.00    ,  400.00    ,  410.00    ,  420.00    ,  430.00    ,
00935         440.00    ,  440.00    ,  440.00    ,  440.00    ,  440.00    ,
00936         440.00    ,  440.00    ,  440.00    ,  440.00    ,  440.00    ,
00937         440.00}    ,
00938 
00939 // Inelastic cross section for P on Cu (mb)
00940        {0.00000E+00,  400.00    ,  950.00    ,  1050.0    ,  1050.0    , //2
00941         980.00    ,  940.00    ,  900.00    ,  860.00    ,  820.00    ,
00942         800.00    ,  780.00    ,  760.00    ,  740.00    ,  740.00    ,
00943         740.00    ,  730.00    ,  730.00    ,  720.00    ,  720.00    ,
00944         720.00    ,  720.00    ,  730.00    ,  740.00    ,  750.00    ,
00945         760.00    ,  800.00    ,  820.00    ,  820.00    ,  820.00    ,
00946         820.00    ,  820.00    ,  820.00    ,  820.00    ,  820.00    ,
00947         820.00    ,  820.00    ,  820.00    ,  820.00    ,  820.00    ,
00948         820.00}    ,
00949 
00950 // Inelastic cross section for P on Pb (mb)
00951        {0.00000E+00, 0.00000E+00,  500.00    ,  1450.0    ,  1700.0    , //3
00952         1800.0    ,  1750.0    ,  1730.0    ,  1720.0    ,  1710.0    ,
00953         1700.0    ,  1690.0    ,  1660.0    ,  1630.0    ,  1630.0    ,
00954         1630.0    ,  1600.0    ,  1600.0    ,  1580.0    ,  1580.0    ,
00955         1580.0    ,  1580.0    ,  1600.0    ,  1630.0    ,  1650.0    ,
00956         1670.0    ,  1760.0    ,  1800.0    ,  1800.0    ,  1800.0    ,
00957         1800.0    ,  1800.0    ,  1800.0    ,  1800.0    ,  1800.0    ,
00958         1800.0    ,  1800.0    ,  1800.0    ,  1800.0    ,  1800.0    ,
00959         1800.0}    
00960 };
00961 
00962 //---------------------------------------------------------------------
00963 // Lab kinetic energy in GeV
00964 //---------------------------------------------------------------------
00965 G4float G4HadronCrossSections::elab[NELAB] = {
00966        0.10000E-03, 0.20000E-03, 0.30000E-03, 0.40000E-03, 0.50000E-03,
00967        0.70000E-03, 0.10000E-02, 0.20000E-02, 0.30000E-02, 0.40000E-02,
00968        0.50000E-02, 0.70000E-02, 0.10000E-01, 0.15000E-01, 0.20000E-01,
00969        0.25000E-01, 0.32700E-01
00970 };
00971 
00972 //---------------------------------------------------------------------
00973 // Tables for low-energy (< 32.7 MeV) neutrons
00974 //---------------------------------------------------------------------
00975 
00976 // Atomic weight
00977 G4float G4HadronCrossSections::cnlwat[NCNLW] = {
00978         1.0000    ,  16.000    ,  27.000    ,  56.000    ,  59.000    ,
00979         64.000    ,  91.000    ,  112.00    ,  119.00    ,  127.00    ,
00980         137.00    ,  181.00    ,  207.00    ,  209.00    ,  238.00    
00981 };
00982 // Elastic cross section
00983 G4float G4HadronCrossSections::cnlwel[NCNLW][NELAB] = {
00984         {6000.0    ,  5500.0    ,  5200.0    ,  4900.0    ,  4800.0    , //1
00985         4400.0    ,  4000.0    ,  2900.0    ,  2200.0    ,  1800.0    ,
00986         1400.0    ,  1100.0    ,  900.00    ,  700.00    ,  600.00    ,
00987         560.00    ,  520.00}    ,
00988         {5400.0    ,  5050.0    ,  4800.0    ,  4600.0    ,  4399.0    , //2
00989         4090.0    ,  3700.0    ,  2600.0    ,  1950.0    ,  1600.0    ,
00990         1300.0    ,  900.00    ,  700.00    ,  800.00    ,  1050.0    ,
00991         1250.0    ,  1320.0}    ,
00992         {5500.0    ,  5150.0    ,  4900.0    ,  4699.0    ,  4490.0    , //3
00993         4150.0    ,  3750.0    ,  2790.0    ,  2100.0    ,  1650.0    ,
00994         1300.0    ,  950.00    ,  800.00    ,  860.00    ,  1000.0    ,
00995         1090.0    ,  1080.0}    ,
00996         {5499.0    ,  4970.0    ,  4450.0    ,  4080.0    ,  3750.0    , //4
00997         3380.0    ,  2900.0    ,  2400.0    ,  2380.0    ,  2350.0    ,
00998         2300.0    ,  2100.0    ,  1720.0    ,  1370.0    ,  1200.0    ,
00999         1060.0    ,  870.00}    ,
01000         {5399.0    ,  4710.0    ,  4180.0    ,  3760.0    ,  3460.0    , //5
01001         3150.0    ,  2730.0    ,  2270.0    ,  1850.0    ,  1850.0    ,
01002         2130.0    ,  2330.0    ,  2120.0    ,  1640.0    ,  1310.0    ,
01003         1100.0    ,  1050.0}    ,
01004         {5099.0    ,  4405.0    ,  3825.0    ,  3455.0    ,  3125.0    , //6
01005         2695.0    ,  2350.0    ,  1850.0    ,  1580.0    ,  1820.0    ,
01006         2050.0    ,  2210.0    ,  2000.0    ,  1590.0    ,  1310.0    ,
01007         1120.0    ,  1040.0}  ,
01008         {6290.0    ,  5960.0    ,  5640.0    ,  5370.0    ,  5150.0    , //7
01009         4800.0    ,  4250.0    ,  3150.0    ,  2470.0    ,  2100.0    ,
01010         2230.0    ,  2420.0    ,  2450.0    ,  2050.0    ,  1760.0    ,
01011         1550.0    ,  1330.0}  ,
01012         {6885.0    ,  6650.0    ,  6350.0    ,  6150.0    ,  6000.0    , //8
01013         5700.0    ,  5360.0    ,  4250.0    ,  2800.0    ,  1870.0    ,
01014         1810.0    ,  1820.0    ,  2170.0    ,  2450.0    ,  2150.0    ,
01015         1700.0    ,  1390.0}  ,
01016         {6600.0    ,  6500.0    ,  6400.0    ,  6249.0    ,  6190.0    , //9
01017         5950.0    ,  5520.0    ,  4250.0    ,  2750.0    ,  1900.0    ,
01018         1850.0    ,  1950.0    ,  2340.0    ,  2800.0    ,  2540.0    ,
01019         2100.0    ,  1760.0}  ,
01020         {7400.0    ,  7200.0    ,  6999.0    ,  6840.0    ,  6655.0    , //10
01021         6320.0    ,  5820.0    ,  4400.0    ,  2850.0    ,  2000.0    ,
01022         1800.0    ,  1800.0    ,  2150.0    ,  2600.0    ,  2350.0    ,
01023         1950.0    ,  2100.0}  ,
01024         {7900.0    ,  7700.0    ,  7499.0    ,  7390.0    ,  7202.0    , //11
01025         6810.0    ,  6360.0    ,  4920.0    ,  3450.0    ,  2600.0    ,
01026         2200.0    ,  1950.0    ,  2300.0    ,  2800.0    ,  2650.0    ,
01027         2250.0    ,  2050.0}  ,
01028         {7900.0    ,  7750.0    ,  7699.0    ,  7590.0    ,  7450.0    , //12
01029         7200.0    ,  6850.0    ,  5650.0    ,  4400.0    ,  3700.0    ,
01030         3400.0    ,  2800.0    ,  2700.0    ,  3100.0    ,  3250.0    ,
01031         3100.0    ,  2750.0}  ,
01032         {6100.0    ,  5950.0    ,  5750.0    ,  5599.0    ,  5440.0    , //13
01033         5200.0    ,  4800.0    ,  4300.0    ,  5800.0    ,  5750.0    ,
01034         4800.0    ,  3420.0    ,  2650.0    ,  3200.0    ,  3650.0    ,
01035         3500.0    ,  2980.0}  ,
01036         {6100.0    ,  5950.0    ,  5750.0    ,  5599.0    ,  5440.0    , //14
01037         5200.0    ,  4800.0    ,  4300.0    ,  5800.0    ,  5750.0    ,
01038         4800.0    ,  3420.0    ,  2650.0    ,  3200.0    ,  3650.0    ,
01039         3500.0    ,  2980.0}  ,
01040         {6600.0    ,  6350.0    ,  6100.0    ,  5899.0    ,  5690.0    , //15
01041         5300.0    ,  4850.0    ,  4450.0    ,  5650.0    ,  5700.0    ,
01042         4950.0    ,  3850.0    ,  3050.0    ,  3050.0    ,  3460.0    ,
01043         3650.0    ,  3340.0}
01044 };
01045 // Inelastic cross section
01046 G4float G4HadronCrossSections::cnlwin[NCNLW][NELAB] = {
01047        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //1
01048        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
01049        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
01050        0.00000E+00, 0.00000E+00},
01051        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,  1.0000    , //2
01052         10.000    ,  50.000    ,  100.00    ,  200.00    ,  300.00    ,
01053         400.00    ,  600.00    ,  700.00    ,  750.00    ,  700.00    ,
01054         700.00    ,  680.00}  ,
01055        {0.00000E+00, 0.00000E+00, 0.00000E+00,  1.0000    ,  10.000    , //3
01056         50.000    ,  100.00    ,  260.00    ,  450.00    ,  600.00    ,
01057         700.00    ,  800.00    ,  900.00    ,  940.00    ,  900.00    ,
01058         860.00    ,  820.00}  ,
01059         {1.0000    ,  80.000    ,  200.00    ,  320.00    ,  400.00    , //4
01060         520.00    ,  700.00    ,  1000.0    ,  1120.0    ,  1200.0    ,
01061         1200.0    ,  1200.0    ,  1180.0    ,  1130.0    ,  1100.0    ,
01062         1090.0    ,  1080.0}  ,
01063         {1.0000    ,  90.000    ,  220.00    ,  340.00    ,  420.00    , //5
01064         550.00    ,  720.00    ,  1080.0    ,  1300.0    ,  1400.0    ,
01065         1420.0    ,  1420.0    ,  1380.0    ,  1260.0    ,  1190.0    ,
01066         1150.0    ,  1100.0}  ,
01067         {1.0000    ,  95.000    ,  225.00    ,  345.00    ,  425.00    , //6
01068         555.00    ,  750.00    ,  1150.0    ,  1500.0    ,  1680.0    ,
01069         1700.0    ,  1690.0    ,  1550.0    ,  1360.0    ,  1240.0    ,
01070         1180.0    ,  1120.0}  ,
01071         {10.000    ,  140.00    ,  260.00    ,  380.00    ,  450.00    , //7
01072         600.00    ,  750.00    ,  1200.0    ,  1580.0    ,  1800.0    ,
01073         1820.0    ,  1830.0    ,  1800.0    ,  1750.0    ,  1690.0    ,
01074         1650.0    ,  1620.0}  ,
01075         {15.000    ,  150.00    ,  300.00    ,  400.00    ,  500.00    , //8
01076         650.00    ,  840.00    ,  1500.0    ,  2100.0    ,  2130.0    ,
01077         2140.0    ,  2130.0    ,  2080.0    ,  2000.0    ,  1950.0    ,
01078         1900.0    ,  1860.0}  ,
01079        {0.00000E+00, 0.00000E+00, 0.00000E+00,  1.0000    ,  10.000    , //9
01080         150.00    ,  380.00    ,  1000.0    ,  1650.0    ,  2100.0    ,
01081         2100.0    ,  2100.0    ,  2060.0    ,  1950.0    ,  1860.0    ,
01082         1800.0    ,  1740.0}  ,
01083        {0.00000E+00, 0.00000E+00,  1.0000    ,  10.000    ,  45.000    , //10
01084         180.00    ,  380.00    ,  1050.0    ,  1900.0    ,  2300.0    ,
01085         2300.0    ,  2200.0    ,  2150.0    ,  2000.0    ,  1900.0    ,
01086         1800.0    ,  1750.0}  ,
01087        {0.00000E+00, 0.00000E+00,  1.0000    ,  10.000    ,  48.000    , //11
01088         190.00    ,  390.00    ,  1080.0    ,  2000.0    ,  2400.0    ,
01089         2400.0    ,  2300.0    ,  2200.0    ,  2100.0    ,  1950.0    ,
01090         1850.0    ,  1800.0}  ,
01091        {0.00000E+00, 0.00000E+00,  1.0000    ,  10.000    ,  50.000    , //12
01092         200.00    ,  400.00    ,  1100.0    ,  2100.0    ,  2500.0    ,
01093         2500.0    ,  2450.0    ,  2300.0    ,  2100.0    ,  2000.0    ,
01094         1900.0    ,  1850.0}  ,
01095        {0.00000E+00, 0.00000E+00, 0.00000E+00,  1.0000    ,  10.000    , //13
01096         100.00    ,  350.00    ,  900.00    ,  1400.0    ,  2000.0    ,
01097         2300.0    ,  2380.0    ,  2400.0    ,  2300.0    ,  2250.0    ,
01098         2200.0    ,  2120.0}  ,
01099        {0.00000E+00, 0.00000E+00, 0.00000E+00,  1.0000    ,  10.000    , //14
01100         100.00    ,  350.00    ,  900.00    ,  1400.0    ,  2000.0    ,
01101         2300.0    ,  2380.0    ,  2400.0    ,  2300.0    ,  2250.0    ,
01102         2200.0    ,  2120.0}  ,
01103        {0.00000E+00, 0.00000E+00, 0.00000E+00,  1.0000    ,  10.000    , //15
01104         100.00    ,  400.00    ,  950.00    ,  1600.0    ,  2200.0    ,
01105         2550.0    ,  2750.0    ,  2700.0    ,  2600.0    ,  2540.0    ,
01106         2450.0    ,  2360.0}
01107 };
01108 // Capture cross section indexed by Z
01109 G4float G4HadronCrossSections::cscap[100] = {
01110         6.0000    ,  5.7000    ,  5.5000    ,  5.3000    ,  5.2000    ,
01111         5.1000    ,  5.0000    ,  4.9000    ,  4.8000    ,  4.8000    ,
01112         4.8000    ,  4.8000    ,  4.8000    ,  4.8000    ,  4.8000    ,
01113         4.8000    ,  4.9000    ,  5.0000    ,  5.2000    ,  5.5000    ,
01114         6.0000    ,  6.7000    ,  7.5000    ,  8.5000    ,  10.000    ,
01115         12.000    ,  14.500    ,  19.000    ,  26.500    ,  40.000    ,
01116         75.000    ,  120.00    ,  180.00    ,  260.00    ,  360.00    ,
01117         330.00    ,  60.000    ,  7.0000    ,  9.5000    ,  20.000    ,
01118         75.000    ,  140.00    ,  250.00    ,  360.00    ,  480.00    ,
01119         580.00    ,  590.00    ,  500.00    ,  300.00    ,  100.00    ,
01120         200.00    ,  300.00    ,  400.00    ,  470.00    ,  500.00    ,
01121         430.00    ,  100.00    ,  20.000    ,  22.000    ,  40.000    ,
01122         560.00    ,  950.00    ,  1000.0    ,  1000.0    ,  1000.0    ,
01123         990.00    ,  920.00    ,  860.00    ,  790.00    ,  740.00    ,
01124         650.00    ,  600.00    ,  540.00    ,  470.00    ,  440.00    ,
01125         390.00    ,  360.00    ,  340.00    ,  320.00    ,  310.00    ,
01126         280.00    ,  2.0000    ,  2.5000    ,  6.0000    ,  13.000    ,
01127         38.000    ,  65.000    ,  140.00    ,  280.00    ,  300.00    ,
01128         430.00    ,  580.00    ,  650.00    ,  800.00    ,  920.00    ,
01129         1100.0    ,  1250.0    ,  1400.0    ,  1550.0    ,  1700.0    
01130 };
01131 
01132 //---------------------------------------------------------------------
01133 // Tables for fission cross sections
01134 //---------------------------------------------------------------------
01135 
01136 // Lab kinetic energy in GeV
01137 G4float G4HadronCrossSections::ekfiss[NFISS] = {
01138        0.10000E-03, 0.20000E-03, 0.30000E-03, 0.50000E-03, 0.70000E-03,
01139        0.10000E-02, 0.15000E-02, 0.20000E-02, 0.30000E-02, 0.50000E-02,
01140        0.70000E-02, 0.10000E-01, 0.15000E-01, 0.20000E-01, 0.50000E-01,
01141        0.10000    , 0.20000    , 0.30000    , 0.40000    , 0.50000    ,
01142         1000.0    
01143 };
01144 // Fission cross sections
01145 G4float G4HadronCrossSections::csfiss[4][NFISS] = {
01146         {2600.0    ,  2300.0    ,  2300.0    ,  2100.0    ,  2000.0    , //1
01147         1950.0    ,  1930.0    ,  1900.0    ,  1800.0    ,  1600.0    ,
01148         2100.0    ,  2300.0    , 0.00000E+00, 0.00000E+00, 0.00000E+00,
01149        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
01150        0.00000E+00},
01151         {1850.0    ,  1400.0    ,  1300.0    ,  1150.0    ,  1100.0    , //2
01152         1200.0    ,  1250.0    ,  1300.0    ,  1250.0    ,  1150.0    ,
01153         1600.0    ,  1900.0    , 0.00000E+00, 0.00000E+00, 0.00000E+00,
01154        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
01155        0.00000E+00},
01156         {1700.0    ,  1650.0    ,  1650.0    ,  1700.0    ,  1700.0    , //3
01157         1800.0    ,  1900.0    ,  2000.0    ,  1950.0    ,  1800.0    ,
01158         2150.0    ,  2450.0    , 0.00000E+00, 0.00000E+00, 0.00000E+00,
01159        0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00,
01160        0.00000E+00},
01161        {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //4
01162        0.00000E+00,  250.00    ,  550.00    ,  550.00    ,  550.00    ,
01163         550.00    ,  550.00    ,  1000.0    ,  1400.0    ,  1600.0    ,
01164         1500.0    ,  1400.0    ,  1300.0    ,  1200.0    ,  1100.0    ,
01165         1000.0}
01166 };
01167 
01168 G4float G4HadronCrossSections::alpha[NPARTS] = {
01169                      0.7,0.7,0.7,0.7,0.7,0.7,
01170                      0.75,0.75,0.75,
01171                      0.76,0.76,0.76,0.76,
01172                      0.685,0.63,0.685,0.63,0.685,0.63,
01173                      0.685,0.685,0.685,0.63,0.63,0.63,0.685,0.685,0.63,0.63,
01174                      0.7,0.7,0.7,0.685,0.63,0.7
01175 };
01176 
01177 G4float G4HadronCrossSections::alphac[TSIZE] = {
01178                      1.2,1.2,1.2,1.15,0.90,0.91,0.98,1.06,1.10,1.11,
01179                      1.10,1.08,1.05,1.01,0.985,0.962,0.945,0.932,
01180                      0.925,0.920,0.920,0.921,0.922,0.923,0.928,0.931,
01181                      0.940,0.945,0.950,0.955,0.958,0.962,0.965,0.976,
01182                      0.982,0.988,0.992,1.010,1.020,1.030,1.040
01183 };
01184 
01185 G4float G4HadronCrossSections::partel[NPARTS] = {
01186                   0.,0.,0.,0.,0.,0.,
01187                   1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,
01188                   1.,1.,1.,1.,1.,1.,1.,1.,1.,1.,
01189                   1.,1.,1.,1.,1.,1.,1.,1.,1.
01190 };
01191 G4float G4HadronCrossSections::partin[NPARTS] = {
01192                   0.,0.,0.,0.,0.,0.,
01193                   1.00,0.00,1.05,1.20,1.35,1.30,1.20,1.00,1.30,
01194                   1.00,1.30,1.00,1.30,1.00,1.00,1.00,1.30,1.30,1.30,
01195                   1.00,1.00,1.30,1.30,1.00,1.,1.,1.,1.3,1.
01196 };
01197 
01198 // Enabling flags for corrections for compounds
01199 G4int G4HadronCrossSections::icorr[NPARTS] = {
01200                   1,1,1,1,1,1,1,1,1,1,1,1,1,1,
01201                   0,1,0,1,0,1,1,1,0,0,0,1,1,0,0,1,1,1,1,0,0
01202 };
01203 
01204 // Enabling flags for interaction to occur
01205 G4int G4HadronCrossSections::intrc[NPARTS] = {
01206                   0,0,0,0,0,0,
01207                   1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,2,2,0,
01208                   1,1,1,1,1,1,1,1,1,1,0
01209 };
01210 
01211 G4float G4HadronCrossSections::csa[4] = {1., 27.00, 63.54, 207.19};
01212 
01213 G4int G4HadronCrossSections::ipart2[7] = {9, 8, 7, 11, 10, 13, 12};
01214 
01215 G4bool G4HadronCrossSections::correctInelasticNearZero = 0;
01216 
01217 G4HadronCrossSections::G4HadronCrossSections()
01218   : prevParticleDefinition(0), prevElement(0), prevZZ(0), prevAA(0), 
01219     prevKineticEnergy(DBL_MAX), lastEkx(0.), lastEkxPower(0.), verboseLevel(0)
01220 {
01221   siginelastic = sigelastic = 0.0;
01222   g4pow = G4Pow::GetInstance();
01223 }
01224 
01225 G4HadronCrossSections::~G4HadronCrossSections() 
01226 {}
01227 
01228 G4HadronCrossSections* G4HadronCrossSections::Instance()
01229 {
01230   if (!theInstance) {
01231     static G4HadronCrossSections xsection;
01232     theInstance = &xsection;
01233   }
01234   return theInstance;
01235 }
01236 
01237 G4bool G4HadronCrossSections::IsApplicable(const G4DynamicParticle* aParticle)
01238 {
01239   return (GetParticleCode(aParticle) > 0);
01240 }
01241 
01242 G4double
01243 G4HadronCrossSections::GetInelasticCrossSection(const G4DynamicParticle* particle,
01244                                                 G4int ZZ, G4int AA)
01245 {
01246   if (particle->GetDefinition() != prevParticleDefinition ||
01247       particle->GetKineticEnergy() != prevKineticEnergy ||
01248       ZZ != prevZZ || AA != prevAA)
01249     { CalcScatteringCrossSections(particle, ZZ, AA); }
01250   if (verboseLevel > 1) {
01251     G4cout << "        x-section inelastic(mb)= " 
01252            << siginelastic/millibarn << G4endl; 
01253   }
01254 
01255   return siginelastic;
01256 }
01257 
01258 
01259 G4double
01260 G4HadronCrossSections::GetElasticCrossSection(const G4DynamicParticle* particle,
01261                                               G4int ZZ, G4int AA)
01262 {
01263   if (particle->GetDefinition() != prevParticleDefinition ||
01264       particle->GetKineticEnergy() != prevKineticEnergy ||
01265       ZZ != prevZZ || AA != prevAA)
01266     { CalcScatteringCrossSections(particle, ZZ, AA); }
01267 
01268   if (verboseLevel > 1) {
01269     G4cout << "        x-section elastic(mb)= " 
01270            << sigelastic/millibarn << G4endl; 
01271   }
01272   return sigelastic;
01273 }
01274 
01275 
01276 // Method to calculate cross sections for all processes.
01277 // To facilitate comparison with the original Fortran source, and because
01278 // of the interdependence of the elastic and inelastic cross section
01279 // calculations, this has not been split into separate processes.
01280 
01281 void
01282 G4HadronCrossSections::CalcScatteringCrossSections(
01283                           const G4DynamicParticle* aParticle,
01284                           G4int ZZ, G4int AA)
01285 {
01286    G4double sigel, sigin, sigtot;
01287    G4double xsecel, xsecin=0;
01288    xsecel = 0;
01289    G4double dx, dy, rc, rca, b;
01290    G4double crel, crin;
01291    G4double xspiel, xspiin;
01292 
01293    G4int ipart = GetParticleCode(aParticle);
01294    prevAA = AA;
01295    prevZZ = ZZ;
01296    prevParticleDefinition = aParticle->GetDefinition(); 
01297    prevKineticEnergy = aParticle->GetKineticEnergy(); 
01298 
01299    if (verboseLevel > 1) {
01300      G4cout << "G4HadronCrossSections::ScatteringCrossSections: " 
01301             << aParticle->GetDefinition()->GetParticleName()
01302             << " E(MeV)= " << aParticle->GetKineticEnergy()/MeV 
01303             << " Z= " << ZZ << " A= " << AA << G4endl;
01304    }
01305 
01306    // Ions...
01307 
01308    if (ipart >= 30 && ipart <= 32) {
01309 
01310       G4double apart=0;
01311       if (ipart == 30) apart = g4pow->Z13(2);
01312       else if (ipart == 31) apart = g4pow->Z13(3);
01313       else if (ipart == 32) apart = g4pow->Z13(4);
01314 
01315       G4double term = apart + g4pow->Z13(AA);
01316       sigin = 49.*term*term;
01317       // Convert cross section from mb to default units
01318       siginelastic = sigin*millibarn;
01319       if(prevKineticEnergy < 6*MeV) siginelastic = 0;
01320       sigelastic = 0.;
01321       return;
01322    }
01323 
01324    G4double ek = prevKineticEnergy/GeV;
01325 
01326 // Low energy neutrons...
01327 
01328    if (ipart == 16 && ek <= 0.0327) {
01329 
01330      //      G4int je2 = NELAB;
01331      //      for (G4int j = 2; j <= NELAB; j++) {
01332      //         if (ek < elab[j - 1]) {
01333      //            je2 = j;
01334      //            break;
01335      //         }
01336      //      }
01337      //      G4int je1 = je2 -1;
01338      //      je1 = je1 - 1;      // For array indexing
01339      //      je2 = je2 - 1;      // For array indexing
01340 
01341       G4int je1 = 0;
01342       G4int je2 = NELAB - 1;
01343       do {
01344          G4int midBin = (je1 + je2)/2;
01345          if (ek < elab[midBin])
01346            je2 = midBin;
01347          else
01348            je1 = midBin;
01349       } while (je2 - je1 > 1); 
01350 
01351       G4double delab = elab[je2] - elab[je1];
01352 
01353       //      G4int ja2 = NCNLW;
01354       //      for (G4int jj = 2; jj <= NCNLW; jj++) {
01355       //         if (a < cnlwat[jj - 1]) {
01356       //            ja2 = jj;
01357       //            break;
01358       //         }
01359       //      }
01360       //      G4int ja1 = ja2 - 1;
01361       //      ja1 = ja1 - 1;      // For array indexing
01362       //      ja2 = ja2 - 1;      // For array indexing
01363 
01364       G4int ja1 = 0;
01365       G4int ja2 = NCNLW - 1;
01366       do {
01367          G4int midBin = (ja1 + ja2)/2;
01368          if (AA < cnlwat[midBin])
01369            ja2 = midBin;
01370          else
01371            ja1 = midBin;
01372       } while (ja2 - ja1 > 1); 
01373 
01374       G4double dnlwat = cnlwat[ja2] - cnlwat[ja1];
01375 
01376 // Elastic cross section:
01377       // E interpolation or extrapolation at JA1
01378       dy = cnlwel[ja1][je2] - cnlwel[ja1][je1];
01379       G4double rce = dy/delab;
01380       // A interpolation or extrapolation at JE1
01381       dy = cnlwel[ja2][je1] - cnlwel[ja1][je1];
01382       rca = dy/dnlwat;
01383       b = cnlwel[ja1][je1] - rce*elab[je1] - rca*cnlwat[ja1];
01384       sigelastic = rce*ek + rca*AA + b;
01385 // Inelastic cross section:
01386       // E interpolation or extrapolation at JA1
01387       dy = cnlwin[ja1][je2] - cnlwin[ja1][je1];
01388       rce = dy/delab;
01389       // A interpolation or extrapolation at JE1
01390       dy = cnlwin[ja2][je1] - cnlwin[ja1][je1];
01391       rca = dy/dnlwat;
01392       b = cnlwin[ja1][je1] - rce*elab[je1] - rca*cnlwat[ja1];
01393       siginelastic = rce*ek + rca*AA + b;
01394    // Convert cross sections from mb to default units
01395       sigelastic = sigelastic*millibarn;
01396       siginelastic = siginelastic*millibarn;
01397       return;
01398    }
01399 
01400 // Remaining particles...
01401 
01402 // Get momentum bin
01403    G4double p = aParticle->GetTotalMomentum()/GeV;
01404 
01405    //   G4int j = TSIZE - 1;
01406    //   for (G4int i = 2; i <= TSIZE; i++) {
01407    //      if (p < plab[i]) {
01408    //         j = i - 1;
01409    //         break;
01410    //      }
01411    //   }
01412    //   j = j - 1;                     // For array indexing
01413 
01414    G4int je1 = 0;
01415    G4int je2 = TSIZE - 1;
01416    do {
01417       G4int midBin = (je1 + je2)/2;
01418       if (p < plab[midBin])
01419         je2 = midBin;
01420       else
01421         je1 = midBin;
01422    } while (je2 - je1 > 1); 
01423 
01424    G4int ipart1 = ipart - 1;      // For array indexing
01425 
01426 // Get cross sections for scattering on free protons
01427    dx = plab[je2] - plab[je1];
01428 // Elastic cross section
01429    dy = csel[ipart1][je2] - csel[ipart1][je1];
01430    rc = dy/dx;
01431    b = csel[ipart1][je1] - rc*plab[je1];
01432    sigel = rc*p + b;
01433 // Inelastic cross section
01434    dy = csin[ipart1][je2] - csin[ipart1][je1];
01435    rc = dy/dx;
01436    b = csin[ipart1][je1] - rc*plab[je1];
01437    sigin = rc*p + b;
01438    if (verboseLevel > 1) {
01439       G4cout << "sigel " << sigel << G4endl;
01440       G4cout << "sigin " << sigin << G4endl;
01441    }
01442    G4double alph = alpha[ipart1];
01443    if (ipart < 14) {
01444       dy = alphac[je2] - alphac[je1];
01445       rc = dy/dx;
01446       b = alphac[je1] - rc*plab[je1];
01447       G4double corfac = rc*p + b;
01448       alph = alph*corfac;
01449       G4int ipart3 = ipart2[ipart - 7];
01450       ipart3 = ipart3 - 1;      // For array indexing
01451       // Elastic cross section
01452       dy = csel[ipart3][je2] - csel[ipart3][je1];
01453       rc = dy/dx;
01454       b = csel[ipart3][je1] - rc*plab[je1];
01455       xsecel = rc*p + b;
01456       // Inelastic cross section
01457       dy = csin[ipart3][je2] - csin[ipart3][je1];
01458       rc = dy/dx;
01459       b = csin[ipart3][je1] - rc*plab[je1];
01460       xsecin = rc*p + b;
01461    }
01462 
01463 // A-dependence from parameterization...
01464 
01465    if (AA >= 2) {
01466 
01467       crel = 1.;
01468       crin = 1.;
01469 
01470       G4int i = 2;
01471       if (AA < 50) i = 1;
01472       else if (AA > 100) i = 3;
01473 
01474 // Protons and neutrons
01475       if (ipart == 14 || ipart == 16) {
01476          dy = cspnel[i - 1][je2] - cspnel[i - 1][je1];
01477          rc = dy/dx;
01478          b = cspnel[i - 1][je1] - rc*plab[je1];
01479          xsecel = rc*p + b;
01480          dy = cspnin[i - 1][je2] - cspnin[i - 1][je1];
01481          rc = dy/dx;
01482          b = cspnin[i - 1][je1] - rc*plab[je1];
01483          xsecin = rc*p + b;
01484          // The following is a first-order correction to Gheisha (GHESIG)
01485          // behaviour, where for the lighter elements the inelastic cross
01486          // section is not realistic for particles in the first momentum
01487          // bin.  In the first momentum bin, it better to interpolate 
01488          // in K.E.  Subject to further improvements.
01489          if (correctInelasticNearZero && je1 == 0 && i <= 3) {
01490             G4double m0 = aParticle->GetMass()/GeV;
01491             G4double T = std::sqrt(m0*m0 + p*p) - m0;
01492             dx = std::sqrt(m0*m0 + plab[1]*plab[1]) - m0;
01493             rc = dy/dx;
01494             xsecin = rc*T + b;
01495          }
01496 
01497          if (sigel >= 0.001) 
01498             crel = xsecel/(0.36*sigel*std::pow(G4double(csa[i]), 1.17));
01499          sigtot = sigel + sigin;
01500          if (sigtot >= 0.001) 
01501             crin = xsecin/(sigtot*std::pow(G4double(csa[i]), alph));
01502       }
01503 
01504       else if (ipart < 15) {
01505 // Calculate correction factors (crel, crin) from values
01506 // on Al, Cu, Pb.  Note that data is only available for pions and protons.
01507          G4double wgch = 0.5;
01508          if (AA < 20) { wgch = 0.5 + 0.5*std::exp(-G4double(AA - 1)); }
01509          sigel = wgch*sigel + (1. - wgch)*xsecel;
01510          sigin = wgch*sigin + (1. - wgch)*xsecin;
01511          
01512 // This section not for kaons
01513          if (ipart < 10) {
01514             dy = cspiel[i - 1][je2] - cspiel[i - 1][je1];
01515             rc = dy/dx;
01516             b = cspiel[i - 1][je1] - rc*plab[je1];
01517             xspiel = rc*p + b;
01518             dy = cspiin[i - 1][je2] - cspiin[i - 1][je1];
01519             rc = dy/dx;
01520             b = cspiin[i - 1][je1] - rc*plab[je1];
01521             xspiin = rc*p + b;
01522             if (verboseLevel > 1) {
01523                G4cout << "xspiel " << xspiel << G4endl;
01524                G4cout << "xspiin " << xspiin << G4endl;
01525             }               
01526             if (sigel >= 0.001) 
01527                crel = xspiel/(0.36*sigel*std::pow(G4double(csa[i]),1.17));
01528             sigtot = sigel + sigin;
01529             if (sigtot >= 0.001) 
01530                crin = xspiin/(sigtot*std::pow(G4double(csa[i]), alph));
01531          }
01532       }
01533 
01534 // Apply correction factors
01535       sigin = crin*(sigin + sigel)*g4pow->powZ(AA, alph);
01536       sigel = crel*0.36*sigel*g4pow->powZ(AA, 1.17);
01537       sigel = sigel*partel[ipart1];
01538       sigin = sigin*partin[ipart1];
01539    }
01540 
01541 // Correction factor for high (p > 100 GeV/c) energies:
01542    G4double corh = 1.;
01543    if (p > 100.) corh = 0.1085736156*std::log(p) + 0.5;
01544 
01545    sigel = corh*sigel;
01546    sigin = corh*sigin;
01547    // Convert cross section from mb to default units
01548    sigelastic = sigel*millibarn;
01549    siginelastic = sigin*millibarn;
01550 
01551    return;
01552 }
01553    
01554 
01555 G4double
01556 G4HadronCrossSections::GetCaptureCrossSection(const G4DynamicParticle* aParticle,
01557                                               G4int ZZ)
01558 {
01559   if (GetParticleCode(aParticle) != 16) return 0.;
01560   G4double ek = aParticle->GetKineticEnergy()/GeV;
01561   if (ek > 0.0327)  { return 0.; }
01562 
01563   G4double ekx = std::max(ek, 1.e-9);
01564   if (ekx != lastEkx) {
01565     lastEkx = ekx;
01566     lastEkxPower = std::pow(ekx*1.e6, 0.577);
01567   }
01568 
01569   G4int izno = ZZ;
01570   if (izno > 100) izno = 100;      // Not in GHESIG
01571   izno = izno - 1;      // For array indexing
01572   G4double sigcap = 11.12*cscap[izno]/lastEkxPower;
01573 
01574   // Convert cross section from mb to default units
01575   sigcap = sigcap*millibarn;
01576   return sigcap;
01577 }
01578 
01579 
01580 G4double
01581 G4HadronCrossSections::GetFissionCrossSection(const G4DynamicParticle* aParticle,
01582                                               G4int ZZ, G4int AA)
01583 {
01584   if (AA < 230) return 0;
01585 
01586   G4double ek = aParticle->GetKineticEnergy()/GeV;      
01587 
01588   G4int ie1 = 0;
01589   G4int ie2 = NFISS - 1;
01590   do {
01591     G4int midBin = (ie1 + ie2)/2;
01592     if (ek < ekfiss[midBin])
01593       ie2 = midBin;
01594     else
01595       ie1 = midBin;
01596   } while (ie2 - ie1 > 1); 
01597   G4int i = ie2;
01598   if (ek < ekfiss[0]) i = 0;
01599 
01600   G4int j = 4;
01601   if (ek <= 0.01) {
01602     if (ZZ == 92 && AA == 233) j = 1;
01603     else if (ZZ == 92 && AA == 235) j = 2;
01604     else if (ZZ == 94 && AA == 239) j = 3;
01605   }
01606 
01607   G4double z43ba;
01608   if (j == 4) {
01609     z43ba = ZZ*g4pow->Z13(ZZ)/G4double(AA);
01610     z43ba = std::max(-67. + 38.7*z43ba, 0.);
01611   } else {
01612     z43ba = 1.;
01613   }
01614   j = j - 1;      // For array indexing
01615 
01616   G4double sigfiss = csfiss[j][i]*z43ba;
01617   sigfiss = sigfiss*millibarn;
01618   return sigfiss;
01619 }
01620 
01621 
01622 G4int
01623 G4HadronCrossSections::GetParticleCode(const G4DynamicParticle* aParticle)
01624 {
01625   // Returns GHEISHA code for particle
01626   // Case entries ordered by estimated frequency
01627 
01628   G4int ipart;
01629 
01630   switch( aParticle->GetPDGcode()) {
01631     case 111:
01632       ipart = 8;   // pi0
01633       break;
01634     case 211:
01635       ipart = 7;   // pi+
01636       break;
01637     case -211:
01638       ipart = 9;   // pi-
01639       break;
01640     case 2112:
01641       ipart = 16;  // neutron
01642       break;
01643     case 2212:
01644       ipart = 14;  // proton
01645       break;
01646     case 321:        
01647       ipart = 10;  // K+
01648       break;
01649     case -321:
01650       ipart = 13;  // K-
01651       break;
01652     case 130:
01653       ipart = 12;  // K0L
01654       break;
01655     case 310:     
01656       ipart = 11;  // K0S
01657       break;
01658     case 1000010020:
01659       ipart = 30;  // deuteron
01660       break;
01661     case 1000010030:
01662       ipart = 31;  // triton
01663       break;
01664     case 1000020040:
01665       ipart = 32;  // alpha
01666       break;
01667     case 3122:
01668       ipart = 18;  // lambda
01669       break;
01670     case -2112:
01671       ipart = 17;  // anti-neutron
01672       break;
01673     case -2212:
01674       ipart = 15;  // anti-proton
01675       break;
01676     case -3122:
01677       ipart = 19;  // anti-lambda
01678       break;
01679     case 3222:
01680       ipart = 20;  // sigma+
01681       break;
01682     case 3212:
01683       ipart = 21;  // sigma0
01684       break;
01685     case 3112:
01686       ipart = 22;  // sigma-
01687       break;
01688     case 3322:
01689       ipart = 26;  // xi0
01690       break;
01691     case 3312:
01692       ipart = 27;  // xi-
01693       break;
01694     case 3334:
01695       ipart = 33;  // omega-
01696       break;
01697     case -3222:
01698       ipart = 23;  // anti-sigma+
01699       break;
01700     case -3212:
01701       ipart = 24;  // anti-sigma0
01702       break;
01703     case -3112:
01704       ipart = 25;  // anti-sigma-
01705       break;
01706     case -3322:
01707       ipart = 28;  // anti-xi0
01708       break;
01709     case -3312:
01710       ipart = 29;  // anti-xi-
01711       break;
01712     case -3334:
01713       ipart = 34;  // anti-omega-
01714       break;
01715     default:      
01716       throw G4HadronicException(__FILE__, __LINE__,
01717         "G4HadronCrossSections::GetParticleCode: unsupported particle");
01718       return 0;
01719   }
01720 
01721   return ipart;
01722 }

Generated on Mon May 27 17:48:25 2013 for Geant4 by  doxygen 1.4.7