Geant4  10.02.p01
PoPs.cc File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "PoPs.h"
#include "PoPs_private.h"
+ Include dependency graph for PoPs.cc:

Go to the source code of this file.

Classes

struct  unitConversions_s
 

Macros

#define incrementalSize   1000
 
#define MeV2eV   1e6
 
#define MeV2keV   1e3
 
#define AMU2MeV   931.494028
 
#define AMU2eV   ( MeV2eV * 931.494028 )
 
#define K2MeV   8.6173856922566752e-11
 
#define K2eV   ( MeV2eV * K2MeV )
 

Typedefs

typedef struct unitConversions_s unitConversions
 

Functions

static int PoPs_particleProperIndex (int index)
 
static int PoPs_sortedParticleIndex (char const *name)
 
static int unitsDB_release (void)
 
const char * PoPs_version (void)
 
int PoPs_versionMajor (void)
 
int PoPs_versionMinor (void)
 
int PoPs_versionPatchLevel (void)
 
int PoPs_register (void)
 
int PoPs_readDatabase (statusMessageReporting *smr, char const *fileName)
 
int PoPs_release (statusMessageReporting *smr)
 
int PoPs_releasePrivate (statusMessageReporting *)
 
PoP * PoPs_addParticleIfNeeded (statusMessageReporting *smr, PoP *pop)
 
PoP * PoPs_copyAddParticleIfNeeded (statusMessageReporting *smr, PoP *pop)
 
PoP * PoPs_addAliasIfNeeded (statusMessageReporting *smr, char const *name, char const *alias)
 
int PoPs_numberOfParticle (void)
 
int PoPs_particleIndex (char const *name)
 
int PoPs_particleIndex_smr (statusMessageReporting *smr, char const *name, char const *file, int line, char const *func)
 
double PoPs_getMassInUnitOf (statusMessageReporting *smr, char const *name, char const *unit)
 
char const * PoPs_getName_atIndex (statusMessageReporting *smr, int index)
 
double PoPs_getMassInUnitOf_atIndex (statusMessageReporting *smr, int index, char const *unit)
 
enum PoPs_genre PoPs_getGenre (statusMessageReporting *smr, char const *name)
 
enum PoPs_genre PoPs_getGenre_atIndex (statusMessageReporting *smr, int index)
 
int PoPs_getZ_A_l (statusMessageReporting *smr, char const *name, int *Z, int *A, int *l)
 
int PoPs_getZ_A_l_atIndex (statusMessageReporting *smr, int index, int *Z, int *A, int *l)
 
int PoPs_hasNucleus (statusMessageReporting *smr, char const *name, int protonIsNucleus)
 
int PoPs_hasNucleus_atIndex (statusMessageReporting *smr, int index, int protonIsNucleus)
 
char const * PoPs_getAtomsName (statusMessageReporting *smr, char const *name)
 
char const * PoPs_getAtomsName_atIndex (statusMessageReporting *smr, int index)
 
int PoPs_getAtomsIndex (statusMessageReporting *smr, char const *name)
 
int PoPs_getAtomsIndex_atIndex (statusMessageReporting *smr, int index)
 
PoP * PoPs_getParticle_atIndex (int index)
 
char const * PoPs_genreTokenToString (enum PoPs_genre genre)
 
void PoPs_print (int sorted)
 
void PoPs_write (FILE *f, int sorted)
 
PoP * PoP_new (statusMessageReporting *smr)
 
int PoP_initialize (statusMessageReporting *, PoP *pop)
 
int PoP_release (PoP *pop)
 
PoP * PoP_free (PoP *pop)
 
int PoP_copyParticle (statusMessageReporting *smr, PoP *desc, PoP *src)
 
PoP * PoP_makeParticle (statusMessageReporting *smr, enum PoPs_genre genre, char const *name, double mass, char const *massUnit)
 
int PoP_setZ_A_l (statusMessageReporting *, PoP *pop, int Z, int A, int l)
 
int PoP_getIndex (PoP *pop)
 
char const * PoP_getName (PoP *pop)
 
double PoP_getMassInUnitOf (statusMessageReporting *smr, PoP *pop, char const *unit)
 
PoP * PoP_makeAlias (statusMessageReporting *smr, char const *name, char const *alias)
 
char const * unitsDB_addUnitIfNeeded (statusMessageReporting *smr, char const *unit)
 
int unitsDB_index (statusMessageReporting *, char const *unit)
 
char const * unitsDB_stringFromIndex (statusMessageReporting *smr, int index)
 
int PoPs_unitConversionRatio (char const *_from, char const *_to, double *ratio)
 

Variables

int PoPs_smr_ID = smr_unknownID
 
static int referenceCount = 0
 
static char versionStr [64] = ""
 
static unitsDB unitsRoot = { 0, 0, NULL }
 
