source: trunk/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsHadronsBinary.cc @ 1321

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

update

File size: 9.1 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//
27// File name:     RadmonPhysicsHadronsBinary.cc
28// Creation date: Nov 2005
29// Main author:   Riccardo Capra <capra@ge.infn.it>
30//
31// Id:            $Id: RadmonPhysicsHadronsBinary.cc,v 1.3 2006/06/29 16:18:47 gunter Exp $
32// Tag:           $Name:  $
33//
34
35#include "RadmonPhysicsHadronsBinary.hh"
36
37#include "G4Proton.hh"
38#include "G4PionPlus.hh"
39#include "G4PionMinus.hh"
40#include "G4Alpha.hh"
41
42#include "G4ProcessManager.hh"
43
44#include "G4LElastic.hh"
45#include "G4TheoFSGenerator.hh"
46#include "G4GeneratorPrecompoundInterface.hh"
47#include "G4PreCompoundModel.hh"
48#include "G4ExcitationHandler.hh"
49#include "G4QGSModel.hh"
50#include "G4QGSParticipants.hh"
51#include "G4ExcitedStringDecay.hh"
52#include "G4QGSMFragmentation.hh"
53#include "G4PiNuclearCrossSection.hh"
54#include "G4HadronElasticProcess.hh"
55#include "G4BinaryCascade.hh"
56#include "G4LEProtonInelastic.hh"
57#include "G4ProtonInelasticProcess.hh"
58#include "G4ProtonInelasticCrossSection.hh"
59#include "G4LEPionPlusInelastic.hh"
60#include "G4PionPlusInelasticProcess.hh"
61#include "G4LEPionMinusInelastic.hh"
62#include "G4PionMinusInelasticProcess.hh"
63#include "G4LEAlphaInelastic.hh"
64#include "G4BinaryLightIonReaction.hh"
65#include "G4AlphaInelasticProcess.hh"
66#include "G4TripathiCrossSection.hh"
67#include "G4IonsShenCrossSection.hh"
68
69
70
71RadmonVSubPhysicsListWithLabel *                RadmonPhysicsHadronsBinary :: New(void) const
72{
73 return new RadmonPhysicsHadronsBinary;
74}
75
76
77
78void                                            RadmonPhysicsHadronsBinary :: ConstructParticle(void)
79{
80 G4Proton::ProtonDefinition();
81 G4PionMinus::PionMinusDefinition();
82 G4Alpha::AlphaDefinition();
83 G4PionPlus::PionPlusDefinition();
84}
85
86
87
88void                                            RadmonPhysicsHadronsBinary :: ConstructProcess(void)
89{
90 // Models
91 G4LElastic * elasticModel(new G4LElastic);
92 
93 G4TheoFSGenerator * qgspModel(new G4TheoFSGenerator());
94 G4GeneratorPrecompoundInterface * cascade(new G4GeneratorPrecompoundInterface());
95 cascade->SetDeExcitation(new G4PreCompoundModel(new G4ExcitationHandler()));
96 qgspModel->SetTransport(cascade);
97 G4QGSModel<G4QGSParticipants> * stringModel(new G4QGSModel<G4QGSParticipants>);
98 stringModel->SetFragmentationModel(new G4ExcitedStringDecay(new G4QGSMFragmentation()));
99 qgspModel->SetHighEnergyGenerator(stringModel);
100 qgspModel->SetMinEnergy(20*GeV);
101 qgspModel->SetMaxEnergy(100*TeV);
102 
103 G4PiNuclearCrossSection * piNuclear(new G4PiNuclearCrossSection());
104
105
106 
107 
108 
109 // Protons
110 G4ProcessManager * manager(G4Proton::ProtonDefinition()->GetProcessManager());
111
112
113
114 G4HadronElasticProcess * protonElasticProcess(new G4HadronElasticProcess());
115 protonElasticProcess->RegisterMe(elasticModel);
116 manager->AddDiscreteProcess(protonElasticProcess);
117
118
119
120 G4BinaryCascade * protonBinaryCascadeModel(new G4BinaryCascade());
121 protonBinaryCascadeModel->SetMaxEnergy(10.*GeV);
122
123 G4LEProtonInelastic * protonLEPModel(new G4LEProtonInelastic());
124 protonLEPModel->SetMinEnergy(8.*GeV);
125 protonLEPModel->SetMaxEnergy(25.*GeV);
126
127 G4ProtonInelasticProcess * protonInelasticProcess(new G4ProtonInelasticProcess());
128 protonInelasticProcess->AddDataSet(new G4ProtonInelasticCrossSection());
129 protonInelasticProcess->RegisterMe(protonBinaryCascadeModel);
130 protonInelasticProcess->RegisterMe(protonLEPModel);
131 protonInelasticProcess->RegisterMe(qgspModel);
132 manager->AddDiscreteProcess(protonInelasticProcess);
133
134
135
136
137
138 // Pi+
139 manager=G4PionPlus::PionPlusDefinition()->GetProcessManager();
140
141
142
143 G4HadronElasticProcess * pionPlusElasticProcess(new G4HadronElasticProcess());
144 pionPlusElasticProcess->RegisterMe(elasticModel);
145 manager->AddDiscreteProcess(pionPlusElasticProcess);
146
147
148
149 G4LEPionPlusInelastic * pionPlusLEPModel(new G4LEPionPlusInelastic());
150 pionPlusLEPModel->SetMinEnergy(0.*GeV);
151 pionPlusLEPModel->SetMaxEnergy(25.*GeV);
152
153 G4PionPlusInelasticProcess * pionPlusInelasticProcess(new G4PionPlusInelasticProcess());
154 pionPlusInelasticProcess->AddDataSet(piNuclear);
155 pionPlusInelasticProcess->RegisterMe(pionPlusLEPModel);
156 pionPlusInelasticProcess->RegisterMe(qgspModel);
157 manager->AddDiscreteProcess(pionPlusInelasticProcess);
158
159
160
161
162
163 // Pi-
164 manager=G4PionMinus::PionMinusDefinition()->GetProcessManager();
165
166
167
168 G4HadronElasticProcess * pionMinusElasticProcess(new G4HadronElasticProcess());
169 pionMinusElasticProcess->RegisterMe(elasticModel);
170 manager->AddDiscreteProcess(pionMinusElasticProcess);
171
172
173
174 G4LEPionMinusInelastic * pionMinusLEPModel(new G4LEPionMinusInelastic());
175 pionMinusLEPModel->SetMinEnergy(0.*GeV);
176 pionMinusLEPModel->SetMaxEnergy(25.*GeV);
177
178 G4PionMinusInelasticProcess * pionMinusInelasticProcess(new G4PionMinusInelasticProcess());
179 pionMinusInelasticProcess->AddDataSet(piNuclear);
180 pionMinusInelasticProcess->RegisterMe(pionMinusLEPModel);
181 pionMinusInelasticProcess->RegisterMe(qgspModel);
182 manager->AddDiscreteProcess(pionMinusInelasticProcess);
183
184
185
186
187
188 // Alpha
189 manager=G4Alpha::AlphaDefinition()->GetProcessManager();
190
191
192
193 G4HadronElasticProcess * alphaElasticProcess(new G4HadronElasticProcess());
194 alphaElasticProcess->RegisterMe(elasticModel);
195 manager->AddDiscreteProcess(alphaElasticProcess);
196
197
198
199 G4LEAlphaInelastic * alphaLEPModel(new G4LEAlphaInelastic());
200 alphaLEPModel->SetMinEnergy(0.*GeV);
201 alphaLEPModel->SetMaxEnergy(25.*GeV);
202
203 G4BinaryLightIonReaction * alphaBinaryModel(new G4BinaryLightIonReaction());
204 alphaLEPModel->SetMinEnergy(80.*MeV);
205 alphaLEPModel->SetMaxEnergy(110.*GeV);
206 
207 G4AlphaInelasticProcess * alphaInelasticProcess(new G4AlphaInelasticProcess());
208 alphaInelasticProcess->AddDataSet(new G4TripathiCrossSection());
209 alphaInelasticProcess->AddDataSet(new G4IonsShenCrossSection());
210 alphaInelasticProcess->RegisterMe(alphaLEPModel);
211 alphaInelasticProcess->RegisterMe(alphaBinaryModel);
212 manager->AddDiscreteProcess(alphaInelasticProcess);
213}
214
215
216
217void                                            RadmonPhysicsHadronsBinary :: SetCuts(void)
218{
219}
220
221
222
223
224
225const RadmonPhysicsInfoList &                   RadmonPhysicsHadronsBinary :: Provides(void) const
226{
227 if (infoList.GetNPhysicsInfos()==0)
228 {
229  RadmonPhysicsInfo info;
230 
231  info.SetProcessName("Elastic");
232  info.SetParticleDefinition(G4Proton::ProtonDefinition());
233  info.SetMinEnergy(0.*eV);
234  info.SetMaxEnergy(DBL_MAX);
235  infoList.InsertPhysicsInfo(info);
236
237  info.SetProcessName("Inelastic");
238  info.SetParticleDefinition(G4Proton::ProtonDefinition());
239  info.SetMinEnergy(0.*eV);
240  info.SetMaxEnergy(100.*TeV);
241  infoList.InsertPhysicsInfo(info);
242
243  info.SetProcessName("Elastic");
244  info.SetParticleDefinition(G4PionPlus::PionPlusDefinition());
245  info.SetMinEnergy(0.*eV);
246  info.SetMaxEnergy(DBL_MAX);
247  infoList.InsertPhysicsInfo(info);
248
249  info.SetProcessName("Inelastic");
250  info.SetParticleDefinition(G4PionPlus::PionPlusDefinition());
251  info.SetMinEnergy(0.*eV);
252  info.SetMaxEnergy(100.*TeV);
253  infoList.InsertPhysicsInfo(info);
254
255  info.SetProcessName("Elastic");
256  info.SetParticleDefinition(G4PionMinus::PionMinusDefinition());
257  info.SetMinEnergy(0.*eV);
258  info.SetMaxEnergy(DBL_MAX);
259  infoList.InsertPhysicsInfo(info);
260
261  info.SetProcessName("Inelastic");
262  info.SetParticleDefinition(G4PionMinus::PionMinusDefinition());
263  info.SetMinEnergy(0.*eV);
264  info.SetMaxEnergy(100.*TeV);
265  infoList.InsertPhysicsInfo(info);
266
267  info.SetProcessName("Elastic");
268  info.SetParticleDefinition(G4Alpha::AlphaDefinition());
269  info.SetMinEnergy(0.*eV);
270  info.SetMaxEnergy(DBL_MAX);
271  infoList.InsertPhysicsInfo(info);
272
273  info.SetProcessName("Inelastic");
274  info.SetParticleDefinition(G4Alpha::AlphaDefinition());
275  info.SetMinEnergy(0.*eV);
276  info.SetMaxEnergy(110.*GeV);
277  infoList.InsertPhysicsInfo(info);
278 }
279 
280 return infoList;
281}
Note: See TracBrowser for help on using the repository browser.