Geant4-11
Static Public Member Functions | Static Public Attributes
G4NuclearRadii Class Reference

#include <G4NuclearRadii.hh>

Static Public Member Functions

static G4double CoulombFactor (const G4ParticleDefinition *theParticle, const G4ParticleDefinition *nucleon, G4double ekin)
 
static G4double CoulombFactor (G4int Z, G4int A, const G4ParticleDefinition *theParticle, G4double ekin)
 
static G4double ExplicitRadius (G4int Z, G4int A)
 
static G4double ParticleRadius (const G4ParticleDefinition *)
 
static G4double Radius (G4int Z, G4int A)
 
static G4double RadiusCB (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 RadiusNNGG (G4int Z, G4int A)
 
static G4double RadiusRMS (G4int Z, G4int A)
 

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 *)
G4double GetPDGCharge() const
static constexpr double fermi
Definition: SystemOfUnits.h:84
G4bool nucleon(G4int ityp)

References fAlpha, CLHEP::fermi, fInvep, G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), G4InuclParticleNames::nucleon(), ParticleRadius(), and anonymous_namespace{G4ChipsKaonPlusInelasticXS.cc}::pM.

Referenced by G4BGGNucleonElasticXS::CoulombFactor(), G4BGGNucleonInelasticXS::CoulombFactor(), G4BGGPionElasticXS::CoulombFactorPiPlus(), G4BGGPionInelasticXS::CoulombFactorPiPlus(), 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 G4int Z[17]
const G4double A[17]
static G4double RadiusCB(G4int Z, G4int A)
static G4double GetNuclearMass(const G4double A, const G4double Z)

References A, fAlpha, fInvep, G4NucleiProperties::GetNuclearMass(), G4ParticleDefinition::GetPDGCharge(), G4ParticleDefinition::GetPDGMass(), ParticleRadius(), anonymous_namespace{G4ChipsKaonPlusInelasticXS.cc}::pM, RadiusCB(), and 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}

References A, CLHEP::fermi, and Z.

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

◆ ParticleRadius()

G4double G4NuclearRadii::ParticleRadius ( const G4ParticleDefinition p)
static

Definition at line 158 of file G4NuclearRadii.cc.

159{
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

References CLHEP::fermi, and G4ParticleDefinition::GetPDGEncoding().

Referenced by 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

References A, ExplicitRadius(), CLHEP::fermi, fG4pow, G4Pow::powZ(), Z, and G4Pow::Z13().

Referenced by G4ComponentGGNuclNuclXsc::ComputeCrossSections().

◆ RadiusCB()

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

Definition at line 148 of file G4NuclearRadii.cc.

149{
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]
T min(const T t1, const T t2)
brief Return the smallest of the two arguments

References A, ExplicitRadius(), CLHEP::fermi, fG4pow, G4INCL::Math::min(), r0, Z, and G4Pow::Z13().

Referenced by 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:166

References A, CLHEP::fermi, fG4pow, G4Pow::powN(), Z, and G4Pow::Z13().

◆ RadiusHNGG()

G4double G4NuclearRadii::RadiusHNGG ( G4int  A)
static

Definition at line 122 of file G4NuclearRadii.cc.

123{
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:179

References A, CLHEP::fermi, fG4pow, G4Exp(), and G4Pow::Z13().

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}

References A, CLHEP::fermi, fG4pow, and G4Pow::Z13().

Referenced by G4ComponentGGHadronNucleusXsc::ComputeCrossSections().

◆ RadiusND()

G4double G4NuclearRadii::RadiusND ( G4int  A)
static

Definition at line 138 of file G4NuclearRadii.cc.

139{
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}

References A, and CLHEP::fermi.

◆ 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}

References A, ExplicitRadius(), CLHEP::fermi, fG4pow, G4Exp(), Z, and G4Pow::Z13().

◆ 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}

References A, ExplicitRadius(), CLHEP::fermi, fG4pow, G4Pow::powZ(), and Z.

Field 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 91 of file G4NuclearRadii.hh.

Referenced by RadiusCB().


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