source: trunk/source/processes/hadronic/models/high_energy/include/G4HEInelastic.hh@ 1036

Last change on this file since 1036 was 1007, checked in by garnier, 17 years ago

update to geant4.9.2

File size: 10.7 KB
Line 
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//
27// $Id: G4HEInelastic.hh,v 1.14 2007/04/11 18:11:30 dennis Exp $
28// GEANT4 tag $Name: geant4-09-02 $
29//
30//
31// G4 Gheisha High Energy (GHE) model class -- header file
32// H. Fesefeldt, RWTH Aachen 23-October-1996
33// Last modified: 10-December-1996
34
35// A prototype of the Gheisha High Energy collision model.
36// It includes all Physics Routines from Geant3,
37// relevant for simulation of hadronic processes
38// above approx. 20 GeV incident momentum.
39// Not included are the Physics Routines for
40// stopping particles, the low energy neutron
41// slowing down description and the low energy
42// nuclear reactions a(A,A')b.
43// All routines pass the compiler and give
44// some reasonable numbers as output.
45// A statistically significant comparison
46// with GEANT3 and experimental data has
47// still to be done.
48
49#ifndef G4HEInelastic_h
50#define G4HEInelastic_h 1
51
52// Class description:
53// Each of the high energy parameterized models (e.g. G4HEProtonInelastic)
54// derives from the G4HEInelastic class. This class contains the various
55// algorithms needed to implement the interaction. These include
56// lambda-fragmentation, meson and nucleon cluster formation and decay,
57// nuclear cascade, and nuclear de-excitation.
58//
59// This class is derived from G4HadronicInteraction.
60
61// Class Description - End
62
63#include "G4HEVector.hh"
64#include "G4HadronicInteraction.hh"
65
66class G4HEInelastic : public G4HadronicInteraction
67{
68 public: // with description
69 G4HEInelastic(const G4String& modelName = "HEInelastic")
70 : G4HadronicInteraction(modelName)
71 {
72 SetParticles();
73 conserveEnergy = true;
74 };
75
76 ~G4HEInelastic(){ };
77
78 void SetMaxNumberOfSecondaries( const G4int maxnumber )
79 { MAXPART = maxnumber;}
80
81 void SetVerboseLevel( const G4int level)
82 { verboseLevel = level;}
83
84 G4int verboseLevel;
85 G4int MAXPART;
86 G4bool conserveEnergy;
87
88 void ForceEnergyConservation(G4bool energyConservation)
89 { conserveEnergy = energyConservation;}
90 G4bool EnergyConservation(void)
91 { return conserveEnergy;}
92
93 G4double Amin(G4double a, G4double b);
94 G4double Amax(G4double a, G4double b);
95 G4int Imin(G4int a, G4int b);
96 G4int Imax(G4int a, G4int b);
97
98 void FillParticleChange(G4HEVector pv[], G4int aVecLength);
99
100 G4double pmltpc(G4int np, G4int nm, G4int nz, G4int n, G4double b, G4double c);
101
102 G4int Factorial(G4int n);
103
104 G4double NuclearInelasticity(G4double incidentKineticEnergy,
105 G4double atomicWeight,
106 G4double atomicNumber);
107 G4double NuclearExcitation(G4double incidentKineticEnergy,
108 G4double atomicWeight,
109 G4double atomicNumber,
110 G4double& excitationEnergyCascade,
111 G4double& excitationEnergyEvaporation);
112
113 void HighEnergyCascading(G4bool &successful,
114 G4HEVector pv[],
115 G4int &vecLen,
116 G4double &excitationEnergyGNP,
117 G4double &excitationEnergyDTA,
118 G4HEVector incidentParticle,
119 G4HEVector targetParticle,
120 G4double atomicWeight,
121 G4double atomicNumber);
122
123 void HighEnergyClusterProduction(G4bool &successful,
124 G4HEVector pv[],
125 G4int &vecLen,
126 G4double &excitationEnergyGNP,
127 G4double &excitationEnergyDTA,
128 G4HEVector incidentParticle,
129 G4HEVector targetParticle,
130 G4double atomicWeight,
131 G4double atomicNumber);
132
133 void TuningOfHighEnergyCascading(G4HEVector pv[],
134 G4int &vecLen,
135 G4HEVector incidentParticle,
136 G4HEVector targetParticle,
137 G4double atomicWeight,
138 G4double atomicNumber);
139
140 void MediumEnergyCascading(G4bool &successful,
141 G4HEVector pv[],
142 G4int &vecLen,
143 G4double &excitationEnergyGNP,
144 G4double &excitationEnergyDTA,
145 G4HEVector incidentParticle,
146 G4HEVector targetParticle,
147 G4double atomicWeight,
148 G4double atomicNumber);
149
150 void MediumEnergyClusterProduction(G4bool &successful,
151 G4HEVector pv[],
152 G4int &vecLen,
153 G4double &excitationEnergyGNP,
154 G4double &excitationEnergyDTA,
155 G4HEVector incidentParticle,
156 G4HEVector targetParticle,
157 G4double atomicWeight,
158 G4double atomicNumber);
159
160 void QuasiElasticScattering(G4bool &successful,
161 G4HEVector pv[],
162 G4int &vecLen,
163 G4double &excitationEnergyGNP,
164 G4double &excitationEnergyDTA,
165 G4HEVector incidentParticle,
166 G4HEVector targetParticle,
167 G4double atomicWeight,
168 G4double atomicNumber);
169
170 void ElasticScattering(G4bool &successful,
171 G4HEVector pv[],
172 G4int &vecLen,
173 G4HEVector incidentParticle,
174 G4double atomicWeight,
175 G4double atomicNumber);
176
177 G4int rtmi(G4double *x, G4double xli, G4double xri, G4double eps,
178 G4int iend, G4double aa, G4double bb, G4double cc,
179 G4double dd, G4double rr);
180
181 G4double fctcos(G4double t, G4double aa, G4double bb,G4double cc,
182 G4double dd, G4double rr);
183
184 void StrangeParticlePairProduction(const G4double availableEnergy,
185 const G4double centerOfMassEnergy,
186 G4HEVector pv[],
187 G4int &vecLen,
188 G4HEVector incidentParticle,
189 G4HEVector targetParticle);
190
191 G4double NBodyPhaseSpace(const G4double totalEnergy,
192 const G4bool constantCrossSection,
193 G4HEVector pv[],
194 G4int &vecLen);
195
196 G4double NBodyPhaseSpace(G4int npart,
197 G4HEVector pv[],
198 G4double wmax,
199 G4double wfcn,
200 G4int maxtrial,
201 G4int ntrial);
202
203 G4double gpdk(G4double a, G4double b, G4double c);
204
205 void QuickSort(G4double arr[], const G4int lidx, const G4int ridx);
206
207 G4double Alam(G4double a, G4double b, G4double c);
208
209 G4double CalculatePhaseSpaceWeight( G4int npart);
210
211 G4double normal(void);
212 G4double GammaRand(G4double avalue);
213 G4double Erlang(G4int mvalue);
214 G4int Poisson(G4double x);
215 void SetParticles(void);
216
217 G4HEVector PionPlus;
218 G4HEVector PionZero;
219 G4HEVector PionMinus;
220 G4HEVector KaonPlus;
221 G4HEVector KaonZero;
222 G4HEVector AntiKaonZero;
223 G4HEVector KaonMinus;
224 G4HEVector KaonZeroShort;
225 G4HEVector KaonZeroLong;
226 G4HEVector Proton;
227 G4HEVector AntiProton;
228 G4HEVector Neutron;
229 G4HEVector AntiNeutron;
230 G4HEVector Lambda;
231 G4HEVector AntiLambda;
232 G4HEVector SigmaPlus;
233 G4HEVector SigmaZero;
234 G4HEVector SigmaMinus;
235 G4HEVector AntiSigmaPlus;
236 G4HEVector AntiSigmaZero;
237 G4HEVector AntiSigmaMinus;
238 G4HEVector XiZero;
239 G4HEVector XiMinus;
240 G4HEVector AntiXiZero;
241 G4HEVector AntiXiMinus;
242 G4HEVector OmegaMinus;
243 G4HEVector AntiOmegaMinus;
244 G4HEVector Deuteron;
245 G4HEVector Triton;
246 G4HEVector Alpha;
247 G4HEVector Gamma;
248};
249
250#endif
251
252
Note: See TracBrowser for help on using the repository browser.