#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 () |
Definition at line 67 of file G4NuclearAbrasionGeometry.hh.
Definition at line 73 of file G4NuclearAbrasionGeometry.cc.
References G4WilsonRadius::GetWilsonRadius().
Referenced by GetExcitationEnergyOfTarget().
00075 { 00076 // 00077 // 00078 // Initialise variables for interaction geometry. 00079 // 00080 G4WilsonRadius aR; 00081 AP = AP1; 00082 AT = AT1; 00083 rP = aR.GetWilsonRadius(AP); 00084 rT = aR.GetWilsonRadius(AT); 00085 r = r1; 00086 n = rP / (rP + rT); 00087 b = r / (rP + rT); 00088 m = rT / rP; 00089 Q = (1.0 - b)/n; 00090 S = Q * Q; 00091 T = S * Q; 00092 R = std::sqrt(m*n); 00093 U = 1.0/m - 2.0; 00094 // 00095 // 00096 // Initialise the threshold radius-ratio at which interactions are considered 00097 // peripheral or central. 00098 // 00099 rth = 2.0/3.0; 00100 B = 10.0 * MeV; 00101 }
G4NuclearAbrasionGeometry::~G4NuclearAbrasionGeometry | ( | ) |
G4double G4NuclearAbrasionGeometry::F | ( | ) |
Definition at line 147 of file G4NuclearAbrasionGeometry.cc.
Referenced by G4WilsonAbrasionModel::ApplyYourself(), GetExcitationEnergyOfProjectile(), and GetExcitationEnergyOfTarget().
00148 { 00149 // 00150 // 00151 // Initialise the value for F, then determine the actual value depending upon 00152 // whether the projectile is larger or smaller than the target and these radii 00153 // in relation to the impact parameter. 00154 // 00155 G4double valueF = 0.0; 00156 00157 if (rT > rP) 00158 { 00159 if (rT-rP<=r && r<=rT+rP) valueF = 0.75*R*S - 0.125*(3.0*R-1.0)*T; 00160 else valueF = 1.0; 00161 } 00162 else 00163 { 00164 if (rP-rT<=r && r<=rP+rT) valueF = 0.75*R*S - 0.125*(3.0*std::sqrt(n/m)- 00165 (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; 00166 else valueF = (1.0-std::pow(1.0-m*m,3.0/2.0))*std::sqrt(1.0-b*b/n/n); 00167 } 00168 00169 if (!(valueF <= 1.0 && valueF>= 0.0)) 00170 { 00171 if (valueF > 1.0) valueF = 1.0; 00172 else valueF = 0.0; 00173 } 00174 return valueF; 00175 }
G4double G4NuclearAbrasionGeometry::GetExcitationEnergyOfProjectile | ( | ) |
Definition at line 178 of file G4NuclearAbrasionGeometry.cc.
References F(), P(), and G4INCL::Math::pi.
Referenced by G4WilsonAbrasionModel::ApplyYourself().
00179 { 00180 G4double F1 = F(); 00181 G4double P1 = P(); 00182 G4double Es = 0.0; 00183 00184 Es = 0.95 * MeV * 4.0 * pi * rP*rP/fermi/fermi * 00185 (1.0+P1-std::pow(1.0-F1,2.0/3.0)); 00186 // if (rT < rP && r < rP-rT) 00187 if ((r-rP)/rT < rth) 00188 { 00189 G4double omega = 0.0; 00190 if (AP < 12.0) omega = 1500.0; 00191 else if (AP <= 16.0) omega = 1500.0 - 320.0*(AP-12.0); 00192 Es *= 1.0 + F1*(5.0+omega*F1*F1); 00193 } 00194 00195 if (Es < 0.0) 00196 Es = 0.0; 00197 else if (Es > B * AP) 00198 Es = B * AP; 00199 return Es; 00200 }
G4double G4NuclearAbrasionGeometry::GetExcitationEnergyOfTarget | ( | ) |
Definition at line 203 of file G4NuclearAbrasionGeometry.cc.
References F(), G4NuclearAbrasionGeometry(), P(), and G4INCL::Math::pi.
Referenced by G4WilsonAbrasionModel::ApplyYourself().
00204 { 00205 // This member function declares a new G4NuclearAbrasionGeometry object 00206 // but with the projectile and target exchanged to determine the values 00207 // for F and P. Determination of the excess surface area and excitation 00208 // energy is as above. 00209 00210 G4NuclearAbrasionGeometry* revAbrasionGeometry = 00211 new G4NuclearAbrasionGeometry(AT, AP, r); 00212 G4double F1 = revAbrasionGeometry->F(); 00213 G4double P1 = revAbrasionGeometry->P(); 00214 G4double Es = 0.0; 00215 00216 Es = 0.95 * MeV * 4.0 * pi * rT*rT/fermi/fermi * 00217 (1.0+P1-std::pow(1.0-F1,2.0/3.0)); 00218 00219 // if (rP < rT && r < rT-rP) 00220 if ((r-rT)/rP < rth) { 00221 G4double omega = 0.0; 00222 if (AT < 12.0) omega = 1500.0; 00223 else if (AT <= 16.0) omega = 1500.0 - 320.0*(AT-12.0); 00224 Es *= 1.0 + F1*(5.0+omega*F1*F1); 00225 } 00226 00227 if (Es < 0.0) 00228 Es = 0.0; 00229 else if (Es > B * AT) 00230 Es = B * AT; 00231 00232 delete revAbrasionGeometry; 00233 00234 return Es; 00235 }
G4double G4NuclearAbrasionGeometry::GetPeripheralThreshold | ( | ) |
G4double G4NuclearAbrasionGeometry::P | ( | ) |
Definition at line 116 of file G4NuclearAbrasionGeometry.cc.
Referenced by GetExcitationEnergyOfProjectile(), and GetExcitationEnergyOfTarget().
00117 { 00118 // 00119 // 00120 // Initialise the value for P, then determine the actual value depending upon 00121 // whether the projectile is larger or smaller than the target and these radii 00122 // in relation to the impact parameter. 00123 // 00124 G4double valueP = 0.0; 00125 00126 if (rT > rP) 00127 { 00128 if (rT-rP<=r && r<=rT+rP) valueP = 0.125*R*U*S - 0.125*(0.5*R*U+1.0)*T; 00129 else valueP = -1.0; 00130 } 00131 else 00132 { 00133 if (rP-rT<=r && r<=rP+rT) valueP = 0.125*R*U*S - 0.125*(0.5*std::sqrt(n/m)*U- 00134 (std::sqrt(1.0-m*m)/n - 1.0)*std::sqrt((2.0-m)/std::pow(m,5.0)))*T; 00135 else valueP = (std::sqrt(1.0-m*m)/n-1.0)*std::sqrt(1.0-b*b/n/n); 00136 } 00137 00138 if (!(valueP <= 1.0 && valueP>= -1.0)) 00139 { 00140 if (valueP > 1.0) valueP = 1.0; 00141 else valueP = -1.0; 00142 } 00143 return valueP; 00144 }
void G4NuclearAbrasionGeometry::SetPeripheralThreshold | ( | G4double | ) |