BOSS 8.0.0
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-58 $
26//
27//
28
29#include "globals.hh"
30#include <cmath>
31
33
34#include "G4ios.hh"
35
37 : G4VPhysicsConstructor( name ) {}
38
40
41#include "G4ParticleDefinition.hh"
42#include "G4ParticleTable.hh"
43
44// Nuclei
45#include "G4BaryonConstructor.hh"
46#include "G4MesonConstructor.hh"
47#include "G4ShortLivedConstructor.hh"
48
50 // Construct all mesons
51 G4MesonConstructor pMesonConstructor;
52 pMesonConstructor.ConstructParticle();
53
54 // Construct all barions
55 G4BaryonConstructor pBaryonConstructor;
56 pBaryonConstructor.ConstructParticle();
57
58 // Construct resonaces and quarks
59 G4ShortLivedConstructor pShortLivedConstructor;
60 pShortLivedConstructor.ConstructParticle();
61}
62
63#include "G4ProcessManager.hh"
64
66 G4ProcessManager* pManager = 0;
67
68 // Elastic Process
69 theElasticModel = new G4LElastic();
71
72 // PionPlus
73 pManager = G4PionPlus::PionPlus()->GetProcessManager();
74 // add process
75 pManager->AddDiscreteProcess( &theElasticProcess );
76
77 theLEPionPlusModel = new G4LEPionPlusInelastic();
78 theHEPionPlusModel = new G4HEPionPlusInelastic();
81 pManager->AddDiscreteProcess( &thePionPlusInelastic );
82
83 pManager->AddProcess( &thePionPlusIonisation, ordInActive, 2, 2 );
84
85 pManager->AddProcess( &thePionPlusMult );
86 pManager->SetProcessOrdering( &thePionPlusMult, idxAlongStep, 1 );
87 pManager->SetProcessOrdering( &thePionPlusMult, idxPostStep, 1 );
88
89 // PionMinus
90 pManager = G4PionMinus::PionMinus()->GetProcessManager();
91 // add process
92 pManager->AddDiscreteProcess( &theElasticProcess );
93
94 theLEPionMinusModel = new G4LEPionMinusInelastic();
95 theHEPionMinusModel = new G4HEPionMinusInelastic();
98 pManager->AddDiscreteProcess( &thePionMinusInelastic );
99
100 pManager->AddProcess( &thePionMinusIonisation, ordInActive, 2, 2 );
101
102 pManager->AddProcess( &thePionMinusMult );
103 pManager->SetProcessOrdering( &thePionMinusMult, idxAlongStep, 1 );
104 pManager->SetProcessOrdering( &thePionMinusMult, idxPostStep, 1 );
105
106 pManager->AddRestProcess( &thePionMinusAbsorption, ordDefault );
107
108 // KaonPlus
109 pManager = G4KaonPlus::KaonPlus()->GetProcessManager();
110 // add process
111 pManager->AddDiscreteProcess( &theElasticProcess );
112
113 theLEKaonPlusModel = new G4LEKaonPlusInelastic();
114 theHEKaonPlusModel = new G4HEKaonPlusInelastic();
117 pManager->AddDiscreteProcess( &theKaonPlusInelastic );
118
119 pManager->AddProcess( &theKaonPlusIonisation, ordInActive, 2, 2 );
120
121 pManager->AddProcess( &theKaonPlusMult );
122 pManager->SetProcessOrdering( &theKaonPlusMult, idxAlongStep, 1 );
123 pManager->SetProcessOrdering( &theKaonPlusMult, idxPostStep, 1 );
124
125 // KaonMinus
126 pManager = G4KaonMinus::KaonMinus()->GetProcessManager();
127 // add process
128 pManager->AddDiscreteProcess( &theElasticProcess );
129
130 theLEKaonMinusModel = new G4LEKaonMinusInelastic();
131 theHEKaonMinusModel = new G4HEKaonMinusInelastic();
134 pManager->AddDiscreteProcess( &theKaonMinusInelastic );
135
136 pManager->AddProcess( &theKaonMinusIonisation, ordInActive, 2, 2 );
137
138 pManager->AddProcess( &theKaonMinusMult );
139 pManager->SetProcessOrdering( &theKaonMinusMult, idxAlongStep, 1 );
140 pManager->SetProcessOrdering( &theKaonMinusMult, idxPostStep, 1 );
141
142 pManager->AddRestProcess( &theKaonMinusAbsorption, ordDefault );
143
144 // KaonZeroL
145 pManager = G4KaonZeroLong::KaonZeroLong()->GetProcessManager();
146 // add process
147 pManager->AddDiscreteProcess( &theElasticProcess );
148
149 theLEKaonZeroLModel = new G4LEKaonZeroLInelastic();
150 theHEKaonZeroLModel = new G4HEKaonZeroInelastic();
153 pManager->AddDiscreteProcess( &theKaonZeroLInelastic );
154
155 // KaonZeroS
156 pManager = G4KaonZeroShort::KaonZeroShort()->GetProcessManager();
157 // add process
158 pManager->AddDiscreteProcess( &theElasticProcess );
159
160 theLEKaonZeroSModel = new G4LEKaonZeroSInelastic();
161 theHEKaonZeroSModel = new G4HEKaonZeroInelastic();
164 pManager->AddDiscreteProcess( &theKaonZeroSInelastic );
165
166 // Proton
167 pManager = G4Proton::Proton()->GetProcessManager();
168 // add process
169 pManager->AddDiscreteProcess( &theElasticProcess );
170
171 theLEProtonModel = new G4LEProtonInelastic();
172 theHEProtonModel = new G4HEProtonInelastic();
175 pManager->AddDiscreteProcess( &theProtonInelastic );
176
177 pManager->AddProcess( &theProtonIonisation, ordInActive, 2, 2 );
178
179 pManager->AddProcess( &theProtonMult );
180 pManager->SetProcessOrdering( &theProtonMult, idxAlongStep, 1 );
181 pManager->SetProcessOrdering( &theProtonMult, idxPostStep, 1 );
182
183 // anti-Proton
184 pManager = G4AntiProton::AntiProton()->GetProcessManager();
185 // add process
186 pManager->AddDiscreteProcess( &theElasticProcess );
187
188 theLEAntiProtonModel = new G4LEAntiProtonInelastic();
189 theHEAntiProtonModel = new G4HEAntiProtonInelastic();
192 pManager->AddDiscreteProcess( &theAntiProtonInelastic );
193
194 pManager->AddProcess( &theAntiProtonIonisation, ordInActive, 2, 2 );
195
196 pManager->AddProcess( &theAntiProtonMult );
197 pManager->SetProcessOrdering( &theAntiProtonMult, idxAlongStep, 1 );
198 pManager->SetProcessOrdering( &theAntiProtonMult, idxPostStep, 1 );
199
200 pManager->AddRestProcess( &theAntiProtonAnnihilation );
201
202 // Neutron
203 pManager = G4Neutron::Neutron()->GetProcessManager();
204 // add process
205 pManager->AddDiscreteProcess( &theElasticProcess );
206
207 theLENeutronModel = new G4LENeutronInelastic();
208 theHENeutronModel = new G4HENeutronInelastic();
211 pManager->AddDiscreteProcess( &theNeutronInelastic );
212
213 // theNeutronFissionModel = new G4LFission();
214 // theNeutronFission.RegisterMe(theNeutronFissionModel);
215 // pManager->AddDiscreteProcess(&NeutronFission);
216
217 // theNeutronCaptureModel = new G4LCapture();
218 // theNeutronCapture.RegisterMe(theNeutronCaptureModel);
219 // pManager->AddDiscreteProcess(&theNeutronCapture);
220
221 // AntiNeutron
222 pManager = G4AntiNeutron::AntiNeutron()->GetProcessManager();
223 // add process
224 pManager->AddDiscreteProcess( &theElasticProcess );
225
226 theLEAntiNeutronModel = new G4LEAntiNeutronInelastic();
227 theHEAntiNeutronModel = new G4HEAntiNeutronInelastic();
230 pManager->AddDiscreteProcess( &theAntiNeutronInelastic );
231
232 pManager->AddRestProcess( &theAntiNeutronAnnihilation );
233
234 // Lambda
235 pManager = G4Lambda::Lambda()->GetProcessManager();
236 // add process
237 pManager->AddDiscreteProcess( &theElasticProcess );
238
239 theLELambdaModel = new G4LELambdaInelastic();
240 theHELambdaModel = new G4HELambdaInelastic();
243 pManager->AddDiscreteProcess( &theLambdaInelastic );
244
245 // AntiLambda
246 pManager = G4AntiLambda::AntiLambda()->GetProcessManager();
247 // add process
248 pManager->AddDiscreteProcess( &theElasticProcess );
249
250 theLEAntiLambdaModel = new G4LEAntiLambdaInelastic();
251 theHEAntiLambdaModel = new G4HEAntiLambdaInelastic();
254 pManager->AddDiscreteProcess( &theAntiLambdaInelastic );
255
256 // SigmaMinus
257 pManager = G4SigmaMinus::SigmaMinus()->GetProcessManager();
258 // add process
259 pManager->AddDiscreteProcess( &theElasticProcess );
260
261 theLESigmaMinusModel = new G4LESigmaMinusInelastic();
262 theHESigmaMinusModel = new G4HESigmaMinusInelastic();
265 pManager->AddDiscreteProcess( &theSigmaMinusInelastic );
266
267 pManager->AddProcess( &theSigmaMinusIonisation, ordInActive, 2, 2 );
268
269 pManager->AddProcess( &theSigmaMinusMult );
270 pManager->SetProcessOrdering( &theSigmaMinusMult, idxAlongStep, 1 );
271 pManager->SetProcessOrdering( &theSigmaMinusMult, idxPostStep, 1 );
272
273 // anti-SigmaMinus
274 pManager = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager();
275 // add process
276 pManager->AddDiscreteProcess( &theElasticProcess );
277
278 theLEAntiSigmaMinusModel = new G4LEAntiSigmaMinusInelastic();
279 theHEAntiSigmaMinusModel = new G4HEAntiSigmaMinusInelastic();
282 pManager->AddDiscreteProcess( &theAntiSigmaMinusInelastic );
283
284 pManager->AddProcess( &theAntiSigmaMinusIonisation, ordInActive, 2, 2 );
285
286 pManager->AddProcess( &theAntiSigmaMinusMult );
287 pManager->SetProcessOrdering( &theAntiSigmaMinusMult, idxAlongStep, 1 );
288 pManager->SetProcessOrdering( &theAntiSigmaMinusMult, idxPostStep, 1 );
289
290 // SigmaPlus
291 pManager = G4SigmaPlus::SigmaPlus()->GetProcessManager();
292 // add process
293 pManager->AddDiscreteProcess( &theElasticProcess );
294
295 theLESigmaPlusModel = new G4LESigmaPlusInelastic();
296 theHESigmaPlusModel = new G4HESigmaPlusInelastic();
299 pManager->AddDiscreteProcess( &theSigmaPlusInelastic );
300
301 pManager->AddProcess( &theSigmaPlusIonisation, ordInActive, 2, 2 );
302
303 pManager->AddProcess( &theSigmaPlusMult );
304 pManager->SetProcessOrdering( &theSigmaPlusMult, idxAlongStep, 1 );
305 pManager->SetProcessOrdering( &theSigmaPlusMult, idxPostStep, 1 );
306
307 // anti-SigmaPlus
308 pManager = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager();
309 // add process
310 pManager->AddDiscreteProcess( &theElasticProcess );
311
312 theLEAntiSigmaPlusModel = new G4LEAntiSigmaPlusInelastic();
313 theHEAntiSigmaPlusModel = new G4HEAntiSigmaPlusInelastic();
316 pManager->AddDiscreteProcess( &theAntiSigmaPlusInelastic );
317
318 pManager->AddProcess( &theAntiSigmaPlusIonisation, ordInActive, 2, 2 );
319
320 pManager->AddProcess( &theAntiSigmaPlusMult );
321 pManager->SetProcessOrdering( &theAntiSigmaPlusMult, idxAlongStep, 1 );
322 pManager->SetProcessOrdering( &theAntiSigmaPlusMult, idxPostStep, 1 );
323
324 // XiMinus
325 pManager = G4XiMinus::XiMinus()->GetProcessManager();
326 // add process
327 pManager->AddDiscreteProcess( &theElasticProcess );
328
329 theLEXiMinusModel = new G4LEXiMinusInelastic();
330 theHEXiMinusModel = new G4HEXiMinusInelastic();
333 pManager->AddDiscreteProcess( &theXiMinusInelastic );
334
335 pManager->AddProcess( &theXiMinusIonisation, ordInActive, 2, 2 );
336
337 pManager->AddProcess( &theXiMinusMult );
338 pManager->SetProcessOrdering( &theXiMinusMult, idxAlongStep, 1 );
339 pManager->SetProcessOrdering( &theXiMinusMult, idxPostStep, 1 );
340
341 // anti-XiMinus
342 pManager = G4AntiXiMinus::AntiXiMinus()->GetProcessManager();
343 // add process
344 pManager->AddDiscreteProcess( &theElasticProcess );
345
346 theLEAntiXiMinusModel = new G4LEAntiXiMinusInelastic();
347 theHEAntiXiMinusModel = new G4HEAntiXiMinusInelastic();
350 pManager->AddDiscreteProcess( &theAntiXiMinusInelastic );
351
352 pManager->AddProcess( &theAntiXiMinusIonisation, ordInActive, 2, 2 );
353
354 pManager->AddProcess( &theAntiXiMinusMult );
355 pManager->SetProcessOrdering( &theAntiXiMinusMult, idxAlongStep, 1 );
356 pManager->SetProcessOrdering( &theAntiXiMinusMult, idxPostStep, 1 );
357
358 // XiZero
359 pManager = G4XiZero::XiZero()->GetProcessManager();
360 // add process
361 pManager->AddDiscreteProcess( &theElasticProcess );
362
363 theLEXiZeroModel = new G4LEXiZeroInelastic();
364 theHEXiZeroModel = new G4HEXiZeroInelastic();
367 pManager->AddDiscreteProcess( &theXiZeroInelastic );
368
369 // anti-XiZero
370 pManager = G4AntiXiZero::AntiXiZero()->GetProcessManager();
371 // add process
372 pManager->AddDiscreteProcess( &theElasticProcess );
373
374 theLEAntiXiZeroModel = new G4LEAntiXiZeroInelastic();
375 theHEAntiXiZeroModel = new G4HEAntiXiZeroInelastic();
378 pManager->AddDiscreteProcess( &theAntiXiZeroInelastic );
379
380 // OmegaMinus
381 pManager = G4OmegaMinus::OmegaMinus()->GetProcessManager();
382 // add process
383 pManager->AddDiscreteProcess( &theElasticProcess );
384
385 theLEOmegaMinusModel = new G4LEOmegaMinusInelastic();
386 theHEOmegaMinusModel = new G4HEOmegaMinusInelastic();
389 pManager->AddDiscreteProcess( &theOmegaMinusInelastic );
390
391 pManager->AddProcess( &theOmegaMinusIonisation, ordInActive, 2, 2 );
392
393 pManager->AddProcess( &theOmegaMinusMult );
394 pManager->SetProcessOrdering( &theOmegaMinusMult, idxAlongStep, 1 );
395 pManager->SetProcessOrdering( &theOmegaMinusMult, idxPostStep, 1 );
396
397 // anti-OmegaMinus
398 pManager = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager();
399 // add process
400 pManager->AddDiscreteProcess( &theElasticProcess );
401
402 theLEAntiOmegaMinusModel = new G4LEAntiOmegaMinusInelastic();
403 theHEAntiOmegaMinusModel = new G4HEAntiOmegaMinusInelastic();
406 pManager->AddDiscreteProcess( &theAntiOmegaMinusInelastic );
407
408 pManager->AddProcess( &theAntiOmegaMinusIonisation, ordInActive, 2, 2 );
409
410 pManager->AddProcess( &theAntiOmegaMinusMult );
411 pManager->SetProcessOrdering( &theAntiOmegaMinusMult, idxAlongStep, 1 );
412 pManager->SetProcessOrdering( &theAntiOmegaMinusMult, idxPostStep, 1 );
413}
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