Main Page   Compound List   File List   Compound Members   File Members  

MyTlSource Class Reference

MyTlSource generates photons from radioactive Thallium decays. More...

#include <MyTlSource.hh>

List of all members.

Public Methods

 MyTlSource (int newIsotope=k.Isotope)
 MyTlSource constructor. More...

 ~MyTlSource ()
 MyTlSource destructor.

 MyTlSource (const MyTlSource &TlSource)
 MyTlSource copy constructor.

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

int GetNumTlGammas () const
 Returns the number of photons produced by the Tl decay.

float GetTlGammaEnergy (int &n) const
 Returns the energy of each photon produced by the Tl decay. More...


Detailed Description

MyTlSource generates photons from radioactive Thallium decays.

The supported isotopes are Tl208 and Tl210. The decay table is read in from tl_bi_decays.txt and parsed by MyTlSource to create an array of the decay branch probabilites and the number and energies of the photons generated by each branch.

Definition at line 18 of file MyTlSource.hh.


Constructor & Destructor Documentation

MyTlSource::MyTlSource int    newIsotope = k.Isotope
 

MyTlSource constructor.

Called with the desired Thallium isotope: 208 or 210. Default is the isotope given in ReactorConstants, 252, which does nothing.

Definition at line 17 of file MyTlSource.cpp.

