ENSDF++ 1.1
An easy, fast and simple way to run querys towards the ENSDF database, written in C++.
MassObject.cpp
Go to the documentation of this file.
00001 #include "MassObject.h"
00002 #include "Nukleid.h"
00003 
00004 MassObject::MassObject()
00005 {
00006   
00007 }
00008 
00009 MassObject::MassObject(string massString)
00010 {
00011   string elementName = massString.substr(20,3);
00012   elementName = trimString(elementName);
00013   while(elementName.size()<2)
00014     elementName = elementName + " ";
00015   string elementMass = massString.substr(16,3);
00016   elementMass = trimString(elementMass);
00017   while(elementMass.size()<3)
00018     elementMass = elementMass + " ";
00019 
00020   string nukleidString = elementMass + elementName;
00021 
00022   myNukleid = Nukleid(nukleidString);
00023   massExcess = stringsToExperimentalValue(massString.substr(29,13),massString.substr(42,10));
00024   bindingEnergy = stringsToExperimentalValue(massString.substr(54,8),massString.substr(65,7));
00025   betaDecayEnergy = stringsToExperimentalValue(massString.substr(76,10),massString.substr(88,8));
00026   string massStr = massString.substr(96,16);
00027   massStr[3]='.';
00028   atomicMass = stringsToExperimentalValue(massStr,massString.substr(113,10));                                    
00029 }
00030 
00031 ExperimentalValue MassObject::stringsToExperimentalValue(string value, string deltaValue)
00032 {
00033   ExperimentalValue toReturn;
00034   if(find(value.begin(), value.end(), '*')!=value.end())
00035     {
00036       toReturn.isTheoretical=true;
00037     }
00038   else
00039     {
00040       toReturn.isTheoretical=false;
00041       if(find(value.begin(), value.end(), '#')!=value.end())
00042         {
00043           toReturn.nonCalculable=true;
00044         }
00045       else
00046         {
00047           toReturn.nonCalculable=false;
00048         }
00049       remove(value.begin(), value.end(), '#');
00050       remove(deltaValue.begin(), deltaValue.end(), '#');
00051       toReturn.value=stringToDouble(value);
00052       toReturn.deltaValue=stringToDouble(deltaValue);
00053     }
00054   return toReturn;
00055 }
00056 
00057 double MassObject::stringToDouble(string myString)
00058 {
00059   return atof(myString.c_str());
00060 }
00061 
00062 string MassObject::trimString(string toTrim)
00063 {
00064   string retur = "";
00065   for(unsigned int i = 0; i<toTrim.size(); i++)
00066     if(toTrim[i]!=' ')
00067       retur = retur + toTrim[i];
00068   return retur;
00069 }
00070 
00071 Nukleid MassObject::getNukleid() const
00072 {
00073   return myNukleid;
00074 }
00075 
00076 ExperimentalValue MassObject::getMassExcess() const
00077 {
00078   return massExcess;
00079 }
00080 
00081 ExperimentalValue MassObject::getBindingEnergy() const
00082 {
00083   return bindingEnergy;
00084 }
00085 
00086 ExperimentalValue MassObject::getBetaDecayEnergy() const
00087 {
00088   return betaDecayEnergy;
00089 }
00090 
00091 ExperimentalValue MassObject::getAtomicMass() const
00092 {
00093   return atomicMass;
00094 }
 All Classes Files Functions Variables Enumerations Enumerator Defines

Back to the main page of the Precalibrated Ion Beam Identification Detector project

Created by Rikard Lundmark