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 "G4fissionEvent.hh" 60 #include "G4Exp.hh" 61 #include "G4Pow.hh" 62 63 int G4fissionEvent::G4SmpNuDistDataU233_235(G4 64 65 G4Pow* Pow = G4Pow::GetInstance(); 66 /* 67 Description 68 Sample Number of Neutrons from fission in 69 Zucker and Holden's tabulated data for U-2 70 The P(nu) distribution is given as a funct 71 number of neutrons from fission, based on 72 U-235 data from Zucker and Holden. 73 */ 74 75 /* 76 Input 77 nubar - average number of neutrons per 78 Output 79 G4SmpNuDistDataU233_235 - sampled multipl 80 81 */ 82 83 G4double pnu[8], cpnu, sum; 84 G4double r; 85 86 /* 87 Check if nubar is within the range of experi 88 */ 89 if(nubar >= 2.25 && nubar <= 4.0) { 90 /* 91 Use Zucker and Holden Data 92 */ 93 if(nubar <= 2.8738) pnu[0]=-9.279554e-02* 94 else if(nubar > 2.8738 && nubar <= 3.4272 95 else pnu[0]=1.498897e+3*G4Exp(-3.883864*n 96 97 if(nubar <= 3.2316) pnu[1]=3.531126e-2*Po 98 else pnu[1]=6.574492e-2*Pow->powN(nubar,2 99 100 pnu[2]=1.274643e-2*Pow->powN(nubar,3)-1.3 101 102 pnu[3]=5.473738e-2*Pow->powN(nubar,5)-8.8 103 104 pnu[4]=-3.591076e-2*Pow->powN(nubar,3)+3. 105 106 if(nubar <= 2.8738) pnu[5]=1.699374e-2*Po 107 else pnu[5]=2.100175e-2*Pow->powN(nubar,3 108 109 if(nubar <= 3.0387) pnu[6]=9.431919e-7*Po 110 else pnu[6]=4.322428e-3*Pow->powN(nubar,3 111 112 pnu[7]=5.689084e-3*Pow->powN(nubar,4)-6.5 113 114 sum=pnu[0]+pnu[1]+pnu[2]+pnu[3]+pnu[4]+pn 115 116 pnu[0]=pnu[0]/sum; 117 pnu[1]=pnu[1]/sum; 118 pnu[2]=pnu[2]/sum; 119 pnu[3]=pnu[3]/sum; 120 pnu[4]=pnu[4]/sum; 121 pnu[5]=pnu[5]/sum; 122 pnu[6]=pnu[6]/sum; 123 pnu[7]=pnu[7]/sum; 124 125 r=fisslibrng(); 126 127 if(r <= pnu[0]) return (int) 0; 128 129 cpnu=pnu[0]+pnu[1]; 130 if(r <= cpnu) return (int) 1; 131 132 cpnu=cpnu+pnu[2]; 133 if(r <= cpnu) return (int) 2; 134 135 cpnu=cpnu+pnu[3]; 136 if(r <= cpnu) return (int) 3; 137 138 cpnu=cpnu+pnu[4]; 139 if(r <= cpnu) return (int) 4; 140 141 cpnu=cpnu+pnu[5]; 142 if(r <= cpnu) return (int) 5; 143 144 cpnu=cpnu+pnu[6]; 145 if(r <= cpnu) return (int) 6; 146 else return (int) 7; 147 } else { 148 /* 149 Use Terrell's formula 150 */ 151 return (int) G4SmpTerrell(nubar); 152 } 153 } 154