180   if(nShells > (
G4int)fProbabilities.size()) { fProbabilities.resize(nShells); }
 
  183   for(i=0; i<nShells; ++i) {
 
  187     fProbabilities[i] = totprob; 
 
  208     for(i=0; i<nShells; ++i) { 
if(xprob <= fProbabilities[i]) { 
break; } }
 
  211     lv1.
set(0.0,0.0,energy,energy);
 
  219     eKinEnergy = bindingEnergy*
x;
 
  220     ePotEnergy = bindingEnergy*(1.0 + 
x);
 
  226     G4double sintet = sqrt((1 - costet)*(1 + costet));
 
  227     lv2.
set(eTotMomentum*sintet*cos(phi),eTotMomentum*sintet*sin(phi),
 
  232     gamEnergy0 = lv1.
e();
 
  250     G4double alpha2     = alpha1 + 0.5*(1 - epsilon0sq);
 
  255       if(nloop > nlooplim) { 
return; }
 
  260       if ( alpha1 > alpha2*rndm[0] ) {
 
  261         epsilon   = 
G4Exp(-alpha1*rndm[1]);   
 
  265         epsilonsq = epsilon0sq + (1.- epsilon0sq)*rndm[1];
 
  266         epsilon   = sqrt(epsilonsq);
 
  269       onecost = (1.- 
epsilon)/(epsilon*E0_m);
 
  270       sint2   = onecost*(2.-onecost);
 
  271       greject = 1. - epsilon*sint2/(1.+ epsilonsq);
 
  274     } 
while (greject < rndm[2]);
 
  275     gamEnergy1 = epsilon*gamEnergy0;
 
  284     if(sint2 < 0.0) { sint2 = 0.0; }
 
  285     costet = 1. - onecost; 
 
  286     sintet = sqrt(sint2);
 
  287     phi  = twopi * rndmEngineMod->
flat();
 
  295     lv1.
set(gamEnergy1*v.
x(),gamEnergy1*v.
y(),gamEnergy1*v.
z(),gamEnergy1);
 
  304   } 
while ( eKinEnergy < 0.0 );
 
  311   gamEnergy1 = lv1.
e();
 
  331     fvect->push_back(dp);
 
  332   } 
else { eKinEnergy = 0.0; }
 
  334   G4double edep = energy - gamEnergy1 - eKinEnergy;
 
  339   if(fAtomDeexcitation) {
 
  345       G4int nbefore = fvect->size();
 
  347       G4int nafter = fvect->size();
 
  349       for (
G4int j=nbefore; j<nafter; ++j) {
 
  350         G4double e = ((*fvect)[j])->GetKineticEnergy();
 
  351         if(esec + e > edep) {
 
  354           ((*fvect)[j])->SetKineticEnergy(e);
 
  367           for (
G4int jj=nafter-1; jj>j; --jj) { 
 
  378   if(std::abs(energy - gamEnergy1 - eKinEnergy - esec - edep) > 
eV) {
 
  379     G4cout << 
"### G4KleinNishinaModel dE(eV)= "  
  380            << (energy - gamEnergy1 - eKinEnergy - esec - edep)/
eV  
  382            << 
"  E(keV)= " << energy/
keV  
  383            << 
"  Ebind(keV)= " << bindingEnergy/
keV  
  384            << 
"  Eg(keV)= " << gamEnergy1/
keV  
  385            << 
"  Ee(keV)= " << eKinEnergy/
keV  
  386            << 
"  Esec(keV)= " << esec/
keV  
  387            << 
"  Edep(keV)= " << edep/
keV  
Hep3Vector boostVector() const 
 
G4double LowEnergyLimit() const 
 
G4bool CheckDeexcitationActiveRegion(G4int coupleIndex)
 
G4int GetNbOfAtomicShells() const 
 
G4double GetKineticEnergy() const 
 
CLHEP::Hep3Vector G4ThreeVector
 
G4ParticleChangeForGamma * fParticleChange
 
static const G4int nlooplim
 
G4int GetNbOfShellElectrons(G4int index) const 
 
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
 
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
 
static constexpr double twopi
 
virtual const G4AtomicShell * GetAtomicShell(G4int Z, G4AtomicShellEnumerator shell)=0
 
G4GLOB_DLL std::ostream G4cout
 
const G4ThreeVector & GetMomentumDirection() const 
 
HepLorentzVector & boost(double, double, double)
 
Hep3Vector & rotateUz(const Hep3Vector &)
 
static constexpr double eV
 
G4double lowestSecondaryEnergy
 
G4double G4Log(G4double x)
 
G4double G4Exp(G4double initial_x)
Exponential Function double precision. 
 
void set(double x, double y, double z, double t)
 
G4ParticleDefinition * theElectron
 
G4double energy(const ThreeVector &p, const G4double m)
 
G4ParticleDefinition * theGamma
 
void SetProposedKineticEnergy(G4double proposedKinEnergy)
 
G4double GetAtomicShell(G4int index) const 
 
void ProposeTrackStatus(G4TrackStatus status)
 
void GenerateParticles(std::vector< G4DynamicParticle * > *secVect, const G4AtomicShell *, G4int Z, G4int coupleIndex)
 
G4double bindingEnergy(G4int A, G4int Z)
 
virtual void flatArray(const int size, double *vect)=0
 
static constexpr double keV
 
double epsilon(double density, double temperature)
 
const G4Element * SelectRandomAtom(const G4MaterialCutsCouple *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy=0.0, G4double maxEnergy=DBL_MAX)