Class nucmass_ame (o2scl)¶
-
class nucmass_ame : public o2scl::nucmass_table¶
Masses from the Atomic Mass Evaluation.
This class provides an interface to the atomic mass table using data from [Audi95], [Audi03], [Audi12], [Wang12], [Huang17], [Wang17], [Huang21ta], and [Wang21ta].
The 1995 data provided the binding energy (stored in nucmass_ame::entry::be and nucmass_ame::entry::dbe), while the 2003 data provided the binding energy divided by the mass number (stored in nucmass_ame::entry::beoa and nucmass_ame::entry::dbeoa). When the 1995 data is used, nucmass_ame::entry::beoa and nucmass_ame::entry::dbeoa are calculated automatically, and when the 2003 data is used nucmass_ame::entry::be and nucmass_ame::entry::dbe are calculated automatically. To indicate that has automatically calculated a value in this way, the associated accuracy field is set to o2scl::nucmass_ame::intl_computed.
Note that all uncertainties are 1 sigma uncertainties.
The functions mass_excess() and o2scl::nucmass::mass_excess_d() directly return the value from the data. For consistency, the functions o2scl::nucmass::binding_energy(), o2scl::nucmass::binding_energy_d(), o2scl::nucmass::total_mass(), and o2scl::nucmass::total_mass_d() return values which are automatically computed from the mass excess with the neutron and proton mass in m_neut and m_prot. In order to obtain the value of the binding energy as reported in the original data instead of the value computed from the mass excess, you can use the function get_ZN(), and access the corresponding entry from the data directly.
In cases where the decimal point in the original table was replaced with a
#
, the associated accuracy field is set to o2scl::nucmass_ame::estimated. In cases where the original table contained a asterisk to indicate a value was not calculable, the accuracy field is set to o2scl::nucmass_ame::not_calculable and the value is set to zero. If internally computed the value because it was not present in the original table, the accuracy field is set to o2scl::nucmass_ame::intl_computed. In cases where either o2scl::nucmass_ame::entry::orig or o2scl::nucmass_ame::entry::bdmode in the original table was blank, the string is set to"blank"
.In the original table, binding energies are defined with a positive sign, so that lead has a binding energy of +8 MeV and this is what is stored in o2scl::nucmass_ame::entry::be. However, for consistency with the other mass formulas, o2scl::nucmass_ame::binding_energy() gives, e.g., about \( -8 \) MeV for lead. See also the documentation for the class structure for each table entry in o2scl::nucmass_ame::entry.
- Idea for Future:
Create a caching and more intelligent search system for the table. The table is sorted by A and then N, so we could probably just copy the search routine from mnmsk_mass, which is sorted by Z and then N (some code written for this, but it doesn’t work yet).
Should m_neut and m_prot be set to the neutron and proton masses from the table by default?
Accuracy modes
-
static const int measured = 0¶
Measured value from source data.
-
static const int estimated = 1¶
Value estimated in source data.
-
static const int not_calculable = 2¶
Value listed in data as not calculable.
-
static const int intl_computed = 3¶
Value computed by .
-
static const int unc_less_than_half_eV = 4¶
The uncertainty is less than half of an eV.
-
static const int blank = 5¶
The value is blank.
-
static const int blank_unc = 6¶
The uncertainty is blank.
-
static const int unstable = 7¶
The nucleus is unstable.
-
static const int part_unstable = 8¶
-
static const int lower_limit = 9¶
-
static const int upper_limit = 10¶
-
static const int does_not_exist = 11¶
-
static const int approximate = 12¶
The stored value is only approximate.
-
int last¶
The last table index for caching.
-
void load(std::string model, bool exp_only = false, int verbose = 0)¶
Read data for o2scl::nucmass_ame from an HDF table specified in a file.
- Todo:
Why was this moved here from hdf_nucmass.h ?
-
void load_ext(std::string name, std::string filename, std::string nubase_file, bool exp_only = false, int verbose = 0)¶
Read data for o2scl::nucmass_ame from an HDF table specified in a file.
Note
This was moved from hdf_nucmass_io.h because it makes it more consistent with the other nucmass classes.
-
inline int parse(std::string s1, std::string s2, double &d1, double &d2, int &acc)¶
Parse strings
s1
ands2
from the AME into a value,d1
, an uncertainty,d2
, and an accuracy flag,acc
.If string
s1
has an asterisk, thend1
andd2
are set to zero andacc
is set to nucmass_ame::not_calculable.If string
s2
contains the letter ‘a’, thend2
is set to zero andacc
is set to nucmass_ame::unc_less_than_half_eV. The value of d1 is computed fromstod_nothrow()
.Otherwise, if string
s1
has a pound sign, thenacc
is set to nucmass_ame::estimated, otherwise,acc
is set to nucmass_ame::measured. The values ofd1
andd2
are computed froms1
ands2
usingstod_nothrow()
.If either of the stod_nothrow() calls returns a non-zero value, then the error handler is called.
-
inline virtual const char *type()¶
Return the type,
"nucmass_ame"
.
-
virtual bool is_included(int Z, int N)¶
Return false if the mass formula does not include specified nucleus.
-
virtual double mass_excess(int Z, int N)¶
Given
Z
andN
, return the mass excess in MeV.
-
inline virtual bool is_loaded()¶
Returns true if data has been loaded.
-
inline virtual size_t get_nentries()¶
Return number of entries.
-
inline std::string get_reference()¶
Return the reference.
-
inline virtual void clear()¶
Desc.
-
class entry¶
Atomic mass entry structure.
Atomic mass entry data object for o2scl::nucmass_ame.
This has to be a struct, not a class, so that it can be processed by the HDF5 make table functions.
Public Members
-
int NMZ¶
N-Z.
-
int N¶
Neutron number.
-
int Z¶
Proton number.
-
int A¶
Mass number.
-
char el[4]¶
Element name.
-
char orig[5]¶
Data origin.
-
double mass¶
Mass excess (in keV)
-
double dmass¶
Mass excess uncertainty (in keV)
-
int mass_acc¶
Mass accuracy flag.
-
double be¶
Binding energy (in keV, given in the ‘95 data)
-
double dbe¶
Binding energy uncertainty (in keV, given in the ‘95 data)
-
int be_acc¶
Binding energy accuracy flag.
-
double beoa¶
Binding energy / A (in keV, given in the ‘03 data)
-
double dbeoa¶
Binding energy / A uncertainty (in keV, given in the ‘03 data)
-
int beoa_acc¶
Binding energy / A accuracy flag.
-
char bdmode[3]¶
Beta decay mode.
-
double bde¶
Beta-decay energy (in keV)
-
double dbde¶
Beta-decay energy uncertainty (in keV)
-
int bde_acc¶
Beta-decay energy accuracy flag.
-
int A2¶
Mass number (reported twice in original table)
-
double amass¶
Atomic mass (in keV)
-
double damass¶
Atomic mass uncertainty (in keV)
-
int amass_acc¶
Atomic mass accuracy flag.
-
std::vector<entry_nubase_20> props¶
NUBASE properties.
-
int NMZ¶
-
class entry_nubase_20¶
Data structure for a row in the NUBASE file.
Note
All character arrays have space for an extra terminating character
Public Members
-
char Znote¶
Note.
-
char A_el[6]¶
Element name.
-
char isomer¶
Type field (isomer, resonance, etc.)
-
double mass¶
Mass excess (in keV)
-
double dmass¶
Mass excess uncertainty (in keV)
-
int mass_acc¶
Mass excess accuracy.
-
double exc_energy¶
Excitation energy.
-
double dexc_energy¶
Excitation energy uncertainty.
-
int exc_energy_acc¶
Excitation energy accuracy.
-
char origin[3]¶
Excitation energy origin.
-
char isomer_unc¶
Isomer uncertainty.
-
char isomer_inv¶
Isomer inversion.
-
double hlife¶
Half-life.
-
int hlife_acc¶
Half life accuracy.
-
char hl_unit[3]¶
Half-life unit.
-
char dhlife[8]¶
Half-life uncertainty.
-
char spinp[15]¶
Spin and parity.
-
int ENSDF_year¶
Isospin multiplet.
-
int discovery¶
Year of discovery.
-
char decay_intensity[91]¶
Decay mode and intensity.
-
char Znote¶