source: trunk/examples/extended/runAndEvent/RE02/src/RE02IonPhysics.cc@ 1036

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

update

File size: 8.6 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: RE02IonPhysics.cc,v 1.2 2006/06/29 17:45:21 gunter Exp $
27// --------------------------------------------------------------
28//
29// 13-Oct-2003 Add Comment for Ionisation of Generic Ion by T. Koi
30// 05-Jan-2004 Change G. Ion Ionisation from G4hIonisation
31// to G4ionIonisation T. Koi
32// 18-Nov-2005 Add Inelastic process with G4BinaryLightIonReaction.
33// T. Aso
34
35#include "RE02IonPhysics.hh"
36
37#include "globals.hh"
38#include "G4ios.hh"
39#include <iomanip>
40
41
42RE02IonPhysics::RE02IonPhysics(const G4String& name)
43 : G4VPhysicsConstructor(name)
44{
45}
46
47RE02IonPhysics::~RE02IonPhysics()
48{
49}
50
51#include "G4ParticleDefinition.hh"
52#include "G4ParticleTable.hh"
53
54#include "G4ProcessManager.hh"
55
56
57void RE02IonPhysics::ConstructProcess()
58{
59 G4ProcessManager * pManager = 0;
60
61
62 // Generic Ion
63 pManager = G4GenericIon::GenericIon()->GetProcessManager();
64
65 // add process
66 G4VProcess* thegionMultipleScattering = new G4MultipleScattering();
67 //
68 // G4hIonization may be not able to use for Geanric Ion in future
69 // Please take care using this physics list after v5.2.p02
70 // G4VProcess* thegionIonisation = new G4hIonisation();
71 //
72 // From V6.0 hIonisation does not work for GenericIon
73 G4VProcess* thegionIonisation = new G4ionIonisation();
74
75 // Inelastic process
76 G4HadronInelasticProcess* thegionInelastic =
77 new G4HadronInelasticProcess("IonInelastic",G4GenericIon::GenericIon());
78 thegionInelastic->AddDataSet(new G4TripathiCrossSection);
79 thegionInelastic->AddDataSet(new G4IonsShenCrossSection);
80 G4BinaryLightIonReaction* thegionBCModel = new G4BinaryLightIonReaction;
81 thegionInelastic->RegisterMe(thegionBCModel);
82
83 //
84 pManager->AddProcess(thegionIonisation);
85 pManager->AddProcess(thegionMultipleScattering);
86 pManager->AddDiscreteProcess(thegionInelastic);
87 //
88 // set ordering for AlongStepDoIt
89 pManager->SetProcessOrdering(thegionMultipleScattering, idxAlongStep,1);
90 pManager->SetProcessOrdering(thegionIonisation, idxAlongStep,2);
91 //
92 // set ordering for PostStepDoIt
93 pManager->SetProcessOrdering(thegionMultipleScattering, idxPostStep,1);
94 pManager->SetProcessOrdering(thegionIonisation, idxPostStep,2);
95
96
97 // Deuteron
98 pManager = G4Deuteron::Deuteron()->GetProcessManager();
99
100 // add process
101 G4HadronElasticProcess* thedueElasticProcess
102 = new G4HadronElasticProcess();
103 G4LElastic* thedueElasticModel = new G4LElastic();
104 thedueElasticProcess->RegisterMe(thedueElasticModel);
105 pManager->AddDiscreteProcess(thedueElasticProcess);
106
107 G4DeuteronInelasticProcess* theDeuteronInelasticProcess
108 = new G4DeuteronInelasticProcess();
109
110 G4LEDeuteronInelastic* theDeuteronLEPModel = new G4LEDeuteronInelastic();
111 theDeuteronInelasticProcess->RegisterMe(theDeuteronLEPModel);
112 pManager->AddDiscreteProcess(theDeuteronInelasticProcess);
113
114 G4VProcess* thedueMultipleScattering = new G4MultipleScattering();
115 G4VProcess* thedueIonisation = new G4hIonisation();
116 //
117 pManager->AddProcess(thedueIonisation);
118 pManager->AddProcess(thedueMultipleScattering);
119 //
120 // set ordering for AlongStepDoIt
121 pManager->SetProcessOrdering(thedueMultipleScattering, idxAlongStep,1);
122 pManager->SetProcessOrdering(thedueIonisation, idxAlongStep,2);
123 //
124 // set ordering for PostStepDoIt
125 pManager->SetProcessOrdering(thedueMultipleScattering, idxPostStep,1);
126 pManager->SetProcessOrdering(thedueIonisation, idxPostStep,2);
127
128
129 // Triton
130 pManager = G4Triton::Triton()->GetProcessManager();
131
132 // add process
133 G4HadronElasticProcess* thetriElasticProcess
134 = new G4HadronElasticProcess();
135 G4LElastic* thetriElasticModel = new G4LElastic();
136 thetriElasticProcess->RegisterMe(thetriElasticModel);
137 pManager->AddDiscreteProcess(thetriElasticProcess);
138
139 G4TritonInelasticProcess* theTritonInelasticProcess
140 = new G4TritonInelasticProcess();
141
142 G4LETritonInelastic* theTritonLEPModel = new G4LETritonInelastic();
143 theTritonInelasticProcess->RegisterMe(theTritonLEPModel);
144 pManager->AddDiscreteProcess(theTritonInelasticProcess);
145
146 G4VProcess* thetriMultipleScattering = new G4MultipleScattering();
147 G4VProcess* thetriIonisation = new G4hIonisation();
148 //
149 pManager->AddProcess(thetriIonisation);
150 pManager->AddProcess(thetriMultipleScattering);
151 //
152 // set ordering for AlongStepDoIt
153 pManager->SetProcessOrdering(thetriMultipleScattering, idxAlongStep,1);
154 pManager->SetProcessOrdering(thetriIonisation, idxAlongStep,2);
155 //
156 // set ordering for PostStepDoIt
157 pManager->SetProcessOrdering(thetriMultipleScattering, idxPostStep,1);
158 pManager->SetProcessOrdering(thetriIonisation, idxPostStep,2);
159
160
161 // Alpha
162 pManager = G4Alpha::Alpha()->GetProcessManager();
163
164 // add processes
165 G4HadronElasticProcess* thealElasticProcess
166 = new G4HadronElasticProcess();
167 G4LElastic* thealElasticModel = new G4LElastic();
168 thealElasticProcess->RegisterMe(thealElasticModel);
169 pManager->AddDiscreteProcess(thealElasticProcess);
170
171 G4AlphaInelasticProcess* theAlphaInelasticProcess
172 = new G4AlphaInelasticProcess();
173
174 G4LEAlphaInelastic* theAlphaLEPModel = new G4LEAlphaInelastic();
175 theAlphaInelasticProcess->RegisterMe(theAlphaLEPModel);
176 pManager->AddDiscreteProcess(theAlphaInelasticProcess);
177
178 G4VProcess* thealpMultipleScattering = new G4MultipleScattering();
179 G4VProcess* thealpIonisation = new G4hIonisation();
180 //
181 pManager->AddProcess(thealpIonisation);
182 pManager->AddProcess(thealpMultipleScattering);
183 //
184 // set ordering for AlongStepDoIt
185 pManager->SetProcessOrdering(thealpMultipleScattering, idxAlongStep,1);
186 pManager->SetProcessOrdering(thealpIonisation, idxAlongStep,2);
187 //
188 // set ordering for PostStepDoIt
189 pManager->SetProcessOrdering(thealpMultipleScattering, idxPostStep,1);
190 pManager->SetProcessOrdering(thealpIonisation, idxPostStep,2);
191
192
193 // He3
194 pManager = G4He3::He3()->GetProcessManager();
195
196 // add processes
197 G4HadronElasticProcess* thehe3ElasticProcess
198 = new G4HadronElasticProcess();
199 G4LElastic* thehe3ElasticModel = new G4LElastic();
200 thehe3ElasticProcess->RegisterMe(thehe3ElasticModel);
201 pManager->AddDiscreteProcess(thehe3ElasticProcess);
202
203 G4VProcess* thehe3MultipleScattering = new G4MultipleScattering();
204 G4VProcess* thehe3Ionisation = new G4hIonisation();
205 //
206 pManager->AddProcess(thehe3Ionisation);
207 pManager->AddProcess(thehe3MultipleScattering);
208 //
209 // set ordering for AlongStepDoIt
210 pManager->SetProcessOrdering(thehe3MultipleScattering, idxAlongStep,1);
211 pManager->SetProcessOrdering(thehe3Ionisation, idxAlongStep,2);
212 //
213 // set ordering for PostStepDoIt
214 pManager->SetProcessOrdering(thehe3MultipleScattering, idxPostStep,1);
215 pManager->SetProcessOrdering(thehe3Ionisation, idxPostStep,2);
216
217}
218
219
220
Note: See TracBrowser for help on using the repository browser.