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