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