00001 /* 00002 * ******** fete: From ENDF To ENDL ********* 00003 * 00004 * Copyright (c) 2006, The Regents of the University of California. 00005 * All rights reserved. 00006 * 00007 * Produced at the Lawrence Livermore National Laboratory. 00008 * Written by David A. Brown, Gerry Hedstrom, Tony Hill 00009 * 00010 * This file is part of fete v1.0 (UCRL-CODE-218718) 00011 * 00012 * Please read the COPYING file for "Our Notice and GNU General 00013 * Public License" in the root of this software distribution. 00014 * 00015 * This program is free software; you can redistribute it and/or modify 00016 * it under the terms of the GNU General Public License (as published by 00017 * the Free Software Foundation) version 2, dated June 1991. 00018 * 00019 * This program is distributed in the hope that it will be useful, 00020 * but WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF 00021 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms 00022 * and conditions of the GNU General Public License for more details. 00023 * 00024 * You should have received a copy of the GNU General Public License along 00025 * with this program; if not, write to the Free Software Foundation, Inc., 00026 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00027 * 00028 * $Revision: 1866 $ 00029 * $Date: 2006-05-15 09:12:12 -0700 (Mon, 15 May 2006) $ 00030 * $Author: dbrown $ 00031 * $Id: multiplicity.hpp 1866 2006-05-15 16:12:12Z dbrown $ 00032 * 00033 * ******** fete: From ENDF To ENDL ********* 00034 */ 00035 00036 // header for the multiplicity class 00037 00038 #ifndef MULTIPLICITY_CLASS 00039 #define MULTIPLICITY_CLASS 00040 00041 #include "distrib_1d.hpp" 00042 #include "ENDF_file.hpp" 00043 00044 // *********** class multiplicity ************* 00045 //! Class to handle ENDF multiplicity data. 00046 class multiplicity : public one_d_table 00047 { 00048 public: 00049 // to enable the use of the sum_lists routine 00050 double weight; 00051 00052 //! Default constructor 00053 multiplicity():weight(0.0){} 00054 00055 //! Default destructor 00056 ~multiplicity(){} 00057 00058 //! Label for this list for gamma multiplicities 00059 inline double& E_gamma() 00060 { 00061 return tag; 00062 } 00063 00064 //! Read in and expands the multiplicity 2-column data 00065 void read_data( int NP, ENDF_file& inFile); 00066 00067 //! Checks the multiplicity to make sure it is constant, as it should be 00068 bool check_const_mult( ); 00069 bool check_const_mult( double first_mult ); 00070 00071 //! Sets a floor/ceiling value on the multiplicity for those times where 00072 //! it is not constant, but a minimum value is requires 00073 void set_min_mult( double min_mult ); 00074 void set_max_mult( double max_mult ); 00075 00076 //! Returns the constant multiplicity as may be used in an (n, Xn) reaction 00077 int get_mult( ); 00078 00079 //! Sets the multiplicity to a constant, if we know it from another method (say the reaction MT) 00080 void set_mult( int mult ); 00081 00082 //! Scales photon multiplicity by the cross section to get photon production 00083 void scale_by_xs(); 00084 00085 //! Divides photon production by the cross section to get photon multiplicity 00086 void divide_by_xs(); 00087 00088 //! Needed to combine lists of discrete gamma multiplicities 00089 void list_interp( double e_in, multiplicity& left_list, 00090 multiplicity& right_list ); 00091 00092 //! Used to verify that the multiplicity of a single line doesn't exceed 1 00093 void check_count( ); 00094 00095 private: 00096 00097 protected: 00098 00099 }; 00100 00101 #endif