69 G4double beta = std::sqrt(tau*(tau + 2.0))*invgamma;
70 G4double b = 0.5*tau*(tau*tau - 1.0);
71 G4double invgamma2 = invgamma*invgamma;
73 G4double rndm,term,greject,grejsup,costeta,sint2;
74 if (tau < 1.) { grejsup = (1.+b-beta*b)/invgamma2; }
75 else { grejsup = (1.+b+beta*b)/invgamma2; }
79 costeta = (rndm + beta)/(rndm*beta + 1);
80 term = invgamma2/(1 + beta*rndm);
81 sint2 = (1 - costeta)*(1 + costeta);
82 greject = sint2*(1 + b*term)/(term*term);
98 G4cout <<
"Non-polarized photoelectric effect angular generator." <<
G4endl;
99 G4cout <<
"The Sauter-Gavrila distribution for the K-shell is used."<<
G4endl;
100 G4cout <<
"Originally developed by M.Maire for Geant3"
G4DLLIMPORT std::ostream G4cout
void set(double x, double y, double z)
Hep3Vector & rotateUz(const Hep3Vector &)
const G4ThreeVector & GetMomentumDirection() const
G4double GetKineticEnergy() const
virtual G4ThreeVector & SampleDirection(const G4DynamicParticle *dp, G4double e=0.0, G4int shellId=0, const G4Material *mat=0)
void PrintGeneratorInformation() const
virtual ~G4SauterGavrilaAngularDistribution()
G4SauterGavrilaAngularDistribution()
G4ThreeVector fLocalDirection