static PoPs popsRoot = { 0, 0, NULL, NULL }
 
static unitConversions conversions []
 
static char const * PoPs_genreStrings [] = { "invalid", "unknown", "alias", "photon", "lepton", "quark", "meson", "baryon", "nucleus", "atom" }
 

Macro Definition Documentation

#define AMU2eV   ( MeV2eV * 931.494028 )

Definition at line 23 of file PoPs.cc.

#define AMU2MeV   931.494028

Definition at line 22 of file PoPs.cc.

#define incrementalSize   1000

Definition at line 18 of file PoPs.cc.

Referenced by PoPs_addParticleIfNeeded().

#define K2eV   ( MeV2eV * K2MeV )

Definition at line 25 of file PoPs.cc.

#define K2MeV   8.6173856922566752e-11

Definition at line 24 of file PoPs.cc.

#define MeV2eV   1e6

Definition at line 20 of file PoPs.cc.

#define MeV2keV   1e3

Definition at line 21 of file PoPs.cc.

Typedef Documentation

Definition at line 27 of file PoPs.cc.

Function Documentation

int PoP_copyParticle ( statusMessageReporting *  smr,
PoP *  desc,
PoP *  src 
)

Definition at line 567 of file PoPs.cc.

Referenced by PoPs_copyAddParticleIfNeeded().

+ Here is the caller graph for this function:

PoP* PoP_free ( PoP *  pop)

Definition at line 558 of file PoPs.cc.

References PoP_release(), and smr_freeMemory().

Referenced by lPoPs_addParticleIfNeeded(), PoP_makeAlias(), PoP_makeParticle(), PoP_new(), PoPs_addAliasIfNeeded(), PoPs_copyAddParticleIfNeeded(), PoPs_particleCreateLoadInfo(), PoPs_particleReadDatabase(), and PoPs_releasePrivate().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int PoP_getIndex ( PoP *  pop)

Definition at line 612 of file PoPs.cc.

double PoP_getMassInUnitOf ( statusMessageReporting *  smr,
PoP *  pop,
char const *  unit 
)

Definition at line 626 of file PoPs.cc.

References PoPs_unitConversionRatio().

Referenced by PoPs_getMassInUnitOf_atIndex().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

char const* PoP_getName ( PoP *  pop)

Definition at line 619 of file PoPs.cc.

int PoP_initialize ( statusMessageReporting *  ,
PoP *  pop 
)

Definition at line 533 of file PoPs.cc.

Referenced by PoP_new(), and PoP_release().

+ Here is the caller graph for this function:

PoP* PoP_makeAlias ( statusMessageReporting *  smr,
char const *  name,
char const *  alias 
)

Definition at line 647 of file PoPs.cc.

References PoP_free(), PoP_new(), and PoPs_particleIndex().

Referenced by lPoPs_addParticleIfNeeded(), and PoPs_addAliasIfNeeded().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

PoP* PoP_makeParticle ( statusMessageReporting *  smr,
enum PoPs_genre  genre,
char const *  name,
double  mass,
char const *  massUnit 
)

Definition at line 585 of file PoPs.cc.

References PoP_free(), PoP_new(), and unitsDB_addUnitIfNeeded().

+ Here is the call graph for this function:

PoP* PoP_new ( statusMessageReporting *  smr)

Definition at line 522 of file PoPs.cc.

References PoP_free(), and PoP_initialize().

Referenced by PoP_makeAlias(), PoP_makeParticle(), and PoPs_particleCreateLoadInfo().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int PoP_release ( PoP *  pop)

Definition at line 549 of file PoPs.cc.

References PoP_initialize(), and smr_freeMemory().

Referenced by PoP_free().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int PoP_setZ_A_l ( statusMessageReporting *  ,
PoP *  pop,
int  Z,
int  A,
int  l 
)

Definition at line 602 of file PoPs.cc.

References A().

+ Here is the call graph for this function:

PoP* PoPs_addAliasIfNeeded ( statusMessageReporting *  smr,
char const *  name,
char const *  alias 
)

Definition at line 179 of file PoPs.cc.

References PoP_free(), PoP_makeAlias(), and PoPs_addParticleIfNeeded().

Referenced by MCGIDI_map_initialize().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

PoP* PoPs_addParticleIfNeeded ( statusMessageReporting *  smr,
PoP *  pop 
)

Definition at line 113 of file PoPs.cc.

References incrementalSize, PoPs_particleProperIndex(), PoPs_sortedParticleIndex(), and smr_freeMemory().

Referenced by lPoPs_addParticleIfNeeded(), PoPs_addAliasIfNeeded(), PoPs_copyAddParticleIfNeeded(), and PoPs_particleReadDatabase().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

PoP* PoPs_copyAddParticleIfNeeded ( statusMessageReporting *  smr,
PoP *  pop 
)