00017                                     {
00018 
00019   Isotope = newIsotope;
00020 
00021   //cout << "MyTlSource::MyTlSource(" << Isotope << ")" << endl;
00022 
00023   // input the source number and position
00024   fstream fin("data/tl_bi_decays.txt", ios::in);
00025   //cout << "Tl input file: data/tl_bi_decays.txt" << endl;
00026 
00027   char paramLine[256];
00028   string dummyString;
00029   int dummyInt;
00030   float dummyFloat;
00031   bool done = false;
00032   bool Set = false;
00033 
00034   int Z, A;
00035   int Nbranch;
00036   float branchProb[100];
00037   int Ngamma[100];
00038   float gammaE[100][6];
00039 
00040   // Tl208
00041   if(Isotope == 208){
00042 
00043     while(!done){
00044 
00045       // '#' specifies a comment line -- ignore it
00046       if(fin.peek() == '#'){
00047 
00048         fin.getline(paramLine, 256);
00049         continue;
00050       }
00051 
00052       // 'E'ND or 'e'nd specifies end of file -- set done flag to true
00053       if(fin.peek() == 'e' || fin.peek() == 'E'){
00054 
00055         done = true;
00056         continue;
00057       }
00058 
00059       // 'N'UCLEUS = or 'n'ucleus = specifies Z and A of daughter nucleus 
00060       if(fin.peek() == 'n' || fin.peek() == 'N'){
00061 
00062         if(Set){
00063 
00064           fin.getline( paramLine, 256 );
00065           continue;
00066         }
00067         fin >> dummyString;
00068         while(fin.peek() == ' ' || fin.peek() == '=') 
00069           fin.ignore(1);
00070 
00071         fin >> Z >> A;
00072         //cout << Z << " " << A << endl;
00073 
00074         if(A == 208){
00075 
00076           // read in Tl208 decay table, 40 branches
00077           Nbranch = 40;
00078           for(int n=0; n<Nbranch; n++){
00079 
00080             fin >> branchProb[n] >> dummyInt >> dummyFloat >> Ngamma[n];
00081             for(int i=0; i<6; i++) fin >> gammaE[n][i];
00082             fin >> dummyFloat >> dummyFloat >> dummyFloat;
00083 
00084             /*
00085             cout << "  branchProb[" << n << "] " << branchProb[n] 
00086                  << " and Ngamma[" << n << "] " << Ngamma[n] << endl;
00087             for(int i=0; i<Ngamma[n]; i++){
00088               cout << "  gammaE[" << n << "][" << i << "] " << gammaE[n][i];
00089             }
00090             cout << endl;
00091             */
00092           }
00093           done = true;
00094           continue;
00095 
00096           Set = true;
00097         }
00098 
00099         continue;
00100       }
00101 
00102       // ignore lines starting with numbers if they are not in our decay table
00103       if(fin.peek() == '0' || fin.peek() == '1'){
00104 
00105         fin.getline(paramLine, 256);
00106         continue;
00107       }
00108 
00109       // ignore extra whitespace
00110       if(fin.peek() == ' ' || fin.peek() == '\n'){
00111 
00112         fin.ignore(1);
00113         continue;
00114       }
00115     }
00116 
00117     // pick a decay branch and get the gamma energies
00118     int len = 1;
00119     float r[len];
00120     ranlux_(r,len);
00121 
00122     bool passed = false;
00123     for(int n=0;n<Nbranch; n++){
00124 
00125       if(branchProb[n] > r[0] && !passed){
00126 
00127         // save the number and energies of the gammas
00128         numGamma = Ngamma[n];
00129         for(int i=0;i<numGamma; i++) gammaEnergy[i] = gammaE[n][i];
00130 
00131         passed = true;
00132       }
00133     }
00134 
00135   } // done with Tl208
00136 
00137   // Tl210
00138   if(Isotope == 210){
00139 
00140     while(!done){
00141 
00142       // '#' specifies a comment line -- ignore it
00143       if(fin.peek() == '#'){
00144 
00145         fin.getline(paramLine, 256);
00146         continue;
00147       }
00148 
00149       // 'E'ND or 'e'nd specifies end of file -- set done flag to true
00150       if(fin.peek() == 'e' || fin.peek() == 'E'){
00151 
00152         done = true;
00153         continue;
00154       }
00155 
00156       // 'N'UCLEUS = or 'n'ucleus = specifies Z and A of daughter nucleus 
00157       if(fin.peek() == 'n' || fin.peek() == 'N'){
00158 
00159         if(Set){
00160 
00161           fin.getline( paramLine, 256 );
00162           continue;
00163         }
00164         fin >> dummyString;
00165         while(fin.peek() == ' ' || fin.peek() == '=') 
00166           fin.ignore(1);
00167 
00168         fin >> Z >> A;
00169         //cout << Z << " " << A << endl;
00170 
00171         if(A == 210){
00172 
00173           // read in Tl210 decay table, 12 branches
00174           Nbranch = 12;
00175           for(int n=0; n<Nbranch; n++){
00176 
00177             fin >> branchProb[n] >> dummyInt >> dummyFloat >> Ngamma[n];
00178             for(int i=0; i<6; i++) fin >> gammaE[n][i];
00179             fin >> dummyFloat >> dummyFloat >> dummyFloat;
00180 
00181             /*
00182             cout << "  branchProb[" << n << "] " << branchProb[n] 
00183                  << " and Ngamma[" << n << "] " << Ngamma[n] << endl;
00184             for(int i=0; i<Ngamma[n]; i++){
00185               cout << "  gammaE[" << n << "][" << i << "] " << gammaE[n][i];
00186             }
00187             cout << endl;
00188             */
00189           }
00190           done = true;
00191           continue;
00192 
00193           Set = true;
00194         }
00195 
00196         continue;
00197       }
00198 
00199       // ignore lines starting with numbers if they are not in our decay table
00200       if(fin.peek() == '0' || fin.peek() == '1'){
00201 
00202         fin.getline(paramLine, 256);
00203         continue;
00204       }
00205 
00206       // ignore extra whitespace
00207       if(fin.peek() == ' ' || fin.peek() == '\n'){
00208 
00209         fin.ignore(1);
00210         continue;
00211       }
00212     }
00213 
00214   } // done with Tl210
00215 
00216 }


Member Function Documentation

float MyTlSource::GetTlGammaEnergy int &    n const [inline]
 

Returns the energy of each photon produced by the Tl decay.

Called with the integer index for each photon in the gammaEnergy array, from 0 to the total number of photons.

Definition at line 38 of file MyTlSource.hh.

00038 {return gammaEnergy[n];}


The documentation for this class was generated from the following files:
Generated on Thu Jul 29 14:27:04 2004 for ReactorFsim by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002