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

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.

std::vector<entry> mass

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

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 and s2 from the AME into a value, d1, an uncertainty, d2, and an accuracy flag, acc.

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.

inline virtual void clear()

Desc.

Public Functions

nucmass_ame()

Create an AME mass object.

virtual ~nucmass_ame()
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.

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.