// // ******************************************************************** // * License and Disclaimer * // * * // * The Geant4 software is copyright of the Copyright Holders of * // * the Geant4 Collaboration. It is provided under the terms and * // * conditions of the Geant4 Software License, included in the file * // * LICENSE and available at http://cern.ch/geant4/license . These * // * include a list of copyright holders. * // * * // * Neither the authors of this software system, nor their employing * // * institutes,nor the agencies providing financial support for this * // * work make any representation or warranty, express or implied, * // * regarding this software system or assume any liability for its * // * use. Please see the license in the file LICENSE and URL above * // * for the full disclaimer and the limitation of liability. * // * * // * This code implementation is the result of the scientific and * // * technical work of the GEANT4 collaboration. * // * By using, copying, modifying or distributing the software (or * // * any work based on the software) you agree to acknowledge its * // * use in resulting scientific publications, and indicate your * // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // // // GEANT4 tag $Name: geant4-09-04-beta-cand-01 $ // // // G4 Hadron Physics class G4HadronCrossSections // F.W. Jones, TRIUMF, 03-DEC-96 // // This class encapsulates cross section data and calculations // from the Geant3/Gheisha routine GHESIG. // The overloaded method MakePhysicsVector can be used to Generate // Physics Tables for different processes. // // Note: this is implemented as a SINGLETON class // // 27-MAR-97 FWJ: first version for Alpha release // 14-APR-97 FWJ: class name changed from G4LCrossSectionData // to G4HadronicCrossSections // 23-Apr-97 Johannes Peter Wellisch: debugging, add the residual particles // 23-MAY-97 FWJ: corrected problem with neutron cross sections // 20-JUN-97 FWJ: added some missing elastic data (e.g. K+) and // fixed a momentum/energy units problem in the physics vectors // 14-APR-98 FWJ: rewritten as class G4HadronCrossSections // and adapted to G4CrossSectionDataSet/DataStore class design. // 25-JUN-98 FWJ: optimised bin selection. // 06-NOV-98 FWJ: added first-order correction for low-energy // inelastic cross sections // #include "G4HadronCrossSections.hh" #include "G4ios.hh" // Initialize static pointer for singleton instance G4HadronCrossSections* G4HadronCrossSections::theInstance = 0; // Cross section tables from G3.21/GHEISHA routine GHESIG //--------------------------------------------------------------------- // Lab Momentum in GeV/c //--------------------------------------------------------------------- G4float G4HadronCrossSections::plab[TSIZE] = { 0.00000E+00 , 0.10000 , 0.15000 , 0.20000 , 0.25000 , 0.30000 , 0.35000 , 0.40000 , 0.45000 , 0.50000 , 0.55000 , 0.60000 , 0.65000 , 0.70000 , 0.75000 , 0.80000 , 0.85000 , 0.90000 , 0.95000 , 1.0000 , 1.1000 , 1.2000 , 1.3000 , 1.4000 , 1.5000 , 1.6000 , 1.8000 , 2.0000 , 2.2000 , 2.4000 , 2.6000 , 2.8000 , 3.0000 , 4.0000 , 5.0000 , 6.0000 , 8.0000 , 10.000 , 20.000 , 100.00 , 1000.0 }; //--------------------------------------------------------------------- // Elastic scattering on free protons //--------------------------------------------------------------------- G4float G4HadronCrossSections::csel[NPARTS][TSIZE] = { {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //1 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //2 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //3 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //4 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //5 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //6 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, // Elastic cross section for piplus - p {0.00000E+00, 6.0000 , 20.000 , 71.000 , 155.00 , //7 195.00 , 130.00 , 78.000 , 60.000 , 32.000 , 23.500 , 18.500 , 15.000 , 12.500 , 10.000 , 9.1000 , 8.6000 , 8.8000 , 9.5000 , 10.600 , 13.000 , 15.500 , 17.100 , 17.200 , 16.200 , 15.000 , 12.300 , 10.200 , 9.0000 , 8.0000 , 7.3000 , 6.8000 , 6.5000 , 5.8000 , 5.4000 , 5.2000 , 5.0000 , 4.9000 , 3.8000 , 3.2000 , 3.5000}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //8 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, // Elastic cross section for piminus - p {0.00000E+00, 1.0000 , 3.0000 , 8.0000 , 18.000 , //9 25.000 , 27.500 , 12.300 , 10.600 , 11.000 , 12.500 , 14.500 , 17.000 , 19.400 , 19.800 , 16.800 , 14.000 , 14.800 , 20.000 , 26.100 , 19.500 , 15.000 , 12.800 , 11.500 , 10.500 , 9.8000 , 8.8000 , 8.2000 , 7.8000 , 7.5000 , 7.2000 , 7.0000 , 6.8000 , 6.1000 , 5.7000 , 5.4000 , 4.9000 , 4.6000 , 4.0000 , 3.3000 , 3.5000}, {10.000 , 11.200 , 11.300 , 11.400 , 11.500 , //10 11.600 , 11.800 , 12.000 , 12.100 , 12.200 , 12.300 , 12.400 , 12.500 , 12.500 , 12.500 , 12.400 , 12.300 , 12.200 , 12.000 , 11.800 , 11.200 , 11.500 , 9.9000 , 9.4000 , 8.8000 , 8.4000 , 7.5000 , 6.9000 , 6.3000 , 5.9000 , 5.5000 , 5.2000 , 5.0000 , 4.0000 , 3.5000 , 3.3000 , 3.1000 , 3.1000 , 3.0000 , 2.5000 , 3.0000}, {10.000 , 11.200 , 11.300 , 11.400 , 11.500 , //11 11.600 , 11.800 , 12.000 , 12.100 , 12.200 , 12.300 , 12.400 , 12.500 , 12.500 , 12.500 , 12.400 , 12.300 , 12.200 , 12.000 , 11.800 , 11.200 , 11.500 , 9.9000 , 9.4000 , 8.8000 , 8.4000 , 7.5000 , 6.9000 , 6.3000 , 5.9000 , 5.5000 , 5.2000 , 5.0000 , 4.0000 , 3.5000 , 3.3000 , 3.1000 , 3.1000 , 3.0000 , 2.5000 , 3.0000}, {160.83 , 82.800 , 58.575 , 43.683 , 34.792 , //12 28.650 , 24.367 , 20.917 , 18.192 , 16.300 , 14.608 , 13.017 , 12.250 , 11.700 , 12.017 , 14.075 , 15.842 , 16.433 , 16.042 , 15.008 , 12.575 , 10.708 , 9.2000 , 8.0167 , 7.2833 , 7.0750 , 6.6333 , 6.1250 , 5.6583 , 5.2750 , 4.9333 , 4.6250 , 4.4583 , 3.7333 , 3.3833 , 3.1833 , 2.9833 , 2.7500 , 2.3667 , 2.2000 , 2.6000}, {300.00 , 140.00 , 97.000 , 70.000 , 55.000 , //13 45.000 , 37.000 , 31.000 , 26.000 , 23.000 , 20.000 , 17.000 , 15.500 , 14.500 , 14.700 , 18.500 , 22.000 , 23.000 , 22.500 , 20.700 , 16.500 , 14.000 , 11.500 , 9.6000 , 8.6000 , 8.5000 , 8.3000 , 7.6000 , 7.0000 , 6.4000 , 5.9000 , 5.5000 , 5.3000 , 4.4000 , 4.1000 , 3.9000 , 3.7000 , 3.3000 , 2.6000 , 2.5000 , 3.0000}, // Elastic cross section for p-p {1100.0 , 115.00 , 105.00 , 100.00 , 56.000 , //14 40.000 , 27.000 , 22.000 , 21.000 , 20.000 , 20.000 , 20.000 , 20.500 , 21.000 , 22.000 , 23.000 , 24.000 , 24.000 , 24.400 , 24.500 , 25.000 , 25.500 , 26.000 , 26.500 , 27.000 , 27.000 , 26.000 , 23.000 , 21.500 , 20.000 , 19.000 , 18.000 , 17.000 , 13.000 , 11.500 , 10.300 , 9.4000 , 9.0000 , 8.8000 , 7.0000 , 7.5000}, {200.00 , 163.00 , 141.00 , 120.00 , 111.00 , //15 99.500 , 92.500 , 86.500 , 82.000 , 78.000 , 74.000 , 71.000 , 67.500 , 65.000 , 62.500 , 59.700 , 58.100 , 56.300 , 54.700 , 52.700 , 50.000 , 48.400 , 47.000 , 46.000 , 45.200 , 42.800 , 39.200 , 36.300 , 32.800 , 30.400 , 28.100 , 26.300 , 24.500 , 19.250 , 16.840 , 14.600 , 12.340 , 11.210 , 8.8500 , 7.5000 , 7.5000} , {4200.0 , 440.00 , 420.00 , 400.00 , 230.00 , //16 160.00 , 105.00 , 80.000 , 62.000 , 50.000 , 45.000 , 41.000 , 38.000 , 36.000 , 35.000 , 34.000 , 33.000 , 32.000 , 31.500 , 31.000 , 30.500 , 30.000 , 29.500 , 29.000 , 28.500 , 28.000 , 26.000 , 23.000 , 21.500 , 20.000 , 19.000 , 18.000 , 17.000 , 13.000 , 11.500 , 10.300 , 9.4000 , 9.0000 , 8.8000 , 7.0000 , 7.5000} , {185.88 , 133.23 , 119.37 , 102.86 , 93.102 , //17 82.752 , 76.205 , 71.008 , 67.366 , 64.096 , 60.891 , 58.501 , 55.735 , 53.773 , 51.839 , 49.671 , 48.485 , 47.045 , 45.803 , 44.306 , 42.623 , 41.786 , 41.115 , 40.630 , 40.129 , 38.242 , 35.233 , 32.662 , 29.639 , 27.573 , 25.536 , 23.948 , 22.356 , 17.723 , 15.614 , 13.653 , 11.675 , 10.653 , 8.6198 , 7.4464 , 7.4821} , {1100.0 , 115.00 , 105.00 , 100.00 , 56.000 , //18 40.000 , 27.000 , 22.000 , 21.000 , 20.000 , 20.000 , 19.067 , 19.333 , 19.500 , 19.833 , 20.567 , 21.800 , 22.900 , 23.869 , 23.809 , 22.161 , 21.488 , 19.732 , 19.433 , 19.345 , 19.029 , 18.121 , 16.280 , 15.258 , 14.280 , 13.644 , 12.963 , 12.316 , 9.5333 , 8.4333 , 7.5728 , 6.9696 , 6.7518 , 6.6175 , 5.6000 , 6.1145} , {157.65 , 73.701 , 76.096 , 68.571 , 57.305 , //19 49.257 , 43.616 , 40.024 , 38.098 , 36.287 , 34.674 , 33.105 , 31.712 , 30.685 , 29.613 , 28.602 , 28.336 , 28.075 , 27.786 , 27.215 , 26.380 , 26.146 , 25.108 , 24.783 , 24.360 , 23.219 , 21.431 , 20.095 , 18.382 , 17.267 , 16.100 , 15.175 , 14.271 , 11.573 , 10.305 , 9.1471 , 8.0149 , 7.4349 , 6.2499 , 5.8928 , 6.0774} , {1100.0 , 115.00 , 105.00 , 100.00 , 56.000 , //20 40.000 , 27.000 , 22.000 , 21.000 , 20.000 , 20.000 , 19.067 , 19.333 , 19.500 , 19.833 , 20.567 , 21.800 , 22.900 , 23.869 , 23.809 , 22.161 , 21.488 , 19.732 , 19.433 , 19.345 , 19.029 , 18.121 , 16.280 , 15.258 , 14.280 , 13.644 , 12.963 , 12.316 , 9.5333 , 8.4333 , 7.5728 , 6.9696 , 6.7518 , 6.6175 , 5.6000 , 6.1145} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //21 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {1100.0 , 115.00 , 105.00 , 100.00 , 56.000 , //22 40.000 , 27.000 , 22.000 , 21.000 , 20.000 , 20.000 , 19.067 , 19.333 , 19.500 , 19.833 , 20.567 , 21.800 , 22.900 , 23.869 , 23.809 , 22.161 , 21.488 , 19.732 , 19.433 , 19.345 , 19.029 , 18.121 , 16.280 , 15.258 , 14.280 , 13.644 , 12.963 , 12.316 , 9.5333 , 8.4333 , 7.5728 , 6.9696 , 6.7518 , 6.6175 , 5.6000 , 6.1145} , {185.88 , 133.23 , 119.37 , 102.86 , 93.102 , //23 82.752 , 76.205 , 71.008 , 67.366 , 64.096 , 60.891 , 58.104 , 55.241 , 53.140 , 50.934 , 48.660 , 47.566 , 46.585 , 45.581 , 44.003 , 41.134 , 39.374 , 36.878 , 35.523 , 34.503 , 32.334 , 29.365 , 27.370 , 24.705 , 22.921 , 21.229 , 19.879 , 18.559 , 14.625 , 12.758 , 11.041 , 9.3440 , 8.5484 , 6.7104 , 6.0000 , 6.1131} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //24 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {157.65 , 73.701 , 76.096 , 68.571 , 57.305 , //25 49.257 , 43.616 , 40.024 , 38.098 , 36.287 , 34.674 , 33.105 , 31.712 , 30.685 , 29.613 , 28.602 , 28.336 , 28.075 , 27.786 , 27.215 , 26.380 , 26.146 , 25.108 , 24.783 , 24.360 , 23.219 , 21.431 , 20.095 , 18.382 , 17.267 , 16.100 , 15.175 , 14.271 , 11.573 , 10.305 , 9.1471 , 8.0149 , 7.4349 , 6.2499 , 5.8928 , 6.0774} , {1100.0 , 115.00 , 105.00 , 100.00 , 56.000 , //26 40.000 , 27.000 , 22.000 , 21.000 , 20.000 , 20.000 , 18.133 , 18.167 , 18.000 , 17.667 , 18.133 , 19.600 , 21.800 , 23.338 , 23.118 , 19.323 , 17.476 , 13.464 , 12.367 , 11.691 , 11.057 , 10.242 , 9.5593 , 9.0151 , 8.5591 , 8.2884 , 7.9253 , 7.6311 , 6.0667 , 5.3667 , 4.8456 , 4.5392 , 4.5036 , 4.4351 , 4.2000 , 4.7289} , {1100.0 , 115.00 , 105.00 , 100.00 , 56.000 , //27 40.000 , 27.000 , 22.000 , 21.000 , 20.000 , 20.000 , 18.133 , 18.167 , 18.000 , 17.667 , 18.133 , 19.600 , 21.800 , 23.338 , 23.118 , 19.323 , 17.476 , 13.464 , 12.367 , 11.691 , 11.057 , 10.242 , 9.5593 , 9.0151 , 8.5591 , 8.2884 , 7.9253 , 7.6311 , 6.0667 , 5.3667 , 4.8456 , 4.5392 , 4.5036 , 4.4351 , 4.2000 , 4.7289} , {157.65 , 73.701 , 76.096 , 68.571 , 57.305 , //28 49.257 , 43.616 , 40.024 , 38.098 , 36.287 , 34.674 , 32.708 , 31.218 , 30.052 , 28.707 , 27.591 , 27.417 , 27.615 , 27.564 , 26.913 , 24.891 , 23.734 , 20.871 , 19.677 , 18.734 , 17.311 , 15.563 , 14.803 , 13.448 , 12.615 , 11.794 , 11.106 , 10.474 , 8.4745 , 7.4498 , 6.5350 , 5.6835 , 5.3300 , 4.3406 , 4.4464 , 4.7083} , {143.53 , 43.935 , 54.462 , 51.429 , 39.407 , //29 32.510 , 27.321 , 24.532 , 23.465 , 22.383 , 21.566 , 20.209 , 19.453 , 18.825 , 18.046 , 17.562 , 17.802 , 18.360 , 18.667 , 18.519 , 17.514 , 17.120 , 14.985 , 14.306 , 13.663 , 12.753 , 11.596 , 11.165 , 10.287 , 9.7882 , 9.2294 , 8.7539 , 8.3300 , 6.9480 , 6.2234 , 5.5881 , 5.0189 , 4.7733 , 4.1104 , 4.3929 , 4.6905} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //30 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //31 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //32 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {1100.0 , 115.00 , 105.00 , 100.00 , 56.000 , //33 40.000 , 27.000 , 22.000 , 21.000 , 20.000 , 20.000 , 18.133 , 18.167 , 18.000 , 17.667 , 18.133 , 19.600 , 21.800 , 23.338 , 23.118 , 19.323 , 17.476 , 13.464 , 12.367 , 11.691 , 11.057 , 10.242 , 9.5593 , 9.0151 , 8.5591 , 8.2884 , 7.9253 , 7.6311 , 6.0667 , 5.3667 , 4.8456 , 4.5392 , 4.5036 , 4.4351 , 4.2000 , 4.7289} , {143.53 , 43.935 , 54.462 , 51.429 , 39.407 , //34 32.510 , 27.321 , 24.532 , 23.465 , 22.383 , 21.566 , 20.209 , 19.453 , 18.825 , 18.046 , 17.562 , 17.802 , 18.360 , 18.667 , 18.519 , 17.514 , 17.120 , 14.985 , 14.306 , 13.663 , 12.753 , 11.596 , 11.165 , 10.287 , 9.7882 , 9.2294 , 8.7539 , 8.3300 , 6.9480 , 6.2234 , 5.5881 , 5.0189 , 4.7733 , 4.1104 , 4.3929 , 4.6905} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //35 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00} }; //--------------------------------------------------------------------- // Inelastic scattering on free protons //--------------------------------------------------------------------- G4float G4HadronCrossSections::csin[NPARTS][TSIZE] = { {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //1 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //2 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //3 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //4 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //5 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //6 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, // Inelastic cross section for piplus - p {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //7 0.00000E+00, 0.00000E+00, 0.50000 , 1.2000 , 1.7000 , 2.2500 , 3.0000 , 3.6000 , 4.5000 , 5.4000 , 6.3000 , 8.6000 , 9.0000 , 10.000 , 11.500 , 14.000 , 17.000 , 19.500 , 22.000 , 24.000 , 21.500 , 18.500 , 19.000 , 20.500 , 22.200 , 23.000 , 23.300 , 23.000 , 21.000 , 20.500 , 20.200 , 20.100 , 20.000 , 20.000 , 20.000 , 21.000}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //8 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, // Inelastic cross section for piminus - p {0.00000E+00, 3.0000 , 9.2000 , 20.500 , 36.500 , //9 45.000 , 28.000 , 19.500 , 15.500 , 14.200 , 15.500 , 17.500 , 20.000 , 23.000 , 26.000 , 20.000 , 23.000 , 26.500 , 32.000 , 35.000 , 28.500 , 22.000 , 22.500 , 23.500 , 24.000 , 24.500 , 26.000 , 27.500 , 27.500 , 27.000 , 26.500 , 25.500 , 25.000 , 23.000 , 22.500 , 22.200 , 22.000 , 22.000 , 21.200 , 20.700 , 21.000} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //10 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.50000 , 1.5000 , 2.7000 , 3.8000 , 4.8000 , 6.5000 , 7.6000 , 8.4000 , 9.0000 , 9.4000 , 9.8000 , 10.500 , 11.000 , 11.500 , 11.800 , 12.200 , 12.400 , 12.600 , 13.200 , 13.500 , 13.700 , 14.000 , 14.200 , 14.500 , 16.400 , 17.000} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //11 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.50000 , 1.5000 , 2.7000 , 3.8000 , 4.8000 , 6.5000 , 7.6000 , 8.4000 , 9.0000 , 9.4000 , 9.8000 , 10.500 , 11.000 , 11.500 , 11.800 , 12.200 , 12.400 , 12.600 , 13.200 , 13.500 , 13.700 , 14.000 , 14.200 , 14.500 , 16.400 , 17.000} , {266.67 , 133.33 , 83.333 , 57.083 , 44.500 , //12 33.250 , 24.583 , 20.833 , 18.333 , 16.083 , 15.625 , 15.083 , 14.833 , 15.083 , 15.833 , 17.042 , 18.958 , 20.758 , 22.533 , 22.825 , 21.250 , 18.567 , 17.767 , 18.100 , 19.933 , 20.783 , 21.225 , 21.000 , 20.558 , 20.258 , 20.017 , 19.767 , 19.600 , 19.183 , 18.850 , 18.575 , 18.350 , 18.175 , 17.808 , 17.558 , 19.250} , {400.00 , 200.00 , 120.00 , 81.000 , 62.000 , //13 47.000 , 35.000 , 28.000 , 24.000 , 21.000 , 19.500 , 19.000 , 18.800 , 19.000 , 20.000 , 21.000 , 23.000 , 25.000 , 27.000 , 27.500 , 25.500 , 22.000 , 20.800 , 21.000 , 23.000 , 24.000 , 24.000 , 23.800 , 23.000 , 22.500 , 22.000 , 21.600 , 21.400 , 21.000 , 20.500 , 20.200 , 19.800 , 19.500 , 18.600 , 17.500 , 20.000} , // Inelastic cross section for p - p {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //14 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.10000 , 1.5000 , 7.0000 , 12.000 , 17.000 , 19.500 , 20.500 , 22.000 , 23.500 , 24.800 , 25.800 , 26.500 , 27.000 , 27.500 , 28.000 , 30.000 , 31.000 , 32.000 , 32.500 , 32.500 , 33.000 , 33.500 , 33.500} , {1500.0 , 1160.0 , 310.00 , 230.00 , 178.00 , //15 153.00 , 134.00 , 124.00 , 113.00 , 106.00 , 101.00 , 96.000 , 92.000 , 89.000 , 87.000 , 84.000 , 81.000 , 78.500 , 76.500 , 75.000 , 72.000 , 70.000 , 68.000 , 64.500 , 63.000 , 62.000 , 61.000 , 59.500 , 58.500 , 56.500 , 56.500 , 56.000 , 55.500 , 52.000 , 50.000 , 48.000 , 45.000 , 44.000 , 39.200 , 34.500 , 34.500} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //16 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.10000 , 1.5000 , 7.0000 , 12.000 , 17.000 , 19.500 , 20.500 , 22.000 , 23.500 , 24.800 , 25.800 , 26.500 , 27.000 , 27.500 , 28.000 , 30.000 , 31.000 , 32.000 , 32.500 , 32.500 , 33.000 , 33.500 , 34.000} , {1394.1 , 948.17 , 262.43 , 197.14 , 149.30 , //17 127.25 , 110.39 , 101.79 , 92.834 , 87.104 , 83.109 , 79.099 , 75.965 , 73.627 , 72.161 , 69.889 , 67.595 , 65.595 , 64.057 , 63.054 , 61.377 , 60.434 , 59.485 , 56.970 , 55.931 , 55.398 , 54.827 , 53.538 , 52.861 , 51.247 , 51.344 , 50.992 , 50.644 , 47.876 , 46.358 , 44.887 , 42.577 , 41.815 , 38.180 , 34.254 , 34.418} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //18 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.97815E-01, 1.4577 , 6.2052 , 10.112 , 12.902 , 14.300 , 14.688 , 15.505 , 16.379 , 17.554 , 18.309 , 18.920 , 19.389 , 19.804 , 20.284 , 22.000 , 22.733 , 23.527 , 24.097 , 24.382 , 24.816 , 26.800 , 27.719} , {1182.4 , 524.50 , 167.30 , 131.43 , 91.895 , //19 75.743 , 63.184 , 57.376 , 52.502 , 49.313 , 47.326 , 44.762 , 43.222 , 42.015 , 41.221 , 40.244 , 39.504 , 39.145 , 38.860 , 38.731 , 37.987 , 37.814 , 36.326 , 34.750 , 33.953 , 33.635 , 33.349 , 32.938 , 32.785 , 32.092 , 32.373 , 32.312 , 32.329 , 31.261 , 30.597 , 30.073 , 29.228 , 29.182 , 27.683 , 27.107 , 27.956} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //20 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.97815E-01, 1.4577 , 6.2052 , 10.112 , 12.902 , 14.300 , 14.688 , 15.505 , 16.379 , 17.554 , 18.309 , 18.920 , 19.389 , 19.804 , 20.284 , 22.000 , 22.733 , 23.527 , 24.097 , 24.382 , 24.816 , 26.800 , 27.719} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //21 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //22 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.97815E-01, 1.4577 , 6.2052 , 10.112 , 12.902 , 14.300 , 14.688 , 15.505 , 16.379 , 17.554 , 18.309 , 18.920 , 19.389 , 19.804 , 20.284 , 22.000 , 22.733 , 23.527 , 24.097 , 24.382 , 24.816 , 26.800 , 27.719} , {1394.1 , 948.17 , 262.43 , 197.14 , 149.30 , //23 127.25 , 110.39 , 101.79 , 92.834 , 87.104 , 83.109 , 78.563 , 75.292 , 72.760 , 70.900 , 68.467 , 66.314 , 64.955 , 63.746 , 62.623 , 59.233 , 56.946 , 53.355 , 49.810 , 48.090 , 46.839 , 45.695 , 44.863 , 44.062 , 42.599 , 42.684 , 42.328 , 42.041 , 39.508 , 37.880 , 36.299 , 34.075 , 33.553 , 29.723 , 27.600 , 28.120} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //24 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {1182.4 , 524.50 , 167.30 , 131.43 , 91.895 , //25 75.743 , 63.184 , 57.376 , 52.502 , 49.313 , 47.326 , 44.762 , 43.222 , 42.015 , 41.221 , 40.244 , 39.504 , 39.145 , 38.860 , 38.731 , 37.987 , 37.814 , 36.326 , 34.750 , 33.953 , 33.635 , 33.349 , 32.938 , 32.785 , 32.092 , 32.373 , 32.312 , 32.329 , 31.261 , 30.597 , 30.073 , 29.228 , 29.182 , 27.683 , 27.107 , 27.956} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //26 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.95639E-01, 1.4154 , 5.4104 , 8.2240 , 8.8031 , 9.1000 , 8.8761 , 9.0095 , 9.2576 , 10.307 , 10.818 , 11.341 , 11.778 , 12.108 , 12.569 , 14.000 , 14.467 , 15.054 , 15.694 , 16.263 , 16.632 , 20.100 , 21.438} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //27 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.95639E-01, 1.4154 , 5.4104 , 8.2240 , 8.8031 , 9.1000 , 8.8761 , 9.0095 , 9.2576 , 10.307 , 10.818 , 11.341 , 11.778 , 12.108 , 12.569 , 14.000 , 14.467 , 15.054 , 15.694 , 16.263 , 16.632 , 20.100 , 21.438} , {1182.4 , 524.50 , 167.30 , 131.43 , 91.895 , //28 75.743 , 63.184 , 57.376 , 52.502 , 49.313 , 47.326 , 44.225 , 42.549 , 41.148 , 39.960 , 38.822 , 38.223 , 38.505 , 38.549 , 38.301 , 35.843 , 34.326 , 30.196 , 27.590 , 26.112 , 25.076 , 24.217 , 24.264 , 23.985 , 23.445 , 23.713 , 23.647 , 23.726 , 22.892 , 22.119 , 21.485 , 20.726 , 20.921 , 19.226 , 20.454 , 21.658} , {1076.5 , 312.66 , 119.74 , 98.571 , 63.193 , //29 49.990 , 39.579 , 35.168 , 32.335 , 30.417 , 29.434 , 27.325 , 26.514 , 25.775 , 25.120 , 24.711 , 24.818 , 25.600 , 26.106 , 26.355 , 25.220 , 24.760 , 21.681 , 20.060 , 19.044 , 18.474 , 18.044 , 18.301 , 18.347 , 18.192 , 18.557 , 18.639 , 18.870 , 18.769 , 18.478 , 18.372 , 18.302 , 18.735 , 18.206 , 20.207 , 21.576} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //30 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //31 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //32 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //33 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.95639E-01, 1.4154 , 5.4104 , 8.2240 , 8.8031 , 9.1000 , 8.8761 , 9.0095 , 9.2576 , 10.307 , 10.818 , 11.341 , 11.778 , 12.108 , 12.569 , 14.000 , 14.467 , 15.054 , 15.694 , 16.263 , 16.632 , 20.100 , 21.438} , {1076.5 , 312.66 , 119.74 , 98.571 , 63.193 , //34 49.990 , 39.579 , 35.168 , 32.335 , 30.417 , 29.434 , 27.325 , 26.514 , 25.775 , 25.120 , 24.711 , 24.818 , 25.600 , 26.106 , 26.355 , 25.220 , 24.760 , 21.681 , 20.060 , 19.044 , 18.474 , 18.044 , 18.301 , 18.347 , 18.192 , 18.557 , 18.639 , 18.870 , 18.769 , 18.478 , 18.372 , 18.302 , 18.735 , 18.206 , 20.207 , 21.576} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //35 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00} }; //--------------------------------------------------------------------- // Elastic scattering of pion on nucleus //--------------------------------------------------------------------- G4float G4HadronCrossSections::cspiel[3][TSIZE] = { // Elastic cross section for Pi on Al (mb) {0.00000E+00, 350.00 , 580.00 , 600.00 , 550.00 , //1 450.00 , 410.00 , 370.00 , 340.00 , 230.00 , 220.00 , 205.00 , 180.00 , 155.00 , 145.00 , 140.00 , 160.00 , 195.00 , 235.00 , 250.00 , 270.00 , 280.00 , 300.00 , 300.00 , 290.00 , 285.00 , 265.00 , 240.00 , 230.00 , 222.00 , 204.00 , 196.00 , 190.00 , 170.00 , 170.00 , 160.00 , 150.00 , 140.00 , 120.00 , 80.000 , 80.000}, // Elastic cross section for Pi on Cu (mb) {0.00000E+00, 700.00 , 1000.0 , 1200.0 , 1300.0 , //2 1300.0 , 1250.0 , 1250.0 , 1100.0 , 1000.0 , 940.00 , 740.00 , 700.00 , 670.00 , 660.00 , 670.00 , 680.00 , 700.00 , 735.00 , 800.00 , 810.00 , 820.00 , 820.00 , 810.00 , 800.00 , 800.00 , 700.00 , 600.00 , 500.00 , 470.00 , 440.00 , 410.00 , 380.00 , 330.00 , 330.00 , 330.00 , 330.00 , 330.00 , 285.00 , 240.00 , 240.00}, // Elastic cross section for Pi on Pb (mb) {0.00000E+00, 1700.0 , 2200.0 , 2200.0 , 1800.0 , //3 1300.0 , 1200.0 , 900.00 , 900.00 , 1000.0 , 1100.0 , 1300.0 , 1400.0 , 1420.0 , 1490.0 , 1560.0 , 1580.0 , 1690.0 , 1795.0 , 2000.0 , 2070.0 , 2140.0 , 2050.0 , 2010.0 , 1970.0 , 1880.0 , 1690.0 , 1500.0 , 1420.0 , 1390.0 , 1350.0 , 1360.0 , 1370.0 , 1280.0 , 1290.0 , 1295.0 , 1250.0 , 1200.0 , 1050.0 , 900.00 , 900.00} }; //--------------------------------------------------------------------- // Inelastic scattering of pion on nucleus //--------------------------------------------------------------------- G4float G4HadronCrossSections::cspiin[3][TSIZE] = { // Inelastic cross section for Pi on Al (mb) {0.00000E+00, 200.00 , 320.00 , 500.00 , 600.00 , //1 600.00 , 590.00 , 530.00 , 510.00 , 470.00 , 430.00 , 425.00 , 420.00 , 425.00 , 425.00 , 430.00 , 430.00 , 435.00 , 435.00 , 440.00 , 430.00 , 430.00 , 420.00 , 420.00 , 420.00 , 415.00 , 415.00 , 410.00 , 410.00 , 408.00 , 406.00 , 404.00 , 400.00 , 380.00 , 340.00 , 340.00 , 340.00 , 340.00 , 340.00 , 340.00 , 340.00} , // Inelastic cross section for Pi on Cu (mb) {0.00000E+00, 400.00 , 800.00 , 1000.0 , 1100.0 , //2 1200.0 , 1150.0 , 1050.0 , 1000.0 , 900.00 , 860.00 , 860.00 , 850.00 , 850.00 , 840.00 , 830.00 , 820.00 , 810.00 , 805.00 , 800.00 , 800.00 , 800.00 , 800.00 , 800.00 , 800.00 , 800.00 , 800.00 , 800.00 , 800.00 , 780.00 , 760.00 , 740.00 , 720.00 , 720.00 , 700.00 , 690.00 , 680.00 , 670.00 , 665.00 , 660.00 , 660.00} , // Inelastic cross section for Pi on Pb (mb) {0.00000E+00, 1000.0 , 1900.0 , 2600.0 , 2900.0 , //3 3000.0 , 2800.0 , 2600.0 , 2500.0 , 2300.0 , 2200.0 , 2000.0 , 1900.0 , 1880.0 , 1860.0 , 1840.0 , 1820.0 , 1810.0 , 1805.0 , 1800.0 , 1780.0 , 1760.0 , 1750.0 , 1740.0 , 1730.0 , 1720.0 , 1710.0 , 1700.0 , 1680.0 , 1660.0 , 1650.0 , 1640.0 , 1630.0 , 1620.0 , 1610.0 , 1605.0 , 1600.0 , 1600.0 , 1550.0 , 1500.0 , 1500.0} }; //--------------------------------------------------------------------- // Elastic scattering of proton on nucleus //--------------------------------------------------------------------- G4float G4HadronCrossSections::cspnel[3][TSIZE] = { // Elastic cross section for P on Al (mb) {2100.0 , 1800.0 , 1500.0 , 1050.0 , 900.00 , //1 950.00 , 800.00 , 650.00 , 570.00 , 390.00 , 300.00 , 240.00 , 230.00 , 230.00 , 220.00 , 220.00 , 225.00 , 225.00 , 240.00 , 240.00 , 290.00 , 330.00 , 335.00 , 350.00 , 355.00 , 370.00 , 350.00 , 330.00 , 310.00 , 290.00 , 270.00 , 265.00 , 260.00 , 230.00 , 210.00 , 210.00 , 200.00 , 200.00 , 190.00 , 180.00 , 180.00}, // Elastic cross section for P on Cu (mb) {3800.0 , 2900.0 , 1850.0 , 1550.0 , 1450.0 , //2 1520.0 , 1460.0 , 1300.0 , 1140.0 , 880.00 , 700.00 , 620.00 , 540.00 , 560.00 , 460.00 , 460.00 , 470.00 , 470.00 , 480.00 , 480.00 , 580.00 , 600.00 , 610.00 , 620.00 , 620.00 , 620.00 , 590.00 , 580.00 , 460.00 , 440.00 , 420.00 , 400.00 , 480.00 , 430.00 , 380.00 , 380.00 , 380.00 , 380.00 , 380.00 , 380.00 , 380.00}, // Elastic cross section for P on Pb (mb) {7000.0 , 6000.0 , 4500.0 , 3350.0 , 2700.0 , //3 3000.0 , 3550.0 , 3970.0 , 3280.0 , 2490.0 , 2100.0 , 1510.0 , 1440.0 , 1370.0 , 1370.0 , 1370.0 , 1400.0 , 1400.0 , 1420.0 , 1420.0 , 1440.0 , 1460.0 , 1460.0 , 1450.0 , 1450.0 , 1470.0 , 1400.0 , 1400.0 , 1380.0 , 1370.0 , 1360.0 , 1350.0 , 1340.0 , 1330.0 , 1320.0 , 1310.0 , 1305.0 , 1300.0 , 1300.0 , 1300.0 , 1300.0} }; //--------------------------------------------------------------------- // Inelastic scattering of proton on nucleus //--------------------------------------------------------------------- G4float G4HadronCrossSections::cspnin[3][TSIZE] = { // Inelastic cross section for P on Al (mb) {0.00000E+00, 200.00 , 400.00 , 800.00 , 800.00 , //1 550.00 , 500.00 , 450.00 , 430.00 , 410.00 , 400.00 , 390.00 , 380.00 , 370.00 , 370.00 , 370.00 , 365.00 , 365.00 , 360.00 , 360.00 , 360.00 , 360.00 , 365.00 , 370.00 , 375.00 , 380.00 , 400.00 , 410.00 , 420.00 , 430.00 , 440.00 , 440.00 , 440.00 , 440.00 , 440.00 , 440.00 , 440.00 , 440.00 , 440.00 , 440.00 , 440.00} , // Inelastic cross section for P on Cu (mb) {0.00000E+00, 400.00 , 950.00 , 1050.0 , 1050.0 , //2 980.00 , 940.00 , 900.00 , 860.00 , 820.00 , 800.00 , 780.00 , 760.00 , 740.00 , 740.00 , 740.00 , 730.00 , 730.00 , 720.00 , 720.00 , 720.00 , 720.00 , 730.00 , 740.00 , 750.00 , 760.00 , 800.00 , 820.00 , 820.00 , 820.00 , 820.00 , 820.00 , 820.00 , 820.00 , 820.00 , 820.00 , 820.00 , 820.00 , 820.00 , 820.00 , 820.00} , // Inelastic cross section for P on Pb (mb) {0.00000E+00, 0.00000E+00, 500.00 , 1450.0 , 1700.0 , //3 1800.0 , 1750.0 , 1730.0 , 1720.0 , 1710.0 , 1700.0 , 1690.0 , 1660.0 , 1630.0 , 1630.0 , 1630.0 , 1600.0 , 1600.0 , 1580.0 , 1580.0 , 1580.0 , 1580.0 , 1600.0 , 1630.0 , 1650.0 , 1670.0 , 1760.0 , 1800.0 , 1800.0 , 1800.0 , 1800.0 , 1800.0 , 1800.0 , 1800.0 , 1800.0 , 1800.0 , 1800.0 , 1800.0 , 1800.0 , 1800.0 , 1800.0} }; //--------------------------------------------------------------------- // Lab kinetic energy in GeV //--------------------------------------------------------------------- G4float G4HadronCrossSections::elab[NELAB] = { 0.10000E-03, 0.20000E-03, 0.30000E-03, 0.40000E-03, 0.50000E-03, 0.70000E-03, 0.10000E-02, 0.20000E-02, 0.30000E-02, 0.40000E-02, 0.50000E-02, 0.70000E-02, 0.10000E-01, 0.15000E-01, 0.20000E-01, 0.25000E-01, 0.32700E-01 }; //--------------------------------------------------------------------- // Tables for low-energy (< 32.7 MeV) neutrons //--------------------------------------------------------------------- // Atomic weight G4float G4HadronCrossSections::cnlwat[NCNLW] = { 1.0000 , 16.000 , 27.000 , 56.000 , 59.000 , 64.000 , 91.000 , 112.00 , 119.00 , 127.00 , 137.00 , 181.00 , 207.00 , 209.00 , 238.00 }; // Elastic cross section G4float G4HadronCrossSections::cnlwel[NCNLW][NELAB] = { {6000.0 , 5500.0 , 5200.0 , 4900.0 , 4800.0 , //1 4400.0 , 4000.0 , 2900.0 , 2200.0 , 1800.0 , 1400.0 , 1100.0 , 900.00 , 700.00 , 600.00 , 560.00 , 520.00} , {5400.0 , 5050.0 , 4800.0 , 4600.0 , 4399.0 , //2 4090.0 , 3700.0 , 2600.0 , 1950.0 , 1600.0 , 1300.0 , 900.00 , 700.00 , 800.00 , 1050.0 , 1250.0 , 1320.0} , {5500.0 , 5150.0 , 4900.0 , 4699.0 , 4490.0 , //3 4150.0 , 3750.0 , 2790.0 , 2100.0 , 1650.0 , 1300.0 , 950.00 , 800.00 , 860.00 , 1000.0 , 1090.0 , 1080.0} , {5499.0 , 4970.0 , 4450.0 , 4080.0 , 3750.0 , //4 3380.0 , 2900.0 , 2400.0 , 2380.0 , 2350.0 , 2300.0 , 2100.0 , 1720.0 , 1370.0 , 1200.0 , 1060.0 , 870.00} , {5399.0 , 4710.0 , 4180.0 , 3760.0 , 3460.0 , //5 3150.0 , 2730.0 , 2270.0 , 1850.0 , 1850.0 , 2130.0 , 2330.0 , 2120.0 , 1640.0 , 1310.0 , 1100.0 , 1050.0} , {5099.0 , 4405.0 , 3825.0 , 3455.0 , 3125.0 , //6 2695.0 , 2350.0 , 1850.0 , 1580.0 , 1820.0 , 2050.0 , 2210.0 , 2000.0 , 1590.0 , 1310.0 , 1120.0 , 1040.0} , {6290.0 , 5960.0 , 5640.0 , 5370.0 , 5150.0 , //7 4800.0 , 4250.0 , 3150.0 , 2470.0 , 2100.0 , 2230.0 , 2420.0 , 2450.0 , 2050.0 , 1760.0 , 1550.0 , 1330.0} , {6885.0 , 6650.0 , 6350.0 , 6150.0 , 6000.0 , //8 5700.0 , 5360.0 , 4250.0 , 2800.0 , 1870.0 , 1810.0 , 1820.0 , 2170.0 , 2450.0 , 2150.0 , 1700.0 , 1390.0} , {6600.0 , 6500.0 , 6400.0 , 6249.0 , 6190.0 , //9 5950.0 , 5520.0 , 4250.0 , 2750.0 , 1900.0 , 1850.0 , 1950.0 , 2340.0 , 2800.0 , 2540.0 , 2100.0 , 1760.0} , {7400.0 , 7200.0 , 6999.0 , 6840.0 , 6655.0 , //10 6320.0 , 5820.0 , 4400.0 , 2850.0 , 2000.0 , 1800.0 , 1800.0 , 2150.0 , 2600.0 , 2350.0 , 1950.0 , 2100.0} , {7900.0 , 7700.0 , 7499.0 , 7390.0 , 7202.0 , //11 6810.0 , 6360.0 , 4920.0 , 3450.0 , 2600.0 , 2200.0 , 1950.0 , 2300.0 , 2800.0 , 2650.0 , 2250.0 , 2050.0} , {7900.0 , 7750.0 , 7699.0 , 7590.0 , 7450.0 , //12 7200.0 , 6850.0 , 5650.0 , 4400.0 , 3700.0 , 3400.0 , 2800.0 , 2700.0 , 3100.0 , 3250.0 , 3100.0 , 2750.0} , {6100.0 , 5950.0 , 5750.0 , 5599.0 , 5440.0 , //13 5200.0 , 4800.0 , 4300.0 , 5800.0 , 5750.0 , 4800.0 , 3420.0 , 2650.0 , 3200.0 , 3650.0 , 3500.0 , 2980.0} , {6100.0 , 5950.0 , 5750.0 , 5599.0 , 5440.0 , //14 5200.0 , 4800.0 , 4300.0 , 5800.0 , 5750.0 , 4800.0 , 3420.0 , 2650.0 , 3200.0 , 3650.0 , 3500.0 , 2980.0} , {6600.0 , 6350.0 , 6100.0 , 5899.0 , 5690.0 , //15 5300.0 , 4850.0 , 4450.0 , 5650.0 , 5700.0 , 4950.0 , 3850.0 , 3050.0 , 3050.0 , 3460.0 , 3650.0 , 3340.0} }; // Inelastic cross section G4float G4HadronCrossSections::cnlwin[NCNLW][NELAB] = { {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //1 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 1.0000 , //2 10.000 , 50.000 , 100.00 , 200.00 , 300.00 , 400.00 , 600.00 , 700.00 , 750.00 , 700.00 , 700.00 , 680.00} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 1.0000 , 10.000 , //3 50.000 , 100.00 , 260.00 , 450.00 , 600.00 , 700.00 , 800.00 , 900.00 , 940.00 , 900.00 , 860.00 , 820.00} , {1.0000 , 80.000 , 200.00 , 320.00 , 400.00 , //4 520.00 , 700.00 , 1000.0 , 1120.0 , 1200.0 , 1200.0 , 1200.0 , 1180.0 , 1130.0 , 1100.0 , 1090.0 , 1080.0} , {1.0000 , 90.000 , 220.00 , 340.00 , 420.00 , //5 550.00 , 720.00 , 1080.0 , 1300.0 , 1400.0 , 1420.0 , 1420.0 , 1380.0 , 1260.0 , 1190.0 , 1150.0 , 1100.0} , {1.0000 , 95.000 , 225.00 , 345.00 , 425.00 , //6 555.00 , 750.00 , 1150.0 , 1500.0 , 1680.0 , 1700.0 , 1690.0 , 1550.0 , 1360.0 , 1240.0 , 1180.0 , 1120.0} , {10.000 , 140.00 , 260.00 , 380.00 , 450.00 , //7 600.00 , 750.00 , 1200.0 , 1580.0 , 1800.0 , 1820.0 , 1830.0 , 1800.0 , 1750.0 , 1690.0 , 1650.0 , 1620.0} , {15.000 , 150.00 , 300.00 , 400.00 , 500.00 , //8 650.00 , 840.00 , 1500.0 , 2100.0 , 2130.0 , 2140.0 , 2130.0 , 2080.0 , 2000.0 , 1950.0 , 1900.0 , 1860.0} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 1.0000 , 10.000 , //9 150.00 , 380.00 , 1000.0 , 1650.0 , 2100.0 , 2100.0 , 2100.0 , 2060.0 , 1950.0 , 1860.0 , 1800.0 , 1740.0} , {0.00000E+00, 0.00000E+00, 1.0000 , 10.000 , 45.000 , //10 180.00 , 380.00 , 1050.0 , 1900.0 , 2300.0 , 2300.0 , 2200.0 , 2150.0 , 2000.0 , 1900.0 , 1800.0 , 1750.0} , {0.00000E+00, 0.00000E+00, 1.0000 , 10.000 , 48.000 , //11 190.00 , 390.00 , 1080.0 , 2000.0 , 2400.0 , 2400.0 , 2300.0 , 2200.0 , 2100.0 , 1950.0 , 1850.0 , 1800.0} , {0.00000E+00, 0.00000E+00, 1.0000 , 10.000 , 50.000 , //12 200.00 , 400.00 , 1100.0 , 2100.0 , 2500.0 , 2500.0 , 2450.0 , 2300.0 , 2100.0 , 2000.0 , 1900.0 , 1850.0} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 1.0000 , 10.000 , //13 100.00 , 350.00 , 900.00 , 1400.0 , 2000.0 , 2300.0 , 2380.0 , 2400.0 , 2300.0 , 2250.0 , 2200.0 , 2120.0} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 1.0000 , 10.000 , //14 100.00 , 350.00 , 900.00 , 1400.0 , 2000.0 , 2300.0 , 2380.0 , 2400.0 , 2300.0 , 2250.0 , 2200.0 , 2120.0} , {0.00000E+00, 0.00000E+00, 0.00000E+00, 1.0000 , 10.000 , //15 100.00 , 400.00 , 950.00 , 1600.0 , 2200.0 , 2550.0 , 2750.0 , 2700.0 , 2600.0 , 2540.0 , 2450.0 , 2360.0} }; // Capture cross section indexed by Z G4float G4HadronCrossSections::cscap[100] = { 6.0000 , 5.7000 , 5.5000 , 5.3000 , 5.2000 , 5.1000 , 5.0000 , 4.9000 , 4.8000 , 4.8000 , 4.8000 , 4.8000 , 4.8000 , 4.8000 , 4.8000 , 4.8000 , 4.9000 , 5.0000 , 5.2000 , 5.5000 , 6.0000 , 6.7000 , 7.5000 , 8.5000 , 10.000 , 12.000 , 14.500 , 19.000 , 26.500 , 40.000 , 75.000 , 120.00 , 180.00 , 260.00 , 360.00 , 330.00 , 60.000 , 7.0000 , 9.5000 , 20.000 , 75.000 , 140.00 , 250.00 , 360.00 , 480.00 , 580.00 , 590.00 , 500.00 , 300.00 , 100.00 , 200.00 , 300.00 , 400.00 , 470.00 , 500.00 , 430.00 , 100.00 , 20.000 , 22.000 , 40.000 , 560.00 , 950.00 , 1000.0 , 1000.0 , 1000.0 , 990.00 , 920.00 , 860.00 , 790.00 , 740.00 , 650.00 , 600.00 , 540.00 , 470.00 , 440.00 , 390.00 , 360.00 , 340.00 , 320.00 , 310.00 , 280.00 , 2.0000 , 2.5000 , 6.0000 , 13.000 , 38.000 , 65.000 , 140.00 , 280.00 , 300.00 , 430.00 , 580.00 , 650.00 , 800.00 , 920.00 , 1100.0 , 1250.0 , 1400.0 , 1550.0 , 1700.0 }; //--------------------------------------------------------------------- // Tables for fission cross sections //--------------------------------------------------------------------- // Lab kinetic energy in GeV G4float G4HadronCrossSections::ekfiss[NFISS] = { 0.10000E-03, 0.20000E-03, 0.30000E-03, 0.50000E-03, 0.70000E-03, 0.10000E-02, 0.15000E-02, 0.20000E-02, 0.30000E-02, 0.50000E-02, 0.70000E-02, 0.10000E-01, 0.15000E-01, 0.20000E-01, 0.50000E-01, 0.10000 , 0.20000 , 0.30000 , 0.40000 , 0.50000 , 1000.0 }; // Fission cross sections G4float G4HadronCrossSections::csfiss[4][NFISS] = { {2600.0 , 2300.0 , 2300.0 , 2100.0 , 2000.0 , //1 1950.0 , 1930.0 , 1900.0 , 1800.0 , 1600.0 , 2100.0 , 2300.0 , 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {1850.0 , 1400.0 , 1300.0 , 1150.0 , 1100.0 , //2 1200.0 , 1250.0 , 1300.0 , 1250.0 , 1150.0 , 1600.0 , 1900.0 , 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {1700.0 , 1650.0 , 1650.0 , 1700.0 , 1700.0 , //3 1800.0 , 1900.0 , 2000.0 , 1950.0 , 1800.0 , 2150.0 , 2450.0 , 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00}, {0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, 0.00000E+00, //4 0.00000E+00, 250.00 , 550.00 , 550.00 , 550.00 , 550.00 , 550.00 , 1000.0 , 1400.0 , 1600.0 , 1500.0 , 1400.0 , 1300.0 , 1200.0 , 1100.0 , 1000.0} }; G4float G4HadronCrossSections::alpha[NPARTS] = { 0.7,0.7,0.7,0.7,0.7,0.7, 0.75,0.75,0.75, 0.76,0.76,0.76,0.76, 0.685,0.63,0.685,0.63,0.685,0.63, 0.685,0.685,0.685,0.63,0.63,0.63,0.685,0.685,0.63,0.63, 0.7,0.7,0.7,0.685,0.63,0.7 }; G4float G4HadronCrossSections::alphac[TSIZE] = { 1.2,1.2,1.2,1.15,0.90,0.91,0.98,1.06,1.10,1.11, 1.10,1.08,1.05,1.01,0.985,0.962,0.945,0.932, 0.925,0.920,0.920,0.921,0.922,0.923,0.928,0.931, 0.940,0.945,0.950,0.955,0.958,0.962,0.965,0.976, 0.982,0.988,0.992,1.010,1.020,1.030,1.040 }; G4float G4HadronCrossSections::partel[NPARTS] = { 0.,0.,0.,0.,0.,0., 1.,1.,1.,1.,1.,1.,1.,1.,1.,1., 1.,1.,1.,1.,1.,1.,1.,1.,1.,1., 1.,1.,1.,1.,1.,1.,1.,1.,1. }; G4float G4HadronCrossSections::partin[NPARTS] = { 0.,0.,0.,0.,0.,0., 1.00,0.00,1.05,1.20,1.35,1.30,1.20,1.00,1.30, 1.00,1.30,1.00,1.30,1.00,1.00,1.00,1.30,1.30,1.30, 1.00,1.00,1.30,1.30,1.00,1.,1.,1.,1.3,1. }; // Enabling flags for corrections for compounds G4int G4HadronCrossSections::icorr[NPARTS] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1, 0,1,0,1,0,1,1,1,0,0,0,1,1,0,0,1,1,1,1,0,0 }; // Enabling flags for interaction to occur G4int G4HadronCrossSections::intrc[NPARTS] = { 0,0,0,0,0,0, 1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,2,2,0, 1,1,1,1,1,1,1,1,1,1,0 }; G4float G4HadronCrossSections::csa[4] = {1., 27.00, 63.54, 207.19}; G4int G4HadronCrossSections::ipart2[7] = {9, 8, 7, 11, 10, 13, 12}; G4bool G4HadronCrossSections::correctInelasticNearZero = 0; G4double G4HadronCrossSections::GetInelasticCrossSection( const G4DynamicParticle* particle, const G4Element* element) { if (particle->GetDefinition() != prevParticleDefinition || element != prevElement || particle->GetKineticEnergy() != prevKineticEnergy) { G4int nIso = element->GetNumberOfIsotopes(); if (nIso) { G4double cross_section = 0; G4IsotopeVector* isoVector = element->GetIsotopeVector(); G4double* abundVector = element->GetRelativeAbundanceVector(); G4double ZZ; G4double AA; for (G4int i = 0; i < nIso; i++) { ZZ = G4double( (*isoVector)[i]->GetZ() ); AA = G4double( (*isoVector)[i]->GetN() ); CalcScatteringCrossSections(particle, ZZ, AA); cross_section += siginelastic*abundVector[i]; } siginelastic = cross_section; } else { CalcScatteringCrossSections(particle, element->GetZ(), element->GetN()); } } return siginelastic; } G4double G4HadronCrossSections::GetInelasticCrossSection( const G4DynamicParticle* particle, G4double ZZ, G4double AA) { prevElement = 0; // force new cross section calculation for next call of // GetInelasticCrossSection(particle, element, temp) CalcScatteringCrossSections(particle, ZZ, AA); return siginelastic; } G4double G4HadronCrossSections::GetElasticCrossSection( const G4DynamicParticle* particle, const G4Element* element) { if (particle->GetDefinition() != prevParticleDefinition || element != prevElement || particle->GetKineticEnergy() != prevKineticEnergy) { G4int nIso = element->GetNumberOfIsotopes(); if (nIso) { G4double cross_section = 0; G4IsotopeVector* isoVector = element->GetIsotopeVector(); G4double* abundVector = element->GetRelativeAbundanceVector(); G4double ZZ; G4double AA; for (G4int i = 0; i < nIso; i++) { ZZ = G4double( (*isoVector)[i]->GetZ() ); AA = G4double( (*isoVector)[i]->GetN() ); CalcScatteringCrossSections(particle, ZZ, AA); cross_section += sigelastic*abundVector[i]; } sigelastic = cross_section; } else { CalcScatteringCrossSections(particle, element->GetZ(), element->GetN()); } } return sigelastic; } G4double G4HadronCrossSections::GetElasticCrossSection( const G4DynamicParticle* particle, G4double ZZ, G4double AA) { prevElement = 0; // force new cross section calculation for next call of // GetElasticCrossSection(particle, element, temp) CalcScatteringCrossSections(particle, ZZ, AA); return sigelastic; } // Method to calculate cross sections for all processes. // To facilitate comparison with the original Fortran source, and because // of the interdependence of the elastic and inelastic cross section // calculations, this has not been split into separate processes. void G4HadronCrossSections::CalcScatteringCrossSections( const G4DynamicParticle* aParticle, G4double ZZ, G4double AA) { G4double sigel, sigin, sigtot; G4double xsecel, xsecin=0; xsecel = 0; G4double dx, dy, rc, rca, b; G4double crel, crin; G4double xspiel, xspiin; G4int ipart = GetParticleCode(aParticle); G4double a = AA; G4double z = ZZ; if (verboseLevel > 1) { G4cout << "G4HadronCrossSections: a=" << a << G4endl; G4cout << "G4HadronCrossSections: z=" << z << G4endl; } // Ions... if (ipart >= 30 && ipart <= 32) { G4double apart=0; if (ipart == 30) apart = std::pow(2., 1./3.); else if (ipart == 31) apart = std::pow(3., 1./3.); else if (ipart == 32) apart = std::pow(4., 1./3.); G4double term = apart + std::pow(a, 1./3.); sigin = 49.*term*term; // Convert cross section from mb to default units siginelastic = sigin*millibarn; if(aParticle->GetKineticEnergy() < 6*MeV) siginelastic = 0; sigelastic = 0.; return; } G4double ek = aParticle->GetKineticEnergy()/GeV; // Low energy neutrons... if (ipart == 16 && ek <= 0.0327) { // G4int je2 = NELAB; // for (G4int j = 2; j <= NELAB; j++) { // if (ek < elab[j - 1]) { // je2 = j; // break; // } // } // G4int je1 = je2 -1; // je1 = je1 - 1; // For array indexing // je2 = je2 - 1; // For array indexing G4int je1 = 0; G4int je2 = NELAB - 1; do { G4int midBin = (je1 + je2)/2; if (ek < elab[midBin]) je2 = midBin; else je1 = midBin; } while (je2 - je1 > 1); G4double delab = elab[je2] - elab[je1]; // G4int ja2 = NCNLW; // for (G4int jj = 2; jj <= NCNLW; jj++) { // if (a < cnlwat[jj - 1]) { // ja2 = jj; // break; // } // } // G4int ja1 = ja2 - 1; // ja1 = ja1 - 1; // For array indexing // ja2 = ja2 - 1; // For array indexing G4int ja1 = 0; G4int ja2 = NCNLW - 1; do { G4int midBin = (ja1 + ja2)/2; if (a < cnlwat[midBin]) ja2 = midBin; else ja1 = midBin; } while (ja2 - ja1 > 1); G4double dnlwat = cnlwat[ja2] - cnlwat[ja1]; // Elastic cross section: // E interpolation or extrapolation at JA1 dy = cnlwel[ja1][je2] - cnlwel[ja1][je1]; G4double rce = dy/delab; // A interpolation or extrapolation at JE1 dy = cnlwel[ja2][je1] - cnlwel[ja1][je1]; rca = dy/dnlwat; b = cnlwel[ja1][je1] - rce*elab[je1] - rca*cnlwat[ja1]; sigelastic = rce*ek + rca*a + b; // Inelastic cross section: // E interpolation or extrapolation at JA1 dy = cnlwin[ja1][je2] - cnlwin[ja1][je1]; rce = dy/delab; // A interpolation or extrapolation at JE1 dy = cnlwin[ja2][je1] - cnlwin[ja1][je1]; rca = dy/dnlwat; b = cnlwin[ja1][je1] - rce*elab[je1] - rca*cnlwat[ja1]; siginelastic = rce*ek + rca*a + b; // Convert cross sections from mb to default units sigelastic = sigelastic*millibarn; siginelastic = siginelastic*millibarn; return; } // Remaining particles... // Get momentum bin G4double p = aParticle->GetTotalMomentum()/GeV; // G4int j = TSIZE - 1; // for (G4int i = 2; i <= TSIZE; i++) { // if (p < plab[i]) { // j = i - 1; // break; // } // } // j = j - 1; // For array indexing G4int je1 = 0; G4int je2 = TSIZE - 1; do { G4int midBin = (je1 + je2)/2; if (p < plab[midBin]) je2 = midBin; else je1 = midBin; } while (je2 - je1 > 1); G4int ipart1 = ipart - 1; // For array indexing // Get cross sections for scattering on free protons dx = plab[je2] - plab[je1]; // Elastic cross section dy = csel[ipart1][je2] - csel[ipart1][je1]; rc = dy/dx; b = csel[ipart1][je1] - rc*plab[je1]; sigel = rc*p + b; // Inelastic cross section dy = csin[ipart1][je2] - csin[ipart1][je1]; rc = dy/dx; b = csin[ipart1][je1] - rc*plab[je1]; sigin = rc*p + b; if (verboseLevel > 1) { G4cout << "sigel " << sigel << G4endl; G4cout << "sigin " << sigin << G4endl; } G4double alph = alpha[ipart1]; if (ipart < 14) { dy = alphac[je2] - alphac[je1]; rc = dy/dx; b = alphac[je1] - rc*plab[je1]; G4double corfac = rc*p + b; alph = alph*corfac; G4int ipart3 = ipart2[ipart - 7]; ipart3 = ipart3 - 1; // For array indexing // Elastic cross section dy = csel[ipart3][je2] - csel[ipart3][je1]; rc = dy/dx; b = csel[ipart3][je1] - rc*plab[je1]; xsecel = rc*p + b; // Inelastic cross section dy = csin[ipart3][je2] - csin[ipart3][je1]; rc = dy/dx; b = csin[ipart3][je1] - rc*plab[je1]; xsecin = rc*p + b; } // A-dependence from parameterization... if (a >= 1.5) { crel = 1.; crin = 1.; G4int i = 3; if (a < 50.) i = 2; if (a > 100.) i = 4; i = i - 1; // For array indexing // Protons and neutrons if (ipart == 14 || ipart == 16) { dy = cspnel[i - 1][je2] - cspnel[i - 1][je1]; rc = dy/dx; b = cspnel[i - 1][je1] - rc*plab[je1]; xsecel = rc*p + b; dy = cspnin[i - 1][je2] - cspnin[i - 1][je1]; rc = dy/dx; b = cspnin[i - 1][je1] - rc*plab[je1]; xsecin = rc*p + b; // The following is a first-order correction to Gheisha (GHESIG) // behaviour, where for the lighter elements the inelastic cross // section is not realistic for particles in the first momentum // bin. In the first momentum bin, it better to interpolate // in K.E. Subject to further improvements. if (correctInelasticNearZero && je1 == 0 && i <= 3) { G4double m0 = aParticle->GetMass()/GeV; G4double T = std::sqrt(m0*m0 + p*p) - m0; G4double dx = std::sqrt(m0*m0 + plab[1]*plab[1]) - m0; rc = dy/dx; xsecin = rc*T + b; } if (sigel >= 0.001) crel = xsecel/(0.36*sigel*std::pow(G4double(csa[i]), 1.17)); sigtot = sigel + sigin; if (sigtot >= 0.001) crin = xsecin/(sigtot*std::pow(G4double(csa[i]), alph)); } else if (ipart < 15) { // Calculate correction factors (crel, crin) from values // on Al, Cu, Pb. Note that data is only available for pions and protons. G4double wgch = 0.5; if (a < 20.) wgch = 0.5 + 0.5*std::exp(-(a - 1.)); sigel = wgch*sigel + (1. - wgch)*xsecel; sigin = wgch*sigin + (1. - wgch)*xsecin; // This section not for kaons if (ipart < 10) { dy = cspiel[i - 1][je2] - cspiel[i - 1][je1]; rc = dy/dx; b = cspiel[i - 1][je1] - rc*plab[je1]; xspiel = rc*p + b; dy = cspiin[i - 1][je2] - cspiin[i - 1][je1]; rc = dy/dx; b = cspiin[i - 1][je1] - rc*plab[je1]; xspiin = rc*p + b; if (verboseLevel > 1) { G4cout << "xspiel " << xspiel << G4endl; G4cout << "xspiin " << xspiin << G4endl; } if (sigel >= 0.001) crel = xspiel/(0.36*sigel*std::pow(G4double(csa[i]),1.17)); sigtot = sigel + sigin; if (sigtot >= 0.001) crin = xspiin/(sigtot*std::pow(G4double(csa[i]), alph)); } } // Apply correction factors sigin = crin*(sigin + sigel)*std::pow(a, alph); sigel = crel*0.36*sigel*std::pow(a, 1.17); sigel = sigel*partel[ipart1]; sigin = sigin*partin[ipart1]; } // Correction factor for high (p > 100 GeV/c) energies: G4double corh = 1.; if (p > 100.) corh = 0.1085736156*std::log(p) + 0.5; sigel = corh*sigel; sigin = corh*sigin; // Convert cross section from mb to default units sigelastic = sigel*millibarn; siginelastic = sigin*millibarn; return; } G4double G4HadronCrossSections::GetCaptureCrossSection( const G4DynamicParticle* aParticle, G4double ZZ, G4double /*AA*/) { if (GetParticleCode(aParticle) != 16) { return 0.; } G4double ek = aParticle->GetKineticEnergy()/GeV; if (ek > 0.0327) { return 0.; } G4double ekx = std::max(ek, 1.e-9); if( ekx != lastEkx ) { lastEkx = ekx; lastEkxPower = std::pow(ekx*1.e6, 0.577); } G4int izno = static_cast (ZZ + 0.01); if (izno > 100) izno = 100; // Not in GHESIG izno = izno - 1; // For array indexing G4double sigcap = 11.12*cscap[izno]/lastEkxPower; // Convert cross section from mb to default units sigcap = sigcap*millibarn; return sigcap; } G4double G4HadronCrossSections::GetFissionCrossSection( const G4DynamicParticle* aParticle, G4double ZZ, G4double AA) { if (AA < 230.) return 0; G4double ek = aParticle->GetKineticEnergy()/GeV; // G4int i = NFISS; // for (G4int ii = 1; i <= NFISS; i++) { // if (ek < ekfiss[ii - 1]) { // i = ii; // break; // } // } // i = i - 1; // For array indexing G4int ie1 = 0; G4int ie2 = NFISS - 1; do { G4int midBin = (ie1 + ie2)/2; if (ek < ekfiss[midBin]) ie2 = midBin; else ie1 = midBin; } while (ie2 - ie1 > 1); G4int i = ie2; if (ek < ekfiss[0]) i = 0; G4int j = 4; if (ek <= 0.01) { if (ZZ == 92. && std::abs(AA - 233.) < 0.5) j = 1; else if (ZZ == 92. && std::abs(AA - 235.) < 0.5) j = 2; else if (ZZ == 94. && std::abs(AA - 239.) < 0.5) j = 3; } G4double z43ba; if (j == 4) { z43ba = std::pow(ZZ, 4./3.)/AA; z43ba = std::max(-67. + 38.7*z43ba, 0.); } else { z43ba = 1.; } j = j - 1; // For array indexing G4double sigfiss = csfiss[j][i]*z43ba; // Convert from mb to cm^2 // sigfiss = sigfiss*1.e-27; // Convert cross section from mb to default units sigfiss = sigfiss*millibarn; return sigfiss; } G4int G4HadronCrossSections::GetParticleCode(const G4DynamicParticle* aParticle) { // Returns GHEISHA code for particle // Case entries ordered by estimated frequency G4int ipart; switch( aParticle->GetPDGcode()) { case 111: ipart = 8; // pi0 break; case 211: ipart = 7; // pi+ break; case -211: ipart = 9; // pi- break; case 2112: ipart = 16; // neutron break; case 2212: ipart = 14; // proton break; case 321: ipart = 10; // K+ break; case -321: ipart = 13; // K- break; case 130: ipart = 12; // K0L break; case 310: ipart = 11; // K0S break; case 1000010020: ipart = 30; // deuteron break; case 1000010030: ipart = 31; // triton break; case 1000020040: ipart = 32; // alpha break; case 3122: ipart = 18; // lambda break; case -2112: ipart = 17; // anti-neutron break; case -2212: ipart = 15; // anti-proton break; case -3122: ipart = 19; // anti-lambda break; case 3222: ipart = 20; // sigma+ break; case 3212: ipart = 21; // sigma0 break; case 3112: ipart = 22; // sigma- break; case 3322: ipart = 26; // xi0 break; case 3312: ipart = 27; // xi- break; case 3334: ipart = 33; // omega- break; case -3222: ipart = 23; // anti-sigma+ break; case -3212: ipart = 24; // anti-sigma0 break; case -3112: ipart = 25; // anti-sigma- break; case -3322: ipart = 28; // anti-xi0 break; case -3312: ipart = 29; // anti-xi- break; case -3334: ipart = 34; // anti-omega- break; default: G4Exception("G4HadronCrossSections", "007", FatalException, "GetParticleCode: unsupported particle"); return 0; } return ipart; }