Geant4  9.6.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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"
37 #include "G4ParticleDefinition.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();
171  aProcMan = G4XiMinus::XiMinus()->GetProcessManager();
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