KAHIBARO
Discord Login Register

36.5. Common Particle Definitions

Overview

In Geant4 you never write your own particle classes. Instead, you request particle types from Geant4, and the toolkit provides complete definitions that include mass, charge, lifetime, and standard physics processes. For practical work you mainly need to know:

  1. Which class or factory provides the particle.
  2. The PDG-style name string used in macros.
  3. Which “particle table” category the particle belongs to.

This appendix collects the most common particles and where to find them in Geant4.

Always use Geant4’s built-in particle definitions such as G4Gamma::Gamma() or /gps/particle e-. Never invent your own masses, charges, or lifetimes unless you are deliberately defining an exotic or test particle.

The Particle Table and Names

Geant4 keeps all known particles in a central G4ParticleTable. You usually do not access it directly, but it is useful to know:

In C++ you can obtain a particle by name:

cpp
auto particleTable = G4ParticleTable::GetParticleTable();
G4ParticleDefinition* electron =
  particleTable->FindParticle("e-");

In macros you use the same name string:

tcl
/gps/particle e-

Common particles follow standard PDG naming conventions. The table below shows typical name patterns you will see in Geant4 macros and in particle table lookups.

CategoryExample namePattern / Notes
PhotongammaGamma rays, i.e. photons
Electron / positrone-, e+Charge sign as in PDG
Muonsmu-, mu+Negative and positive muons
Pionspi-, pi+,pi0Charged and neutral pions
Kaonskaon-, kaon+,kaon0, kaon0L, kaon0SStrange mesons
Nucleonsproton, anti_proton, neutron, anti_neutronWith underscore for anti
Ionsion, specific ions via command optionsCreated via ion commands
Neutrinosnu_e, anti_nu_e, nu_mu, anti_nu_mu, …If enabled by physics list

Use these exact strings when setting up particle sources via macro commands.

Fundamental Electromagnetic Particles

Electromagnetic particles are the most commonly used in detector simulations, radiation studies, and medical physics. Geant4 gives convenient C++ helpers for them.

Photon (Gamma)

In Geant4 a “gamma” is a photon. It is defined with zero mass and zero charge.

Typical C++ access:

cpp
auto gamma = G4Gamma::Gamma();

Macro name:

tcl
/gps/particle gamma

Photons are heavily used as primary particles in gamma detectors, shielding studies, and medical imaging examples.

Electron and Positron

Electrons and positrons are defined with their physical mass and charges:

cpp
auto electron = G4Electron::Electron(); // e-
auto positron = G4Positron::Positron(); // e+

Macro names:

tcl
/gps/particle e-
/gps/particle e+

These are important for electromagnetic showers, beta radiation, and annihilation processes.

Muons

Muons appear frequently in cosmic-ray simulations and some detector backgrounds.

C++:

cpp
auto muMinus = G4MuonMinus::MuonMinus(); // mu-
auto muPlus  = G4MuonPlus::MuonPlus();   // mu+

Macro names:

tcl
/gps/particle mu-
/gps/particle mu+

Muons are heavier cousins of electrons with the same charge signs.

Hadrons: Pions, Kaons, and Nucleons

Hadronic particles are important for calorimetry, accelerator shielding, and nuclear physics applications. Most of the time you simply set the particle by its name.

Pions

Pions are the lightest mesons and appear in hadronic showers and many beam lines.

C++ definitions:

cpp
auto piPlus  = G4PionPlus::PionPlus();   // pi+
auto piMinus = G4PionMinus::PionMinus(); // pi-
auto pi0     = G4PionZero::PionZero();   // pi0

Macro names:

tcl
/gps/particle pi+
/gps/particle pi-
/gps/particle pi0

Kaons

Kaons carry strangeness and appear in higher-energy hadron interactions.

Common C++ helpers:

cpp
auto kp  = G4KaonPlus::KaonPlus();          // kaon+
auto km  = G4KaonMinus::KaonMinus();        // kaon-
auto k0  = G4KaonZero::KaonZero();          // kaon0 (generic)
auto k0L = G4KaonZeroLong::KaonZeroLong();  // kaon0L
auto k0S = G4KaonZeroShort::KaonZeroShort();// kaon0S

Macro names:

tcl
/gps/particle kaon+
/gps/particle kaon-
/gps/particle kaon0
/gps/particle kaon0L
/gps/particle kaon0S

Protons and Neutrons

Protons and neutrons are crucial in shielding, activation studies, and proton therapy examples.

C++:

cpp
auto proton  = G4Proton::Proton();           // proton
auto neutron = G4Neutron::Neutron();         // neutron
auto antiP   = G4AntiProton::AntiProton();   // anti_proton
auto antiN   = G4AntiNeutron::AntiNeutron(); // anti_neutron

Macro names:

tcl
/gps/particle proton
/gps/particle neutron
/gps/particle anti_proton
/gps/particle anti_neutron

For clinical proton beams or detailed neutron transport, always choose an appropriate reference physics list and production cuts. Using the right physics list is essential for correct energy loss and scattering behavior.

Ions and Nuclei

Geant4 can simulate any nucleus using an ion definition. You normally do not construct these directly via C++ factory classes; instead you request ions from G4IonTable or, more commonly in beginner setups, via macro commands.

