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?

Note

This class requires data stored in an HDF file and thus requires HDF support for normal usage.

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.