Definition at line 153 of file PoPs.cc.

References PoP_copyParticle(), PoP_free(), PoPs_addParticleIfNeeded(), PoPs_particleIndex(), and smr_freeMemory().

+ Here is the call graph for this function:

char const* PoPs_genreTokenToString ( enum PoPs_genre  genre)

Definition at line 446 of file PoPs.cc.

Referenced by PoPs_write().

+ Here is the caller graph for this function:

int PoPs_getAtomsIndex ( statusMessageReporting *  smr,
char const *  name 
)

Definition at line 397 of file PoPs.cc.

References PoPs_getAtomsIndex_atIndex(), and PoPs_particleIndex_smr().

+ Here is the call graph for this function:

int PoPs_getAtomsIndex_atIndex ( statusMessageReporting *  smr,
int  index 
)

Definition at line 407 of file PoPs.cc.

References PoPs_particleIndex_smr().

Referenced by PoPs_getAtomsIndex(), and PoPs_getAtomsName_atIndex().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

char const* PoPs_getAtomsName ( statusMessageReporting *  smr,
char const *  name 
)

Definition at line 377 of file PoPs.cc.

References PoPs_getAtomsName_atIndex(), and PoPs_particleIndex_smr().

+ Here is the call graph for this function:

char const* PoPs_getAtomsName_atIndex ( statusMessageReporting *  smr,
int  index 
)

Definition at line 387 of file PoPs.cc.

References PoPs_getAtomsIndex_atIndex().

Referenced by PoPs_getAtomsName().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

enum PoPs_genre PoPs_getGenre ( statusMessageReporting *  smr,
char const *  name 
)

Definition at line 301 of file PoPs.cc.

References PoPs_particleIndex_smr().

+ Here is the call graph for this function:

enum PoPs_genre PoPs_getGenre_atIndex ( statusMessageReporting *  smr,
int  index 
)

Definition at line 311 of file PoPs.cc.

double PoPs_getMassInUnitOf ( statusMessageReporting *  smr,
char const *  name,
char const *  unit 
)

Definition at line 265 of file PoPs.cc.

References PoPs_getMassInUnitOf_atIndex(), and PoPs_particleIndex_smr().

+ Here is the call graph for this function:

double PoPs_getMassInUnitOf_atIndex ( statusMessageReporting *  smr,
int  index,
char const *  unit 
)

Definition at line 286 of file PoPs.cc.

References PoP_getMassInUnitOf().

Referenced by PoPs_getMassInUnitOf().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

char const* PoPs_getName_atIndex ( statusMessageReporting *  smr,
int  index 
)

Definition at line 275 of file PoPs.cc.

Referenced by MCGIDI_map_findTargetViaPoPIDs().

+ Here is the caller graph for this function:

PoP* PoPs_getParticle_atIndex ( int  index)

Definition at line 438 of file PoPs.cc.

int PoPs_getZ_A_l ( statusMessageReporting *  smr,
char const *  name,
int *  Z,
int *  A,
int *  l 
)

Definition at line 325 of file PoPs.cc.

References PoPs_getZ_A_l_atIndex(), and PoPs_particleIndex_smr().

+ Here is the call graph for this function:

int PoPs_getZ_A_l_atIndex ( statusMessageReporting *  smr,
int  index,
int *  Z,
int *  A,
int *  l 
)

Definition at line 335 of file PoPs.cc.

Referenced by PoPs_getZ_A_l().

+ Here is the caller graph for this function:

int PoPs_hasNucleus ( statusMessageReporting *  smr,
char const *  name,
int  protonIsNucleus 
)

Definition at line 349 of file PoPs.cc.

References PoPs_hasNucleus_atIndex(), and PoPs_particleIndex_smr().

Referenced by PoPs_write().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int PoPs_hasNucleus_atIndex ( statusMessageReporting *  smr,
int  index,
int  protonIsNucleus 
)

Definition at line 359 of file PoPs.cc.

Referenced by PoPs_hasNucleus().

+ Here is the caller graph for this function:

int PoPs_numberOfParticle ( void  )

Definition at line 197 of file PoPs.cc.

int PoPs_particleIndex ( char const *  name)

Definition at line 204 of file PoPs.cc.

References PoPs_particleProperIndex(), and PoPs_sortedParticleIndex().

Referenced by lPoPs_addParticleIfNeeded(), MCGIDI_reaction_ParseDetermineReactionProducts(), MCGIDI_reaction_particleChanges(), PoP_makeAlias(), PoPs_copyAddParticleIfNeeded(), and PoPs_particleIndex_smr().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int PoPs_particleIndex_smr ( statusMessageReporting *  smr,
char const *  name,
char const *  file,
int  line,
char const *  func 
)

Definition at line 216 of file PoPs.cc.

References PoPs_particleIndex(), and smr_setReportError().

