#include "Fraunhofer.h"#include <math.h>// ---------------------------------------------------------------------------------//		¥ CreateFraunhoferFit [static]// ---------------------------------------------------------------------------------FitFunction *FraunhoferFit::CreateFraunhoferFit( ){	return NEW FraunhoferFit();}FraunhoferFit::FraunhoferFit() : FitFunction(false, true){	// Add the parameters		FitParameter *fp;		// The functional form is		AddParameter( NEW FitParameter("Intensity", 1.0) );	AddParameter( NEW FitParameter("Center Position (mm)", 10) );	AddParameter( NEW FitParameter("Radius (mm)", 0.1) );	AddParameter( NEW FitParameter("Object Distance (mm)", 1500) );		AddParameter( fp = NEW FitParameter("Wavelength", 0.0006328) );	fp->Lock();}FraunhoferFit::~FraunhoferFit(){}// Remember that fit parameters are 1-basedREAL FraunhoferFit::CalcFitFunction(REAL x){	x -= Param(2)();							// the center position parameter	REAL argument = 2 * 3.14159265358979 / Param(5)();	// k	argument *= Param(3)() * x / Param(4)();		REAL result = argument == 0.0 ? 1.0 : 2.0 * BesselJ1(argument) / argument;	return result * result * Param(1)();}