492 UpdateDEDXCache(particle, material, cutEnergy);
494 LossTableList::iterator iter = dedxCacheIter;
496 if(iter != lossTableList.end()) {
498 G4double transitionEnergy = dedxCacheTransitionEnergy;
500 if(transitionEnergy > kineticEnergy) {
502 dEdx = (*iter) -> GetDEDX(particle, material, kineticEnergy);
508 dEdx -= dEdxDeltaRays;
511 G4double massRatio = dedxCacheGenIonMassRatio;
516 G4double scaledKineticEnergy = kineticEnergy * massRatio;
517 G4double scaledTransitionEnergy = transitionEnergy * massRatio;
521 if(scaledTransitionEnergy >= lowEnergyLimit) {
524 material, genericIon,
525 scaledKineticEnergy, cutEnergy);
527 dEdx *= chargeSquare;
529 dEdx += corrections -> ComputeIonCorrections(particle,
530 material, kineticEnergy);
532 G4double factor = 1.0 + dedxCacheTransitionFactor /
543 if(particle != genericIon) {
546 massRatio = genericIonPDGMass / particle -> GetPDGMass();
549 G4double scaledKineticEnergy = kineticEnergy * massRatio;
552 if(scaledKineticEnergy < lowEnergyLimit) {
554 material, genericIon,
555 scaledKineticEnergy, cutEnergy);
557 dEdx *= chargeSquare;
561 material, genericIon,
562 lowEnergyLimit, cutEnergy);
565 material, genericIon,
566 lowEnergyLimit, cutEnergy);
568 if(particle != genericIon) {
569 G4double chargeSquareLowEnergyLimit =
571 lowEnergyLimit / massRatio);
573 dEdxLimitParam *= chargeSquareLowEnergyLimit;
574 dEdxLimitBetheBloch *= chargeSquareLowEnergyLimit;
576 dEdxLimitBetheBloch +=
577 corrections -> ComputeIonCorrections(particle,
578 material, lowEnergyLimit / massRatio);
581 G4double factor = (1.0 + (dEdxLimitParam/dEdxLimitBetheBloch - 1.0)
582 * lowEnergyLimit / scaledKineticEnergy);
585 material, genericIon,
586 scaledKineticEnergy, cutEnergy);
588 dEdx *= chargeSquare;
590 if(particle != genericIon) {
591 dEdx += corrections -> ComputeIonCorrections(particle,
592 material, kineticEnergy);
600 if (dEdx < 0.0) dEdx = 0.0;
virtual G4double GetChargeSquareRatio(const G4ParticleDefinition *, const G4Material *, G4double)
G4double LowEnergyLimit() const
virtual G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double, G4double)
G4double DeltaRayMeanEnergyTransferRate(const G4Material *, const G4ParticleDefinition *, G4double, G4double)