source: trunk/source/physics_lists/builders/src/G4QAtomicPhysics.cc @ 1347

Last change on this file since 1347 was 1337, checked in by garnier, 14 years ago

tag geant4.9.4 beta 1 + modifs locales

File size: 7.7 KB
Line 
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: G4QAtomicPhysics.cc,v 1.2 2010/06/03 14:37:24 gunter Exp $
27// GEANT4 tag $Name: geant4-09-04-beta-01 $
28//
29//---------------------------------------------------------------------------
30//
31// ClassName:   G4QAtomicPhysics
32//
33// Author:      M. Kosov 20.11.2009 (similar to G4QAtomicPhysics)
34//
35// Modified:
36//
37//----------------------------------------------------------------------------
38//
39
40#include "G4QAtomicPhysics.hh"
41#include "G4ParticleDefinition.hh"
42#include "G4ProcessManager.hh"
43#include "G4LossTableManager.hh"
44#include "G4EmProcessOptions.hh"
45
46#include "G4ComptonScattering.hh"
47#include "G4GammaConversion.hh"
48#include "G4PhotoElectricEffect.hh"
49
50#include "G4eMultipleScattering.hh"
51#include "G4MuMultipleScattering.hh"
52#include "G4hMultipleScattering.hh"
53
54#include "G4eIonisation.hh"
55#include "G4eBremsstrahlung.hh"
56#include "G4eplusAnnihilation.hh"
57
58#include "G4MuIonisation.hh"
59#include "G4MuBremsstrahlung.hh"
60#include "G4MuPairProduction.hh"
61#include "G4hBremsstrahlung.hh"
62#include "G4hPairProduction.hh"
63
64#include "G4hIonisation.hh"
65#include "G4ionIonisation.hh"
66
67#include "G4Gamma.hh"
68#include "G4Electron.hh"
69#include "G4Positron.hh"
70#include "G4MuonPlus.hh"
71#include "G4MuonMinus.hh"
72#include "G4PionPlus.hh"
73#include "G4PionMinus.hh"
74#include "G4KaonPlus.hh"
75#include "G4KaonMinus.hh"
76#include "G4Proton.hh"
77#include "G4AntiProton.hh"
78#include "G4SigmaPlus.hh"
79#include "G4SigmaMinus.hh"
80#include "G4XiMinus.hh"
81#include "G4OmegaMinus.hh"
82#include "G4AntiSigmaPlus.hh"
83#include "G4AntiSigmaMinus.hh"
84#include "G4AntiXiMinus.hh"
85#include "G4AntiOmegaMinus.hh"
86#include "G4Deuteron.hh"
87#include "G4Triton.hh"
88#include "G4He3.hh"
89#include "G4Alpha.hh"
90#include "G4GenericIon.hh"
91
92G4QAtomicPhysics::G4QAtomicPhysics(G4int ver)
93  : G4VPhysicsConstructor("CHIPS Atomic"), verbose(ver)
94{
95  G4LossTableManager::Instance();
96}
97
98G4QAtomicPhysics::G4QAtomicPhysics(G4int ver, const G4String& name)
99  : G4VPhysicsConstructor(name), verbose(ver)
100{
101  G4LossTableManager::Instance();
102}
103
104G4QAtomicPhysics::~G4QAtomicPhysics()
105{}
106
107void G4QAtomicPhysics::ConstructParticle()
108{
109// gamma
110  G4Gamma::Gamma();
111
112// leptons
113  G4Electron::Electron();
114  G4Positron::Positron();
115  G4MuonPlus::MuonPlus();
116  G4MuonMinus::MuonMinus();
117
118// mesons
119  G4PionPlus::PionPlusDefinition();
120  G4PionMinus::PionMinusDefinition();
121  G4KaonPlus::KaonPlusDefinition();
122  G4KaonMinus::KaonMinusDefinition();
123
124// barions
125  G4Proton::Proton();
126  G4AntiProton::AntiProton();
127  G4SigmaPlus::SigmaPlus();
128  G4SigmaMinus::SigmaMinus();
129  G4XiMinus::XiMinus();
130  G4OmegaMinus::OmegaMinus();
131  G4AntiSigmaPlus::AntiSigmaPlus();
132  G4AntiSigmaMinus::AntiSigmaMinus();
133  G4AntiXiMinus::AntiXiMinus();
134  G4AntiOmegaMinus::AntiOmegaMinus();
135
136// ions
137  G4Deuteron::Deuteron();
138  G4Triton::Triton();
139  G4He3::He3();
140  G4Alpha::Alpha();
141  G4GenericIon::GenericIonDefinition();
142}
143
144void G4QAtomicPhysics::ConstructProcess()
145{
146  theParticleIterator->reset();
147  while( (*theParticleIterator)() )
148  {
149    G4ParticleDefinition* particlePointer = theParticleIterator->value();
150    G4ProcessManager* pmanager = particlePointer->GetProcessManager();
151    G4String particle = particlePointer->GetParticleName();
152    if(verbose > 1) G4cout<<"###G4QAtomicPhysics::ConstructProcesses: try "
153                          <<GetPhysicsName()<<" builder for "<<particle<<G4endl;
154    if     ( particle == "gamma")
155    {
156
157      pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
158      pmanager->AddDiscreteProcess(new G4ComptonScattering);
159      pmanager->AddDiscreteProcess(new G4GammaConversion);
160    }
161    else if( particle == "e-")
162    {
163      pmanager->AddProcess(new G4eMultipleScattering(), -1, 1, 1);
164      pmanager->AddProcess(new G4eIonisation,           -1, 2, 2);
165      pmanager->AddProcess(new G4eBremsstrahlung(),     -1,-3, 3);
166    }
167    else if( particle == "e+")
168    {
169      pmanager->AddProcess(new G4eMultipleScattering(), -1, 1, 1);
170      pmanager->AddProcess(new G4eIonisation,           -1, 2, 2);
171      pmanager->AddProcess(new G4eBremsstrahlung,       -1,-3, 3);
172      pmanager->AddProcess(new G4eplusAnnihilation,      0,-1, 4);
173    }
174    else if( particle == "mu+"      || particle == "mu-" )
175    {
176      pmanager->AddProcess(new G4MuMultipleScattering,  -1, 1, 1);
177      pmanager->AddProcess(new G4MuIonisation,          -1, 2, 2);
178      pmanager->AddProcess(new G4MuBremsstrahlung,      -1,-3, 3);
179      pmanager->AddProcess(new G4MuPairProduction,      -1,-4, 4);
180    }
181    else if( particle == "pi-"      || particle == "pi+"         ||
182             particle == "kaon-"    || particle == "kaon+"       ||
183             particle == "proton"   || particle == "anti_proton" ||
184             particle == "tau-"     || particle == "tau+"        ||
185             particle == "deuteron" || particle == "triton"      ||
186             particle == "xi-"      || particle == "anti_xi-"    ||
187             particle == "sigma+"   || particle == "anti_sigma+" ||
188             particle == "sigma-"   || particle == "anti_sigma-" ||
189             particle == "omega-"   || particle == "anti_omega-" )
190    {
191      pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
192      pmanager->AddProcess(new G4hIonisation,         -1, 2, 2);
193      pmanager->AddProcess(new G4hBremsstrahlung,     -1,-3, 3);
194      pmanager->AddProcess(new G4hPairProduction,     -1,-4, 4);
195    }
196    else if(particle == "alpha" || particle == "He3" ||particle == "GenericIon")
197    {
198      pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
199      pmanager->AddProcess(new G4ionIonisation,       -1, 2, 2);
200    }
201    else if (particle == "B+"        || particle == "B-"             ||
202             particle == "D+"        || particle == "D-"             ||
203             particle == "Ds+"       || particle == "Ds-"            ||
204             particle == "lambda_c+" || particle == "anti_lambda_c+" ||
205             particle == "sigma_c+"  || particle == "anti_sigma_c+"  ||
206             particle == "sigma_c++" || particle == "anti_sigma_c++" ||
207             particle == "xi_c+"     || particle == "anti_xi_c+"     )
208    {
209      pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
210      pmanager->AddProcess(new G4hIonisation,         -1, 2, 2);
211    }
212  }
213  G4EmProcessOptions opt;
214  opt.SetVerbose(verbose);
215}
Note: See TracBrowser for help on using the repository browser.