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