package sansmodels; public class HollowCylinder extends SANSModel{ private double scale, coreRadius, shellRadius, background; private double deltaRho, length; //Default constructor public HollowCylinder() { scale = 1.0; coreRadius = 20.0; shellRadius = 30.0; length = 400.0; deltaRho = 3.e-6; background = 0.00; setNumberOfParameters(6); String[] parameters = {"Scale", "Core Radius (A)", "Shell Radius (A)", "Length (A)", "Contrast (A-2)", "Background (cm-1)"}; setParametersText(parameters); } public HollowCylinder(double inScale, double inCoreRadius, double inShellRadius, double inLength, double inDeltaRho, double inBackground) { scale = inScale; coreRadius = inCoreRadius; shellRadius = inShellRadius; length = inLength; deltaRho = inDeltaRho; background = inBackground; setNumberOfParameters(6); String[] parameters = {"Scale", "Core Radius (A)", "Shell Radius (A)", "Length (A)", "Contrast (A-2)", "Background (cm-1)"}; setParametersText(parameters); } private double hollowCylinderFunc(double inQ, double inZ) { double gamma, bessarg1, bessarg2, lam1, lam2, t2, psi, sinarg; gamma = coreRadius/shellRadius; bessarg1 = inQ * shellRadius * Math.sqrt(1-(inZ*inZ)); bessarg2 = inQ * coreRadius * Math.sqrt(1-(inZ*inZ)); lam1 = 2.0*SpecialFunction.j1(bessarg1)/bessarg1; lam2 = 2.0*SpecialFunction.j1(bessarg2)/bessarg2; psi = 1.0/(1-(gamma*gamma))*(lam1 - gamma*gamma*lam2); sinarg = inQ*length*inZ/2.0; t2 = Math.sin(sinarg)/sinarg; return psi*psi*t2*t2; } public double getFormFactor(double inX) { int nord = 76; double va, vb, summ, zi, answer, yyy; double vol; va = 0.0; vb = 1.0; summ = 0.0; for(int i=0;i