TkN 2.7.1
Toolkit for Nuclei
Loading...
Searching...
No Matches
measure

To handle the fact that a measure is always associated to a specific unit and an uncertainty, that can be in some cases asymmetric, a dedicated class called tkn::tkmeasure has been created.

In addition, a tkmeasure gives some properties on the measure, like if the measure is uncertain, is coming from a systematic study or from calculations. It can also handle the fact that some measures are given as a limit value.

Some recommended nuclear moments have two discrete published solutions. TkN keeps the first scalar without averaging and marks it uncertain. Use has_alternative() and get_alternative() to detect and read the second source representation. The method has_incompatible_alternative() identifies opposite-sign solutions or alternatives separated by more than three combined standard uncertainties.

The standard way to access a tkmeasure is using the tkproperty_list::get() method:

tknucleus nuc("14C");
auto measure = nuc.get("lifetime");
cout << measure->get_value() << " " << measure->get_unit() << " +- " << measure->get_error() << endl;
5700 y +- 30

To list the accessible tkmeasure properties, use:

tknucleus nuc("14C");
nuc.list_data_properties()
[ INFO ] nucleus data properties:
[ INFO ] Qalpha Qalpha = -12012.500 (0.081) keV
[ INFO ] QbetaMinus QbetaMinus = 156.4760 (0.0037) keV
[ INFO ] QbetaMinusOneNeutronEmission QbetaMinusOneNeutronEmission = -10396.9000 (0.2696) keV
[ INFO ] QbetaMinusTwoNeutronEmission QbetaMinusTwoNeutronEmission = -30460.80000000 (0.00537582) keV
[ INFO ] QdeltaAlpha QdeltaAlpha = 2892.4400000 (0.0405445) keV
[ INFO ] QdoubleBetaMinus QdoubleBetaMinus = -4987.8900 (0.0254) keV
[ INFO ] QdoubleElectronCapture QdoubleElectronCapture = -36934.600 (132.245) keV
[ INFO ] QelectronCapture QelectronCapture = -20643.8000 (21.2133) keV
[ INFO ] QelectronCaptureOneProtonEmission QelectronCaptureOneProtonEmission = -37928.2000 (10.1805) keV
[ INFO ] QpositronEmission QpositronEmission = -21665.8000 (21.2133) keV
[ INFO ] XRay_Kalpha1 XRay_Kalpha1 = 0.277 keV
[ INFO ] atomic_mass atomic_mass = 12.011 u
[ INFO ] atomic_radius_van_der_Waals atomic_radius_van_der_Waals = 170 pm
[ INFO ] binding_energy_overA binding_energy_overA = 7520.3200 (0.0004) keV
[ INFO ] boiling_point boiling_point = 4098 K
[ INFO ] density density = 2.267
[ INFO ] ionization_energy ionization_energy = 11.26 eV
[ INFO ] lifetime half-life = 5700 (30 ) y
[ INFO ] mass_excess mass_excess = 3019.89000 (0.00375) keV
[ INFO ] melting_point melting_point = 3823 K
[ INFO ] neutronSeparationEnergy neutronSeparationEnergy = 8176.4300 (0.0038) keV
[ INFO ] pairingGap pairingGap = 3479.180000 (0.399772) keV
[ INFO ] protonSeparationEnergy protonSeparationEnergy = 20831.0000 (1.0001) keV
[ INFO ] quadrupoleDeformation quadrupoleDeformation = 0.3593840 (0.0279568)
[ INFO ] twoNeutronSeparationEnergy twoNeutronSeparationEnergy = 13122.7000 (0.0039) keV
[ INFO ] twoProtonSeparationEnergy twoProtonSeparationEnergy = 36635.8000 (1.9086) keV

The same applies for a tklevel or a tkdecay:

tknucleus nuc("132Sn");
auto level = nuc.get_level_scheme()->get_level("2+1");
level->list_data_properties();
[ INFO ] data properties:
[ INFO ] energy Level energy = 4041.20 (0.15 ) keV
[ INFO ] lifetime half-life = 2.4 (-0.5 ; +0.9 ) fs

In this case, the lifetime uncertainty is asymmetric, we can access it as follows:

Here lifetime is the ENSDF half-life T1/2, not the mean lifetime tau. Copy a measure before converting it: properties returned by get() can be shared between nucleus objects and the manager cache.

tknucleus nuc("132Sn");
auto level = nuc.get_level_scheme()->get_level("2+1");
auto half_life = level->get("lifetime");
cout << half_life->get_value() << " " << half_life->get_unit() << " - " << half_life->get_error_low() << " + " << half_life->get_error_high() << endl;
2.4 fs - 0.5 + 0.9

Legacy stored qualifiers (_info)

SQLite measurement columns may have a companion _info string. This is a legacy semicolon-delimited list of tokens, not a general-purpose serialization format. Tokens can be combined; some consumers use substring matching, so arbitrary unescaped semicolons must not be inserted into token values.

Token Meaning and current behavior
ERR=? No uncertainty quoted; currently mapped to kUncertain, not proof that the value itself is doubtful
ERR=LT, LE, GT, GE Upper/lower boundary; reversed by reciprocal time/width conversion
ERR=AP, CA, SY Approximate, calculated, systematic; consumed into the corresponding flag
VAL=() Tentative value, consumed into kTentative
ERR=CONV Derived conversion, consumed into the converted flag
OFF=X Unknown energy-band offset; the level reader currently reads one character
ISO=M1 Isomer marker; current level parser supports the historical single-digit index
STABLE Stable-state marker, separate from a missing half-life
TYPE=BE2W Transition-probability kind, here electric quadrupole in Weisskopf units
ALT=..., ALT_INCOMPATIBLE=1 Other published solution and incompatibility diagnostic

Unknown source uncertainty and exact zero uncertainty are not reliably distinguished throughout the legacy pipeline: a NULL uncertainty can become zero. Check qualifiers and provenance; do not infer exactness solely from get_error()==0. V3 will separate missing uncertainty, tentative values, limits, alternatives and provenance into typed fields. Existing tags are not rewritten by this release.