#include <G4SauterGavrilaAngularDistribution.hh>
|
| G4SauterGavrilaAngularDistribution () |
|
| ~G4SauterGavrilaAngularDistribution () override |
|
G4ThreeVector & | SampleDirection (const G4DynamicParticle *dp, G4double e=0.0, G4int shellId=0, const G4Material *mat=0) final |
|
void | PrintGeneratorInformation () const |
|
G4SauterGavrilaAngularDistribution & | operator= (const G4SauterGavrilaAngularDistribution &right)=delete |
|
| G4SauterGavrilaAngularDistribution (const G4SauterGavrilaAngularDistribution &)=delete |
|
| G4VEmAngularDistribution (const G4String &name) |
|
virtual | ~G4VEmAngularDistribution () |
|
virtual G4ThreeVector & | SampleDirection (const G4DynamicParticle *dp, G4double finalTotalEnergy, G4int Z, const G4Material *)=0 |
|
virtual G4ThreeVector & | SampleDirectionForShell (const G4DynamicParticle *dp, G4double finalTotalEnergy, G4int Z, G4int shellID, const G4Material *) |
|
virtual void | SamplePairDirections (const G4DynamicParticle *dp, G4double elecKinEnergy, G4double posiKinEnergy, G4ThreeVector &dirElectron, G4ThreeVector &dirPositron, G4int Z=0, const G4Material *mat=nullptr) |
|
const G4String & | GetName () const |
|
G4VEmAngularDistribution & | operator= (const G4VEmAngularDistribution &right)=delete |
|
| G4VEmAngularDistribution (const G4VEmAngularDistribution &)=delete |
|
◆ G4SauterGavrilaAngularDistribution() [1/2]
G4SauterGavrilaAngularDistribution::G4SauterGavrilaAngularDistribution |
( |
| ) |
|
|
explicit |
◆ ~G4SauterGavrilaAngularDistribution()
G4SauterGavrilaAngularDistribution::~G4SauterGavrilaAngularDistribution |
( |
| ) |
|
|
override |
◆ G4SauterGavrilaAngularDistribution() [2/2]
◆ operator=()
◆ PrintGeneratorInformation()
void G4SauterGavrilaAngularDistribution::PrintGeneratorInformation |
( |
| ) |
const |
◆ SampleDirection()
Implements G4VEmAngularDistribution.
Definition at line 55 of file G4SauterGavrilaAngularDistribution.cc.
57{
58 static const G4double emin = 1*CLHEP::eV;
59 static const G4double emax = 100*CLHEP::MeV;
60
62 if (energy > emax) {
64 } else {
65
66
67
69
70
71
72
75 G4double beta = std::sqrt(tau*(tau + 2.0))/gamma;
76
77
78
80 G4double a1 = 0.5*beta*gamma*tau*(gamma-2.0);
82
83
85
88
89
90
91
92 do{
94 tsam = 2.0*ac * (2.0*rand + a2*std::sqrt(rand)) / (a2*a2 - 4.0*rand);
95 gtr = (2.0 - tsam) * (a1 + 1.0/(ac+tsam));
96
98
99 costheta = 1.0 - tsam;
100
101 G4double sint = std::sqrt(tsam*(2.0 - tsam));
103
106 }
108}
void set(double x, double y, double z)
Hep3Vector & rotateUz(const Hep3Vector &)
const G4ThreeVector & GetMomentumDirection() const
G4double GetKineticEnergy() const
G4ThreeVector fLocalDirection
G4double energy(const ThreeVector &p, const G4double m)
The documentation for this class was generated from the following files: