4. Energy correction

  for(ihit=0; ihit<nhit; ihit++)
  {
    ecpath(geom,hit[ihit].i,hit[ihit].j,path);
    energy = hit[ihit].energy;
    hit[ihit].energy = 0.;
    hit[ihit].time   = 0.;
    hit[ihit].width  = 0.;

    /* loop for 3 axis */
    npks = 0;
    for(axis=0; axis<3; axis++)
    {
      npks++;
      peakid = hit[ihit].peak1[axis];
      fraction[axis] = energy / peak[axis][peakid].tmp;

      lat = 0.;
      for(ith=0; ith<peak[axis][peakid].stripn; ith++)
      {
        lat = lat + atlen[axis][peak[axis][peakid].strip1+ith];
      }
      lat = lat / peak[axis][peakid].stripn;
      attn = exp(-path[axis]/lat);
      hit[ihit].energy = hit[ihit].energy + fraction[axis] *
                         peak[axis][peakid].energy / attn;
      hit[ihit].time = hit[ihit].time + peak[axis][peakid].time;

      hit[ihit].uvw2[axis] = peak[axis][peakid].width;
      hit[ihit].width = hit[ihit].width + peak[axis][peakid].width;
    }
    hit[ihit].width = hit[ihit].width / 3;
    npks = MAX(npks,1);
    hit[ihit].time = hit[ihit].time / npks;

    ecxyz(geom,hit[ihit].i,hit[ihit].j,hit[ihit].k,&hit[ihit].x);
  }
ÔOfflineÕ algorithm (cont.)