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

#include <G4NuclearAbrasionGeometry.hh>

Public Member Functions

 G4NuclearAbrasionGeometry (G4double AP, G4double AT, G4double r)
 
 ~G4NuclearAbrasionGeometry ()
 
void SetPeripheralThreshold (G4double)
 
G4double GetPeripheralThreshold ()
 
G4double F ()
 
G4double P ()
 
G4double GetExcitationEnergyOfProjectile ()
 
G4double GetExcitationEnergyOfTarget ()
 

Detailed Description

Definition at line 67 of file G4NuclearAbrasionGeometry.hh.

Constructor & Destructor Documentation

◆ G4NuclearAbrasionGeometry()

G4NuclearAbrasionGeometry::G4NuclearAbrasionGeometry ( G4double  AP,
G4double  AT,
G4double  r 
)

Definition at line 77 of file G4NuclearAbrasionGeometry.cc.

79{
80//
81//
82// Initialise variables for interaction geometry.
83//
85 AP = AP1;
86 AT = AT1;
87 rP = aR.GetWilsonRadius(AP);
88 rT = aR.GetWilsonRadius(AT);
89 r = r1;
90 n = rP / (rP + rT);
91 b = r / (rP + rT);
92 m = rT / rP;
93 Q = (1.0 - b)/n;
94 S = Q * Q;
95 T = S * Q;
96 R = std::sqrt(m*n);
97 U = 1.0/m - 2.0;
98//
99//
100// Initialise the threshold radius-ratio at which interactions are considered
101// peripheral or central.
102//
103 rth = 2.0/3.0;
104 B = 10.0 * MeV;
105}
G4double GetWilsonRadius(G4double A)

◆ ~G4NuclearAbrasionGeometry()

G4NuclearAbrasionGeometry::~G4NuclearAbrasionGeometry ( )

Definition at line 108 of file G4NuclearAbrasionGeometry.cc.

109{;}

Member Function Documentation

◆ F()

G4double G4NuclearAbrasionGeometry::F ( )

Definition at line 151 of file G4NuclearAbrasionGeometry.cc.

152{
153//
154//
155// Initialise the value for F, then determine the actual value depending upon
156// whether the projectile is larger or smaller than the target and these radii
157// in relation to the impact parameter.
158//
159 G4double valueF = 0.0;
160
161 if (rT > rP)
162 {
163 if (rT-rP<=r && r<=rT+rP) valueF = 0.75*R*S - 0.125*(3.0*R-1.0)*T;
164 else valueF = 1.0;
165 }
166 else
167 {
168 if (rP-rT<=r && r<=rP+rT) valueF = 0.75*R*S - 0.125*(3.0*std::sqrt(n/m)-
169 (1.0-G4Pow::GetInstance()->powA(1.0-m*m,3.0/2.0))*std::sqrt(1.0-G4Pow::GetInstance()->powN(1.0-m,2))/G4Pow::GetInstance()->powN(m,3))*T;
170 else valueF = (1.0-G4Pow::GetInstance()->powA(1.0-m*m,3.0/2.0))*std::sqrt(1.0-b*b/n/n);
171 }
172
173 if (!(valueF <= 1.0 && valueF>= 0.0))
174 {
175 if (valueF > 1.0) valueF = 1.0;
176 else valueF = 0.0;
177 }
178 return valueF;
179}
double G4double
Definition: G4Types.hh:83
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double powN(G4double x, G4int n) const
Definition: G4Pow.cc:166
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:230

Referenced by G4WilsonAbrasionModel::ApplyYourself(), GetExcitationEnergyOfProjectile(), and GetExcitationEnergyOfTarget().

◆ GetExcitationEnergyOfProjectile()

G4double G4NuclearAbrasionGeometry::GetExcitationEnergyOfProjectile ( )

Definition at line 182 of file G4NuclearAbrasionGeometry.cc.

