63 static const G4ParticleDefinition* g4eParticle = NULL;
65 if (g4eParticle == NULL) {
67 G4double muBpositron = 0.5 * CLHEP::eplus * CLHEP::hbar_Planck / (0.51099906 * CLHEP::MeV / CLHEP::c_squared);
68 G4double muBmuon = 0.5 * CLHEP::eplus * CLHEP::hbar_Planck / (0.1056584 * CLHEP::GeV / CLHEP::c_squared);
69 G4double muNucleon = CLHEP::eplus * CLHEP::hbar_Planck / 2. / (CLHEP::proton_mass_c2 / CLHEP::c_squared);
71 g4eParticle =
new G4ParticleDefinition(
72 "g4e_gamma", 0.0 * CLHEP::MeV, 0.0 * CLHEP::MeV, 0.0,
75 "gamma", 0, 0, g4ePDGcode,
77 false,
"photon", g4ePDGcode
80 new G4ParticleDefinition(
81 "g4e_e-", 0.51099906 * CLHEP::MeV, 0.0 * CLHEP::MeV, -1.0 * CLHEP::eplus,
84 "lepton", 1, 0, g4ePDGcode,
86 false,
"e", g4ePDGcode, -1.0011596521859 * muBpositron
89 new G4ParticleDefinition(
90 "g4e_e+", 0.51099906 * CLHEP::MeV, 0.0 * CLHEP::MeV, +1.0 * CLHEP::eplus,
93 "lepton", -1, 0, g4ePDGcode,
95 false,
"e", g4ePDGcode, 1.0011596521859 * muBpositron
98 new G4ParticleDefinition(
99 "g4e_mu+", 0.1056584 * CLHEP::GeV, 2.99591e-16 * CLHEP::MeV, +1.0 * CLHEP::eplus,
102 "lepton", -1, 0, g4ePDGcode,
104 false,
"mu", g4ePDGcode, 1.0011659208 * muBmuon
107 new G4ParticleDefinition(
108 "g4e_mu-", 0.1056584 * CLHEP::GeV, 2.99591e-16 * CLHEP::MeV, -1.0 * CLHEP::eplus,
111 "lepton", 1, 0, g4ePDGcode,
113 false,
"mu", g4ePDGcode, -1.0011659208 * muBmuon
116 new G4ParticleDefinition(
117 "g4e_pi+", 0.1395700 * CLHEP::GeV, 2.5284e-14 * CLHEP::MeV, +1.0 * CLHEP::eplus,
120 "meson", 0, 0, g4ePDGcode,
122 false,
"pi", g4ePDGcode
125 new G4ParticleDefinition(
126 "g4e_pi-", 0.1395700 * CLHEP::GeV, 2.5284e-14 * CLHEP::MeV, -1.0 * CLHEP::eplus,
129 "meson", 0, 0, g4ePDGcode,
131 false,
"pi", g4ePDGcode
134 new G4ParticleDefinition(
135 "g4e_kaon+", 0.493677 * CLHEP::GeV, 5.315e-14 * CLHEP::MeV, +1.0 * CLHEP::eplus,
138 "meson", 0, 0, g4ePDGcode,
140 false,
"kaon", g4ePDGcode
143 new G4ParticleDefinition(
144 "g4e_kaon-", 0.493677 * CLHEP::GeV, 5.315e-14 * CLHEP::MeV, -1.0 * CLHEP::eplus,
147 "meson", 0, 0, g4ePDGcode,
149 false,
"kaon", g4ePDGcode
152 new G4ParticleDefinition(
153 "g4e_proton", 0.9382723 * CLHEP::GeV, 0.0 * CLHEP::MeV, +1.0 * CLHEP::eplus,
156 "baryon", 0, +1, g4ePDGcode,
158 false,
"nucleon", g4ePDGcode, 2.792847351 * muNucleon
161 new G4ParticleDefinition(
162 "g4e_anti_proton", 0.9382723 * CLHEP::GeV, 0.0 * CLHEP::MeV, -1.0 * CLHEP::eplus,
165 "baryon", 0, -1, g4ePDGcode,
167 false,
"nucleon", g4ePDGcode, -2.792847351 * muNucleon
170 new G4ParticleDefinition(
171 "g4e_deuteron", 1.875613 * CLHEP::GeV, 0.0 * CLHEP::MeV, +1.0 * CLHEP::eplus,
174 "nucleus", 0, +2, g4ePDGcode,
176 false,
"static", g4ePDGcode, 0.857438230 * muNucleon
180 new G4ParticleDefinition(
181 "g4e_anti_deuteron", 1.875613 * CLHEP::GeV, 0.0 * CLHEP::MeV, -1.0 * CLHEP::eplus,
184 "anti_nucleus", 0, -2, g4ePDGcode,
186 false,
"static", g4ePDGcode, -0.857438230 * muNucleon
200 G4ParticleTable* myParticleTable = G4ParticleTable::GetParticleTable();
202 G4ParticleTable::G4PTblDicIterator* myParticleIterator = myParticleTable->GetIterator();
203 myParticleIterator->reset();
204 while ((*myParticleIterator)()) {
205 G4ParticleDefinition* particle = myParticleIterator->value();
206 G4ProcessManager* pmanager = particle->GetProcessManager();
207 G4String particleName = particle->GetParticleName();
208 if (particleName.compare(0, 4,
"g4e_") == 0) {
209 if (particleName ==
"g4e_gamma") {
210 pmanager->AddDiscreteProcess(
new G4GammaConversion());
211 pmanager->AddDiscreteProcess(
new G4ComptonScattering());
212 pmanager->AddDiscreteProcess(
new G4PhotoElectricEffect());