/[PAMELA software]/PamG4/src/HadronPhysics.cc
ViewVC logotype

Contents of /PamG4/src/HadronPhysics.cc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (download) (vendor branch)
Tue Dec 13 16:20:39 2005 UTC (18 years, 11 months ago) by cafagna
Branch: start, MAIN
CVS Tags: v1r0, bogo, HEAD
Changes since 1.1: +0 -0 lines
Geant4 code for ND and Calorimeter

1
2 #include "HadronPhysics.hh"
3
4 #include "globals.hh"
5 #include "G4ios.hh"
6
7
8 HadronPhysics::HadronPhysics(const G4String& name)
9 : G4VPhysicsConstructor(name)
10 {
11 }
12
13 HadronPhysics::~HadronPhysics()
14 {
15 }
16
17 #include "G4ParticleDefinition.hh"
18 #include "G4ParticleTable.hh"
19
20 // Nuclei
21 #include "G4MesonConstructor.hh"
22 #include "G4BaryonConstructor.hh"
23 #include "G4ShortLivedConstructor.hh"
24
25 void HadronPhysics::ConstructParticle()
26 {
27 // Construct all mesons
28 G4MesonConstructor pMesonConstructor;
29 pMesonConstructor.ConstructParticle();
30
31 // Construct all barions
32 G4BaryonConstructor pBaryonConstructor;
33 pBaryonConstructor.ConstructParticle();
34
35 // Construct resonaces and quarks
36 G4ShortLivedConstructor pShortLivedConstructor;
37 pShortLivedConstructor.ConstructParticle();
38
39 }
40
41
42 #include "G4ProcessManager.hh"
43
44
45 void HadronPhysics::ConstructProcess()
46 {
47 G4ProcessManager * pManager = 0;
48
49 // Elastic Process
50 theElasticModel = new G4LElastic();
51 theElasticProcess.RegisterMe(theElasticModel);
52
53 // PionPlus
54 pManager = G4PionPlus::PionPlus()->GetProcessManager();
55 // add process
56 pManager->AddDiscreteProcess(&theElasticProcess);
57
58 theLEPionPlusModel = new G4LEPionPlusInelastic();
59 theHEPionPlusModel = new G4HEPionPlusInelastic();
60 thePionPlusInelastic.RegisterMe(theLEPionPlusModel);
61 thePionPlusInelastic.RegisterMe(theHEPionPlusModel);
62 pManager->AddDiscreteProcess(&thePionPlusInelastic);
63
64 pManager->AddProcess(&thePionPlusIonisation, ordInActive,2, 2);
65
66 pManager->AddProcess(&thePionPlusMult);
67 pManager->SetProcessOrdering(&thePionPlusMult, idxAlongStep, 1);
68 pManager->SetProcessOrdering(&thePionPlusMult, idxPostStep, 1);
69
70 // PionMinus
71 pManager = G4PionMinus::PionMinus()->GetProcessManager();
72 // add process
73 pManager->AddDiscreteProcess(&theElasticProcess);
74
75 theLEPionMinusModel = new G4LEPionMinusInelastic();
76 theHEPionMinusModel = new G4HEPionMinusInelastic();
77 thePionMinusInelastic.RegisterMe(theLEPionMinusModel);
78 thePionMinusInelastic.RegisterMe(theHEPionMinusModel);
79 pManager->AddDiscreteProcess(&thePionMinusInelastic);
80
81 pManager->AddProcess(&thePionMinusIonisation, ordInActive,2, 2);
82
83 pManager->AddProcess(&thePionMinusMult);
84 pManager->SetProcessOrdering(&thePionMinusMult, idxAlongStep, 1);
85 pManager->SetProcessOrdering(&thePionMinusMult, idxPostStep, 1);
86
87 pManager->AddRestProcess(&thePionMinusAbsorption, ordDefault);
88
89 // KaonPlus
90 pManager = G4KaonPlus::KaonPlus()->GetProcessManager();
91 // add process
92 pManager->AddDiscreteProcess(&theElasticProcess);
93
94 theLEKaonPlusModel = new G4LEKaonPlusInelastic();
95 theHEKaonPlusModel = new G4HEKaonPlusInelastic();
96 theKaonPlusInelastic.RegisterMe(theLEKaonPlusModel);
97 theKaonPlusInelastic.RegisterMe(theHEKaonPlusModel);
98 pManager->AddDiscreteProcess(&theKaonPlusInelastic);
99
100 pManager->AddProcess(&theKaonPlusIonisation, ordInActive,2, 2);
101
102 pManager->AddProcess(&theKaonPlusMult);
103 pManager->SetProcessOrdering(&theKaonPlusMult, idxAlongStep, 1);
104 pManager->SetProcessOrdering(&theKaonPlusMult, idxPostStep, 1);
105
106 // KaonMinus
107 pManager = G4KaonMinus::KaonMinus()->GetProcessManager();
108 // add process
109 pManager->AddDiscreteProcess(&theElasticProcess);
110
111 theLEKaonMinusModel = new G4LEKaonMinusInelastic();
112 theHEKaonMinusModel = new G4HEKaonMinusInelastic();
113 theKaonMinusInelastic.RegisterMe(theLEKaonMinusModel);
114 theKaonMinusInelastic.RegisterMe(theHEKaonMinusModel);
115 pManager->AddDiscreteProcess(&theKaonMinusInelastic);
116
117 pManager->AddProcess(&theKaonMinusIonisation, ordInActive,2, 2);
118
119 pManager->AddProcess(&theKaonMinusMult);
120 pManager->SetProcessOrdering(&theKaonMinusMult, idxAlongStep, 1);
121 pManager->SetProcessOrdering(&theKaonMinusMult, idxPostStep, 1);
122
123 pManager->AddRestProcess(&theKaonMinusAbsorption, ordDefault);
124
125 // KaonZeroL
126 pManager = G4KaonZeroLong::KaonZeroLong()->GetProcessManager();
127 // add process
128 pManager->AddDiscreteProcess(&theElasticProcess);
129
130 theLEKaonZeroLModel = new G4LEKaonZeroLInelastic();
131 theHEKaonZeroLModel = new G4HEKaonZeroInelastic();
132 theKaonZeroLInelastic.RegisterMe(theLEKaonZeroLModel);
133 theKaonZeroLInelastic.RegisterMe(theHEKaonZeroLModel);
134 pManager->AddDiscreteProcess(&theKaonZeroLInelastic);
135
136 // KaonZeroS
137 pManager = G4KaonZeroShort::KaonZeroShort()->GetProcessManager();
138 // add process
139 pManager->AddDiscreteProcess(&theElasticProcess);
140
141 theLEKaonZeroSModel = new G4LEKaonZeroSInelastic();
142 theHEKaonZeroSModel = new G4HEKaonZeroInelastic();
143 theKaonZeroSInelastic.RegisterMe(theLEKaonZeroSModel);
144 theKaonZeroSInelastic.RegisterMe(theHEKaonZeroSModel);
145 pManager->AddDiscreteProcess(&theKaonZeroSInelastic);
146
147 // Proton
148 pManager = G4Proton::Proton()->GetProcessManager();
149 // add process
150 pManager->AddDiscreteProcess(&theElasticProcess);
151
152 theLEProtonModel = new G4LEProtonInelastic();
153 theHEProtonModel = new G4HEProtonInelastic();
154 theProtonInelastic.RegisterMe(theLEProtonModel);
155 theProtonInelastic.RegisterMe(theHEProtonModel);
156 pManager->AddDiscreteProcess(&theProtonInelastic);
157
158 pManager->AddProcess(&theProtonIonisation, ordInActive,2, 2);
159
160 pManager->AddProcess(&theProtonMult);
161 pManager->SetProcessOrdering(&theProtonMult, idxAlongStep, 1);
162 pManager->SetProcessOrdering(&theProtonMult, idxPostStep, 1);
163
164 // anti-Proton
165 pManager = G4AntiProton::AntiProton()->GetProcessManager();
166 // add process
167 pManager->AddDiscreteProcess(&theElasticProcess);
168
169 theLEAntiProtonModel = new G4LEAntiProtonInelastic();
170 theHEAntiProtonModel = new G4HEAntiProtonInelastic();
171 theAntiProtonInelastic.RegisterMe(theLEAntiProtonModel);
172 theAntiProtonInelastic.RegisterMe(theHEAntiProtonModel);
173 pManager->AddDiscreteProcess(&theAntiProtonInelastic);
174
175 pManager->AddProcess(&theAntiProtonIonisation, ordInActive,2, 2);
176
177 pManager->AddProcess(&theAntiProtonMult);
178 pManager->SetProcessOrdering(&theAntiProtonMult, idxAlongStep, 1);
179 pManager->SetProcessOrdering(&theAntiProtonMult, idxPostStep, 1);
180
181 pManager->AddRestProcess(&theAntiProtonAnnihilation);
182
183 // Neutron
184 pManager = G4Neutron::Neutron()->GetProcessManager();
185 // add process
186
187 // elastic scattering
188 theNeutronElasticProcess = new G4HadronElasticProcess;
189 theElasticModel1 = new G4LElastic;
190 theElasticNeutron = new G4NeutronHPElastic;
191 theNeutronElasticProcess->RegisterMe(theElasticModel1);
192 theElasticModel1->SetMinEnergy(19.9*MeV);
193 theNeutronElasticProcess->RegisterMe(theElasticNeutron);
194 theNeutronData = new G4NeutronHPElasticData;
195 theNeutronElasticProcess->AddDataSet(theNeutronData);
196 pManager->AddDiscreteProcess(theNeutronElasticProcess);
197
198 // inelastic scattering
199 theInelasticProcess =new G4NeutronInelasticProcess("inelastic");
200 theInelasticModel = new G4LENeutronInelastic;
201 theHEInelasticModel = new G4HENeutronInelastic();
202 theInelasticModel->SetMinEnergy(19.9*MeV);
203 theInelasticModel->SetMaxEnergy(55*GeV);
204 theHEInelasticModel->SetMinEnergy(25*GeV);
205 theInelasticProcess->RegisterMe(theInelasticModel);
206 theLENeutronInelasticModel =new G4NeutronHPInelastic;
207 theInelasticProcess->RegisterMe(theLENeutronInelasticModel);
208 theInelasticProcess->RegisterMe(theHEInelasticModel);
209 theNeutronData1 = new G4NeutronHPInelasticData;
210 theInelasticProcess->AddDataSet(theNeutronData1);
211 pManager->AddDiscreteProcess(theInelasticProcess);
212
213
214 // aProductionModel = new G4NeutronIsotopeProduction;
215 // theInelasticProcess->RegisterIsotopeProductionModel(aProductionModel);
216 // G4HadronicProcess::EnableIsotopeProductionGlobally();
217 //fission
218
219
220 theFissionProcess = new G4HadronFissionProcess;
221 theFissionModel = new G4LFission;
222 theFissionModel->SetMinEnergy(19.9*MeV);
223 theFissionProcess->RegisterMe(theFissionModel);
224 theLENeutronFissionModel = new G4NeutronHPFission;
225 theFissionProcess->RegisterMe(theLENeutronFissionModel);
226 theNeutronData2 = new G4NeutronHPFissionData;
227 theFissionProcess->AddDataSet(theNeutronData2);
228 pManager->AddDiscreteProcess(theFissionProcess);
229
230 // capture
231 theCaptureProcess = new G4HadronCaptureProcess;
232 theCaptureModel = new G4LCapture;
233 theCaptureModel->SetMinEnergy(19.9*MeV);
234 theCaptureProcess->RegisterMe(theCaptureModel);
235 theLENeutronCaptureModel = new G4NeutronHPCapture;
236 theCaptureProcess->RegisterMe(theLENeutronCaptureModel);
237 theNeutronData3 = new G4NeutronHPCaptureData;
238 theCaptureProcess->AddDataSet(theNeutronData3);
239 pManager->AddDiscreteProcess(theCaptureProcess);
240
241 // AntiNeutron
242 pManager = G4AntiNeutron::AntiNeutron()->GetProcessManager();
243 // add process
244 pManager->AddDiscreteProcess(&theElasticProcess);
245
246 theLEAntiNeutronModel = new G4LEAntiNeutronInelastic();
247 theHEAntiNeutronModel = new G4HEAntiNeutronInelastic();
248 theAntiNeutronInelastic.RegisterMe(theLEAntiNeutronModel);
249 theAntiNeutronInelastic.RegisterMe(theHEAntiNeutronModel);
250 pManager->AddDiscreteProcess(&theAntiNeutronInelastic);
251
252 pManager->AddRestProcess(&theAntiNeutronAnnihilation);
253
254 // Lambda
255 pManager = G4Lambda::Lambda()->GetProcessManager();
256 // add process
257 pManager->AddDiscreteProcess(&theElasticProcess);
258
259 theLELambdaModel = new G4LELambdaInelastic();
260 theHELambdaModel = new G4HELambdaInelastic();
261 theLambdaInelastic.RegisterMe(theLELambdaModel);
262 theLambdaInelastic.RegisterMe(theHELambdaModel);
263 pManager->AddDiscreteProcess(&theLambdaInelastic);
264
265 // AntiLambda
266 pManager = G4AntiLambda::AntiLambda()->GetProcessManager();
267 // add process
268 pManager->AddDiscreteProcess(&theElasticProcess);
269
270 theLEAntiLambdaModel = new G4LEAntiLambdaInelastic();
271 theHEAntiLambdaModel = new G4HEAntiLambdaInelastic();
272 theAntiLambdaInelastic.RegisterMe(theLEAntiLambdaModel);
273 theAntiLambdaInelastic.RegisterMe(theHEAntiLambdaModel);
274 pManager->AddDiscreteProcess(&theAntiLambdaInelastic);
275
276 // SigmaMinus
277 pManager = G4SigmaMinus::SigmaMinus()->GetProcessManager();
278 // add process
279 pManager->AddDiscreteProcess(&theElasticProcess);
280
281 theLESigmaMinusModel = new G4LESigmaMinusInelastic();
282 theHESigmaMinusModel = new G4HESigmaMinusInelastic();
283 theSigmaMinusInelastic.RegisterMe(theLESigmaMinusModel);
284 theSigmaMinusInelastic.RegisterMe(theHESigmaMinusModel);
285 pManager->AddDiscreteProcess(&theSigmaMinusInelastic);
286
287 pManager->AddProcess(&theSigmaMinusIonisation, ordInActive,2, 2);
288
289 pManager->AddProcess(&theSigmaMinusMult);
290 pManager->SetProcessOrdering(&theSigmaMinusMult, idxAlongStep, 1);
291 pManager->SetProcessOrdering(&theSigmaMinusMult, idxPostStep, 1);
292
293 // anti-SigmaMinus
294 pManager = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager();
295 // add process
296 pManager->AddDiscreteProcess(&theElasticProcess);
297
298 theLEAntiSigmaMinusModel = new G4LEAntiSigmaMinusInelastic();
299 theHEAntiSigmaMinusModel = new G4HEAntiSigmaMinusInelastic();
300 theAntiSigmaMinusInelastic.RegisterMe(theLEAntiSigmaMinusModel);
301 theAntiSigmaMinusInelastic.RegisterMe(theHEAntiSigmaMinusModel);
302 pManager->AddDiscreteProcess(&theAntiSigmaMinusInelastic);
303
304 pManager->AddProcess(&theAntiSigmaMinusIonisation, ordInActive,2, 2);
305
306 pManager->AddProcess(&theAntiSigmaMinusMult);
307 pManager->SetProcessOrdering(&theAntiSigmaMinusMult, idxAlongStep, 1);
308 pManager->SetProcessOrdering(&theAntiSigmaMinusMult, idxPostStep, 1);
309
310 // SigmaPlus
311 pManager = G4SigmaPlus::SigmaPlus()->GetProcessManager();
312 // add process
313 pManager->AddDiscreteProcess(&theElasticProcess);
314
315 theLESigmaPlusModel = new G4LESigmaPlusInelastic();
316 theHESigmaPlusModel = new G4HESigmaPlusInelastic();
317 theSigmaPlusInelastic.RegisterMe(theLESigmaPlusModel);
318 theSigmaPlusInelastic.RegisterMe(theHESigmaPlusModel);
319 pManager->AddDiscreteProcess(&theSigmaPlusInelastic);
320
321 pManager->AddProcess(&theSigmaPlusIonisation, ordInActive,2, 2);
322
323 pManager->AddProcess(&theSigmaPlusMult);
324 pManager->SetProcessOrdering(&theSigmaPlusMult, idxAlongStep, 1);
325 pManager->SetProcessOrdering(&theSigmaPlusMult, idxPostStep, 1);
326
327 // anti-SigmaPlus
328 pManager = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager();
329 // add process
330 pManager->AddDiscreteProcess(&theElasticProcess);
331
332 theLEAntiSigmaPlusModel = new G4LEAntiSigmaPlusInelastic();
333 theHEAntiSigmaPlusModel = new G4HEAntiSigmaPlusInelastic();
334 theAntiSigmaPlusInelastic.RegisterMe(theLEAntiSigmaPlusModel);
335 theAntiSigmaPlusInelastic.RegisterMe(theHEAntiSigmaPlusModel);
336 pManager->AddDiscreteProcess(&theAntiSigmaPlusInelastic);
337
338 pManager->AddProcess(&theAntiSigmaPlusIonisation, ordInActive,2, 2);
339
340 pManager->AddProcess(&theAntiSigmaPlusMult);
341 pManager->SetProcessOrdering(&theAntiSigmaPlusMult, idxAlongStep, 1);
342 pManager->SetProcessOrdering(&theAntiSigmaPlusMult, idxPostStep, 1);
343
344 // XiMinus
345 pManager = G4XiMinus::XiMinus()->GetProcessManager();
346 // add process
347 pManager->AddDiscreteProcess(&theElasticProcess);
348
349 theLEXiMinusModel = new G4LEXiMinusInelastic();
350 theHEXiMinusModel = new G4HEXiMinusInelastic();
351 theXiMinusInelastic.RegisterMe(theLEXiMinusModel);
352 theXiMinusInelastic.RegisterMe(theHEXiMinusModel);
353 pManager->AddDiscreteProcess(&theXiMinusInelastic);
354
355 pManager->AddProcess(&theXiMinusIonisation, ordInActive,2, 2);
356
357 pManager->AddProcess(&theXiMinusMult);
358 pManager->SetProcessOrdering(&theXiMinusMult, idxAlongStep, 1);
359 pManager->SetProcessOrdering(&theXiMinusMult, idxPostStep, 1);
360
361 // anti-XiMinus
362 pManager = G4AntiXiMinus::AntiXiMinus()->GetProcessManager();
363 // add process
364 pManager->AddDiscreteProcess(&theElasticProcess);
365
366 theLEAntiXiMinusModel = new G4LEAntiXiMinusInelastic();
367 theHEAntiXiMinusModel = new G4HEAntiXiMinusInelastic();
368 theAntiXiMinusInelastic.RegisterMe(theLEAntiXiMinusModel);
369 theAntiXiMinusInelastic.RegisterMe(theHEAntiXiMinusModel);
370 pManager->AddDiscreteProcess(&theAntiXiMinusInelastic);
371
372 pManager->AddProcess(&theAntiXiMinusIonisation, ordInActive,2, 2);
373
374 pManager->AddProcess(&theAntiXiMinusMult);
375 pManager->SetProcessOrdering(&theAntiXiMinusMult, idxAlongStep, 1);
376 pManager->SetProcessOrdering(&theAntiXiMinusMult, idxPostStep, 1);
377
378 // XiZero
379 pManager = G4XiZero::XiZero()->GetProcessManager();
380 // add process
381 pManager->AddDiscreteProcess(&theElasticProcess);
382
383 theLEXiZeroModel = new G4LEXiZeroInelastic();
384 theHEXiZeroModel = new G4HEXiZeroInelastic();
385 theXiZeroInelastic.RegisterMe(theLEXiZeroModel);
386 theXiZeroInelastic.RegisterMe(theHEXiZeroModel);
387 pManager->AddDiscreteProcess(&theXiZeroInelastic);
388
389 // anti-XiZero
390 pManager = G4AntiXiZero::AntiXiZero()->GetProcessManager();
391 // add process
392 pManager->AddDiscreteProcess(&theElasticProcess);
393
394 theLEAntiXiZeroModel = new G4LEAntiXiZeroInelastic();
395 theHEAntiXiZeroModel = new G4HEAntiXiZeroInelastic();
396 theAntiXiZeroInelastic.RegisterMe(theLEAntiXiZeroModel);
397 theAntiXiZeroInelastic.RegisterMe(theHEAntiXiZeroModel);
398 pManager->AddDiscreteProcess(&theAntiXiZeroInelastic);
399
400 // OmegaMinus
401 pManager = G4OmegaMinus::OmegaMinus()->GetProcessManager();
402 // add process
403 pManager->AddDiscreteProcess(&theElasticProcess);
404
405 theLEOmegaMinusModel = new G4LEOmegaMinusInelastic();
406 theHEOmegaMinusModel = new G4HEOmegaMinusInelastic();
407 theOmegaMinusInelastic.RegisterMe(theLEOmegaMinusModel);
408 theOmegaMinusInelastic.RegisterMe(theHEOmegaMinusModel);
409 pManager->AddDiscreteProcess(&theOmegaMinusInelastic);
410
411 pManager->AddProcess(&theOmegaMinusIonisation, ordInActive,2, 2);
412
413 pManager->AddProcess(&theOmegaMinusMult);
414 pManager->SetProcessOrdering(&theOmegaMinusMult, idxAlongStep, 1);
415 pManager->SetProcessOrdering(&theOmegaMinusMult, idxPostStep, 1);
416
417 // anti-OmegaMinus
418 pManager = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager();
419 // add process
420 pManager->AddDiscreteProcess(&theElasticProcess);
421
422 theLEAntiOmegaMinusModel = new G4LEAntiOmegaMinusInelastic();
423 theHEAntiOmegaMinusModel = new G4HEAntiOmegaMinusInelastic();
424 theAntiOmegaMinusInelastic.RegisterMe(theLEAntiOmegaMinusModel);
425 theAntiOmegaMinusInelastic.RegisterMe(theHEAntiOmegaMinusModel);
426 pManager->AddDiscreteProcess(&theAntiOmegaMinusInelastic);
427
428 pManager->AddProcess(&theAntiOmegaMinusIonisation, ordInActive,2, 2);
429
430 pManager->AddProcess(&theAntiOmegaMinusMult);
431 pManager->SetProcessOrdering(&theAntiOmegaMinusMult, idxAlongStep, 1);
432 pManager->SetProcessOrdering(&theAntiOmegaMinusMult, idxPostStep, 1);
433
434 }
435
436
437
438
439

  ViewVC Help
Powered by ViewVC 1.1.23