source: trunk/examples/extended/runAndEvent/RE01/src/RE01IonPhysics.cc@ 1036

Last change on this file since 1036 was 807, checked in by garnier, 17 years ago

update

File size: 5.4 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//
27// $Id: RE01IonPhysics.cc,v 1.2 2006/06/29 17:44:02 gunter Exp $
28// GEANT4 tag $Name: $
29//
30
31#include "RE01IonPhysics.hh"
32
33#include "G4ParticleTable.hh"
34#include "G4ProcessManager.hh"
35#include "G4IonConstructor.hh"
36
37// processes
38#include "G4MultipleScattering.hh"
39#include "G4hIonisation.hh"
40#include "G4ionIonisation.hh"
41#include "G4HadronElasticProcess.hh"
42#include "G4DeuteronInelasticProcess.hh"
43#include "G4TritonInelasticProcess.hh"
44#include "G4AlphaInelasticProcess.hh"
45
46// models
47#include "G4LElastic.hh"
48#include "G4LEDeuteronInelastic.hh"
49#include "G4LETritonInelastic.hh"
50#include "G4LEAlphaInelastic.hh"
51
52RE01IonPhysics::RE01IonPhysics(const G4String& name)
53 : G4VPhysicsConstructor(name)
54{;}
55
56
57RE01IonPhysics::~RE01IonPhysics()
58{;}
59
60
61void RE01IonPhysics::ConstructParticle()
62{
63 // Construct light ions (d, t, 3He, alpha, and generic ion)
64 G4IonConstructor ionConstruct;
65 ionConstruct.ConstructParticle();
66}
67
68
69void RE01IonPhysics::ConstructProcess()
70{
71 // Hadronic Elastic Process and Model (for all ions except generic ion)
72
73 G4HadronElasticProcess* elasticProcess = new G4HadronElasticProcess();
74 G4LElastic* elasticModel = new G4LElastic();
75 elasticProcess->RegisterMe(elasticModel);
76
77 // Hadronic inelastic models
78
79 G4ProcessManager * pManager = 0;
80
81 ///////////////////
82 // //
83 // Deuteron //
84 // //
85 ///////////////////
86
87 pManager = G4Deuteron::Deuteron()->GetProcessManager();
88
89 // EM processes
90 pManager->AddProcess(new G4MultipleScattering(), -1, 1, 1);
91 pManager->AddProcess(new G4hIonisation(), -1, 2, 2);
92
93 // hadron elastic
94 pManager->AddDiscreteProcess(elasticProcess);
95
96 // hadron inelastic
97 G4DeuteronInelasticProcess* dinelProc = new G4DeuteronInelasticProcess();
98 G4LEDeuteronInelastic* LEPdModel = new G4LEDeuteronInelastic();
99 dinelProc->RegisterMe(LEPdModel);
100 pManager->AddDiscreteProcess(dinelProc);
101
102 ///////////////////
103 // //
104 // Triton //
105 // //
106 ///////////////////
107
108 pManager = G4Triton::Triton()->GetProcessManager();
109
110 // EM processes
111 pManager->AddProcess(new G4MultipleScattering(), -1, 1, 1);
112 pManager->AddProcess(new G4hIonisation(), -1, 2, 2);
113
114 // hadron elastic
115 pManager->AddDiscreteProcess(elasticProcess);
116
117 // hadron inelastic
118 G4TritonInelasticProcess* tinelProc = new G4TritonInelasticProcess();
119 G4LETritonInelastic* LEPtModel = new G4LETritonInelastic();
120 tinelProc->RegisterMe(LEPtModel);
121 pManager->AddDiscreteProcess(tinelProc);
122
123 ///////////////////
124 // //
125 // 3He //
126 // //
127 ///////////////////
128
129 pManager = G4He3::He3()->GetProcessManager();
130
131 // EM processes
132 pManager->AddProcess(new G4MultipleScattering(), -1, 1, 1);
133 pManager->AddProcess(new G4hIonisation(), -1, 2, 2);
134
135 // hadron elastic
136 pManager->AddDiscreteProcess(elasticProcess);
137
138 // NO INELASTIC PROCESS AVAILABLE FOR 3HE
139
140 ///////////////////
141 // //
142 // Alpha //
143 // //
144 ///////////////////
145
146 pManager = G4Alpha::Alpha()->GetProcessManager();
147
148 // EM processes
149 pManager->AddProcess(new G4MultipleScattering(), -1, 1, 1);
150 pManager->AddProcess(new G4hIonisation(), -1, 2, 2);
151
152 // hadron elastic
153 pManager->AddDiscreteProcess(elasticProcess);
154
155 // hadron inelastic
156 G4AlphaInelasticProcess* ainelProc = new G4AlphaInelasticProcess();
157 G4LEAlphaInelastic* LEPaModel = new G4LEAlphaInelastic();
158 ainelProc->RegisterMe(LEPaModel);
159 pManager->AddDiscreteProcess(ainelProc);
160
161 ///////////////////
162 // //
163 // generic ion //
164 // //
165 ///////////////////
166
167 pManager = G4GenericIon::GenericIon()->GetProcessManager();
168
169 // Only EM processes for generic ion
170 pManager->AddProcess(new G4MultipleScattering(), -1, 1, 1);
171 pManager->AddProcess(new G4ionIonisation(), -1, 2, 2);
172
173}
Note: See TracBrowser for help on using the repository browser.