183{
184 G4double F1 = F();
185 G4double P1 = P();
186 G4double Es = 0.0;
187
188 Es = 0.95 * MeV * 4.0 * pi * rP*rP/fermi/fermi *
189 (1.0+P1-G4Pow::GetInstance()->A23(1.0-F1));
190// if (rT < rP && r < rP-rT)
191 if ((r-rP)/rT < rth)
192 {
193 G4double omega = 0.0;
194 if (AP < 12.0) omega = 1500.0;
195 else if (AP <= 16.0) omega = 1500.0 - 320.0*(AP-12.0);
196 Es *= 1.0 + F1*(5.0+omega*F1*F1);
197 }
198
199 if (Es < 0.0)
200 Es = 0.0;
201 else if (Es > B * AP)
202 Es = B * AP;
203 return Es;
204}
G4double A23(G4double A) const
Definition: G4Pow.hh:131
const G4double pi

Referenced by G4WilsonAbrasionModel::ApplyYourself().

◆ GetExcitationEnergyOfTarget()

G4double G4NuclearAbrasionGeometry::GetExcitationEnergyOfTarget ( )

Definition at line 207 of file G4NuclearAbrasionGeometry.cc.

208{
209 // This member function declares a new G4NuclearAbrasionGeometry object
210 // but with the projectile and target exchanged to determine the values
211 // for F and P. Determination of the excess surface area and excitation
212 // energy is as above.
213
214 G4NuclearAbrasionGeometry* revAbrasionGeometry =
215 new G4NuclearAbrasionGeometry(AT, AP, r);
216 G4double F1 = revAbrasionGeometry->F();
217 G4double P1 = revAbrasionGeometry->P();
218 G4double Es = 0.0;
219
220 Es = 0.95 * MeV * 4.0 * pi * rT*rT/fermi/fermi *
221 (1.0+P1-G4Pow::GetInstance()->A23(1.0-F1));
222
223// if (rP < rT && r < rT-rP)
224 if ((r-rT)/rP < rth) {
225 G4double omega = 0.0;
226 if (AT < 12.0) omega = 1500.0;
227 else if (AT <= 16.0) omega = 1500.0 - 320.0*(AT-12.0);
228 Es *= 1.0 + F1*(5.0+omega*F1*F1);
229 }
230
231 if (Es < 0.0)
232 Es = 0.0;
233 else if (Es > B * AT)
234 Es = B * AT;
235
236 delete revAbrasionGeometry;
237
238 return Es;
239}

Referenced by G4WilsonAbrasionModel::ApplyYourself().

◆ GetPeripheralThreshold()

G4double G4NuclearAbrasionGeometry::GetPeripheralThreshold ( )

Definition at line 116 of file G4NuclearAbrasionGeometry.cc.

117 {return rth;}

◆ P()

G4double G4NuclearAbrasionGeometry::P ( )

Definition at line 120 of file G4NuclearAbrasionGeometry.cc.

121{
122//
123//
124// Initialise the value for P, then determine the actual value depending upon
125// whether the projectile is larger or smaller than the target and these radii
126// in relation to the impact parameter.
127//
128 G4double valueP = 0.0;
129
130 if (rT > rP)
131 {
132 if (rT-rP<=r && r<=rT+rP) valueP = 0.125*R*U*S - 0.125*(0.5*R*U+1.0)*T;
133 else valueP = -1.0;
134 }
135 else
136 {
137 if (rP-rT<=r && r<=rP+rT) valueP = 0.125*R*U*S - 0.125*(0.5*std::sqrt(n/m)*U-
138 (std::sqrt(1.0-m*m)/n - 1.0)*std::sqrt((2.0-m)/G4Pow::GetInstance()->powN(m,5)))*T;
139 else valueP = (std::sqrt(1.0-m*m)/n-1.0)*std::sqrt(1.0-b*b/n/n);
140 }
141
142 if (!(valueP <= 1.0 && valueP>= -1.0))
143 {
144 if (valueP > 1.0) valueP = 1.0;
145 else valueP = -1.0;
146 }
147 return valueP;
148}

Referenced by GetExcitationEnergyOfProjectile(), and GetExcitationEnergyOfTarget().

◆ SetPeripheralThreshold()

void G4NuclearAbrasionGeometry::SetPeripheralThreshold ( G4double  rth1)

Definition at line 112 of file G4NuclearAbrasionGeometry.cc.

113 {if (rth1 > 0.0 && rth1 <= 1.0) rth = rth1;}

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