Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4HEInelastic.hh
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// $Id$
27//
28//
29// G4 Gheisha High Energy (GHE) model class -- header file
30// H. Fesefeldt, RWTH Aachen 23-October-1996
31// Last modified: 10-December-1996
32
33// A prototype of the Gheisha High Energy collision model.
34// It includes all Physics Routines from Geant3,
35// relevant for simulation of hadronic processes
36// above approx. 20 GeV incident momentum.
37// Not included are the Physics Routines for
38// stopping particles, the low energy neutron
39// slowing down description and the low energy
40// nuclear reactions a(A,A')b.
41
42#ifndef G4HEInelastic_h
43#define G4HEInelastic_h 1
44
45// Class description:
46// Each of the high energy parameterized models (e.g. G4HEProtonInelastic)
47// derives from the G4HEInelastic class. This class contains the various
48// algorithms needed to implement the interaction. These include
49// lambda-fragmentation, meson and nucleon cluster formation and decay,
50// nuclear cascade, and nuclear de-excitation.
51//
52// This class is derived from G4HadronicInteraction.
53
54// Class Description - End
55
56#include "G4HEVector.hh"
58
60{
61 public: // with description
62 G4HEInelastic(const G4String& modelName = "HEInelastic")
63 : G4HadronicInteraction(modelName)
64 {
66 verboseLevel = 0;
67 MAXPART = 0;
68 conserveEnergy = true;
69 };
70
72
73 void SetMaxNumberOfSecondaries(const G4int maxnumber)
74 {MAXPART = maxnumber;}
75
76 void SetVerboseLevel(const G4int level) {verboseLevel = level;}
77
81
82 void ForceEnergyConservation(G4bool energyConservation)
83 {conserveEnergy = energyConservation;}
84
86
87 virtual const std::pair<G4double, G4double> GetFatalEnergyCheckLevels() const;
88
91 G4int Imin(G4int a, G4int b);
92 G4int Imax(G4int a, G4int b);
93
94 void FillParticleChange(G4HEVector pv[], G4int aVecLength);
95
96 G4double pmltpc(G4int np, G4int nm, G4int nz,
97 G4int n, G4double b, G4double c);
98
100
101 G4double NuclearInelasticity(G4double incidentKineticEnergy,
102 G4double atomicWeight,
103 G4double atomicNumber);
104
105 G4double NuclearExcitation(G4double incidentKineticEnergy,
106 G4double atomicWeight,
107 G4double atomicNumber,
108 G4double& excitationEnergyCascade,
109 G4double& excitationEnergyEvaporation);
110
111 void HighEnergyCascading(G4bool& successful,
112 G4HEVector pv[],
113 G4int& vecLen,
114 G4double& excitationEnergyGNP,
115 G4double& excitationEnergyDTA,
116 const G4HEVector& incidentParticle,
117 const G4HEVector& targetParticle,
118 G4double atomicWeight,
119 G4double atomicNumber);
120
121 void HighEnergyClusterProduction(G4bool& successful,
122 G4HEVector pv[],
123 G4int& vecLen,
124 G4double& excitationEnergyGNP,
125 G4double& excitationEnergyDTA,
126 const G4HEVector& incidentParticle,
127 const G4HEVector& targetParticle,
128 G4double atomicWeight,
129 G4double atomicNumber);
130
132 G4int& vecLen,
133 const G4HEVector& incidentParticle,
134 const G4HEVector& targetParticle,
135 G4double atomicWeight,
136 G4double atomicNumber);
137
138 void MediumEnergyCascading(G4bool& successful,
139 G4HEVector pv[],
140 G4int& vecLen,
141 G4double& excitationEnergyGNP,
142 G4double& excitationEnergyDTA,
143 const G4HEVector& incidentParticle,
144 const G4HEVector& targetParticle,
145 G4double atomicWeight,
146 G4double atomicNumber);
147
148 void MediumEnergyClusterProduction(G4bool& successful,
149 G4HEVector pv[],
150 G4int& vecLen,
151 G4double& excitationEnergyGNP,
152 G4double& excitationEnergyDTA,
153 const G4HEVector& incidentParticle,
154 const G4HEVector& targetParticle,
155 G4double atomicWeight,
156 G4double atomicNumber);
157
158 void QuasiElasticScattering(G4bool& successful,
159 G4HEVector pv[],
160 G4int& vecLen,
161 G4double& excitationEnergyGNP,
162 G4double& excitationEnergyDTA,
163 const G4HEVector& incidentParticle,
164 const G4HEVector& targetParticle,
165 G4double atomicWeight,
166 G4double atomicNumber);
167
168 void ElasticScattering(G4bool& successful,
169 G4HEVector pv[],
170 G4int& vecLen,
171 const G4HEVector& incidentParticle,
172 G4double atomicWeight,
173 G4double atomicNumber);
174
175 G4int rtmi(G4double *x, G4double xli, G4double xri, G4double eps,
176 G4int iend, G4double aa, G4double bb, G4double cc,
177 G4double dd, G4double rr);
178
180 G4double dd, G4double rr);
181
182 void StrangeParticlePairProduction(const G4double availableEnergy,
183 const G4double centerOfMassEnergy,
184 G4HEVector pv[],
185 G4int& vecLen,
186 const G4HEVector& incidentParticle,
187 const G4HEVector& targetParticle);
188
189 G4double NBodyPhaseSpace(const G4double totalEnergy,
190 const G4bool constantCrossSection,
191 G4HEVector pv[],
192 G4int &vecLen);
193
195 G4HEVector pv[],
196 G4double wmax,
197 G4double wfcn,
198 G4int maxtrial,
199 G4int ntrial);
200
202
203 void QuickSort(G4double arr[], const G4int lidx, const G4int ridx);
204
206
208
209 G4double normal(void);
211 G4double Erlang(G4int mvalue);
213 void SetParticles(void);
214
246};
247
248#endif
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
G4int Poisson(G4double x)
G4HEVector PionPlus
void SetMaxNumberOfSecondaries(const G4int maxnumber)
G4HEVector SigmaZero
G4HEVector AntiXiZero
G4HEVector AntiSigmaZero
G4HEInelastic(const G4String &modelName="HEInelastic")
G4double fctcos(G4double t, G4double aa, G4double bb, G4double cc, G4double dd, G4double rr)
G4HEVector Gamma
void ForceEnergyConservation(G4bool energyConservation)
G4HEVector KaonPlus
G4HEVector KaonZero
G4double pmltpc(G4int np, G4int nm, G4int nz, G4int n, G4double b, G4double c)
G4HEVector Deuteron
G4HEVector AntiSigmaPlus
G4bool conserveEnergy
G4int Factorial(G4int n)
G4double gpdk(G4double a, G4double b, G4double c)
G4HEVector Lambda
void SetVerboseLevel(const G4int level)
G4HEVector SigmaPlus
void MediumEnergyClusterProduction(G4bool &successful, G4HEVector pv[], G4int &vecLen, G4double &excitationEnergyGNP, G4double &excitationEnergyDTA, const G4HEVector &incidentParticle, const G4HEVector &targetParticle, G4double atomicWeight, G4double atomicNumber)
virtual const std::pair< G4double, G4double > GetFatalEnergyCheckLevels() const
void ElasticScattering(G4bool &successful, G4HEVector pv[], G4int &vecLen, const G4HEVector &incidentParticle, G4double atomicWeight, G4double atomicNumber)
G4HEVector XiZero
G4double Amin(G4double a, G4double b)
G4double Alam(G4double a, G4double b, G4double c)
G4double NBodyPhaseSpace(const G4double totalEnergy, const G4bool constantCrossSection, G4HEVector pv[], G4int &vecLen)
void QuasiElasticScattering(G4bool &successful, G4HEVector pv[], G4int &vecLen, G4double &excitationEnergyGNP, G4double &excitationEnergyDTA, const G4HEVector &incidentParticle, const G4HEVector &targetParticle, G4double atomicWeight, G4double atomicNumber)
G4HEVector KaonZeroLong
G4HEVector SigmaMinus
G4HEVector Neutron
G4double CalculatePhaseSpaceWeight(G4int npart)
void TuningOfHighEnergyCascading(G4HEVector pv[], G4int &vecLen, const G4HEVector &incidentParticle, const G4HEVector &targetParticle, G4double atomicWeight, G4double atomicNumber)
G4int Imin(G4int a, G4int b)
G4HEVector AntiProton
G4HEVector OmegaMinus
void FillParticleChange(G4HEVector pv[], G4int aVecLength)
G4HEVector PionMinus
G4double Amax(G4double a, G4double b)
void HighEnergyClusterProduction(G4bool &successful, G4HEVector pv[], G4int &vecLen, G4double &excitationEnergyGNP, G4double &excitationEnergyDTA, const G4HEVector &incidentParticle, const G4HEVector &targetParticle, G4double atomicWeight, G4double atomicNumber)
G4HEVector PionZero
G4HEVector AntiXiMinus
G4double NuclearExcitation(G4double incidentKineticEnergy, G4double atomicWeight, G4double atomicNumber, G4double &excitationEnergyCascade, G4double &excitationEnergyEvaporation)
G4int rtmi(G4double *x, G4double xli, G4double xri, G4double eps, G4int iend, G4double aa, G4double bb, G4double cc, G4double dd, G4double rr)
G4HEVector KaonMinus
G4HEVector AntiOmegaMinus
G4double GammaRand(G4double avalue)
void QuickSort(G4double arr[], const G4int lidx, const G4int ridx)
void SetParticles(void)
G4bool EnergyConservation(void)
G4HEVector AntiNeutron
G4HEVector XiMinus
G4HEVector AntiSigmaMinus
G4double Erlang(G4int mvalue)
G4HEVector AntiLambda
G4double normal(void)
G4HEVector Triton
G4HEVector Proton
G4HEVector AntiKaonZero
void MediumEnergyCascading(G4bool &successful, G4HEVector pv[], G4int &vecLen, G4double &excitationEnergyGNP, G4double &excitationEnergyDTA, const G4HEVector &incidentParticle, const G4HEVector &targetParticle, G4double atomicWeight, G4double atomicNumber)
G4int Imax(G4int a, G4int b)
G4double NuclearInelasticity(G4double incidentKineticEnergy, G4double atomicWeight, G4double atomicNumber)
G4HEVector Alpha
void StrangeParticlePairProduction(const G4double availableEnergy, const G4double centerOfMassEnergy, G4HEVector pv[], G4int &vecLen, const G4HEVector &incidentParticle, const G4HEVector &targetParticle)
G4HEVector KaonZeroShort
void HighEnergyCascading(G4bool &successful, G4HEVector pv[], G4int &vecLen, G4double &excitationEnergyGNP, G4double &excitationEnergyDTA, const G4HEVector &incidentParticle, const G4HEVector &targetParticle, G4double atomicWeight, G4double atomicNumber)