BOSS 7.1.1
BESIII Offline Software System
Loading...
Searching...
No Matches
ExN04HadronPhysics.cxx
Go to the documentation of this file.
1//
2// ********************************************************************
3// * DISCLAIMER *
4// * *
5// * The following disclaimer summarizes all the specific disclaimers *
6// * of contributors to this software. The specific disclaimers,which *
7// * govern, are listed with their locations in: *
8// * http://cern.ch/geant4/license *
9// * *
10// * Neither the authors of this software system, nor their employing *
11// * institutes,nor the agencies providing financial support for this *
12// * work make any representation or warranty, express or implied, *
13// * regarding this software system or assume any liability for its *
14// * use. *
15// * *
16// * This code implementation is the intellectual property of the *
17// * GEANT4 collaboration. *
18// * By copying, distributing or modifying the Program (or any work *
19// * based on the Program) you indicate your acceptance of this *
20// * statement, and all its terms. *
21// ********************************************************************
22//
23//
24// $Id: ExN04HadronPhysics.cxx,v 1.1.1.1 2004/09/28 05:16:53 liwd Exp $
25// GEANT4 tag $Name: G4Svc-00-01-56 $
26//
27//
28
29#include <cmath>
30#include "globals.hh"
31
33
34#include "G4ios.hh"
35
37 : G4VPhysicsConstructor(name)
38{
39}
40
44
45#include "G4ParticleDefinition.hh"
46#include "G4ParticleTable.hh"
47
48// Nuclei
49#include "G4MesonConstructor.hh"
50#include "G4BaryonConstructor.hh"
51#include "G4ShortLivedConstructor.hh"
52
54{
55 // Construct all mesons
56 G4MesonConstructor pMesonConstructor;
57 pMesonConstructor.ConstructParticle();
58
59 // Construct all barions
60 G4BaryonConstructor pBaryonConstructor;
61 pBaryonConstructor.ConstructParticle();
62
63 // Construct resonaces and quarks
64 G4ShortLivedConstructor pShortLivedConstructor;
65 pShortLivedConstructor.ConstructParticle();
66
67}
68
69
70#include "G4ProcessManager.hh"
71
72
74{
75 G4ProcessManager * pManager = 0;
76
77 // Elastic Process
78 theElasticModel = new G4LElastic();
80
81 // PionPlus
82 pManager = G4PionPlus::PionPlus()->GetProcessManager();
83 // add process
84 pManager->AddDiscreteProcess(&theElasticProcess);
85
86 theLEPionPlusModel = new G4LEPionPlusInelastic();
87 theHEPionPlusModel = new G4HEPionPlusInelastic();
90 pManager->AddDiscreteProcess(&thePionPlusInelastic);
91
92 pManager->AddProcess(&thePionPlusIonisation, ordInActive,2, 2);
93
94 pManager->AddProcess(&thePionPlusMult);
95 pManager->SetProcessOrdering(&thePionPlusMult, idxAlongStep, 1);
96 pManager->SetProcessOrdering(&thePionPlusMult, idxPostStep, 1);
97
98 // PionMinus
99 pManager = G4PionMinus::PionMinus()->GetProcessManager();
100 // add process
101 pManager->AddDiscreteProcess(&theElasticProcess);
102
103 theLEPionMinusModel = new G4LEPionMinusInelastic();
104 theHEPionMinusModel = new G4HEPionMinusInelastic();
107 pManager->AddDiscreteProcess(&thePionMinusInelastic);
108
109 pManager->AddProcess(&thePionMinusIonisation, ordInActive,2, 2);
110
111 pManager->AddProcess(&thePionMinusMult);
112 pManager->SetProcessOrdering(&thePionMinusMult, idxAlongStep, 1);
113 pManager->SetProcessOrdering(&thePionMinusMult, idxPostStep, 1);
114
115 pManager->AddRestProcess(&thePionMinusAbsorption, ordDefault);
116
117 // KaonPlus
118 pManager = G4KaonPlus::KaonPlus()->GetProcessManager();
119 // add process
120 pManager->AddDiscreteProcess(&theElasticProcess);
121
122 theLEKaonPlusModel = new G4LEKaonPlusInelastic();
123 theHEKaonPlusModel = new G4HEKaonPlusInelastic();
126 pManager->AddDiscreteProcess(&theKaonPlusInelastic);
127
128 pManager->AddProcess(&theKaonPlusIonisation, ordInActive,2, 2);
129
130 pManager->AddProcess(&theKaonPlusMult);
131 pManager->SetProcessOrdering(&theKaonPlusMult, idxAlongStep, 1);
132 pManager->SetProcessOrdering(&theKaonPlusMult, idxPostStep, 1);
133
134 // KaonMinus
135 pManager = G4KaonMinus::KaonMinus()->GetProcessManager();
136 // add process
137 pManager->AddDiscreteProcess(&theElasticProcess);
138
139 theLEKaonMinusModel = new G4LEKaonMinusInelastic();
140 theHEKaonMinusModel = new G4HEKaonMinusInelastic();
143 pManager->AddDiscreteProcess(&theKaonMinusInelastic);
144
145 pManager->AddProcess(&theKaonMinusIonisation, ordInActive,2, 2);
146
147 pManager->AddProcess(&theKaonMinusMult);
148 pManager->SetProcessOrdering(&theKaonMinusMult, idxAlongStep, 1);
149 pManager->SetProcessOrdering(&theKaonMinusMult, idxPostStep, 1);
150
151 pManager->AddRestProcess(&theKaonMinusAbsorption, ordDefault);
152
153 // KaonZeroL
154 pManager = G4KaonZeroLong::KaonZeroLong()->GetProcessManager();
155 // add process
156 pManager->AddDiscreteProcess(&theElasticProcess);
157
158 theLEKaonZeroLModel = new G4LEKaonZeroLInelastic();
159 theHEKaonZeroLModel = new G4HEKaonZeroInelastic();
162 pManager->AddDiscreteProcess(&theKaonZeroLInelastic);
163
164 // KaonZeroS
165 pManager = G4KaonZeroShort::KaonZeroShort()->GetProcessManager();
166 // add process
167 pManager->AddDiscreteProcess(&theElasticProcess);
168
169 theLEKaonZeroSModel = new G4LEKaonZeroSInelastic();
170 theHEKaonZeroSModel = new G4HEKaonZeroInelastic();
173 pManager->AddDiscreteProcess(&theKaonZeroSInelastic);
174
175 // Proton
176 pManager = G4Proton::Proton()->GetProcessManager();
177 // add process
178 pManager->AddDiscreteProcess(&theElasticProcess);
179
180 theLEProtonModel = new G4LEProtonInelastic();
181 theHEProtonModel = new G4HEProtonInelastic();
184 pManager->AddDiscreteProcess(&theProtonInelastic);
185
186 pManager->AddProcess(&theProtonIonisation, ordInActive,2, 2);
187
188 pManager->AddProcess(&theProtonMult);
189 pManager->SetProcessOrdering(&theProtonMult, idxAlongStep, 1);
190 pManager->SetProcessOrdering(&theProtonMult, idxPostStep, 1);
191
192 // anti-Proton
193 pManager = G4AntiProton::AntiProton()->GetProcessManager();
194 // add process
195 pManager->AddDiscreteProcess(&theElasticProcess);
196
197 theLEAntiProtonModel = new G4LEAntiProtonInelastic();
198 theHEAntiProtonModel = new G4HEAntiProtonInelastic();
201 pManager->AddDiscreteProcess(&theAntiProtonInelastic);
202
203 pManager->AddProcess(&theAntiProtonIonisation, ordInActive,2, 2);
204
205 pManager->AddProcess(&theAntiProtonMult);
206 pManager->SetProcessOrdering(&theAntiProtonMult, idxAlongStep, 1);
207 pManager->SetProcessOrdering(&theAntiProtonMult, idxPostStep, 1);
208
209 pManager->AddRestProcess(&theAntiProtonAnnihilation);
210
211 // Neutron
212 pManager = G4Neutron::Neutron()->GetProcessManager();
213 // add process
214 pManager->AddDiscreteProcess(&theElasticProcess);
215
216 theLENeutronModel = new G4LENeutronInelastic();
217 theHENeutronModel = new G4HENeutronInelastic();
220 pManager->AddDiscreteProcess(&theNeutronInelastic);
221
222 //theNeutronFissionModel = new G4LFission();
223 //theNeutronFission.RegisterMe(theNeutronFissionModel);
224 //pManager->AddDiscreteProcess(&NeutronFission);
225
226 //theNeutronCaptureModel = new G4LCapture();
227 //theNeutronCapture.RegisterMe(theNeutronCaptureModel);
228 //pManager->AddDiscreteProcess(&theNeutronCapture);
229
230 // AntiNeutron
231 pManager = G4AntiNeutron::AntiNeutron()->GetProcessManager();
232 // add process
233 pManager->AddDiscreteProcess(&theElasticProcess);
234
235 theLEAntiNeutronModel = new G4LEAntiNeutronInelastic();
236 theHEAntiNeutronModel = new G4HEAntiNeutronInelastic();
239 pManager->AddDiscreteProcess(&theAntiNeutronInelastic);
240
241 pManager->AddRestProcess(&theAntiNeutronAnnihilation);
242
243 // Lambda
244 pManager = G4Lambda::Lambda()->GetProcessManager();
245 // add process
246 pManager->AddDiscreteProcess(&theElasticProcess);
247
248 theLELambdaModel = new G4LELambdaInelastic();
249 theHELambdaModel = new G4HELambdaInelastic();
252 pManager->AddDiscreteProcess(&theLambdaInelastic);
253
254 // AntiLambda
255 pManager = G4AntiLambda::AntiLambda()->GetProcessManager();
256 // add process
257 pManager->AddDiscreteProcess(&theElasticProcess);
258
259 theLEAntiLambdaModel = new G4LEAntiLambdaInelastic();
260 theHEAntiLambdaModel = new G4HEAntiLambdaInelastic();
263 pManager->AddDiscreteProcess(&theAntiLambdaInelastic);
264
265 // SigmaMinus
266 pManager = G4SigmaMinus::SigmaMinus()->GetProcessManager();
267 // add process
268 pManager->AddDiscreteProcess(&theElasticProcess);
269
270 theLESigmaMinusModel = new G4LESigmaMinusInelastic();
271 theHESigmaMinusModel = new G4HESigmaMinusInelastic();
274 pManager->AddDiscreteProcess(&theSigmaMinusInelastic);
275
276 pManager->AddProcess(&theSigmaMinusIonisation, ordInActive,2, 2);
277
278 pManager->AddProcess(&theSigmaMinusMult);
279 pManager->SetProcessOrdering(&theSigmaMinusMult, idxAlongStep, 1);
280 pManager->SetProcessOrdering(&theSigmaMinusMult, idxPostStep, 1);
281
282 // anti-SigmaMinus
283 pManager = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager();
284 // add process
285 pManager->AddDiscreteProcess(&theElasticProcess);
286
287 theLEAntiSigmaMinusModel = new G4LEAntiSigmaMinusInelastic();
288 theHEAntiSigmaMinusModel = new G4HEAntiSigmaMinusInelastic();
291 pManager->AddDiscreteProcess(&theAntiSigmaMinusInelastic);
292
293 pManager->AddProcess(&theAntiSigmaMinusIonisation, ordInActive,2, 2);
294
295 pManager->AddProcess(&theAntiSigmaMinusMult);
296 pManager->SetProcessOrdering(&theAntiSigmaMinusMult, idxAlongStep, 1);
297 pManager->SetProcessOrdering(&theAntiSigmaMinusMult, idxPostStep, 1);
298
299 // SigmaPlus
300 pManager = G4SigmaPlus::SigmaPlus()->GetProcessManager();
301 // add process
302 pManager->AddDiscreteProcess(&theElasticProcess);
303
304 theLESigmaPlusModel = new G4LESigmaPlusInelastic();
305 theHESigmaPlusModel = new G4HESigmaPlusInelastic();
308 pManager->AddDiscreteProcess(&theSigmaPlusInelastic);
309
310 pManager->AddProcess(&theSigmaPlusIonisation, ordInActive,2, 2);
311
312 pManager->AddProcess(&theSigmaPlusMult);
313 pManager->SetProcessOrdering(&theSigmaPlusMult, idxAlongStep, 1);
314 pManager->SetProcessOrdering(&theSigmaPlusMult, idxPostStep, 1);
315
316 // anti-SigmaPlus
317 pManager = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager();
318 // add process
319 pManager->AddDiscreteProcess(&theElasticProcess);
320
321 theLEAntiSigmaPlusModel = new G4LEAntiSigmaPlusInelastic();
322 theHEAntiSigmaPlusModel = new G4HEAntiSigmaPlusInelastic();
325 pManager->AddDiscreteProcess(&theAntiSigmaPlusInelastic);
326
327 pManager->AddProcess(&theAntiSigmaPlusIonisation, ordInActive,2, 2);
328
329 pManager->AddProcess(&theAntiSigmaPlusMult);
330 pManager->SetProcessOrdering(&theAntiSigmaPlusMult, idxAlongStep, 1);
331 pManager->SetProcessOrdering(&theAntiSigmaPlusMult, idxPostStep, 1);
332
333 // XiMinus
334 pManager = G4XiMinus::XiMinus()->GetProcessManager();
335 // add process
336 pManager->AddDiscreteProcess(&theElasticProcess);
337
338 theLEXiMinusModel = new G4LEXiMinusInelastic();
339 theHEXiMinusModel = new G4HEXiMinusInelastic();
342 pManager->AddDiscreteProcess(&theXiMinusInelastic);
343
344 pManager->AddProcess(&theXiMinusIonisation, ordInActive,2, 2);
345
346 pManager->AddProcess(&theXiMinusMult);
347 pManager->SetProcessOrdering(&theXiMinusMult, idxAlongStep, 1);
348 pManager->SetProcessOrdering(&theXiMinusMult, idxPostStep, 1);
349
350 // anti-XiMinus
351 pManager = G4AntiXiMinus::AntiXiMinus()->GetProcessManager();
352 // add process
353 pManager->AddDiscreteProcess(&theElasticProcess);
354
355 theLEAntiXiMinusModel = new G4LEAntiXiMinusInelastic();
356 theHEAntiXiMinusModel = new G4HEAntiXiMinusInelastic();
359 pManager->AddDiscreteProcess(&theAntiXiMinusInelastic);
360
361 pManager->AddProcess(&theAntiXiMinusIonisation, ordInActive,2, 2);
362
363 pManager->AddProcess(&theAntiXiMinusMult);
364 pManager->SetProcessOrdering(&theAntiXiMinusMult, idxAlongStep, 1);
365 pManager->SetProcessOrdering(&theAntiXiMinusMult, idxPostStep, 1);
366
367 // XiZero
368 pManager = G4XiZero::XiZero()->GetProcessManager();
369 // add process
370 pManager->AddDiscreteProcess(&theElasticProcess);
371
372 theLEXiZeroModel = new G4LEXiZeroInelastic();
373 theHEXiZeroModel = new G4HEXiZeroInelastic();
376 pManager->AddDiscreteProcess(&theXiZeroInelastic);
377
378 // anti-XiZero
379 pManager = G4AntiXiZero::AntiXiZero()->GetProcessManager();
380 // add process
381 pManager->AddDiscreteProcess(&theElasticProcess);
382
383 theLEAntiXiZeroModel = new G4LEAntiXiZeroInelastic();
384 theHEAntiXiZeroModel = new G4HEAntiXiZeroInelastic();
387 pManager->AddDiscreteProcess(&theAntiXiZeroInelastic);
388
389 // OmegaMinus
390 pManager = G4OmegaMinus::OmegaMinus()->GetProcessManager();
391 // add process
392 pManager->AddDiscreteProcess(&theElasticProcess);
393
394 theLEOmegaMinusModel = new G4LEOmegaMinusInelastic();
395 theHEOmegaMinusModel = new G4HEOmegaMinusInelastic();
398 pManager->AddDiscreteProcess(&theOmegaMinusInelastic);
399
400 pManager->AddProcess(&theOmegaMinusIonisation, ordInActive,2, 2);
401
402 pManager->AddProcess(&theOmegaMinusMult);
403 pManager->SetProcessOrdering(&theOmegaMinusMult, idxAlongStep, 1);
404 pManager->SetProcessOrdering(&theOmegaMinusMult, idxPostStep, 1);
405
406 // anti-OmegaMinus
407 pManager = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager();
408 // add process
409 pManager->AddDiscreteProcess(&theElasticProcess);
410
411 theLEAntiOmegaMinusModel = new G4LEAntiOmegaMinusInelastic();
412 theHEAntiOmegaMinusModel = new G4HEAntiOmegaMinusInelastic();
415 pManager->AddDiscreteProcess(&theAntiOmegaMinusInelastic);
416
417 pManager->AddProcess(&theAntiOmegaMinusIonisation, ordInActive,2, 2);
418
419 pManager->AddProcess(&theAntiOmegaMinusMult);
420 pManager->SetProcessOrdering(&theAntiOmegaMinusMult, idxAlongStep, 1);
421 pManager->SetProcessOrdering(&theAntiOmegaMinusMult, idxPostStep, 1);
422
423}
424
425
426
427
428
G4LENeutronInelastic * theLENeutronModel
G4AntiNeutronAnnihilationAtRest theAntiNeutronAnnihilation
G4AntiProtonAnnihilationAtRest theAntiProtonAnnihilation
G4MultipleScattering theOmegaMinusMult
G4ProtonInelasticProcess theProtonInelastic
G4MultipleScattering theKaonPlusMult
G4MultipleScattering theAntiProtonMult
G4HEAntiXiMinusInelastic * theHEAntiXiMinusModel
G4XiZeroInelasticProcess theXiZeroInelastic
G4HENeutronInelastic * theHENeutronModel
G4LEAntiSigmaMinusInelastic * theLEAntiSigmaMinusModel
G4HEKaonMinusInelastic * theHEKaonMinusModel
G4HEKaonPlusInelastic * theHEKaonPlusModel
G4hIonisation theAntiOmegaMinusIonisation
G4MultipleScattering thePionPlusMult
G4HEPionMinusInelastic * theHEPionMinusModel
G4LESigmaPlusInelastic * theLESigmaPlusModel
G4MultipleScattering theKaonMinusMult
G4MultipleScattering thePionMinusMult
G4LEXiZeroInelastic * theLEXiZeroModel
virtual void ConstructProcess()
G4LEXiMinusInelastic * theLEXiMinusModel
G4PionMinusInelasticProcess thePionMinusInelastic
G4MultipleScattering theAntiSigmaMinusMult
G4KaonMinusInelasticProcess theKaonMinusInelastic
G4LEPionPlusInelastic * theLEPionPlusModel
G4AntiOmegaMinusInelasticProcess theAntiOmegaMinusInelastic
G4MultipleScattering theXiMinusMult
G4LEKaonZeroSInelastic * theLEKaonZeroSModel
G4SigmaMinusInelasticProcess theSigmaMinusInelastic
G4HEAntiSigmaMinusInelastic * theHEAntiSigmaMinusModel
G4AntiXiMinusInelasticProcess theAntiXiMinusInelastic
G4LEProtonInelastic * theLEProtonModel
G4LEAntiXiMinusInelastic * theLEAntiXiMinusModel
G4HadronElasticProcess theElasticProcess
G4hIonisation theKaonMinusIonisation
G4LambdaInelasticProcess theLambdaInelastic
G4HEXiZeroInelastic * theHEXiZeroModel
G4hIonisation theProtonIonisation
G4hIonisation theAntiXiMinusIonisation
G4hIonisation theXiMinusIonisation
G4LEAntiSigmaPlusInelastic * theLEAntiSigmaPlusModel
G4OmegaMinusInelasticProcess theOmegaMinusInelastic
G4XiMinusInelasticProcess theXiMinusInelastic
G4LEOmegaMinusInelastic * theLEOmegaMinusModel
G4LEKaonZeroLInelastic * theLEKaonZeroLModel
G4HEKaonZeroInelastic * theHEKaonZeroSModel
G4LEAntiNeutronInelastic * theLEAntiNeutronModel
G4LEAntiOmegaMinusInelastic * theLEAntiOmegaMinusModel
G4LEKaonPlusInelastic * theLEKaonPlusModel
G4KaonPlusInelasticProcess theKaonPlusInelastic
ExN04HadronPhysics(const G4String &name="hadron")
G4KaonZeroLInelasticProcess theKaonZeroLInelastic
G4LEAntiProtonInelastic * theLEAntiProtonModel
G4hIonisation thePionPlusIonisation
G4SigmaPlusInelasticProcess theSigmaPlusInelastic
G4hIonisation theAntiSigmaMinusIonisation
G4AntiSigmaPlusInelasticProcess theAntiSigmaPlusInelastic
G4hIonisation theKaonPlusIonisation
G4AntiSigmaMinusInelasticProcess theAntiSigmaMinusInelastic
G4MultipleScattering theAntiSigmaPlusMult
G4MultipleScattering theSigmaPlusMult
G4HEXiMinusInelastic * theHEXiMinusModel
G4HEAntiSigmaPlusInelastic * theHEAntiSigmaPlusModel
G4LEAntiXiZeroInelastic * theLEAntiXiZeroModel
G4NeutronInelasticProcess theNeutronInelastic
G4MultipleScattering theProtonMult
G4AntiProtonInelasticProcess theAntiProtonInelastic
G4hIonisation theAntiSigmaPlusIonisation
G4HESigmaPlusInelastic * theHESigmaPlusModel
G4HESigmaMinusInelastic * theHESigmaMinusModel
G4LESigmaMinusInelastic * theLESigmaMinusModel
G4LEAntiLambdaInelastic * theLEAntiLambdaModel
G4hIonisation theOmegaMinusIonisation
virtual void ConstructParticle()
G4PionPlusInelasticProcess thePionPlusInelastic
G4AntiXiZeroInelasticProcess theAntiXiZeroInelastic
G4HEProtonInelastic * theHEProtonModel
G4PiMinusAbsorptionAtRest theKaonMinusAbsorption
G4AntiNeutronInelasticProcess theAntiNeutronInelastic
G4MultipleScattering theSigmaMinusMult
G4HEOmegaMinusInelastic * theHEOmegaMinusModel
G4HELambdaInelastic * theHELambdaModel
G4MultipleScattering theAntiXiMinusMult
G4HEAntiXiZeroInelastic * theHEAntiXiZeroModel
G4KaonZeroSInelasticProcess theKaonZeroSInelastic
G4HEAntiLambdaInelastic * theHEAntiLambdaModel
G4LEPionMinusInelastic * theLEPionMinusModel
G4hIonisation thePionMinusIonisation
G4HEAntiOmegaMinusInelastic * theHEAntiOmegaMinusModel
G4LEKaonMinusInelastic * theLEKaonMinusModel
G4LELambdaInelastic * theLELambdaModel
G4MultipleScattering theAntiOmegaMinusMult
G4AntiLambdaInelasticProcess theAntiLambdaInelastic
G4hIonisation theSigmaPlusIonisation
G4HEPionPlusInelastic * theHEPionPlusModel
G4HEAntiProtonInelastic * theHEAntiProtonModel
G4hIonisation theAntiProtonIonisation
G4HEAntiNeutronInelastic * theHEAntiNeutronModel
G4HEKaonZeroInelastic * theHEKaonZeroLModel
G4PiMinusAbsorptionAtRest thePionMinusAbsorption
G4hIonisation theSigmaMinusIonisation