private void addPeak(FitPeak fit) { final int xc = fit.xc; final int yc = fit.yc; fit.offset = yc * this.imgSizeX + xc; final int wx = fit.wx; final double xCenter = fit.peak.getXCenter(); final double xWidth = fit.peak.getXWidth(); for (int i = (xc - wx); i <= (xc + wx); i++) { final double xt = ((double) i) - xCenter; final int n = (i - xc) + wx; fit.xt[n] = xt; fit.ext[n] = Math.exp(-xt * xt * xWidth); } final int wy = fit.wy; final double yCenter = fit.peak.getYCenter(); final double yWidth = fit.peak.getYWidth(); for (int i = (yc - wy); i <= (yc + wy); i++) { final double yt = ((double) i) - yCenter; final int n = (i - yc) + wy; fit.yt[n] = yt; fit.eyt[n] = Math.exp(-yt * yt * yWidth); } // gaussian function final int offset = fit.offset; final double background = fit.peak.getBackground(); final double height = fit.peak.getHeight(); for (int i = -wy; i <= wy; i++) { final double eyt = fit.eyt[i + wy]; for (int j = -wx; j <= wx; j++) { final double ext = fit.ext[j + wx]; final int idx = (i * this.imgSizeX) + (j + offset); this.fgData[idx] += height * eyt * ext; this.bgData[idx] += background; this.bgCounts[idx]++; } } }