Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/standard/src/G4ScreeningMottCrossSection.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /processes/electromagnetic/standard/src/G4ScreeningMottCrossSection.cc (Version 11.3.0) and /processes/electromagnetic/standard/src/G4ScreeningMottCrossSection.cc (Version 10.3.p2)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 //      G4ScreeningMottCrossSection.cc             26 //      G4ScreeningMottCrossSection.cc
 27 //--------------------------------------------     27 //-------------------------------------------------------------------
 28 //                                                 28 //
 29 // GEANT4 Class header file                        29 // GEANT4 Class header file
 30 //                                                 30 //
 31 // File name:    G4ScreeningMottCrossSection       31 // File name:    G4ScreeningMottCrossSection
 32 //                                                 32 //
 33 // Author:      Cristina Consolandi                33 // Author:      Cristina Consolandi
 34 //                                                 34 //
 35 // Creation date: 20.10.2011                       35 // Creation date: 20.10.2011
 36 //                                                 36 //
 37 // Modifications:                                  37 // Modifications:
 38 // 27-05-2012 Added Analytic Fitting to the Mo     38 // 27-05-2012 Added Analytic Fitting to the Mott Cross Section by means of G4MottCoefficients class.
 39 //                                                 39 //
 40 //                                                 40 //
 41 // Class Description:                              41 // Class Description:
 42 //  Computation of electron Coulomb Scattering     42 //  Computation of electron Coulomb Scattering Cross Section.
 43 //  Suitable for high energy electrons and lig     43 //  Suitable for high energy electrons and light target materials.
 44 //                                                 44 //
 45 //      Reference:                                 45 //      Reference:
 46 //      M.J. Boschini et al.                       46 //      M.J. Boschini et al.
 47 //     "Non Ionizing Energy Loss induced by El     47 //     "Non Ionizing Energy Loss induced by Electrons in the Space Environment"
 48 //      Proc. of the 13th International Confer     48 //      Proc. of the 13th International Conference on Particle Physics and Advanced Technology
 49 //      (13th ICPPAT, Como 3-7/10/2011), World     49 //      (13th ICPPAT, Como 3-7/10/2011), World Scientific (Singapore).
 50 //  Available at: http://arxiv.org/abs/1111.40     50 //  Available at: http://arxiv.org/abs/1111.4042v4
 51 //                                                 51 //
 52 //      1) Mott Differential Cross Section App     52 //      1) Mott Differential Cross Section Approximation:
 53 //     For Target material up to Z=92 (U):         53 //     For Target material up to Z=92 (U):
 54 //         As described in http://arxiv.org/ab     54 //         As described in http://arxiv.org/abs/1111.4042v4
 55 //         par. 2.1 , eq. (16)-(17)                55 //         par. 2.1 , eq. (16)-(17)
 56 //         Else (Z>92):                            56 //         Else (Z>92):
 57 //     W. A. McKinley and H. Fashbach, Phys. R     57 //     W. A. McKinley and H. Fashbach, Phys. Rev. 74, (1948) 1759.
 58 //      2) Screening coefficient:                  58 //      2) Screening coefficient:
 59 //      vomn G. Moliere, Z. Naturforsh A2 (194     59 //      vomn G. Moliere, Z. Naturforsh A2 (1947), 133-145; A3 (1948), 78.
 60 //      3) Nuclear Form Factor:                    60 //      3) Nuclear Form Factor:
 61 //      A.V. Butkevich et al. Nucl. Instr. Met <<  61 //      A.V. Butkevich et al. Nucl. Instr. and Meth. in Phys. Res. A 488 (2002), 282-294.
 62 //                                                 62 //
 63 // ------------------------------------------- <<  63 // -------------------------------------------------------------------------------------
 64 //                                                 64 //
 65 //....oooOO0OOooo........oooOO0OOooo........oo     65 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
 66                                                    66 
 67 #include "G4ScreeningMottCrossSection.hh"          67 #include "G4ScreeningMottCrossSection.hh"
 68 #include "G4PhysicalConstants.hh"                  68 #include "G4PhysicalConstants.hh"
 69 #include "G4SystemOfUnits.hh"                      69 #include "G4SystemOfUnits.hh"
                                                   >>  70 #include "G4MottCoefficients.hh"
 70 #include "Randomize.hh"                            71 #include "Randomize.hh"
 71 #include "G4Proton.hh"                             72 #include "G4Proton.hh"
 72 #include "G4LossTableManager.hh"                   73 #include "G4LossTableManager.hh"
 73 #include "G4NucleiProperties.hh"                   74 #include "G4NucleiProperties.hh"
 74 #include "G4Element.hh"                            75 #include "G4Element.hh"
 75 #include "G4UnitsTable.hh"                         76 #include "G4UnitsTable.hh"
 76 #include "G4NistManager.hh"                    << 
 77 #include "G4ThreeVector.hh"                    << 
 78 #include "G4Pow.hh"                            << 
 79 #include "G4MottData.hh"                       << 
 80                                                    77 
 81 //....oooOO0OOooo........oooOO0OOooo........oo     78 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 82                                                    79 
 83 static G4double invlog10 = 1./std::log(10.);   <<  80 static G4double angle[DIM]={1e-07,1.02329e-07,1.04713e-07,1.07152e-07,1.09648e-07,1.12202e-07,1.14815e-07,1.1749e-07,1.20226e-07,1.23027e-07,1.25893e-07,1.28825e-07,1.31826e-07,1.34896e-07,1.38038e-07,1.41254e-07,1.44544e-07,1.47911e-07,1.51356e-07,1.54882e-07,1.58489e-07,1.62181e-07,1.65959e-07,1.69824e-07,1.7378e-07,1.77828e-07,1.8197e-07,1.86209e-07,1.90546e-07,1.94984e-07,1.99526e-07,2.04174e-07,2.0893e-07,2.13796e-07,2.18776e-07,2.23872e-07,2.29087e-07,2.34423e-07,2.39883e-07,2.45471e-07,2.51189e-07,2.5704e-07,2.63027e-07,2.69153e-07,2.75423e-07,2.81838e-07,2.88403e-07,2.95121e-07,3.01995e-07,3.0903e-07,3.16228e-07,3.23594e-07,3.31131e-07,3.38844e-07,3.46737e-07,3.54813e-07,3.63078e-07,3.71535e-07,3.80189e-07,3.89045e-07,3.98107e-07,4.0738e-07,4.16869e-07,4.2658e-07,4.36516e-07,4.46684e-07,4.57088e-07,4.67735e-07,4.7863e-07,4.89779e-07,5.01187e-07,5.12861e-07,5.24807e-07,5.37032e-07,5.49541e-07,5.62341e-07,5.7544e-07,5.88844e-07,6.0256e-07,6.16595e-07,6.30957e-07,6.45654e-07,6.60693e-07,6.76083e-07,6.91831e-07,7.07946e-07,7.24436e-07,7.4131e-07,7.58578e-07,7.76247e-07,7.94328e-07,8.12831e-07,8.31764e-07,8.51138e-07,8.70964e-07,8.91251e-07,9.12011e-07,9.33254e-07,9.54993e-07,9.77237e-07,1e-06,1.02329e-06,1.04713e-06,1.07152e-06,1.09648e-06,1.12202e-06,1.14815e-06,1.1749e-06,1.20226e-06,1.23027e-06,1.25893e-06,1.28825e-06,1.31826e-06,1.34896e-06,1.38038e-06,1.41254e-06,1.44544e-06,1.47911e-06,1.51356e-06,1.54882e-06,1.58489e-06,1.62181e-06,1.65959e-06,1.69824e-06,1.7378e-06,1.77828e-06,1.8197e-06,1.86209e-06,1.90546e-06,1.94984e-06,1.99526e-06,2.04174e-06,2.0893e-06,2.13796e-06,2.18776e-06,2.23872e-06,2.29087e-06,2.34423e-06,2.39883e-06,2.45471e-06,2.51189e-06,2.5704e-06,2.63027e-06,2.69153e-06,2.75423e-06,2.81838e-06,2.88403e-06,2.95121e-06,3.01995e-06,3.0903e-06,3.16228e-06,3.23594e-06,3.31131e-06,3.38844e-06,3.46737e-06,3.54813e-06,3.63078e-06,3.71535e-06,3.80189e-06,3.89045e-06,3.98107e-06,4.0738e-06,4.16869e-06,4.2658e-06,4.36516e-06,4.46684e-06,4.57088e-06,4.67735e-06,4.7863e-06,4.89779e-06,5.01187e-06,5.12861e-06,5.24807e-06,5.37032e-06,5.49541e-06,5.62341e-06,5.7544e-06,5.88844e-06,6.0256e-06,6.16595e-06,6.30957e-06,6.45654e-06,6.60693e-06,6.76083e-06,6.91831e-06,7.07946e-06,7.24436e-06,7.4131e-06,7.58578e-06,7.76247e-06,7.94328e-06,8.12831e-06,8.31764e-06,8.51138e-06,8.70964e-06,8.91251e-06,9.12011e-06,9.33254e-06,9.54993e-06,9.77237e-06,1e-05,1.02329e-05,1.04713e-05,1.07152e-05,1.09648e-05,1.12202e-05,1.14815e-05,1.1749e-05,1.20226e-05,1.23027e-05,1.25893e-05,1.28825e-05,1.31826e-05,1.34896e-05,1.38038e-05,1.41254e-05,1.44544e-05,1.47911e-05,1.51356e-05,1.54882e-05,1.58489e-05,1.62181e-05,1.65959e-05,1.69824e-05,1.7378e-05,1.77828e-05,1.8197e-05,1.86209e-05,1.90546e-05,1.94984e-05,1.99526e-05,2.04174e-05,2.0893e-05,2.13796e-05,2.18776e-05,2.23872e-05,2.29087e-05,2.34423e-05,2.39883e-05,2.45471e-05,2.51189e-05,2.5704e-05,2.63027e-05,2.69153e-05,2.75423e-05,2.81838e-05,2.88403e-05,2.95121e-05,3.01995e-05,3.0903e-05,3.16228e-05,3.23594e-05,3.31131e-05,3.38844e-05,3.46737e-05,3.54813e-05,3.63078e-05,3.71535e-05,3.80189e-05,3.89045e-05,3.98107e-05,4.0738e-05,4.16869e-05,4.2658e-05,4.36516e-05,4.46684e-05,4.57088e-05,4.67735e-05,4.7863e-05,4.89779e-05,5.01187e-05,5.12861e-05,5.24807e-05,5.37032e-05,5.49541e-05,5.62341e-05,5.7544e-05,5.88844e-05,6.0256e-05,6.16595e-05,6.30957e-05,6.45654e-05,6.60693e-05,6.76083e-05,6.91831e-05,7.07946e-05,7.24436e-05,7.4131e-05,7.58578e-05,7.76247e-05,7.94328e-05,8.12831e-05,8.31764e-05,8.51138e-05,8.70964e-05,8.91251e-05,9.12011e-05,9.33254e-05,9.54993e-05,9.77237e-05,0.0001,0.000102329,0.000104713,0.000107152,0.000109648,0.000112202,0.000114815,0.00011749,0.000120226,0.000123027,0.000125893,0.000128825,0.000131826,0.000134896,0.000138038,0.000141254,0.000144544,0.000147911,0.000151356,0.000154882,0.000158489,0.000162181,0.000165959,0.000169824,0.00017378,0.000177828,0.00018197,0.000186209,0.000190546,0.000194984,0.000199526,0.000204174,0.00020893,0.000213796,0.000218776,0.000223872,0.000229087,0.000234423,0.000239883,0.000245471,0.000251189,0.00025704,0.000263027,0.000269153,0.000275423,0.000281838,0.000288403,0.000295121,0.000301995,0.00030903,0.000316228,0.000323594,0.000331131,0.000338844,0.000346737,0.000354813,0.000363078,0.000371535,0.000380189,0.000389045,0.000398107,0.00040738,0.000416869,0.00042658,0.000436516,0.000446684,0.000457088,0.000467735,0.00047863,0.000489779,0.000501187,0.000512861,0.000524807,0.000537032,0.000549541,0.000562341,0.00057544,0.000588844,0.00060256,0.000616595,0.000630957,0.000645654,0.000660693,0.000676083,0.000691831,0.000707946,0.000724436,0.00074131,0.000758578,0.000776247,0.000794328,0.000812831,0.000831764,0.000851138,0.000870964,0.000891251,0.000912011,0.000933254,0.000954993,0.000977237,0.001,0.00102329,0.00104713,0.00107152,0.00109648,0.00112202,0.00114815,0.0011749,0.00120226,0.00123027,0.00125893,0.00128825,0.00131826,0.00134896,0.00138038,0.00141254,0.00144544,0.00147911,0.00151356,0.00154882,0.00158489,0.00162181,0.00165959,0.00169824,0.0017378,0.00177828,0.0018197,0.00186209,0.00190546,0.00194984,0.00199526,0.00204174,0.0020893,0.00213796,0.00218776,0.00223872,0.00229087,0.00234423,0.00239883,0.00245471,0.00251189,0.0025704,0.00263027,0.00269153,0.00275423,0.00281838,0.00288403,0.00295121,0.00301995,0.0030903,0.00316228,0.00323594,0.00331131,0.00338844,0.00346737,0.00354813,0.00363078,0.00371535,0.00380189,0.00389045,0.00398107,0.0040738,0.00416869,0.0042658,0.00436516,0.00446684,0.00457088,0.00467735,0.0047863,0.00489779,0.00501187,0.00512861,0.00524807,0.00537032,0.00549541,0.00562341,0.0057544,0.00588844,0.0060256,0.00616595,0.00630957,0.00645654,0.00660693,0.00676083,0.00691831,0.00707946,0.00724436,0.0074131,0.00758578,0.00776247,0.00794328,0.00812831,0.00831764,0.00851138,0.00870964,0.00891251,0.00912011,0.00933254,0.00954993,0.00977237,0.01,0.0102329,0.0104713,0.0107152,0.0109648,0.0112202,0.0114815,0.011749,0.0120226,0.0123027,0.0125893,0.0128825,0.0131826,0.0134896,0.0138038,0.0141254,0.0144544,0.0147911,0.0151356,0.0154882,0.0158489,0.0162181,0.0165959,0.0169824,0.017378,0.0177828,0.018197,0.0186209,0.0190546,0.0194984,0.0199526,0.0204174,0.020893,0.0213796,0.0218776,0.0223872,0.0229087,0.0234423,0.0239883,0.0245471,0.0251189,0.025704,0.0263027,0.0269153,0.0275423,0.0281838,0.0288403,0.0295121,0.0301995,0.030903,0.0316228,0.0323594,0.0331131,0.0338844,0.0346737,0.0354813,0.0363078,0.0371535,0.0380189,0.0389045,0.0398107,0.040738,0.0416869,0.042658,0.0436516,0.0446684,0.0457088,0.0467735,0.047863,0.0489779,0.0501187,0.0512861,0.0524807,0.0537032,0.0549541,0.0562341,0.057544,0.0588844,0.060256,0.0616595,0.0630957,0.0645654,0.0660693,0.0676083,0.0691831,0.0707946,0.0724436,0.074131,0.0758578,0.0776247,0.0794328,0.0812831,0.0831764,0.0851138,0.0870964,0.0891251,0.0912011,0.0933254,0.0954993,0.0977237,0.1,0.102329,0.104713,0.107152,0.109648,0.112202,0.114815,0.11749,0.120226,0.123027,0.125893,0.128825,0.131826,0.134896,0.138038,0.141254,0.144544,0.147911,0.151356,0.154882,0.158489,0.162181,0.165959,0.169824,0.17378,0.177828,0.18197,0.186209,0.190546,0.194984,0.199526,0.204174,0.20893,0.213796,0.218776,0.223872,0.229087,0.234423,0.239883,0.245471,0.251189,0.25704,0.263027,0.269153,0.275423,0.281838,0.288403,0.295121,0.301995,0.30903,0.316228,0.323594,0.331131,0.338844,0.346737,0.354813,0.363078,0.371535,0.380189,0.389045,0.398107,0.40738,0.416869,0.42658,0.436516,0.446684,0.457088,0.467735,0.47863,0.489779,0.501187,0.512861,0.524807,0.537032,0.549541,0.562341,0.57544,0.588844,0.60256,0.616595,0.630957,0.645654,0.660693,0.676083,0.691831,0.707946,0.724436,0.74131,0.758578,0.776247,0.794328,0.812831,0.831764,0.851138,0.870964,0.891251,0.912011,0.933254,0.954993,0.977237,1,1.02329,1.04713,1.07152,1.09648,1.12202,1.14815,1.1749,1.20226,1.23027,1.25893,1.28825,1.31826,1.34896,1.38038,1.41254,1.44544,1.47911,1.51356,1.54882,1.58489,1.62181,1.65959,1.69824,1.7378,1.77828,1.8197,1.86209,1.90546,1.94984,1.99526,2.04174,2.0893,2.13796,2.18776,2.23872,2.29087,2.34423,2.39883,2.45471,2.51189,2.5704,2.63027,2.69153,2.75423,2.81838,2.88403,2.95121,3.01995,3.0903};
                                                   >>  81 static G4double dangle[DIM]={2.329e-09,2.384e-09,2.439e-09,2.496e-09,2.554e-09,2.613e-09,2.675e-09,2.736e-09,2.801e-09,2.866e-09,2.932e-09,3.001e-09,3.07e-09,3.142e-09,3.216e-09,3.29e-09,3.367e-09,3.445e-09,3.526e-09,3.607e-09,3.692e-09,3.778e-09,3.865e-09,3.956e-09,4.048e-09,4.142e-09,4.239e-09,4.337e-09,4.438e-09,4.542e-09,4.648e-09,4.756e-09,4.866e-09,4.98e-09,5.096e-09,5.215e-09,5.336e-09,5.46e-09,5.588e-09,5.718e-09,5.851e-09,5.987e-09,6.126e-09,6.27e-09,6.415e-09,6.565e-09,6.718e-09,6.874e-09,7.035e-09,7.198e-09,7.366e-09,7.537e-09,7.713e-09,7.893e-09,8.076e-09,8.265e-09,8.457e-09,8.654e-09,8.856e-09,9.062e-09,9.273e-09,9.489e-09,9.711e-09,9.936e-09,1.0168e-08,1.0404e-08,1.0647e-08,1.0895e-08,1.1149e-08,1.1408e-08,1.1674e-08,1.1946e-08,1.2225e-08,1.2509e-08,1.28e-08,1.3099e-08,1.3404e-08,1.3716e-08,1.4035e-08,1.4362e-08,1.4697e-08,1.5039e-08,1.539e-08,1.5748e-08,1.6115e-08,1.649e-08,1.6874e-08,1.7268e-08,1.7669e-08,1.8081e-08,1.8503e-08,1.8933e-08,1.9374e-08,1.9826e-08,2.0287e-08,2.076e-08,2.1243e-08,2.1739e-08,2.2244e-08,2.2763e-08,2.329e-08,2.384e-08,2.439e-08,2.496e-08,2.554e-08,2.613e-08,2.675e-08,2.736e-08,2.801e-08,2.866e-08,2.932e-08,3.001e-08,3.07e-08,3.142e-08,3.216e-08,3.29e-08,3.367e-08,3.445e-08,3.526e-08,3.607e-08,3.692e-08,3.778e-08,3.865e-08,3.956e-08,4.048e-08,4.142e-08,4.239e-08,4.337e-08,4.438e-08,4.542e-08,4.648e-08,4.756e-08,4.866e-08,4.98e-08,5.096e-08,5.215e-08,5.336e-08,5.46e-08,5.588e-08,5.718e-08,5.851e-08,5.987e-08,6.126e-08,6.27e-08,6.415e-08,6.565e-08,6.718e-08,6.874e-08,7.035e-08,7.198e-08,7.366e-08,7.537e-08,7.713e-08,7.893e-08,8.076e-08,8.265e-08,8.457e-08,8.654e-08,8.856e-08,9.062e-08,9.273e-08,9.489e-08,9.711e-08,9.936e-08,1.0168e-07,1.0404e-07,1.0647e-07,1.0895e-07,1.1149e-07,1.1408e-07,1.1674e-07,1.1946e-07,1.2225e-07,1.2509e-07,1.28e-07,1.3099e-07,1.3404e-07,1.3716e-07,1.4035e-07,1.4362e-07,1.4697e-07,1.5039e-07,1.539e-07,1.5748e-07,1.6115e-07,1.649e-07,1.6874e-07,1.7268e-07,1.7669e-07,1.8081e-07,1.8503e-07,1.8933e-07,1.9374e-07,1.9826e-07,2.0287e-07,2.076e-07,2.1243e-07,2.1739e-07,2.2244e-07,2.2763e-07,2.329e-07,2.384e-07,2.439e-07,2.496e-07,2.554e-07,2.613e-07,2.675e-07,2.736e-07,2.801e-07,2.866e-07,2.932e-07,3.001e-07,3.07e-07,3.142e-07,3.216e-07,3.29e-07,3.367e-07,3.445e-07,3.526e-07,3.607e-07,3.692e-07,3.778e-07,3.865e-07,3.956e-07,4.048e-07,4.142e-07,4.239e-07,4.337e-07,4.438e-07,4.542e-07,4.648e-07,4.756e-07,4.866e-07,4.98e-07,5.096e-07,5.215e-07,5.336e-07,5.46e-07,5.588e-07,5.718e-07,5.851e-07,5.987e-07,6.126e-07,6.27e-07,6.415e-07,6.565e-07,6.718e-07,6.874e-07,7.035e-07,7.198e-07,7.366e-07,7.537e-07,7.713e-07,7.893e-07,8.076e-07,8.265e-07,8.457e-07,8.654e-07,8.856e-07,9.062e-07,9.273e-07,9.489e-07,9.711e-07,9.936e-07,1.0168e-06,1.0404e-06,1.0647e-06,1.0895e-06,1.1149e-06,1.1408e-06,1.1674e-06,1.1946e-06,1.2225e-06,1.2509e-06,1.28e-06,1.3099e-06,1.3404e-06,1.3716e-06,1.4035e-06,1.4362e-06,1.4697e-06,1.5039e-06,1.539e-06,1.5748e-06,1.6115e-06,1.649e-06,1.6874e-06,1.7268e-06,1.7669e-06,1.8081e-06,1.8503e-06,1.8933e-06,1.9374e-06,1.9826e-06,2.0287e-06,2.076e-06,2.1243e-06,2.1739e-06,2.2244e-06,2.2763e-06,2.329e-06,2.384e-06,2.439e-06,2.496e-06,2.554e-06,2.613e-06,2.675e-06,2.736e-06,2.801e-06,2.866e-06,2.932e-06,3.001e-06,3.07e-06,3.142e-06,3.216e-06,3.29e-06,3.367e-06,3.445e-06,3.526e-06,3.607e-06,3.692e-06,3.778e-06,3.865e-06,3.956e-06,4.048e-06,4.142e-06,4.239e-06,4.337e-06,4.438e-06,4.542e-06,4.648e-06,4.756e-06,4.866e-06,4.98e-06,5.096e-06,5.215e-06,5.336e-06,5.46e-06,5.588e-06,5.718e-06,5.851e-06,5.987e-06,6.126e-06,6.27e-06,6.415e-06,6.565e-06,6.718e-06,6.874e-06,7.035e-06,7.198e-06,7.366e-06,7.537e-06,7.713e-06,7.893e-06,8.076e-06,8.265e-06,8.457e-06,8.654e-06,8.856e-06,9.062e-06,9.273e-06,9.489e-06,9.711e-06,9.936e-06,1.0168e-05,1.0404e-05,1.0647e-05,1.0895e-05,1.1149e-05,1.1408e-05,1.1674e-05,1.1946e-05,1.2225e-05,1.2509e-05,1.28e-05,1.3099e-05,1.3404e-05,1.3716e-05,1.4035e-05,1.4362e-05,1.4697e-05,1.5039e-05,1.539e-05,1.5748e-05,1.6115e-05,1.649e-05,1.6874e-05,1.7268e-05,1.7669e-05,1.8081e-05,1.8503e-05,1.8933e-05,1.9374e-05,1.9826e-05,2.0287e-05,2.076e-05,2.1243e-05,2.1739e-05,2.2244e-05,2.2763e-05,2.329e-05,2.384e-05,2.439e-05,2.496e-05,2.554e-05,2.613e-05,2.675e-05,2.736e-05,2.801e-05,2.866e-05,2.932e-05,3.001e-05,3.07e-05,3.142e-05,3.216e-05,3.29e-05,3.367e-05,3.445e-05,3.526e-05,3.607e-05,3.692e-05,3.778e-05,3.865e-05,3.956e-05,4.048e-05,4.142e-05,4.239e-05,4.337e-05,4.438e-05,4.542e-05,4.648e-05,4.756e-05,4.866e-05,4.98e-05,5.096e-05,5.215e-05,5.336e-05,5.46e-05,5.588e-05,5.718e-05,5.851e-05,5.987e-05,6.126e-05,6.27e-05,6.415e-05,6.565e-05,6.718e-05,6.874e-05,7.035e-05,7.198e-05,7.366e-05,7.537e-05,7.713e-05,7.893e-05,8.076e-05,8.265e-05,8.457e-05,8.654e-05,8.856e-05,9.062e-05,9.273e-05,9.489e-05,9.711e-05,9.936e-05,0.00010168,0.00010404,0.00010647,0.00010895,0.00011149,0.00011408,0.00011674,0.00011946,0.00012225,0.00012509,0.000128,0.00013099,0.00013404,0.00013716,0.00014035,0.00014362,0.00014697,0.00015039,0.0001539,0.00015748,0.00016115,0.0001649,0.00016874,0.00017268,0.00017669,0.00018081,0.00018503,0.00018933,0.00019374,0.00019826,0.00020287,0.0002076,0.00021243,0.00021739,0.00022244,0.00022763,0.0002329,0.0002384,0.0002439,0.0002496,0.0002554,0.0002613,0.0002675,0.0002736,0.0002801,0.0002866,0.0002932,0.0003001,0.000307,0.0003142,0.0003216,0.000329,0.0003367,0.0003445,0.0003526,0.0003607,0.0003692,0.0003778,0.0003865,0.0003956,0.0004048,0.0004142,0.0004239,0.0004337,0.0004438,0.0004542,0.0004648,0.0004756,0.0004866,0.000498,0.0005096,0.0005215,0.0005336,0.000546,0.0005588,0.0005718,0.0005851,0.0005987,0.0006126,0.000627,0.0006415,0.0006565,0.0006718,0.0006874,0.0007035,0.0007198,0.0007366,0.0007537,0.0007713,0.0007893,0.0008076,0.0008265,0.0008457,0.0008654,0.0008856,0.0009062,0.0009273,0.0009489,0.0009711,0.0009936,0.0010168,0.0010404,0.0010647,0.0010895,0.0011149,0.0011408,0.0011674,0.0011946,0.0012225,0.0012509,0.00128,0.0013099,0.0013404,0.0013716,0.0014035,0.0014362,0.0014697,0.0015039,0.001539,0.0015748,0.0016115,0.001649,0.0016874,0.0017268,0.0017669,0.0018081,0.0018503,0.0018933,0.0019374,0.0019826,0.0020287,0.002076,0.0021243,0.0021739,0.0022244,0.0022763,0.002329,0.002384,0.002439,0.002496,0.002554,0.002613,0.002675,0.002736,0.002801,0.002866,0.002932,0.003001,0.00307,0.003142,0.003216,0.00329,0.003367,0.003445,0.003526,0.003607,0.003692,0.003778,0.003865,0.003956,0.004048,0.004142,0.004239,0.004337,0.004438,0.004542,0.004648,0.004756,0.004866,0.00498,0.005096,0.005215,0.005336,0.00546,0.005588,0.005718,0.005851,0.005987,0.006126,0.00627,0.006415,0.006565,0.006718,0.006874,0.007035,0.007198,0.007366,0.007537,0.007713,0.007893,0.008076,0.008265,0.008457,0.008654,0.008856,0.009062,0.009273,0.009489,0.009711,0.009936,0.010168,0.010404,0.010647,0.010895,0.011149,0.011408,0.011674,0.011946,0.012225,0.012509,0.0128,0.013099,0.013404,0.013716,0.014035,0.014362,0.014697,0.015039,0.01539,0.015748,0.016115,0.01649,0.016874,0.017268,0.017669,0.018081,0.018503,0.018933,0.019374,0.019826,0.020287,0.02076,0.021243,0.021739,0.022244,0.022763,0.02329,0.02384,0.02439,0.02496,0.02554,0.02613,0.02675,0.02736,0.02801,0.02866,0.02932,0.03001,0.0307,0.03142,0.03216,0.0329,0.03367,0.03445,0.03526,0.03607,0.03692,0.03778,0.03865,0.03956,0.04048,0.04142,0.04239,0.04337,0.04438,0.04542,0.04648,0.04756,0.04866,0.0498,0.05096,0.05215,0.05336,0.0546,0.05588,0.05718,0.05851,0.05987,0.06126,0.0627,0.06415,0.06565,0.06718,0.06874,0.07035,0.051293};
                                                   >>  82 static G4double tet[DIM]={1.01165e-07,1.03521e-07,1.05933e-07,1.084e-07,1.10925e-07,1.13509e-07,1.16153e-07,1.18858e-07,1.21627e-07,1.2446e-07,1.27359e-07,1.30326e-07,1.33361e-07,1.36467e-07,1.39646e-07,1.42899e-07,1.46227e-07,1.49633e-07,1.53119e-07,1.56685e-07,1.60335e-07,1.6407e-07,1.67891e-07,1.71802e-07,1.75804e-07,1.79899e-07,1.84089e-07,1.88377e-07,1.92765e-07,1.97255e-07,2.0185e-07,2.06552e-07,2.11363e-07,2.16286e-07,2.21324e-07,2.26479e-07,2.31755e-07,2.37153e-07,2.42677e-07,2.4833e-07,2.54115e-07,2.60034e-07,2.6609e-07,2.72288e-07,2.7863e-07,2.8512e-07,2.91762e-07,2.98558e-07,3.05513e-07,3.12629e-07,3.19911e-07,3.27363e-07,3.34987e-07,3.4279e-07,3.50775e-07,3.58946e-07,3.67307e-07,3.75862e-07,3.84617e-07,3.93576e-07,4.02744e-07,4.12124e-07,4.21725e-07,4.31548e-07,4.416e-07,4.51886e-07,4.62412e-07,4.73183e-07,4.84204e-07,4.95483e-07,5.07024e-07,5.18834e-07,5.3092e-07,5.43286e-07,5.55941e-07,5.68891e-07,5.82142e-07,5.95702e-07,6.09577e-07,6.23776e-07,6.38305e-07,6.53173e-07,6.68388e-07,6.83957e-07,6.99889e-07,7.16191e-07,7.32873e-07,7.49944e-07,7.67412e-07,7.85287e-07,8.03579e-07,8.22297e-07,8.41451e-07,8.61051e-07,8.81108e-07,9.01631e-07,9.22633e-07,9.44124e-07,9.66115e-07,9.88618e-07,1.01164e-06,1.03521e-06,1.05933e-06,1.084e-06,1.10925e-06,1.13508e-06,1.16152e-06,1.18858e-06,1.21626e-06,1.2446e-06,1.27359e-06,1.30325e-06,1.33361e-06,1.36467e-06,1.39646e-06,1.42899e-06,1.46227e-06,1.49633e-06,1.53119e-06,1.56686e-06,1.60335e-06,1.6407e-06,1.67891e-06,1.71802e-06,1.75804e-06,1.79899e-06,1.8409e-06,1.88378e-06,1.92765e-06,1.97255e-06,2.0185e-06,2.06552e-06,2.11363e-06,2.16286e-06,2.21324e-06,2.26479e-06,2.31755e-06,2.37153e-06,2.42677e-06,2.4833e-06,2.54114e-06,2.60034e-06,2.6609e-06,2.72288e-06,2.7863e-06,2.8512e-06,2.91762e-06,2.98558e-06,3.05512e-06,3.12629e-06,3.19911e-06,3.27362e-06,3.34987e-06,3.42791e-06,3.50775e-06,3.58945e-06,3.67306e-06,3.75862e-06,3.84617e-06,3.93576e-06,4.02744e-06,4.12125e-06,4.21724e-06,4.31548e-06,4.416e-06,4.51886e-06,4.62411e-06,4.73183e-06,4.84205e-06,4.95483e-06,5.07024e-06,5.18834e-06,5.30919e-06,5.43286e-06,5.55941e-06,5.68891e-06,5.82142e-06,5.95702e-06,6.09578e-06,6.23776e-06,6.38306e-06,6.53173e-06,6.68388e-06,6.83957e-06,6.99889e-06,7.16191e-06,7.32873e-06,7.49944e-06,7.67412e-06,7.85287e-06,8.03579e-06,8.22298e-06,8.41451e-06,8.61051e-06,8.81107e-06,9.01631e-06,9.22633e-06,9.44123e-06,9.66115e-06,9.88618e-06,1.01165e-05,1.03521e-05,1.05932e-05,1.084e-05,1.10925e-05,1.13508e-05,1.16153e-05,1.18858e-05,1.21627e-05,1.2446e-05,1.27359e-05,1.30326e-05,1.33361e-05,1.36467e-05,1.39646e-05,1.42899e-05,1.46227e-05,1.49633e-05,1.53119e-05,1.56685e-05,1.60335e-05,1.6407e-05,1.67892e-05,1.71802e-05,1.75804e-05,1.79899e-05,1.84089e-05,1.88378e-05,1.92765e-05,1.97255e-05,2.0185e-05,2.06552e-05,2.11363e-05,2.16286e-05,2.21324e-05,2.2648e-05,2.31755e-05,2.37153e-05,2.42677e-05,2.4833e-05,2.54115e-05,2.60033e-05,2.6609e-05,2.72288e-05,2.7863e-05,2.8512e-05,2.91762e-05,2.98558e-05,3.05513e-05,3.12629e-05,3.19911e-05,3.27362e-05,3.34987e-05,3.4279e-05,3.50775e-05,3.58946e-05,3.67307e-05,3.75862e-05,3.84617e-05,3.93576e-05,4.02743e-05,4.12125e-05,4.21724e-05,4.31548e-05,4.416e-05,4.51886e-05,4.62412e-05,4.73183e-05,4.84204e-05,4.95483e-05,5.07024e-05,5.18834e-05,5.30919e-05,5.43287e-05,5.55941e-05,5.68891e-05,5.82142e-05,5.95702e-05,6.09577e-05,6.23776e-05,6.38306e-05,6.53173e-05,6.68388e-05,6.83957e-05,6.99888e-05,7.16191e-05,7.32873e-05,7.49944e-05,7.67412e-05,7.85288e-05,8.0358e-05,8.22297e-05,8.41451e-05,8.61051e-05,8.81108e-05,9.01631e-05,9.22633e-05,9.44124e-05,9.66115e-05,9.88618e-05,0.000101165,0.000103521,0.000105932,0.0001084,0.000110925,0.000113508,0.000116153,0.000118858,0.000121626,0.00012446,0.000127359,0.000130325,0.000133361,0.000136467,0.000139646,0.000142899,0.000146228,0.000149633,0.000153119,0.000156686,0.000160335,0.00016407,0.000167891,0.000171802,0.000175804,0.000179899,0.000184089,0.000188377,0.000192765,0.000197255,0.00020185,0.000206552,0.000211363,0.000216286,0.000221324,0.000226479,0.000231755,0.000237153,0.000242677,0.00024833,0.000254115,0.000260033,0.00026609,0.000272288,0.000278631,0.00028512,0.000291762,0.000298558,0.000305513,0.000312629,0.000319911,0.000327363,0.000334987,0.00034279,0.000350775,0.000358946,0.000367307,0.000375862,0.000384617,0.000393576,0.000402743,0.000412124,0.000421725,0.000431548,0.0004416,0.000451886,0.000462411,0.000473183,0.000484204,0.000495483,0.000507024,0.000518834,0.000530919,0.000543286,0.000555941,0.000568891,0.000582142,0.000595702,0.000609577,0.000623776,0.000638305,0.000653173,0.000668388,0.000683957,0.000699889,0.000716191,0.000732873,0.000749944,0.000767413,0.000785287,0.000803579,0.000822297,0.000841451,0.000861051,0.000881108,0.000901631,0.000922633,0.000944124,0.000966115,0.000988618,0.00101165,0.00103521,0.00105933,0.001084,0.00110925,0.00113509,0.00116153,0.00118858,0.00121627,0.0012446,0.00127359,0.00130325,0.00133361,0.00136467,0.00139646,0.00142899,0.00146228,0.00149634,0.00153119,0.00156686,0.00160335,0.0016407,0.00167892,0.00171802,0.00175804,0.00179899,0.00184089,0.00188378,0.00192765,0.00197255,0.0020185,0.00206552,0.00211363,0.00216286,0.00221324,0.0022648,0.00231755,0.00237153,0.00242677,0.0024833,0.00254114,0.00260034,0.0026609,0.00272288,0.00278631,0.0028512,0.00291762,0.00298558,0.00305512,0.00312629,0.00319911,0.00327363,0.00334987,0.00342791,0.00350775,0.00358946,0.00367307,0.00375862,0.00384617,0.00393576,0.00402743,0.00412124,0.00421724,0.00431548,0.004416,0.00451886,0.00462411,0.00473183,0.00484204,0.00495483,0.00507024,0.00518834,0.00530919,0.00543287,0.00555941,0.0056889,0.00582142,0.00595702,0.00609577,0.00623776,0.00638306,0.00653174,0.00668388,0.00683957,0.00699888,0.00716191,0.00732873,0.00749944,0.00767413,0.00785288,0.0080358,0.00822298,0.00841451,0.00861051,0.00881107,0.00901631,0.00922633,0.00944123,0.00966115,0.00988619,0.0101164,0.0103521,0.0105932,0.01084,0.0110925,0.0113508,0.0116153,0.0118858,0.0121627,0.012446,0.0127359,0.0130326,0.0133361,0.0136467,0.0139646,0.0142899,0.0146228,0.0149634,0.0153119,0.0156685,0.0160335,0.016407,0.0167892,0.0171802,0.0175804,0.0179899,0.018409,0.0188378,0.0192765,0.0197255,0.020185,0.0206552,0.0211363,0.0216286,0.0221324,0.022648,0.0231755,0.0237153,0.0242677,0.024833,0.0254115,0.0260034,0.026609,0.0272288,0.0278631,0.028512,0.0291762,0.0298558,0.0305513,0.0312629,0.0319911,0.0327363,0.0334988,0.0342791,0.0350775,0.0358945,0.0367307,0.0375862,0.0384617,0.0393576,0.0402744,0.0412124,0.0421725,0.0431548,0.04416,0.0451886,0.0462412,0.0473183,0.0484205,0.0495483,0.0507024,0.0518834,0.0530919,0.0543286,0.0555941,0.056889,0.0582142,0.0595702,0.0609577,0.0623776,0.0638305,0.0653173,0.0668388,0.0683957,0.0699888,0.0716191,0.0732873,0.0749944,0.0767413,0.0785288,0.0803579,0.0822297,0.0841451,0.0861051,0.0881108,0.0901631,0.0922632,0.0944124,0.0966115,0.0988619,0.101165,0.103521,0.105932,0.1084,0.110925,0.113508,0.116152,0.118858,0.121626,0.12446,0.127359,0.130325,0.133361,0.136467,0.139646,0.142899,0.146228,0.149633,0.153119,0.156685,0.160335,0.16407,0.167891,0.171802,0.175804,0.179899,0.18409,0.188378,0.192765,0.197255,0.20185,0.206552,0.211363,0.216286,0.221324,0.22648,0.231755,0.237153,0.242677,0.24833,0.254115,0.260034,0.26609,0.272288,0.278631,0.28512,0.291762,0.298558,0.305513,0.312629,0.319911,0.327363,0.334987,0.34279,0.350775,0.358946,0.367306,0.375862,0.384617,0.393576,0.402744,0.412125,0.421725,0.431548,0.4416,0.451886,0.462411,0.473183,0.484205,0.495483,0.507024,0.518834,0.530919,0.543287,0.555941,0.56889,0.582142,0.595702,0.609577,0.623776,0.638305,0.653173,0.668388,0.683957,0.699888,0.716191,0.732873,0.749944,0.767413,0.785288,0.80358,0.822297,0.841451,0.861051,0.881107,0.901631,0.922632,0.944124,0.966115,0.988619,1.01165,1.03521,1.05932,1.084,1.10925,1.13509,1.16153,1.18858,1.21626,1.2446,1.27359,1.30326,1.33361,1.36467,1.39646,1.42899,1.46227,1.49633,1.53119,1.56685,1.60335,1.6407,1.67891,1.71802,1.75804,1.79899,1.8409,1.88377,1.92765,1.97255,2.0185,2.06552,2.11363,2.16286,2.21324,2.26479,2.31755,2.37153,2.42677,2.4833,2.54115,2.60033,2.6609,2.72288,2.78631,2.85121,2.91762,2.98558,3.05513,3.11595};
 84                                                    83 
 85 static const G4double angle[DIMMOTT]={         <<  84 using namespace std;
 86 1e-07,1.02329e-07,1.04713e-07,1.07152e-07,1.09 << 
 87                                                << 
 88 //using namespace std;                         << 
 89                                                    85 
 90 G4ScreeningMottCrossSection::G4ScreeningMottCr     86 G4ScreeningMottCrossSection::G4ScreeningMottCrossSection():
 91    cosThetaMin(1.0),                               87    cosThetaMin(1.0),
 92    cosThetaMax(-1.0),                              88    cosThetaMax(-1.0),
 93    alpha(fine_structure_const),                    89    alpha(fine_structure_const),
 94    htc2(hbarc_squared),                            90    htc2(hbarc_squared),
 95    e2(electron_mass_c2*classic_electr_radius)      91    e2(electron_mass_c2*classic_electr_radius)
 96 {                                                  92 {
 97   fTotalCross=0;                               <<  93   TotalCross=0;
 98                                                    94 
 99   fNistManager = G4NistManager::Instance();        95   fNistManager = G4NistManager::Instance();
100   fG4pow = G4Pow::GetInstance();                   96   fG4pow = G4Pow::GetInstance();
101   particle=nullptr;                                97   particle=nullptr;
102                                                    98 
103   spin = mass = mu_rel = 0.0;                  <<  99   spin = mass = mu_rel=0.0;
104   tkinLab = momLab2 = invbetaLab2 = 0.0;       << 100   tkinLab = momLab2 = invbetaLab2=0.0;
105   tkin = mom2 = invbeta2 = beta = gamma = 0.0; << 101   tkin = mom2 = invbeta2=beta=gamma=0.0;
106                                                   102 
107   targetMass = As = etag = ecut = 0.0;         << 103   Trec=targetZ = targetMass = As =0.0;
                                                   >> 104   etag = ecut = 0.0;
108                                                   105 
109   targetZ = targetA = 0;                       << 106   targetA = 0;
110                                                   107 
111   cosTetMinNuc = cosTetMaxNuc = 0.0;           << 108   cosTetMinNuc=0;
112 }                                              << 109   cosTetMaxNuc=0;
113                                                   110 
114 //....Ooooo0ooooo........oooOO0OOooo........oo << 111   for(G4int i=0 ; i<5;  ++i){
                                                   >> 112     for(G4int j=0; j< 6; ++j){
                                                   >> 113       coeffb[i][j]=0;
                                                   >> 114     }
                                                   >> 115   }
                                                   >> 116   if(dangle[0] == 0.0) {
                                                   >> 117     for(G4int i=0; i<DIM; ++i){
                                                   >> 118       cross[i]=0;
                                                   >> 119     }
                                                   >> 120   }
115                                                   121 
116 G4ScreeningMottCrossSection::~G4ScreeningMottC << 122   mottcoeff = new G4MottCoefficients();
                                                   >> 123 }
