public void updateGaussianNodeGroup(
      ArrayList<IPOGaussianNode> IPOGGs,
      int r,
      int[][] pixels0,
      int w,
      int h,
      int index,
      int trackingLength) {
    IPOGNode = new IPOGaussianNodeComplex(IPOGGs);
    int i, j, ix;
    ix = 0;
    IPOGaussianNode IPOG;

    pixels = pixels0;
    cx = IPOGNode.xcr;
    cy = IPOGNode.ycr;
    cz = IPOGNode.getZ();
    this.w = w;
    this.h = h;
    this.t = t;
    radius = r;
    int xi = cx - r, xf = cx + r, yi = cy - r, yf = cy + r;
    if (xi < 0) xi = 0;
    if (yi < 0) yi = 0;
    if (xf > w - 1) xf = w - 1;
    if (yf > h - 1) yf = h - 1;
    ave = 0.;
    size = 0;
    for (i = yi; i <= yf; i++) {
      for (j = xi; j <= xf; j++) {
        size++;
        ave += pixels[i][j];
      }
    }
    ave /= size;
    background = false;
    //        this.index=index;
    pixelHeight = 0;

    pixelHeight = IPOGNode.dTotalSignal; // old definition of pixelHeigth.

    this.trackingLength = trackingLength;
    preIPO = null;
    postIPO = null;
    preIPOs = null;
    postIPOs = null;
    IPOsWithinContour = new ArrayList<IntensityPeakObject>();
  }