Main Page   Compound List   File List   Compound Members   File Members  

MyLiSource Class Reference

MyLiSource generates delayed neutrons from radioactive Li decays. More...

#include <MyLiSource.hh>

List of all members.

Public Methods

 MyLiSource (int newIsotope=ISOTOPE, double newRmaxgen=RMAXGEN)
 MyLiSource constructor. More...

 ~MyLiSource ()
 MyLiSource destructor.

 MyLiSource (const MyLiSource &LiSource)
 MyLiSource copy constructor.

MyLiSource & operator= (const MyLiSource &rhs)
 MyLiSource overloaded = operator.

double GetLiNeutronEnergy () const
 Returns the energy of the neutrons produced by each Li decay.

double GetLiBetaEnergy () const
 Returns the energy of the betas produced by each Li decay.

double GetLiGammaEnergy () const
 Returns the energy of the photons produced by each Li decay.

double GetLiWeight () const
 Returns the branching ratio weight for each Li decay.

double GetLiDecayTime () const
 Returns the decay time for each Li decay.


Static Public Methods

float BetaHighestQ (const float &x)
float BetaHighQ (const float &x)
float BetaMiddleQ (const float &x)
float BetaLowQ (const float &x)
double Fermi (const int &Z, const int &A, const float &x)


Detailed Description

MyLiSource generates delayed neutrons from radioactive Li decays.

The supported isotope is 9. The neutrons are generated by the Li9NeutronSpectrum function, which the probability density of the produced neutrons as a function of neutron energy.

Definition at line 18 of file MyLiSource.hh.


Constructor & Destructor Documentation

MyLiSource::MyLiSource int    newIsotope = ISOTOPE,
double    newRmaxgen = RMAXGEN
 

MyLiSource constructor.

Called with the desired Li isotope: 9 and the maximum allowed radius for generating particles in the simulation, Rmaxgen (default = 200 cm).

Definition at line 18 of file MyLiSource.cpp.

00019                                          {
00020 
00021   Isotope = newIsotope;
00022   Rmaxgen = newRmaxgen;
00023 
00024   //cout << "MyLiSource::MyLiSource(" << Isotope << "," << Rmaxgen 
00025   //     << ")" << endl;
00026 
00027   // 9Li
00028   if(Isotope == 9){
00029 
00030     // setup the decay parameters (from Jon Link)
00031     // Nneutron is always 1 and Ngamma always 0
00032     Nneutron = 1;
00033     Ngamma = 0;
00034 
00035     // branching fraction (the 1.0000 bin contains all decays 
00036     // which do nothing: neutron E = 0, beta Q = 0)
00037     float static br[8] = {0.0238,0.3400,0.4400,0.4475,
00038                           0.4550,0.4894,0.4950,1.0000};
00039 
00040     // Q-value for beta decay
00041     float static betaQ[8] = {11.176,11.176,10.826,5.666,
00042                              5.666,2.323,2.323,0.000};
00043 
00044     // Q-value for the total decay chain
00045     float static totQ = 12.033;
00046 
00047     // neutron energy
00048     float static neuE[8] = {0.764,0.856,1.115,3.235,
00049                             5.473,8.816,6.578,0.000};
00050 
00051     // prepare the beta decay functions
00052     bool static first=1;
00053     float static fspace[7][200];
00054 
00055     if(first){
00056       float xlo = 0.;
00057       funlxp_(BetaHighestQ,fspace[0],xlo,betaQ[0]);
00058       funlxp_(BetaHighestQ,fspace[1],xlo,betaQ[1]);
00059       funlxp_(BetaHighQ,fspace[2],xlo,betaQ[2]);
00060       funlxp_(BetaMiddleQ,fspace[3],xlo,betaQ[3]);
00061       funlxp_(BetaMiddleQ,fspace[4],xlo,betaQ[4]);
00062       funlxp_(BetaLowQ,fspace[5],xlo,betaQ[5]);
00063       funlxp_(BetaLowQ,fspace[6],xlo,betaQ[6]);
00064 
00065       first = 0;
00066     }
00067     //
00068     // let the 9Li decay
00069     //
00070     int ntrial = 0;
00071     bool passed = false;
00072     while(!passed){
00073       const int len=1;
00074       float rv[len];
00075       ranlux_(rv,len);
00076       //
00077       for(int i=0;i<8; i++){
00078         if(rv[0] < br[i] && !passed){
00079 
00080           // pick an energy for each neutron
00081           neutronE = neuE[i];
00082 
00083           if(neutronE){
00084 
00085             // get the energy of the beta
00086             int len2 = 1;
00087             funlux_(fspace[i],betaE,len2);
00088             passed = true;
00089           }
00090         }
00091       }
00092       ntrial++;
00093     }
00094     Weight = 1./float(ntrial);
00095 
00096     //cout << "   9Li neutron energy = " << neutronE << " MeV" << endl;
00097     //cout << "   9Li beta energy = " << betaE << " MeV" << endl;
00098     //cout << "   9Li weight = " << Weight << endl;
00099 
00100     // pick a decay time in ns
00101     double HalfLife = 1.8e8;
00102 
00103     const int len=1;
00104     float rv[len];
00105     ranlux_(rv,len);
00106     DecayTime = HalfLife*log(1/rv[0]);
00107 
00108   } // done with 9Li
00109 }


The documentation for this class was generated from the following files:
Generated on Mon Feb 21 16:11:20 2005 for ReactorFsim by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002