Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4QAtomicPhysics.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// $Id$
27//
28//---------------------------------------------------------------------------
29//
30// ClassName: G4QAtomicPhysics
31//
32// Author: M. Kosov 20.11.2009 (similar to G4QAtomicPhysics)
33//
34// Modified:
35//
36//----------------------------------------------------------------------------
37//
38
39#include "G4QAtomicPhysics.hh"
41#include "G4ProcessManager.hh"
42#include "G4LossTableManager.hh"
43#include "G4EmProcessOptions.hh"
44
46#include "G4GammaConversion.hh"
48
52
53#include "G4eIonisation.hh"
54#include "G4eBremsstrahlung.hh"
56
57#include "G4MuIonisation.hh"
58#include "G4MuBremsstrahlung.hh"
59#include "G4MuPairProduction.hh"
60#include "G4hBremsstrahlung.hh"
61#include "G4hPairProduction.hh"
62
63#include "G4hIonisation.hh"
64#include "G4ionIonisation.hh"
65
66#include "G4Gamma.hh"
67#include "G4Electron.hh"
68#include "G4Positron.hh"
69#include "G4MuonPlus.hh"
70#include "G4MuonMinus.hh"
71#include "G4PionPlus.hh"
72#include "G4PionMinus.hh"
73#include "G4KaonPlus.hh"
74#include "G4KaonMinus.hh"
75#include "G4Proton.hh"
76#include "G4AntiProton.hh"
77#include "G4SigmaPlus.hh"
78#include "G4SigmaMinus.hh"
79#include "G4XiMinus.hh"
80#include "G4OmegaMinus.hh"
81#include "G4AntiSigmaPlus.hh"
82#include "G4AntiSigmaMinus.hh"
83#include "G4AntiXiMinus.hh"
84#include "G4AntiOmegaMinus.hh"
85#include "G4Deuteron.hh"
86#include "G4Triton.hh"
87#include "G4He3.hh"
88#include "G4Alpha.hh"
89#include "G4GenericIon.hh"
90#include "G4BuilderType.hh"
91
93 : G4VPhysicsConstructor("CHIPS Atomic"), verbose(ver)
94{
97}
98
100 : G4VPhysicsConstructor(name), verbose(ver)
101{
104}
105
107{}
108
110{
111// gamma
113
114// leptons
119
120// mesons
125
126// barions
137
138// ions
141 G4He3::He3();
144}
145
147{
149 while( (*theParticleIterator)() )
150 {
151 G4ParticleDefinition* particlePointer = theParticleIterator->value();
152 G4ProcessManager* pmanager = particlePointer->GetProcessManager();
153 G4String particle = particlePointer->GetParticleName();
154 if(verbose > 1) G4cout<<"###G4QAtomicPhysics::ConstructProcesses: try "
155 <<GetPhysicsName()<<" builder for "<<particle<<G4endl;
156 if ( particle == "gamma")
157 {
158
162 }
163 else if( particle == "e-")
164 {
165 pmanager->AddProcess(new G4eMultipleScattering(), -1, 1, 1);
166 pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
167 pmanager->AddProcess(new G4eBremsstrahlung(), -1,-3, 3);
168 }
169 else if( particle == "e+")
170 {
171 pmanager->AddProcess(new G4eMultipleScattering(), -1, 1, 1);
172 pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
173 pmanager->AddProcess(new G4eBremsstrahlung, -1,-3, 3);
174 pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 4);
175 }
176 else if( particle == "mu+" || particle == "mu-" )
177 {
178 pmanager->AddProcess(new G4MuMultipleScattering, -1, 1, 1);
179 pmanager->AddProcess(new G4MuIonisation, -1, 2, 2);
180 pmanager->AddProcess(new G4MuBremsstrahlung, -1,-3, 3);
181 pmanager->AddProcess(new G4MuPairProduction, -1,-4, 4);
182 }
183 else if( particle == "pi-" || particle == "pi+" ||
184 particle == "kaon-" || particle == "kaon+" ||
185 particle == "proton" || particle == "anti_proton" ||
186 particle == "tau-" || particle == "tau+" ||
187 particle == "deuteron" || particle == "triton" ||
188 particle == "xi-" || particle == "anti_xi-" ||
189 particle == "sigma+" || particle == "anti_sigma+" ||
190 particle == "sigma-" || particle == "anti_sigma-" ||
191 particle == "omega-" || particle == "anti_omega-" )
192 {
193 pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
194 pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
195 pmanager->AddProcess(new G4hBremsstrahlung, -1,-3, 3);
196 pmanager->AddProcess(new G4hPairProduction, -1,-4, 4);
197 }
198 else if(particle == "alpha" || particle == "He3" ||particle == "GenericIon")
199 {
200 pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
201 pmanager->AddProcess(new G4ionIonisation, -1, 2, 2);
202 }
203 else if (particle == "B+" || particle == "B-" ||
204 particle == "D+" || particle == "D-" ||
205 particle == "Ds+" || particle == "Ds-" ||
206 particle == "lambda_c+" || particle == "anti_lambda_c+" ||
207 particle == "sigma_c+" || particle == "anti_sigma_c+" ||
208 particle == "sigma_c++" || particle == "anti_sigma_c++" ||
209 particle == "xi_c+" || particle == "anti_xi_c+" )
210 {
211 pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
212 pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
213 }
214 }
216 opt.SetVerbose(verbose);
217}
@ bElectromagnetic
int G4int
Definition: G4Types.hh:66
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
static G4Alpha * Alpha()
Definition: G4Alpha.cc:89
static G4AntiOmegaMinus * AntiOmegaMinus()
static G4AntiProton * AntiProton()
Definition: G4AntiProton.cc:93
static G4AntiSigmaMinus * AntiSigmaMinus()
static G4AntiSigmaPlus * AntiSigmaPlus()
static G4AntiXiMinus * AntiXiMinus()
static G4Deuteron * Deuteron()
Definition: G4Deuteron.cc:94
static G4Electron * Electron()
Definition: G4Electron.cc:94
void SetVerbose(G4int val, const G4String &name="all")
static G4Gamma * Gamma()
Definition: G4Gamma.cc:86
static G4GenericIon * GenericIonDefinition()
Definition: G4GenericIon.cc:87
static G4He3 * He3()
Definition: G4He3.cc:94
static G4KaonMinus * KaonMinusDefinition()
Definition: G4KaonMinus.cc:108
static G4KaonPlus * KaonPlusDefinition()
Definition: G4KaonPlus.cc:108
static G4LossTableManager * Instance()
static G4MuonMinus * MuonMinus()
Definition: G4MuonMinus.cc:100
static G4MuonPlus * MuonPlus()
Definition: G4MuonPlus.cc:99
static G4OmegaMinus * OmegaMinus()
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
static G4PionMinus * PionMinusDefinition()
Definition: G4PionMinus.cc:93
static G4PionPlus * PionPlusDefinition()
Definition: G4PionPlus.cc:93
static G4Positron * Positron()
Definition: G4Positron.cc:94
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4int AddProcess(G4VProcess *aProcess, G4int ordAtRestDoIt=ordInActive, G4int ordAlongSteptDoIt=ordInActive, G4int ordPostStepDoIt=ordInActive)
static G4Proton * Proton()
Definition: G4Proton.cc:93
virtual void ConstructParticle()
virtual ~G4QAtomicPhysics()
virtual void ConstructProcess()
G4QAtomicPhysics(G4int ver=0)
static G4SigmaMinus * SigmaMinus()
static G4SigmaPlus * SigmaPlus()
Definition: G4SigmaPlus.cc:108
static G4Triton * Triton()
Definition: G4Triton.cc:95
const G4String & GetPhysicsName() const
G4ParticleTable::G4PTblDicIterator * theParticleIterator
static G4XiMinus * XiMinus()
Definition: G4XiMinus.cc:106