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 // This software was developed by Lawrence Liv 28 // 29 // Redistribution and use in source and binary 30 // modification, are permitted provided that t 31 // 32 // 1. Redistributions of source code must reta 33 // this list of conditions and the following 34 // 2. Redistributions in binary form must repr 35 // this list of conditions and the following 36 // and/or other materials provided with the 37 // 3. The name of the author may not be used t 38 // derived from this software without specif 39 // 40 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``A 41 // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 42 // MERCHANTABILITY AND FITNESS FOR A PARTICULA 43 // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DI 44 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGE 45 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES 46 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AN 47 // WHETHER IN CONTRACT, STRICT LIABILITY, OR T 48 // OTHERWISE) ARISING IN ANY WAY OUT OF THE US 49 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 50 // 51 // Copyright (c) 2006 The Regents of the Unive 52 // All rights reserved. 53 // UCRL-CODE-224807 54 // 55 // 56 // 57 58 #include <cmath> 59 #include "G4Log.hh" 60 #include "G4Pow.hh" 61 #include "G4fissionEvent.hh" 62 63 G4double G4fissionEvent::G4SmpNEngCf252(G4int 64 65 /* 66 Description 67 Sample energy spectrum for Cf-252. 68 */ 69 70 /* 71 Input 72 option - 0 Mannhart corrected Maxwellia 73 1 Madland-Nix theoretical spec 74 2 Froehner Watt spectrum 75 Return 76 energy of neutron emitted by spontaneous f 77 */ 78 79 G4Pow* Pow=G4Pow::GetInstance(); 80 81 G4double a,b; 82 G4double gpar; 83 G4double g2; 84 G4double ferg; 85 G4double r; 86 87 r = fisslibrng(); 88 89 /* 90 Mannhart Corrected Spectrum 91 */ 92 if(option == 0) { 93 if(r == 0) return 0.000001; 94 if (r > 0.0 && r <= 0.0005) 95 return 0.00003 + 0.04992*(r/0.0005) - 0. 96 + 5.44877*Pow->powN(r/0.0005,3) - 2 97 + 97.14014*Pow->powN(r/0.0005,5) - 98 + 268.2301*Pow->powN(r/0.0005,7) - 99 + 98.96285*Pow->powN(r/0.0005,9) - 100 101 if (r > 0.0005 && r <= 0.005) 102 return 0.01118 + 0.06715*((r-.0005)/.004 103 - 0.09236*Pow->powN((r-.0005)/.0045 104 - 0.64784*Pow->powN((r-.0005)/.0045 105 - 1.43858*Pow->powN((r-.0005)/.0045 106 - 0.51839*Pow->powN((r-.0005)/.0045 107 108 if (r > 0.005 && r <= 0.05) 109 return 0.05244+0.32101*((r-.005)/.045) 110 - 0.52574*Pow->powN((r-.005)/.045, 111 - 14.88036*Pow->powN((r-.005)/.045, 112 -133.64517*Pow->powN((r-.005)/.045, 113 -186.86758*Pow->powN((r-.005)/.045, 114 - 20.55275*Pow->powN((r-.005)/.045, 115 116 if(r > 0.05 && r <= 0.25) return 0.25585+0 117 118 if(r > 0.25 && r <= 0.50) return 0.87609+0 119 120 if(r > 0.5 && r <= 0.75) return 1.69622+0. 121 122 if(r > 0.75 && r <= 0.95) return 2.91217+1 123 if(r > 0.95 && r <= 0.975) return 5.50137 124 125 if(r > 0.975 && r <= 0.995) return 6.5217 126 if(r > 0.995 && r <= 0.999) return 9.0050 127 if(r > 0.999 && r <= 0.9997) return 11.83 128 if(r > 0.9997) return 20.; 129 } 130 /* 131 Madland-Nix Spectrum 132 */ 133 if(option == 1) { 134 if(r <= 1.001065092e-03) return 1.9463138 135 else if(r > 1.001065092e-03 && r <= 1.001 136 else if(r > 1.001389105e-02 && r <= 5.022 137 else if(r > 5.022359145e-02 && r <= 1.000 138 else if(r > 1.000989427e-01 && r <= 1.500 139 else if(r > 1.500872491e-01 && r <= 2.002 140 else if(r > 2.002079974e-01 && r <= 2.252 141 else if(r > 2.25221648e-01 && r <= 2.5015 142 else if(r > 2.501564538e-01 && r <= 2.752 143 else if(r > 2.752546770e-01 && r <= 3.000 144 else if(r > 3.000964724e-01 && r <= 3.500 145 else if(r > 3.500470095e-01 && r <= 4.001 146 else if(r > 4.001118970e-01 && r <= 5.000 147 else if(r > 5.000461778e-01 && r <= 5.501 148 else if(r > 5.501318506e-01 && r <= 6.000 149 else if(r > 6.000655433e-01 && r <= 6.500 150 else if(r > 6.500147305e-01 && r <= 7.000 151 else if(r > 7.000271284e-01 && r <= 7.501 152 else if(r > 7.501159110e-01 && r <= 8.000 153 else if(r > 8.000662513e-01 && r <= 8.500 154 else if(r > 8.500772033e-01 && r <= 8.750 155 else if(r > 8.750123088e-01 && r <= 9.000 156 else if(r > 9.000106866e-01 && r <= 9.250 157 else if(r > 9.250286977e-01 && r <= 9.350 158 else if(r > 9.350074655e-01 && r <= 9.400 159 else if(r > 9.400070002e-01 && r <= 9.500 160 else if(r > 9.500026229e-01 && r <= 9.600 161 else if(r > 9.600065896e-01 && r <= 9.700 162 else if(r > 9.700165577e-01 && r <= 9.750 163 else if(r > 9.750157135e-01 && r <= 9.800 164 else if(r > 9.800101585e-01 && r <= 9.850 165 else if(r > 9.850018119e-01 && r <= 9.875 166 else if(r > 9.875072929e-01 && r <= 9.900 167 else if(r > 9.900006975e-01 && r <= 9.925 168 else if(r > 9.925048152e-01 && r <= 9.935 169 else if(r > 9.935030103e-01 && r <= 9.945 170 else if(r > 9.945000177e-01 && r <= 9.950 171 else if(r > 9.950025127e-01 && r <= 9.955 172 else if(r > 9.955029368e-01 && r <= 9.960 173 else if(r > 9.960005970e-01 && r <= 9.965 174 else if(r > 9.965016080e-01 && r <= 9.970 175 else if(r > 9.970001795e-01 && r <= 9.975 176 else if(r > 9.975004375e-01 && r <= 9.978 177 else if(r > 9.978504408e-01 && r <= 9.989 178 return 2.72756636666e5-5.47258138432e5* 179 else if(r > 9.989524675e-01 && r <= 9.994 180 return 1.14946879661e6-2.30252188973e6* 181 else if(r > 9.994929298e-01 && r <= 9.997 182 return 4.90621526236e6-9.81982943883e6* 183 else if(r > 9.997558922e-01 && r <= 9.998 184 return 2.11365688795184e7-4.22884732250 185 else if(r > 9.998830120e-01 && r <= 9.999 186 return 9.18987945911229e7-1.83829506875 187 else if(r > 9.999441620e-01 && r <= 9.999 188 return 4.02781481130433e8-8.05629656768 189 else if(r > 9.999734440e-01 && r <= 9.999 190 return 1.77804635135775e9-3.55623257045 191 else if(r > 9.999874120e-01 && r <= 9.999 192 return 7.90099032702915e9-1.58022749659 193 else if(r > 9.999940510e-01 && r <= 9.999 194 return 3.53223507413091e10-7.0645322716 195 else if(r > 9.999971960e-01 && r <= 9.999 196 return 1.58786475903785e11-3.1757426684 197 else if(r > 9.999986820e-01 && r <= 9.999 198 return 7.17433904438156e11-1.4348705997 199 else if(r > 9.999993820e-01 && r <= 9.999 200 return 3.257374123945330e12-6.514754184 201 else if(r > 9.999997110e-01 && r <= 9.999 202 return 1.48641255466171e13-2.9728263753 203 else if(r > 9.999998650e-01 && r <= 9.999 204 return 6.82056055248876e13-1.3641123811 205 else if(r > 9.999999370e-01 && r <= 1.000 206 return 3.14919363013517e14-6.2983878407 207 } 208 /* 209 Frohner Watt Spectrum 210 */ 211 if (option == 2) { 212 a=1.175; 213 b=1.040; 214 215 G4int icounter=0; 216 G4int icounter_max=1024; 217 do { 218 gpar = std::sqrt(Pow->powA(1+0.125*a*b,2 219 g2=-G4Log(fisslibrng()); 220 ferg=a*gpar*g2; 221 222 icounter++; 223 if ( icounter > icounter_max ) { 224 G4cout << "Loop-counter exceeded the thresh 225 break; 226 } 227 228 } while (Pow->powA((1-gpar)*(1+g2)-G4Log(f 229 // Loop checking, 11.03.2015, T. Koi 230 return ferg; 231 } 232 233 // 234 // Fall through 235 // 236 237 G4cout << " SmpNEngCf252: unrecognized optio 238 return -1.0; 239 } 240