IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 28328


Ignore:
Timestamp:
Jun 15, 2010, 9:46:18 AM (16 years ago)
Author:
eugene
Message:

get correct count for Nmeasure; update secfilt from input if output is lacking

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/dvomerge/src/merge_catalogs_old.c

    r28250 r28328  
    6363  tcoords.Npolyterms = 1;
    6464  strcpy (tcoords.ctype, "RA---ARC");
     65
     66  if (VERBOSE) fprintf (stderr, "merging %s into %s\n", input[0].filename, output[0].filename);
    6567
    6668  /* build spatial index (RA sort) referencing input array sequence */
     
    161163      REALLOCATE (output[0].measure, Measure, NMEAS);
    162164    }
     165
     166    // 4) average properties from the input and the output db need to be properly merged.
    163167
    164168    /** add ALL measurements for this input average object **/
     
    209213    }
    210214
     215    // update the average properties to reflect the incoming entries:
     216    // if the original value is NAN but the input value is not, accept the input:
     217    for (j = 0; j < Nsecfilt; j++) {
     218      if ( isfinite(output[0].secfilt[n*Nsecfilt+j].M)) continue;
     219      if (!isfinite( input[0].secfilt[N*Nsecfilt+j].M)) continue;
     220      output[0].secfilt[n*Nsecfilt+j].M     = input[0].secfilt[N*Nsecfilt+j].M;
     221      output[0].secfilt[n*Nsecfilt+j].dM    = input[0].secfilt[N*Nsecfilt+j].dM;
     222      output[0].secfilt[n*Nsecfilt+j].Xm    = input[0].secfilt[N*Nsecfilt+j].Xm;
     223      output[0].secfilt[n*Nsecfilt+j].M_20  = input[0].secfilt[N*Nsecfilt+j].M_20;
     224      output[0].secfilt[n*Nsecfilt+j].M_80  = input[0].secfilt[N*Nsecfilt+j].M_80;
     225      output[0].secfilt[n*Nsecfilt+j].Ncode = input[0].secfilt[N*Nsecfilt+j].Ncode;
     226      output[0].secfilt[n*Nsecfilt+j].Nused = input[0].secfilt[N*Nsecfilt+j].Nused;
     227    }
     228
    211229    /* Nm is updated, but not written out in -update mode (for existing entries)
    212230       Nm is recalculated in build_meas_links if loaded table is not sorted */
     
    242260    if (!IN_REGION (input[0].average[N].R, input[0].average[N].D)) continue;
    243261
     262    // XXX should we accept the input measurements for the fields?
     263
    244264    output[0].average[Nave].R              = input[0].average[N].R;
    245265    output[0].average[Nave].D              = input[0].average[N].D;
     
    247267    output[0].average[Nave].dD             = 0;
    248268
    249     output[0].average[Nave].Nmeasure       = 1;
     269    output[0].average[Nave].Nmeasure       = 0; // this value is update as the measurements are associated with this entry below
    250270    output[0].average[Nave].Nmissing       = 0;
    251271    output[0].average[Nave].Nextend        = 0;
     
    282302
    283303    for (j = 0; j < Nsecfilt; j++) {
    284       output[0].secfilt[Nave*Nsecfilt+j].M  = NAN;
    285       output[0].secfilt[Nave*Nsecfilt+j].dM = NAN;
    286       output[0].secfilt[Nave*Nsecfilt+j].Xm = NAN_S_SHORT;
    287       output[0].secfilt[Nave*Nsecfilt+j].M_20   = NAN_S_SHORT;
    288       output[0].secfilt[Nave*Nsecfilt+j].M_80   = NAN_S_SHORT;
    289       output[0].secfilt[Nave*Nsecfilt+j].Ncode = 0;
    290       output[0].secfilt[Nave*Nsecfilt+j].Nused = 0;
     304      if (isfinite(input[0].secfilt[N*Nsecfilt+j].M)) {
     305        output[0].secfilt[Nave*Nsecfilt+j].M     = input[0].secfilt[N*Nsecfilt+j].M;
     306        output[0].secfilt[Nave*Nsecfilt+j].dM    = input[0].secfilt[N*Nsecfilt+j].dM;
     307        output[0].secfilt[Nave*Nsecfilt+j].Xm    = input[0].secfilt[N*Nsecfilt+j].Xm;
     308        output[0].secfilt[Nave*Nsecfilt+j].M_20  = input[0].secfilt[N*Nsecfilt+j].M_20;
     309        output[0].secfilt[Nave*Nsecfilt+j].M_80  = input[0].secfilt[N*Nsecfilt+j].M_80;
     310        output[0].secfilt[Nave*Nsecfilt+j].Ncode = input[0].secfilt[N*Nsecfilt+j].Ncode;
     311        output[0].secfilt[Nave*Nsecfilt+j].Nused = input[0].secfilt[N*Nsecfilt+j].Nused;
     312      } else {
     313        output[0].secfilt[Nave*Nsecfilt+j].M     = NAN;
     314        output[0].secfilt[Nave*Nsecfilt+j].dM    = NAN;
     315        output[0].secfilt[Nave*Nsecfilt+j].Xm    = NAN_S_SHORT;
     316        output[0].secfilt[Nave*Nsecfilt+j].M_20  = NAN_S_SHORT;
     317        output[0].secfilt[Nave*Nsecfilt+j].M_80  = NAN_S_SHORT;
     318        output[0].secfilt[Nave*Nsecfilt+j].Ncode = 0;
     319        output[0].secfilt[Nave*Nsecfilt+j].Nused = 0;
     320      }
    291321    }
    292322
     
    304334      output[0].measure[Nmeas].catID    = output[0].catID;
    305335
    306       /* next[Nmeas] should always be -1 in this context (it is always the only
    307          measurement for the star) */
     336      // as we add measurements, update Nmeasure to match
     337      output[0].average[Nave].Nmeasure ++;
     338
     339      /* we set next[Nmeas] to -1 here, and update correctly below */
    308340      input[0].found[N] = Nmeas;
    309341      next_meas[Nmeas] = -1;
     
    327359# endif
    328360
    329 # define NOSORT FALSE
     361# define NOSORT 0
    330362  if (NOSORT) {
    331363    output[0].sorted = FALSE;
Note: See TracChangeset for help on using the changeset viewer.