ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HyperonPhysics.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file HyperonPhysics.cc
1 // $Id: $
3 // //
4 // File: HyperonPhysics.cc //
5 // Description: Hyperon hadronic physics constructor for EICPhysicsList //
6 // //
7 // Author: Dennis H. Wright (SLAC) //
8 // Date: 5 July 2018 //
9 // //
11 
12 
13 #include "HyperonPhysics.hh"
14 
15 #include <Geant4/G4ProcessManager.hh>
16 #include <Geant4/G4LambdaInelasticProcess.hh>
17 #include <Geant4/G4SigmaPlusInelasticProcess.hh>
18 #include <Geant4/G4SigmaMinusInelasticProcess.hh>
19 #include <Geant4/G4XiZeroInelasticProcess.hh>
20 #include <Geant4/G4XiMinusInelasticProcess.hh>
21 #include <Geant4/G4OmegaMinusInelasticProcess.hh>
22 
23 #include <Geant4/G4HadronElasticProcess.hh>
24 #include <Geant4/G4HadronicAbsorptionBertini.hh>
25 
26 #include <Geant4/G4CascadeInterface.hh>
27 #include <Geant4/G4TheoFSGenerator.hh>
28 #include <Geant4/G4FTFModel.hh>
29 #include <Geant4/G4ExcitedStringDecay.hh>
30 #include <Geant4/G4LundStringFragmentation.hh>
31 #include <Geant4/G4GeneratorPrecompoundInterface.hh>
32 #include <Geant4/G4HadronElastic.hh>
33 
34 #include <Geant4/G4ChipsHyperonInelasticXS.hh>
35 #include <Geant4/G4SystemOfUnits.hh>
36 
37 
39  ftfp(nullptr),
40  stringModel(nullptr),
41  stringDecay(nullptr),
42  fragModel(nullptr),
43  preCompoundModel(nullptr)
44 {}
45 
46 
48 {
49  delete stringDecay;
50  delete stringModel;
51  delete fragModel;
52  delete preCompoundModel;
53 }
54 
55 
57 {}
58 
59 
61 {
62  G4ProcessManager* procMan = 0;
63 
64  // One elastic model for all hyperon energies
65  G4HadronElastic* elModel = new G4HadronElastic();
66 
67  // Use Bertini cascade for low energies
68  G4CascadeInterface* loInelModel = new G4CascadeInterface;
69  loInelModel->SetMinEnergy(0.0);
70  loInelModel->SetMaxEnergy(6.0*GeV);
71 
72  // Use FTFP for high energies ==>> eventually replace this with new class FTFPInterface
73  ftfp = new G4TheoFSGenerator("FTFP");
74  stringModel = new G4FTFModel;
75  stringDecay =
79 
82  ftfp->SetMinEnergy(4*GeV);
83  ftfp->SetMaxEnergy(100*TeV);
84 
85  // Inelastic cross section set
87 
89  // Lambda //
91 
92  procMan = G4Lambda::Lambda()->GetProcessManager();
93 
94  // elastic
96  lamProcEl->RegisterMe(elModel);
97  procMan->AddDiscreteProcess(lamProcEl);
98 
99  // inelastic
101  lamProcInel->RegisterMe(loInelModel);
102  lamProcInel->RegisterMe(ftfp);
103  lamProcInel->AddDataSet(chipsInelastic);
104  procMan->AddDiscreteProcess(lamProcInel);
105 
107  // Sigma+ //
109 
111 
112  // elastic
114  spProcEl->RegisterMe(elModel);
115  procMan->AddDiscreteProcess(spProcEl);
116 
117  // inelastic
119  spProcInel->RegisterMe(loInelModel);
120  spProcInel->RegisterMe(ftfp);
121  spProcInel->AddDataSet(chipsInelastic);
122  procMan->AddDiscreteProcess(spProcInel);
123 
125  // Sigma- //
127 
129 
130  // elastic
132  smProcEl->RegisterMe(elModel);
133  procMan->AddDiscreteProcess(smProcEl);
134 
135  // inelastic
137  smProcInel->RegisterMe(loInelModel);
138  smProcInel->RegisterMe(ftfp);
139  smProcInel->AddDataSet(chipsInelastic);
140  procMan->AddDiscreteProcess(smProcInel);
141 
142  // stopping
144  procMan->AddRestProcess(smAbsorb);
145 
147  // Xi0 //
149 
150  procMan = G4XiZero::XiZero()->GetProcessManager();
151 
152  // elastic
154  xzProcEl->RegisterMe(elModel);
155  procMan->AddDiscreteProcess(xzProcEl);
156 
157  // inelastic
159  xzProcInel->RegisterMe(loInelModel);
160  xzProcInel->RegisterMe(ftfp);
161  xzProcInel->AddDataSet(chipsInelastic);
162  procMan->AddDiscreteProcess(xzProcInel);
163 
165  // Xi- //
167 
168  procMan = G4XiMinus::XiMinus()->GetProcessManager();
169 
170  // elastic
172  xmProcEl->RegisterMe(elModel);
173  procMan->AddDiscreteProcess(xmProcEl);
174 
175  // inelastic
177  xmProcInel->RegisterMe(loInelModel);
178  xmProcInel->RegisterMe(ftfp);
179  xmProcInel->AddDataSet(chipsInelastic);
180  procMan->AddDiscreteProcess(xmProcInel);
181 
182  // stopping
184  procMan->AddRestProcess(xmAbsorb);
185 
187  // Omega- //
189 
191 
192  // elastic
194  omProcEl->RegisterMe(elModel);
195  procMan->AddDiscreteProcess(omProcEl);
196 
197  // inelastic
199  omProcInel->RegisterMe(loInelModel);
200  omProcInel->RegisterMe(ftfp);
201  omProcInel->AddDataSet(chipsInelastic);
202  procMan->AddDiscreteProcess(omProcInel);
203 
204  // stopping
206  procMan->AddRestProcess(omAbsorb);
207 }