384   if (verboseLevel > 3)
 
  385     G4cout << 
"Calling SampleSecondaries() of G4MuElecInelasticModel" << 
G4endl;
 
  395   G4String nameLocal2 = particleName ;
 
  402     nameLocal2 = 
"proton" ;
 
  405   std::map< G4String,G4double,std::less<G4String> >::iterator pos1;
 
  406   pos1 = lowEnergyLimit.find(nameLocal2);
 
  408   if (pos1 != lowEnergyLimit.end())
 
  410     lowLim = pos1->second;
 
  413   std::map< G4String,G4double,std::less<G4String> >::iterator pos2;
 
  414   pos2 = highEnergyLimit.find(nameLocal2);
 
  416   if (pos2 != highEnergyLimit.end())
 
  418     highLim = pos2->second;
 
  421   if (k >= lowLim && k < highLim)
 
  424     G4double totalEnergy = ekin + particleMass;
 
  425     G4double pSquare = ekin * (totalEnergy + particleMass);
 
  426     G4double totalMomentum = std::sqrt(pSquare);
 
  428     G4int Shell = RandomSelect(k,nameLocal2);
 
  430     if (verboseLevel > 3)
 
  433     G4cout << 
"Shell: " << Shell << 
", energy: " << bindingEnergy/
eV << 
G4endl;
 
  438     G4int secNumberInit = 0;  
 
  439     G4int secNumberFinal = 0; 
 
  441     if(fAtomDeexcitation && Shell > 2) {
 
  455       secNumberInit = fvect->size();
 
  457       secNumberFinal = fvect->size();
 
  460     G4double secondaryKinetic = RandomizeEjectedElectronEnergy(PartDef,k,Shell);
 
  462     if (verboseLevel > 3)
 
  465     G4cout << 
"Shell: " << Shell << 
" Kin. energy (eV)=" << k/
eV  
  466     << 
" Sec. energy (eV)=" << secondaryKinetic/
eV << 
G4endl;
 
  471     RandomizeEjectedElectronDirection(PartDef, k, secondaryKinetic, cosTheta, phi);
 
  473     G4double sinTheta = std::sqrt(1.-cosTheta*cosTheta);
 
  474     G4double dirX = sinTheta*std::cos(phi);
 
  475     G4double dirY = sinTheta*std::sin(phi);
 
  478     deltaDirection.rotateUz(primaryDirection);
 
  484       G4double finalPx = totalMomentum*primaryDirection.
x() - deltaTotalMomentum*deltaDirection.x();
 
  485       G4double finalPy = totalMomentum*primaryDirection.
y() - deltaTotalMomentum*deltaDirection.y();
 
  486       G4double finalPz = totalMomentum*primaryDirection.
z() - deltaTotalMomentum*deltaDirection.z();
 
  487       G4double finalMomentum = std::sqrt(finalPx*finalPx + finalPy*finalPy + finalPz*finalPz);
 
  488       finalPx /= finalMomentum;
 
  489       finalPy /= finalMomentum;
 
  490       finalPz /= finalMomentum;
 
  493       direction.
set(finalPx,finalPy,finalPz);
 
  501     for (
G4int j=secNumberInit; j < secNumberFinal; j++) {
 
  502       deexSecEnergy = deexSecEnergy + (*fvect)[j]->GetKineticEnergy();} 
 
  508     fvect->push_back(dp);
 
void set(double x, double y, double z)
 
G4double GetKineticEnergy() const 
 
G4ParticleChangeForGamma * fParticleChangeForGamma
 
static G4Proton * ProtonDefinition()
 
G4ParticleDefinition * GetDefinition() const 
 
void ProposeMomentumDirection(G4double Px, G4double Py, G4double Pz)
 
const G4String & GetParticleName() const 
 
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
 
virtual const G4AtomicShell * GetAtomicShell(G4int Z, G4AtomicShellEnumerator shell)=0
 
G4GLOB_DLL std::ostream G4cout
 
const G4ThreeVector & GetMomentumDirection() const 
 
static constexpr double eV
 
G4double GetPDGMass() const 
 
static G4Electron * Electron()
 
void SetProposedKineticEnergy(G4double proposedKinEnergy)
 
G4double Energy(G4int level)
 
void GenerateParticles(std::vector< G4DynamicParticle * > *secVect, const G4AtomicShell *, G4int Z, G4int coupleIndex)
 
G4double bindingEnergy(G4int A, G4int Z)