Geant4 Cross Reference |
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 // * 20 // * * 21 // * Parts of this code which have been devel 21 // * Parts of this code which have been developed by QinetiQ Ltd * 22 // * under contract to the European Space Agen 22 // * under contract to the European Space Agency (ESA) are the * 23 // * intellectual property of ESA. Rights to u 23 // * intellectual property of ESA. Rights to use, copy, modify and * 24 // * redistribute this software for general pu 24 // * redistribute this software for general public use are granted * 25 // * in compliance with any licensing, distrib 25 // * in compliance with any licensing, distribution and development * 26 // * policy adopted by the Geant4 Collaboratio 26 // * policy adopted by the Geant4 Collaboration. This code has been * 27 // * written by QinetiQ Ltd for the European S 27 // * written by QinetiQ Ltd for the European Space Agency, under ESA * 28 // * contract 17191/03/NL/LvH (Aurora Programm 28 // * contract 17191/03/NL/LvH (Aurora Programme). * 29 // * 29 // * * 30 // * By using, copying, modifying or distri 30 // * By using, copying, modifying or distributing the software (or * 31 // * any work based on the software) you ag 31 // * any work based on the software) you agree to acknowledge its * 32 // * use in resulting scientific publicati 32 // * use in resulting scientific publications, and indicate your * 33 // * acceptance of all terms of the Geant4 Sof 33 // * acceptance of all terms of the Geant4 Software license. * 34 // ******************************************* 34 // ******************************************************************** 35 // 35 // 36 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 36 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 37 // 37 // 38 // MODULE: G4EMDissociationSpectr 38 // MODULE: G4EMDissociationSpectrum.cc 39 // 39 // 40 // Version: B.1 40 // Version: B.1 41 // Date: 15/04/04 41 // Date: 15/04/04 42 // Author: P R Truscott 42 // Author: P R Truscott 43 // Organisation: QinetiQ Ltd, UK 43 // Organisation: QinetiQ Ltd, UK 44 // Customer: ESA/ESTEC, NOORDWIJK 44 // Customer: ESA/ESTEC, NOORDWIJK 45 // Contract: 17191/03/NL/LvH 45 // Contract: 17191/03/NL/LvH 46 // 46 // 47 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 47 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 48 // 48 // 49 // CHANGE HISTORY 49 // CHANGE HISTORY 50 // -------------- 50 // -------------- 51 // 51 // 52 // 6 October 2003, P R Truscott, QinetiQ Ltd, 52 // 6 October 2003, P R Truscott, QinetiQ Ltd, UK 53 // Created. 53 // Created. 54 // 54 // 55 // 15 March 2004, P R Truscott, QinetiQ Ltd, U 55 // 15 March 2004, P R Truscott, QinetiQ Ltd, UK 56 // Beta release 56 // Beta release 57 // 57 // 58 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 58 // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 59 ////////////////////////////////////////////// 59 //////////////////////////////////////////////////////////////////////////////// 60 // 60 // 61 #include "G4EMDissociationSpectrum.hh" 61 #include "G4EMDissociationSpectrum.hh" 62 #include "globals.hh" 62 #include "globals.hh" 63 #include "G4PhysicalConstants.hh" << 64 #include "G4SystemOfUnits.hh" << 65 #include "G4Pow.hh" << 66 << 67 ////////////////////////////////////////////// 63 //////////////////////////////////////////////////////////////////////////////// 68 // 64 // 69 G4EMDissociationSpectrum::G4EMDissociationSpec 65 G4EMDissociationSpectrum::G4EMDissociationSpectrum () 70 { 66 { 71 bessel = new G4Bessel(); 67 bessel = new G4Bessel(); 72 } 68 } 73 ////////////////////////////////////////////// 69 //////////////////////////////////////////////////////////////////////////////// 74 // 70 // 75 G4EMDissociationSpectrum::~G4EMDissociationSpe 71 G4EMDissociationSpectrum::~G4EMDissociationSpectrum () 76 { 72 { 77 delete bessel; 73 delete bessel; 78 } 74 } 79 ////////////////////////////////////////////// 75 //////////////////////////////////////////////////////////////////////////////// 80 // 76 // 81 G4double G4EMDissociationSpectrum::GetGeneralE 77 G4double G4EMDissociationSpectrum::GetGeneralE1Spectrum 82 (G4double Eg, G4double b, G4double bmin) 78 (G4double Eg, G4double b, G4double bmin) 83 { 79 { 84 G4double b2 = b*b; 80 G4double b2 = b*b; 85 G4double gg = 1.0/std::sqrt(1.0-b2); << 81 G4double g = 1.0/std::sqrt(1.0-b2); 86 G4double xi = Eg * bmin / gg / b / hbarc; << 82 G4double xi = Eg * bmin / g / b / hbarc; 87 G4double K0 = bessel->K0(xi); 83 G4double K0 = bessel->K0(xi); 88 G4double K1 = bessel->K1(xi); 84 G4double K1 = bessel->K1(xi); 89 G4double n = 2.0 * fine_structure_const / p 85 G4double n = 2.0 * fine_structure_const / pi / b2 / Eg * 90 (xi*K0*K1 - xi*xi*b2/2.0*(K1*K1-K0*K0)); 86 (xi*K0*K1 - xi*xi*b2/2.0*(K1*K1-K0*K0)); 91 return n; 87 return n; 92 } 88 } 93 ////////////////////////////////////////////// 89 //////////////////////////////////////////////////////////////////////////////// 94 // 90 // 95 G4double G4EMDissociationSpectrum::GetGeneralE 91 G4double G4EMDissociationSpectrum::GetGeneralE2Spectrum 96 (G4double Eg, G4double b, G4double bmin) 92 (G4double Eg, G4double b, G4double bmin) 97 { 93 { 98 G4double b2 = b * b; 94 G4double b2 = b * b; 99 G4double b4 = b2 * b2; 95 G4double b4 = b2 * b2; 100 G4double gg = 1.0/std::sqrt(1.0-b2); << 96 G4double g = 1.0/std::sqrt(1.0-b2); 101 G4double xi = Eg * bmin / gg / b / hbarc; << 97 G4double xi = Eg * bmin / g / b / hbarc; 102 G4double K0 = bessel->K0(xi); 98 G4double K0 = bessel->K0(xi); 103 G4double K1 = bessel->K1(xi); 99 G4double K1 = bessel->K1(xi); 104 G4double n = 2.0 * fine_structure_const / p 100 G4double n = 2.0 * fine_structure_const / pi / b4 / Eg * 105 (2.0*(1.0-b2)*K1*K1 + xi*G4Pow::GetInstanc << 101 (2.0*(1.0-b2)*K1*K1 + xi*std::pow((2.0-b2),2.0)*K0*K1 - 106 xi*xi*b4/2.0*(K1*K1-K0*K0)); 102 xi*xi*b4/2.0*(K1*K1-K0*K0)); 107 return n; 103 return n; 108 } 104 } 109 ////////////////////////////////////////////// 105 //////////////////////////////////////////////////////////////////////////////// 110 // 106 // 111 G4double G4EMDissociationSpectrum::GetClosestA 107 G4double G4EMDissociationSpectrum::GetClosestApproach 112 (const G4double AP, const G4double ZP, G4dou 108 (const G4double AP, const G4double ZP, G4double AT, G4double ZT, G4double b) 113 { 109 { 114 G4double bsq = b * b; 110 G4double bsq = b * b; 115 G4double gg = 1.0/std::sqrt(1-bsq); << 111 G4double g = 1.0/std::sqrt(1-bsq); 116 G4double AProot3 = G4Pow::GetInstance()->pow << 112 G4double AProot3 = std::pow(AP,1.0/3.0); 117 G4double ATroot3 = G4Pow::GetInstance()->pow << 113 G4double ATroot3 = std::pow(AT,1.0/3.0); 118 G4double bc = 1.34 * fermi * (AProot3+A 114 G4double bc = 1.34 * fermi * (AProot3+ATroot3 - 0.75 *(1.0/AProot3+1.0/ATroot3)); 119 // G4double a0 = ZP * ZT * classic_elect 115 // G4double a0 = ZP * ZT * classic_electr_radius/bsq; 120 G4double a0 = ZP * ZT * elm_coupling / 116 G4double a0 = ZP * ZT * elm_coupling / (AT*AP*amu_c2/(AT+AP)) / bsq; 121 G4double bmin = 1.25 * bc + halfpi*a0/gg; << 117 G4double bmin = 1.25 * bc + halfpi*a0/g; 122 return bmin; 118 return bmin; 123 } 119 } 124 ////////////////////////////////////////////// 120 //////////////////////////////////////////////////////////////////////////////// 125 // 121 // 126 122