397 G4cout <<
"Calling SampleSecondaries() of G4MicroElecInelasticModel" <<
G4endl;
407 G4String nameLocal2 = particleName ;
414 nameLocal2 =
"proton" ;
417 std::map< G4String,G4double,std::less<G4String> >::iterator pos1;
422 lowLim = pos1->second;
425 std::map< G4String,G4double,std::less<G4String> >::iterator pos2;
430 highLim = pos2->second;
433 if (k >= lowLim && k < highLim)
436 G4double totalEnergy = ekin + particleMass;
437 G4double pSquare = ekin * (totalEnergy + particleMass);
438 G4double totalMomentum = std::sqrt(pSquare);
446 G4cout <<
"Shell: " << Shell <<
", energy: " << bindingEnergy/
eV <<
G4endl;
451 G4int secNumberInit = 0;
452 G4int secNumberFinal = 0;
470 secNumberInit = fvect->size();
472 secNumberFinal = fvect->size();
480 G4cout <<
"Shell: " << Shell <<
" Kin. energy (eV)=" << k/
eV 481 <<
" Sec. energy (eV)=" << secondaryKinetic/
eV <<
G4endl;
493 G4double finalPx = totalMomentum*primaryDirection.
x() - deltaTotalMomentum*deltaDirection.
x();
494 G4double finalPy = totalMomentum*primaryDirection.
y() - deltaTotalMomentum*deltaDirection.
y();
495 G4double finalPz = totalMomentum*primaryDirection.
z() - deltaTotalMomentum*deltaDirection.
z();
496 G4double finalMomentum = std::sqrt(finalPx*finalPx + finalPy*finalPy + finalPz*finalPz);
497 finalPx /= finalMomentum;
498 finalPy /= finalMomentum;
499 finalPz /= finalMomentum;
502 direction.
set(finalPx,finalPy,finalPz);
510 for (
G4int j=secNumberInit; j < secNumberFinal; j++) {
511 deexSecEnergy = deexSecEnergy + (*fvect)[j]->GetKineticEnergy();}
517 fvect->push_back(dp);
void set(double x, double y, double z)
const G4Material * GetMaterial() const
G4MicroElecSiStructure SiStructure
static G4Proton * ProtonDefinition()
G4VEmAngularDistribution * GetAngularDistribution()
G4double Energy(G4int level)
virtual G4ThreeVector & SampleDirectionForShell(const G4DynamicParticle *dp, G4double finalTotalEnergy, G4int Z, G4int shellID, const G4Material *)
virtual const G4AtomicShell * GetAtomicShell(G4int Z, G4AtomicShellEnumerator shell)=0
G4double GetKineticEnergy() const
G4double RandomizeEjectedElectronEnergy(G4ParticleDefinition *aParticleDefinition, G4double incomingParticleEnergy, G4int shell)
const G4String & GetParticleName() const
G4GLOB_DLL std::ostream G4cout
G4int RandomSelect(G4double energy, const G4String &particle)
G4ParticleChangeForGamma * fParticleChangeForGamma
std::map< G4String, G4double, std::less< G4String > > highEnergyLimit
const G4ThreeVector & GetMomentumDirection() const
void GenerateParticles(std::vector< G4DynamicParticle *> *secVect, const G4AtomicShell *, G4int Z, G4int coupleIndex)
G4double GetPDGMass() const
static G4Electron * Electron()
G4ParticleDefinition * GetDefinition() const
G4VAtomDeexcitation * fAtomDeexcitation
std::map< G4String, G4double, std::less< G4String > > lowEnergyLimit