IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 2, 2010, 7:06:18 PM (17 years ago)
Author:
watersc1
Message:

new burntool code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/20091201/extsrc/gpcsw/gpcsrc/fits/burntool/persistio.c

    r25299 r26764  
    5151             &boxbuf[nbox].slope, &boxbuf[nbox].nfit,
    5252             &boxbuf[nbox].sxfit, &boxbuf[nbox].exfit);
    53       if(boxbuf[nbox].nfit > 0) {
    54          boxbuf[nbox].zero = (double *)calloc(boxbuf[nbox].nfit, sizeof(double));
    55          boxbuf[nbox].xfit = (int *)calloc(boxbuf[nbox].nfit, sizeof(int));
    56          boxbuf[nbox].yfit = (int *)calloc(boxbuf[nbox].nfit, sizeof(int));
    57          for(i=0; i<boxbuf[nbox].nfit; i++) {
     53      if(ABS(boxbuf[nbox].nfit) > 0) {
     54         boxbuf[nbox].zero = (double *)calloc(ABS(boxbuf[nbox].nfit), sizeof(double));
     55         boxbuf[nbox].xfit = (int *)calloc(ABS(boxbuf[nbox].nfit), sizeof(int));
     56         boxbuf[nbox].yfit = (int *)calloc(ABS(boxbuf[nbox].nfit), sizeof(int));
     57         if(boxbuf[nbox].zero == NULL ||
     58            boxbuf[nbox].xfit == NULL ||
     59            boxbuf[nbox].yfit == NULL) {
     60            fprintf(stderr, "\rerror: failed to alloc boxbuf\n");
     61            exit(-673);
     62         }
     63
     64         for(i=0; i<ABS(boxbuf[nbox].nfit); i++) {
    5865            if(fgets(line, 1024, fp) == NULL) {
    5966               fprintf(stderr, "\rerror: short read of burn lines\n");
     
    8592   for(k=0; k<MAXCELL; k++) {
    8693      if( (i=cell[k].npersist) > 0) {
    87          cell[k].persist = (OBJBOX *)calloc(i, sizeof(OBJBOX));
     94         if( (cell[k].persist = (OBJBOX *)calloc(i, sizeof(OBJBOX))) == NULL) {
     95            fprintf(stderr, "\rerror: failed to alloc cell persist buffer\n");
     96            exit(-674);
     97         }
    8898         cell[k].npersist = 0;
    8999      }
     
    149159         k = boxid[kp];
    150160         zk = 0.0;
    151          if(box[k].nfit > 0) zk = box[k].zero[box[k].nfit/2];
     161         if(ABS(box[k].nfit) > 0) zk = box[k].zero[ABS(box[k].nfit)/2];
    152162         for(jp=kp+1; jp<n; jp++) {
    153163            j = boxid[jp];
    154164            zj = 0.0;
    155             if(box[j].nfit > 0) zj = box[j].zero[box[j].nfit/2];
     165            if(ABS(box[j].nfit) > 0) zj = box[j].zero[ABS(box[j].nfit)/2];
    156166            if(ABS(yctr[jp]-yctr[kp]) > DIFFERENT_STREAK) {
    157167/* Trim back the feebler streak */
     
    242252      for(k=0; k<cell[j].npersist; k++) {
    243253
     254/* Retire old burns */
     255         if(cell[j].time - cell[j].persist[k].time > EXPIRE_TRAIL_TIME)
     256            continue;
     257
    244258         if(PERSIST_RETAIN) {
    245259/* Keep fits which have a dubious slope */
     
    265279                 cell[j].persist[k].slope, cell[j].persist[k].nfit,
    266280                 cell[j].persist[k].sxfit, cell[j].persist[k].exfit);
    267          for(i=0; i<cell[j].persist[k].nfit; i++) {
     281         for(i=0; i<ABS(cell[j].persist[k].nfit); i++) {
    268282            fprintf(fp, "%3d %3d %8.4f\n", cell[j].persist[k].xfit[i],
    269283                    cell[j].persist[k].yfit[i], cell[j].persist[k].zero[i]);
     
    301315                 cell[j].burn[k].slope, cell[j].burn[k].nfit,
    302316                 cell[j].burn[k].sxfit, cell[j].burn[k].exfit);
    303          for(i=0; i<cell[j].burn[k].nfit; i++) {
     317         for(i=0; i<ABS(cell[j].burn[k].nfit); i++) {
    304318            fprintf(fp, "%3d %3d %8.4f\n", cell[j].burn[k].xfit[i],
    305319                    cell[j].burn[k].yfit[i], cell[j].burn[k].zero[i]);
Note: See TracChangeset for help on using the changeset viewer.