package sansmodels; public class Sphere extends SANSModel{ private double scale, radius, deltaRho, background; //Default constructor public Sphere() { scale = 1.0; radius = 60.0; deltaRho = 1.e-6; background = 0.00; setNumberOfParameters(4); String[] parameters = {"Scale", "Radius (A)", "Contrast (A-2)", "Background (cm-1)"}; setParametersText(parameters); } public Sphere(double inScale, double inRadius, double inDeltaRho, double inBackground) { scale = inScale; radius = inRadius; deltaRho = inDeltaRho; background = inBackground; setNumberOfParameters(4); String[] parameters = {"Scale", "Radius (A)", "Contrast (A-2)", "Background (cm-1)"}; setParametersText(parameters); } public double getFormFactor(double inX) { double bes, f, vol, f2, xrad; xrad = inX*radius; bes = 3.*(Math.sin(xrad) - xrad*Math.cos(xrad))/ Math.pow(xrad,3.0); vol = 4.0*Math.PI/3.0*Math.pow(radius,3.0); f = bes*deltaRho; f2 = f*f*vol*1.0e8; return scale*f2*getStructureFactor().calculate(inX) +background; } public void setParameters(double[] inParameters) { scale = inParameters[0]; radius = inParameters[1]; deltaRho = inParameters[2]; background = inParameters[3]; } public double[] getParameters() { double[] outParameters = new double[4]; outParameters[0] = scale; outParameters[1] = radius; outParameters[2] = deltaRho; outParameters[3] = background; return outParameters; } }