source: trunk/examples/extended/runAndEvent/RE02/src/RE02HadronPhysics.cc @ 1230

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

update

File size: 30.5 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: RE02HadronPhysics.cc,v 1.2 2006/06/29 17:45:18 gunter Exp $
27// --------------------------------------------------------------
28//
29// 09-Oct-2003 Hadron Physics List with Parameterization Model by T. Koi
30// 12-Oct-2003 Bug Fixed (KaonMinus) by T. Koi
31// 16-Nov-2005 Binary Cascade for Protons. by T. Aso
32//             Proton :  BinaryCascade < 6 GeV, 4 GeV < LE Model,
33//             Neutron:  BinaryCascade < 6 GeV, 4 GeV < LE Model,
34//
35
36#include "RE02HadronPhysics.hh"
37
38#include "globals.hh"
39#include "G4ios.hh"
40#include <iomanip>  
41
42
43RE02HadronPhysics::RE02HadronPhysics(const G4String& name)
44                   :  G4VPhysicsConstructor(name)
45{
46}
47
48RE02HadronPhysics::~RE02HadronPhysics()
49{
50}
51
52#include "G4ParticleDefinition.hh"
53#include "G4ParticleTable.hh"
54
55#include "G4ProcessManager.hh"
56
57void RE02HadronPhysics::ConstructProcess()
58{
59   G4ProcessManager * pManager = 0;
60
61   // Pi+ Physics
62   pManager = G4PionPlus::PionPlus()->GetProcessManager();
63
64   // add processes
65   G4HadronElasticProcess* theppElasticProcess
66                         = new G4HadronElasticProcess();
67   G4LElastic* theppElasticModel = new G4LElastic();
68   theppElasticProcess->RegisterMe(theppElasticModel);
69   pManager->AddDiscreteProcess(theppElasticProcess);
70 
71   G4PionPlusInelasticProcess* thePionPlusInelasticProcess
72                         = new G4PionPlusInelasticProcess(); 
73
74   G4LEPionPlusInelastic* thePionPlusLEPModel = new G4LEPionPlusInelastic();
75   G4HEPionPlusInelastic* thePionPlusHEPModel = new G4HEPionPlusInelastic();
76   thePionPlusInelasticProcess->RegisterMe(thePionPlusLEPModel);
77   thePionPlusInelasticProcess->RegisterMe(thePionPlusHEPModel);
78   pManager->AddDiscreteProcess(thePionPlusInelasticProcess);
79
80   G4VProcess* theppMultipleScattering = new G4MultipleScattering();
81   G4VProcess* theppIonisation        = new G4hIonisation();
82   //
83   pManager->AddProcess(theppIonisation);
84   pManager->AddProcess(theppMultipleScattering);
85   //
86   // set ordering for AlongStepDoIt
87   pManager->SetProcessOrdering(theppMultipleScattering, idxAlongStep,1);
88   pManager->SetProcessOrdering(theppIonisation,        idxAlongStep,2);
89   //
90   // set ordering for PostStepDoIt
91   pManager->SetProcessOrdering(theppMultipleScattering, idxPostStep,1);
92   pManager->SetProcessOrdering(theppIonisation,        idxPostStep,2);
93
94
95   // Pi- Physics
96   pManager = G4PionMinus::PionMinus()->GetProcessManager();
97
98   G4HadronElasticProcess* thepmElasticProcess
99                         = new G4HadronElasticProcess();
100   G4LElastic* thepmElasticModel = new G4LElastic();
101   thepmElasticProcess->RegisterMe(thepmElasticModel);
102   pManager->AddDiscreteProcess(thepmElasticProcess);
103
104   G4PionMinusInelasticProcess* thePionMinusInelasticProcess
105                         = new G4PionMinusInelasticProcess(); 
106
107   G4LEPionMinusInelastic* thePionMinusLEPModel = new G4LEPionMinusInelastic();
108   G4HEPionMinusInelastic* thePionMinusHEPModel = new G4HEPionMinusInelastic();
109   thePionMinusInelasticProcess->RegisterMe(thePionMinusLEPModel);
110   thePionMinusInelasticProcess->RegisterMe(thePionMinusHEPModel);
111   pManager->AddDiscreteProcess(thePionMinusInelasticProcess);
112
113   G4VProcess* thepmMultipleScattering = new G4MultipleScattering();
114   G4VProcess* thepmIonisation        = new G4hIonisation();
115   //
116   // add processes
117   pManager->AddProcess(thepmIonisation);
118   pManager->AddProcess(thepmMultipleScattering);
119   //
120   // set ordering for AlongStepDoIt
121   pManager->SetProcessOrdering(thepmMultipleScattering, idxAlongStep,1);
122   pManager->SetProcessOrdering(thepmIonisation,        idxAlongStep,2);
123   //
124   // set ordering for PostStepDoIt
125   pManager->SetProcessOrdering(thepmMultipleScattering, idxPostStep,1);
126   pManager->SetProcessOrdering(thepmIonisation,        idxPostStep,2);
127
128
129   // K+ Physics
130   pManager = G4KaonPlus::KaonPlus()->GetProcessManager();
131
132   G4HadronElasticProcess* thekpElasticProcess
133                         = new G4HadronElasticProcess();
134   G4LElastic* thekpElasticModel = new G4LElastic();
135   thekpElasticProcess->RegisterMe(thekpElasticModel);
136   pManager->AddDiscreteProcess(thekpElasticProcess);
137
138   G4KaonPlusInelasticProcess* theKaonPlusInelasticProcess
139                         = new G4KaonPlusInelasticProcess(); 
140
141   G4LEKaonPlusInelastic* theKaonPlusLEPModel = new G4LEKaonPlusInelastic();
142   G4HEKaonPlusInelastic* theKaonPlusHEPModel = new G4HEKaonPlusInelastic();
143   theKaonPlusInelasticProcess->RegisterMe(theKaonPlusLEPModel);
144   theKaonPlusInelasticProcess->RegisterMe(theKaonPlusHEPModel);
145   pManager->AddDiscreteProcess(theKaonPlusInelasticProcess);
146
147   G4VProcess* thekpMultipleScattering = new G4MultipleScattering();
148   G4VProcess* thekpIonisation        = new G4hIonisation();
149   //
150   // add processes
151   pManager->AddProcess(thekpIonisation);
152   pManager->AddProcess(thekpMultipleScattering);
153   //
154   // set ordering for AlongStepDoIt
155   pManager->SetProcessOrdering(thekpMultipleScattering, idxAlongStep,1);
156   pManager->SetProcessOrdering(thekpIonisation,        idxAlongStep,2);
157   //
158   // set ordering for PostStepDoIt
159   pManager->SetProcessOrdering(thekpMultipleScattering, idxPostStep,1);
160   pManager->SetProcessOrdering(thekpIonisation,        idxPostStep,2);
161
162
163   // K- Physics
164   pManager = G4KaonMinus::KaonMinus()->GetProcessManager();
165
166   // add processes
167   G4HadronElasticProcess* thekmElasticProcess
168                         = new G4HadronElasticProcess();
169   G4LElastic* thekmElasticModel = new G4LElastic();
170   thekmElasticProcess->RegisterMe(thekmElasticModel);
171   pManager->AddDiscreteProcess(thekmElasticProcess);
172
173   G4KaonMinusInelasticProcess* theKaonMinusInelasticProcess
174                         = new G4KaonMinusInelasticProcess(); 
175
176   G4LEKaonMinusInelastic* theKaonMinusLEPModel = new G4LEKaonMinusInelastic();
177   G4HEKaonMinusInelastic* theKaonMinusHEPModel = new G4HEKaonMinusInelastic();
178   theKaonMinusInelasticProcess->RegisterMe(theKaonMinusLEPModel);
179   theKaonMinusInelasticProcess->RegisterMe(theKaonMinusHEPModel);
180   pManager->AddDiscreteProcess(theKaonMinusInelasticProcess);
181
182   G4VProcess* thekmMultipleScattering = new G4MultipleScattering();
183   G4VProcess* thekmIonisation        = new G4hIonisation();
184
185   pManager->AddProcess(thekmIonisation);
186   pManager->AddProcess(thekmMultipleScattering);
187
188   // set ordering for AlongStepDoIt
189   pManager->SetProcessOrdering(thekmMultipleScattering, idxAlongStep,1);
190   pManager->SetProcessOrdering(thekmIonisation,        idxAlongStep,2);
191   //
192   // set ordering for PostStepDoIt
193   pManager->SetProcessOrdering(thekmMultipleScattering, idxPostStep,1);
194   pManager->SetProcessOrdering(thekmIonisation,        idxPostStep,2);
195
196
197   // Kaon0L Phsics
198   pManager = G4KaonZeroLong::KaonZeroLong()->GetProcessManager();
199
200   G4HadronElasticProcess* thek0lElasticProcess
201                         = new G4HadronElasticProcess();
202   G4LElastic* thek0lElasticModel = new G4LElastic();
203   thek0lElasticProcess->RegisterMe(thek0lElasticModel);
204   pManager->AddDiscreteProcess(thek0lElasticProcess);
205
206   G4KaonZeroLInelasticProcess* theKaonZeroLInelasticProcess
207                         = new G4KaonZeroLInelasticProcess(); 
208
209   G4LEKaonZeroLInelastic* theKaonZeroLLEPModel = new G4LEKaonZeroLInelastic();
210   G4HEKaonZeroInelastic* theKaonZerolHEPModel = new G4HEKaonZeroInelastic();
211   theKaonZeroLInelasticProcess->RegisterMe(theKaonZeroLLEPModel);
212   theKaonZeroLInelasticProcess->RegisterMe(theKaonZerolHEPModel);
213   pManager->AddDiscreteProcess(theKaonZeroLInelasticProcess);
214
215
216   // Kaon0S Phsics
217   pManager = G4KaonZeroShort::KaonZeroShort()->GetProcessManager();
218
219   G4HadronElasticProcess* thek0sElasticProcess
220                         = new G4HadronElasticProcess();
221   G4LElastic* thek0sElasticModel = new G4LElastic();
222   thek0sElasticProcess->RegisterMe(thek0sElasticModel);
223   pManager->AddDiscreteProcess(thek0sElasticProcess);
224
225   G4KaonZeroSInelasticProcess* theKaonZeroSInelasticProcess
226                         = new G4KaonZeroSInelasticProcess(); 
227
228   G4LEKaonZeroSInelastic* theKaonZeroSLEPModel = new G4LEKaonZeroSInelastic();
229   G4HEKaonZeroInelastic* theKaonZerosHEPModel = new G4HEKaonZeroInelastic();
230   theKaonZeroSInelasticProcess->RegisterMe(theKaonZeroSLEPModel);
231   theKaonZeroSInelasticProcess->RegisterMe(theKaonZerosHEPModel);
232   pManager->AddDiscreteProcess(theKaonZeroSInelasticProcess);
233
234
235   // Proton Physics
236   pManager = G4Proton::Proton()->GetProcessManager();
237
238   // add process
239   G4HadronElasticProcess* thepElasticProcess
240                         = new G4HadronElasticProcess();
241   G4LElastic* thepElasticModel = new G4LElastic();
242   thepElasticProcess->RegisterMe(thepElasticModel);
243   pManager->AddDiscreteProcess(thepElasticProcess);
244
245   G4ProtonInelasticProcess* theProtonInelasticProcess
246                         = new G4ProtonInelasticProcess(); 
247
248   G4BinaryCascade* theProtonBCModel = new G4BinaryCascade();
249   theProtonBCModel->SetMaxEnergy(6.*GeV);
250   G4LEProtonInelastic* theProtonLEPModel = new G4LEProtonInelastic();
251   theProtonLEPModel->SetMinEnergy(4.*GeV); 
252   G4HEProtonInelastic* theProtonHEPModel = new G4HEProtonInelastic();
253   theProtonInelasticProcess->RegisterMe(theProtonBCModel);
254   theProtonInelasticProcess->RegisterMe(theProtonLEPModel);
255   theProtonInelasticProcess->RegisterMe(theProtonHEPModel);
256   pManager->AddDiscreteProcess(theProtonInelasticProcess);
257
258   G4VProcess* thepMultipleScattering = new G4MultipleScattering();
259   G4VProcess* thepIonisation        = new G4hIonisation();
260
261   pManager->AddProcess(thepIonisation);
262   pManager->AddProcess(thepMultipleScattering);
263
264   // set ordering for AlongStepDoIt
265   pManager->SetProcessOrdering(thepMultipleScattering, idxAlongStep,1);
266   pManager->SetProcessOrdering(thepIonisation,        idxAlongStep,2);
267   //
268   // set ordering for PostStepDoIt
269   pManager->SetProcessOrdering(thepMultipleScattering, idxPostStep,1);
270   pManager->SetProcessOrdering(thepIonisation,        idxPostStep,2);
271
272
273   // anti-proton Physics
274   pManager = G4AntiProton::AntiProton()->GetProcessManager();
275
276   // add process
277   G4HadronElasticProcess* theapElasticProcess
278                         = new G4HadronElasticProcess();
279   G4LElastic* theapElasticModel = new G4LElastic();
280   theapElasticProcess->RegisterMe(theapElasticModel);
281   pManager->AddDiscreteProcess(theapElasticProcess);
282
283   G4AntiProtonInelasticProcess* theAntiProtonInelasticProcess
284                         = new G4AntiProtonInelasticProcess(); 
285
286   G4LEAntiProtonInelastic* theAntiProtonLEPModel = new G4LEAntiProtonInelastic();
287   G4HEAntiProtonInelastic* theAntiProtonHEPModel = new G4HEAntiProtonInelastic();
288   theAntiProtonInelasticProcess->RegisterMe(theAntiProtonLEPModel);
289   theAntiProtonInelasticProcess->RegisterMe(theAntiProtonHEPModel);
290   pManager->AddDiscreteProcess(theAntiProtonInelasticProcess);
291
292   G4AntiProtonAnnihilationAtRest* theAntiProtonAnnihilation
293                            =  new G4AntiProtonAnnihilationAtRest();
294   pManager->AddRestProcess(theAntiProtonAnnihilation);
295
296   G4VProcess* theapMultipleScattering = new G4MultipleScattering();
297   G4VProcess* theapIonisation        = new G4hIonisation();
298
299   pManager->AddProcess(theapIonisation);
300   pManager->AddProcess(theapMultipleScattering);
301
302   // set ordering for AlongStepDoIt
303   pManager->SetProcessOrdering(theapMultipleScattering, idxAlongStep,1);
304   pManager->SetProcessOrdering(theapIonisation,        idxAlongStep,2);
305   //
306   // set ordering for PostStepDoIt
307   pManager->SetProcessOrdering(theapMultipleScattering, idxPostStep,1);
308   pManager->SetProcessOrdering(theapIonisation,        idxPostStep,2);
309
310
311   // neutron Physics
312   pManager = G4Neutron::Neutron()->GetProcessManager();
313
314   // add process
315   G4HadronElasticProcess* thenElasticProcess
316                         = new G4HadronElasticProcess();
317   G4LElastic* thenElasticModel = new G4LElastic();
318   thenElasticProcess->RegisterMe(thenElasticModel);
319   pManager->AddDiscreteProcess(thenElasticProcess);
320
321   G4NeutronInelasticProcess* theNeutronInelasticProcess
322                         = new G4NeutronInelasticProcess(); 
323
324   G4BinaryCascade* theNeutronBCModel = new G4BinaryCascade();
325   theNeutronBCModel->SetMaxEnergy(6.*GeV);
326   G4LENeutronInelastic* theNeutronLEPModel = new G4LENeutronInelastic();
327   theNeutronLEPModel->SetMinEnergy(4.*GeV);
328   G4HENeutronInelastic* theNeutronHEPModel = new G4HENeutronInelastic();
329   theNeutronInelasticProcess->RegisterMe(theNeutronBCModel);
330   theNeutronInelasticProcess->RegisterMe(theNeutronLEPModel);
331   theNeutronInelasticProcess->RegisterMe(theNeutronHEPModel);
332   pManager->AddDiscreteProcess(theNeutronInelasticProcess);
333
334   G4HadronFissionProcess* thenFission
335                         = new G4HadronFissionProcess();
336   G4LFission* thenFissionModel = new G4LFission();
337   thenFission->RegisterMe(thenFissionModel);
338   pManager->AddDiscreteProcess(thenFission);
339
340
341   G4HadronCaptureProcess* thenCapture
342                         = new G4HadronCaptureProcess();
343   G4LCapture* thenCaptureModel = new G4LCapture();
344   thenCapture->RegisterMe(thenCaptureModel);
345   pManager->AddDiscreteProcess(thenCapture);
346
347
348   // anti-neutron Physics
349   pManager = G4AntiNeutron::AntiNeutron()->GetProcessManager();
350
351   // add process
352   G4HadronElasticProcess* theanElasticProcess
353                         = new G4HadronElasticProcess();
354   G4LElastic* theanElasticModel = new G4LElastic();
355   theanElasticProcess->RegisterMe(theanElasticModel);
356   pManager->AddDiscreteProcess(theanElasticProcess);
357
358   G4AntiNeutronInelasticProcess* theAntiNeutronInelasticProcess
359                         = new G4AntiNeutronInelasticProcess(); 
360
361   G4LEAntiNeutronInelastic* theAntiNeutronLEPModel = new G4LEAntiNeutronInelastic();
362   G4HEAntiNeutronInelastic* theAntiNeutronHEPModel = new G4HEAntiNeutronInelastic();
363   theAntiNeutronInelasticProcess->RegisterMe(theAntiNeutronLEPModel);
364   theAntiNeutronInelasticProcess->RegisterMe(theAntiNeutronHEPModel);
365   pManager->AddDiscreteProcess(theAntiNeutronInelasticProcess);
366
367   G4AntiNeutronAnnihilationAtRest* theAntiNeutronAnnihilation
368                            =  new G4AntiNeutronAnnihilationAtRest();
369   pManager->AddRestProcess(theAntiNeutronAnnihilation);
370
371
372   // Lambda Physics
373   pManager = G4Lambda::Lambda()->GetProcessManager();
374
375   // add process
376   G4HadronElasticProcess* thel0ElasticProcess
377                         = new G4HadronElasticProcess();
378   G4LElastic* thel0ElasticModel = new G4LElastic();
379   thel0ElasticProcess->RegisterMe(thel0ElasticModel);
380   pManager->AddDiscreteProcess(thel0ElasticProcess);
381
382   G4LambdaInelasticProcess* theLambdaInelasticProcess
383                         = new G4LambdaInelasticProcess(); 
384
385   G4LELambdaInelastic* theLambdaLEPModel = new G4LELambdaInelastic();
386   G4HELambdaInelastic* theLambdaHEPModel = new G4HELambdaInelastic();
387   theLambdaInelasticProcess->RegisterMe(theLambdaLEPModel);
388   theLambdaInelasticProcess->RegisterMe(theLambdaHEPModel);
389   pManager->AddDiscreteProcess(theLambdaInelasticProcess);
390
391
392   // Anti-Labda Physics
393   pManager = G4AntiLambda::AntiLambda()->GetProcessManager();
394
395   // add process
396   G4HadronElasticProcess* theal0ElasticProcess
397                         = new G4HadronElasticProcess();
398   G4LElastic* theal0ElasticModel = new G4LElastic();
399   theal0ElasticProcess->RegisterMe(theal0ElasticModel);
400   pManager->AddDiscreteProcess(theal0ElasticProcess);
401
402   G4AntiLambdaInelasticProcess* theAntiLambdaInelasticProcess
403                         = new G4AntiLambdaInelasticProcess(); 
404
405   G4LEAntiLambdaInelastic* theAntiLambdaLEPModel = new G4LEAntiLambdaInelastic();
406   G4HEAntiLambdaInelastic* theAntiLambdaHEPModel = new G4HEAntiLambdaInelastic();
407   theAntiLambdaInelasticProcess->RegisterMe(theAntiLambdaLEPModel);
408   theAntiLambdaInelasticProcess->RegisterMe(theAntiLambdaHEPModel);
409   pManager->AddDiscreteProcess(theAntiLambdaInelasticProcess);
410
411
412   // Sigma+ Physics
413   pManager = G4SigmaPlus::SigmaPlus()->GetProcessManager();
414
415   // add process
416   G4HadronElasticProcess* thespElasticProcess
417                         = new G4HadronElasticProcess();
418   G4LElastic* thespElasticModel = new G4LElastic();
419   thespElasticProcess->RegisterMe(thespElasticModel);
420   pManager->AddDiscreteProcess(thespElasticProcess);
421
422   G4SigmaPlusInelasticProcess* theSigmaPlusInelasticProcess
423                         = new G4SigmaPlusInelasticProcess(); 
424
425   G4LESigmaPlusInelastic* theSigmaPlusLEPModel = new G4LESigmaPlusInelastic();
426   G4HESigmaPlusInelastic* theSigmaPlusHEPModel = new G4HESigmaPlusInelastic();
427   theSigmaPlusInelasticProcess->RegisterMe(theSigmaPlusLEPModel);
428   theSigmaPlusInelasticProcess->RegisterMe(theSigmaPlusHEPModel);
429   pManager->AddDiscreteProcess(theSigmaPlusInelasticProcess);
430
431   G4VProcess* thespMultipleScattering = new G4MultipleScattering();
432   G4VProcess* thespIonisation        = new G4hIonisation();
433
434   pManager->AddProcess(thespIonisation);
435   pManager->AddProcess(thespMultipleScattering);
436
437   // set ordering for AlongStepDoIt
438   pManager->SetProcessOrdering(thespMultipleScattering, idxAlongStep,1);
439   pManager->SetProcessOrdering(thespIonisation,        idxAlongStep,2);
440   //
441   // set ordering for PostStepDoIt
442   pManager->SetProcessOrdering(thespMultipleScattering, idxPostStep,1);
443   pManager->SetProcessOrdering(thespIonisation,        idxPostStep,2);
444
445
446   // anti-Sigma+ Physics
447   pManager = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager();
448
449   // add process
450   G4HadronElasticProcess* theaspElasticProcess
451                         = new G4HadronElasticProcess();
452   G4LElastic* theaspElasticModel = new G4LElastic();
453   theaspElasticProcess->RegisterMe(theaspElasticModel);
454   pManager->AddDiscreteProcess(theaspElasticProcess);
455
456   G4AntiSigmaPlusInelasticProcess* theAntiSigmaPlusInelasticProcess
457                         = new G4AntiSigmaPlusInelasticProcess(); 
458
459   G4LEAntiSigmaPlusInelastic* theAntiSigmaPlusLEPModel = new G4LEAntiSigmaPlusInelastic();
460   G4HEAntiSigmaPlusInelastic* theAntiSigmaPlusHEPModel = new G4HEAntiSigmaPlusInelastic();
461   theAntiSigmaPlusInelasticProcess->RegisterMe(theAntiSigmaPlusLEPModel);
462   theAntiSigmaPlusInelasticProcess->RegisterMe(theAntiSigmaPlusHEPModel);
463   pManager->AddDiscreteProcess(theAntiSigmaPlusInelasticProcess);
464
465   G4VProcess* theaspMultipleScattering = new G4MultipleScattering();
466   G4VProcess* theaspIonisation        = new G4hIonisation();
467
468   pManager->AddProcess(theaspIonisation);
469   pManager->AddProcess(theaspMultipleScattering);
470
471   // set ordering for AlongStepDoIt
472   pManager->SetProcessOrdering(theaspMultipleScattering, idxAlongStep,1);
473   pManager->SetProcessOrdering(theaspIonisation,        idxAlongStep,2);
474   //
475   // set ordering for PostStepDoIt
476   pManager->SetProcessOrdering(theaspMultipleScattering, idxPostStep,1);
477   pManager->SetProcessOrdering(theaspIonisation,        idxPostStep,2);
478
479
480   // Sigma- Physics
481   pManager = G4SigmaMinus::SigmaMinus()->GetProcessManager();
482
483   // add process
484   G4HadronElasticProcess* thesmElasticProcess
485                         = new G4HadronElasticProcess();
486   G4LElastic* thesmElasticModel = new G4LElastic();
487   thesmElasticProcess->RegisterMe(thesmElasticModel);
488   pManager->AddDiscreteProcess(thesmElasticProcess);
489
490   G4SigmaMinusInelasticProcess* theSigmaMinusInelasticProcess
491                         = new G4SigmaMinusInelasticProcess(); 
492
493   G4LESigmaMinusInelastic* theSigmaMinusLEPModel = new G4LESigmaMinusInelastic();
494   G4HESigmaMinusInelastic* theSigmaMinusHEPModel = new G4HESigmaMinusInelastic();
495   theSigmaMinusInelasticProcess->RegisterMe(theSigmaMinusLEPModel);
496   theSigmaMinusInelasticProcess->RegisterMe(theSigmaMinusHEPModel);
497   pManager->AddDiscreteProcess(theSigmaMinusInelasticProcess);
498
499   G4VProcess* thesmMultipleScattering = new G4MultipleScattering();
500   G4VProcess* thesmIonisation        = new G4hIonisation();
501
502   pManager->AddProcess(thesmIonisation);
503   pManager->AddProcess(thesmMultipleScattering);
504
505   // set ordering for AlongStepDoIt
506   pManager->SetProcessOrdering(thesmMultipleScattering, idxAlongStep,1);
507   pManager->SetProcessOrdering(thesmIonisation,        idxAlongStep,2);
508   //
509   // set ordering for PostStepDoIt
510   pManager->SetProcessOrdering(thesmMultipleScattering, idxPostStep,1);
511   pManager->SetProcessOrdering(thesmIonisation,        idxPostStep,2);
512
513
514   // anti-Sigma- Physics
515   pManager = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager();
516
517   // add process
518   G4HadronElasticProcess* theasmElasticProcess
519                         = new G4HadronElasticProcess();
520   G4LElastic* theasmElasticModel = new G4LElastic();
521   theasmElasticProcess->RegisterMe(theasmElasticModel);
522   pManager->AddDiscreteProcess(theasmElasticProcess);
523
524   G4AntiSigmaMinusInelasticProcess* theAntiSigmaMinusInelasticProcess
525                         = new G4AntiSigmaMinusInelasticProcess(); 
526
527   G4LEAntiSigmaMinusInelastic* theAntiSigmaMinusLEPModel = new G4LEAntiSigmaMinusInelastic();
528   G4HEAntiSigmaMinusInelastic* theAntiSigmaMinusHEPModel = new G4HEAntiSigmaMinusInelastic();
529   theAntiSigmaMinusInelasticProcess->RegisterMe(theAntiSigmaMinusLEPModel);
530   theAntiSigmaMinusInelasticProcess->RegisterMe(theAntiSigmaMinusHEPModel);
531   pManager->AddDiscreteProcess(theAntiSigmaMinusInelasticProcess);
532
533   G4VProcess* theasmMultipleScattering = new G4MultipleScattering();
534   G4VProcess* theasmIonisation        = new G4hIonisation();
535
536   pManager->AddProcess(theasmIonisation);
537   pManager->AddProcess(theasmMultipleScattering);
538
539   // set ordering for AlongStepDoIt
540   pManager->SetProcessOrdering(theasmMultipleScattering, idxAlongStep,1);
541   pManager->SetProcessOrdering(theasmIonisation,        idxAlongStep,2);
542   //
543   // set ordering for PostStepDoIt
544   pManager->SetProcessOrdering(theasmMultipleScattering, idxPostStep,1);
545   pManager->SetProcessOrdering(theasmIonisation,        idxPostStep,2);
546
547
548   // Xi0 Physics
549   pManager = G4XiZero::XiZero()->GetProcessManager();
550
551   // add process
552   G4HadronElasticProcess* thex0ElasticProcess
553                         = new G4HadronElasticProcess();
554   G4LElastic* thex0ElasticModel = new G4LElastic();
555   thex0ElasticProcess->RegisterMe(thex0ElasticModel);
556   pManager->AddDiscreteProcess(thex0ElasticProcess);
557
558   G4XiZeroInelasticProcess* theXiZeroInelasticProcess
559                         = new G4XiZeroInelasticProcess(); 
560
561   G4LEXiZeroInelastic* theXiZeroLEPModel = new G4LEXiZeroInelastic();
562   G4HEXiZeroInelastic* theXiZeroHEPModel = new G4HEXiZeroInelastic();
563   theXiZeroInelasticProcess->RegisterMe(theXiZeroLEPModel);
564   theXiZeroInelasticProcess->RegisterMe(theXiZeroHEPModel);
565   pManager->AddDiscreteProcess(theXiZeroInelasticProcess);
566
567
568   // Anti-Xi0 Physics
569   pManager = G4AntiXiZero::AntiXiZero()->GetProcessManager();
570
571   // add process
572   G4HadronElasticProcess* theax0ElasticProcess
573                         = new G4HadronElasticProcess();
574   G4LElastic* theax0ElasticModel = new G4LElastic();
575   theax0ElasticProcess->RegisterMe(theax0ElasticModel);
576   pManager->AddDiscreteProcess(theax0ElasticProcess);
577
578   G4AntiXiZeroInelasticProcess* theAntiXiZeroInelasticProcess
579                         = new G4AntiXiZeroInelasticProcess(); 
580
581   G4LEAntiXiZeroInelastic* theAntiXiZeroLEPModel = new G4LEAntiXiZeroInelastic();
582   G4HEAntiXiZeroInelastic* theAntiXiZeroHEPModel = new G4HEAntiXiZeroInelastic();
583   theAntiXiZeroInelasticProcess->RegisterMe(theAntiXiZeroLEPModel);
584   theAntiXiZeroInelasticProcess->RegisterMe(theAntiXiZeroHEPModel);
585   pManager->AddDiscreteProcess(theAntiXiZeroInelasticProcess);
586
587
588   // Xi- Physics
589   pManager = G4XiMinus::XiMinus()->GetProcessManager();
590
591   // add process
592   G4HadronElasticProcess* thexmElasticProcess
593                         = new G4HadronElasticProcess();
594   G4LElastic* thexmElasticModel = new G4LElastic();
595   thexmElasticProcess->RegisterMe(thexmElasticModel);
596   pManager->AddDiscreteProcess(thexmElasticProcess);
597
598   G4XiMinusInelasticProcess* theXiMinusInelasticProcess
599                         = new G4XiMinusInelasticProcess(); 
600
601   G4LEXiMinusInelastic* theXiMinusLEPModel = new G4LEXiMinusInelastic();
602   G4HEXiMinusInelastic* theXiMinusHEPModel = new G4HEXiMinusInelastic();
603   theXiMinusInelasticProcess->RegisterMe(theXiMinusLEPModel);
604   theXiMinusInelasticProcess->RegisterMe(theXiMinusHEPModel);
605   pManager->AddDiscreteProcess(theXiMinusInelasticProcess);
606
607   G4VProcess* thexmMultipleScattering = new G4MultipleScattering();
608   G4VProcess* thexmIonisation        = new G4hIonisation();
609
610   pManager->AddProcess(thexmIonisation);
611   pManager->AddProcess(thexmMultipleScattering);
612
613   // set ordering for AlongStepDoIt
614   pManager->SetProcessOrdering(thexmMultipleScattering, idxAlongStep,1);
615   pManager->SetProcessOrdering(thexmIonisation,        idxAlongStep,2);
616   //
617   // set ordering for PostStepDoIt
618   pManager->SetProcessOrdering(thexmMultipleScattering, idxPostStep,1);
619   pManager->SetProcessOrdering(thexmIonisation,        idxPostStep,2);
620
621
622   // anti-Xi- Physics
623   pManager = G4AntiXiMinus::AntiXiMinus()->GetProcessManager();
624
625   // add process
626   G4HadronElasticProcess* theaxmElasticProcess
627                         = new G4HadronElasticProcess();
628   G4LElastic* theaxmElasticModel = new G4LElastic();
629   theaxmElasticProcess->RegisterMe(theaxmElasticModel);
630   pManager->AddDiscreteProcess(theaxmElasticProcess);
631
632   G4AntiXiMinusInelasticProcess* theAntiXiMinusInelasticProcess
633                         = new G4AntiXiMinusInelasticProcess(); 
634
635   G4LEAntiXiMinusInelastic* theAntiXiMinusLEPModel = new G4LEAntiXiMinusInelastic();
636   G4HEAntiXiMinusInelastic* theAntiXiMinusHEPModel = new G4HEAntiXiMinusInelastic();
637   theAntiXiMinusInelasticProcess->RegisterMe(theAntiXiMinusLEPModel);
638   theAntiXiMinusInelasticProcess->RegisterMe(theAntiXiMinusHEPModel);
639   pManager->AddDiscreteProcess(theAntiXiMinusInelasticProcess);
640
641   G4VProcess* theaxmMultipleScattering = new G4MultipleScattering();
642   G4VProcess* theaxmIonisation        = new G4hIonisation();
643
644   pManager->AddProcess(theaxmIonisation);
645   pManager->AddProcess(theaxmMultipleScattering);
646
647   // set ordering for AlongStepDoIt
648   pManager->SetProcessOrdering(theaxmMultipleScattering, idxAlongStep,1);
649   pManager->SetProcessOrdering(theaxmIonisation,        idxAlongStep,2);
650   //
651   // set ordering for PostStepDoIt
652   pManager->SetProcessOrdering(theaxmMultipleScattering, idxPostStep,1);
653   pManager->SetProcessOrdering(theaxmIonisation,        idxPostStep,2);
654
655
656   // Omega- Physics
657   pManager = G4OmegaMinus::OmegaMinus()->GetProcessManager();
658
659   // add process
660   G4HadronElasticProcess* theomElasticProcess
661                         = new G4HadronElasticProcess();
662   G4LElastic* theomElasticModel = new G4LElastic();
663   theomElasticProcess->RegisterMe(theomElasticModel);
664   pManager->AddDiscreteProcess(theomElasticProcess);
665
666   G4OmegaMinusInelasticProcess* theOmegaMinusInelasticProcess
667                         = new G4OmegaMinusInelasticProcess(); 
668
669   G4LEOmegaMinusInelastic* theOmegaMinusLEPModel = new G4LEOmegaMinusInelastic();
670   G4HEOmegaMinusInelastic* theOmegaMinusHEPModel = new G4HEOmegaMinusInelastic();
671   theOmegaMinusInelasticProcess->RegisterMe(theOmegaMinusLEPModel);
672   theOmegaMinusInelasticProcess->RegisterMe(theOmegaMinusHEPModel);
673   pManager->AddDiscreteProcess(theOmegaMinusInelasticProcess);
674
675   G4VProcess* theomMultipleScattering = new G4MultipleScattering();
676   G4VProcess* theomIonisation        = new G4hIonisation();
677
678   pManager->AddProcess(theomIonisation);
679   pManager->AddProcess(theomMultipleScattering);
680
681   // set ordering for AlongStepDoIt
682   pManager->SetProcessOrdering(theomMultipleScattering, idxAlongStep,1);
683   pManager->SetProcessOrdering(theomIonisation,        idxAlongStep,2);
684   //
685   // set ordering for PostStepDoIt
686   pManager->SetProcessOrdering(theomMultipleScattering, idxPostStep,1);
687   pManager->SetProcessOrdering(theomIonisation,        idxPostStep,2);
688
689
690   // anti-Omega- Physics
691   pManager = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager();
692
693   // add process
694   G4HadronElasticProcess* theaomElasticProcess
695                         = new G4HadronElasticProcess();
696   G4LElastic* theaomElasticModel = new G4LElastic();
697   theaomElasticProcess->RegisterMe(theaomElasticModel);
698   pManager->AddDiscreteProcess(theaomElasticProcess);
699
700   G4AntiOmegaMinusInelasticProcess* theAntiOmegaMinusInelasticProcess
701                         = new G4AntiOmegaMinusInelasticProcess(); 
702
703   G4LEAntiOmegaMinusInelastic* theAntiOmegaMinusLEPModel = new G4LEAntiOmegaMinusInelastic();
704   G4HEAntiOmegaMinusInelastic* theAntiOmegaMinusHEPModel = new G4HEAntiOmegaMinusInelastic();
705   theAntiOmegaMinusInelasticProcess->RegisterMe(theAntiOmegaMinusLEPModel);
706   theAntiOmegaMinusInelasticProcess->RegisterMe(theAntiOmegaMinusHEPModel);
707   pManager->AddDiscreteProcess(theAntiOmegaMinusInelasticProcess);
708
709   G4VProcess* theaomMultipleScattering = new G4MultipleScattering();
710   G4VProcess* theaomIonisation        = new G4hIonisation();
711
712   pManager->AddProcess(theaomIonisation);
713   pManager->AddProcess(theaomMultipleScattering);
714
715   // set ordering for AlongStepDoIt
716   pManager->SetProcessOrdering(theaomMultipleScattering, idxAlongStep,1);
717   pManager->SetProcessOrdering(theaomIonisation,        idxAlongStep,2);
718   //
719   // set ordering for PostStepDoIt
720   pManager->SetProcessOrdering(theaomMultipleScattering, idxPostStep,1);
721   pManager->SetProcessOrdering(theaomIonisation,        idxPostStep,2);
722
723}
Note: See TracBrowser for help on using the repository browser.