Geant4-11
Public Member Functions | Protected Attributes | Private Attributes
G4DNABornAngle Class Reference

#include <G4DNABornAngle.hh>

Inheritance diagram for G4DNABornAngle:
G4VEmAngularDistribution

Public Member Functions

 G4DNABornAngle (const G4DNABornAngle &)=delete
 
 G4DNABornAngle (const G4String &name="")
 
const G4StringGetName () const
 
G4DNABornAngleoperator= (const G4DNABornAngle &right)=delete
 
void PrintGeneratorInformation () const override
 
G4ThreeVectorSampleDirection (const G4DynamicParticle *dp, G4double kinEnergyFinal, G4int Z, const G4Material *mat=nullptr) override
 
G4ThreeVectorSampleDirectionForShell (const G4DynamicParticle *dp, G4double kinEnergyFinal, G4int Z, G4int shellIdx, const G4Material *mat=nullptr) override
 
virtual void SamplePairDirections (const G4DynamicParticle *dp, G4double elecKinEnergy, G4double posiKinEnergy, G4ThreeVector &dirElectron, G4ThreeVector &dirPositron, G4int Z=0, const G4Material *mat=nullptr)
 
 ~G4DNABornAngle () override
 

Protected Attributes

G4ThreeVector fLocalDirection
 
G4bool fPolarisation
 

Private Attributes

const G4ParticleDefinitionfElectron
 
G4String fName
 

Detailed Description

Definition at line 56 of file G4DNABornAngle.hh.

Constructor & Destructor Documentation

◆ G4DNABornAngle() [1/2]

G4DNABornAngle::G4DNABornAngle ( const G4String name = "")

Definition at line 58 of file G4DNABornAngle.cc.

59 : G4VEmAngularDistribution("deltaBorn")
60{
62}
const G4ParticleDefinition * fElectron
static G4Electron * Electron()
Definition: G4Electron.cc:93
G4VEmAngularDistribution(const G4String &name)

References G4Electron::Electron(), and fElectron.

◆ ~G4DNABornAngle()

G4DNABornAngle::~G4DNABornAngle ( )
override

Definition at line 64 of file G4DNABornAngle.cc.

65{}

◆ G4DNABornAngle() [2/2]

G4DNABornAngle::G4DNABornAngle ( const G4DNABornAngle )
delete

Member Function Documentation

◆ GetName()

const G4String & G4VEmAngularDistribution::GetName ( ) const
inlineinherited

Definition at line 111 of file G4VEmAngularDistribution.hh.

112{
113 return fName;
114}

References G4VEmAngularDistribution::fName.

◆ operator=()

G4DNABornAngle & G4DNABornAngle::operator= ( const G4DNABornAngle right)
delete

◆ PrintGeneratorInformation()

void G4DNABornAngle::PrintGeneratorInformation ( ) const
overridevirtual

Reimplemented from G4VEmAngularDistribution.

Definition at line 120 of file G4DNABornAngle.cc.

121{}

◆ SampleDirection()

G4ThreeVector & G4DNABornAngle::SampleDirection ( const G4DynamicParticle dp,
G4double  kinEnergyFinal,
G4int  Z,
const G4Material mat = nullptr 
)
overridevirtual

Implements G4VEmAngularDistribution.

Definition at line 113 of file G4DNABornAngle.cc.

116{
117 return SampleDirectionForShell(dp, secEkin, Z, 0, mat);
118}
const G4int Z[17]
G4ThreeVector & SampleDirectionForShell(const G4DynamicParticle *dp, G4double kinEnergyFinal, G4int Z, G4int shellIdx, const G4Material *mat=nullptr) override

References SampleDirectionForShell(), and Z.

◆ SampleDirectionForShell()

G4ThreeVector & G4DNABornAngle::SampleDirectionForShell ( const G4DynamicParticle dp,
G4double  kinEnergyFinal,
G4int  Z,
G4int  shellIdx,
const G4Material mat = nullptr 
)
overridevirtual

Reimplemented from G4VEmAngularDistribution.

Definition at line 68 of file G4DNABornAngle.cc.

72{
73 G4double k = dp->GetKineticEnergy();
74 G4double cosTheta = 1.0;
75 if (dp->GetDefinition() == fElectron)
76 {
77 if (secKinetic < 50.*eV) cosTheta = (2.*G4UniformRand())-1.;
78 else if (secKinetic <= 200.*eV)
79 {
80 if (G4UniformRand() <= 0.1) cosTheta = (2.*G4UniformRand())-1.;
81 else cosTheta = G4UniformRand()*(std::sqrt(2.)/2);
82 }
83 else
84 {
85 G4double sin2O =
86 (1.-secKinetic/k)/(1.+secKinetic/(2.*electron_mass_c2));
87 cosTheta = std::sqrt(1.-sin2O);
88 }
89 }
90 else
91 {
92 G4double mass = dp->GetDefinition()->GetPDGMass();
93 G4double maxSecKinetic = 4.* (electron_mass_c2 / mass) * k;
94
95 // cosTheta = std::sqrt(secKinetic / maxSecKinetic);
96
97 // Restriction below 100 eV from Emfietzoglou (2000)
98
99 if (secKinetic>100*eV) cosTheta = std::sqrt(secKinetic / maxSecKinetic);
100 else cosTheta = (2.*G4UniformRand())-1.;
101 }
102
103 G4double sint = sqrt((1.0 - cosTheta)*(1.0 + cosTheta));
105
106 fLocalDirection.set(sint*cos(phi), sint*sin(phi), cosTheta);
108
109 return fLocalDirection;
110}
static constexpr double twopi
Definition: G4SIunits.hh:56
static constexpr double eV
Definition: G4SIunits.hh:201
double G4double
Definition: G4Types.hh:83
#define G4UniformRand()
Definition: Randomize.hh:52
void set(double x, double y, double z)
Hep3Vector & rotateUz(const Hep3Vector &)
Definition: ThreeVector.cc:33
const G4ThreeVector & GetMomentumDirection() const
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
float electron_mass_c2
Definition: hepunit.py:273

References source.hepunit::electron_mass_c2, eV, fElectron, G4VEmAngularDistribution::fLocalDirection, G4UniformRand, G4DynamicParticle::GetDefinition(), G4DynamicParticle::GetKineticEnergy(), G4DynamicParticle::GetMomentumDirection(), G4ParticleDefinition::GetPDGMass(), CLHEP::Hep3Vector::rotateUz(), CLHEP::Hep3Vector::set(), and twopi.

Referenced by SampleDirection().

◆ SamplePairDirections()

void G4VEmAngularDistribution::SamplePairDirections ( const G4DynamicParticle dp,
G4double  elecKinEnergy,
G4double  posiKinEnergy,
G4ThreeVector dirElectron,
G4ThreeVector dirPositron,
G4int  Z = 0,
const G4Material mat = nullptr 
)
virtualinherited

Field Documentation

◆ fElectron

const G4ParticleDefinition* G4DNABornAngle::fElectron
private

Definition at line 83 of file G4DNABornAngle.hh.

Referenced by G4DNABornAngle(), and SampleDirectionForShell().

◆ fLocalDirection

G4ThreeVector G4VEmAngularDistribution::fLocalDirection
protectedinherited

◆ fName

G4String G4VEmAngularDistribution::fName
privateinherited

Definition at line 108 of file G4VEmAngularDistribution.hh.

Referenced by G4VEmAngularDistribution::GetName().

◆ fPolarisation

G4bool G4VEmAngularDistribution::fPolarisation
protectedinherited

The documentation for this class was generated from the following files: