Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Attributes
G4KleinNishinaModel Class Reference

#include <G4KleinNishinaModel.hh>

Inheritance diagram for G4KleinNishinaModel:
G4VEmModel

Public Member Functions

 G4KleinNishinaModel (const G4String &nam="KleinNishina")
 
virtual ~G4KleinNishinaModel ()
 
virtual void Initialise (const G4ParticleDefinition *, const G4DataVector &)
 
virtual void InitialiseLocal (const G4ParticleDefinition *, G4VEmModel *masterModel)
 
virtual G4double ComputeCrossSectionPerAtom (const G4ParticleDefinition *, G4double kinEnergy, G4double Z, G4double A, G4double cut, G4double emax)
 
virtual void SampleSecondaries (std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
 
- Public Member Functions inherited from G4VEmModel
 G4VEmModel (const G4String &nam)
 
virtual ~G4VEmModel ()
 
virtual void InitialiseForMaterial (const G4ParticleDefinition *, const G4Material *)
 
virtual void InitialiseForElement (const G4ParticleDefinition *, G4int Z)
 
virtual G4double ComputeDEDXPerVolume (const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
 
virtual G4double CrossSectionPerVolume (const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
virtual G4double ChargeSquareRatio (const G4Track &)
 
virtual G4double GetChargeSquareRatio (const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
 
virtual G4double GetParticleCharge (const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
 
virtual void StartTracking (G4Track *)
 
virtual void CorrectionsAlongStep (const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double &eloss, G4double &niel, G4double length)
 
virtual G4double Value (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy)
 
virtual G4double MinPrimaryEnergy (const G4Material *, const G4ParticleDefinition *, G4double cut=0.0)
 
virtual G4double MinEnergyCut (const G4ParticleDefinition *, const G4MaterialCutsCouple *)
 
virtual void SetupForMaterial (const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
 
virtual void DefineForRegion (const G4Region *)
 
void InitialiseElementSelectors (const G4ParticleDefinition *, const G4DataVector &)
 
std::vector
< G4EmElementSelector * > * 
GetElementSelectors ()
 
void SetElementSelectors (std::vector< G4EmElementSelector * > *)
 
G4double ComputeDEDX (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=DBL_MAX)
 
G4double CrossSection (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4double ComputeMeanFreePath (const G4ParticleDefinition *, G4double kineticEnergy, const G4Material *, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4double ComputeCrossSectionPerAtom (const G4ParticleDefinition *, const G4Element *, G4double kinEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4int SelectIsotopeNumber (const G4Element *)
 
const G4ElementSelectRandomAtom (const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
const G4ElementSelectRandomAtom (const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
 
G4int SelectRandomAtomNumber (const G4Material *)
 
void SetParticleChange (G4VParticleChange *, G4VEmFluctuationModel *f=0)
 
void SetCrossSectionTable (G4PhysicsTable *, G4bool isLocal)
 
G4ElementDataGetElementData ()
 
G4PhysicsTableGetCrossSectionTable ()
 
G4VEmFluctuationModelGetModelOfFluctuations ()
 
G4VEmAngularDistributionGetAngularDistribution ()
 
void SetAngularDistribution (G4VEmAngularDistribution *)
 
G4double HighEnergyLimit () const
 
G4double LowEnergyLimit () const
 
G4double HighEnergyActivationLimit () const
 
G4double LowEnergyActivationLimit () const
 
G4double PolarAngleLimit () const
 
G4double SecondaryThreshold () const
 
G4bool LPMFlag () const
 
G4bool DeexcitationFlag () const
 
G4bool ForceBuildTableFlag () const
 
G4bool UseAngularGeneratorFlag () const
 
void SetAngularGeneratorFlag (G4bool)
 
void SetHighEnergyLimit (G4double)
 
void SetLowEnergyLimit (G4double)
 
void SetActivationHighEnergyLimit (G4double)
 
void SetActivationLowEnergyLimit (G4double)
 
G4bool IsActive (G4double kinEnergy)
 
void SetPolarAngleLimit (G4double)
 
void SetSecondaryThreshold (G4double)
 
void SetLPMFlag (G4bool val)
 
void SetDeexcitationFlag (G4bool val)
 
void SetForceBuildTable (G4bool val)
 
void SetMasterThread (G4bool val)
 
G4bool IsMaster () const
 
G4double MaxSecondaryKinEnergy (const G4DynamicParticle *dynParticle)
 
const G4StringGetName () const
 
void SetCurrentCouple (const G4MaterialCutsCouple *)
 
const G4ElementGetCurrentElement () const
 

Protected Attributes

G4ParticleDefinitiontheGamma
 
G4ParticleDefinitiontheElectron
 
G4ParticleChangeForGammafParticleChange
 
G4double lowestGammaEnergy
 
- Protected Attributes inherited from G4VEmModel
G4ElementDatafElementData
 
G4VParticleChangepParticleChange
 
G4PhysicsTablexSectionTable
 
const std::vector< G4double > * theDensityFactor
 
const std::vector< G4int > * theDensityIdx
 
size_t idxTable
 

Additional Inherited Members

- Protected Member Functions inherited from G4VEmModel
G4ParticleChangeForLossGetParticleChangeForLoss ()
 
G4ParticleChangeForGammaGetParticleChangeForGamma ()
 
virtual G4double MaxSecondaryEnergy (const G4ParticleDefinition *, G4double kineticEnergy)
 
const G4MaterialCutsCoupleCurrentCouple () const
 
void SetCurrentElement (const G4Element *)
 

Detailed Description

Definition at line 59 of file G4KleinNishinaModel.hh.

Constructor & Destructor Documentation

G4KleinNishinaModel::G4KleinNishinaModel ( const G4String nam = "KleinNishina")

Definition at line 72 of file G4KleinNishinaModel.cc.

References G4Electron::Electron(), python.hepunit::eV, fParticleChange, G4Gamma::Gamma(), lowestGammaEnergy, G4VEmModel::SetDeexcitationFlag(), theElectron, and theGamma.

73  : G4VEmModel(nam)
74 {
77  lowestGammaEnergy = 1.0*eV;
78  limitFactor = 4;
79  fProbabilities.resize(9,0.0);
80  SetDeexcitationFlag(true);
81  fParticleChange = 0;
82  fAtomDeexcitation = 0;
83 }
G4ParticleChangeForGamma * fParticleChange
G4VEmModel(const G4String &nam)
Definition: G4VEmModel.cc:65
static G4Gamma * Gamma()
Definition: G4Gamma.cc:86
G4ParticleDefinition * theElectron
G4ParticleDefinition * theGamma
static G4Electron * Electron()
Definition: G4Electron.cc:94
void SetDeexcitationFlag(G4bool val)
Definition: G4VEmModel.hh:739
G4KleinNishinaModel::~G4KleinNishinaModel ( )
virtual

Definition at line 87 of file G4KleinNishinaModel.cc.

88 {}

Member Function Documentation

G4double G4KleinNishinaModel::ComputeCrossSectionPerAtom ( const G4ParticleDefinition ,
G4double  kinEnergy,
G4double  Z,
G4double  A,
G4double  cut,
G4double  emax 
)
virtual

Reimplemented from G4VEmModel.

Definition at line 111 of file G4KleinNishinaModel.cc.

References test::a, test::b, test::c, plottest35::c1, python.hepunit::electron_mass_c2, G4Exp(), G4Log(), python.hepunit::keV, and G4INCL::Math::max().

115 {
116  G4double xSection = 0.0 ;
117  if ( Z < 0.9999 || GammaEnergy < 0.1*keV) { return xSection; }
118 
119  static const G4double a = 20.0 , b = 230.0 , c = 440.0;
120 
121  G4double p1Z = Z*(d1 + e1*Z + f1*Z*Z), p2Z = Z*(d2 + e2*Z + f2*Z*Z),
122  p3Z = Z*(d3 + e3*Z + f3*Z*Z), p4Z = Z*(d4 + e4*Z + f4*Z*Z);
123 
124  G4double T0 = 15.0*keV;
125  if (Z < 1.5) { T0 = 40.0*keV; }
126 
127  G4double X = max(GammaEnergy, T0) / electron_mass_c2;
128  xSection = p1Z*G4Log(1.+2.*X)/X
129  + (p2Z + p3Z*X + p4Z*X*X)/(1. + a*X + b*X*X + c*X*X*X);
130 
131  // modification for low energy. (special case for Hydrogen)
132  if (GammaEnergy < T0) {
133  G4double dT0 = keV;
134  X = (T0+dT0) / electron_mass_c2 ;
135  G4double sigma = p1Z*G4Log(1.+2*X)/X
136  + (p2Z + p3Z*X + p4Z*X*X)/(1. + a*X + b*X*X + c*X*X*X);
137  G4double c1 = -T0*(sigma-xSection)/(xSection*dT0);
138  G4double c2 = 0.150;
139  if (Z > 1.5) { c2 = 0.375-0.0556*G4Log(Z); }
140  G4double y = G4Log(GammaEnergy/T0);
141  xSection *= G4Exp(-y*(c1+c2*y));
142  }
143 
144  if(xSection < 0.0) { xSection = 0.0; }
145  // G4cout << "e= " << GammaEnergy << " Z= " << Z
146  // << " cross= " << xSection << G4endl;
147  return xSection;
148 }
float electron_mass_c2
Definition: hepunit.py:274
G4double G4Log(G4double x)
Definition: G4Log.hh:227
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:180
T max(const T t1, const T t2)
brief Return the largest of the two arguments
double G4double
Definition: G4Types.hh:76
tuple c1
Definition: plottest35.py:14
void G4KleinNishinaModel::Initialise ( const G4ParticleDefinition p,
const G4DataVector cuts 
)
virtual

Implements G4VEmModel.

Definition at line 92 of file G4KleinNishinaModel.cc.

References G4LossTableManager::AtomDeexcitation(), fParticleChange, G4VEmModel::GetParticleChangeForGamma(), G4VEmModel::InitialiseElementSelectors(), G4LossTableManager::Instance(), and G4VEmModel::IsMaster().

94 {
95  fAtomDeexcitation = G4LossTableManager::Instance()->AtomDeexcitation();
96  if(IsMaster()) { InitialiseElementSelectors(p, cuts); }
98 }
static G4LossTableManager * Instance()
void InitialiseElementSelectors(const G4ParticleDefinition *, const G4DataVector &)
Definition: G4VEmModel.cc:135
G4ParticleChangeForGamma * fParticleChange
G4bool IsMaster() const
Definition: G4VEmModel.hh:676
G4VAtomDeexcitation * AtomDeexcitation()
G4ParticleChangeForGamma * GetParticleChangeForGamma()
Definition: G4VEmModel.cc:121
void G4KleinNishinaModel::InitialiseLocal ( const G4ParticleDefinition ,
G4VEmModel masterModel 
)
virtual

Reimplemented from G4VEmModel.

Definition at line 102 of file G4KleinNishinaModel.cc.

References G4VEmModel::GetElementSelectors(), and G4VEmModel::SetElementSelectors().

104 {
106 }
std::vector< G4EmElementSelector * > * GetElementSelectors()
Definition: G4VEmModel.hh:760
void SetElementSelectors(std::vector< G4EmElementSelector * > *)
Definition: G4VEmModel.hh:768
void G4KleinNishinaModel::SampleSecondaries ( std::vector< G4DynamicParticle * > *  fvect,
const G4MaterialCutsCouple couple,
const G4DynamicParticle aDynamicGamma,
G4double  tmin,
G4double  maxEnergy 
)
virtual

Implements G4VEmModel.

Definition at line 152 of file G4KleinNishinaModel.cc.

References G4InuclSpecialFunctions::bindingEnergy(), CLHEP::HepLorentzVector::boost(), CLHEP::HepLorentzVector::boostVector(), G4VAtomDeexcitation::CheckDeexcitationActiveRegion(), CLHEP::HepLorentzVector::e(), python.hepunit::electron_mass_c2, energy(), python.hepunit::eV, fParticleChange, fStopAndKill, G4cout, G4endl, G4Exp(), G4Log(), G4lrint(), G4UniformRand, G4VAtomDeexcitation::GenerateParticles(), G4VAtomDeexcitation::GetAtomicShell(), G4Element::GetAtomicShell(), G4MaterialCutsCouple::GetIndex(), G4DynamicParticle::GetKineticEnergy(), G4DynamicParticle::GetMomentumDirection(), G4Element::GetNbOfAtomicShells(), G4Element::GetNbOfShellElectrons(), G4Element::GetZ(), python.hepunit::keV, lowestGammaEnergy, G4VParticleChange::ProposeLocalEnergyDeposit(), G4ParticleChangeForGamma::ProposeMomentumDirection(), G4VParticleChange::ProposeTrackStatus(), CLHEP::Hep3Vector::rotateUz(), G4VEmModel::SelectRandomAtom(), CLHEP::HepLorentzVector::set(), G4ParticleChangeForGamma::SetProposedKineticEnergy(), theElectron, theGamma, python.hepunit::twopi, CLHEP::Hep3Vector::unit(), test::v, CLHEP::HepLorentzVector::vect(), test::x, CLHEP::Hep3Vector::x(), CLHEP::Hep3Vector::y(), and CLHEP::Hep3Vector::z().

158 {
159  // primary gamma
160  G4double energy = aDynamicGamma->GetKineticEnergy();
161  G4ThreeVector direction = aDynamicGamma->GetMomentumDirection();
162 
163  // select atom
164  const G4Element* elm = SelectRandomAtom(couple, theGamma, energy);
165 
166  // select shell first
167  G4int nShells = elm->GetNbOfAtomicShells();
168  if(nShells > (G4int)fProbabilities.size()) { fProbabilities.resize(nShells); }
169  G4double totprob = 0.0;
170  G4int i;
171  for(i=0; i<nShells; ++i) {
172  //G4double bindingEnergy = elm->GetAtomicShell(i);
173  totprob += elm->GetNbOfShellElectrons(i);
174  //totprob += elm->GetNbOfShellElectrons(i)/(bindingEnergy*bindingEnergy);
175  fProbabilities[i] = totprob;
176  }
177  //if(totprob == 0.0) { return; }
178 
179  // Loop on sampling
180  // const G4int nlooplim = 100;
181  //G4int nloop = 0;
182 
183  G4double bindingEnergy, ePotEnergy, eKinEnergy;
184  G4double gamEnergy0, gamEnergy1;
185 
186  //static const G4double eminus2 = 1.0 - G4Exp(-2.0);
187 
188  do {
189  //++nloop;
190  G4double xprob = totprob*G4UniformRand();
191 
192  // select shell
193  for(i=0; i<nShells; ++i) { if(xprob <= fProbabilities[i]) { break; } }
194 
195  bindingEnergy = elm->GetAtomicShell(i);
196  // ePotEnergy = bindingEnergy;
197  // gamEnergy0 = energy;
198  lv1.set(0.0,0.0,energy,energy);
199 
200  //G4cout << "nShells= " << nShells << " i= " << i
201  // << " Egamma= " << energy << " Ebind= " << bindingEnergy
202  // << " Elim= " << limitEnergy
203  // << G4endl;
204 
205  // for rest frame of the electron
207  eKinEnergy = bindingEnergy*x;
208  ePotEnergy = bindingEnergy*(1.0 + x);
209 
210  // for rest frame of the electron
211  G4double eTotMomentum = sqrt(eKinEnergy*(eKinEnergy + 2*electron_mass_c2));
212  G4double phi = G4UniformRand()*twopi;
213  G4double costet = 2*G4UniformRand() - 1;
214  G4double sintet = sqrt((1 - costet)*(1 + costet));
215  lv2.set(eTotMomentum*sintet*cos(phi),eTotMomentum*sintet*sin(phi),
216  eTotMomentum*costet,eKinEnergy + electron_mass_c2);
217  bst = lv2.boostVector();
218  lv1.boost(-bst);
219 
220  gamEnergy0 = lv1.e();
221 
222  // In the rest frame of the electron
223  // The scattered gamma energy is sampled according to Klein-Nishina formula
224  // The random number techniques of Butcher & Messel are used
225  // (Nuc Phys 20(1960),15).
226  G4double E0_m = gamEnergy0/electron_mass_c2;
227 
228  //
229  // sample the energy rate of the scattered gamma
230  //
231 
232  G4double epsilon, epsilonsq, onecost, sint2, greject ;
233 
234  G4double eps0 = 1./(1 + 2*E0_m);
235  G4double epsilon0sq = eps0*eps0;
236  G4double alpha1 = - G4Log(eps0);
237  G4double alpha2 = 0.5*(1 - epsilon0sq);
238 
239  do {
240  if ( alpha1/(alpha1+alpha2) > G4UniformRand() ) {
241  epsilon = G4Exp(-alpha1*G4UniformRand()); // epsilon0**r
242  epsilonsq = epsilon*epsilon;
243 
244  } else {
245  epsilonsq = epsilon0sq + (1.- epsilon0sq)*G4UniformRand();
246  epsilon = sqrt(epsilonsq);
247  }
248 
249  onecost = (1.- epsilon)/(epsilon*E0_m);
250  sint2 = onecost*(2.-onecost);
251  greject = 1. - epsilon*sint2/(1.+ epsilonsq);
252 
253  } while (greject < G4UniformRand());
254  gamEnergy1 = epsilon*gamEnergy0;
255 
256  // before scattering total 4-momentum in e- system
257  lv2.set(0.0,0.0,0.0,electron_mass_c2);
258  lv2 += lv1;
259 
260  //
261  // scattered gamma angles. ( Z - axis along the parent gamma)
262  //
263  if(sint2 < 0.0) { sint2 = 0.0; }
264  costet = 1. - onecost;
265  sintet = sqrt(sint2);
266  phi = twopi * G4UniformRand();
267 
268  // e- recoil
269  //
270  // in rest frame of the electron
271  G4ThreeVector gamDir = lv1.vect().unit();
272  G4ThreeVector v = G4ThreeVector(sintet*cos(phi),sintet*sin(phi),costet);
273  v.rotateUz(gamDir);
274  lv1.set(gamEnergy1*v.x(),gamEnergy1*v.y(),gamEnergy1*v.z(),gamEnergy1);
275  lv2 -= lv1;
276  //G4cout<<"Egam= "<<lv1.e()<<" Ee= "<< lv2.e()-electron_mass_c2 << G4endl;
277  lv2.boost(bst);
278  eKinEnergy = lv2.e() - electron_mass_c2 - ePotEnergy;
279  //G4cout << "eKinEnergy= " << eKinEnergy << G4endl;
280 
281  } while ( eKinEnergy < 0.0 );
282 
283  //
284  // update G4VParticleChange for the scattered gamma
285  //
286 
287  lv1.boost(bst);
288  gamEnergy1 = lv1.e();
289  if(gamEnergy1 > lowestGammaEnergy) {
290  G4ThreeVector gamDirection1 = lv1.vect().unit();
291  gamDirection1.rotateUz(direction);
293  } else {
295  gamEnergy1 = 0.0;
296  }
298 
299  //
300  // kinematic of the scattered electron
301  //
302 
303  if(eKinEnergy > lowestGammaEnergy) {
304  G4ThreeVector eDirection = lv2.vect().unit();
305  eDirection.rotateUz(direction);
306  G4DynamicParticle* dp =
307  new G4DynamicParticle(theElectron,eDirection,eKinEnergy);
308  fvect->push_back(dp);
309  } else { eKinEnergy = 0.0; }
310 
311  G4double edep = energy - gamEnergy1 - eKinEnergy;
312  G4double esec = 0.0;
313 
314  // sample deexcitation
315  //
316  if(fAtomDeexcitation) {
317  G4int index = couple->GetIndex();
318  if(fAtomDeexcitation->CheckDeexcitationActiveRegion(index)) {
319  G4int Z = G4lrint(elm->GetZ());
321  const G4AtomicShell* shell = fAtomDeexcitation->GetAtomicShell(Z, as);
322  size_t nbefore = fvect->size();
323  fAtomDeexcitation->GenerateParticles(fvect, shell, Z, index);
324  size_t nafter = fvect->size();
325  if(nafter > nbefore) {
326  for (size_t j=nbefore; j<nafter; ++j) {
327  G4double e = ((*fvect)[j])->GetKineticEnergy();
328  if(esec + e > edep) {
329  /*
330  G4cout << "### G4KleinNishinaModel Edep(eV)= " << edep/eV
331  << " Esec(eV)= " << esec/eV
332  << " E["<< j << "](eV)= " << e/eV
333  << " N= " << nafter
334  << " Z= " << Z << " shell= " << i
335  << " Ebind(keV)= " << bindingEnergy/keV
336  << " Eshell(keV)= " << shell->BindingEnergy()/keV
337  << G4endl;
338  */
339  for (size_t jj=j; jj<nafter; ++jj) { delete (*fvect)[jj]; }
340  for (size_t jj=j; jj<nafter; ++jj) { fvect->pop_back(); }
341  break;
342  }
343  esec += e;
344  }
345  }
346  edep -= esec;
347  }
348  }
349  if(fabs(energy - gamEnergy1 - eKinEnergy - esec - edep) > eV) {
350  G4cout << "### G4KleinNishinaModel dE(eV)= "
351  << (energy - gamEnergy1 - eKinEnergy - esec - edep)/eV
352  << " shell= " << i
353  << " E(keV)= " << energy/keV
354  << " Ebind(keV)= " << bindingEnergy/keV
355  << " Eg(keV)= " << gamEnergy1/keV
356  << " Ee(keV)= " << eKinEnergy/keV
357  << " Esec(keV)= " << esec/keV
358  << " Edep(keV)= " << edep/keV
359  << G4endl;
360  }
361  // energy balance
362  if(edep > 0.0) {
364  }
365 }
Hep3Vector boostVector() const
G4bool CheckDeexcitationActiveRegion(G4int coupleIndex)
G4int GetNbOfAtomicShells() const
Definition: G4Element.hh:146
G4double GetKineticEnergy() const
CLHEP::Hep3Vector G4ThreeVector
double x() const
G4ParticleChangeForGamma * fParticleChange
G4double GetZ() const
Definition: G4Element.hh:131
G4int GetNbOfShellElectrons(G4int index) const
Definition: G4Element.cc:380
int G4int
Definition: G4Types.hh:78
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
double z() const
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
virtual const G4AtomicShell * GetAtomicShell(G4int Z, G4AtomicShellEnumerator shell)=0
double precision function energy(A, Z)
Definition: dpm25nuc6.f:4106
Hep3Vector vect() const
#define G4UniformRand()
Definition: Randomize.hh:87
G4GLOB_DLL std::ostream G4cout
const G4ThreeVector & GetMomentumDirection() const
HepLorentzVector & boost(double, double, double)
Hep3Vector & rotateUz(const Hep3Vector &)
Definition: ThreeVector.cc:72
float electron_mass_c2
Definition: hepunit.py:274
G4double G4Log(G4double x)
Definition: G4Log.hh:227
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:180
void set(double x, double y, double z, double t)
G4ParticleDefinition * theElectron
int G4lrint(double ad)
Definition: templates.hh:163
Hep3Vector unit() const
double y() const
G4ParticleDefinition * theGamma
void SetProposedKineticEnergy(G4double proposedKinEnergy)
#define G4endl
Definition: G4ios.hh:61
G4double GetAtomicShell(G4int index) const
Definition: G4Element.cc:365
double G4double
Definition: G4Types.hh:76
void ProposeTrackStatus(G4TrackStatus status)
void GenerateParticles(std::vector< G4DynamicParticle * > *secVect, const G4AtomicShell *, G4int Z, G4int coupleIndex)
G4double bindingEnergy(G4int A, G4int Z)
G4AtomicShellEnumerator
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)
Definition: G4VEmModel.hh:510

Field Documentation

G4ParticleChangeForGamma* G4KleinNishinaModel::fParticleChange
protected

Definition at line 91 of file G4KleinNishinaModel.hh.

Referenced by G4KleinNishinaModel(), Initialise(), and SampleSecondaries().

G4double G4KleinNishinaModel::lowestGammaEnergy
protected

Definition at line 92 of file G4KleinNishinaModel.hh.

Referenced by G4KleinNishinaModel(), and SampleSecondaries().

G4ParticleDefinition* G4KleinNishinaModel::theElectron
protected

Definition at line 90 of file G4KleinNishinaModel.hh.

Referenced by G4KleinNishinaModel(), and SampleSecondaries().

G4ParticleDefinition* G4KleinNishinaModel::theGamma
protected

Definition at line 89 of file G4KleinNishinaModel.hh.

Referenced by G4KleinNishinaModel(), and SampleSecondaries().


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