Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
GIDI::ParticleInfo Class Reference

#include <GIDI.hpp>

Public Member Functions

 ParticleInfo (std::string const &a_id, std::string const &a_pid, double a_mass, double a_excitationEnergy=0.0)
 ParticleInfo (std::string const &a_id, PoPI::Database const &a_globalPoPs, PoPI::Database const &a_internalPoPs, bool a_requiredInGlobalPoPs)
 ParticleInfo (ParticleInfo const &a_particleInfo)
ParticleInfooperator= (ParticleInfo const &a_rhs)
std::string const & ID () const
std::string const & qualifier () const
std::string const & pid () const
bool isAlias () const
PhysicalQuantity const & mass () const
PhysicalQuantity const & excitationEnergy () const
double mass (std::string const &a_unit) const

Static Public Member Functions

static std::string const IDPortion (std::string const &a_id)
static std::string const qualifierPortion (std::string const &a_id)

Detailed Description

This class stores an abridged set of particle information from PoPI::Database as needed by GIDI.

Note, the stored mass does not include the mass associated with nuclear excitation energy. This addition mass is store in m_excitationEnergy.

Definition at line 741 of file GIDI.hpp.

Constructor & Destructor Documentation

◆ ParticleInfo() [1/3]

GIDI::ParticleInfo::ParticleInfo ( std::string const & a_ID,
std::string const & a_pid,
double a_mass,
double a_excitationEnergy = 0.0 )
Parameters
a_ID[in] The particle's PoPs ID.
a_pid[in] The same as a_id unless particle is an alias, then the final particle's id.
a_mass[in] The particle's groud state mass. For nuclide and nucleus, this is the
a_excitationEnergy[in] The particle's nuclear excitation energy.

Definition at line 28 of file GIDI_particleInfo.cc.

28 :
29 m_id( ParticleInfo::IDPortion( a_ID ) ),
30 m_qualifier( ParticleInfo::qualifierPortion( a_ID ) ),
31 m_pid( a_pid ),
32 m_mass( a_mass, "amu" ),
33 m_excitationEnergy( a_excitationEnergy, "MeV" ) {
34
35}
static std::string const qualifierPortion(std::string const &a_id)
static std::string const IDPortion(std::string const &a_id)

Referenced by operator=(), ParticleInfo(), ParticleInfo(), and ParticleInfo().

◆ ParticleInfo() [2/3]

GIDI::ParticleInfo::ParticleInfo ( std::string const & a_ID,
PoPI::Database const & a_pops,
PoPI::Database const & a_internalPoPs,
bool a_requiredInGlobalPoPs )
Parameters
a_ID[in] The particle's PoPs ID.
a_pops[in] A PoPI::Database instance used to get particle indices and possibly other particle information.
a_internalPoPs[in] The internal PoPI::Database instance used to get particle indices and possibly other particle information. This is the <PoPs> node under the <reactionSuite> node.
a_requiredInGlobalPoPs[in] If true, the ID must be in a_pops.

Definition at line 45 of file GIDI_particleInfo.cc.

45 :
46 m_id( ParticleInfo::IDPortion( a_ID ) ),
47 m_qualifier( ParticleInfo::qualifierPortion( a_ID ) ),
48 m_pid( "" ),
49 m_mass( -1, "amu" ),
50 m_excitationEnergy( 0, "MeV" ) {
51
52 PoPI::Base const *particleOrAlias = nullptr; // Need to get the mass and nuclear excitation energy. Favor from internal PoPs if present.
53 std::string energyUnit( "MeV" );
54
55 if( a_pops.exists( m_id ) ) {
56 particleOrAlias = &a_pops.get<PoPI::Base>( m_id );
57 if( particleOrAlias->isAlias( ) ) {
58 PoPI::Alias const *alias = static_cast<PoPI::Alias const *>( particleOrAlias );
59 particleOrAlias = &a_pops.get<PoPI::Base>( alias->pid( ) );
60 }
61 m_pid = particleOrAlias->ID( ); }
62 else {
63 if( a_requiredInGlobalPoPs ) throw Exception( "ParticleInfo::ParticleInfo: required particle ID not in global PoPs: " + m_id );
64 }
65
66 if( a_internalPoPs.exists( m_id ) ) {
67 particleOrAlias = &a_internalPoPs.get<PoPI::Base>( m_id );
68 if( particleOrAlias->isAlias( ) ) {
69 PoPI::Alias const *alias = static_cast<PoPI::Alias const *>( particleOrAlias );
70 particleOrAlias = &a_pops.get<PoPI::Base>( alias->pidIndex( ) );
71 }
72 }
73
74 if( particleOrAlias == nullptr ) throw Exception( "ParticleInfo::ParticleInfo: particle ID not in global PoPs: " + m_id );
75
76 if( particleOrAlias->isParticle( ) ) {
77 PoPI::Particle const &particle = static_cast<PoPI::Particle const &>( *particleOrAlias );
78
79 try {
80 m_mass = PhysicalQuantity( particle.massValue( "amu" ), "amu" ); }
81 catch (...) {
82 m_mass = PhysicalQuantity( -1, "amu" );
83 }
84
85 if( particle.isNuclide( ) ) {
86 PoPI::Nuclide const &nuclide = static_cast<PoPI::Nuclide const &>( particle );
87
88 m_excitationEnergy = PhysicalQuantity( nuclide.levelEnergy( energyUnit ), energyUnit );
89 }
90 }
91}
bool isAlias(void) const
Definition PoPI.hpp:658
bool isNuclide() const
Definition PoPI.hpp:668
virtual bool isParticle() const
Definition PoPI.hpp:657
std::string const & ID(void) const
Definition PoPI.hpp:652
virtual double massValue(char const *a_unit) const

