package mmc; /** * class contains functions necessary for calculation of ionization losses */ public class Ionizationloss extends CrossSections{ public IonizContinuous c; public IonizStochastic s; public double vMax, vUp, vMin; protected double beta, gamma; protected Ionizationloss ioniz; //----------------------------------------------------------------------------------------------------// /** * creates internal references to p and m, to be called from subclasses */ public Ionizationloss(Ionizationloss cros){ p=cros.p; m=cros.m; this.cros=cros.cros; ioniz=cros; } //----------------------------------------------------------------------------------------------------// /** * initializes subclasses and creates internal references to p and m */ public Ionizationloss(CrossSections cros){ super(cros); ioniz=this; c = new IonizContinuous(this); s = new IonizStochastic(this); } //----------------------------------------------------------------------------------------------------// /** * call before using the ionization functions, but after setting the particle energy */ public void setEnergy(){ double aux; beta=p.p/p.e; gamma=p.e/p.m; vMin=(1.e-6*m.I)/p.e; aux=Me/p.m; vMax=2*Me*(gamma*gamma-1)/((1+2*gamma*aux+aux*aux)*p.e); vMax=Math.min(vMax, 1-p.m/p.e); if(vMax