Referenced by PoPs_getAtomsIndex(), PoPs_getAtomsIndex_atIndex(), PoPs_getAtomsName(), PoPs_getGenre(), PoPs_getMassInUnitOf(), PoPs_getZ_A_l(), and PoPs_hasNucleus().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int PoPs_particleProperIndex ( int  index)
static

Definition at line 227 of file PoPs.cc.

Referenced by PoPs_addParticleIfNeeded(), PoPs_particleIndex(), and PoPs_write().

+ Here is the caller graph for this function:

void PoPs_print ( int  sorted)

Definition at line 455 of file PoPs.cc.

References PoPs_write().

+ Here is the call graph for this function:

int PoPs_readDatabase ( statusMessageReporting *  smr,
char const *  fileName 
)

Definition at line 81 of file PoPs.cc.

References PoPs_particleReadDatabase().

+ Here is the call graph for this function:

int PoPs_register ( void  )

Definition at line 73 of file PoPs.cc.

int PoPs_release ( statusMessageReporting *  smr)

Definition at line 88 of file PoPs.cc.

References PoPs_releasePrivate().

+ Here is the call graph for this function:

int PoPs_releasePrivate ( statusMessageReporting *  )

Definition at line 98 of file PoPs.cc.

References PoP_free(), smr_freeMemory(), and unitsDB_release().

Referenced by PoPs_release().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int PoPs_sortedParticleIndex ( char const *  name)
static

Definition at line 235 of file PoPs.cc.

Referenced by PoPs_addParticleIfNeeded(), and PoPs_particleIndex().

+ Here is the caller graph for this function:

int PoPs_unitConversionRatio ( char const *  _from,
char const *  _to,
double *  ratio 
)

Definition at line 748 of file PoPs.cc.

References conversions, n, and unitConversions_s::ratio.

Referenced by PoP_getMassInUnitOf().

+ Here is the caller graph for this function:

const char* PoPs_version ( void  )

Definition at line 59 of file PoPs.cc.

int PoPs_versionMajor ( void  )

Definition at line 67 of file PoPs.cc.

int PoPs_versionMinor ( void  )

Definition at line 68 of file PoPs.cc.

int PoPs_versionPatchLevel ( void  )

Definition at line 69 of file PoPs.cc.

void PoPs_write ( FILE *  f,
int  sorted 
)

Definition at line 462 of file PoPs.cc.

References PoPs_genreTokenToString(), PoPs_hasNucleus(), and PoPs_particleProperIndex().

Referenced by PoPs_print().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

char const* unitsDB_addUnitIfNeeded ( statusMessageReporting *  smr,
char const *  unit 
)

Definition at line 700 of file PoPs.cc.

References smr_freeMemory().

Referenced by PoP_makeParticle(), and PoPs_particleLoadInfo().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int unitsDB_index ( statusMessageReporting *  ,
char const *  unit 
)

Definition at line 725 of file PoPs.cc.

static int unitsDB_release ( void  )
static

Definition at line 687 of file PoPs.cc.

References smr_freeMemory().

Referenced by PoPs_releasePrivate().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

char const* unitsDB_stringFromIndex ( statusMessageReporting *  smr,
int  index 
)

Definition at line 737 of file PoPs.cc.

Variable Documentation

unitConversions conversions[]
static
Initial value:
= { { "amu", "eV/c**2", AMU2eV }, { "amu", "MeV/c**2", AMU2MeV }, { "MeV/c**2", "eV/c**2", MeV2eV },
{ "MeV", "eV", MeV2eV }, { "MeV", "keV", MeV2keV }, { "K", "MeV", K2MeV }, { "K", "eV", K2eV } }
#define AMU2MeV
Definition: PoPs.cc:22
#define MeV2keV
Definition: PoPs.cc:21
#define MeV2eV
Definition: PoPs.cc:20
#define AMU2eV
Definition: PoPs.cc:23
#define K2eV
Definition: PoPs.cc:25
#define K2MeV
Definition: PoPs.cc:24

Definition at line 48 of file PoPs.cc.

Referenced by PoPs_unitConversionRatio().

char const* PoPs_genreStrings[] = { "invalid", "unknown", "alias", "photon", "lepton", "quark", "meson", "baryon", "nucleus", "atom" }
static

Definition at line 51 of file PoPs.cc.

int PoPs_smr_ID = smr_unknownID

Definition at line 35 of file PoPs.cc.

Referenced by lPoPs_addParticleIfNeeded().

PoPs popsRoot = { 0, 0, NULL, NULL }
static

Definition at line 43 of file PoPs.cc.

int referenceCount = 0
static

Definition at line 36 of file PoPs.cc.

unitsDB unitsRoot = { 0, 0, NULL }
static

Definition at line 42 of file PoPs.cc.

char versionStr[64] = ""
static

Definition at line 37 of file PoPs.cc.