82 G4ThreeVector direction (sinteta*cosphi, sinteta*sinphi, costeta);
87 G4double b = 0.5*gamma*(gamma-1.)*(gamma-2);
90 if (gamma < 2.) grejsup = gamma*gamma*(1.+b-beta*b);
91 else grejsup = gamma*gamma*(1.+b+beta*b);
94 costeta = (rndm+
beta)/(rndm*beta+1.);
95 term = 1.-beta*costeta;
96 greject = (1.-costeta*costeta)*(1.+b*term)/(term*term);
100 sinteta = std::sqrt(1.-costeta*costeta);
101 G4ThreeVector photoelectrondirection (sinteta*cosphi, sinteta*sinphi, costeta);
102 photoelectrondirection.
rotateUz(direction);
103 return photoelectrondirection;
112 G4cout <<
"Re-implementation of the photolectric angular distribution" <<
G4endl;
113 G4cout <<
"developed my M. Maire for the Standard EM Physics G4PhotoElectricEffect" <<
G4endl;
114 G4cout <<
"It computes the theta distribution of the emitted electron, with respect to the" <<
G4endl;
115 G4cout <<
"incident Gamma, using the Sauter-Gavrila distribution for the K-shell\n" <<
G4endl;
Hep3Vector & rotateUz(const Hep3Vector &)
void PrintGeneratorInformation() const
static constexpr double electron_mass_c2
~G4RDPhotoElectricAngularGeneratorSauterGavrila()
static constexpr double twopi
G4RDPhotoElectricAngularGeneratorSauterGavrila(const G4String &name)
G4ThreeVector GetPhotoElectronDirection(const G4ThreeVector &direction, const G4double kineticEnergy, const G4ThreeVector &polarization, const G4int shellId) const
G4GLOB_DLL std::ostream G4cout