Example #1
0
  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]++;
      }
    }
  }