BOSS 7.0.1
BESIII Offline Software System
Loading...
Searching...
No Matches
BesHadronPhysics.cc
Go to the documentation of this file.
1
2#include "BesHadronPhysics.hh"
3
4#include "globals.hh"
5#include "G4ios.hh"
6#include <iomanip>
7
8
10 : G4VPhysicsConstructor(name)
11{
12}
13
15{
16//AZ delete theStringDecay;
17}
18
19#include "G4ParticleDefinition.hh"
20//AZ #include "G4ParticleTable.hh"
21
22// Nuclei
23#include "G4MesonConstructor.hh"
24#include "G4BaryonConstructor.hh"
25#include "G4ShortLivedConstructor.hh"
26
28{
29 // Construct all mesons
30 G4MesonConstructor pMesonConstructor;
31 pMesonConstructor.ConstructParticle();
32
33 // Construct all barions
34 G4BaryonConstructor pBaryonConstructor;
35 pBaryonConstructor.ConstructParticle();
36
37 // Construct resonaces and quarks
38 G4ShortLivedConstructor pShortLivedConstructor;
39 pShortLivedConstructor.ConstructParticle();
40
41}
42
43
44#include "G4ProcessManager.hh"
45
46
48{
49 G4ProcessManager * pManager = 0;
50 G4cout << "" << G4endl;
51 G4cout << "You are using the ExN04HadronPhysics" << G4endl;
52 G4cout << " - Note that this hadronic physics list is not optimized for any particular usage" << G4endl;
53 G4cout << " - If you wish to have a starting point tailored for a particular area of work," << G4endl;
54 G4cout << " please use one of the available physics lists by use-case." << G4endl;
55 G4cout << " More information can also be found from the Geant4 HyperNews." << G4endl;
56 G4cout << "" << G4endl;
57 // Elastic Process
58 theElasticModel = new G4LElastic();
60
61 // pi+ and pi-
62
63 thePreEquilib = new G4PreCompoundModel(&theHandler);
64 theCascade.SetDeExcitation(thePreEquilib);
65/*AZ theTheoModel.SetTransport(&theCascade);
66 theTheoModel.SetHighEnergyGenerator(theStringModel);
67 theStringDecay = new G4ExcitedStringDecay(&theFragmentation);
68 theStringModel->SetFragmentationModel(theStringDecay);
69 theTheoModel.SetMinEnergy(15*GeV);
70 theTheoModel.SetMaxEnergy(100*TeV);
71*/
72 // PionPlus
73 pManager = G4PionPlus::PionPlus()->GetProcessManager();
74 // add process
75 pManager->AddDiscreteProcess(&theElasticProcess);
76
77 theLEPionPlusModel = new G4LEPionPlusInelastic();
79// thePionPlusInelastic.RegisterMe(&theTheoModel);
80 pManager->AddDiscreteProcess(&thePionPlusInelastic);
81
82 pManager->AddProcess(&thePionPlusIonisation, ordInActive,2, 2);
83
84 pManager->AddProcess(&thePionPlusMult);
85 pManager->SetProcessOrdering(&thePionPlusMult, idxAlongStep, 1);
86 pManager->SetProcessOrdering(&thePionPlusMult, idxPostStep, 1);
87
88 // PionMinus
89 pManager = G4PionMinus::PionMinus()->GetProcessManager();
90 // add process
91 pManager->AddDiscreteProcess(&theElasticProcess);
92
93 theLEPionMinusModel = new G4LEPionMinusInelastic();
95// thePionMinusInelastic.RegisterMe(&theTheoModel);
96 pManager->AddDiscreteProcess(&thePionMinusInelastic);
97
98 pManager->AddProcess(&thePionMinusIonisation, ordInActive,2, 2);
99
100 pManager->AddProcess(&thePionMinusMult);
101 pManager->SetProcessOrdering(&thePionMinusMult, idxAlongStep, 1);
102 pManager->SetProcessOrdering(&thePionMinusMult, idxPostStep, 1);
103
104 pManager->AddRestProcess(&thePionMinusAbsorption, ordDefault);
105
106 // KaonPlus
107 pManager = G4KaonPlus::KaonPlus()->GetProcessManager();
108 // add process
109 pManager->AddDiscreteProcess(&theElasticProcess);
110
111 theLEKaonPlusModel = new G4LEKaonPlusInelastic();
112 theHEKaonPlusModel = new G4HEKaonPlusInelastic();
114// theKaonPlusInelastic.RegisterMe(&theTheoModel);
115 pManager->AddDiscreteProcess(&theKaonPlusInelastic);
116
117 pManager->AddProcess(&theKaonPlusIonisation, ordInActive,2, 2);
118
119 pManager->AddProcess(&theKaonPlusMult);
120 pManager->SetProcessOrdering(&theKaonPlusMult, idxAlongStep, 1);
121 pManager->SetProcessOrdering(&theKaonPlusMult, idxPostStep, 1);
122
123 // KaonMinus
124 pManager = G4KaonMinus::KaonMinus()->GetProcessManager();
125 // add process
126 pManager->AddDiscreteProcess(&theElasticProcess);
127
128 theLEKaonMinusModel = new G4LEKaonMinusInelastic();
129 theHEKaonMinusModel = new G4HEKaonMinusInelastic();
132 pManager->AddDiscreteProcess(&theKaonMinusInelastic);
133
134 pManager->AddProcess(&theKaonMinusIonisation, ordInActive,2, 2);
135
136 pManager->AddProcess(&theKaonMinusMult);
137 pManager->SetProcessOrdering(&theKaonMinusMult, idxAlongStep, 1);
138 pManager->SetProcessOrdering(&theKaonMinusMult, idxPostStep, 1);
139
140 pManager->AddRestProcess(&theKaonMinusAbsorption, ordDefault);
141
142 // KaonZeroL
143 pManager = G4KaonZeroLong::KaonZeroLong()->GetProcessManager();
144 // add process
145 pManager->AddDiscreteProcess(&theElasticProcess);
146
147 theLEKaonZeroLModel = new G4LEKaonZeroLInelastic();
148 theHEKaonZeroLModel = new G4HEKaonZeroInelastic();
151 pManager->AddDiscreteProcess(&theKaonZeroLInelastic);
152
153 // KaonZeroS
154 pManager = G4KaonZeroShort::KaonZeroShort()->GetProcessManager();
155 // add process
156 pManager->AddDiscreteProcess(&theElasticProcess);
157
158 theLEKaonZeroSModel = new G4LEKaonZeroSInelastic();
159 theHEKaonZeroSModel = new G4HEKaonZeroInelastic();
162 pManager->AddDiscreteProcess(&theKaonZeroSInelastic);
163
164 // Proton
165 pManager = G4Proton::Proton()->GetProcessManager();
166 // add process
167 pManager->AddDiscreteProcess(&theElasticProcess);
168
169 theLEProtonModel = new G4LEProtonInelastic();
170 theHEProtonModel = new G4HEProtonInelastic();
172// theProtonInelastic.RegisterMe(&theTheoModel);
173 pManager->AddDiscreteProcess(&theProtonInelastic);
174
175 pManager->AddProcess(&theProtonIonisation, ordInActive,2, 2);
176
177 pManager->AddProcess(&theProtonMult);
178 pManager->SetProcessOrdering(&theProtonMult, idxAlongStep, 1);
179 pManager->SetProcessOrdering(&theProtonMult, idxPostStep, 1);
180
181 // anti-Proton
182 pManager = G4AntiProton::AntiProton()->GetProcessManager();
183 // add process
184 pManager->AddDiscreteProcess(&theElasticProcess);
185
186 theLEAntiProtonModel = new G4LEAntiProtonInelastic();
187 theHEAntiProtonModel = new G4HEAntiProtonInelastic();
190 pManager->AddDiscreteProcess(&theAntiProtonInelastic);
191
192 pManager->AddProcess(&theAntiProtonIonisation, ordInActive,2, 2);
193
194 pManager->AddProcess(&theAntiProtonMult);
195 pManager->SetProcessOrdering(&theAntiProtonMult, idxAlongStep, 1);
196 pManager->SetProcessOrdering(&theAntiProtonMult, idxPostStep, 1);
197
198 pManager->AddRestProcess(&theAntiProtonAnnihilation);
199
200 // Neutron
201 pManager = G4Neutron::Neutron()->GetProcessManager();
202 // add process
203 pManager->AddDiscreteProcess(&theElasticProcess);
204
205 theLENeutronModel = new G4LENeutronInelastic();
206 theHENeutronModel = new G4HENeutronInelastic();
208// theNeutronInelastic.RegisterMe(&theTheoModel);
209 pManager->AddDiscreteProcess(&theNeutronInelastic);
210
211 theNeutronFissionModel = new G4LFission();
213 pManager->AddDiscreteProcess(&theNeutronFission);
214
215 theNeutronCaptureModel = new G4LCapture();
217 pManager->AddDiscreteProcess(&theNeutronCapture);
218
219 // AntiNeutron
220 pManager = G4AntiNeutron::AntiNeutron()->GetProcessManager();
221 // add process
222 pManager->AddDiscreteProcess(&theElasticProcess);
223
224 theLEAntiNeutronModel = new G4LEAntiNeutronInelastic();
225 theHEAntiNeutronModel = new G4HEAntiNeutronInelastic();
228 pManager->AddDiscreteProcess(&theAntiNeutronInelastic);
229
230 pManager->AddRestProcess(&theAntiNeutronAnnihilation);
231
232 // Lambda
233 pManager = G4Lambda::Lambda()->GetProcessManager();
234 // add process
235 pManager->AddDiscreteProcess(&theElasticProcess);
236
237 theLELambdaModel = new G4LELambdaInelastic();
238 theHELambdaModel = new G4HELambdaInelastic();
241 pManager->AddDiscreteProcess(&theLambdaInelastic);
242
243 // AntiLambda
244 pManager = G4AntiLambda::AntiLambda()->GetProcessManager();
245 // add process
246 pManager->AddDiscreteProcess(&theElasticProcess);
247
248 theLEAntiLambdaModel = new G4LEAntiLambdaInelastic();
249 theHEAntiLambdaModel = new G4HEAntiLambdaInelastic();
252 pManager->AddDiscreteProcess(&theAntiLambdaInelastic);
253
254 // SigmaMinus
255 pManager = G4SigmaMinus::SigmaMinus()->GetProcessManager();
256 // add process
257 pManager->AddDiscreteProcess(&theElasticProcess);
258
259 theLESigmaMinusModel = new G4LESigmaMinusInelastic();
260 theHESigmaMinusModel = new G4HESigmaMinusInelastic();
263 pManager->AddDiscreteProcess(&theSigmaMinusInelastic);
264
265 pManager->AddProcess(&theSigmaMinusIonisation, ordInActive,2, 2);
266
267 pManager->AddProcess(&theSigmaMinusMult);
268 pManager->SetProcessOrdering(&theSigmaMinusMult, idxAlongStep, 1);
269 pManager->SetProcessOrdering(&theSigmaMinusMult, idxPostStep, 1);
270
271 // anti-SigmaMinus
272 pManager = G4AntiSigmaMinus::AntiSigmaMinus()->GetProcessManager();
273 // add process
274 pManager->AddDiscreteProcess(&theElasticProcess);
275
276 theLEAntiSigmaMinusModel = new G4LEAntiSigmaMinusInelastic();
277 theHEAntiSigmaMinusModel = new G4HEAntiSigmaMinusInelastic();
280 pManager->AddDiscreteProcess(&theAntiSigmaMinusInelastic);
281
282 pManager->AddProcess(&theAntiSigmaMinusIonisation, ordInActive,2, 2);
283
284 pManager->AddProcess(&theAntiSigmaMinusMult);
285 pManager->SetProcessOrdering(&theAntiSigmaMinusMult, idxAlongStep, 1);
286 pManager->SetProcessOrdering(&theAntiSigmaMinusMult, idxPostStep, 1);
287
288 // SigmaPlus
289 pManager = G4SigmaPlus::SigmaPlus()->GetProcessManager();
290 // add process
291 pManager->AddDiscreteProcess(&theElasticProcess);
292
293 theLESigmaPlusModel = new G4LESigmaPlusInelastic();
294 theHESigmaPlusModel = new G4HESigmaPlusInelastic();
297 pManager->AddDiscreteProcess(&theSigmaPlusInelastic);
298
299 pManager->AddProcess(&theSigmaPlusIonisation, ordInActive,2, 2);
300
301 pManager->AddProcess(&theSigmaPlusMult);
302 pManager->SetProcessOrdering(&theSigmaPlusMult, idxAlongStep, 1);
303 pManager->SetProcessOrdering(&theSigmaPlusMult, idxPostStep, 1);
304
305 // anti-SigmaPlus
306 pManager = G4AntiSigmaPlus::AntiSigmaPlus()->GetProcessManager();
307 // add process
308 pManager->AddDiscreteProcess(&theElasticProcess);
309
310 theLEAntiSigmaPlusModel = new G4LEAntiSigmaPlusInelastic();
311 theHEAntiSigmaPlusModel = new G4HEAntiSigmaPlusInelastic();
314 pManager->AddDiscreteProcess(&theAntiSigmaPlusInelastic);
315
316 pManager->AddProcess(&theAntiSigmaPlusIonisation, ordInActive,2, 2);
317
318 pManager->AddProcess(&theAntiSigmaPlusMult);
319 pManager->SetProcessOrdering(&theAntiSigmaPlusMult, idxAlongStep, 1);
320 pManager->SetProcessOrdering(&theAntiSigmaPlusMult, idxPostStep, 1);
321
322 // XiMinus
323 pManager = G4XiMinus::XiMinus()->GetProcessManager();
324 // add process
325 pManager->AddDiscreteProcess(&theElasticProcess);
326
327 theLEXiMinusModel = new G4LEXiMinusInelastic();
328 theHEXiMinusModel = new G4HEXiMinusInelastic();
331 pManager->AddDiscreteProcess(&theXiMinusInelastic);
332
333 pManager->AddProcess(&theXiMinusIonisation, ordInActive,2, 2);
334
335 pManager->AddProcess(&theXiMinusMult);
336 pManager->SetProcessOrdering(&theXiMinusMult, idxAlongStep, 1);
337 pManager->SetProcessOrdering(&theXiMinusMult, idxPostStep, 1);
338
339 // anti-XiMinus
340 pManager = G4AntiXiMinus::AntiXiMinus()->GetProcessManager();
341 // add process
342 pManager->AddDiscreteProcess(&theElasticProcess);
343
344 theLEAntiXiMinusModel = new G4LEAntiXiMinusInelastic();
345 theHEAntiXiMinusModel = new G4HEAntiXiMinusInelastic();
348 pManager->AddDiscreteProcess(&theAntiXiMinusInelastic);
349
350 pManager->AddProcess(&theAntiXiMinusIonisation, ordInActive,2, 2);
351
352 pManager->AddProcess(&theAntiXiMinusMult);
353 pManager->SetProcessOrdering(&theAntiXiMinusMult, idxAlongStep, 1);
354 pManager->SetProcessOrdering(&theAntiXiMinusMult, idxPostStep, 1);
355
356 // XiZero
357 pManager = G4XiZero::XiZero()->GetProcessManager();
358 // add process
359 pManager->AddDiscreteProcess(&theElasticProcess);
360
361 theLEXiZeroModel = new G4LEXiZeroInelastic();
362 theHEXiZeroModel = new G4HEXiZeroInelastic();
365 pManager->AddDiscreteProcess(&theXiZeroInelastic);
366
367 // anti-XiZero
368 pManager = G4AntiXiZero::AntiXiZero()->GetProcessManager();
369 // add process
370 pManager->AddDiscreteProcess(&theElasticProcess);
371
372 theLEAntiXiZeroModel = new G4LEAntiXiZeroInelastic();
373 theHEAntiXiZeroModel = new G4HEAntiXiZeroInelastic();
376 pManager->AddDiscreteProcess(&theAntiXiZeroInelastic);
377
378 // OmegaMinus
379 pManager = G4OmegaMinus::OmegaMinus()->GetProcessManager();
380 // add process
381 pManager->AddDiscreteProcess(&theElasticProcess);
382
383 theLEOmegaMinusModel = new G4LEOmegaMinusInelastic();
384 theHEOmegaMinusModel = new G4HEOmegaMinusInelastic();
387 pManager->AddDiscreteProcess(&theOmegaMinusInelastic);
388
389 pManager->AddProcess(&theOmegaMinusIonisation, ordInActive,2, 2);
390
391 pManager->AddProcess(&theOmegaMinusMult);
392 pManager->SetProcessOrdering(&theOmegaMinusMult, idxAlongStep, 1);
393 pManager->SetProcessOrdering(&theOmegaMinusMult, idxPostStep, 1);
394
395 // anti-OmegaMinus
396 pManager = G4AntiOmegaMinus::AntiOmegaMinus()->GetProcessManager();
397 // add process
398 pManager->AddDiscreteProcess(&theElasticProcess);
399
400 theLEAntiOmegaMinusModel = new G4LEAntiOmegaMinusInelastic();
401 theHEAntiOmegaMinusModel = new G4HEAntiOmegaMinusInelastic();
404 pManager->AddDiscreteProcess(&theAntiOmegaMinusInelastic);
405
406 pManager->AddProcess(&theAntiOmegaMinusIonisation, ordInActive,2, 2);
407
408 pManager->AddProcess(&theAntiOmegaMinusMult);
409 pManager->SetProcessOrdering(&theAntiOmegaMinusMult, idxAlongStep, 1);
410 pManager->SetProcessOrdering(&theAntiOmegaMinusMult, idxPostStep, 1);
411
412}
413
414
415
416
417
G4AntiSigmaPlusInelasticProcess theAntiSigmaPlusInelastic
G4LEAntiSigmaMinusInelastic * theLEAntiSigmaMinusModel
G4AntiSigmaMinusInelasticProcess theAntiSigmaMinusInelastic
G4HEAntiOmegaMinusInelastic * theHEAntiOmegaMinusModel
G4AntiProtonAnnihilationAtRest theAntiProtonAnnihilation
G4AntiNeutronAnnihilationAtRest theAntiNeutronAnnihilation
virtual ~BesHadronPhysics()
virtual void ConstructProcess()
G4AntiOmegaMinusInelasticProcess theAntiOmegaMinusInelastic
G4HEAntiSigmaMinusInelastic * theHEAntiSigmaMinusModel
G4LEAntiOmegaMinusInelastic * theLEAntiOmegaMinusModel
BesHadronPhysics(const G4String &name="hadron")
virtual void ConstructParticle()