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

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

update

File size: 8.0 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: 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.