#include <MyLiSource.hh>
Public Methods | |
| MyLiSource (int newIsotope=k.Isotope, int newRmaxgen=k.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) |
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.
|
||||||||||||
|
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 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 len = 1;
00087 funlux_(fspace[i],betaE,len);
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 int len=1;
00104 float rv[len];
00105 ranlux_(rv,len);
00106 DecayTime = HalfLife*log(1/rv[0]);
00107
00108 } // done with 9Li
00109 }
|
1.2.14 written by Dimitri van Heesch,
© 1997-2002