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

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

tag geant4.9.4 beta 1 + modifs locales

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.3 2010/04/07 01:29:00 asaim 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 G4hMultipleScattering();
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 G4hMultipleScattering();
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 G4hMultipleScattering();
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 G4hMultipleScattering();
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 G4hMultipleScattering();
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.