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 // * 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 // 26 // 27 // This software was developed by Lawrence Liv 27 // This software was developed by Lawrence Livermore National Laboratory. 28 // 28 // 29 // Redistribution and use in source and binary 29 // Redistribution and use in source and binary forms, with or without 30 // modification, are permitted provided that t 30 // modification, are permitted provided that the following conditions are met: 31 // 31 // 32 // 1. Redistributions of source code must reta 32 // 1. Redistributions of source code must retain the above copyright notice, 33 // this list of conditions and the following 33 // this list of conditions and the following disclaimer. 34 // 2. Redistributions in binary form must repr 34 // 2. Redistributions in binary form must reproduce the above copyright notice, 35 // this list of conditions and the following 35 // this list of conditions and the following disclaimer in the documentation 36 // and/or other materials provided with the 36 // and/or other materials provided with the distribution. 37 // 3. The name of the author may not be used t 37 // 3. The name of the author may not be used to endorse or promote products 38 // derived from this software without specif 38 // derived from this software without specific prior written permission. 39 // 39 // 40 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``A 40 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 41 // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 41 // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 42 // MERCHANTABILITY AND FITNESS FOR A PARTICULA 42 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 43 // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DI 43 // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 44 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGE 44 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 45 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES 45 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 46 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AN 46 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 47 // WHETHER IN CONTRACT, STRICT LIABILITY, OR T 47 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 48 // OTHERWISE) ARISING IN ANY WAY OUT OF THE US 48 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 49 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 49 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 50 // 50 // 51 // Copyright (c) 2006 The Regents of the Unive 51 // Copyright (c) 2006 The Regents of the University of California. 52 // All rights reserved. 52 // All rights reserved. 53 // UCRL-CODE-224807 53 // UCRL-CODE-224807 54 // 54 // 55 // 55 // 56 // 56 // 57 57 58 #include <cmath> 58 #include <cmath> 59 #include "G4fissionEvent.hh" 59 #include "G4fissionEvent.hh" 60 #include "G4Exp.hh" 60 #include "G4Exp.hh" 61 #include "G4Pow.hh" 61 #include "G4Pow.hh" 62 62 63 int G4fissionEvent::G4SmpNuDistDataU233_235(G4 63 int G4fissionEvent::G4SmpNuDistDataU233_235(G4double nubar) { 64 64 65 G4Pow* Pow = G4Pow::GetInstance(); 65 G4Pow* Pow = G4Pow::GetInstance(); 66 /* 66 /* 67 Description 67 Description 68 Sample Number of Neutrons from fission in 68 Sample Number of Neutrons from fission in U-233 and U-235 using 69 Zucker and Holden's tabulated data for U-2 69 Zucker and Holden's tabulated data for U-235 70 The P(nu) distribution is given as a funct 70 The P(nu) distribution is given as a function of the average 71 number of neutrons from fission, based on 71 number of neutrons from fission, based on interpolation of the 72 U-235 data from Zucker and Holden. 72 U-235 data from Zucker and Holden. 73 */ 73 */ 74 74 75 /* 75 /* 76 Input 76 Input 77 nubar - average number of neutrons per 77 nubar - average number of neutrons per fission 78 Output 78 Output 79 G4SmpNuDistDataU233_235 - sampled multipl 79 G4SmpNuDistDataU233_235 - sampled multiplicity 80 80 81 */ 81 */ 82 82 83 G4double pnu[8], cpnu, sum; 83 G4double pnu[8], cpnu, sum; 84 G4double r; 84 G4double r; 85 85 86 /* 86 /* 87 Check if nubar is within the range of experi 87 Check if nubar is within the range of experimental values 88 */ 88 */ 89 if(nubar >= 2.25 && nubar <= 4.0) { 89 if(nubar >= 2.25 && nubar <= 4.0) { 90 /* 90 /* 91 Use Zucker and Holden Data 91 Use Zucker and Holden Data 92 */ 92 */ 93 if(nubar <= 2.8738) pnu[0]=-9.279554e-02* 93 if(nubar <= 2.8738) pnu[0]=-9.279554e-02*Pow->powN(nubar,3)+8.036687e-01*Pow->powN(nubar,2)-2.342684*nubar+2.309035; 94 else if(nubar > 2.8738 && nubar <= 3.4272 94 else if(nubar > 2.8738 && nubar <= 3.4272) pnu[0]=1.50072e-2*Pow->powN(nubar,2)-1.109109e-1*nubar+2.063133e-1; 95 else pnu[0]=1.498897e+3*G4Exp(-3.883864*n 95 else pnu[0]=1.498897e+3*G4Exp(-3.883864*nubar); 96 96 97 if(nubar <= 3.2316) pnu[1]=3.531126e-2*Po 97 if(nubar <= 3.2316) pnu[1]=3.531126e-2*Pow->powN(nubar,3)-2.787213e-1*Pow->powN(nubar,2)+5.824072e-1*nubar-1.067136e-1; 98 else pnu[1]=6.574492e-2*Pow->powN(nubar,2 98 else pnu[1]=6.574492e-2*Pow->powN(nubar,2)-5.425741e-1*nubar+1.123199; 99 99 100 pnu[2]=1.274643e-2*Pow->powN(nubar,3)-1.3 100 pnu[2]=1.274643e-2*Pow->powN(nubar,3)-1.387954e-1*Pow->powN(nubar,2)+3.264669e-1*nubar+1.77148e-1; 101 101 102 pnu[3]=5.473738e-2*Pow->powN(nubar,5)-8.8 102 pnu[3]=5.473738e-2*Pow->powN(nubar,5)-8.835826e-1*Pow->powN(nubar,4)+5.657201*Pow->powN(nubar,3)-1.802669e+1*Pow->powN(nubar,2)+2.867937e+1*nubar-1.794296e+1; 103 103 104 pnu[4]=-3.591076e-2*Pow->powN(nubar,3)+3. 104 pnu[4]=-3.591076e-2*Pow->powN(nubar,3)+3.092624e-1*Pow->powN(nubar,2)-7.184805e-1*nubar+5.649400e-1; 105 105 106 if(nubar <= 2.8738) pnu[5]=1.699374e-2*Po 106 if(nubar <= 2.8738) pnu[5]=1.699374e-2*Pow->powN(nubar,2)-1.069558e-3*nubar-6.981430e-2; 107 else pnu[5]=2.100175e-2*Pow->powN(nubar,3 107 else pnu[5]=2.100175e-2*Pow->powN(nubar,3)-1.705788e-1*Pow->powN(nubar,2)+5.575467e-1*nubar-6.245873e-1; 108 108 109 if(nubar <= 3.0387) pnu[6]=9.431919e-7*Po 109 if(nubar <= 3.0387) pnu[6]=9.431919e-7*Pow->powA(nubar,8.958848); 110 else pnu[6]=4.322428e-3*Pow->powN(nubar,3 110 else pnu[6]=4.322428e-3*Pow->powN(nubar,3)-2.094790e-2*Pow->powN(nubar,2)+4.449671e-2*nubar-4.435987e-2; 111 111 112 pnu[7]=5.689084e-3*Pow->powN(nubar,4)-6.5 112 pnu[7]=5.689084e-3*Pow->powN(nubar,4)-6.591895e-2*Pow->powN(nubar,3)+2.886861e-1*Pow->powN(nubar,2)-5.588146e-1*nubar+4.009166e-1; 113 113 114 sum=pnu[0]+pnu[1]+pnu[2]+pnu[3]+pnu[4]+pn 114 sum=pnu[0]+pnu[1]+pnu[2]+pnu[3]+pnu[4]+pnu[5]+pnu[6]+pnu[7]; 115 115 116 pnu[0]=pnu[0]/sum; 116 pnu[0]=pnu[0]/sum; 117 pnu[1]=pnu[1]/sum; 117 pnu[1]=pnu[1]/sum; 118 pnu[2]=pnu[2]/sum; 118 pnu[2]=pnu[2]/sum; 119 pnu[3]=pnu[3]/sum; 119 pnu[3]=pnu[3]/sum; 120 pnu[4]=pnu[4]/sum; 120 pnu[4]=pnu[4]/sum; 121 pnu[5]=pnu[5]/sum; 121 pnu[5]=pnu[5]/sum; 122 pnu[6]=pnu[6]/sum; 122 pnu[6]=pnu[6]/sum; 123 pnu[7]=pnu[7]/sum; 123 pnu[7]=pnu[7]/sum; 124 124 125 r=fisslibrng(); 125 r=fisslibrng(); 126 126 127 if(r <= pnu[0]) return (int) 0; 127 if(r <= pnu[0]) return (int) 0; 128 128 129 cpnu=pnu[0]+pnu[1]; 129 cpnu=pnu[0]+pnu[1]; 130 if(r <= cpnu) return (int) 1; 130 if(r <= cpnu) return (int) 1; 131 131 132 cpnu=cpnu+pnu[2]; 132 cpnu=cpnu+pnu[2]; 133 if(r <= cpnu) return (int) 2; 133 if(r <= cpnu) return (int) 2; 134 134 135 cpnu=cpnu+pnu[3]; 135 cpnu=cpnu+pnu[3]; 136 if(r <= cpnu) return (int) 3; 136 if(r <= cpnu) return (int) 3; 137 137 138 cpnu=cpnu+pnu[4]; 138 cpnu=cpnu+pnu[4]; 139 if(r <= cpnu) return (int) 4; 139 if(r <= cpnu) return (int) 4; 140 140 141 cpnu=cpnu+pnu[5]; 141 cpnu=cpnu+pnu[5]; 142 if(r <= cpnu) return (int) 5; 142 if(r <= cpnu) return (int) 5; 143 143 144 cpnu=cpnu+pnu[6]; 144 cpnu=cpnu+pnu[6]; 145 if(r <= cpnu) return (int) 6; 145 if(r <= cpnu) return (int) 6; 146 else return (int) 7; 146 else return (int) 7; 147 } else { 147 } else { 148 /* 148 /* 149 Use Terrell's formula 149 Use Terrell's formula 150 */ 150 */ 151 return (int) G4SmpTerrell(nubar); 151 return (int) G4SmpTerrell(nubar); 152 } 152 } 153 } 153 } 154 154