Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
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 73 of file G4NuclearAbrasionGeometry.cc.

References G4WilsonRadius::GetWilsonRadius(), and python.hepunit::MeV.

Referenced by GetExcitationEnergyOfTarget().

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

Definition at line 104 of file G4NuclearAbrasionGeometry.cc.

105 {;}

Member Function Documentation

G4double G4NuclearAbrasionGeometry::F ( )

Definition at line 147 of file G4NuclearAbrasionGeometry.cc.

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

148 {
149 //
150 //
151 // Initialise the value for F, then determine the actual value depending upon
152 // whether the projectile is larger or smaller than the target and these radii
153 // in relation to the impact parameter.
154 //
155  G4double valueF = 0.0;
156 
157  if (rT > rP)
158  {
159  if (rT-rP<=r && r<=rT+rP) valueF = 0.75*R*S - 0.125*(3.0*R-1.0)*T;
160  else valueF = 1.0;
161  }
162  else
163  {
164  if (rP-rT<=r && r<=rP+rT) valueF = 0.75*R*S - 0.125*(3.0*std::sqrt(n/m)-
165  (1.0-std::pow(1.0-m*m,3.0/2.0))*std::sqrt(1.0-std::pow(1.0-m,2.0))/std::pow(m,3.0))*T;
166  else valueF = (1.0-std::pow(1.0-m*m,3.0/2.0))*std::sqrt(1.0-b*b/n/n);
167  }
168 
169  if (!(valueF <= 1.0 && valueF>= 0.0))
170  {
171  if (valueF > 1.0) valueF = 1.0;
172  else valueF = 0.0;
173  }
174  return valueF;
175 }
double G4double
Definition: G4Types.hh:76
G4double G4NuclearAbrasionGeometry::GetExcitationEnergyOfProjectile ( )

Definition at line 178 of file G4NuclearAbrasionGeometry.cc.

References F(), python.hepunit::fermi, python.hepunit::MeV, P(), and python.hepunit::pi.

Referenced by G4WilsonAbrasionModel::ApplyYourself().

179 {
180  G4double F1 = F();
181  G4double P1 = P();
182  G4double Es = 0.0;
183 
184  Es = 0.95 * MeV * 4.0 * pi * rP*rP/fermi/fermi *
185  (1.0+P1-std::pow(1.0-F1,2.0/3.0));
186 // if (rT < rP && r < rP-rT)
187  if ((r-rP)/rT < rth)
188  {
189  G4double omega = 0.0;
190  if (AP < 12.0) omega = 1500.0;
191  else if (AP <= 16.0) omega = 1500.0 - 320.0*(AP-12.0);
192  Es *= 1.0 + F1*(5.0+omega*F1*F1);
193  }
194 
195  if (Es < 0.0)
196  Es = 0.0;
197  else if (Es > B * AP)
198  Es = B * AP;
199  return Es;
200 }
double G4double
Definition: G4Types.hh:76
G4double G4NuclearAbrasionGeometry::GetExcitationEnergyOfTarget ( )

Definition at line 203 of file G4NuclearAbrasionGeometry.cc.

References F(), python.hepunit::fermi, G4NuclearAbrasionGeometry(), python.hepunit::MeV, P(), and python.hepunit::pi.

Referenced by G4WilsonAbrasionModel::ApplyYourself().

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

Definition at line 112 of file G4NuclearAbrasionGeometry.cc.

113  {return rth;}
G4double G4NuclearAbrasionGeometry::P ( )

Definition at line 116 of file G4NuclearAbrasionGeometry.cc.

Referenced by GetExcitationEnergyOfProjectile(), and GetExcitationEnergyOfTarget().

117 {
118 //
119 //
120 // Initialise the value for P, then determine the actual value depending upon
121 // whether the projectile is larger or smaller than the target and these radii
122 // in relation to the impact parameter.
123 //
124  G4double valueP = 0.0;
125 
126  if (rT > rP)
127  {
128  if (rT-rP<=r && r<=rT+rP) valueP = 0.125*R*U*S - 0.125*(0.5*R*U+1.0)*T;
129  else valueP = -1.0;
130  }
131  else
132  {
133  if (rP-rT<=r && r<=rP+rT) valueP = 0.125*R*U*S - 0.125*(0.5*std::sqrt(n/m)*U-
134  (std::sqrt(1.0-m*m)/n - 1.0)*std::sqrt((2.0-m)/std::pow(m,5.0)))*T;
135  else valueP = (std::sqrt(1.0-m*m)/n-1.0)*std::sqrt(1.0-b*b/n/n);
136  }
137 
138  if (!(valueP <= 1.0 && valueP>= -1.0))
139  {
140  if (valueP > 1.0) valueP = 1.0;
141  else valueP = -1.0;
142  }
143  return valueP;
144 }
double G4double
Definition: G4Types.hh:76
void G4NuclearAbrasionGeometry::SetPeripheralThreshold ( G4double  rth1)

Definition at line 108 of file G4NuclearAbrasionGeometry.cc.

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

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