Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4DNABornAngle Class Reference

#include <G4DNABornAngle.hh>

Inheritance diagram for G4DNABornAngle:
Collaboration diagram for G4DNABornAngle:

Public Member Functions

 G4DNABornAngle (const G4String &name="")
 
virtual ~G4DNABornAngle ()
 
virtual G4ThreeVectorSampleDirection (const G4DynamicParticle *dp, G4double kinEnergyFinal, G4int Z, const G4Material *mat=0)
 
virtual G4ThreeVectorSampleDirectionForShell (const G4DynamicParticle *dp, G4double kinEnergyFinal, G4int Z, G4int shellIdx, const G4Material *mat=0)
 
void PrintGeneratorInformation () const
 
- Public Member Functions inherited from G4VEmAngularDistribution
 G4VEmAngularDistribution (const G4String &name)
 
virtual ~G4VEmAngularDistribution ()
 
const G4StringGetName () const
 

Additional Inherited Members

- Protected Attributes inherited from G4VEmAngularDistribution
G4ThreeVector fLocalDirection
 

Detailed Description

Definition at line 57 of file G4DNABornAngle.hh.

Constructor & Destructor Documentation

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

Definition at line 59 of file G4DNABornAngle.cc.

60  : G4VEmAngularDistribution("deltaBorn")
61 {
62  fElectron = G4Electron::Electron();
63 }
G4VEmAngularDistribution(const G4String &name)
static G4Electron * Electron()
Definition: G4Electron.cc:94

Here is the call graph for this function:

G4DNABornAngle::~G4DNABornAngle ( )
virtual

Definition at line 65 of file G4DNABornAngle.cc.

66 {}

Member Function Documentation

void G4DNABornAngle::PrintGeneratorInformation ( ) const

Definition at line 121 of file G4DNABornAngle.cc.

122 {}
G4ThreeVector & G4DNABornAngle::SampleDirection ( const G4DynamicParticle dp,
G4double  kinEnergyFinal,
G4int  Z,
const G4Material mat = 0 
)
virtual

Implements G4VEmAngularDistribution.

Definition at line 114 of file G4DNABornAngle.cc.

117 {
118  return SampleDirectionForShell(dp, secEkin, Z, 0, mat);
119 }
virtual G4ThreeVector & SampleDirectionForShell(const G4DynamicParticle *dp, G4double kinEnergyFinal, G4int Z, G4int shellIdx, const G4Material *mat=0)

Here is the call graph for this function:

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

Reimplemented from G4VEmAngularDistribution.

Definition at line 69 of file G4DNABornAngle.cc.

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

Here is the call graph for this function:

Here is the caller graph for this function:


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