Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // 27 // ------------------------------------------- 28 // 29 // GEANT4 Class header file 30 // 31 // File name: G4GSMottCorrection 32 // 33 // Author: Mihaly Novak 34 // 35 // Creation date: 23.08.2017 36 // 37 // Modifications: 38 // 39 // Class description: 40 // An object of this calss is used in the G4 41 // was required by the user in the G4Goudsmi 42 // The class is responsible to handle pre-co 43 // obtained as a ratio of GS angular distrib 44 // DCS to GS angular distributions computed 45 // The DCS used to compute the accurate Goud 46 // DCS_{cor} = DCS_{SR}x[ DCS_{R}/DCS_{Mott} 47 // # DCS_{SR} is the relativistic Screened- 48 // solution of the Klein-Gordon i.e. rela 49 // scattering of spinless e- on exponenti 50 // note: the default (without using Mott- 51 // are based on this DCS_{SR} with Molier 52 // # DCS_{R} is the Rutherford DCS which is 53 // screening 54 // # DCS_{Mott} is the Mott DCS i.e. soluti 55 // Coulomb potential i.e. scattering of p 56 // point-like unscreened Coulomb potentia 57 // # moreover, the screening parameter of t 58 // the DCS_{cor} with this corrected screenin 59 // transport cross sections obtained from the 60 // Unlike the default GS, the Mott-corrected 61 // (different for e- and e+ <= the DCS_{Mott} 62 // (Z and material) dependent. 63 // 64 // References: 65 // [2] I.Kawrakow, E.Mainegra-Hing, D.W.O.Ro 66 // Report PIRS-701 (2013) 67 // [2] N.F. Mott, Proc. Roy. Soc. (London) 68 // [3] F.Salvat, A.Jablonski, C.J. Powell, C 69 // 70 // ------------------------------------------- 71 72 #ifndef G4GSMottCorrection_h 73 #define G4GSMottCorrection_h 1 74 75 #include <CLHEP/Units/SystemOfUnits.h> 76 77 #include "globals.hh" 78 79 #include <vector> 80 #include <string> 81 #include <sstream> 82 83 class G4Material; 84 class G4Element; 85 86 87 class G4GSMottCorrection { 88 public: 89 G4GSMottCorrection(G4bool iselectron=true); 90 91 ~G4GSMottCorrection(); 92 93 void Initialise(); 94 95 void GetMottCorrectionFactors(G4double l 96 G4double & 97 98 G4double GetMottRejectionValue(G4double loge 99 G4int matindx 100 101 static G4int GetMaxZet() { return gMaxZet; } 102 103 private: 104 void InitMCDataPerElement(); 105 106 void InitMCDataPerMaterials(); 107 108 void LoadMCDataElement(const G4Element*); 109 110 void ReadCompressedFile(const std::string& f 111 112 void InitMCDataMaterial(const G4Material*); 113 // 114 // dat structures 115 struct DataPerDelta { 116 G4double fSA; // a,b,c 117 G4double fSB; 118 G4double fSC; 119 G4double fSD; 120 G4double *fRejFuntion; // rejec 121 }; 122 123 struct DataPerEkin { 124 G4double fMCScreening; // corre 125 G4double fMCFirstMoment; // corre 126 G4double fMCSecondMoment; // corre 127 DataPerDelta **fDataPerDelta; // per d 128 }; 129 130 // either per material or per Z 131 struct DataPerMaterial { 132 DataPerEkin **fDataPerEkin; // per kin 133 }; 134 // 135 void AllocateDataPerMaterial(DataPerMaterial 136 void DeAllocateDataPerMaterial(DataPerMateri 137 void ClearMCDataPerElement(); 138 void ClearMCDataPerMaterial(); 139 // 140 // data members: 141 // - Mott correction data are computed over 142 // I. Kinetic energy grid [both rejection 143 // 1. kinetic energy grid from 1[keV] - 144 // # linear interpolation on 145 // 2. \beta^2 grid from E_{kin} = 100[k 146 // # linear interpolation on 147 // 3. the overall kinetic energy grid i 148 // II. Delta value grid [rejection function 149 // 1. \delta=2 Q_{1SR} (\eta_{MCcor})/ 150 // Q_{1SR}(\eta_{MCcor}) =s/\lambda_ 151 // scattering along the path s and G 152 // but computed by using the Mott-co 153 // 2. the delta value grid is from [0(1 154 // # linear interpolation wi 155 // III. \sin(0.5\theta) grid[rejection funct 156 // 1. 32 \sin(0.5\theta) pints between 157 // be used exept the last bin where 158 private: 159 G4bool fIsElectron; 160 static constexpr G4int gNumEkin = 31; 161 static constexpr G4int gNumBeta2 = 16; 162 static constexpr G4int gNumDelta = 28; 163 static constexpr G4int gNumAngle = 32; 164 static constexpr G4int gMaxZet = 98; 165 static constexpr G4double gMinEkin = 1. 166 static constexpr G4double gMidEkin = 100. 167 static constexpr G4double gMaxBeta2 = 0. 168 static constexpr G4double gMaxDelta = 0. 169 // 170 G4double fMaxEkin; 171 G4double fLogMinEkin; 172 G4double fInvLogDelEkin; 173 G4double fMinBeta2; 174 G4double fInvDelBeta2; 175 G4double fInvDelDelta; 176 G4double fInvDelAngle; 177 // 178 static const std::string gElemSymbols[]; 179 // 180 std::vector<DataPerMaterial*> fMCDataPerEle 181 std::vector<DataPerMaterial*> fMCDataPerMat 182 }; 183 184 #endif // G4GSMottCorrection_h 185