#include <G4Generator2BN.hh>
Definition at line 62 of file G4Generator2BN.hh.
◆ G4Generator2BN() [1/2]
G4Generator2BN::G4Generator2BN |
( |
const G4String & |
name = "" | ) |
|
◆ ~G4Generator2BN()
G4Generator2BN::~G4Generator2BN |
( |
| ) |
|
|
virtual |
◆ G4Generator2BN() [2/2]
◆ Calculatedsdkdt()
Definition at line 270 of file G4Generator2BN.cc.
298 G4double LL = std::log((E*E0-1+p*p0)/(E*E0-1-p*p0));
299 G4double delta0 = E0 - p0*std::cos(theta);
302 G4double sintheta2 = std::sin(theta)*std::sin(theta);
308 G4double delta04 = delta02* delta02;
309 G4double Q = std::sqrt(p02+k2-2*k*p0*std::cos(theta));
311 G4double epsilonQ = std::log((Q+p)/(Q-p));
314 dsdkdt_value = Z2 * (r02/(8*
pi*137)) * (1/k) * (p/p0) *
315 ( (8 * (sintheta2*(2*E02+1))/(p02*delta04)) -
316 ((2*(5*E02+2*E*E0+3))/(p02 * delta02)) -
317 ((2*(p02-k2))/((Q2*delta02))) +
318 ((4*E)/(p02*delta0)) +
320 ((4*E0*sintheta2*(3*k-p02*
E))/(p02*delta04)) +
321 ((4*E02*(E02+E2))/(p02*delta02)) +
322 ((2-2*(7*E02-3*E*E0+E2))/(p02*delta02)) +
323 (2*k*(E02+E*E0-1))/((p02*delta0))
325 ((4*epsilon)/(p*delta0)) +
327 (4/delta02-(6*k/delta0)-(2*k*(p02-k2))/(Q2*delta0))
332 dsdkdt_value = dsdkdt_value*std::sin(theta);
static const G4int LL[nN]
double epsilon(double density, double temperature)
◆ CalculateFkt()
Definition at line 263 of file G4Generator2BN.cc.
266 Fkt_value =
A*std::pow(k,-
b)*theta/(1+
c*theta*theta);
double A(double temperature)
◆ ConstructMajorantSurface()
void G4Generator2BN::ConstructMajorantSurface |
( |
| ) |
|
Definition at line 336 of file G4Generator2BN.cc.
349 G4cout <<
"**** Constructing Majorant Surface for 2BN Distribution ****" <<
G4endl;
358 Ek = std::pow(10.,fraction);
365 for(theta = 0.; theta <
pi; theta = theta +
dtheta){
376 if(Ek <
kmin || thetamax == 0){
380 c = 1/(thetamax*thetamax);
381 A = 2*std::sqrt(c)*dsmax/(std::pow(
kmin,-
b));
397 k = std::pow(10.,fractionLocal)*
kmin;
399 for(theta = 0.; theta <
pi; theta = theta +
dtheta){
403 Vds = Vds + ds*dk*dt;
405 Vdf = Vdf + df*dk*dt;
408 if(df != 0.) ratio = df/ds;
411 if(ratio < ratmin && ratio != 0.){
419 Atab[i] = A/ratmin * 1.04;
G4double CalculateFkt(G4double k, G4double theta, G4double A, G4double c) const
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
G4double Calculatedsdkdt(G4double kout, G4double theta, G4double Eel) const
static G4double Atab[320]
static G4double ctab[320]
◆ GetGammaCutValue()
G4double G4Generator2BN::GetGammaCutValue |
( |
| ) |
|
|
inline |
◆ GetInterpolationThetaIncrement()
G4double G4Generator2BN::GetInterpolationThetaIncrement |
( |
| ) |
|
|
inline |
◆ operator=()
◆ PrintGeneratorInformation()
void G4Generator2BN::PrintGeneratorInformation |
( |
| ) |
const |
Definition at line 428 of file G4Generator2BN.cc.
431 G4cout <<
"Bremsstrahlung Angular Generator is 2BN Generator from 2BN Koch & Motz distribution (Rev Mod Phys 31(4), 920 (1959))" <<
G4endl;
G4GLOB_DLL std::ostream G4cout
◆ SampleDirection()
Implements G4VEmAngularDistribution.
Definition at line 184 of file G4Generator2BN.cc.
208 else if(index < 0) { index = 0; }
228 cte2 = 2*c/std::log(1+c*
pi2);
231 t = std::sqrt((
G4Exp(2*c*y/cte2)-1)/c);
237 dmax = A*std::pow(k,-
b)*t/(1+c*t*t);
241 if(ds > dmax &&
nwarn >= 20) {
243 G4cout <<
"### WARNING in G4Generator2BN: Ekin(MeV)= " << Ek/
MeV 244 <<
" D(Ekin,k)/Dmax-1= " << (ds/dmax - 1)
245 <<
" results are not reliable!" 248 G4cout <<
" WARNING in G4Generator2BN is closed" <<
G4endl;
void set(double x, double y, double z)
G4double GetTotalEnergy() const
G4double GetKineticEnergy() const
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
Hep3Vector & rotateUz(const Hep3Vector &)
static const double twopi
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4Generator2BS fGenerator2BS
const G4ThreeVector & GetMomentumDirection() const
G4double Calculatedsdkdt(G4double kout, G4double theta, G4double Eel) const
static G4double Atab[320]
G4ThreeVector fLocalDirection
static G4double ctab[320]
virtual G4ThreeVector & SampleDirection(const G4DynamicParticle *dp, G4double out_energy, G4int Z, const G4Material *mat=0)
◆ SetGammaCutValue()
void G4Generator2BN::SetGammaCutValue |
( |
G4double |
cutValue | ) |
|
|
inline |
◆ SetInterpolationThetaIncrement()
void G4Generator2BN::SetInterpolationThetaIncrement |
( |
G4double |
increment | ) |
|
|
inline |
◆ Atab
◆ ctab
◆ dtheta
◆ Ekmin
◆ fGenerator2BS
◆ index_max
G4int G4Generator2BN::index_max |
|
private |
◆ index_min
G4int G4Generator2BN::index_min |
|
private |
◆ kcut
◆ kmin
◆ nwarn
G4int G4Generator2BN::nwarn |
|
private |
The documentation for this class was generated from the following files: