70 G4double a, c, cosTheta, delta, cofA, signc = 1.;
82 delta = std::sqrt(a*a+4.);
88 cosTheta = cofA - 1./cofA;
90 G4double tau = eTkin/electron_mass_c2;
91 G4double beta = std::sqrt(tau*(tau + 2.))/(tau + 1.);
93 cosTheta = (cosTheta + beta)/(1 + cosTheta*beta);
95 G4double sinTheta = std::sqrt((1 - cosTheta)*(1 + cosTheta));
98 fLocalDirection.set(sinTheta*std::cos(phi), sinTheta*std::sin(phi),cosTheta);
109 G4double c, cosTheta, delta, cofA, signc = 1.,
a;
120 delta = std::sqrt(
a*
a+4.);
126 cosTheta = cofA - 1./cofA;
128 gamma = 1. + eTkin/electron_mass_c2;
129 beta = std::sqrt(1. - 1./gamma/gamma);
131 cosTheta = (cosTheta + beta)/(1 + cosTheta*beta);
133 theta = std::acos(cosTheta);
135 if( theta < 0. ) theta = 0.;
136 if( theta >
pi ) theta =
pi;
145 G4cout <<
"Angular Generator based on classical formula from" <<
G4endl;
146 G4cout <<
"J.D. Jackson, Classical Electrodynamics, Wiley, New York 1975"
G4double GetKineticEnergy() const
CLHEP::Hep3Vector G4ThreeVector
G4GLOB_DLL std::ostream G4cout
const G4ThreeVector & GetMomentumDirection() const
virtual ~G4DipBustGenerator()
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4DipBustGenerator(const G4String &name="")
void PrintGeneratorInformation() const
G4double PolarAngle(const G4double initial_energy, const G4double final_energy, const G4int Z)
G4ThreeVector fLocalDirection
virtual G4ThreeVector & SampleDirection(const G4DynamicParticle *dp, G4double out_energy, G4int Z, const G4Material *mat=0)