10 #ifndef MATERIALS_ISOTOPE_H 11 #define MATERIALS_ISOTOPE_H 1 99 void set(
int z_,
int a_);
123 virtual void tree_dump(std::ostream & out_ = std::clog,
124 const std::string & title_ =
"",
125 const std::string & indent_ =
"",
126 bool inherit_ =
false)
const;
162 virtual void tree_dump(std::ostream & out_ = std::clog,
163 const std::string & title_ =
"",
164 const std::string & indent_ =
"",
165 bool inherit_ =
false)
const;
186 std::ostream & out_ = std::clog,
187 const std::string & title_ =
"",
188 const std::string & indent_ =
"",
189 bool inherit_ =
false);
237 explicit isotope(
const std::string & name_);
243 explicit isotope(
const char * name_);
258 unsigned int build_flags_ = 0);
270 explicit isotope(
const std::string & ch_symbol_,
273 unsigned int build_flags_ = 0);
285 explicit isotope(
const char * ch_symbol_,
288 unsigned int build_flags_ = 0);
301 explicit isotope(
const std::string & name_,
305 unsigned int build_flags_ = 0);
318 explicit isotope(
const char * name_,
322 unsigned int build_flags_ = 0);
336 explicit isotope(
const std::string & name_,
337 const std::string & ch_symbol_,
340 unsigned int build_flags_ = 0);
353 explicit isotope(
const char * name_,
354 const char * ch_symbol_,
357 unsigned int build_flags_ = 0);
372 const std::string &
get_name()
const;
458 void set_name(
const std::string & name_);
471 void set_mass_excess(
double mass_excess_,
double err_mass_excess_ = 0.0);
492 void set_half_life(
double half_life_,
double err_half_life_ = 0.0);
522 void build(
unsigned int flags_ = 0);
531 virtual void tree_dump(std::ostream & out_ = std::clog,
532 const std::string & title_ =
"",
533 const std::string & indent_ =
"",
534 bool inherit_ =
false)
const;
558 double _mass_excess_;
559 double _err_mass_excess_;
562 double _atomic_mass_;
563 double _err_atomic_mass_;
565 double _err_half_life_;
573 #endif // MATERIALS_ISOTOPE_H bool from_string(const std::string &)
Import from a string identifier.
double get_err_atomic_mass() const
Return the error on the atomic mass in unit of [u].
double get_nucleus_mass() const
Return nucleus mass.
double get_mass() const
Return the mass in unit of energy.
First fission/shape isomeric level.
Definition: isotope.h:218
int get_a() const
Return A (number of nucleons)
void set_isomeric(isomeric_level_type i_)
Set the isomeric state :
The identifier for an isotope based on its Z and A>=Z numbers.
Definition: isotope.h:74
double get_mass_excess() const
Return mass excess.
Unique isomeric level.
Definition: isotope.h:212
void set_default_data()
Set data to default values.
std::string symbol
Chemical symbol of the element.
Definition: isotope.h:169
double bea_err
Error on binding energy per nucleon.
Definition: isotope.h:175
void build(unsigned int flags_=0)
Load additional data in the isotope data structure.
bool operator<(const id &) const
Comparison operator.
bool is_valid() const
Check the validity of the isotope id.
int get_N() const
Return N.
void set_z(int z_)
Set the number of protons :
int get_z() const
Return Z (number of protons)
Second fission/shape isomeric level.
Definition: isotope.h:219
void lock()
Lock the isotope.
void set_a(int z_)
Set the number of nucleons.
virtual void tree_dump(std::ostream &out_=std::clog, const std::string &title_="", const std::string &indent_="", bool inherit_=false) const
Smart print.
build_flag_type
Build flags.
Definition: isotope.h:136
Extract decay half-life from tabulated isotopes.
Definition: isotope.h:138
isomeric_level_type
Isomeric level.
Definition: isotope.h:209
record_type()
Default constructor.
static int undefined_number_of_nucleons()
Undefined number of nucleons for an isotope.
static std::string isomeric_to_label(isomeric_level_type)
Return the label associated to an isomeric level.
bool is_locked() const
Return true if isotope is locked (i.e. fully set), false either.
bool find_decay_data()
Search & set the half-life from the tabulated isotopes.
Definition: isotope.h:198
const std::string & get_name() const
Return the name.
Lock after building.
Definition: isotope.h:139
std::string to_string() const
Return a string identifier.
static void print_table_of_isotopes(const isotope_dict_type &, std::ostream &out_=std::clog, const std::string &title_="", const std::string &indent_="", bool inherit_=false)
Print a table of isotopes.
double get_atomic_mass() const
Return atomic mass.
void unlock()
Unlock the isotope.
Invalid isomeric level.
Definition: isotope.h:221
const datatools::properties & get_properties() const
Give access to properties.
bool has_decay_data() const
Return true if decay data have been set properly, false either.
bool is_ground_state() const
Check ground state.
int get_a() const
Return the number of nucleons.
double get_err_half_life() const
Return the error on half-life in unit of time.
Third isomeric level.
Definition: isotope.h:215
int get_A() const
Return A.
std::string get_name() const
Return the name associated to the isotope Id.
id get_id() const
Return the isotope Id.
bool operator==(const id &) const
Comparison operator.
void set_zai(int z_, int a_, isomeric_level_type i_=GROUND_STATE)
Set Z, A, I attributes.
int get_n() const
Return N (number of neutrons)
static isomeric_level_type label_to_isomeric(const std::string &)
Return the isomeric level associated to a label.
double mx_err
Error on mass excess.
Definition: isotope.h:173
static int max_number_of_nucleons()
Maximum number of nucleons for an isotope (element 'Ei')
virtual void tree_dump(std::ostream &out_=std::clog, const std::string &title_="", const std::string &indent_="", bool inherit_=false) const
Smart print.
datatools::properties & grab_properties()
Give access to properties.
std::map< id, record_type > isotope_dict_type
Dictionary of isotope records.
Definition: isotope.h:182
ame_release_type
Definition: isotope.h:197
double bea
Binding energy per nucleon.
Definition: isotope.h:174
bool is_known() const
Check if the isotope is known from tables.
double am_err
Error on atomic mass.
Definition: isotope.h:177
void set_half_life(double half_life_, double err_half_life_=0.0)
Set the decay data.
double get_atomic_mass() const
Return the atomic mass in unit of [u].
Extract mass excess and mass from tabulated isotopes.
Definition: isotope.h:137
void set_atomic_mass(double mass_, double err_mass_=0.0)
Set the atomic mass and its error in implicit unit of [u].
bool is_stable() const
Return true if isotope is stable, false either.
void set_mass_excess(double mass_excess_, double err_mass_excess_=0.0)
Set the mass excess and its error in explicit unit of energy.
void _set_defaults()
Set default attributes.
static const isotope_dict_type & table_of_isotopes()
Return the isotope database singleton.
Isomeric level.
Definition: isotope.h:211
bool has_mass() const
Check if the mass of the nucleus is defined.
void set_name(const std::string &name_)
Set the name.
const std::string & get_chemical_symbol() const
Return the chemical symbol.
static double compute_nucleus_mass(int z_, int a_, double binding_energy_per_nucleon_)
Compute the mass of the nucleus from its Z, A and binding energy per nucleon (in unit of energy)
std::string get_zai_name() const
Return the zai name : 'ChA(I)'.
bool has_atomic_mass_data() const
Return true if atomic mass data have been set properly, false either.
bool is_valid() const
Return true if isotope is valid, false either.
Third fission/shape isomeric level.
Definition: isotope.h:220
A simple class to handle known isotopes (ZAI) and their basic properties (mass & decays).
Definition: isotope.h:60
void set(int z_, int a_)
Set the numbers of protons and nucleons.
Definition: isotope.h:199
Second isomeric level.
Definition: isotope.h:214
static int max_number_of_protons()
Maximum number of protons for an isotope (element 'Ei')
static double compute_electron_binding_energy(int z_)
Compute the atomic electron binding energy for ion with given Z.
Isotope record from AME table.
Definition: isotope.h:143
Fission/shape isomeric level.
Definition: isotope.h:216
isotope()
Default Constructor.
int get_z() const
Return the number of protons.
double mx
Mass excess.
Definition: isotope.h:172
bool has_mass_excess_data() const
Return true if mass excess have been set properly, false either.
int Z
The number of protons.
Definition: isotope.h:170
virtual void tree_dump(std::ostream &out_=std::clog, const std::string &title_="", const std::string &indent_="", bool inherit_=false) const
Smart print.
void set_z(int z_)
Set the number of protons.
int A
The number of nucleons.
Definition: isotope.h:171
double get_half_life() const
Return the half-life in unit of time.
int get_Z() const
Return Z.
Unique fission/shape isomeric level.
Definition: isotope.h:217
static bool id_is_tabulated(const id &)
Check if the database knows a given isotope id.
bool find_mass_data()
Search & set the mass excess and mass from the tabulated isotopes.
double am
Atomic mass.
Definition: isotope.h:176
double get_err_mass_excess() const
Return the error on mass excess in unit of energy.
static const record_type & table_record_from_id(const id &)
Return the isotope record from the table.
void set_binding_energy_per_nucleon(double bea_, double err_bea_=0.0)
Set the binding energy per nucleon and its error in explicit unit of energy.
virtual ~isotope()
Destructor.
static void load_ame_table(isotope::isotope_dict_type &, ame_release_type ame_release_=AME_RELEASE_2012)
Load a dictionary of isotope records from the AME (2003/2012) data file.
First isomeric level.
Definition: isotope.h:213
Ground state (default)
Definition: isotope.h:210
void set_mass(double mass_)
Set the mass.
double get_binding_energy_per_nucleon() const
Return binding energy per nucleon.
double get_mass_excess() const
Return the mass excess in unit of energy.
isomeric_level_type get_isomeric() const
Return the isomeric state.
void set_a(int a_)
Set the number of nucleons :
Top-level namespace of the Bayeux/materials module library.
Definition: geom_manager_utils.h:14