source: trunk/examples/extended/analysis/A01/src/A01IonPhysics.cc@ 1230

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

update

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