Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4ComponentGGHadronNucleusXsc.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// author: V. Grichine
27//
28// 25.04.12 V. Grichine - first implementation
29//
30// 04.09.18 V. Ivantchenko Major revision of interfaces and implementation
31// 01.10.18 V. Grichine strange hyperon xsc
32// 27.05.19 V. Ivantchenko Removed obsolete methods and members
33//
34
36
38#include "G4SystemOfUnits.hh"
39#include "G4ParticleTable.hh"
40#include "G4IonTable.hh"
42#include "G4DynamicParticle.hh"
43#include "G4HadronNucleonXsc.hh"
44#include "G4Log.hh"
45#include "G4Lambda.hh"
46#include "G4Pow.hh"
47#include "G4NuclearRadii.hh"
48
49//////////////////////////////////////////////////////////////////////////////
50//
51
53 : G4VComponentCrossSection(Default_Name()),
54 fTotalXsc(0.0),fElasticXsc(0.0),fInelasticXsc(0.0),fProductionXsc(0.0),
55 fDiffractionXsc(0.0),fAxsc2piR2(0.0),fModelInLog(0.0),fEnergy(0.0),
56 fParticle(nullptr),fZ(0),fA(0), fL(0)
57{
58 theGamma = G4Gamma::Gamma();
59 theProton = G4Proton::Proton();
60 theNeutron = G4Neutron::Neutron();
61 theAProton = G4AntiProton::AntiProton();
62 theANeutron = G4AntiNeutron::AntiNeutron();
63 thePiPlus = G4PionPlus::PionPlus();
64 thePiMinus = G4PionMinus::PionMinus();
65 theKPlus = G4KaonPlus::KaonPlus();
66 theKMinus = G4KaonMinus::KaonMinus();
69 theLambda = G4Lambda::Lambda();
70
71 hnXsc = new G4HadronNucleonXsc();
72}
73
74/////////////////////////////////////////////////////////////////////////////
75
77{
78 delete hnXsc;
79}
80
81//////////////////////////////////////////////////////////////////////
82
84 const G4ParticleDefinition* aParticle,
85 G4double kinEnergy, G4int Z, G4double A)
86{
87 ComputeCrossSections(aParticle, kinEnergy, Z, G4lrint(A));
88 return fTotalXsc;
89}
90
91////////////////////////////////////////////////////////////////////
92
94 const G4ParticleDefinition* aParticle,
95 G4double kinEnergy, G4int Z, G4int A)
96{
97 ComputeCrossSections(aParticle, kinEnergy, Z, A);
98 return fTotalXsc;
99}
100
101/////////////////////////////////////////////////////////////////////
102
104 const G4ParticleDefinition* aParticle,
105 G4double kinEnergy, G4int Z, G4double A)
106{
107 ComputeCrossSections(aParticle, kinEnergy, Z, G4lrint(A));
108 return fInelasticXsc;
109}
110
111////////////////////////////////////////////////////////////////////
112
114 const G4ParticleDefinition* aParticle,
115 G4double kinEnergy, G4int Z, G4int A)
116{
117 ComputeCrossSections(aParticle, kinEnergy, Z, A);
118 return fInelasticXsc;
119}
120
121//////////////////////////////////////////////////////////////////
122
124 const G4ParticleDefinition* aParticle,
125 G4double kinEnergy, G4int Z, G4double A)
126{
127 ComputeCrossSections(aParticle, kinEnergy, Z, G4lrint(A));
128 return fElasticXsc;
129}
130
131///////////////////////////////////////////////////////////////////
132
134 const G4ParticleDefinition* aParticle,
135 G4double kinEnergy, G4int Z, G4int A)
136{
137 ComputeCrossSections(aParticle, kinEnergy, Z, A);
138 return fElasticXsc;
139}
140
141////////////////////////////////////////////////////////////////
142
144 const G4ParticleDefinition* aParticle,
145 G4double kinEnergy, G4int Z, G4int A)
146{
147 ComputeCrossSections(aParticle, kinEnergy, Z, A);
148 G4double ratio = (fInelasticXsc > 0.)
149 ? (fInelasticXsc - fProductionXsc)/fInelasticXsc : 0.;
150 ratio = std::max(ratio, 0.);
151 return ratio;
152}
153
154/////////////////////////////////////////////////////////////////////
155
157 const G4ParticleDefinition* aParticle,
158 G4double kinEnergy, G4int Z, G4double A)
159{
160 ComputeCrossSections(aParticle, kinEnergy, Z, G4lrint(A));
161 return fProductionXsc;
162}
163
164////////////////////////////////////////////////////////////////////
165
167 const G4ParticleDefinition* aParticle,
168 G4double kinEnergy, G4int Z, G4int A)
169{
170 ComputeCrossSections(aParticle, kinEnergy, Z, A);
171 return fProductionXsc;
172}
173
174////////////////////////////////////////////////////////////////////////////
175//
176// Calculates total and inelastic Xsc, derives elastic as total
177// inelastic accordong to Glauber model with Gribov correction calculated
178// in the dipole approximation on light cone. Gaussian density of point-like
179// nucleons helps to calculate rest integrals of the model.
180// [1] B.Z. Kopeliovich, nucl-th/0306044 + simplification above
181
183 const G4ParticleDefinition* aParticle,
184 G4double kinEnergy, G4int Z, G4int A, G4int nL)
185{
186 // check cache
187 if(aParticle == fParticle && fZ == Z && fA == A && fL == nL && kinEnergy == fEnergy)
188 { return; }
189 fParticle = aParticle;
190 fZ = Z;
191 fA = A;
192 fL = nL;
193 fEnergy = kinEnergy;
194 G4Pow* pG4Pow=G4Pow::GetInstance();
195 //
196 G4double cofInelastic = 2.4;
197 static const G4double cofTotal = 2.0;
198 G4double sigma(0.0), hpInXsc(0.0), hnInXsc(0.0), R(0.0);
199
200 G4int N = std::max(A - Z, 0); // number of neutrons
201
202 if( aParticle == theKPlus || aParticle == theKMinus ||
203 aParticle == theK0S || aParticle == theK0L)
204 {
205 sigma = (1 == Z)
206 ? hnXsc->KaonNucleonXscNS(aParticle, theProton, kinEnergy)
207 : Z*hnXsc->KaonNucleonXscGG(aParticle, theProton, kinEnergy);
208 hpInXsc = hnXsc->GetInelasticHadronNucleonXsc();
209
210 if(N > 0) {
211 sigma += N*hnXsc->KaonNucleonXscGG(aParticle, theNeutron, kinEnergy);
212 hnInXsc = hnXsc->GetInelasticHadronNucleonXsc();
213 }
215 cofInelastic = 2.2;
216 }
217 else
218 {
219 sigma = Z*hnXsc->HadronNucleonXsc(aParticle, theProton, kinEnergy);
220 hpInXsc = hnXsc->GetInelasticHadronNucleonXsc();
221
222 if(N > 0) {
223 sigma += N*hnXsc->HadronNucleonXsc(aParticle, theNeutron, kinEnergy);
224 hnInXsc = hnXsc->GetInelasticHadronNucleonXsc();
225 }
227 if( nL > 0 ) {
228 G4double mp = theProton->GetPDGMass();
229 G4double ml = theLambda->GetPDGMass();
230 G4double kinCof = ml/mp; // moving hyperon - rest nucleon
231 G4double cHN(0.88);
232 sigma += nL*hnXsc->HadronNucleonXsc(theLambda, theProton, kinEnergy*kinCof);
233 R *= std::sqrt( pG4Pow->Z23( A - nL ) + cHN*pG4Pow->Z23( nL ) )/pG4Pow->Z13(A);
234 }
235 }
236
237 G4double nucleusSquare = cofTotal*pi*R*R; // basically 2piRR
238 G4double ratio = sigma/nucleusSquare;
239 G4double difratio = ratio/(1.+ratio);
240 fDiffractionXsc = 0.5*nucleusSquare*( difratio - G4Log( 1. + difratio ) );
241
242 if( A > 1 )
243 {
244 fTotalXsc = nucleusSquare*G4Log( 1. + ratio )
245 *GetParticleBarCorTot(aParticle, Z);
246
247 // inelastic xsc
248 fAxsc2piR2 = cofInelastic*ratio;
249 fModelInLog = G4Log( 1. + fAxsc2piR2 );
250 fInelasticXsc = nucleusSquare*fModelInLog/cofInelastic;
251 G4double barcorr = GetParticleBarCorIn(aParticle, Z);
252 fInelasticXsc *= barcorr;
253 fElasticXsc = std::max(fTotalXsc - fInelasticXsc, 0.);
254
255 G4double xratio = (Z*hpInXsc + N*hnInXsc)/nucleusSquare;
256 fProductionXsc =
257 nucleusSquare*G4Log(1. + cofInelastic*xratio)*barcorr/cofInelastic;
258 fProductionXsc = std::min(fProductionXsc, fInelasticXsc);
259 }
260 else // H
261 {
262 fTotalXsc = sigma;
263 fInelasticXsc = hpInXsc;
264 fElasticXsc = std::max(fTotalXsc - fInelasticXsc, 0.);
265 fProductionXsc = fInelasticXsc;
266 fDiffractionXsc = 0.2*fInelasticXsc;
267 // G4double xratio = hpInXsc/nucleusSquare;
268 // fProductionXsc = nucleusSquare*G4Log(1. + cofInelastic*xratio)/cofInelastic;
269 // fProductionXsc = std::min(fProductionXsc, fInelasticXsc);
270 }
271 /*
272 G4cout << "GGXsc: Z= " << Z << " A= " << A << " E= " << kinEnergy
273 << " xtot(b)= " << fTotalXsc/barn
274 << " xel(b)= " << fElasticXsc/barn << " xinel(b)= " << fInelasticXsc/barn
275 << G4endl;
276 */
277}
278
279//////////////////////////////////////////////////////////////////////////
280//
281// Return single-diffraction/inelastic cross-section ratio
282
284 const G4DynamicParticle* aParticle, G4int A, G4int Z)
285{
287 aParticle->GetKineticEnergy(), Z, A);
288
289 return (fInelasticXsc > 0.0) ? fDiffractionXsc/fInelasticXsc : 0.0;
290}
291
292//////////////////////////////////////////////////////////////////////////
293//
294// Return quasi-elastic/inelastic cross-section ratio
295
297GetRatioQE(const G4DynamicParticle* aParticle, G4int A, G4int Z)
298{
300 aParticle->GetKineticEnergy(), Z, A);
301
302 return (fInelasticXsc > std::max(fProductionXsc, 0.))
303 ? 1.0 - fProductionXsc/fInelasticXsc : 0.0;
304}
305
306/////////////////////////////////////////////////////////////////////////////////////
307//
308// Returns hadron-nucleon total Xsc according to different parametrisations:
309
311 const G4DynamicParticle* aParticle, const G4Element* anElement)
312{
313 G4int At = G4lrint(anElement->GetN()); // number of nucleons
314 G4int Zt = anElement->GetZasInt(); // number of protons
315
316 return GetHadronNucleonXsc(aParticle, At, Zt);
317}
318
319/////////////////////////////////////////////////////////////////////////////////////
320//
321// Returns hadron-nucleon total Xsc according to different parametrisations:
322
324 const G4DynamicParticle* aParticle, G4int, G4int)
325{
326 return hnXsc->HadronNucleonXscEL(aParticle->GetDefinition(), theProton,
327 aParticle->GetKineticEnergy());
328}
329
330/////////////////////////////////////////////////////////////////////////////////////
331//
332// Returns hadron-nucleon total Xsc according to PDG parametrisation
333//
334
336 const G4DynamicParticle* aParticle, const G4Element* anElement)
337{
338 G4int At = G4lrint(anElement->GetN()); // number of nucleons
339 G4int Zt = anElement->GetZasInt(); // number of protons
340
341 return GetHadronNucleonXscPDG(aParticle, At, Zt);
342}
343
344/////////////////////////////////////////////////////////////////////////////////////
345//
346// Returns hadron-nucleon total Xsc according to PDG parametrisation
347//
348
350 const G4DynamicParticle* aParticle, G4int At, G4int Zt)
351{
352 G4double res = 0.0;
353 if(1 == At && 1 == Zt) {
354 res = hnXsc->HadronNucleonXscPDG(aParticle->GetDefinition(), theProton,
355 aParticle->GetKineticEnergy());
356 } else if(1 == At && 0 == Zt) {
357 res = hnXsc->HadronNucleonXscPDG(aParticle->GetDefinition(), theNeutron,
358 aParticle->GetKineticEnergy());
359 } else {
361 aParticle->GetKineticEnergy(), Zt, At);
362 res = fTotalXsc;
363 }
364 return res;
365}
366
367/////////////////////////////////////////////////////////////////////////////////////
368//
369// Returns hadron-nucleon total cross-section based on N. Starkov parametrisation of
370// data from mainly http://wwwppds.ihep.su:8001/c5-6A.html database
371
373 const G4DynamicParticle* aParticle, const G4Element* anElement)
374{
375 G4int At = G4lrint(anElement->GetN()); // number of nucleons
376 G4int Zt = anElement->GetZasInt(); // number of protons
377
378 return GetHadronNucleonXscNS(aParticle, At, Zt);
379}
380
381////////////////////////////////////////////////////////////////////////////
382//
383// Returns hadron-nucleon total cross-section based on N. Starkov parametrisation of
384// data from mainly http://wwwppds.ihep.su:8001/c5-6A.html database
385
387 const G4DynamicParticle* aParticle, G4int At, G4int Zt)
388{
389 G4double res = 0.0;
390 if(1 == At && 1 == Zt) {
391 res = hnXsc->HadronNucleonXscNS(aParticle->GetDefinition(), theProton,
392 aParticle->GetKineticEnergy());
393 } else if(1 == At && 0 == Zt) {
394 res = hnXsc->HadronNucleonXscNS(aParticle->GetDefinition(), theNeutron,
395 aParticle->GetKineticEnergy());
396 }
397 return res;
398}
399
400/////////////////////////////////////////////////////////////////////////////////////
401//
402// Returns hadron-nucleon inelastic cross-section based on proper parametrisation
403
406 const G4Element* anElement)
407{
408 G4int At = G4lrint(anElement->GetN()); // number of nucleons
409 G4int Zt = anElement->GetZasInt(); // number of protons
410
411 return GetHNinelasticXsc(aParticle, At, Zt);
412}
413
414/////////////////////////////////////////////////////////////////////////////////////
415//
416// Returns hadron-nucleon inelastic cross-section based on proper parametrisation
417
419 const G4DynamicParticle* aParticle, G4int At, G4int Zt)
420{
421 const G4ParticleDefinition* hadron = aParticle->GetDefinition();
422 G4double e = aParticle->GetKineticEnergy();
423 G4int Nt = std::max(At - Zt, 0);
424
425 hnXsc->HadronNucleonXscNS(hadron, theProton, e);
426 G4double sumInelastic = Zt*hnXsc->GetInelasticHadronNucleonXsc();
427 if(Nt > 0) {
428 hnXsc->HadronNucleonXscNS(hadron, theNeutron, e);
429 sumInelastic += Nt*hnXsc->GetInelasticHadronNucleonXsc();
430 }
431 return sumInelastic;
432}
433
434/////////////////////////////////////////////////////////////////////////////////////
435//
436// Returns hadron-nucleon inelastic cross-section based on FTF-parametrisation
437
439 const G4DynamicParticle* aParticle, G4int At, G4int Zt)
440{
441 const G4ParticleDefinition* hadron = aParticle->GetDefinition();
442 G4double e = aParticle->GetKineticEnergy();
443 G4int Nt = std::max(At - Zt, 0);
444
445 hnXsc->HadronNucleonXscVU(hadron, theProton, e);
446 G4double sumInelastic = Zt*hnXsc->GetInelasticHadronNucleonXsc();
447 if(Nt > 0) {
448 hnXsc->HadronNucleonXscVU(hadron, theNeutron, e);
449 sumInelastic += Nt*hnXsc->GetInelasticHadronNucleonXsc();
450 }
451 return sumInelastic;
452}
453
454///////////////////////////////////////////////////////////////////////
455//
456//
457
458void G4ComponentGGHadronNucleusXsc::Description(std::ostream& outFile) const
459{
460 outFile << "G4ComponentGGHadronNucleusXsc calculates total, inelastic and\n"
461 << "elastic cross sections for hadron-nucleus cross sections using\n"
462 << "the Glauber model with Gribov corrections. It is valid for all\n"
463 << "targets except hydrogen, and for incident p, pbar, n, sigma-,\n"
464 << "pi+, pi-, K+, K- and gammas with energies above 3 GeV. This is\n"
465 << "a cross section component which is to be used to build a cross\n"
466 << "data set.\n";
467}
468
469
470///////////////////////////////////////////////////////////////////////////////
471//
472// Correction arrays for GG <-> Bar changea at ~ 90 GeV
473
474const G4double G4ComponentGGHadronNucleusXsc::fNeutronBarCorrectionTot[93] = {
475
476 1.0, 1.0, 1.42517e+00, // 1.118517e+00,
4771.082002e+00, 1.116171e+00, 1.078747e+00, 1.061315e+00,
4781.058205e+00, 1.082663e+00, 1.068500e+00, 1.076912e+00, 1.083475e+00, 1.079117e+00,
4791.071856e+00, 1.071990e+00, 1.073774e+00, 1.079356e+00, 1.081314e+00, 1.082056e+00,
4801.090772e+00, 1.096776e+00, 1.095828e+00, 1.097678e+00, 1.099157e+00, 1.103677e+00,
4811.105132e+00, 1.109806e+00, 1.110816e+00, 1.117378e+00, 1.115165e+00, 1.115710e+00,
4821.111855e+00, 1.110482e+00, 1.110112e+00, 1.106676e+00, 1.108706e+00, 1.105549e+00,
4831.106318e+00, 1.106242e+00, 1.107672e+00, 1.107342e+00, 1.108119e+00, 1.106655e+00,
4841.102588e+00, 1.096657e+00, 1.092920e+00, 1.086629e+00, 1.083592e+00, 1.076030e+00,
4851.083777e+00, 1.089460e+00, 1.086545e+00, 1.079924e+00, 1.082218e+00, 1.077798e+00,
4861.077062e+00, 1.072825e+00, 1.072241e+00, 1.072104e+00, 1.072490e+00, 1.069829e+00,
4871.070398e+00, 1.065458e+00, 1.064968e+00, 1.060524e+00, 1.060048e+00, 1.057620e+00,
4881.056428e+00, 1.055366e+00, 1.055017e+00, 1.052304e+00, 1.051767e+00, 1.049728e+00,
4891.048745e+00, 1.047399e+00, 1.045876e+00, 1.042972e+00, 1.041824e+00, 1.039993e+00,
4901.039021e+00, 1.036627e+00, 1.034176e+00, 1.032526e+00, 1.033633e+00, 1.036107e+00,
4911.037803e+00, 1.031266e+00, 1.032991e+00, 1.033284e+00, 1.035015e+00, 1.033945e+00,
4921.037075e+00, 1.034721e+00
493
494};
495
496const G4double G4ComponentGGHadronNucleusXsc::fNeutronBarCorrectionIn[93] = {
497
4981.0, 1.0, 1.167421e+00, 1.156250e+00, 1.205364e+00, 1.154225e+00, 1.120391e+00, // 6
4991.124632e+00, 1.129460e+00, 1.107863e+00, 1.102152e+00, 1.104593e+00, 1.100285e+00, // 12
5001.098450e+00, 1.092677e+00, 1.101124e+00, 1.106461e+00, 1.115049e+00, 1.123903e+00, // 18
5011.126661e+00, 1.131259e+00, 1.133949e+00, 1.134185e+00, 1.133767e+00, 1.132813e+00, // 24
5021.131515e+00, 1.144338e+00, // 1.130338e+00,
5031.134171e+00, 1.139206e+00, 1.148474e+00, // 1.141474e+00,
5041.142189e+00,
5051.140725e+00, 1.140100e+00, 1.139848e+00, 1.137674e+00, 1.138645e+00, 1.136339e+00,
5061.136439e+00, 1.135946e+00, 1.136431e+00, 1.135702e+00, 1.135703e+00, 1.134113e+00,
5071.131935e+00, 1.128381e+00, 1.126373e+00, 1.122453e+00, 1.120908e+00, 1.115953e+00,
5081.115947e+00, 1.114426e+00, 1.111749e+00, 1.106207e+00, 1.107494e+00, 1.103622e+00,
5091.102576e+00, 1.098816e+00, 1.097889e+00, 1.097306e+00, 1.097130e+00, 1.094578e+00,
5101.094552e+00, 1.090222e+00, 1.089358e+00, 1.085409e+00, 1.084560e+00, 1.082182e+00,
5111.080773e+00, 1.079464e+00, 1.078724e+00, 1.076121e+00, 1.075235e+00, 1.073159e+00,
5121.071920e+00, 1.070395e+00, 1.069503e+00, 1.067525e+00, 1.066919e+00, 1.065779e+00,
5131.065319e+00, 1.063730e+00, 1.062092e+00, 1.061085e+00, 1.059908e+00, 1.059815e+00,
5141.059109e+00, 1.051920e+00, 1.051258e+00, 1.049473e+00, 1.048823e+00, 1.045984e+00,
5151.046435e+00, 1.042614e+00
516
517};
518
519const G4double G4ComponentGGHadronNucleusXsc::fProtonBarCorrectionTot[93] = {
520
5211.0, 1.0,
5221.118515e+00, 1.082000e+00, 1.116169e+00, 1.078745e+00, 1.061313e+00, 1.058203e+00,
5231.082661e+00, 1.068498e+00, 1.076910e+00, 1.083474e+00, 1.079115e+00, 1.071854e+00,
5241.071988e+00, 1.073772e+00, 1.079355e+00, 1.081312e+00, 1.082054e+00, 1.090770e+00,
5251.096774e+00, 1.095827e+00, 1.097677e+00, 1.099156e+00, 1.103676e+00, 1.105130e+00,
5261.109805e+00, 1.110814e+00, 1.117377e+00, 1.115163e+00, 1.115708e+00, 1.111853e+00,
5271.110480e+00, 1.110111e+00, 1.106674e+00, 1.108705e+00, 1.105548e+00, 1.106317e+00,
5281.106241e+00, 1.107671e+00, 1.107341e+00, 1.108118e+00, 1.106654e+00, 1.102586e+00,
5291.096655e+00, 1.092918e+00, 1.086628e+00, 1.083590e+00, 1.076028e+00, 1.083776e+00,
5301.089458e+00, 1.086543e+00, 1.079923e+00, 1.082216e+00, 1.077797e+00, 1.077061e+00,
5311.072824e+00, 1.072239e+00, 1.072103e+00, 1.072488e+00, 1.069828e+00, 1.070396e+00,
5321.065456e+00, 1.064966e+00, 1.060523e+00, 1.060047e+00, 1.057618e+00, 1.056427e+00,
5331.055365e+00, 1.055016e+00, 1.052303e+00, 1.051766e+00, 1.049727e+00, 1.048743e+00,
5341.047397e+00, 1.045875e+00, 1.042971e+00, 1.041823e+00, 1.039992e+00, 1.039019e+00,
5351.036626e+00, 1.034175e+00, 1.032525e+00, 1.033632e+00, 1.036106e+00, 1.037802e+00,
5361.031265e+00, 1.032990e+00, 1.033283e+00, 1.035014e+00, 1.033944e+00, 1.037074e+00,
5371.034720e+00
538
539};
540
541const G4double G4ComponentGGHadronNucleusXsc::fProtonBarCorrectionIn[93] = {
542
5431.0, 1.0,
5441.147419e+00, // 1.167419e+00,
5451.156248e+00, 1.205362e+00, 1.154224e+00, 1.120390e+00, 1.124630e+00, // 7
5461.129459e+00, 1.107861e+00, 1.102151e+00, 1.104591e+00, 1.100284e+00, 1.098449e+00, // 13
5471.092675e+00, 1.101122e+00, 1.106460e+00, 1.115048e+00, 1.123902e+00, 1.126659e+00, // 19
5481.131258e+00, 1.133948e+00, 1.134183e+00, 1.133766e+00, 1.132812e+00, 1.131514e+00, // 25
5491.140337e+00, // 1.130337e+00,
550
5511.134170e+00, 1.139205e+00, 1.151472e+00, // 1.141472e+00,
5521.142188e+00, 1.140724e+00,
5531.140099e+00, 1.139847e+00, 1.137672e+00, 1.138644e+00, 1.136338e+00, 1.136438e+00,
5541.135945e+00, 1.136429e+00, 1.135701e+00, 1.135702e+00, 1.134112e+00, 1.131934e+00,
5551.128380e+00, 1.126371e+00, 1.122452e+00, 1.120907e+00, 1.115952e+00, 1.115946e+00,
5561.114425e+00, 1.111748e+00, 1.106205e+00, 1.107493e+00, 1.103621e+00, 1.102575e+00,
5571.098815e+00, 1.097888e+00, 1.097305e+00, 1.097129e+00, 1.094577e+00, 1.094551e+00,
5581.090221e+00, 1.089357e+00, 1.085408e+00, 1.084559e+00, 1.082181e+00, 1.080772e+00,
5591.079463e+00, 1.078723e+00, 1.076120e+00, 1.075234e+00, 1.073158e+00, 1.071919e+00,
5601.070394e+00, 1.069502e+00, 1.067524e+00, 1.066918e+00, 1.065778e+00, 1.065318e+00,
5611.063729e+00, 1.062091e+00, 1.061084e+00, 1.059907e+00, 1.059814e+00, 1.059108e+00,
5621.051919e+00, 1.051257e+00, 1.049472e+00, 1.048822e+00, 1.045983e+00, 1.046434e+00,
5631.042613e+00
564
565};
566
567
568const G4double G4ComponentGGHadronNucleusXsc::fPionPlusBarCorrectionTot[93] = {
569
5701.0, 1.0,
5711.075927e+00, 1.074407e+00, 1.126098e+00, 1.100127e+00, 1.089742e+00, 1.083536e+00,
5721.089988e+00, 1.103566e+00, 1.096922e+00, 1.126573e+00, 1.132734e+00, 1.136512e+00,
5731.136629e+00, 1.133086e+00, 1.132428e+00, 1.129299e+00, 1.125622e+00, 1.126992e+00,
5741.127840e+00, 1.162670e+00, 1.160392e+00, 1.157864e+00, 1.157227e+00, 1.154627e+00,
5751.192555e+00, 1.197243e+00, 1.197911e+00, 1.200326e+00, 1.220053e+00, 1.215019e+00,
5761.211703e+00, 1.209080e+00, 1.204248e+00, 1.203328e+00, 1.198671e+00, 1.196840e+00,
5771.194392e+00, 1.193037e+00, 1.190408e+00, 1.188583e+00, 1.206127e+00, 1.210028e+00,
5781.206434e+00, 1.204456e+00, 1.200547e+00, 1.199058e+00, 1.200174e+00, 1.200276e+00,
5791.198912e+00, 1.213048e+00, 1.207160e+00, 1.208020e+00, 1.203814e+00, 1.202380e+00,
5801.198306e+00, 1.197002e+00, 1.196027e+00, 1.195449e+00, 1.192563e+00, 1.192135e+00,
5811.187556e+00, 1.186308e+00, 1.182124e+00, 1.180900e+00, 1.178224e+00, 1.176471e+00,
5821.174811e+00, 1.173702e+00, 1.170827e+00, 1.169581e+00, 1.167205e+00, 1.165626e+00,
5831.180244e+00, 1.177626e+00, 1.175121e+00, 1.173903e+00, 1.172192e+00, 1.171128e+00,
5841.168997e+00, 1.166826e+00, 1.164130e+00, 1.165412e+00, 1.165504e+00, 1.165020e+00,
5851.158462e+00, 1.158014e+00, 1.156519e+00, 1.156081e+00, 1.153602e+00, 1.154190e+00,
5861.152974e+00
587
588};
589
590const G4double G4ComponentGGHadronNucleusXsc::fPionPlusBarCorrectionIn[93] = {
591
5921.0, 1.0,
5931.140246e+00, 1.097872e+00, 1.104301e+00, 1.068722e+00, 1.056495e+00, 1.062622e+00, // 7
5941.047987e+00, 1.037032e+00, 1.035686e+00, 1.042870e+00, 1.052222e+00, 1.075100e+00, // 13
5951.084480e+00, 1.078286e+00, 1.081488e+00, 1.089713e+00, 1.099105e+00, 1.098003e+00, // 19
5961.102175e+00, 1.117707e+00, 1.121734e+00, 1.125229e+00, 1.126457e+00, 1.128905e+00, // 25
5971.163312e+00, 1.126263e+00, 1.126459e+00, 1.135191e+00, 1.116986e+00, 1.117184e+00, // 31
5981.117037e+00, 1.116777e+00, 1.115858e+00, 1.115745e+00, 1.114489e+00, 1.113993e+00, // 37
5991.113226e+00, 1.112818e+00, 1.111890e+00, 1.111238e+00, 1.111209e+00, 1.111775e+00, // 43
6001.110256e+00, 1.109414e+00, 1.107647e+00, 1.106980e+00, 1.106096e+00, 1.107331e+00, // 49
6011.107849e+00, 1.106407e+00, 1.103426e+00, 1.103896e+00, 1.101756e+00, 1.101031e+00, // 55
6021.098915e+00, 1.098260e+00, 1.097768e+00, 1.097487e+00, 1.095964e+00, 1.095773e+00, // 61
6031.093348e+00, 1.092687e+00, 1.090465e+00, 1.089821e+00, 1.088394e+00, 1.087462e+00, // 67
6041.086571e+00, 1.085997e+00, 1.084451e+00, 1.083798e+00, 1.082513e+00, 1.081670e+00, // 73
6051.080735e+00, 1.075659e+00, 1.074341e+00, 1.073689e+00, 1.072787e+00, 1.072237e+00, // 79
6061.071107e+00, 1.069955e+00, 1.074856e+00, 1.065873e+00, 1.065938e+00, 1.065694e+00,
6071.062192e+00, 1.061967e+00, 1.061180e+00, 1.060960e+00, 1.059646e+00, 1.059975e+00,
6081.059658e+00
609
610};
611
612
613const G4double G4ComponentGGHadronNucleusXsc::fPionMinusBarCorrectionTot[93] = {
614
6151.0, 1.0,
6161.3956e+00, 1.077959e+00, 1.129145e+00, 1.102088e+00, 1.089765e+00, 1.083542e+00, // 7
6171.089995e+00, 1.104895e+00, 1.097154e+00, 1.127663e+00, 1.133063e+00, 1.137425e+00, // 13
6181.136724e+00, 1.133859e+00, 1.132498e+00, 1.130276e+00, 1.127896e+00, 1.127656e+00, // 19
6191.127905e+00, 1.164210e+00, 1.162259e+00, 1.160075e+00, 1.158978e+00, 1.156649e+00, // 25
6201.194157e+00, 1.199177e+00, 1.198983e+00, 1.202325e+00, 1.221967e+00, 1.217548e+00,
6211.214389e+00, 1.211760e+00, 1.207335e+00, 1.206081e+00, 1.201766e+00, 1.199779e+00,
6221.197283e+00, 1.195706e+00, 1.193071e+00, 1.191115e+00, 1.208838e+00, 1.212681e+00,
6231.209235e+00, 1.207163e+00, 1.203451e+00, 1.201807e+00, 1.203283e+00, 1.203388e+00,
6241.202244e+00, 1.216509e+00, 1.211066e+00, 1.211504e+00, 1.207539e+00, 1.205991e+00,
6251.202143e+00, 1.200724e+00, 1.199595e+00, 1.198815e+00, 1.196025e+00, 1.195390e+00,
6261.191137e+00, 1.189791e+00, 1.185888e+00, 1.184575e+00, 1.181996e+00, 1.180229e+00,
6271.178545e+00, 1.177355e+00, 1.174616e+00, 1.173312e+00, 1.171016e+00, 1.169424e+00,
6281.184120e+00, 1.181478e+00, 1.179085e+00, 1.177817e+00, 1.176124e+00, 1.175003e+00,
6291.172947e+00, 1.170858e+00, 1.168170e+00, 1.169397e+00, 1.169304e+00, 1.168706e+00,
6301.162774e+00, 1.162217e+00, 1.160740e+00, 1.160196e+00, 1.157857e+00, 1.158220e+00,
6311.157267e+00
632};
633
634const G4double G4ComponentGGHadronNucleusXsc::fPionMinusBarCorrectionIn[93] = {
635
6361.0, 1.0,
6371.463e+00, 1.100898e+00, 1.106773e+00, 1.070289e+00, 1.040514e+00, 1.062628e+00, // 7
6381.047992e+00, 1.038041e+00, 1.035862e+00, 1.043679e+00, 1.052466e+00, 1.065780e+00, // 13
6391.070551e+00, 1.078869e+00, 1.081541e+00, 1.090455e+00, 1.100847e+00, 1.098511e+00, // 19
6401.102226e+00, 1.118865e+00, 1.123143e+00, 1.126904e+00, 1.127785e+00, 1.130444e+00, // 25
6411.148502e+00, 1.127678e+00, 1.127244e+00, 1.123634e+00, 1.118347e+00, 1.118988e+00,
6421.118957e+00, 1.118696e+00, 1.118074e+00, 1.117722e+00, 1.116717e+00, 1.116111e+00,
6431.115311e+00, 1.114745e+00, 1.113814e+00, 1.113069e+00, 1.113141e+00, 1.113660e+00,
6441.112249e+00, 1.111343e+00, 1.109718e+00, 1.108942e+00, 1.108310e+00, 1.109549e+00,
6451.110227e+00, 1.108846e+00, 1.106183e+00, 1.106354e+00, 1.104388e+00, 1.103583e+00,
6461.101632e+00, 1.100896e+00, 1.100296e+00, 1.099873e+00, 1.098420e+00, 1.098082e+00,
6471.095892e+00, 1.095162e+00, 1.093144e+00, 1.092438e+00, 1.091083e+00, 1.090142e+00,
6481.089236e+00, 1.088604e+00, 1.087159e+00, 1.086465e+00, 1.085239e+00, 1.084388e+00,
6491.083473e+00, 1.078373e+00, 1.077136e+00, 1.076450e+00, 1.075561e+00, 1.074973e+00,
6501.073898e+00, 1.072806e+00, 1.067706e+00, 1.068684e+00, 1.068618e+00, 1.068294e+00,
6511.065241e+00, 1.064939e+00, 1.064166e+00, 1.063872e+00, 1.062659e+00, 1.062828e+00,
6521.062699e+00
653
654};
655
656
657//
658//
659///////////////////////////////////////////////////////////////////////////////////////
G4double G4Log(G4double x)
Definition: G4Log.hh:227
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
const G4double A[17]
static G4AntiNeutron * AntiNeutron()
static G4AntiProton * AntiProton()
Definition: G4AntiProton.cc:92
G4double GetHadronNucleonXscPDG(const G4DynamicParticle *, const G4Element *)
G4double GetInelasticElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A) final
G4double GetHadronNucleonXscNS(const G4DynamicParticle *, const G4Element *)
G4double GetProductionIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A)
G4double GetParticleBarCorTot(const G4ParticleDefinition *theParticle, G4int Z)
G4double GetHadronNucleonXsc(const G4DynamicParticle *, const G4Element *)
G4double GetHNinelasticXscVU(const G4DynamicParticle *, G4int At, G4int Zt)
void Description(std::ostream &) const final
G4double GetInelasticIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A) final
G4double GetTotalIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A) final
G4double GetTotalElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A) final
G4double GetRatioQE(const G4DynamicParticle *, G4int At, G4int Zt)
G4double GetElasticElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A) final
G4double GetRatioSD(const G4DynamicParticle *, G4int At, G4int Zt)
G4double GetParticleBarCorIn(const G4ParticleDefinition *theParticle, G4int Z)
void ComputeCrossSections(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A, G4int nL=0)
G4double GetHNinelasticXsc(const G4DynamicParticle *, const G4Element *)
G4double ComputeQuasiElasticRatio(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A) final
G4double GetElasticIsotopeCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4int A) final
G4double GetProductionElementCrossSection(const G4ParticleDefinition *aParticle, G4double kinEnergy, G4int Z, G4double A)
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4int GetZasInt() const
Definition: G4Element.hh:132
G4double GetN() const
Definition: G4Element.hh:135
static G4Gamma * Gamma()
Definition: G4Gamma.cc:85
G4double HadronNucleonXscEL(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double KaonNucleonXscGG(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double KaonNucleonXscNS(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double HadronNucleonXscVU(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double HadronNucleonXsc(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double HadronNucleonXscPDG(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
G4double GetInelasticHadronNucleonXsc() const
G4double HadronNucleonXscNS(const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
static G4KaonMinus * KaonMinus()
Definition: G4KaonMinus.cc:112
static G4KaonPlus * KaonPlus()
Definition: G4KaonPlus.cc:112
static G4KaonZeroLong * KaonZeroLong()
static G4KaonZeroShort * KaonZeroShort()
static G4Lambda * Lambda()
Definition: G4Lambda.cc:107
static G4Neutron * Neutron()
Definition: G4Neutron.cc:103
static G4double RadiusHNGG(G4int A)
static G4double RadiusKNGG(G4int A)
static G4PionMinus * PionMinus()
Definition: G4PionMinus.cc:97
static G4PionPlus * PionPlus()
Definition: G4PionPlus.cc:97
Definition: G4Pow.hh:49
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double Z13(G4int Z) const
Definition: G4Pow.hh:123
G4double Z23(G4int Z) const
Definition: G4Pow.hh:125
static G4Proton * Proton()
Definition: G4Proton.cc:92
#define N
Definition: crc32.c:56
int G4lrint(double ad)
Definition: templates.hh:134