IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 39574


Ignore:
Timestamp:
May 13, 2016, 9:54:58 AM (10 years ago)
Author:
eugene
Message:

handle cases where Nlensobj, Nmeasure, Nstarpar, Ngalphot are 0

Location:
trunk/Ohana/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/libdvo/src/dbExtractAverages.c

    r39531 r39574  
    223223            case MAG_LEVEL_INST:
    224224              // find an appropriate measure (if one exists)
    225               for (n = 0; n < average->Nmeasure; n++) {
     225              for (n = 0; measure && n < average->Nmeasure; n++) {
    226226                if (field->photcode->code != measure[n].photcode) continue;
    227227                value.Flt = PhotInst (&measure[n], field->magClass);
     
    231231            case MAG_LEVEL_CAT:
    232232              // find an appropriate measure (if one exists)
    233               for (n = 0; n < average->Nmeasure; n++) {
     233              for (n = 0; measure && n < average->Nmeasure; n++) {
    234234                if (field->photcode->code != measure[n].photcode) continue;
    235235                value.Flt = PhotCat (&measure[n], field->magClass);
     
    239239            case MAG_LEVEL_SYS:
    240240              // find an appropriate measure (if one exists)
    241               for (n = 0; n < average->Nmeasure; n++) {
     241              for (n = 0; measure && n < average->Nmeasure; n++) {
    242242                if (field->photcode->code != measure[n].photcode) continue;
    243243                value.Flt = PhotSys  (&measure[n], average, secfilt, field->magClass);
     
    247247            case MAG_LEVEL_REL:
    248248              // find an appropriate measure (if one exists)
    249               for (n = 0; n < average->Nmeasure; n++) {
     249              for (n = 0; measure && n < average->Nmeasure; n++) {
    250250                if (field->photcode->code != measure[n].photcode) continue;
    251251                value.Flt = PhotRel (&measure[n], average, secfilt, field->magClass);
     
    270270            case MAG_LEVEL_REL:
    271271              // find an appropriate measure (if one exists)
    272               for (n = 0; n < average->Nmeasure; n++) {
     272              for (n = 0; measure && n < average->Nmeasure; n++) {
    273273                if (field->photcode->code != measure[n].photcode) continue;
    274274                value.Flt = PhotErr (&measure[n], field->magClass);
     
    293293            case MAG_LEVEL_INST:
    294294              // find an appropriate measure (if one exists)
    295               for (n = 0; n < average->Nmeasure; n++) {
     295              for (n = 0; measure && n < average->Nmeasure; n++) {
    296296                if (field->photcode->code != measure[n].photcode) continue;
    297297                value.Flt = PhotFluxInst (&measure[n], field->magClass);
     
    301301            case MAG_LEVEL_CAT:
    302302              // find an appropriate measure (if one exists)
    303               for (n = 0; n < average->Nmeasure; n++) {
     303              for (n = 0; measure && n < average->Nmeasure; n++) {
    304304                if (field->photcode->code != measure[n].photcode) continue;
    305305                value.Flt = PhotFluxCat (&measure[n], field->magClass);
     
    309309            case MAG_LEVEL_SYS:
    310310              // find an appropriate measure (if one exists)
    311               for (n = 0; n < average->Nmeasure; n++) {
     311              for (n = 0; measure && n < average->Nmeasure; n++) {
    312312                if (field->photcode->code != measure[n].photcode) continue;
    313313                value.Flt = PhotFluxSys (&measure[n], average, secfilt, field->magClass);
     
    317317            case MAG_LEVEL_REL:
    318318              // find an appropriate measure (if one exists)
    319               for (n = 0; n < average->Nmeasure; n++) {
     319              for (n = 0; measure && n < average->Nmeasure; n++) {
    320320                if (field->photcode->code != measure[n].photcode) continue;
    321321                value.Flt = PhotFluxRel (&measure[n], average, secfilt, field->magClass);
     
    340340            case MAG_LEVEL_REL:
    341341              // find an appropriate measure (if one exists)
    342               for (n = 0; n < average->Nmeasure; n++) {
     342              for (n = 0; measure && n < average->Nmeasure; n++) {
    343343                if (field->photcode->code != measure[n].photcode) continue;
    344344                value.Flt = PhotFluxInstErr (&measure[n], field->magClass);
  • trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c

    r39531 r39574  
    19151915/*** lensing *********************************************************************************/
    19161916
     1917// lensobj points an Nsecfilt entries, if any exist.  note comment in dvolens/src/update_objects_catalog.c:32
     1918// >> Nlensobj tracks how many lensobj entries have I actually generated so far for this
     1919// >> catalog This is not necessarily 1-to-1 with secfilt entries, but any average entry
     1920// >> will either have 0 or Nsecfilt lensobj entries
     1921
    19171922# define LENSFIELD(NAME) \
    1918   float LensValue_##NAME (PhotCode *code, Lensobj *lensobj) { \
    1919   if (code == NULL) return NAN; \
    1920   int Ns = photcodes->hashNsec[code->code]; \
    1921   float value = (Ns == -1) ? NAN : lensobj[Ns].NAME; \
    1922   return (value); \
    1923 }
     1923  float LensValue_##NAME (PhotCode *code, Lensobj *lensobj) {   \
     1924    if (lensobj == NULL) return NAN;                            \
     1925    if (code == NULL) return NAN;                               \
     1926    int Ns = photcodes->hashNsec[code->code];                   \
     1927    float value = (Ns == -1) ? NAN : lensobj[Ns].NAME;          \
     1928    return (value);                                             \
     1929  }
    19241930
    19251931LENSFIELD(X11_sm_obj)
  • trunk/Ohana/src/opihi/dvo/avextract.c

    r39457 r39574  
    212212
    213213      m = average->measureOffset;
    214       Measure *measure = needMeasure ? &catalog.measure[m] : NULL;
     214      Measure *measure = needMeasure && average->Nmeasure ? &catalog.measure[m] : NULL;
    215215
    216216      m = average->lensobjOffset;
    217       Lensobj *lensobj = needLensobj ? &catalog.lensobj[m] : NULL;
     217      Lensobj *lensobj = needLensobj && average->Nlensobj ? &catalog.lensobj[m] : NULL;
    218218
    219219      m = average->starparOffset;
    220       StarPar *starpar = needStarpar ? &catalog.starpar[m] : NULL;
     220      StarPar *starpar = needStarpar && average->Nstarpar ? &catalog.starpar[m] : NULL;
    221221
    222222      m = average->galphotOffset;
    223       GalPhot *galphot = needGalphot ? &catalog.galphot[m] : NULL;
     223      GalPhot *galphot = needGalphot && average->Ngalphot ? &catalog.galphot[m] : NULL;
    224224
    225225      m = j*Nsecfilt;
     
    227227
    228228      for (n = 0; n < Nfields; n++) {
    229         // we are passing in the *first* measure, but average->Nmeasure gives the count
     229        // for Measure, we are passing in the *first* measure, but average->Nmeasure gives the count
     230        // for Secfilt, we are passing in the first entry; photcode.equiv gives the entry
     231        // for Lensobj, we are passing in the first entry or NULL; photcode.equiv gives the entry
    230232        values[n] = dbExtractAverages (average, secfilt, measure, lensobj, starpar, galphot, &fields[n]);
    231233      }
Note: See TracChangeset for help on using the changeset viewer.