Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 ( G4double  AP,
G4double  AT,
G4double  r 
)

Definition at line 77 of file G4NuclearAbrasionGeometry.cc.

79 {
80 //
81 //
82 // Initialise variables for interaction geometry.
83 //
84  G4WilsonRadius aR;
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 }
static constexpr double MeV
Definition: G4SIunits.hh:214
G4double GetWilsonRadius(G4double A)

Here is the call graph for this function:

Here is the caller graph for this function:

G4NuclearAbrasionGeometry::~G4NuclearAbrasionGeometry ( )

Definition at line 108 of file G4NuclearAbrasionGeometry.cc.

109 {;}

Member Function Documentation

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 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:259
G4double powN(G4double x, G4int n) const
Definition: G4Pow.cc:128
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

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 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
static const G4double * P1[nN]
G4double A23(G4double A) const
Definition: G4Pow.hh:160
static constexpr double MeV
Definition: G4SIunits.hh:214
static constexpr double pi
Definition: G4SIunits.hh:75
double G4double
Definition: G4Types.hh:76
static constexpr double fermi
Definition: G4SIunits.hh:103

Here is the call graph for this function:

Here is the caller graph for this function:

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 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
G4NuclearAbrasionGeometry(G4double AP, G4double AT, G4double r)
static const G4double * P1[nN]
G4double A23(G4double A) const
Definition: G4Pow.hh:160
static constexpr double MeV
Definition: G4SIunits.hh:214
static constexpr double pi
Definition: G4SIunits.hh:75
double G4double
Definition: G4Types.hh:76
static constexpr double fermi
Definition: G4SIunits.hh:103

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4NuclearAbrasionGeometry::GetPeripheralThreshold ( )

Definition at line 116 of file G4NuclearAbrasionGeometry.cc.

117  {return rth;}
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 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

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: