![]() |
ENSDF++ 1.1
An easy, fast and simple way to run querys towards the ENSDF database, written in C++.
|
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 }