#include <G4RayleighAngularGenerator.hh>
|
| G4RayleighAngularGenerator () |
|
virtual | ~G4RayleighAngularGenerator () |
|
G4ThreeVector & | SampleDirection (const G4DynamicParticle *dp, G4double out_energy, G4int Z, const G4Material *mat=nullptr) override |
|
G4RayleighAngularGenerator & | operator= (const G4RayleighAngularGenerator &right)=delete |
|
| G4RayleighAngularGenerator (const G4RayleighAngularGenerator &)=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) |
|
virtual void | PrintGeneratorInformation () const |
|
const G4String & | GetName () const |
|
G4VEmAngularDistribution & | operator= (const G4VEmAngularDistribution &right)=delete |
|
| G4VEmAngularDistribution (const G4VEmAngularDistribution &)=delete |
|
◆ G4RayleighAngularGenerator() [1/2]
G4RayleighAngularGenerator::G4RayleighAngularGenerator |
( |
| ) |
|
|
explicit |
◆ ~G4RayleighAngularGenerator()
G4RayleighAngularGenerator::~G4RayleighAngularGenerator |
( |
| ) |
|
|
virtual |
◆ G4RayleighAngularGenerator() [2/2]
◆ operator=()
◆ SampleDirection()
Implements G4VEmAngularDistribution.
Definition at line 78 of file G4RayleighAngularGenerator.cc.
81{
84
91
94 G4double w0 = (x < numlim) ? n0*x*(1.0 - 0.5*(n0 - 1.0)*x*(1.0 - (n0 - 2.0)*x/3.))
96
97 x = 2.*xx*b1;
98 G4double w1 = (x < numlim) ? n1*x*(1.0 - 0.5*(n1 - 1.0)*x*(1.0 - (n1 - 2.0)*x/3.))
100
101 x = 2.*xx*b2;
102 G4double w2 = (x < numlim) ? n2*x*(1.0 - 0.5*(n2 - 1.0)*x*(1.0 - (n2 - 2.0)*x/3.))
104
108
110 do {
114
116 if(x > x0) {
117 x -= x0;
118 if(x <= x1 ) {
119 w = w1;
121 b = b1;
122 } else {
123 w = w2;
125 b = b2;
126 }
127 }
129
130
132 if(y < numlim) { x = y*
n*( 1. + 0.5*(
n + 1.)*y*(1. - (n + 2.)*y/3.)); }
134 cost = 1.0 - x/(b*xx);
135 }
while (2*
G4UniformRand() > 1.0 + cost*cost || cost < -1.0);
136
138 G4double sint = sqrt((1. - cost)*(1.0 + cost));
141
143}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
void set(double x, double y, double z)
Hep3Vector & rotateUz(const Hep3Vector &)
const G4ThreeVector & GetMomentumDirection() const
G4double GetKineticEnergy() const
G4ThreeVector fLocalDirection
The documentation for this class was generated from the following files: