Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PoPs.h
Go to the documentation of this file.
1/*
2# <<BEGIN-copyright>>
3# <<END-copyright>>
4*/
5
6#ifndef PoPs_h_included
7#define PoPs_h_included
8
9/* Disable Effective C++ warnings in PoP code. */
10#if __INTEL_COMPILER > 1399
11#pragma warning( disable:593 )
12#endif
13
15/*
16* MPI stuff.
17*/
18#ifdef PoPs_MPI
19#include <mpi.h>
20#endif
21
22#if defined __cplusplus
23 extern "C" {
24 namespace GIDI {
25#endif
26
27#define POPS_VERSION_MAJOR 1
28#define POPS_VERSION_MINOR 0
29#define POPS_VERSION_PATCHLEVEL 5
30
31#define PoPs_packageSymbol "PoPs (properties of particles)"
32#define PoPs_packageName PoPs_packageSymbol " (properties of particles)"
33typedef struct PoP_s PoP;
34
38/*
39* In the following struct, 'index' is the index of the particle (proper or aliased) in the list of particles. If a particle
40* is a proper particle its properIndex is -1. Otherwise, it is the index of the aliased particle's proper particle. If a proper
41* particle does not have an aliased particle referring to it, aliasIndex is -1. If a proper particle has aliaes particles,
42* its aliasIndex is the index of its first aliased particle. If a second alias is added to a proper particle, then its first
43* aliased particle's aliasIndex is the index of that particle, and so on. The last aliased particle added has aliasIndex = -1.
44*/
45struct PoP_s { /* Any changes here must be reflected in functions PoP_initialize and PoP_copyParticle and in file PoPs_Bcast.c logic. */
46 int index, properIndex, aliasIndex;
48 char const *name;
49 int Z, A, l;
50 double mass; /* Mass to be added to base. */
51 char const *massUnit;
52};
53
54extern int PoPs_smr_ID;
55
56const char *PoPs_version( void );
57int PoPs_versionMajor( void );
58int PoPs_versionMinor( void );
59int PoPs_versionPatchLevel( void );
60
61int PoPs_register( void );
62int PoPs_readDatabase( statusMessageReporting *smr, char const *fileName );
66PoP *PoPs_addAliasIfNeeded( statusMessageReporting *smr, char const *name, char const *alias );
67int PoPs_numberOfParticle( void );
68int PoPs_particleIndex( char const *name );
69int PoPs_particleIndex_smr( statusMessageReporting *smr, char const *name, char const *file, int line, char const *func );
70char const *PoPs_getName_atIndex( statusMessageReporting *smr, int index );
71double PoPs_getMassInUnitOf( statusMessageReporting *smr, char const *name, char const *unit );
72double PoPs_getMassInUnitOf_atIndex( statusMessageReporting *smr, int index, char const *unit );
73enum PoPs_genre PoPs_getGenre( statusMessageReporting *smr, char const *name );
75int PoPs_getZ_A_l( statusMessageReporting *smr, char const *name, int *Z, int *A, int *l );
76int PoPs_getZ_A_l_atIndex( statusMessageReporting *smr, int index, int *Z, int *A, int *l );
77int PoPs_hasNucleus( statusMessageReporting *smr, char const *name, int protonIsNucleus );
78int PoPs_hasNucleus_atIndex( statusMessageReporting *smr, int index, int protonIsNucleus );
79char const *PoPs_getAtomsName( statusMessageReporting *smr, char const *name );
80char const *PoPs_getAtomsName_atIndex( statusMessageReporting *smr, int index );
81int PoPs_getAtomsIndex( statusMessageReporting *smr, char const *name );
83PoP *PoPs_getParticle_atIndex( int index );
84
85char const *PoPs_genreTokenToString( enum PoPs_genre genre );
86void PoPs_print( int sorted );
87void PoPs_write( FILE *f, int sorted );
88
91int PoP_release( PoP *pop );
92PoP *PoP_free( PoP *pop );
93int PoP_copyParticle( statusMessageReporting *smr, PoP *desc, PoP *src );
94PoP *PoP_makeParticle( statusMessageReporting *smr, enum PoPs_genre genre, char const *name, double mass, char const *massUnit );
95int PoP_setZ_A_l( statusMessageReporting *smr, PoP *pop, int Z, int A, int l );
96int PoP_getIndex( PoP *pop );
97char const *PoP_getName( PoP *pop );
98
99int PoPs_particleReadDatabase( statusMessageReporting *smr, char const *name );
101int PoPs_particleLoadInfo( statusMessageReporting *smr, const char *name, PoP *pop );
102
103double PoP_getMassInUnitOf( statusMessageReporting *smr, PoP *pop, char const *unit );
104
105PoP *PoP_makeAlias( statusMessageReporting *smr, char const *name, char const *alias );
106
107int PoPs_unitConversionRatio( char const *_from, char const *_to, double *ratio );
108
109int lPoPs_addParticleIfNeeded( statusMessageReporting *smr, char const *name, char const *special );
110
111/*
112* MPI stuff.
113*/
114#ifdef PoPs_MPI
115int PoPs_Bcast( statusMessageReporting *smr, MPI_Comm comm, int bossRank );
116#endif
117
118/* Use the next function with caution as it is only for initial testing of the package and will soon be gone. */
119int PoPs_setBDFLS_File( char const *name );
120
121#if defined __cplusplus
122 }
123 }
124#endif
125
126#endif /* End of PoPs_h_included. */
int PoPs_setBDFLS_File(char const *name)
Definition: PoPs_data.cc:121
char const * PoPs_getAtomsName_atIndex(statusMessageReporting *smr, int index)
Definition: PoPs.cc:387
int PoPs_particleIndex_smr(statusMessageReporting *smr, char const *name, char const *file, int line, char const *func)
Definition: PoPs.cc:216
void PoPs_write(FILE *f, int sorted)
Definition: PoPs.cc:462
PoP * PoP_new(statusMessageReporting *smr)
Definition: PoPs.cc:522
int PoPs_getAtomsIndex_atIndex(statusMessageReporting *smr, int index)
Definition: PoPs.cc:407
int PoPs_getZ_A_l(statusMessageReporting *smr, char const *name, int *Z, int *A, int *l)
Definition: PoPs.cc:325
PoPs_errorTokens
Definition: PoPs.h:35
@ PoPs_errorToken_Okay
Definition: PoPs.h:35
@ PoPs_errorToken_badIndex
Definition: PoPs.h:35
@ PoPs_errorToken_badName
Definition: PoPs.h:35
@ PoPs_errorToken_badUnitConversion
Definition: PoPs.h:35
int PoP_getIndex(PoP *pop)
Definition: PoPs.cc:612
char const * PoPs_getName_atIndex(statusMessageReporting *smr, int index)
Definition: PoPs.cc:275
int PoPs_release(statusMessageReporting *smr)
Definition: PoPs.cc:88
int PoPs_particleIndex(char const *name)
Definition: PoPs.cc:204
int PoPs_versionMajor(void)
Definition: PoPs.cc:67
int PoP_release(PoP *pop)
Definition: PoPs.cc:549
char const * PoPs_genreTokenToString(enum PoPs_genre genre)
Definition: PoPs.cc:446
enum PoPs_genre PoPs_getGenre(statusMessageReporting *smr, char const *name)
Definition: PoPs.cc:301
int lPoPs_addParticleIfNeeded(statusMessageReporting *smr, char const *name, char const *special)
Definition: lPoPs.cc:36
int PoP_copyParticle(statusMessageReporting *smr, PoP *desc, PoP *src)
Definition: PoPs.cc:567
int PoPs_getAtomsIndex(statusMessageReporting *smr, char const *name)
Definition: PoPs.cc:397
double PoPs_getMassInUnitOf_atIndex(statusMessageReporting *smr, int index, char const *unit)
Definition: PoPs.cc:286
PoP * PoPs_particleCreateLoadInfo(statusMessageReporting *smr, const char *name)
Definition: PoPs_data.cc:61
int PoPs_particleLoadInfo(statusMessageReporting *smr, const char *name, PoP *pop)
Definition: PoPs_data.cc:73
PoP * PoP_makeAlias(statusMessageReporting *smr, char const *name, char const *alias)
Definition: PoPs.cc:647
int PoPs_readDatabase(statusMessageReporting *smr, char const *fileName)
Definition: PoPs.cc:81
int PoP_setZ_A_l(statusMessageReporting *smr, PoP *pop, int Z, int A, int l)
Definition: PoPs.cc:602
int PoPs_versionMinor(void)
Definition: PoPs.cc:68
PoP * PoPs_addAliasIfNeeded(statusMessageReporting *smr, char const *name, char const *alias)
Definition: PoPs.cc:179
int PoPs_versionPatchLevel(void)
Definition: PoPs.cc:69
int PoPs_getZ_A_l_atIndex(statusMessageReporting *smr, int index, int *Z, int *A, int *l)
Definition: PoPs.cc:335
int PoPs_numberOfParticle(void)
Definition: PoPs.cc:197
int PoPs_smr_ID
Definition: PoPs.cc:35
char const * PoPs_getAtomsName(statusMessageReporting *smr, char const *name)
Definition: PoPs.cc:377
PoP * PoPs_copyAddParticleIfNeeded(statusMessageReporting *smr, PoP *pop)
Definition: PoPs.cc:153
int PoPs_hasNucleus(statusMessageReporting *smr, char const *name, int protonIsNucleus)
Definition: PoPs.cc:349
int PoPs_register(void)
Definition: PoPs.cc:73
double PoP_getMassInUnitOf(statusMessageReporting *smr, PoP *pop, char const *unit)
Definition: PoPs.cc:626
int PoP_initialize(statusMessageReporting *smr, PoP *pop)
Definition: PoPs.cc:533
const char * PoPs_version(void)
Definition: PoPs.cc:59
int PoPs_particleReadDatabase(statusMessageReporting *smr, char const *name)
Definition: PoPs_data.cc:36
PoP * PoPs_addParticleIfNeeded(statusMessageReporting *smr, PoP *pop)
Definition: PoPs.cc:113
int PoPs_unitConversionRatio(char const *_from, char const *_to, double *ratio)
Definition: PoPs.cc:748
enum PoPs_genre PoPs_getGenre_atIndex(statusMessageReporting *smr, int index)
Definition: PoPs.cc:311
PoP * PoPs_getParticle_atIndex(int index)
Definition: PoPs.cc:438
char const * PoP_getName(PoP *pop)
Definition: PoPs.cc:619
PoP * PoP_makeParticle(statusMessageReporting *smr, enum PoPs_genre genre, char const *name, double mass, char const *massUnit)
Definition: PoPs.cc:585
PoPs_genre
Definition: PoPs.h:36
@ PoPs_genre_atom
Definition: PoPs.h:37
@ PoPs_genre_photon
Definition: PoPs.h:36
@ PoPs_genre_nucleus
Definition: PoPs.h:37
@ PoPs_genre_alias
Definition: PoPs.h:36
@ PoPs_genre_unknown
Definition: PoPs.h:36
@ PoPs_genre_invalid
Definition: PoPs.h:36
@ PoPs_genre_lepton
Definition: PoPs.h:36
@ PoPs_genre_baryon
Definition: PoPs.h:37
@ PoPs_genre_quark
Definition: PoPs.h:37
@ PoPs_genre_meson
Definition: PoPs.h:37
double PoPs_getMassInUnitOf(statusMessageReporting *smr, char const *name, char const *unit)
Definition: PoPs.cc:265
int PoPs_hasNucleus_atIndex(statusMessageReporting *smr, int index, int protonIsNucleus)
Definition: PoPs.cc:359
PoP * PoP_free(PoP *pop)
Definition: PoPs.cc:558
void PoPs_print(int sorted)
Definition: PoPs.cc:455
void * MPI_Comm
to pass hd2mpi ////////////////////////////////////////////
Definition: dummy_mpi.h:13
Definition: PoPs.h:45
int aliasIndex
Definition: PoPs.h:46
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 A
Definition: PoPs.h:49