5. Physics

5.1. Particle Identification code

Cosmos uses a conventional particle code that differs completely from extensive one recommended in the Particle Data book. Subroutines to convert the Cosmos code to the PDG code are available and described in Sec.??. A particle is identified by the particle code, subcode and charge. When you need to identify a particle in the user hook routines, you may use the #include "Zcode.h" directive and refer the code names in that file rather than code numbers.

The following list is the names that represent the particles in Cosmos. They are roughly in the order of mass. The code for a heavy nucleus such as deuteron, alpha, … is not available when you judge particle type in air shower. It can be used to specify the primary particle type only. To judge a particle type of a nucleus in air shower, you may use kgnuc for particle code, and if it matches, you can identify the nucleus by testing the subcode and charge; the subcode expresses the mass number (A). To specify a primary you can also avoid using the naming below but use 'iso 3 2', for example, to express \(^3\mathrm{He}\).

Table 5.1 particle code

particle

code name

code number

particle

code name

code number

photon

kphoton

1

electron

kelec

2

muon

kmuon

3

pion

kpion

4

kaon

kkaon

5

nucleon

knuc

6

\(\nu_e\)

kneue

7

\(\nu_\mu\)

kneumu

8

nucleus

kgnuc

9

triton

ktriton

17

He

kalfa

10

LiBeB(A~8)

klibe

11

CNO(A~14)

kcno

12

H(A~25)

khvy

13

VH(A~35)

kvhvy

14

Fe(A~56)

kiron

15

D meson

kdmes

16

\(\rho\)

krho

25

\(\Lambda\)

klambda

18

\(\Lambda_c\)

klambdac

21

\(\Sigma\)

ksigma

19

\(\Xi\)

kgzai

20

\(\omega\)

komega

26

\(\phi\)

kphi

27

\(\eta\)

keta

28

deuteron

kdeuteron

29

The subcode is used to discriminate the particle from anti-particle, if the difference is essential such as the neutron and neutrino, but not used for, say, anti-protons because the charge can tell it. For \(\mathrm{K^0}\) mesons, the subcode is used to distinguish between \(\mathrm{K^0}_S\) and \(\mathrm{K^0}_L\). Cosmos does not assign the particle and anti-particle code to them. They are assumed to be produced in equal weight and the actual assignment is performed randomly when they interact. To identify the particle and anti-particle, you can use the subcode name, regptcl and antip. For \(\mathrm{K^0}_S\) and \(\mathrm{K^0}_L\) the subcode name, k0l and k0l may be used.

The “KF” code used in Particle Data Book can be converted to the Cosmos code by calling ckf2cos() as:

call ckf2cos(kf, code, subcode, chg)

where kf is an input integer kf code, and others are the output for Cosmos code.

The inverse conversion is possible by:

call ccos2kf(code, subcode, chg, kf)

The following fragment of a program code will tell you how to use these code and sub-code system.

!...
#include "Zcode.h"
!...
      record /track/ aTrack
!...
      if(aTrack.p.code .eq. knuc .and. aTrack.p.charge .eq. 0) then
!            neutron; judge if anti neutron or not.
          if(aTrack.p.subcode .eq. antip) then
!               this is anti neutron
          else if(aTrack.p.subcode .eq. regptcl) then
!               this is neutron
          else
!               error assignment
          endif
!...

5.2. Physics list and references

5.3. Hadronic interaction models

[Hadronic interaction models are read in LibLoft/Had/Interface/cintModels.f.]

[Available models are defined in LibLoft/Header/BlockData/cblkEvhnp.h.]

Available models are listed in Table 5.2.

Table 5.2 Hadronic interaction models

Model

Name in param

Energy range

Comment

PHITS

phits

JAM

jam

DPMJET3

dpmjet3

Fritiof 7.02

Fritiof 1.6

fritiof1.6

GHEISHA

gheisha

Nucrin

nucrin

Ad hoc

ad-hoc

IncDPM3

incdpm3

Special

special

QGSJET II-03

qgsjet2

See Section 4.1

QGSJET II-04

qgsjet2

See Section 4.1

EPOS 1.99

epos

See Section 4.1

EPOS LHC v3700

epos

See Section 4.1

Sibyll 2.1

sibyll

See Section 4.1

Sibyll 2.3c

sibyll

See Section 4.1