ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
PoPs.h
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file PoPs.h
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
14
#include <
statusMessageReporting.h
>
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)"
33
typedef
struct
PoP_s
PoP
;
34
35
enum
PoPs_errorTokens
{
PoPs_errorToken_Okay
,
PoPs_errorToken_badName
,
PoPs_errorToken_badIndex
,
PoPs_errorToken_badUnitConversion
};
36
enum
PoPs_genre
{
PoPs_genre_invalid
,
PoPs_genre_unknown
,
PoPs_genre_alias
,
PoPs_genre_photon
,
PoPs_genre_lepton
,
37
PoPs_genre_quark
,
PoPs_genre_meson
,
PoPs_genre_baryon
,
PoPs_genre_nucleus
,
PoPs_genre_atom
};
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
*/
45
struct
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;
47
enum
PoPs_genre
genre
;
48
char
const
*
name
;
49
int
Z
,
A
, l;
50
double
mass
;
/* Mass to be added to base. */
51
char
const
*
massUnit
;
52
};
53
54
extern
int
PoPs_smr_ID
;
55
56
const
char
*
PoPs_version
(
void
);
57
int
PoPs_versionMajor
(
void
);
58
int
PoPs_versionMinor
(
void
);
59
int
PoPs_versionPatchLevel
(
void
);
60
61
int
PoPs_register
(
void
);
62
int
PoPs_readDatabase
(
statusMessageReporting
*smr,
char
const
*fileName );
63
int
PoPs_release
(
statusMessageReporting
*smr );
64
PoP
*
PoPs_addParticleIfNeeded
(
statusMessageReporting
*smr,
PoP
*pop );
65
PoP
*
PoPs_copyAddParticleIfNeeded
(
statusMessageReporting
*smr,
PoP
*pop );
66
PoP
*
PoPs_addAliasIfNeeded
(
statusMessageReporting
*smr,
char
const
*
name
,
char
const
*alias );
67
int
PoPs_numberOfParticle
(
void
);
68
int
PoPs_particleIndex
(
char
const
*
name
);
69
int
PoPs_particleIndex_smr
(
statusMessageReporting
*smr,
char
const
*
name
,
char
const
*
file
,
int
line,
char
const
*
func
);
70
char
const
*
PoPs_getName_atIndex
(
statusMessageReporting
*smr,
int
index );
71
double
PoPs_getMassInUnitOf
(
statusMessageReporting
*smr,
char
const
*
name
,
char
const
*unit );
72
double
PoPs_getMassInUnitOf_atIndex
(
statusMessageReporting
*smr,
int
index,
char
const
*unit );
73
enum
PoPs_genre
PoPs_getGenre
(
statusMessageReporting
*smr,
char
const
*
name
);
74
enum
PoPs_genre
PoPs_getGenre_atIndex
(
statusMessageReporting
*smr,
int
index );
75
int
PoPs_getZ_A_l
(
statusMessageReporting
*smr,
char
const
*
name
,
int
*
Z
,
int
*
A
,
int
*l );
76
int
PoPs_getZ_A_l_atIndex
(
statusMessageReporting
*smr,
int
index,
int
*
Z
,
int
*
A
,
int
*l );
77
int
PoPs_hasNucleus
(
statusMessageReporting
*smr,
char
const
*
name
,
int
protonIsNucleus );
78
int
PoPs_hasNucleus_atIndex
(
statusMessageReporting
*smr,
int
index,
int
protonIsNucleus );
79
char
const
*
PoPs_getAtomsName
(
statusMessageReporting
*smr,
char
const
*
name
);
80
char
const
*
PoPs_getAtomsName_atIndex
(
statusMessageReporting
*smr,
int
index );
81
int
PoPs_getAtomsIndex
(
statusMessageReporting
*smr,
char
const
*
name
);
82
int
PoPs_getAtomsIndex_atIndex
(
statusMessageReporting
*smr,
int
index );
83
PoP
*
PoPs_getParticle_atIndex
(
int
index );
84
85
char
const
*
PoPs_genreTokenToString
(
enum
PoPs_genre
genre );
86
void
PoPs_print
(
int
sorted );
87
void
PoPs_write
( FILE *
f
,
int
sorted );
88
89
PoP
*
PoP_new
(
statusMessageReporting
*smr );
90
int
PoP_initialize
(
statusMessageReporting
*smr,
PoP
*pop );
91
int
PoP_release
(
PoP
*pop );
92
PoP
*
PoP_free
(
PoP
*pop );
93
int
PoP_copyParticle
(
statusMessageReporting
*smr,
PoP
*
desc
,
PoP
*src );
94
PoP
*
PoP_makeParticle
(
statusMessageReporting
*smr,
enum
PoPs_genre
genre,
char
const
*
name
,
double
mass
,
char
const
*massUnit );
95
int
PoP_setZ_A_l
(
statusMessageReporting
*smr,
PoP
*pop,
int
Z
,
int
A
,
int
l );
96
int
PoP_getIndex
(
PoP
*pop );
97
char
const
*
PoP_getName
(
PoP
*pop );
98
99
int
PoPs_particleReadDatabase
(
statusMessageReporting
*smr,
char
const
*
name
);
100
PoP
*
PoPs_particleCreateLoadInfo
(
statusMessageReporting
*smr,
const
char
*
name
);
101
int
PoPs_particleLoadInfo
(
statusMessageReporting
*smr,
const
char
*
name
,
PoP
*pop );
102
103
double
PoP_getMassInUnitOf
(
statusMessageReporting
*smr,
PoP
*pop,
char
const
*unit );
104
105
PoP
*
PoP_makeAlias
(
statusMessageReporting
*smr,
char
const
*
name
,
char
const
*alias );
106
107
int
PoPs_unitConversionRatio
(
char
const
*_from,
char
const
*_to,
double
*
ratio
);
108
109
int
lPoPs_addParticleIfNeeded
(
statusMessageReporting
*smr,
char
const
*
name
,
char
const
*special );
110
111
/*
112
* MPI stuff.
113
*/
114
#ifdef PoPs_MPI
115
int
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. */
119
int
PoPs_setBDFLS_File
(
char
const
*
name
);
120
121
#if defined __cplusplus
122
}
123
}
124
#endif
125
126
#endif
/* End of PoPs_h_included. */
geant4
tree
geant4-10.6-release
source
processes
hadronic
models
lend
include
PoPs.h
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:46
using
1.8.2 with
ECCE GitHub integration