117                                                   124 
118 //....oooOO0OOooo........oooOO0OOooo........oo    125 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
119                                                   126 
                                                   >> 127 G4ScreeningMottCrossSection::~G4ScreeningMottCrossSection()
                                                   >> 128 {
                                                   >> 129   delete mottcoeff;
                                                   >> 130 }
                                                   >> 131 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
                                                   >> 132 
120 void G4ScreeningMottCrossSection::Initialise(c    133 void G4ScreeningMottCrossSection::Initialise(const G4ParticleDefinition* p,
121                                              G << 134                                           G4double CosThetaLim)
122 {                                                 135 {
123   SetupParticle(p);                               136   SetupParticle(p);
124   tkin = mom2 = 0.0;                           << 137   tkin = targetZ = mom2 = 0.0;
125   ecut = etag = DBL_MAX;                          138   ecut = etag = DBL_MAX;
126   particle = p;                                   139   particle = p;
127   cosThetaMin = cosThetaLim;                   << 140   cosThetaMin = CosThetaLim;
                                                   >> 141 
                                                   >> 142 }
                                                   >> 143 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
                                                   >> 144 void G4ScreeningMottCrossSection::SetScreeningCoefficient()
                                                   >> 145 {
                                                   >> 146   G4double alpha2=alpha*alpha;
                                                   >> 147   //Bohr radius
                                                   >> 148   G4double a0=  Bohr_radius  ;//0.529e-8*cm;
                                                   >> 149   //Thomas-Fermi screening length
                                                   >> 150   G4double aU=0.88534*a0/fG4pow->Z13(targetZ);
                                                   >> 151   G4double twoR2=aU*aU;
                                                   >> 152 
                                                   >> 153   G4double factor= 1.13 + 3.76*targetZ*targetZ*invbeta2*alpha2;
                                                   >> 154   As=0.25*(htc2)/(twoR2*mom2)*factor;
                                                   >> 155   //cout<<"0k .........................As  "<<As<<endl;
128 }                                                 156 }
129                                                   157 
130 //....oooOO0OOooo........oooOO0OOooo........oo    158 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
131                                                   159 
132 void G4ScreeningMottCrossSection::SetupKinemat << 160 G4double G4ScreeningMottCrossSection::GetScreeningAngle()
                                                   >> 161 {
                                                   >> 162   SetScreeningCoefficient();
                                                   >> 163 
                                                   >> 164   G4double screenangle=2.*asin(sqrt(As));
                                                   >> 165   //  cout<<"  screenangle  "<<  screenangle <<endl;
                                                   >> 166   if(screenangle>=pi) screenangle=pi;
                                                   >> 167 
                                                   >> 168   return screenangle;
                                                   >> 169 }
                                                   >> 170 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
                                                   >> 171 
                                                   >> 172 void G4ScreeningMottCrossSection::SetupKinematic(G4double ekin, G4double Z )
133 {                                                 173 {
134   //...Target                                     174   //...Target
135   const G4int iz = std::min(92, Z);            << 175   G4int iz = G4lrint(Z);
136   const G4int ia = G4lrint(fNistManager->GetAt << 176   G4double A = fNistManager->GetAtomicMassAmu(iz);
                                                   >> 177   G4int ia = G4lrint(A);
                                                   >> 178   G4double mass2 = G4NucleiProperties::GetNuclearMass(ia, iz);
                                                   >> 179 
                                                   >> 180   targetZ = Z;
                                                   >> 181   targetA = fNistManager->GetAtomicMassAmu(iz);
                                                   >> 182   targetMass= mass2;
137                                                   183 
138   targetZ = iz;                                << 184   mottcoeff->SetMottCoeff(targetZ, coeffb);
139   targetA = ia;                                << 
140   targetMass = G4NucleiProperties::GetNuclearM << 
141                                                   185 
142   //G4cout<<"......... targetA "<< targetA <<G << 186   //cout<<"......... targetA "<< targetA <<endl;
143   //G4cout<<"......... targetMass "<< targetMa << 187   //cout<<"......... targetMass "<< targetMass/MeV <<endl;
144                                                   188 
145   // incident particle lab                        189   // incident particle lab
146   tkinLab = ekin;                                 190   tkinLab = ekin;
147   momLab2 = tkinLab*(tkinLab + 2.0*mass);         191   momLab2 = tkinLab*(tkinLab + 2.0*mass);
148   invbetaLab2 = 1.0 +  mass*mass/momLab2;         192   invbetaLab2 = 1.0 +  mass*mass/momLab2;
149                                                   193 
150   const G4double etot = tkinLab + mass;        << 194   G4double etot = tkinLab + mass;
151   const G4double ptot = std::sqrt(momLab2);    << 195   G4double ptot = sqrt(momLab2);
152   const G4double m12  = mass*mass;             << 196   G4double m12  = mass*mass;
153                                                   197 
154   // relativistic reduced mass from publucatio    198   // relativistic reduced mass from publucation
155   // A.P. Martynenko, R.N. Faustov, Teoret. ma    199   // A.P. Martynenko, R.N. Faustov, Teoret. mat. Fiz. 64 (1985) 179
156                                                   200 
157   //incident particle & target nucleus            201   //incident particle & target nucleus
158   const G4double Ecm = std::sqrt(m12 + targetM << 202   G4double Ecm=sqrt(m12 + mass2*mass2 + 2.0*etot*mass2);
159   mu_rel = mass*targetMass/Ecm;                << 203   mu_rel=mass*mass2/Ecm;
160   const G4double momCM= ptot*targetMass/Ecm;   << 204   G4double momCM= ptot*mass2/Ecm;
161   // relative system                              205   // relative system
162   mom2 = momCM*momCM;                             206   mom2 = momCM*momCM;
163   const G4double x = mu_rel*mu_rel/mom2;       << 207   G4double x = mu_rel*mu_rel/mom2;
164   invbeta2 = 1.0 + x;                             208   invbeta2 = 1.0 + x;
165   tkin = momCM*std::sqrt(invbeta2) - mu_rel;// << 209   tkin = momCM*sqrt(invbeta2) - mu_rel;//Ekin of mu_rel
166   const G4double  beta2 = 1./invbeta2;         << 210   G4double  beta2=1./invbeta2;
167   beta = std::sqrt(beta2) ;                    << 211   beta=std::sqrt(beta2) ;
168   const G4double gamma2= invbeta2/x;           << 212   G4double gamma2= invbeta2/x; 
169   gamma = std::sqrt(gamma2);                   << 213   gamma=std::sqrt(gamma2);
170                                                   214 
171   //Thomas-Fermi screening length              << 215   //.........................................................
172   const G4double alpha2 = alpha*alpha;         << 216 
173   const G4double aU = 0.88534*CLHEP::Bohr_radi << 217   SetScreeningCoefficient();
174   const G4double twoR2 = aU*aU;                << 
175   As = 0.25*htc2*(1.13 + 3.76*targetZ*targetZ* << 
176                                                   218 
177   //Integration Angles definition                 219   //Integration Angles definition
178   cosTetMinNuc = cosThetaMin;                  << 220 
179   cosTetMaxNuc = cosThetaMax;                  << 221   cosTetMinNuc =cosThetaMin;
                                                   >> 222   cosTetMaxNuc =cosThetaMax;
                                                   >> 223 
                                                   >> 224   for(G4int i=0; i<DIM;  ++i ){
                                                   >> 225     cross[i]=0;
                                                   >> 226   }
180 }                                                 227 }
181                                                   228 
182 //....oooOO0OOooo........oooOO0OOooo........oo    229 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
183                                                   230 
184 G4double G4ScreeningMottCrossSection::FormFact << 231 G4double G4ScreeningMottCrossSection::FormFactor2ExpHof(G4double angles)
185 {                                                 232 {
186   G4double M=targetMass;                          233   G4double M=targetMass;
187   G4double E=tkinLab;                             234   G4double E=tkinLab;
188   G4double Etot=E+mass;                           235   G4double Etot=E+mass;
189   G4double Tmax=2.*M*E*(E+2.*mass)/(mass*mass+    236   G4double Tmax=2.*M*E*(E+2.*mass)/(mass*mass+M*M+2.*M*Etot);
190   G4double T=Tmax*sin2t2;                      << 237   G4double T=Tmax*fG4pow->powN(sin(angles*0.5), 2);
191   G4double q2=T*(T+2.*M);                         238   G4double q2=T*(T+2.*M);
192   q2/=htc2;//1/cm2                                239   q2/=htc2;//1/cm2
193   G4double RN=1.27e-13*G4Exp(fG4pow->logZ(targ << 240   G4double RN=1.27e-13*G4Exp(G4Log(targetA)*0.27)*cm;
194   G4double xN= (RN*RN*q2);                        241   G4double xN= (RN*RN*q2);
195   G4double den=(1.+xN/12.);                       242   G4double den=(1.+xN/12.);
196   G4double FN=1./(den*den);                       243   G4double FN=1./(den*den);
197   G4double form2=(FN*FN);                         244   G4double form2=(FN*FN);
198                                                   245 
199   return form2;                                   246   return form2;
                                                   >> 247 
                                                   >> 248   //cout<<"..................... form2 "<< form2<<endl;
200 }                                                 249 }
201                                                   250 
202 //....oooOO0OOooo........oooOO0OOooo........oo    251 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
203                                                   252 
204 G4double G4ScreeningMottCrossSection::FormFact << 253 G4double G4ScreeningMottCrossSection::FormFactor2Gauss(G4double angles)
205 {                                                 254 {
206   G4double M=targetMass;                          255   G4double M=targetMass;
207   G4double E=tkinLab;                             256   G4double E=tkinLab;
208   G4double Etot=E+mass;                           257   G4double Etot=E+mass;
209   G4double Tmax=2.*M*E*(E+2.*mass)/(mass*mass+    258   G4double Tmax=2.*M*E*(E+2.*mass)/(mass*mass+M*M+2.*M*Etot);
210   G4double T=Tmax*sin2t2;                      << 259   G4double T=Tmax*fG4pow->powN(sin(angles*0.5), 2);
211   G4double q2=T*(T+2.*M);                         260   G4double q2=T*(T+2.*M);
212   q2/=htc2;//1/cm2                                261   q2/=htc2;//1/cm2
213   G4double RN=1.27e-13*G4Exp(fG4pow->logZ(targ << 262   G4double RN=1.27e-13*G4Exp(G4Log(targetA)*0.27)*cm;
214   G4double xN= (RN*RN*q2);                        263   G4double xN= (RN*RN*q2);
215                                                   264 
216   G4double expo=(-xN/6.);                         265   G4double expo=(-xN/6.);
217   G4double FN=G4Exp(expo);                        266   G4double FN=G4Exp(expo);
218                                                   267 
219   G4double form2=(FN*FN);                         268   G4double form2=(FN*FN);
220                                                   269 
221   return form2;                                   270   return form2;
                                                   >> 271 
                                                   >> 272   //cout<<"..................... form2 "<< form2<<endl;
222 }                                                 273 }
223                                                   274 
224 //....oooOO0OOooo........oooOO0OOooo........oo    275 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
225                                                   276 
226 G4double G4ScreeningMottCrossSection::FormFact << 277 G4double G4ScreeningMottCrossSection::FormFactor2UniformHelm(G4double angles)
227 {                                                 278 {
228   G4double M=targetMass;                          279   G4double M=targetMass;
229   G4double E=tkinLab;                             280   G4double E=tkinLab;
230   G4double Etot=E+mass;                           281   G4double Etot=E+mass;
231   G4double Tmax=2.*M*E*(E+2.*mass)/(mass*mass+    282   G4double Tmax=2.*M*E*(E+2.*mass)/(mass*mass+M*M+2.*M*Etot);
232   G4double T=Tmax*sin2t2;                      << 283   G4double T=Tmax*fG4pow->powN(sin(angles*0.5), 2);
233   G4double q2=T*(T+2.*M);                         284   G4double q2=T*(T+2.*M);
234   q2=q2/(htc2*0.01);//1/cm2                       285   q2=q2/(htc2*0.01);//1/cm2
235                                                   286 
236   G4double q=std::sqrt(q2);                    << 287   G4double q=G4Exp(G4Log(q2)*0.5);;
237   G4double R0=1.2E-13*fG4pow->Z13(targetA);    << 288   G4double R0=1.2E-13*G4Exp(G4Log(targetA)/3.);
238   G4double R1=2.0E-13;                            289   G4double R1=2.0E-13;
239                                                   290 
240   G4double x0=q*R0;                               291   G4double x0=q*R0;
241   G4double F0=(3./fG4pow->powN(x0,3))*(std::si << 292   G4double F0=(3./fG4pow->powN(x0,3))*(sin(x0)-x0*cos(x0));
242                                                   293 
243   G4double x1=q*R1;                               294   G4double x1=q*R1;
244   G4double F1=(3./fG4pow->powN(x1,3))*(std::si << 295   G4double F1=(3./fG4pow->powN(x1,3))*(sin(x1)-x1*cos(x1));
245                                                   296 
246   G4double F=F0*F1;                               297   G4double F=F0*F1;
247                                                   298 
248   G4double form2=(F*F);                           299   G4double form2=(F*F);
249                                                   300 
250   return form2;                                << 301   //cout<<"htc: "<<sqrt(htc2)<<" R0: "<<R0<<" F0: "<<F0<<" F1: "<<F1<<" Targer Mass: "<<targetMass<<" Energy: "<<tkinLab<<" ANGLE: "<<angles<<" FORM: "<<form2<<endl;
251 }                                              << 
252                                                   302 
253 //....oooOO0OOooo........oooOO0OOooo........oo << 303   return form2;
254                                                   304 
255 G4double G4ScreeningMottCrossSection::McFcorre << 305   //cout<<"..................... form2 "<< form2<<endl;
256 {                                              << 
257   const G4double sint = std::sqrt(sin2t2);     << 
258   return 1.-beta*beta*sin2t2 + targetZ*alpha*b << 
259 }                                                 306 }
260                                                   307 
261 //....oooOO0OOooo........oooOO0OOooo........oo    308 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
262                                                   309 
263 G4double G4ScreeningMottCrossSection::RatioMot << 310 G4double G4ScreeningMottCrossSection::McFcorrection(G4double angles )
264 {                                                 311 {
265   return RatioMottRutherfordCosT(std::sqrt(1.  << 312   G4double  beta2=1./invbeta2;
                                                   >> 313   G4double sintmezzi=std::sin(angles/2.);
                                                   >> 314   G4double sin2tmezzi = sintmezzi*sintmezzi;
                                                   >> 315   G4double R=1.-beta2*sin2tmezzi + targetZ*alpha*beta*pi*sintmezzi*(1.-sintmezzi);
                                                   >> 316   return R;
266 }                                                 317 }
267                                                << 
268 //....oooOO0OOooo........oooOO0OOooo........oo    318 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
269                                                << 319 G4double G4ScreeningMottCrossSection::RatioMottRutherford(G4double angles)
270 G4double G4ScreeningMottCrossSection::RatioMot << 
271 {                                                 320 {
272   G4double R(0.);                              << 321   G4double R=0;
273   const G4double shift = 0.7181228;            << 322   G4double fcost=std::sqrt((1. -cos(angles)));
274   G4double beta0 = beta - shift;               << 323   G4double a[5];
                                                   >> 324   static const G4double shift=0.7181228;
                                                   >> 325   G4double beta0= beta -shift;
275                                                   326 
276   G4double b0 = 1.0;                           << 327   for(G4int j=0 ;j<=4;j++){
277   G4double b[6];                               << 328     a[j]=0;
278   for(G4int i=0; i<6; ++i) {                   << 
279     b[i] = b0;                                 << 
280     b0 *= beta0;                               << 
281   }                                               329   }
282                                                   330 
283   b0 = 1.0;                                    << 331   for(G4int j=0 ;j<=4;j++){
284   for(G4int j=0; j<=4; ++j) {                  << 332     for(G4int k=0;k<=5;k++ ){
285     G4double a = 0.0;                          << 333       a[j]+=coeffb[j][k]*fG4pow->powN(beta0,k);
286     for(G4int k=0; k<=5; ++k){                 << 
287       a += fMottCoef[targetZ][j][k]*b[k];      << 
288     }                                             334     }
289     R += a*b0;                                 << 
290     b0 *= fcost;                               << 
291   }                                               335   }
292   return R;                                    << 
293 }                                              << 
294                                                << 
295 //....oooOO0OOooo........oooOO0OOooo........oo << 
296                                                   336 
297 G4double G4ScreeningMottCrossSection::GetTrans << 337   for(G4int j=0; j<=4; ++j){
298 {                                              << 338     R+=a[j]*fG4pow->powN(fcost,j);
299   G4double x = G4Log(tkinLab)*invlog10;        << 
300   G4double res(0.), x0(1.0);                   << 
301   for(G4int i=0; i<11; ++i) {                  << 
302     res += fPRM[targetZ][i]*x0;                << 
303     x0 *= x;                                   << 
304   }                                               339   }
305   //G4cout << "Z= " << targetZ << " x0= " << x << 340   return R;
306   return res;                                  << 
307 }                                                 341 }
308                                                   342 
309 //....oooOO0OOooo........oooOO0OOooo........oo    343 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
310                                                   344 
311 G4double                                       << 345 G4double G4ScreeningMottCrossSection::NuclearCrossSection(G4int form)
312 G4ScreeningMottCrossSection::DifferentialXSect << 
313 {                                                 346 {
314   const G4double ang = angle[idx];             << 347   if(cosTetMaxNuc >= cosTetMinNuc) return 0.0;
315   const G4double z1 = 1.0 - std::cos(ang);     << 
316   G4double step;                               << 
317   if(0 == idx) {                               << 
318     step = 0.5*(angle[1] + angle[0]);          << 
319   } else if(DIMMOTT == idx + 1) {              << 
320     step = CLHEP::pi - 0.5*(angle[DIMMOTT-2] + << 
321   } else {                                     << 
322     step = 0.5*(angle[idx+1] - angle[idx-1]);  << 
323   }                                            << 
324                                                << 
325   G4double F2 = 1.;                            << 
326   switch (form) {                              << 
327   case 1:                                      << 
328     F2 = FormFactor2ExpHof(z1*0.5);            << 
329     break;                                     << 
330   case 2:                                      << 
331     F2 = FormFactor2Gauss(z1*0.5);             << 
332     break;                                     << 
333   case 3:                                      << 
334     F2 = FormFactor2UniformHelm(z1*0.5);       << 
335     break;                                     << 
336   }                                            << 
337                                                   348 
338   const G4double R = RatioMottRutherfordCosT(s << 349   TotalCross=0;
339                                                   350 
340   G4double den  = 2.*As + z1;                  << 351   for(G4int i=0; i<DIM; ++i){
341   G4double func = 1./(den*den);                << 352     G4double R=0;
342                                                   353 
343   G4double fatt = (G4double)targetZ/(mu_rel*ga << 354     G4double F2=0;
344   G4double sigma= e2*e2*fatt*fatt*func;        << 
345   G4double pi2sintet = CLHEP::twopi*std::sqrt( << 
346                                                   355 
347   G4double Xsec = std::max(pi2sintet*F2*R*sigm << 356     if(form==0){F2=1;}
348   return Xsec;                                 << 357     if(form==1){F2=FormFactor2ExpHof(tet[i]);}
349 }                                              << 358     if(form==2){F2=FormFactor2Gauss(tet[i]);}
350                                                << 359     if(form==3){F2=FormFactor2UniformHelm(tet[i]);}
351 //....oooOO0OOooo........oooOO0OOooo........oo << 
352                                                << 
353 G4double                                       << 
354 G4ScreeningMottCrossSection::NuclearCrossSecti << 
355 {                                              << 
356   fTotalCross=0.;                              << 
357   if(cosTetMaxNuc >= cosTetMinNuc) return fTot << 
358   if(0 == cross.size()) { cross.resize(DIMMOTT << 
359                                                << 
360   //G4cout<<"MODEL: "<<fast<<G4endl;           << 
361   //************ PRECISE COMPUTATION           << 
362   if(fast == 0){                               << 
363                                                   360 
364     for(G4int i=0; i<DIMMOTT; ++i){            << 361     if (coeffb[0][0]!=0){
365       G4double y = DifferentialXSection(i, for << 362       //cout<<" Mott....targetZ "<< targetZ<<endl;
366       fTotalCross += y;                        << 363       R=RatioMottRutherford(tet[i]);
367       cross[i] = fTotalCross;                  << 364     } else if (coeffb[0][0]==0){
368       if(fTotalCross*1.e-9 > y) {              << 365       // cout<<" McF.... targetZ "<< targetZ<<endl;
369   for(G4int j=i+1; j<DIMMOTT; ++j) {           << 366       R=McFcorrection(tet[i]);
370     cross[j] = fTotalCross;                    << 
371   }                                            << 
372         break;                                 << 
373       }                                        << 
374     }                                             367     }
375     //**************** FAST COMPUTATION        << 
376   } else if(fast == 1) {                       << 
377                                                   368 
378     G4double p0 = electron_mass_c2*classic_ele << 369     //cout<<"----------------- R "<<R<<" F2 "<<F2<<endl;
379     G4double coeff  = twopi*p0*p0;             << 370     //                cout<<"angle "<<tet[i] << " F2 "<<F2<<endl;
380                                                   371 
381     G4double fac = coeff*targetZ*targetZ*invbe << 372     G4double den=2.*As+2.*fG4pow->powN(sin(tet[i]*0.5),2);
                                                   >> 373     G4double func=1./(den*den);
382                                                   374 
383     G4double x  = 1.0 - cosTetMinNuc;          << 375     G4double fatt= targetZ/(mu_rel*gamma*beta*beta);
384     G4double x1 = x + 2*As;                    << 376     G4double sigma=e2*e2*fatt*fatt*func;
                                                   >> 377     G4double pi2sintet=twopi*sin(tet[i]);
385                                                   378 
386     // scattering with nucleus                 << 379     cross[i]=pi2sintet*F2*R*sigma*dangle[i];
387     fTotalCross = fac*(cosTetMinNuc - cosTetMa << 380     //cout<<i<<" Angle: "<<angle[i]<<" tet: "<<tet[i]<<" Cross: "<<cross[i]<<endl;
388       (x1*(1.0 - cosTetMaxNuc + 2*As));        << 381     if(cross[i]<0){cross[i]=0;};
389   }                                            << 382     TotalCross+=cross[i];
390   /*                                           << 383   }//end integral
391   G4cout << "Energy(MeV): " << tkinLab/CLHEP:: << 384 
392          << " Total Cross(mb): " << fTotalCros << 385   //cout<< "ok ......... TotalCross "<<TotalCross<<endl;
393          << " form= " << form << " fast= " <<  << 386   return TotalCross;
394   */                                           << 
395   return fTotalCross;                          << 
396 }                                                 387 }
397                                                   388 
398 //....oooOO0OOooo........oooOO0OOooo........oo    389 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
399                                                   390 
400 G4double                                       << 391 G4double G4ScreeningMottCrossSection::GetScatteringAngle()
401 G4ScreeningMottCrossSection::GetScatteringAngl << 392 {
402 {                                              << 393 
403   G4double scattangle = 0.0;                   << 394   //cout<<"Z: "<<targetZ<<" Energy: "<<tkinLab/MeV<<endl;
404   G4double r = G4UniformRand();                << 395 
405   //************ PRECISE COMPUTATION           << 396   //  cout<<"................ tkinLab  "<< G4BestUnit(tkinLab,"Energy") << " anglemin=  "<<anglemin<<endl;
406   if(fast == 0){                               << 397   //cout<<"anglemax=  "<<anglemax<<endl;
407     //G4cout << "r= " << r << " tot= " << fTot << 398   //G4double r =3e-6*G4UniformRand();
408     r *= fTotalCross;                          << 399   //G4double r=1e-12*G4UniformRand();
409     for(G4int i=0; i<DIMMOTT; ++i){            << 400   G4double r=G4UniformRand();
410       //G4cout << i << ". r= " << r << " xs= " << 
411       if(r <= cross[i]) {                      << 
412         scattangle = ComputeAngle(i, r);       << 
413   break;                                       << 
414       }                                        << 
415     }                                          << 
416                                                   401 
417     //**************** FAST COMPUTATION        << 402   G4double scattangle=0;
418   } else if(fast == 1) {                       << 403   G4double y=0;
                                                   >> 404   G4double step=0;
419                                                   405 
420     G4double limit = GetTransitionRandom();    << 406   for(G4int i=DIM-1; i>=0; --i){
421     if(limit > 0.0) {                          << 407     step=(1./TotalCross)*cross[i];
422       G4double Sz = 2*As;                      << 408     y+=step;
423       G4double x = Sz-((Sz*(2+Sz))/(Sz+2*limit << 409     if(r >=y-step && r<y ){
424       //G4cout << "limit= " << limit << " Sz=  << 410       scattangle= angle[i] +G4UniformRand()*dangle[i];
425       G4double angle_limit = (std::abs(x) < 1. << 411       break;
426       //G4cout<<"ANGLE LIMIT: "<<angle_limit<< << 
427                                                << 
428       if(r > limit && angle_limit != 0.0) {    << 
429   x = Sz-((Sz*(2+Sz))/(Sz+2*r))+1.0;           << 
430   scattangle = (x >= 1.0) ? 0.0 : ((x <= -1.0) << 
431   //G4cout<<"FAST: scattangle= "<< scattangle  << 
432       }                                        << 
433     } else {                                   << 
434       //G4cout<<"SLOW: total= "<<fTotalCross<< << 
435       r *= fTotalCross;                        << 
436       G4double tot = 0.0;                      << 
437       for(G4int i=0; i<DIMMOTT; ++i) {         << 
438   G4double xs = DifferentialXSection(i, form); << 
439         tot += xs;                             << 
440         cross[i] = tot;                        << 
441   if(r <= tot) {                               << 
442     scattangle = ComputeAngle(i, r);           << 
443     break;                                     << 
444   }                                            << 
445       }                                        << 
446     }                                             412     }
447   }                                               413   }
448   //****************************************** << 414   //cout<<"Energy: "<<tkinLab/MeV<<" SCATTANGLE: "<<scattangle<<endl;
449   //G4cout<<"Energy(MeV): "<<tkinLab/MeV<<" SC << 
450   return scattangle;                              415   return scattangle;
451 }                                              << 
452                                                << 
453 G4double G4ScreeningMottCrossSection::ComputeA << 
454 {                                              << 
455   G4double x1, x2, y;                          << 
456   if(0 == i) {                                 << 
457     x1 = 0.0;                                  << 
458     x2 = 0.5*(angle[0] + angle[1]);            << 
459     y = cross[0];                              << 
460   } else if(i == DIMMOTT-1) {                  << 
461     x1 = 0.5*(angle[i] + angle[i-1]);          << 
462     x2 = CLHEP::pi;                            << 
463     y  = cross[i] - cross[i-1];                << 
464     r -= cross[i-1];                           << 
465   } else {                                     << 
466     x1 = 0.5*(angle[i] + angle[i-1]);          << 
467     x2 = 0.5*(angle[i] + angle[i+1]);          << 
468     y  = cross[i] - cross[i-1];                << 
469     r -= cross[i-1];                           << 
470   }                                            << 
471   //G4cout << i << ". r= " << r << " y= " << y << 
472   //   << " x1= " << " x2= " << x2 << G4endl;  << 
473   return x1 + (x2 - x1)*r/y;                   << 
474 }                                                 416 }
475                                                   417