Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
PoPs_data.cc File Reference
#include <string.h>
#include "PoPs.h"
#include "PoPs_private.h"
#include "PoPs_data.h"

Go to the source code of this file.

Functions

int PoPs_particleReadDatabase (statusMessageReporting *smr, char const *)
 
PoPPoPs_particleCreateLoadInfo (statusMessageReporting *smr, const char *name)
 
int PoPs_particleLoadInfo (statusMessageReporting *smr, const char *name, PoP *pop)
 
int PoPs_setBDFLS_File (char const *name)
 

Function Documentation

◆ PoPs_particleCreateLoadInfo()

PoP * PoPs_particleCreateLoadInfo ( statusMessageReporting smr,
const char *  name 
)

Definition at line 61 of file PoPs_data.cc.

61 {
62
63 PoP *pop;
64
65 if( ( pop = PoP_new( smr ) ) != NULL ) {
66 if( PoPs_particleLoadInfo( smr, name, pop ) != 0 ) pop = PoP_free( pop );
67 }
68 return( pop );
69}
PoP * PoP_new(statusMessageReporting *smr)
Definition: PoPs.cc:522
PoP * PoP_free(PoP *pop)
Definition: PoPs.cc:558
int PoPs_particleLoadInfo(statusMessageReporting *smr, const char *name, PoP *pop)
Definition: PoPs_data.cc:73
Definition: PoPs.h:45

Referenced by lPoPs_addParticleIfNeeded(), and PoPs_particleReadDatabase().

◆ PoPs_particleLoadInfo()

int PoPs_particleLoadInfo ( statusMessageReporting smr,
const char *  name,
PoP pop 
)

Definition at line 73 of file PoPs_data.cc.

73 {
74
75 int i, n = sizeof( PoPDatas ) / sizeof( PoPDatas[0] );
76
77 if( ( pop->name = smr_allocateCopyString2( smr, name, "name" ) ) == NULL ) return( -1 );
78 for( i = 0; i < n; i++ ) {
79 if( strcmp( PoPDatas[i].name, name ) == 0 ) {
80 pop->genre = PoPDatas[i].genre;
81 pop->Z = PoPDatas[i].Z;
82 pop->A = 0;
83 if( PoPDatas[i].N >= 0 ) pop->A = pop->Z + PoPDatas[i].N;
84 pop->l = PoPDatas[i].nuclearLevel;
85 pop->mass = PoPs_getBDFLS_mass( name, pop, PoPDatas[i].mass );
86 pop->massUnit = unitsDB_addUnitIfNeeded( smr, "amu" );
87 return( 0 );
88 }
89 }
90 smr_freeMemory( (void **) &(pop->name) );
91 smr_setReportError2( smr, smr_unknownID, 1, "particle %s not in database", name );
92 return( -1 );
93}
char const * unitsDB_addUnitIfNeeded(statusMessageReporting *smr, char const *unit)
Definition: PoPs.cc:700
#define N
Definition: crc32.c:56
#define smr_setReportError2(smr, libraryID, code, fmt,...)
#define smr_allocateCopyString2(smr, s, forItem)
void * smr_freeMemory(void **p)
#define smr_unknownID
enum PoPs_genre genre
Definition: PoPs_data.h:181
int nuclearLevel
Definition: PoPs_data.h:182
int Z
Definition: PoPs.h:49
char const * massUnit
Definition: PoPs.h:51
enum PoPs_genre genre
Definition: PoPs.h:47
char const * name
Definition: PoPs.h:48
double mass
Definition: PoPs.h:50
int l
Definition: PoPs.h:49
int A
Definition: PoPs.h:49

Referenced by PoPs_particleCreateLoadInfo().

◆ PoPs_particleReadDatabase()

int PoPs_particleReadDatabase ( statusMessageReporting smr,
char const *  name 
)

Definition at line 36 of file PoPs_data.cc.

36 {
37
38 int i1, n1 = sizeof( PoPDatas ) / sizeof( PoPDatas[0] );
39 PoP *pop;
40 char ZAName[32];
41
42 for( i1 = 0; i1 < n1; ++i1 ) {
43 if( ( pop = PoPs_particleCreateLoadInfo( smr, PoPDatas[i1].name ) ) == NULL ) return( 1 );
44 if( PoPs_addParticleIfNeeded( smr, pop ) == pop ) {
45 if( ( pop->genre == PoPs_genre_atom ) && ( pop->Z < 110 ) ) {
46 snprintf( ZAName, sizeof ZAName, "%d%.3d", pop->Z, pop->A );
47 if( lPoPs_addParticleIfNeeded( smr, ZAName, "LLNL" ) < 0 ) return( 1 );
48 } }
49 else {
50 PoP_free( pop );
51 }
52 if( smr_isOk( smr ) == 0 ) return( 1 );
53 }
54 if( lPoPs_addParticleIfNeeded( smr, "gamma", "LLNL" ) < 0 ) return( 1 );
55 if( lPoPs_addParticleIfNeeded( smr, "g", "LLNL" ) < 0 ) return( 1 );
56 return( 0 );
57}
int lPoPs_addParticleIfNeeded(statusMessageReporting *smr, char const *name, char const *special)
Definition: lPoPs.cc:36
PoP * PoPs_addParticleIfNeeded(statusMessageReporting *smr, PoP *pop)
Definition: PoPs.cc:113
@ PoPs_genre_atom
Definition: PoPs.h:37
PoP * PoPs_particleCreateLoadInfo(statusMessageReporting *smr, const char *name)
Definition: PoPs_data.cc:61
int smr_isOk(statusMessageReporting *smr)

Referenced by PoPs_readDatabase().

◆ PoPs_setBDFLS_File()

int PoPs_setBDFLS_File ( char const *  name)

Definition at line 121 of file PoPs_data.cc.

121 {
122
123#ifdef POPS_BDFLS
124
125 cbdfls_file *p;
126 cbdflsErrors Error;
127
128 if( BDFLS_Data != NULL ) cbdflsRelease( (cbdfls_file *) BDFLS_Data );
129 BDFLS_Data = NULL;
130 if( name != NULL ) {
131 if( ( p = cbdflsOpen( name, &Error ) ) == NULL ) return( 1 );
132 BDFLS_Data = (void *) p;
133 }
134#else
135 if( name == NULL ) BDFLS_Data = NULL; /* Do something with name so compilers do not complain. */
136#endif
137 return( 0 );
138}