10#ifndef PoPI_hpp_included
11#define PoPI_hpp_included 1
30#define PoPI_AMU2MeV_c2 931.494028
31#define PoPI_electronMass_MeV_c2 0.5109989461
33#define PoPI_formatVersion_0_1_Chars "0.1"
34#define PoPI_formatVersion_1_10_Chars "1.10"
35#define PoPI_formatVersion_2_0_LLNL_3_Chars "2.0.LLNL_3"
37#define PoPI_PoPsChars "PoPs"
39#define PoPI_idChars "id"
40#define PoPI_symbolChars "symbol"
41#define PoPI_chemicalElementsChars "chemicalElements"
42#define PoPI_chemicalElementChars "chemicalElement"
43#define PoPI_isotopesChars "isotopes"
44#define PoPI_isotopeChars "isotope"
45#define PoPI_gaugeBosonChars "gaugeBoson"
46#define PoPI_leptonChars "lepton"
47#define PoPI_baryonChars "baryon"
48#define PoPI_nuclidesChars "nuclides"
49#define PoPI_nuclideChars "nuclide"
50#define PoPI_nucleusChars "nucleus"
51#define PoPI_unorthodoxChars "unorthodox"
52#define PoPI_aliasesChars "aliases"
73#define PoPI_massChars "mass"
74#define PoPI_spinChars "spin"
75#define PoPI_parityChars "parity"
76#define PoPI_chargeChars "charge"
77#define PoPI_halflifeChars "halflife"
79#define PoPI_doubleChars "double"
80#define PoPI_integerChars "integer"
81#define PoPI_fractionChars "fraction"
82#define PoPI_stringChars "string"
83#define PoPI_shellChars "shell"
84#define PoPI_decayDataChars "decayData"
85#define PoPI_gammaDecayDataChars "gammaDecayData"
87#define PoPI_decayModeElectroMagnetic "electroMagnetic"
89#define PoPI_formatChars "format"
90#define PoPI_labelChars "label"
91#define PoPI_indexChars "index"
92#define PoPI_pidChars "pid"
93#define PoPI_nameChars "name"
94#define PoPI_versionChars "version"
95#define PoPI_aliasChars "alias"
96#define PoPI_metaStableChars "metaStable"
97#define PoPI_particleChars "particle"
98#define PoPI_discreteChars "discrete"
99#define PoPI_continuumChars "continuum"
120class NuclideGammaBranchStateInfos;
137class ChemicalElement;
140void appendXMLEnd( std::vector<std::string> &a_XMLList, std::string
const &a_label );
142int particleZ(
Base const &a_particle,
bool a_isNeutronProtonANucleon =
false );
143int particleZ( Database
const &a_pops, std::size_t a_index,
bool a_isNeutronProtonANucleon =
false );
144int particleZ( Database
const &a_pops, std::string
const &a_id,
bool a_isNeutronProtonANucleon =
false );
146int particleA(
Base const &a_particle,
bool a_isNeutronProtonANucleon =
false );
147int particleA( Database
const &a_pops, std::size_t a_index,
bool a_isNeutronProtonANucleon =
false );
148int particleA( Database
const &a_pops, std::string
const &a_id,
bool a_isNeutronProtonANucleon =
false );
150int particleZA(
Base const &a_particle,
bool a_isNeutronProtonANucleon =
false );
151int particleZA( Database
const &a_pops, std::size_t a_index,
bool a_isNeutronProtonANucleon =
false );
152int particleZA( Database
const &a_pops, std::string
const &a_id,
bool a_isNeutronProtonANucleon =
false );
178 static int constexpr photon = 1000000000;
198 explicit Exception( std::string
const &a_message );
219 int m_nuclearLevelIndex;
220 int m_metaStableIndex;
238 int AAA( ) {
return( m_AAA ); }
239 int ZZZ( ) {
return( m_ZZZ ); }
240 int III( ) {
return( m_III ); }
269 bool m_isChemicalElement;
272 std::string m_symbol;
276 std::string m_qualifier;
278 std::string boolToString(
bool a_value, std::string
const &a_prefix )
const;
284 std::string
const &
Id( ) {
return( m_id ); }
289 std::string
const &
symbol( ) {
return( m_symbol); }
290 int Z( ) {
return( m_Z ); }
291 int A( ) {
return( m_A ); }
293 std::string
const &
qualifier( ) {
return( m_qualifier ); }
295 void print(
bool a_terse, std::string
const &a_indent =
"" )
const ;
308template <
class T,
class T2>
312 std::string m_moniker;
313 std::vector<T *> m_items;
316 Suite( std::string
const &a_moniker ) : m_moniker( a_moniker ) { }
321 std::string::size_type
size(
void )
const {
return( m_items.size( ) ); }
322 T &
operator[]( std::size_t a_index )
const {
return( *m_items[a_index] ); }
323 std::string
const &
moniker(
void ) {
return( m_moniker ); }
325 void toXMLList( std::vector<std::string> &a_XMLList, std::string
const &a_indent1 )
const ;
331template <
class T,
class T2>
334 std::string::size_type i1, _size = m_items.size( );
336 for( i1 = 0; i1 < _size; ++i1 )
delete m_items[i1];
350template <
class T,
class T2>
354 T *item =
new T( child, a_DB, a_parent );
355 m_items.push_back( item );
366template <
class T,
class T2>
370 T *item =
new T( child, a_parent );
371 m_items.push_back( item );
382template <
class T,
class T2>
385 std::string::size_type _size = m_items.size( );
386 std::string indent2 = a_indent1 +
" ";
388 if( _size == 0 )
return;
390 std::string header = a_indent1 +
"<" + m_moniker +
">";
391 a_XMLList.push_back( std::move( header ) );
392 for( std::string::size_type i1 = 0; i1 < _size; ++i1 ) m_items[i1]->
toXMLList( a_XMLList, indent2 );
409 std::string m_valueString;
417 std::string
const &
tag(
void )
const {
return( m_tag ); }
418 std::string
const &
label(
void )
const {
return( m_label ); }
419 std::string
const &
valueString(
void )
const {
return( m_valueString ); }
420 std::string
const &
unit(
void )
const {
return( m_unit ); }
422 void toXMLList( std::vector<std::string> &a_XMLList, std::string
const &a_indent1 )
const ;
443 double value(
void )
const {
return( m_value ); }
444 double value(
char const *a_unit )
const ;
445 double value( std::string
const &a_unit )
const {
return(
value( a_unit.c_str( ) ) ); }
465 int value(
void )
const {
return( m_value ); }
466 int value(
char const *a_unit )
const ;
467 int value( std::string
const &a_unit )
const {
return(
value( a_unit.c_str( ) ) ); }
484 std::string
value(
char const *a_unit )
const ;
485 std::string
value( std::string
const &a_unit )
const {
return(
value( a_unit.c_str( ) ) ); }
503 std::string
value(
char const *a_unit )
const ;
504 std::string
value( std::string
const &a_unit )
const {
return(
value( a_unit.c_str( ) ) ); }
528class PQ_suite :
public std::vector<PhysicalQuantity *> {
537 std::string &
label(
void ) {
return( m_label ); }
539 void toXMLList( std::vector<std::string> &a_XMLList, std::string
const &a_indent1 )
const ;
551 double m_probability;
552 double m_photonEmissionProbability;
553 double m_gammaEnergy;
554 std::string m_residualState;
557 NuclideGammaBranchInfo(
double a_probability,
double a_photonEmissionProbability,
double a_gammaEnergy, std::string
const &a_residualState );
579 double m_nuclearLevelEnergy;
580 double m_nuclearLevelEnergyWidth;
581 bool m_derivedCalculated;
582 double m_multiplicity;
583 double m_averageGammaEnergy;
584 std::vector<NuclideGammaBranchInfo> m_branches;
589 std::string
const &
state( )
const {
return( m_state ); }
590 int intid( )
const {
return( m_intid ); }
591 std::string
const &
kind( )
const {
return( m_kind ); }
600 std::vector<NuclideGammaBranchInfo>
const &
branches( )
const {
return( m_branches ); }
616 std::vector<NuclideGammaBranchStateInfo *> m_nuclideGammaBranchStateInfos;
622 std::size_t
size( )
const {
return( m_nuclideGammaBranchStateInfos.size( ) ); }
645 void setIntid(
int a_intid ) { m_intid = a_intid; }
652 std::string
const &
ID(
void )
const {
return( m_id ); }
653 std::size_t
index(
void )
const {
return( m_index ); }
654 void setIndex( std::size_t a_index ) { m_index = a_index; }
655 int intid( )
const {
return( m_intid ); }
712 std::string
const &
symbol( )
const {
return(
ID( ) ); }
735 int ID( )
const {
return( m_id ); }
736 std::string
const &
pid( )
const {
return( m_pid ); }
737 std::string
const &
label( )
const {
return( m_label ); }
739 void toXMLList( std::vector<std::string> &a_XMLList, std::string
const &a_indent1 )
const ;
760 int index(
void )
const {
return( m_index ); }
761 std::string
const &
mode( )
const {
return( m_mode ); }
764 void toXMLList( std::vector<std::string> &a_XMLList, std::string
const &a_indent1 )
const ;
779 PQ_suite m_photonEmissionProbabilities;
786 std::string
const &
label( )
const {
return( m_label ); }
787 std::string
const &
mode( )
const {
return( m_mode ); }
793 void toXMLList( std::vector<std::string> &a_XMLList, std::string
const &a_indent1 )
const ;
814 void toXMLList( std::vector<std::string> &a_XMLList, std::string
const &a_indent1 )
const ;
829 std::vector<std::string> m_ids;
830 std::vector<double> m_probabilities;
831 std::vector<double> m_photonEmissionProbabilities;
837 std::string
const &
kind( )
const {
return( m_kind ); }
838 int rows( )
const {
return( m_rows ); }
840 std::vector<std::string>
const &
ids( )
const {
return( m_ids ); }
841 std::vector<double>
const &
probabilities( )
const {
return( m_probabilities ); }
856 std::string m_baseId;
857 std::string m_family;
867 void setHasNucleus(
bool a_hasNucleus ) { m_hasNucleus = a_hasNucleus; }
873 std::string
const &
baseId(
void )
const {
return( m_baseId ); }
874 std::string
const &
family(
void )
const {
return( m_family ); }
879 virtual double massValue(
char const *a_unit )
const ;
889 void toXMLList( std::vector<std::string> &a_XMLList, std::string
const &a_indent1 )
const ;
891 virtual void toXMLListExtraElements( std::vector<std::string> &a_XMLList, std::string
const &a_indent1 )
const ;
918 std::string m_generation;
924 std::string
const &
generation(
void )
const {
return( m_generation ); }
966 std::string m_levelName;
975 int Z(
void )
const {
return( m_Z ); }
976 int A(
void )
const {
return( m_A ); }
977 std::string
const &
levelName( )
const {
return( m_levelName ); }
979 std::string
const &
atomsID(
void )
const ;
981 double massValue(
char const *a_unit )
const ;
983 double energy( std::string
const &a_unit )
const ;
985 virtual void toXMLListExtraElements( std::vector<std::string> &a_XMLList, std::string
const &a_indent1 )
const ;
1005 int Z(
void )
const;
1006 int A(
void )
const;
1007 std::string
const &
levelName(
void )
const {
return( m_nucleus.levelName( ) ); }
1009 int levelIndex(
void )
const {
return( m_nucleus.levelIndex( ) ); }
1010 std::string
const &
atomsID( )
const ;
1011 std::string
const &
kind( )
const {
return( m_gammaDecayData.kind( ) ); }
1018 double massValue(
char const *a_unit )
const ;
1019 double levelEnergy( std::string
const &a_unit )
const {
return( m_nucleus.energy( a_unit ) ); }
1023 bool a_alwaysAdd =
false )
const ;
1024 virtual void toXMLListExtraElements( std::vector<std::string> &a_XMLList, std::string
const &a_indent1 )
const ;
1046 int Z(
void )
const {
return( m_Z ); }
1047 int A(
void )
const {
return( m_A ); }
1051 void toXMLList( std::vector<std::string> &a_XMLList, std::string
const &a_indent1 )
const ;
1071 int Z(
void )
const {
return( m_Z ); }
1072 std::string
const &
name(
void )
const {
return( m_name ); }
1077 void toXMLList( std::vector<std::string> &a_XMLList, std::string
const &a_indent1 )
const ;
1090 std::size_t m_pidIndex;
1096 std::string
const &
pid(
void )
const {
return( m_pid ); }
1097 std::size_t
pidIndex(
void )
const {
return( m_pidIndex ); }
1100 void toXMLList( std::vector<std::string> &a_XMLList, std::string
const &a_indent1 )
const ;
1112 int m_metaStableIndex;
1119 void toXMLList( std::vector<std::string> &a_XMLList, std::string
const &a_indent1 )
const ;
1133 std::string m_version;
1135 std::map<std::string, std::size_t> m_idsMap;
1136 std::map<int, std::size_t> m_intidsMap;
1139 std::map<std::string, std::size_t> m_symbolMap;
1142 std::vector<Alias *> m_unresolvedAliases;
1143 std::vector<Alias *> m_aliases;
1153 Database( std::string
const &a_fileName );
1158 std::string
const &
name(
void )
const {
return( m_name ); }
1159 std::string
const &
version(
void )
const {
return( m_version ); }
1164 std::vector<Alias *> &
aliases( ) {
return( m_aliases ); }
1166 void addFile(
char const *a_fileName,
bool a_warnIfDuplicate );
1167 void addFile( std::string
const &a_fileName,
bool a_warnIfDuplicate );
1168 void addDatabase( std::string
const &a_string,
bool a_warnIfDuplicate );
1172 std::string::size_type
size(
void )
const {
return( m_list.size( ) ); }
1175 std::size_t
operator[]( std::string
const &a_id )
const ;
1176 template<
typename T> T
const &
get( std::string
const &a_id )
const ;
1177 template<
typename T> T
const &
get( std::size_t a_index )
const ;
1185 bool exists( std::string
const &a_id )
const ;
1186 bool exists( std::size_t a_index )
const ;
1202 std::string
final( std::string
const &a_id,
bool a_returnAtMetaStableAlias = false )
const ;
1203 std::size_t
final( std::size_t a_index,
bool a_returnAtMetaStableAlias = false )
const ;
1206 std::string
isotopeSymbol( std::string
const &a_id )
const ;
1207 int intid( std::string
const &a_id )
const ;
1208 int intid( std::size_t a_index )
const ;
1211 std::size_t
add(
Base *a_item );
1215 std::vector<std::string> &a_extraGammaBranchStates )
const ;
1218 double massValue( std::string
const &a_id, std::string
const &a_unit )
const ;
1220 void saveAs( std::string
const &a_fileName )
const ;
1221 void toXMLList( std::vector<std::string> &a_XMLList, std::string
const &a_indent1 )
const ;
1222 void print(
bool a_printIndices );
1236 if(
particle ==
nullptr )
throw std::range_error( std::string(
"particle not in database" ) );
1237 T
const *
object =
dynamic_cast<T
const *
>(
particle );
1238 if(
object ==
nullptr )
throw std::bad_cast( );
1253 auto index = (*this)[a_id];
1255 T
const *
object =
dynamic_cast<T
const *
>(
particle );
1256 if(
object ==
nullptr )
throw std::bad_cast( );
1264std::string
baseAntiQualifierFromID( std::string
const &a_id, std::string &a_anti, std::string *a_qualifier =
nullptr );
Alias(HAPI::Node const &a_node, Database *a_DB, Particle_class a_class=Particle_class::alias)
void toXMLList(std::vector< std::string > &a_XMLList, std::string const &a_indent1) const
void setPidIndex(std::size_t a_index)
std::size_t pidIndex(void) const
std::string const & pid(void) const
Baryon(HAPI::Node const &a_node, Database *a_DB, Database *a_parent)
Base(std::string const &a_id, Particle_class a_class)
void setIndex(std::size_t a_index)
std::size_t index(void) const
bool isUnorthodox() const
Particle_class Class(void) const
bool isGaugeBoson() const
bool isChemicalElement() const
virtual bool isParticle() const
std::string const & ID(void) const
bool isMetaStableAlias(void) const
std::string const & name(void) const
Suite< Isotope, ChemicalElement > const & isotopes() const
void calculateNuclideGammaBranchStateInfos(PoPI::Database const &a_pops, NuclideGammaBranchStateInfos &a_nuclideGammaBranchStateInfos) const
void toXMLList(std::vector< std::string > &a_XMLList, std::string const &a_indent1) const
ChemicalElement(HAPI::Node const &a_node, Database *a_DB, Database *a_parent)
virtual ~ChemicalElement()
std::vector< std::string > aliasReferences(std::string const &a_id)
std::string isotopeSymbol(std::string const &a_id) const
bool isMetaStableAlias(std::size_t a_index) const
bool existsIntid(int a_intid) const
std::size_t addSymbol(SymbolBase *a_item)
LUPI::FormatVersion const & formatVersion(void) const
void toXMLList(std::vector< std::string > &a_XMLList, std::string const &a_indent1) const
void addFile(char const *a_fileName, bool a_warnIfDuplicate)
std::string const & version(void) const
double massValue(std::string const &a_id, std::string const &a_unit) const
void print(bool a_printIndices)
ParticleList const & particleList() const
std::size_t operator[](std::string const &a_id) const
bool isParticle(std::size_t a_index) const
T const & get(std::string const &a_id) const
Particle const & particle(std::size_t a_index) const
bool exists(std::string const &a_id) const
void addAlias(Alias *a_alias)
bool isParticle(std::string const &a_id) const
void addDatabase(std::string const &a_string, bool a_warnIfDuplicate)
bool isMetaStableAlias(std::string const &a_id) const
void calculateNuclideGammaBranchStateInfos2(NuclideGammaBranchStateInfos &a_nuclideGammaBranchStateInfos) const
Particle const & particle(std::string const &a_id) const
std::size_t numberOfUnresolvedAliases()
void saveAs(std::string const &a_fileName) const
IDBase const & idBase(std::string const &a_id) const
std::string chemicalElementSymbol(std::string const &a_id) const
SymbolList const & symbolList()
Suite< ChemicalElement, Database > const & chemicalElements() const
std::size_t indexFromIntid(int a_intid) const
std::vector< std::string > unresolvedAliasIds() const
SymbolList symbolList() const
std::string::size_type size(void) const
bool isAlias(std::size_t a_index) const
std::string const & name(void) const
IDBase const & idBase(std::size_t &a_index) const
int intid(std::string const &a_id) const
void addDatabase(HAPI::Node const &a_database, bool a_warnIfDuplicate)
ParticleList const & list()
bool isAlias(std::string const &a_id) const
std::vector< Alias * > unresolvedAliases()
std::size_t add(Base *a_item)
void calculateNuclideGammaBranchStateInfos(NuclideGammaBranchStateInfos &a_nuclideGammaBranchStateInfos, Database const *a_pops2, std::vector< std::string > &a_extraGammaBranchStates) const
std::vector< Alias * > & aliases()
T const & get(std::size_t a_index) const
DecayData(HAPI::Node const &a_node)
Suite< DecayMode, DecayData > const & decayModes(void) const
void calculateNuclideGammaBranchStateInfo(PoPI::Database const &a_pops, NuclideGammaBranchStateInfo &a_nuclideGammaBranchStateInfo) const
void toXMLList(std::vector< std::string > &a_XMLList, std::string const &a_indent1) const
void calculateNuclideGammaBranchStateInfo(PoPI::Database const &a_pops, NuclideGammaBranchStateInfo &a_nuclideGammaBranchStateInfo) const
DecayMode(HAPI::Node const &a_node, DecayData const *a_decayData)
void toXMLList(std::vector< std::string > &a_XMLList, std::string const &a_indent1) const
std::string const & mode() const
PQ_suite const & photonEmissionProbabilities() const
std::string const & label() const
Suite< Decay, DecayMode > const & decayPath() const
PQ_suite const & probability() const
std::string const & mode() const
Suite< Product, Decay > const & products(void) const
void toXMLList(std::vector< std::string > &a_XMLList, std::string const &a_indent1) const
Decay(HAPI::Node const &a_node, DecayMode const *a_decayMode)
Exception(std::string const &a_message)
std::vector< double > const & probabilities() const
void calculateNuclideGammaBranchStateInfo(PoPI::Database const &a_pops, NuclideGammaBranchStateInfo &nuclideGammaBranchStateInfo) const
std::vector< std::string > const & ids() const
GammaDecayData(HAPI::Node const &a_node)
std::string const & kind() const
std::vector< double > const & photonEmissionProbabilities() const
GaugeBoson(HAPI::Node const &a_node, Database *a_DB, Database *a_parent)
double massValue2(Database const &a_DB, std::string const &a_unit) const
std::size_t addToDatabase(Database *a_DB)
IDBase(std::string const &a_id, Particle_class a_class)
void calculateNuclideGammaBranchStateInfos(PoPI::Database const &a_pops, NuclideGammaBranchStateInfos &a_nuclideGammaBranchStateInfos) const
Suite< Nuclide, Isotope > const & nuclides() const
ChemicalElement const * chemicalElement() const
Isotope(HAPI::Node const &a_node, Database *a_DB, ChemicalElement *a_parent)
void toXMLList(std::vector< std::string > &a_XMLList, std::string const &a_indent1) const
std::string const & generation(void) const
Lepton(HAPI::Node const &a_node, Database *a_DB, Database *a_parent)
virtual std::string toXMLListExtraAttributes(void) const
std::string const & atomsID(void) const
int levelIndex(void) const
std::string const & levelName() const
Nucleus(HAPI::Node const &node, Database *a_DB, Nuclide *a_parent)
virtual void toXMLListExtraElements(std::vector< std::string > &a_XMLList, std::string const &a_indent1) const
PQ_suite const & energy(void) const
double massValue(char const *a_unit) const
virtual std::string toXMLListExtraAttributes(void) const
Nuclide const * nuclide() const
double probability() const
NuclideGammaBranchInfo(double a_probability, double a_photonEmissionProbability, double a_gammaEnergy, std::string const &a_residualState)
double photonEmissionProbability() const
std::string const & residualState() const
double gammaEnergy() const
void setNuclearLevelEnergyWidth(double a_nuclearLevelEnergyWidth)
double averageGammaEnergy() const
void calculateDerivedData(NuclideGammaBranchStateInfos &a_nuclideGammaBranchStateInfos)
double nuclearLevelEnergyWidth() const
std::string const & state() const
std::string const & kind() const
double multiplicity() const
double nuclearLevelEnergy() const
void add(NuclideGammaBranchInfo const &a_nuclideGammaBranchInfo)
NuclideGammaBranchStateInfo(std::string const &a_state, int a_intid, std::string const &a_kind, double a_nuclearLevelEnergy)
std::vector< NuclideGammaBranchInfo > const & branches() const
bool derivedCalculated() const
~NuclideGammaBranchStateInfos()
std::vector< NuclideGammaBranchStateInfo * > & nuclideGammaBranchStateInfos()
NuclideGammaBranchStateInfos()
NuclideGammaBranchStateInfo * operator[](std::size_t a_index)
NuclideGammaBranchStateInfo const * operator[](std::size_t a_index) const
NuclideGammaBranchStateInfo * find(std::string const &a_state)
void add(NuclideGammaBranchStateInfo *a_nuclideGammaBranchStateInfo)
GammaDecayData const & gammaDecayData() const
void calculateNuclideGammaBranchStateInfos(PoPI::Database const &a_pops, NuclideGammaBranchStateInfos &a_nuclideGammaBranchStateInfos, bool a_alwaysAdd=false) const
Isotope const * isotope() const
int levelIndex(void) const
PQ_suite const & baseMass(void) const
virtual void toXMLListExtraElements(std::vector< std::string > &a_XMLList, std::string const &a_indent1) const
std::string const & levelName(void) const
double levelEnergy(std::string const &a_unit) const
std::string const & kind() const
std::string const & atomsID() const
Nucleus const & nucleus() const
double massValue(char const *a_unit) const
Nuclide(HAPI::Node const &a_node, Database *a_DB, Isotope *a_parent)
PQ_double(HAPI::Node const &a_node)
virtual std::string valueToString(void) const
double value(std::string const &a_unit) const
double value(char const *a_unit) const
std::string value(char const *a_unit) const
PQ_fraction(HAPI::Node const &a_node)
virtual std::string valueToString(void) const
std::string value(void) const
std::string value(std::string const &a_unit) const
PQ_integer(HAPI::Node const &a_node)
int value(char const *a_unit) const
int value(std::string const &a_unit) const
virtual std::string valueToString(void) const
PQ_shell(HAPI::Node const &a_node)
std::string value(std::string const &a_unit) const
std::string value(void) const
virtual std::string valueToString(void) const
std::string value(char const *a_unit) const
PQ_string(HAPI::Node const &a_node)
std::string & label(void)
PQ_suite(HAPI::Node const &a_node)
void toXMLList(std::vector< std::string > &a_XMLList, std::string const &a_indent1) const
std::string const & qualifier()
void print(bool a_terse, std::string const &a_indent="") const
std::string const & symbol()
ParseIdInfo(std::string const &a_id)
ParseIntidInfo(int a_intid, bool a_GRIN_mode=false)
bool isNuclearMetaStable()
Particle(HAPI::Node const &a_node, Particle_class a_class, std::string const &a_family, int a_hasNucleus=0)
virtual std::string toXMLListExtraAttributes(void) const
int hasNucleus(void) const
virtual double massValue(char const *a_unit) const
virtual PQ_suite const & mass(void) const
virtual void toXMLListExtraElements(std::vector< std::string > &a_XMLList, std::string const &a_indent1) const
PQ_suite const & charge() const
void toXMLList(std::vector< std::string > &a_XMLList, std::string const &a_indent1) const
std::string const & family(void) const
double massValue(std::string const &a_unit) const
PQ_suite const & halflife() const
PQ_suite const & spin() const
DecayData const & decayData() const
PQ_suite const & parity() const
std::string const & baseId(void) const
virtual ~PhysicalQuantity()
void toXMLList(std::vector< std::string > &a_XMLList, std::string const &a_indent1) const
std::string const & valueString(void) const
virtual std::string valueToString(void) const =0
PhysicalQuantity(HAPI::Node const &a_node, PQ_class a_class)
std::string const & label(void) const
std::string const & tag(void) const
PQ_class Class(void) const
std::string const & unit(void) const
void toXMLList(std::vector< std::string > &a_XMLList, std::string const &a_indent1) const
std::string const & label() const
std::string const & pid() const
Product(HAPI::Node const &a_node, Decay *a_DB)
std::string::size_type size(void) const
T & operator[](std::size_t a_index) const
Suite(std::string const &a_moniker)
void appendFromParentNode2(HAPI::Node const &a_node, T2 *a_parent)
void toXMLList(std::vector< std::string > &a_XMLList, std::string const &a_indent1) const
std::string const & moniker(void)
void appendFromParentNode(HAPI::Node const &a_node, Database *a_DB, T2 *a_parent)
SymbolBase(HAPI::Node const &a_node, Particle_class a_class)
std::string const & symbol() const
std::size_t addToSymbols(Database *a_DB)
Unorthodox(HAPI::Node const &a_node, Database *a_DB, Database *a_parent)
double getPhysicalQuantityOfSuiteAsDouble(PQ_suite const &a_suite, bool a_allowEmpty=false, double a_emptyValue=0.0)
int particleA(Base const &a_particle, bool a_isNeutronProtonANucleon=false)
std::vector< Base * > ParticleList
std::string specialParticleID(SpecialParticleID_mode a_mode, std::string const &a_id)
int particleMetaStableIndex(Base const &a_particle)
int particleZ(Base const &a_particle, bool a_isNeutronProtonANucleon=false)
int maximumChemicalElementZ()
double getPhysicalQuantityAsDouble(PhysicalQuantity const &a_physicalQuantity)
bool supportedFormat(LUPI::FormatVersion const &a_formatVersion)
std::map< std::string, std::string > supportedNucleusAliases
std::string const & chemicalElementSymbolFromZ(int a_Z)
int intidHelper(bool a_isAnti, Particle_class a_family, int a_SSSSSSS)
int particleZA(Base const &a_particle, bool a_isNeutronProtonANucleon=false)
std::vector< SymbolBase * > SymbolList
std::string chemicalElementInfoFromZ(int a_Z, bool a_wantSymbol, bool a_asNucleus=false)
bool compareSpecialParticleIDs(std::string const &a_id1, std::string const &a_id2)
void appendXMLEnd(std::vector< std::string > &a_XMLList, std::string const &a_label)
int family2Integer(Particle_class a_family)
std::string baseAntiQualifierFromID(std::string const &a_id, std::string &a_anti, std::string *a_qualifier=nullptr)
int Z_FromChemicalElementSymbol(std::string const &a_symbol)
static std::string const anti
static std::string const photon
static std::string const familiarPhoton
static std::string const neutron
static std::string const FissionProductENDL99125
static std::string const familiarTriton
static std::string const FissionProductENDL99120
static std::string const familiarHelion
static std::string const proton
static std::string const familiarAlpha
static std::string const familiarDeuteron
static std::string const electron
static int constexpr FissionProductENDL99120
static int constexpr photon
static int constexpr neutron
static int constexpr electron
static int constexpr FissionProductENDL99125