IAP GITLAB
Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
corsika
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Issue analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Air Shower Physics
corsika
Commits
b644b827
Commit
b644b827
authored
4 years ago
by
Ralf M Ulrich
Browse files
Options
Downloads
Patches
Plain Diff
also improved the unknown particle mapping for sibyll
parent
3e14b07b
No related branches found
No related tags found
1 merge request
!186
Resolve "particle list example"
Pipeline
#1256
passed
4 years ago
Stage: config
Stage: build_test
Stage: optional
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
Processes/Sibyll/ParticleConversion.h
+15
-3
15 additions, 3 deletions
Processes/Sibyll/ParticleConversion.h
Processes/Sibyll/code_generator.py
+33
-15
33 additions, 15 deletions
Processes/Sibyll/code_generator.py
Processes/Sibyll/sibyll_codes.dat
+130
-124
130 additions, 124 deletions
Processes/Sibyll/sibyll_codes.dat
with
178 additions
and
142 deletions
Processes/Sibyll/ParticleConversion.h
+
15
−
3
View file @
b644b827
...
...
@@ -22,11 +22,23 @@ namespace corsika::process::sibyll {
enum
class
SibyllCode
:
int8_t
;
using
SibyllCodeIntType
=
std
::
underlying_type
<
SibyllCode
>::
type
;
/**
These are the possible projectile for which Sibyll knows the cross section
*/
enum
class
SibyllXSClass
:
int8_t
{
CannotInteract
=
0
,
Baryon
=
1
,
Pion
=
2
,
Kaon
=
3
,
};
using
SibyllXSClassIntType
=
std
::
underlying_type
<
SibyllXSClass
>::
type
;
#include
<corsika/process/sibyll/Generated.inc>
SibyllCode
constexpr
ConvertToSibyll
(
corsika
::
particles
::
Code
pCode
)
{
return
static_cast
<
SibyllCode
>
(
corsika2sibyll
[
static_cast
<
corsika
::
particles
::
CodeIntType
>
(
pCode
)]
)
;
return
corsika2sibyll
[
static_cast
<
corsika
::
particles
::
CodeIntType
>
(
pCode
)];
}
corsika
::
particles
::
Code
constexpr
ConvertFromSibyll
(
SibyllCode
pCode
)
{
...
...
@@ -45,7 +57,7 @@ namespace corsika::process::sibyll {
}
int
constexpr
GetSibyllXSCode
(
corsika
::
particles
::
Code
pCode
)
{
return
corsika2sibyllXStype
[
static_cast
<
corsika
::
particles
::
CodeIntType
>
(
pCode
)];
return
static_cast
<
SibyllXSClassIntType
>
(
corsika2sibyllXStype
[
static_cast
<
corsika
::
particles
::
CodeIntType
>
(
pCode
)]
)
;
}
bool
constexpr
CanInteract
(
corsika
::
particles
::
Code
pCode
)
{
...
...
This diff is collapsed.
Click to expand it.
Processes/Sibyll/code_generator.py
+
33
−
15
View file @
b644b827
...
...
@@ -13,65 +13,83 @@ import pickle, sys, itertools
# loads the pickled particle_db (which is an OrderedDict)
def
load_particledb
(
filename
):
'''
loads the pickled particle_db (which is an OrderedDict)
'''
with
open
(
filename
,
"
rb
"
)
as
f
:
particle_db
=
pickle
.
load
(
f
)
return
particle_db
#
def
read_sibyll_codes
(
filename
,
particle_db
):
'''
reads to sibyll codes data file
For particls known to sibyll, add
'
sibyll_code
'
and
'
sibyll_xsType
'
to particle_db
'''
with
open
(
filename
)
as
f
:
for
line
in
f
:
line
=
line
.
strip
()
if
line
[
0
]
==
'
#
'
:
if
len
(
line
)
==
0
or
line
[
0
]
==
'
#
'
:
continue
identifier
,
sib_code
,
canInteractFlag
,
xsType
=
line
.
split
()
try
:
particle_db
[
identifier
][
"
sibyll_code
"
]
=
int
(
sib_code
)
particle_db
[
identifier
][
"
sibyll_xsType
"
]
=
int
(
xsType
)
particle_db
[
identifier
][
"
sibyll_xsType
"
]
=
xsType
except
KeyError
as
e
:
raise
Exception
(
"
Identifier
'
{:s}
'
not found in particle_db
"
.
format
(
identifier
))
# generates the enum to access sibyll particles by readable names
def
generate_sibyll_enum
(
particle_db
):
'''
generates the enum to access sibyll particles by readable names
'''
output
=
"
enum class SibyllCode : int8_t {
\n
"
for
identifier
,
pData
in
particle_db
.
items
():
if
pData
.
get
(
'
sibyll_code
'
)
!=
None
:
if
'
sibyll_code
'
in
pData
:
output
+=
"
{:s} = {:d},
\n
"
.
format
(
identifier
,
pData
[
'
sibyll_code
'
])
output
+=
"
};
\n
"
return
output
# generates the look-up table to convert corsika codes to sibyll codes
def
generate_corsika2sibyll
(
particle_db
):
string
=
"
std::array<SibyllCodeIntType, {:d}> constexpr corsika2sibyll = {{
\n
"
.
format
(
len
(
particle_db
))
'''
generates the look-up table to convert corsika codes to sibyll codes
'''
string
=
"
std::array<SibyllCode, {:d}> constexpr corsika2sibyll = {{
\n
"
.
format
(
len
(
particle_db
))
for
identifier
,
pData
in
particle_db
.
items
():
sibCode
=
pData
.
get
(
"
sibyll_code
"
,
0
)
string
+=
"
{:d}, // {:s}
\n
"
.
format
(
sibCode
,
identifier
if
sibCode
else
identifier
+
"
(not implemented in SIBYLL)
"
)
if
'
sibyll_code
'
in
pData
:
string
+=
"
SibyllCode::{:s},
\n
"
.
format
(
identifier
)
else
:
string
+=
"
SibyllCode::Unknown, // {:s}
\n
"
.
format
(
identifier
+
'
not implemented in SIBYLL
'
)
string
+=
"
};
\n
"
return
string
# generates the look-up table to convert corsika codes to sibyll codes
def
generate_corsika2sibyll_xsType
(
particle_db
):
string
=
"
std::array<int, {:d}> constexpr corsika2sibyllXStype = {{
\n
"
.
format
(
len
(
particle_db
))
'''
generates the look-up table to convert corsika codes to sibyll codes
'''
string
=
"
std::array<SibyllXSClass, {:d}> constexpr corsika2sibyllXStype = {{
\n
"
.
format
(
len
(
particle_db
))
for
identifier
,
pData
in
particle_db
.
items
():
sibCodeXS
=
pData
.
get
(
"
sibyll_xsType
"
,
0
)
string
+=
"
{:d}, // {:s}
\n
"
.
format
(
sibCodeXS
,
identifier
if
sibCodeXS
else
identifier
+
"
(not implemented in SIBYLL)
"
)
if
'
sibyll_xsType
'
in
pData
:
string
+=
"
SibyllXSClass::{:s}, // {:s}
\n
"
.
format
(
pData
[
'
sibyll_xsType
'
],
identifier
)
else
:
string
+=
"
SibyllXSClass::CannotInteract, // {:s}
\n
"
.
format
(
identifier
+
'
not implemented in SIBYLL
'
)
string
+=
"
};
\n
"
return
string
# generates the look-up table to convert sibyll codes to corsika codes
def
generate_sibyll2corsika
(
particle_db
)
:
'''
generates the look-up table to convert sibyll codes to corsika codes
'''
string
=
""
minID
=
0
...
...
This diff is collapsed.
Click to expand it.
Processes/Sibyll/sibyll_codes.dat
+
130
−
124
View file @
b644b827
# input file for particle conversion to/from SIBYLL
# the format of this file is: "corsika-identifier" "sibyll-id" "can-interact-in-sibyll" "cross-section-type"
Electron 3 0 0
Positron 2 0 0
NuE 15 0 0
NuEBar 16 0 0
MuMinus 5 0 0
MuPlus 4 0 0
NuMu 17 0 0
NuMuBar 18 0 0
TauMinus 91 0 0
TauPlus 90 0 0
NuTau 92 0 0
NuTauBar 93 0 0
Gamma 1 0 0
Pi0 6 1 2
# rho0 could interact but sibyll has no cross section/interaction length. was used for gamma had int
Rho0 27 0 0
K0Long 11 1 3
K0 21 0 3
K0Bar 22 0 3
PiPlus 7 1 2
PiMinus 8 1 2
RhoPlus 25 0 0
RhoMinus 26 0 0
Eta 23 0 0
EtaPrime 24 0 0
Pi1300Plus 62 0 0
Pi1300Minus 63 0 0
Pi1300_0 61 0 0
Omega 32 0 0
K0Short 12 1 3
KStar0 30 0 0
KStar0Bar 31 0 0
KPlus 9 1 3
KMinus 10 1 3
KStarPlus 28 0 0
KStarMinus 29 0 0
KStar0_1430_0 66 0 0
KStar0_1430_0Bar 67 0 0
KStar0_1430_Plus 64 0 0
KStar0_1430_MinusBar 65 0 0
DPlus 59 1 3
DMinus 60 1 3
DStarPlus 78 0 0
DStarMinus 79 0 0
D0 71 1 3
D0Bar 72 1 3
DStar0 80 0 0
DStar0Bar 81 0 0
DsPlus 74 1 3
DsMinus 75 1 3
DStarSPlus 76 0 0
DStarSMinus 77 0 0
EtaC 73 0 0
Neutron 14 1 1
AntiNeutron -14 1 1
Delta0 42 0 0
Delta0Bar -42 0 0
DeltaMinus 43 0 0
DeltaPlusBar -43 0 0
Proton 13 1 1
AntiProton -13 1 1
N1440Plus 51 0 0
N1440MinusBar -51 0 0
N1440_0 52 0 0
N1440_0Bar -52 0 0
N1710Plus 53 0 0
N1710MinusBar -53 0 0
N1710_0 54 0 0
N1710_0Bar -54 0 0
DeltaPlus 41 0 0
DeltaMinusBar -41 0 0
DeltaPlusPlus 40 0 0
DeltaMinusMinusBar -40 0 0
SigmaMinus 36 1 1
SigmaPlusBar -36 1 1
SigmaStarMinus 46 0 0
SigmaStarPlusBar -46 0 0
SigmaStarPlus 44 0 0
SigmaStarMinusBar -44 0 0
SigmaStar0 45 0 0
SigmaStar0Bar -45 0 0
Lambda0 39 1 1
Lambda0Bar -39 1 1
Sigma0 35 1 1
Sigma0Bar -35 1 1
SigmaPlus 34 1 1
SigmaMinusBar -34 1 1
XiMinus 38 1 1
XiPlusBar -38 1 1
Xi0 37 1 1
Xi0Bar -37 1 1
XiStarMinus 48 0 0
XiStarPlusBar -48 0 0
XiStar0 47 0 0
XiStar0Bar -47 0 0
OmegaMinus 49 0 0
OmegaPlusBar -49 0 0
SigmaC0 86 0 0
SigmaC0Bar -86 0 0
SigmaStarC0 96 0 0
SigmaStarC0Bar -96 0 0
LambdaCPlus 89 1 1
LambdaCMinusBar -89 1 1
XiC0 88 1 1
XiC0Bar -88 1 1
SigmaCPlus 85 0 0
SigmaCMinusBar -85 0 0
SigmaStarCPlus 95 0 0
SigmaStarCMinusBar -95 0 0
SigmaCPlusPlus 84 0 0
SigmaCMinusMinusBar -84 0 0
SigmaStarCPlusPlus 94 0 0
SigmaStarCMinusMinusBar -94 0 0
XiCPlus 87 1 1
XiCMinusBar -87 1 1
XiStarCPlus 97 0 0
XiStarCMinusBar -97 0 0
XiStarC0 98 0 0
XiStarC0Bar -98 0 0
OmegaC0 99 0 0
OmegaC0Bar -99 0 0
Jpsi 83 0 0
Phi 33 0 0
Unknown 0 0 0
# The unknown particle is to handle all particles that are not known to SIBYLL.
# It is important that sibyll-id does not overlap with any existing sibyll particle!
# Be careful
Unknown 0 0 CannotInteract
# Here is the list of particles known to sibyll
Electron 3 0 CannotInteract
Positron 2 0 CannotInteract
NuE 15 0 CannotInteract
NuEBar 16 0 CannotInteract
MuMinus 5 0 CannotInteract
MuPlus 4 0 CannotInteract
NuMu 17 0 CannotInteract
NuMuBar 18 0 CannotInteract
TauMinus 91 0 CannotInteract
TauPlus 90 0 CannotInteract
NuTau 92 0 CannotInteract
NuTauBar 93 0 CannotInteract
Gamma 1 0 CannotInteract
Pi0 6 1 Pion
# rho0 could interact but sibyll has no cross section/interaction length. was used for gamma had int
Rho0 27 0 CannotInteract
K0Long 11 1 Kaon
K0 21 0 Kaon
K0Bar 22 0 Kaon
PiPlus 7 1 Pion
PiMinus 8 1 Pion
RhoPlus 25 0 CannotInteract
RhoMinus 26 0 CannotInteract
Eta 23 0 CannotInteract
EtaPrime 24 0 CannotInteract
Pi1300Plus 62 0 CannotInteract
Pi1300Minus 63 0 CannotInteract
Pi1300_0 61 0 CannotInteract
Omega 32 0 CannotInteract
K0Short 12 1 Kaon
KStar0 30 0 CannotInteract
KStar0Bar 31 0 CannotInteract
KPlus 9 1 Kaon
KMinus 10 1 Kaon
KStarPlus 28 0 CannotInteract
KStarMinus 29 0 CannotInteract
KStar0_1430_0 66 0 CannotInteract
KStar0_1430_0Bar 67 0 CannotInteract
KStar0_1430_Plus 64 0 CannotInteract
KStar0_1430_MinusBar 65 0 CannotInteract
DPlus 59 1 Kaon
DMinus 60 1 Kaon
DStarPlus 78 0 CannotInteract
DStarMinus 79 0 CannotInteract
D0 71 1 Kaon
D0Bar 72 1 Kaon
DStar0 80 0 CannotInteract
DStar0Bar 81 0 CannotInteract
DsPlus 74 1 Kaon
DsMinus 75 1 Kaon
DStarSPlus 76 0 CannotInteract
DStarSMinus 77 0 CannotInteract
EtaC 73 0 CannotInteract
Neutron 14 1 Baryon
AntiNeutron -14 1 Baryon
Delta0 42 0 CannotInteract
Delta0Bar -42 0 CannotInteract
DeltaMinus 43 0 CannotInteract
DeltaPlusBar -43 0 CannotInteract
Proton 13 1 Baryon
AntiProton -13 1 Baryon
N1440Plus 51 0 CannotInteract
N1440MinusBar -51 0 CannotInteract
N1440_0 52 0 CannotInteract
N1440_0Bar -52 0 CannotInteract
N1710Plus 53 0 CannotInteract
N1710MinusBar -53 0 CannotInteract
N1710_0 54 0 CannotInteract
N1710_0Bar -54 0 CannotInteract
DeltaPlus 41 0 CannotInteract
DeltaMinusBar -41 0 CannotInteract
DeltaPlusPlus 40 0 CannotInteract
DeltaMinusMinusBar -40 0 CannotInteract
SigmaMinus 36 1 Baryon
SigmaPlusBar -36 1 Baryon
SigmaStarMinus 46 0 CannotInteract
SigmaStarPlusBar -46 0 CannotInteract
SigmaStarPlus 44 0 CannotInteract
SigmaStarMinusBar -44 0 CannotInteract
SigmaStar0 45 0 CannotInteract
SigmaStar0Bar -45 0 CannotInteract
Lambda0 39 1 Baryon
Lambda0Bar -39 1 Baryon
Sigma0 35 1 Baryon
Sigma0Bar -35 1 Baryon
SigmaPlus 34 1 Baryon
SigmaMinusBar -34 1 Baryon
XiMinus 38 1 Baryon
XiPlusBar -38 1 Baryon
Xi0 37 1 Baryon
Xi0Bar -37 1 Baryon
XiStarMinus 48 0 CannotInteract
XiStarPlusBar -48 0 CannotInteract
XiStar0 47 0 CannotInteract
XiStar0Bar -47 0 CannotInteract
OmegaMinus 49 0 CannotInteract
OmegaPlusBar -49 0 CannotInteract
SigmaC0 86 0 CannotInteract
SigmaC0Bar -86 0 CannotInteract
SigmaStarC0 96 0 CannotInteract
SigmaStarC0Bar -96 0 CannotInteract
LambdaCPlus 89 1 Baryon
LambdaCMinusBar -89 1 Baryon
XiC0 88 1 Baryon
XiC0Bar -88 1 Baryon
SigmaCPlus 85 0 CannotInteract
SigmaCMinusBar -85 0 CannotInteract
SigmaStarCPlus 95 0 CannotInteract
SigmaStarCMinusBar -95 0 CannotInteract
SigmaCPlusPlus 84 0 CannotInteract
SigmaCMinusMinusBar -84 0 CannotInteract
SigmaStarCPlusPlus 94 0 CannotInteract
SigmaStarCMinusMinusBar -94 0 CannotInteract
XiCPlus 87 1 Baryon
XiCMinusBar -87 1 Baryon
XiStarCPlus 97 0 CannotInteract
XiStarCMinusBar -97 0 CannotInteract
XiStarC0 98 0 CannotInteract
XiStarC0Bar -98 0 CannotInteract
OmegaC0 99 0 CannotInteract
OmegaC0Bar -99 0 CannotInteract
Jpsi 83 0 CannotInteract
Phi 33 0 CannotInteract
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment