Geant4  9.6.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4HyperonLHEPBuilder.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 // ClassName: G4HyperonLHEPBuilder
31 //
32 // Author: 2011 J. Apostolakis
33 // Implementation started from G4MiscLHEPBuilder.
34 //
35 // Modified:
36 // 2011.02.22 ( J. Apostolakis ) Took out anti-proton, anti-neutron
37 //----------------------------------------------------------------------------
38 //
39 #include "G4HyperonLHEPBuilder.hh"
40 
41 #include "G4SystemOfUnits.hh"
42 #include "G4ParticleDefinition.hh"
43 #include "G4ParticleTable.hh"
44 #include "G4ProcessManager.hh"
45 
47  theLambdaInelastic(0), theLELambdaModel(0), theHELambdaModel(0),
48  theAntiLambdaInelastic(0), theLEAntiLambdaModel(0), theHEAntiLambdaModel(0),
49  theSigmaMinusInelastic(0), theLESigmaMinusModel(0), theHESigmaMinusModel(0),
50  theAntiSigmaMinusInelastic(0), theLEAntiSigmaMinusModel(0), theHEAntiSigmaMinusModel(0),
51  theSigmaPlusInelastic(0), theLESigmaPlusModel(0), theHESigmaPlusModel(0),
52  theAntiSigmaPlusInelastic(0), theLEAntiSigmaPlusModel(0), theHEAntiSigmaPlusModel(0),
53  theXiZeroInelastic(0), theLEXiZeroModel(0), theHEXiZeroModel(0),
54  theAntiXiZeroInelastic(0), theLEAntiXiZeroModel(0), theHEAntiXiZeroModel(0),
55  theXiMinusInelastic(0), theLEXiMinusModel(0), theHEXiMinusModel(0),
56  theAntiXiMinusInelastic(0), theLEAntiXiMinusModel(0), theHEAntiXiMinusModel(0),
57  theOmegaMinusInelastic(0), theLEOmegaMinusModel(0), theHEOmegaMinusModel(0),
58  theAntiOmegaMinusInelastic(0), theLEAntiOmegaMinusModel(0), theHEAntiOmegaMinusModel(0),
59  wasActivated(false)
60 {}
61 
62 
64 {}
65 
67 {
68  G4ProcessManager * aProcMan = 0;
69  wasActivated = true;
70 
71  // Lambda
72  theLambdaInelastic = new G4LambdaInelasticProcess();
73  aProcMan = G4Lambda::Lambda()->GetProcessManager();
74  theLELambdaModel = new G4LELambdaInelastic();
75  theHELambdaModel = new G4HELambdaInelastic();
76  theHELambdaModel->SetMaxEnergy(100*TeV);
77  theLambdaInelastic->RegisterMe(theLELambdaModel);
78  theLambdaInelastic->RegisterMe(theHELambdaModel);
79  aProcMan->AddDiscreteProcess(theLambdaInelastic);
80 
81  // AntiLambda
82  theAntiLambdaInelastic = new G4AntiLambdaInelasticProcess();
84  theLEAntiLambdaModel = new G4LEAntiLambdaInelastic();
85  theHEAntiLambdaModel = new G4HEAntiLambdaInelastic();
86  theHEAntiLambdaModel->SetMaxEnergy(100*TeV);
87  theAntiLambdaInelastic->RegisterMe(theLEAntiLambdaModel);
88  theAntiLambdaInelastic->RegisterMe(theHEAntiLambdaModel);
89  aProcMan->AddDiscreteProcess(theAntiLambdaInelastic);
90 
91  // SigmaMinus
92  theSigmaMinusInelastic = new G4SigmaMinusInelasticProcess();
94  theLESigmaMinusModel = new G4LESigmaMinusInelastic();
95  theHESigmaMinusModel = new G4HESigmaMinusInelastic();
96  theHESigmaMinusModel->SetMaxEnergy(100*TeV);
97  theSigmaMinusInelastic->RegisterMe(theLESigmaMinusModel);
98  theSigmaMinusInelastic->RegisterMe(theHESigmaMinusModel);
99  aProcMan->AddDiscreteProcess(theSigmaMinusInelastic);
100 
101  // anti-SigmaMinus
102  theAntiSigmaMinusInelastic = new G4AntiSigmaMinusInelasticProcess();
104  theLEAntiSigmaMinusModel = new G4LEAntiSigmaMinusInelastic();
105  theHEAntiSigmaMinusModel = new G4HEAntiSigmaMinusInelastic();
106  theHEAntiSigmaMinusModel->SetMaxEnergy(100*TeV);
107  theAntiSigmaMinusInelastic->RegisterMe(theLEAntiSigmaMinusModel);
108  theAntiSigmaMinusInelastic->RegisterMe(theHEAntiSigmaMinusModel);
109  aProcMan->AddDiscreteProcess(theAntiSigmaMinusInelastic);
110 
111  // SigmaPlus
112  theSigmaPlusInelastic = new G4SigmaPlusInelasticProcess();
114  theLESigmaPlusModel = new G4LESigmaPlusInelastic();
115  theHESigmaPlusModel = new G4HESigmaPlusInelastic();
116  theHESigmaPlusModel->SetMaxEnergy(100*TeV);
117  theSigmaPlusInelastic->RegisterMe(theLESigmaPlusModel);
118  theSigmaPlusInelastic->RegisterMe(theHESigmaPlusModel);
119  aProcMan->AddDiscreteProcess(theSigmaPlusInelastic);
120 
121  // anti-SigmaPlus
122  theAntiSigmaPlusInelastic = new G4AntiSigmaPlusInelasticProcess();
124  theLEAntiSigmaPlusModel = new G4LEAntiSigmaPlusInelastic();
125  theHEAntiSigmaPlusModel = new G4HEAntiSigmaPlusInelastic();
126  theHEAntiSigmaPlusModel->SetMaxEnergy(100*TeV);
127  theAntiSigmaPlusInelastic->RegisterMe(theLEAntiSigmaPlusModel);
128  theAntiSigmaPlusInelastic->RegisterMe(theHEAntiSigmaPlusModel);
129  aProcMan->AddDiscreteProcess(theAntiSigmaPlusInelastic);
130 
131  // XiMinus
132  theXiMinusInelastic = new G4XiMinusInelasticProcess();
133  aProcMan = G4XiMinus::XiMinus()->GetProcessManager();
134  theLEXiMinusModel = new G4LEXiMinusInelastic();
135  theHEXiMinusModel = new G4HEXiMinusInelastic();
136  theHEXiMinusModel->SetMaxEnergy(100*TeV);
137  theXiMinusInelastic->RegisterMe(theLEXiMinusModel);
138  theXiMinusInelastic->RegisterMe(theHEXiMinusModel);
139  aProcMan->AddDiscreteProcess(theXiMinusInelastic);
140 
141  // anti-XiMinus
142  theAntiXiMinusInelastic = new G4AntiXiMinusInelasticProcess();
144  theLEAntiXiMinusModel = new G4LEAntiXiMinusInelastic();
145  theHEAntiXiMinusModel = new G4HEAntiXiMinusInelastic();
146  theHEAntiXiMinusModel->SetMaxEnergy(100*TeV);
147  theAntiXiMinusInelastic->RegisterMe(theLEAntiXiMinusModel);
148  theAntiXiMinusInelastic->RegisterMe(theHEAntiXiMinusModel);
149  aProcMan->AddDiscreteProcess(theAntiXiMinusInelastic);
150 
151  // XiZero
152  theXiZeroInelastic = new G4XiZeroInelasticProcess();
153  aProcMan = G4XiZero::XiZero()->GetProcessManager();
154  theLEXiZeroModel = new G4LEXiZeroInelastic();
155  theHEXiZeroModel = new G4HEXiZeroInelastic();
156  theHEXiZeroModel->SetMaxEnergy(100*TeV);
157  theXiZeroInelastic->RegisterMe(theLEXiZeroModel);
158  theXiZeroInelastic->RegisterMe(theHEXiZeroModel);
159  aProcMan->AddDiscreteProcess(theXiZeroInelastic);
160 
161  // anti-XiZero
162  theAntiXiZeroInelastic = new G4AntiXiZeroInelasticProcess();
164  theLEAntiXiZeroModel = new G4LEAntiXiZeroInelastic();
165  theHEAntiXiZeroModel = new G4HEAntiXiZeroInelastic();
166  theHEAntiXiZeroModel->SetMaxEnergy(100*TeV);
167  theAntiXiZeroInelastic->RegisterMe(theLEAntiXiZeroModel);
168  theAntiXiZeroInelastic->RegisterMe(theHEAntiXiZeroModel);
169  aProcMan->AddDiscreteProcess(theAntiXiZeroInelastic);
170 
171  // OmegaMinus
172  theOmegaMinusInelastic = new G4OmegaMinusInelasticProcess();
174  theLEOmegaMinusModel = new G4LEOmegaMinusInelastic();
175  theHEOmegaMinusModel = new G4HEOmegaMinusInelastic();
176  theHEOmegaMinusModel->SetMaxEnergy(100*TeV);
177  theOmegaMinusInelastic->RegisterMe(theLEOmegaMinusModel);
178  theOmegaMinusInelastic->RegisterMe(theHEOmegaMinusModel);
179  aProcMan->AddDiscreteProcess(theOmegaMinusInelastic);
180 
181  // anti-OmegaMinus
182  theAntiOmegaMinusInelastic = new G4AntiOmegaMinusInelasticProcess();
184  theLEAntiOmegaMinusModel = new G4LEAntiOmegaMinusInelastic();
185  theHEAntiOmegaMinusModel = new G4HEAntiOmegaMinusInelastic();
186  theHEAntiOmegaMinusModel->SetMaxEnergy(100*TeV);
187  theAntiOmegaMinusInelastic->RegisterMe(theLEAntiOmegaMinusModel);
188  theAntiOmegaMinusInelastic->RegisterMe(theHEAntiOmegaMinusModel);
189  aProcMan->AddDiscreteProcess(theAntiOmegaMinusInelastic);
190 }
191 
192