G4SmpNuDistDataPu239.cc

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 //
00027 // This software was developed by Lawrence Livermore National Laboratory.
00028 //
00029 // Redistribution and use in source and binary forms, with or without
00030 // modification, are permitted provided that the following conditions are met:
00031 //
00032 // 1. Redistributions of source code must retain the above copyright notice,
00033 //   this list of conditions and the following disclaimer.
00034 // 2. Redistributions in binary form must reproduce the above copyright notice,
00035 //   this list of conditions and the following disclaimer in the documentation
00036 //   and/or other materials provided with the distribution.
00037 // 3. The name of the author may not be used to endorse or promote products
00038 //   derived from this software without specific prior written permission.
00039 //
00040 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
00041 // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
00042 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
00043 // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00044 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00045 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
00046 // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
00047 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
00048 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
00049 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00050 //
00051 // Copyright (c) 2006 The Regents of the University of California.
00052 // All rights reserved.
00053 // UCRL-CODE-224807
00054 //
00055 //
00056 // $Id: G4SmpNuDistDataPu239.cc 69860 2013-05-16 14:39:02Z gcosmo $
00057 //
00058 
00059 #include <cmath>
00060 #include "G4fissionEvent.hh"
00061 
00062 G4int G4fissionEvent::G4SmpNuDistDataPu239(G4double erg) {
00063 
00064 /*
00065   Description
00066     Sample Number of Neutrons from fission in Pu-239 using 
00067     Zucker and Holden's tabulated data for Pu-239
00068 */
00069 
00070 /*
00071   Input
00072     erg      - incident neutron energy
00073   Output
00074     G4SmpNuDistDataPu239  - sampled multiplicity
00075     
00076 */
00077  
00078   G4double cpnu;
00079   G4double pnu[8] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
00080   G4double eng;
00081   G4double r;
00082 
00083 /* 
00084   Check if energy is within the range of experimental values
00085 */
00086   if (erg > 10) eng=10.;
00087   else eng=erg;
00088 
00089   r=fisslibrng();
00090 
00091 /*
00092   Pu-239 nu distribution
00093 */
00094   if (eng <= 5.0) pnu[0] = 0.0108826e0 - 0.00207694e0*eng 
00095                          - 6.5e-4*std::pow(eng,2) + 4.023e-4*std::pow(eng,3)
00096                          - 7.93e-5*std::pow(eng,4) + 5.53666667e-6*std::pow(eng,5);       
00097   if (eng > 5 && eng <= 10) pnu[0] = 0.078606e0 - 5.17531e-2*eng 
00098                                    + 1.42034e-2*std::pow(eng,2) - 1.96292e-3*std::pow(eng,3)
00099                                    + 1.34512e-4*std::pow(eng,4) - 3.63416e-6*std::pow(eng,5);
00100   if (r <= pnu[0]) return 0;
00101 
00102 
00103   if (eng <= 5.0) pnu[1] = 0.0994916e0 - 0.01979542e0*eng 
00104                          - 0.00236583e0*std::pow(eng,2) + 0.0020581e0*std::pow(eng,3)
00105                          - 4.14016667e-4*std::pow(eng,4) + 2.85666667e-5*std::pow(eng,5);
00106   if (eng > 5 && eng <= 10) pnu[1] = 0.10052e0 - 2.61361e-2*eng 
00107                                    + 3.78355e-3*std::pow(eng,2) - 3.70667e-4*std::pow(eng,3) 
00108                                    + 1.95458e-5*std::pow(eng,4) - 3.87499e-7*std::pow(eng,5);
00109   cpnu=pnu[0]+pnu[1];
00110   if (r <= cpnu) return 1;
00111 
00112 
00113   if (eng <= 5.0) pnu[2] = 0.2748898e0 - 0.01565248e0*eng 
00114                          - 0.00749681e0*std::pow(eng,2) + 0.00217121e0*std::pow(eng,3)
00115                          - 3.13041667e-4*std::pow(eng,4) + 1.88183333e-5*std::pow(eng,5);
00116   if (eng > 5 && eng <= 10) pnu[2] = 0.282487e0 - 0.0261342e0*eng 
00117                                    - 1.16895e-3*std::pow(eng,2) + 1.9888e-4*std::pow(eng,3)
00118                                    - 6.41257e-6*std::pow(eng,4) + 1.02502e-7*std::pow(eng,5);
00119   cpnu=cpnu+pnu[2];
00120   if (r <= cpnu) return 2;
00121 
00122   if (eng <= 5.0) pnu[3] = 0.3269196e0 + 0.00428312e0*eng 
00123                          - 0.00189322e0*std::pow(eng,2) - 4.31925001e-4*std::pow(eng,3)
00124                          + 1.18466667e-4*std::pow(eng,4) - 9.04166668e-6*std::pow(eng,5);
00125   if (eng > 5 && eng <= 10) pnu[3] = 0.329058e0 + 4.023e-3*eng
00126                                    - 3.06402e-3*std::pow(eng,2) + 2.2628e-4*std::pow(eng,3)
00127                                    - 1.50875e-5*std::pow(eng,4) + 4.39168e-7*std::pow(eng,5);
00128   cpnu=cpnu+pnu[3];
00129   if (r <= cpnu) return 3;
00130 
00131   if (eng <= 5.0) pnu[4] = 0.2046061e0 + 0.02633899e0*eng
00132                          + 0.0041514e0*std::pow(eng,2) - 0.00275542e0*std::pow(eng,3)
00133                          + 5.0325e-4*std::pow(eng,4) - 3.32158333e-5*std::pow(eng,5);
00134   if (eng > 5 && eng <= 10) pnu[4] = 0.18992e0 + 4.55188e-2*eng
00135                                    - 7.06316e-3*std::pow(eng,2) + 7.29916e-4*std::pow(eng,3)
00136                                    - 4.71791e-5*std::pow(eng,4) + 1.185e-6*std::pow(eng,5);
00137   cpnu=cpnu+pnu[4];
00138   if (r <= cpnu) return 4;
00139 
00140   if (eng <= 5.0) pnu[5] = 0.0726834e0 + 0.00116043e0*eng
00141                          + 0.007572e0*std::pow(eng,2) - 0.00161972e0*std::pow(eng,3)
00142                          + 2.3545e-4*std::pow(eng,4) - 1.546e-5*std::pow(eng,5);
00143   if (eng > 5 && eng <= 10) pnu[5] = 0.0779212e0 - 1.35849e-3*eng
00144                                    + 6.68583e-3*std::pow(eng,2) - 7.98649e-4*std::pow(eng,3)
00145                                    + 4.88625e-5*std::pow(eng,4) - 1.54167e-6*std::pow(eng,5);
00146   cpnu=cpnu+pnu[5];
00147   if (r <= cpnu) return 5;
00148 
00149   if (eng <= 5.0) pnu[6] = 0.0097282e0 + 0.00494589e0*eng
00150                          + 0.00115294e0*std::pow(eng,2) - 3.25191667e-4*std::pow(eng,3)
00151                          + 6.00083333e-5*std::pow(eng,4) - 3.745e-6*std::pow(eng,5);
00152   if (eng > 5 && eng <= 10) pnu[6] = 7.85432e-3 + 7.33182e-3*eng
00153                                    - 2.03705e-4*std::pow(eng,2) + 8.73787e-5*std::pow(eng,3)
00154                                    - 4.24164e-6*std::pow(eng,4) + 2.37499e-7*std::pow(eng,5);
00155   cpnu=cpnu+pnu[6];
00156   if (r <= cpnu) return 6;
00157 
00158   if (eng <= 5.0) pnu[7] = 6.301e-4 + 1.10666667e-4*eng
00159                          + 4.28016667e-4*std::pow(eng,2) + 1.12041667e-5*std::pow(eng,3)
00160                          - 4.31666667e-6*std::pow(eng,4) + 3.29166667e-7*std::pow(eng,5);
00161   if (eng > 5 && eng <= 10) pnu[7] = 1.5323e-3 - 7.91857e-4*eng
00162                                    + 8.01017e-4*std::pow(eng,2) - 6.82833e-5*std::pow(eng,3)
00163                                    + 4.38333e-6*std::pow(eng,4) - 6.0e-8*std::pow(eng,5);
00164   cpnu=cpnu+pnu[7];
00165   if (r <= cpnu) return 7;
00166   else return 8;
00167 }

Generated on Mon May 27 17:49:51 2013 for Geant4 by  doxygen 1.4.7