85 G4double beta = std::sqrt((gamma - 1)*(gamma + 1))/gamma;
86 G4double b = 0.5*gamma*(gamma - 1)*(gamma - 2);
89 if (gamma < 2.) grejsup = gamma*gamma*(1.+b-beta*b);
90 else grejsup = gamma*gamma*(1.+b+beta*b);
93 costeta = (rndm+
beta)/(rndm*beta+1.);
94 term = 1.-beta*costeta;
95 greject = (1.-costeta*costeta)*(1.+b*term)/(term*term);
98 sinteta = std::sqrt((1 - costeta)*(1 + costeta));
108 G4cout <<
"Re-implementation of the photolectric angular distribution" <<
G4endl;
109 G4cout <<
"developed my M. Maire for the Standard EM Physics G4PhotoElectricEffect" <<
G4endl;
110 G4cout <<
"It computes the theta distribution of the emitted electron, with respect to the" <<
G4endl;
111 G4cout <<
"incident Gamma, using the Sauter-Gavrila distribution for the K-shell\n" <<
G4endl;
void set(double x, double y, double z)
void PrintGeneratorInformation() const
const G4ThreeVector & GetMomentumDirection() const
Hep3Vector & rotateUz(const Hep3Vector &)
virtual G4ThreeVector & SampleDirection(const G4DynamicParticle *dp, G4double e=0.0, G4int shellId=0, const G4Material *mat=0)
static constexpr double electron_mass_c2
static constexpr double twopi
G4ThreeVector fLocalDirection
G4double GetKineticEnergy() const
G4GLOB_DLL std::ostream G4cout
G4PhotoElectricAngularGeneratorSauterGavrila()
~G4PhotoElectricAngularGeneratorSauterGavrila()