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