◆ ParticleInfo() [3/3]

GIDI::ParticleInfo::ParticleInfo ( ParticleInfo const & a_particleInfo)

Copy constructor for ParticleInfo.

Parameters
a_particleInfo[in] ParticleInfo instance to copy.

Definition at line 99 of file GIDI_particleInfo.cc.

99 :
100 m_id( a_particleInfo.ID( ) ),
101 m_qualifier( a_particleInfo.qualifier( ) ),
102 m_pid( a_particleInfo.pid( ) ),
103 m_mass( a_particleInfo.mass( ) ),
104 m_excitationEnergy( a_particleInfo.excitationEnergy( ) ) {
105
106}

Member Function Documentation

◆ excitationEnergy()

PhysicalQuantity const & GIDI::ParticleInfo::excitationEnergy ( ) const
inline

Returns a const reference to m_excitationEnergy member.

Definition at line 766 of file GIDI.hpp.

Referenced by operator=(), and ParticleInfo().

◆ ID()

std::string const & GIDI::ParticleInfo::ID ( ) const
inline

◆ IDPortion()

std::string const GIDI::ParticleInfo::IDPortion ( std::string const & a_ID)
static

This static method returns the non-qualifier portion of a particle's id. For example, for the id "Th232{1s1/2}", the string "Th232" is returned.

Parameters
a_ID[in] The id's whose non-qualifier portion is to be returned.
Returns
The non-qualifier portion of the particle's id.

Definition at line 150 of file GIDI_particleInfo.cc.

150 {
151
152 std::string::size_type index1 = a_ID.find( "{" );
153
154 std::string ID( a_ID, 0, index1 );
155 return( ID );
156}
std::string const & ID() const
Definition GIDI.hpp:760

Referenced by ParticleInfo(), and ParticleInfo().

◆ isAlias()

bool GIDI::ParticleInfo::isAlias ( ) const
inline

Returns true if particle id is an alias and false otherwise.

Definition at line 763 of file GIDI.hpp.

◆ mass() [1/2]

PhysicalQuantity const & GIDI::ParticleInfo::mass ( ) const
inline

Returns a const reference to m_mass member.

Definition at line 765 of file GIDI.hpp.

Referenced by operator=(), and ParticleInfo().

◆ mass() [2/2]

double GIDI::ParticleInfo::mass ( std::string const & a_unit) const

◆ operator=()

ParticleInfo & GIDI::ParticleInfo::operator= ( ParticleInfo const & a_rhs)

The assignment operator. This method sets the members of this to those of a_rhs except for those not set by base classes.

Parameters
a_rhs[in] Instance whose member are used to set the members of this.

Definition at line 115 of file GIDI_particleInfo.cc.

115 {
116
117 if( this != &a_rhs ) {
118 m_id = a_rhs.ID( );
119 m_qualifier = a_rhs.qualifier( );
120 m_pid = a_rhs.pid( );
121 m_mass = a_rhs.mass( );
122 m_excitationEnergy = a_rhs.excitationEnergy( );
123 }
124
125 return( *this );
126}

◆ pid()

std::string const & GIDI::ParticleInfo::pid ( ) const
inline

Returns a const reference to m_pid member.

Definition at line 762 of file GIDI.hpp.

Referenced by GIDI::GRIN::GRIN_continuumGammas::GRIN_continuumGammas(), MCGIDI::MultiGroupHash::MultiGroupHash(), operator=(), and ParticleInfo().

◆ qualifier()

std::string const & GIDI::ParticleInfo::qualifier ( ) const
inline

Returns a const reference to *m_qualifier**.

Definition at line 761 of file GIDI.hpp.

Referenced by operator=(), ParticleInfo(), and qualifierPortion().

◆ qualifierPortion()

std::string const GIDI::ParticleInfo::qualifierPortion ( std::string const & a_ID)
static

This static method returns the qualifier portion of a particle's id. For example, for the id "Th232{1s1/2}", the string "1s1/2" is returned.

Parameters
a_ID[in] The id's whose qualifier portion is to be returned.
Returns
The non-qualifier portion of the particle's id.

Definition at line 166 of file GIDI_particleInfo.cc.

166 {
167
168 std::string::size_type index1 = a_ID.find( "{" );
169
170 std::string qualifier( "" );
171 if( index1 == std::string::npos ) return( qualifier );
172
173 std::string::size_type index2 = a_ID.find( "}" );
174 qualifier = std::string( a_ID, index1 + 1, index2 - index1 - 1 );
175
176 return( qualifier );
177}
std::string const & qualifier() const
Definition GIDI.hpp:761

Referenced by ParticleInfo(), and ParticleInfo().


The documentation for this class was generated from the following files: