Main Page   Compound List   File List   Compound Members   File Members  

MyHeSource Class Reference

MyHeSource generates delayed neutrons from radioactive He decays. More...

#include <MyHeSource.hh>

List of all members.

Public Methods

 MyHeSource (int newIsotope=k.Isotope, int newRmaxgen=k.Rmaxgen)
 MyHeSource constructor. More...

 ~MyHeSource ()
 MyHeSource destructor.

 MyHeSource (const MyHeSource &HeSource)
 MyHeSource copy constructor.

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

double GetHeNeutronEnergy () const
 Returns the energy of the neutrons produced by each He decay.

double GetHeBetaEnergy () const
 Returns the energy of the betas produced by each He decay.

double GetHeGammaEnergy () const
 Returns the energy of the photons produced by each He decay.

double GetHeWeight () const
 Returns the branching ratio weight for each He decay.

double GetHeDecayTime () const
 Returns the decay time for each He decay.


Static Public Methods

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

MyHeSource generates delayed neutrons from radioactive He decays.

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

Definition at line 18 of file MyHeSource.hh.


Constructor & Destructor Documentation

MyHeSource::MyHeSource int    newIsotope = k.Isotope,
int    newRmaxgen = k.Rmaxgen
 

MyHeSource constructor.

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

Definition at line 17 of file MyHeSource.cpp.

00018                                       {
00019 
00020   Isotope = newIsotope;
00021   Rmaxgen = newRmaxgen;
00022 
00023   //cout << "MyHeSource::MyHeSource(" << Isotope << "," << Rmaxgen 
00024   //     << ")" << endl;
00025 
00026   // 8He
00027   if(Isotope == 8){
00028 
00029     // setup the decay parameters (from Jon Link)
00030     // Nneutron is always 1 and Ngamma always 0
00031     Nneutron = 1;
00032     Ngamma = 0;
00033 
00034     // branching fraction (the 1.0000 bin contains all decays 
00035     // which do nothing: neutron E = 0, beta Q = 0)
00036     float static br[4] = {0.080,0.160,0.169,1.0000};
00037 
00038     // Q-value for beta decay
00039     float static betaQ[4] = {7.442,5.252,1.852,0.000};
00040 
00041     // Q-value for the total decay chain
00042     float static totQ = 8.619;
00043 
00044     // neutron energy
00045     float static neuE[4] = {0.697,2.887,6.727,0.000};
00046 
00047     // prepare the beta decay functions
00048     bool static first=1;
00049     float static fspace[3][200];
00050 
00051     if(first){
00052       float xlo = 0.;
00053       funlxp_(BetaHighQ,fspace[0],xlo,betaQ[0]);
00054       funlxp_(BetaMiddleQ,fspace[1],xlo,betaQ[1]);
00055       funlxp_(BetaLowQ,fspace[2],xlo,betaQ[2]);
00056 
00057       first = 0;
00058     }
00059     //
00060     // let the 8He decay
00061     //
00062     int ntrial = 0;
00063     bool passed = false;
00064     while(!passed){
00065       int len=1;
00066       float rv[len];
00067       ranlux_(rv,len);
00068       //
00069       for(int i=0;i<4; i++){
00070         if(rv[0] < br[i] && !passed){
00071 
00072           // pick an energy for each neutron
00073           neutronE = neuE[i];
00074 
00075           if(neutronE){
00076 
00077             // get the energy of the beta
00078             len = 1;
00079             funlux_(fspace[i],betaE,len);
00080             passed = true;
00081           }
00082         }
00083       }
00084       ntrial++;
00085     }
00086     Weight = 1./float(ntrial);
00087 
00088     //cout << "   8He neutron energy = " << neutronE << " MeV" << endl;
00089     //cout << "   8He beta energy = " << betaE << " MeV" << endl;
00090     //cout << "   8He weight = " << Weight << endl;
00091 
00092     // pick a decay time in ns
00093     double HalfLife = 1.2e8;
00094 
00095     int len=1;
00096     float rv[len];
00097     ranlux_(rv,len);
00098     DecayTime = HalfLife*log(1/rv[0]);
00099 
00100   } // done with 8He
00101 }


The documentation for this class was generated from the following files:
Generated on Mon Dec 27 11:10:14 2004 for ReactorFsim by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002