Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4MiscBuilder.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// GEANT4 tag $Name: not supported by cvs2svn $
27//
28//---------------------------------------------------------------------------
29//
30// Modified:
31//
32//----------------------------------------------------------------------------
33//
34#include "G4MiscBuilder.hh"
35
36#include "G4SystemOfUnits.hh"
38#include "G4ParticleTable.hh"
39#include "G4ProcessManager.hh"
40
43
45
46
48 theAntiProtonInelastic(0), theLEAntiProtonModel(0),
49 theHEAntiProtonModel(0),
50 theAntiNeutronInelastic(0), theLEAntiNeutronModel(0),
51 theHEAntiNeutronModel(0),
52 theLambdaInelastic(0), theLELambdaModel(0), theHELambdaModel(0),
53 theAntiLambdaInelastic(0), theLEAntiLambdaModel(0), theHEAntiLambdaModel(0),
54 theSigmaMinusInelastic(0), theLESigmaMinusModel(0), theHESigmaMinusModel(0),
55 theAntiSigmaMinusInelastic(0), theLEAntiSigmaMinusModel(0), theHEAntiSigmaMinusModel(0),
56 theSigmaPlusInelastic(0), theLESigmaPlusModel(0), theHESigmaPlusModel(0),
57 theAntiSigmaPlusInelastic(0), theLEAntiSigmaPlusModel(0), theHEAntiSigmaPlusModel(0),
58 theXiZeroInelastic(0), theLEXiZeroModel(0), theHEXiZeroModel(0),
59 theAntiXiZeroInelastic(0), theLEAntiXiZeroModel(0), theHEAntiXiZeroModel(0),
60 theXiMinusInelastic(0), theLEXiMinusModel(0), theHEXiMinusModel(0),
61 theAntiXiMinusInelastic(0), theLEAntiXiMinusModel(0), theHEAntiXiMinusModel(0),
62 theOmegaMinusInelastic(0), theLEOmegaMinusModel(0), theHEOmegaMinusModel(0),
63 theAntiOmegaMinusInelastic(0), theLEAntiOmegaMinusModel(0), theHEAntiOmegaMinusModel(0),
64 wasActivated(false)
65
66{}
67
68
70{
71}
72
74{
75 G4ProcessManager * aProcMan = 0;
76 wasActivated = true;
77
78 theAntiNucleonData = new G4CrossSectionInelastic(new G4ComponentAntiNuclNuclearXS());
80
81 // anti-Proton
82 theAntiProtonInelastic = new G4AntiProtonInelasticProcess();
84 theLEAntiProtonModel = new G4LEAntiProtonInelastic();
85 theHEAntiProtonModel = new G4HEAntiProtonInelastic();
86 theHEAntiProtonModel->SetMaxEnergy(100*TeV);
87 theAntiProtonInelastic->RegisterMe(theLEAntiProtonModel);
88 theAntiProtonInelastic->RegisterMe(theHEAntiProtonModel);
89 aProcMan->AddDiscreteProcess(theAntiProtonInelastic);
90 theAntiProtonInelastic->AddDataSet(theAntiNucleonData);
91
92 // AntiNeutron
93 theAntiNeutronInelastic = new G4AntiNeutronInelasticProcess();
95 theLEAntiNeutronModel = new G4LEAntiNeutronInelastic();
96 theHEAntiNeutronModel = new G4HEAntiNeutronInelastic();
97 theHEAntiNeutronModel->SetMaxEnergy(100*TeV);
98 theAntiNeutronInelastic->RegisterMe(theLEAntiNeutronModel);
99 theAntiNeutronInelastic->RegisterMe(theHEAntiNeutronModel);
100 aProcMan->AddDiscreteProcess(theAntiNeutronInelastic);
101 theAntiNeutronInelastic->AddDataSet(theAntiNucleonData);
102
103 // Lambda
104 theLambdaInelastic = new G4LambdaInelasticProcess();
105 aProcMan = G4Lambda::Lambda()->GetProcessManager();
106 theLELambdaModel = new G4LELambdaInelastic();
107 theHELambdaModel = new G4HELambdaInelastic();
108 theHELambdaModel->SetMaxEnergy(100*TeV);
109 theLambdaInelastic->RegisterMe(theLELambdaModel);
110 theLambdaInelastic->RegisterMe(theHELambdaModel);
111 aProcMan->AddDiscreteProcess(theLambdaInelastic);
112 theLambdaInelastic->AddDataSet(theChipsInelastic);
113
114 // AntiLambda
115 theAntiLambdaInelastic = new G4AntiLambdaInelasticProcess();
117 theLEAntiLambdaModel = new G4LEAntiLambdaInelastic();
118 theHEAntiLambdaModel = new G4HEAntiLambdaInelastic();
119 theHEAntiLambdaModel->SetMaxEnergy(100*TeV);
120 theAntiLambdaInelastic->RegisterMe(theLEAntiLambdaModel);
121 theAntiLambdaInelastic->RegisterMe(theHEAntiLambdaModel);
122 aProcMan->AddDiscreteProcess(theAntiLambdaInelastic);
123 theAntiLambdaInelastic->AddDataSet(theChipsInelastic);
124
125 // SigmaMinus
126 theSigmaMinusInelastic = new G4SigmaMinusInelasticProcess();
128 theLESigmaMinusModel = new G4LESigmaMinusInelastic();
129 theHESigmaMinusModel = new G4HESigmaMinusInelastic();
130 theHESigmaMinusModel->SetMaxEnergy(100*TeV);
131 theSigmaMinusInelastic->RegisterMe(theLESigmaMinusModel);
132 theSigmaMinusInelastic->RegisterMe(theHESigmaMinusModel);
133 aProcMan->AddDiscreteProcess(theSigmaMinusInelastic);
134 theSigmaMinusInelastic->AddDataSet(theChipsInelastic);
135
136 // anti-SigmaMinus
137 theAntiSigmaMinusInelastic = new G4AntiSigmaMinusInelasticProcess();
139 theLEAntiSigmaMinusModel = new G4LEAntiSigmaMinusInelastic();
140 theHEAntiSigmaMinusModel = new G4HEAntiSigmaMinusInelastic();
141 theHEAntiSigmaMinusModel->SetMaxEnergy(100*TeV);
142 theAntiSigmaMinusInelastic->RegisterMe(theLEAntiSigmaMinusModel);
143 theAntiSigmaMinusInelastic->RegisterMe(theHEAntiSigmaMinusModel);
144 aProcMan->AddDiscreteProcess(theAntiSigmaMinusInelastic);
145 theAntiSigmaMinusInelastic->AddDataSet(theChipsInelastic);
146
147 // SigmaPlus
148 theSigmaPlusInelastic = new G4SigmaPlusInelasticProcess();
150 theLESigmaPlusModel = new G4LESigmaPlusInelastic();
151 theHESigmaPlusModel = new G4HESigmaPlusInelastic();
152 theHESigmaPlusModel->SetMaxEnergy(100*TeV);
153 theSigmaPlusInelastic->RegisterMe(theLESigmaPlusModel);
154 theSigmaPlusInelastic->RegisterMe(theHESigmaPlusModel);
155 aProcMan->AddDiscreteProcess(theSigmaPlusInelastic);
156 theSigmaPlusInelastic->AddDataSet(theChipsInelastic);
157
158 // anti-SigmaPlus
159 theAntiSigmaPlusInelastic = new G4AntiSigmaPlusInelasticProcess();
161 theLEAntiSigmaPlusModel = new G4LEAntiSigmaPlusInelastic();
162 theHEAntiSigmaPlusModel = new G4HEAntiSigmaPlusInelastic();
163 theHEAntiSigmaPlusModel->SetMaxEnergy(100*TeV);
164 theAntiSigmaPlusInelastic->RegisterMe(theLEAntiSigmaPlusModel);
165 theAntiSigmaPlusInelastic->RegisterMe(theHEAntiSigmaPlusModel);
166 aProcMan->AddDiscreteProcess(theAntiSigmaPlusInelastic);
167 theAntiSigmaPlusInelastic->AddDataSet(theChipsInelastic);
168
169 // XiMinus
170 theXiMinusInelastic = new G4XiMinusInelasticProcess();
172 theLEXiMinusModel = new G4LEXiMinusInelastic();
173 theHEXiMinusModel = new G4HEXiMinusInelastic();
174 theHEXiMinusModel->SetMaxEnergy(100*TeV);
175 theXiMinusInelastic->RegisterMe(theLEXiMinusModel);
176 theXiMinusInelastic->RegisterMe(theHEXiMinusModel);
177 aProcMan->AddDiscreteProcess(theXiMinusInelastic);
178 theXiMinusInelastic->AddDataSet(theChipsInelastic);
179
180 // anti-XiMinus
181 theAntiXiMinusInelastic = new G4AntiXiMinusInelasticProcess();
183 theLEAntiXiMinusModel = new G4LEAntiXiMinusInelastic();
184 theHEAntiXiMinusModel = new G4HEAntiXiMinusInelastic();
185 theHEAntiXiMinusModel->SetMaxEnergy(100*TeV);
186 theAntiXiMinusInelastic->RegisterMe(theLEAntiXiMinusModel);
187 theAntiXiMinusInelastic->RegisterMe(theHEAntiXiMinusModel);
188 aProcMan->AddDiscreteProcess(theAntiXiMinusInelastic);
189 theAntiXiMinusInelastic->AddDataSet(theChipsInelastic);
190
191 // XiZero
192 theXiZeroInelastic = new G4XiZeroInelasticProcess();
193 aProcMan = G4XiZero::XiZero()->GetProcessManager();
194 theLEXiZeroModel = new G4LEXiZeroInelastic();
195 theHEXiZeroModel = new G4HEXiZeroInelastic();
196 theHEXiZeroModel->SetMaxEnergy(100*TeV);
197 theXiZeroInelastic->RegisterMe(theLEXiZeroModel);
198 theXiZeroInelastic->RegisterMe(theHEXiZeroModel);
199 aProcMan->AddDiscreteProcess(theXiZeroInelastic);
200 theXiZeroInelastic->AddDataSet(theChipsInelastic);
201
202 // anti-XiZero
203 theAntiXiZeroInelastic = new G4AntiXiZeroInelasticProcess();
205 theLEAntiXiZeroModel = new G4LEAntiXiZeroInelastic();
206 theHEAntiXiZeroModel = new G4HEAntiXiZeroInelastic();
207 theHEAntiXiZeroModel->SetMaxEnergy(100*TeV);
208 theAntiXiZeroInelastic->RegisterMe(theLEAntiXiZeroModel);
209 theAntiXiZeroInelastic->RegisterMe(theHEAntiXiZeroModel);
210 aProcMan->AddDiscreteProcess(theAntiXiZeroInelastic);
211 theAntiXiZeroInelastic->AddDataSet(theChipsInelastic);
212
213 // OmegaMinus
214 theOmegaMinusInelastic = new G4OmegaMinusInelasticProcess();
216 theLEOmegaMinusModel = new G4LEOmegaMinusInelastic();
217 theHEOmegaMinusModel = new G4HEOmegaMinusInelastic();
218 theHEOmegaMinusModel->SetMaxEnergy(100*TeV);
219 theOmegaMinusInelastic->RegisterMe(theLEOmegaMinusModel);
220 theOmegaMinusInelastic->RegisterMe(theHEOmegaMinusModel);
221 aProcMan->AddDiscreteProcess(theOmegaMinusInelastic);
222 theOmegaMinusInelastic->AddDataSet(theChipsInelastic);
223
224 // anti-OmegaMinus
225 theAntiOmegaMinusInelastic = new G4AntiOmegaMinusInelasticProcess();
227 theLEAntiOmegaMinusModel = new G4LEAntiOmegaMinusInelastic();
228 theHEAntiOmegaMinusModel = new G4HEAntiOmegaMinusInelastic();
229 theHEAntiOmegaMinusModel->SetMaxEnergy(100*TeV);
230 theAntiOmegaMinusInelastic->RegisterMe(theLEAntiOmegaMinusModel);
231 theAntiOmegaMinusInelastic->RegisterMe(theHEAntiOmegaMinusModel);
232 aProcMan->AddDiscreteProcess(theAntiOmegaMinusInelastic);
233 theAntiOmegaMinusInelastic->AddDataSet(theChipsInelastic);
234}
235
static G4AntiLambda * AntiLambda()
static G4AntiNeutron * AntiNeutron()
static G4AntiOmegaMinus * AntiOmegaMinus()
static G4AntiProton * AntiProton()
Definition: G4AntiProton.cc:93
static G4AntiSigmaMinus * AntiSigmaMinus()
static G4AntiSigmaPlus * AntiSigmaPlus()
static G4AntiXiMinus * AntiXiMinus()
static G4AntiXiZero * AntiXiZero()
G4VCrossSectionDataSet * GetCrossSectionDataSet(const G4String &name, G4bool warning=true)
static G4CrossSectionDataSetRegistry * Instance()
void SetMaxEnergy(const G4double anEnergy)
void AddDataSet(G4VCrossSectionDataSet *aDataSet)
void RegisterMe(G4HadronicInteraction *a)
static G4Lambda * Lambda()
Definition: G4Lambda.cc:108
virtual ~G4MiscBuilder()
static G4OmegaMinus * OmegaMinus()
G4ProcessManager * GetProcessManager() const
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
static G4SigmaMinus * SigmaMinus()
static G4SigmaPlus * SigmaPlus()
Definition: G4SigmaPlus.cc:108
static G4XiMinus * XiMinus()
Definition: G4XiMinus.cc:106
static G4XiZero * XiZero()
Definition: G4XiZero.cc:106