Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4NuclearRadii Class Reference

#include <G4NuclearRadii.hh>

Static Public Member Functions

static G4double ExplicitRadius (G4int Z, G4int A)
 
static G4double Radius (G4int Z, G4int A)
 
static G4double RadiusRMS (G4int Z, G4int A)
 
static G4double RadiusNNGG (G4int Z, G4int A)
 
static G4double RadiusECS (G4int Z, G4int A)
 
static G4double RadiusHNGG (G4int A)
 
static G4double RadiusKNGG (G4int A)
 
static G4double RadiusND (G4int A)
 
static G4double RadiusCB (G4int Z, G4int A)
 
static G4double ParticleRadius (const G4ParticleDefinition *)
 
static G4double CoulombFactor (const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
 
static G4double CoulombFactor (G4int Z, G4int A, const G4ParticleDefinition *theParticle, G4double ekin)
 

Static Public Attributes

static G4PowfG4pow = G4Pow::GetInstance()
 
static const G4double r0 [93]
 

Detailed Description

Definition at line 43 of file G4NuclearRadii.hh.

Member Function Documentation

◆ CoulombFactor() [1/2]

G4double G4NuclearRadii::CoulombFactor ( const G4ParticleDefinition * theParticle,
const G4ParticleDefinition * nucleon,
G4double ekin )
static

Definition at line 169 of file G4NuclearRadii.cc.

173{
174 G4double tR = 0.895*CLHEP::fermi;
175 G4double pR = ParticleRadius(theParticle);
176
177 G4double pZ = theParticle->GetPDGCharge()*fInvep;
178 G4double tZ = nucleon->GetPDGCharge()*fInvep;
179
180 G4double pM = theParticle->GetPDGMass();
181 G4double tM = nucleon->GetPDGMass();
182
183 G4double pElab = ekin + pM;
184 G4double totTcm = std::sqrt(pM*pM + tM*tM + 2.*pElab*tM) - pM -tM;
185
186 G4double bC = fAlpha*pZ*tZ/(pR + tR);
187 return (totTcm > bC) ? 1. - bC/totTcm : 0.0;
188}
const G4double fInvep
const G4double fAlpha
double G4double
Definition G4Types.hh:83
static G4double ParticleRadius(const G4ParticleDefinition *)
G4bool nucleon(G4int ityp)

Referenced by G4HadronNucleonXsc::HadronNucleonXscNS(), and G4HadronNucleonXsc::KaonNucleonXscVG().

◆ CoulombFactor() [2/2]

G4double G4NuclearRadii::CoulombFactor ( G4int Z,
G4int A,
const G4ParticleDefinition * theParticle,
G4double ekin )
static

Definition at line 190 of file G4NuclearRadii.cc.

194{
195 G4double tR = RadiusCB(Z, A);
196 G4double pR = ParticleRadius(theParticle);
197
198 G4double pZ = theParticle->GetPDGCharge()*fInvep;
199
200 G4double pM = theParticle->GetPDGMass();
202
203 G4double pElab = ekin + pM;
204 G4double totTcm = std::sqrt(pM*pM + tM*tM + 2.*pElab*tM) - pM -tM;
205
206 G4double bC = fAlpha*pZ*Z/(pR + tR);
207 return (totTcm > bC) ? 1. - bC/totTcm : 0.0;
208}
const G4double A[17]
static G4double RadiusCB(G4int Z, G4int A)
static G4double GetNuclearMass(const G4double A, const G4double Z)

◆ ExplicitRadius()

G4double G4NuclearRadii::ExplicitRadius ( G4int Z,
G4int A )
static

Definition at line 43 of file G4NuclearRadii.cc.

44{
45 G4double R = 0.0;
46 // Special rms radii for light nucleii
47 if(Z <= 4) {
48 if(A == 1) { R = 0.895*CLHEP::fermi; }// p
49 else if(A == 2) { R = 2.13*CLHEP::fermi; }// d
50 else if(Z == 1 && A == 3) { R = 1.80*CLHEP::fermi; }// t
51 else if(Z == 2 && A == 3) { R = 1.96*CLHEP::fermi; }// He3
52 else if(Z == 2 && A == 4) { R = 1.68*CLHEP::fermi; }// He4
53 else if(Z == 3) { R = 2.40*CLHEP::fermi; }// Li7
54 else if(Z == 4) { R = 2.51*CLHEP::fermi; }// Be9
55 }
56 return R;
57}

Referenced by Radius(), RadiusCB(), RadiusNNGG(), and RadiusRMS().

◆ ParticleRadius()

G4double G4NuclearRadii::ParticleRadius ( const G4ParticleDefinition * p)
static

Definition at line 158 of file G4NuclearRadii.cc.

159{
160 G4double R = CLHEP::fermi;
161 G4int pdg = std::abs(p->GetPDGEncoding());
162 if(pdg == 2112 || pdg == 2212) { R *= 0.895; }
163 else if(pdg == 211) { R *= 0.663; }
164 else if(pdg == 321) { R *= 0.340; }
165 else { R *= 0.5; }
166 return R;
167}
int G4int
Definition G4Types.hh:85

Referenced by CoulombFactor(), and CoulombFactor().

◆ Radius()

G4double G4NuclearRadii::Radius ( G4int Z,
G4int A )
static

Definition at line 59 of file G4NuclearRadii.cc.

60{
62 if(0.0 == R) {
63 if (A <= 50) {
64 G4double y = 1.1;
65 if( A <= 15) { y = 1.26; }
66 else if( A <= 20) { y = 1.19; }
67 else if( A <= 30) { y = 1.12; }
68 G4double x = fG4pow->Z13(A);
69 R = y*(x - 1./x);
70 } else {
71 R = fG4pow->powZ(A, 0.27);
72 }
73 R *= CLHEP::fermi;
74 }
75 return R;
76}
static G4Pow * fG4pow
static G4double ExplicitRadius(G4int Z, G4int A)
G4double powZ(G4int Z, G4double y) const
Definition G4Pow.hh:225
G4double Z13(G4int Z) const
Definition G4Pow.hh:123

◆ RadiusCB()

G4double G4NuclearRadii::RadiusCB ( G4int Z,
G4int A )
static

Definition at line 148 of file G4NuclearRadii.cc.

149{
150 G4double R = ExplicitRadius(Z, A);
151 if(0.0 == R) {
152 G4int z = std::min(Z, 92);
153 R = r0[z]*fG4pow->Z13(A)*CLHEP::fermi;
154 }
155 return R;
156}
static const G4double r0[93]

Referenced by G4FermiBreakUpUtil::CoulombBarrier(), CoulombFactor(), G4CoulombBarrier::G4CoulombBarrier(), and G4CoulombBarrier::GetCoulombBarrier().

◆ RadiusECS()

G4double G4NuclearRadii::RadiusECS ( G4int Z,
G4int A )
static

Definition at line 101 of file G4NuclearRadii.cc.

102{
103 G4double R=0.;
104 const G4double c[3]={0.77329745, 1.38206072, 30.28295235};
105 const G4double c1=c[0];
106 const G4double c2=c[1];
107 const G4double c3=c[2];
108
109 // Special rms radii for light nuclei
110 if (A <= 30) {
111 G4double vn = 0.5*A + fG4pow->powN(0.028*A,2) - fG4pow->powN(0.011*A,3);
112 G4double dev = vn - (A-Z);
113 R = c1*fG4pow->Z13(A) + c2/fG4pow->Z13(A) + c3*dev*dev/(A*A);
114 } else if (A<=50){
115 G4double y = 1.1;
116 G4double x = fG4pow->Z13(A);
117 R = y*(x - 1./x);
118 }
119 return R*CLHEP::fermi;
120}
G4double powN(G4double x, G4int n) const
Definition G4Pow.cc:162

◆ RadiusHNGG()

G4double G4NuclearRadii::RadiusHNGG ( G4int A)
static

Definition at line 122 of file G4NuclearRadii.cc.

123{
124 G4double R = CLHEP::fermi;
125 if(A > 20) {
126 R *= 1.08*fG4pow->Z13(A)*(0.8 + 0.2*G4Exp(-(G4double)(A - 20)/20.));
127 } else {
128 R *= 1.08*fG4pow->Z13(A)*(1.0 + 0.1*G4Exp(-(G4double)(A - 20)/20.));
129 }
130 return R;
131}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition G4Exp.hh:180

Referenced by G4ComponentGGHadronNucleusXsc::ComputeCrossSections().

◆ RadiusKNGG()

G4double G4NuclearRadii::RadiusKNGG ( G4int A)
static

Definition at line 133 of file G4NuclearRadii.cc.

134{
135 return 1.3*CLHEP::fermi*fG4pow->Z13(A);
136}

Referenced by G4ComponentGGHadronNucleusXsc::ComputeCrossSections().

◆ RadiusND()

G4double G4NuclearRadii::RadiusND ( G4int A)
static

Definition at line 138 of file G4NuclearRadii.cc.

139{
140 G4double R = CLHEP::fermi;
141 if(1 == A) { return R*0.895; }
142// G4double x = R*fG4pow->Z13(A);
143// if(A <= 3.) { x *= 0.8; }
144// else { x *= 1.7; }
145 return R;
146}

◆ RadiusNNGG()

G4double G4NuclearRadii::RadiusNNGG ( G4int Z,
G4int A )
static

Definition at line 87 of file G4NuclearRadii.cc.

88{
90 if(0.0 == R) {
91 if(A > 20) {
92 R = 1.08*fG4pow->Z13(A)*(0.85 + 0.15*G4Exp(-(G4double)(A - 21)/40.));
93 } else {
94 R = 1.08*fG4pow->Z13(A)*(1.0 + 0.3*G4Exp(-(G4double)(A - 21)/10.));
95 }
96 R *= CLHEP::fermi;
97 }
98 return R;
99}

◆ RadiusRMS()

G4double G4NuclearRadii::RadiusRMS ( G4int Z,
G4int A )
static

Definition at line 78 of file G4NuclearRadii.cc.

79{
81 if(0.0 == R) {
82 R = 1.24*fG4pow->powZ(A, 0.28)*CLHEP::fermi;
83 }
84 return R;
85}

Member Data Documentation

◆ fG4pow

G4Pow * G4NuclearRadii::fG4pow = G4Pow::GetInstance()
static

◆ r0

const G4double G4NuclearRadii::r0
static
Initial value:
= {
1.2,
1.3, 1.3, 1.3, 1.3,1.17,1.54,1.65,1.71, 1.7,1.75,
1.7,1.57,1.53, 1.4, 1.3,1.30,1.44, 1.4, 1.4, 1.4,
1.4, 1.4,1.46, 1.4, 1.4,1.46,1.55, 1.5,1.38,1.48,
1.4, 1.4, 1.4,1.46, 1.4, 1.4, 1.4, 1.4, 1.4,1.45,
1.4, 1.4, 1.4, 1.4, 1.4, 1.4,1.45,1.48, 1.4,1.52,
1.46, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.4, 1.5,
1.4, 1.4, 1.4, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.4,
1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3,1.33,1.43,
1.3,1.32,1.34, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3, 1.3,
1.3, 1.3}

Definition at line 210 of file G4NuclearRadii.hh.

Referenced by RadiusCB().


The documentation for this class was generated from the following files: