Class nucmass_ame (o2scl)

O2scl : Class List

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].

To load data from the HDF5 data files, use o2scl_hdf::ame_load() .

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

Value computed by .

entry *mass

The array containing the mass data of length ame::n.

int last

The last table index for caching.

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 and N, return the mass excess in MeV.

entry get_ZN(int l_Z, int l_N)

Get element with Z=l_Z and N=l_N (e.g. 82,126).

entry get_ZA(int l_Z, int l_A)

Get element with Z=l_Z and A=l_A (e.g. 82,208).

entry get_elA(std::string l_el, int l_A)

Get element with name l_el and A=l_A (e.g. “Pb”,208).

entry get(std::string nucleus)

Get element with string (e.g. “Pb208”)

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.

Public Functions

nucmass_ame()

Create an AME mass object.

~nucmass_ame()

Friends

friend void ame_load_ext(nucmass_ame &ame, std::string file_name, std::string table_name, bool exp_only)
friend void ame_load(nucmass_ame &ame, std::string name, bool exp_only)
struct 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.