package mmc; /** * class contains functions necessary for calculation of e+e- pair production losses */ public class EpairContinuous extends Epairproduction{ private Integral I; //----------------------------------------------------------------------------------------------------// /** * initializes an integral class separate from that in Propagate */ public EpairContinuous(Epairproduction cros){ super(cros); I = new Integral(iromb, imaxs, iprec); } //----------------------------------------------------------------------------------------------------// private boolean reverse=false; /** * pair production energy losses - interface to Integral */ public double function(double v){ if(reverse) v=1-v; return v*epair.ePair(v, cros.component); } //----------------------------------------------------------------------------------------------------// /** * contribution of pair production to -dE/dx */ public double dEdx(){ if(cros.ce<=0) return 0; if(jt) return Math.max(J.interpolate(p.e), 0); int i; double sum; sum=0; for(i=0; ivUp) r1=vUp; if(r11-r1) r2=1-r1; sum+=I.integrateOpened(1-vUp, r2, this)+I.integrateWithLog(r2, 1-r1, this); reverse=false; } else sum+=I.integrateWithLog(vMin, vUp, this); } return cros.ce*p.e*sum; } //----------------------------------------------------------------------------------------------------// public Interpolate J; public boolean jt=false; /** * 1d parametrization - interface to Interpolate */ public double functionInt(double e){ p.setEnergy(e); return dEdx(); } }