Ion Names and Commands

In macros you can configure generic ions with the /gun/ion or /gps/ion commands. For example, a monoenergetic carbon-12 beam:

tcl
/gps/particle ion
/gps/ion 6 12 6 0

The arguments are:

ParameterMeaning
ZAtomic number (protons)
AMass number (nucleons)
QCharge state (in units of e)
EExcitation energy (in keV)

So /gps/ion 6 12 6 0 means: Z = 6, A = 12, ion charge = +6e, excitation energy = 0 keV, which corresponds to fully stripped carbon-12.

C++ access via the ion table:

cpp
auto ionTable = G4IonTable::GetIonTable();
G4ParticleDefinition* carbon12 =
  ionTable->GetIon(6, 12, 0.*keV);

This is particularly important for heavy ion therapy simulations and nuclear physics.

Common Light Ions

Typical small ions used in medical and space applications include:

IonZAExample macro snippet
Deuteron12/gps/particle deuteron
Triton13/gps/particle triton
Alpha (He-4)24/gps/particle alpha or /gps/ion 2 4 2 0
Generic ionanyany/gps/particle ion + /gps/ion Z A Q E

Geant4 provides direct names for some light ions like alpha, deuteron, and triton in both C++ and macros, so you do not always need /gps/ion.

Neutrinos and Other Leptons

Neutrinos are often not central to detector response in Geant4, but they can be defined and transported depending on the physics list.

Common neutrino names:

tcl
/gps/particle nu_e
/gps/particle anti_nu_e
/gps/particle nu_mu
/gps/particle anti_nu_mu

Their presence and behavior depend strongly on the chosen physics list. For many detector simulations neutrinos essentially escape without interaction.

Tau leptons and their neutrinos also exist:

tcl
/gps/particle tau-
/gps/particle tau+
/gps/particle nu_tau
/ gps/particle anti_nu_tau

These are more relevant for high-energy physics than for typical beginner detector examples.

Geant4 Particle Categories

Internally, Geant4 organizes particles into categories. This is mostly useful if you explore or filter the particle table, but it helps to understand where standard particles “live”.

Main categories used in G4ParticleTable:

CategoryExamples
G4Leptone-, e+, mu-, mu+, tau
G4Bosongamma, W, Z, Higgs
G4Mesonpi, kaon, others
G4Baryonproton, neutron, hyperons
G4Ion / G4IonsAll nuclei and heavy ions
G4ShortLivedParticleResonances, virtuals

For typical beginner simulations you only work with standard leptons, photons, nucleons, mesons, and ions. Exotic and short-lived states are usually handled automatically by the physics processes you enable.

Using Particle Definitions in C++ and Macros

For most applications you will use one of two approaches.

In C++ code, when configuring a primary generator with a particle gun:

cpp
#include "G4ParticleGun.hh"
#include "G4ParticleTable.hh"
...
G4ParticleGun* fGun = new G4ParticleGun(1);
auto particleTable = G4ParticleTable::GetParticleTable();
auto proton = particleTable->FindParticle("proton");
fGun->SetParticleDefinition(proton);

Here the most important part is the name string, which must match the Geant4 particle definition exactly.

In macro files, for the General Particle Source:

tcl
/gps/particle gamma
/gps/energy 1 MeV
/gps/position 0 0 0 mm
/gps/direction 0 0 1

This uses the same particle name string as FindParticle.

Always verify that the particle name you use in macros or in FindParticle() exactly matches a Geant4 definition. A typo such as "protton" will quietly fail and typically lead to a null pointer in C++, or a macro error.

Summary Table of Common Particle Names

The table below summarizes the most common particle names you will use in Geant4 beginner projects.

TypeC++ class exampleMacro name example
PhotonG4Gamma::Gamma()gamma
ElectronG4Electron::Electron()e-
PositronG4Positron::Positron()e+
Muon minusG4MuonMinus::MuonMinus()mu-
Muon plusG4MuonPlus::MuonPlus()mu+
Pion plusG4PionPlus::PionPlus()pi+
Pion minusG4PionMinus::PionMinus()pi-
Pion zeroG4PionZero::PionZero()pi0
Kaon plusG4KaonPlus::KaonPlus()kaon+
Kaon minusG4KaonMinus::KaonMinus()kaon-
ProtonG4Proton::Proton()proton
NeutronG4Neutron::Neutron()neutron
Anti protonG4AntiProton::AntiProton()anti_proton
Anti neutronG4AntiNeutron::AntiNeutron()anti_neutron
Alphavia G4IonTable or helperalpha or ion+params
Deuteronvia G4Deuteron::Deuteron()deuteron
Tritonvia G4Triton::Triton()triton
Generic ionvia G4IonTableion + /gps/ion
Electron neutrinovia G4NeutrinoEnu_e, anti_nu_e
Muon neutrinovia G4NeutrinoMunu_mu, anti_nu_mu

With these definitions and names you can configure almost any primary beam commonly used in the rest of this course, from gamma sources and electron beams to protons, neutrons, and simple ion beams.

Views: 10

Comments

Please login to add a comment.

Don't have an account? Register now!