IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 37093


Ignore:
Timestamp:
Jul 21, 2014, 9:26:08 AM (12 years ago)
Author:
eugene
Message:

updating accessors to enable all(?) photcode-based varients

Location:
branches/eam_branches/ipp-20140717/Ohana/src/libdvo
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20140717/Ohana/src/libdvo/include/dvo.h

    r37035 r37093  
    710710float PhotFluxInstErr (Measure *measure, dvoMagClassType class);
    711711float PhotFluxCatErr (Measure *measure, dvoMagClassType class);
     712float PhotFluxAveErr (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source);
    712713
    713714float PhotXm (PhotCode *code, Average *average, SecFilt *secfilt);
    714715float PhotZeroPoint (Measure *measure, Average *average, SecFilt *secfilt);
    715716
    716 float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt);
     717int   PhotNphot (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source);
     718float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source);
    717719float PhotMmin (PhotCode *code, Average *average, SecFilt *secfilt);
    718720float PhotMmax (PhotCode *code, Average *average, SecFilt *secfilt);
  • branches/eam_branches/ipp-20140717/Ohana/src/libdvo/src/dbExtractAverages.c

    r37035 r37093  
    200200      }
    201201
     202      /* in some cases below we need a measurement which matches the requested photcode.
     203         here is some sample code to find this.
     204
     205          for (i = 0; i < average[0].Nmeasure; i++) {
     206            if (field->photcode->code != measure[i].photcode) continue;
     207            value.Flt = measure[i].M;
     208            break;
     209          }
     210      */
     211
    202212      switch (field->magOption) {
    203213        case MAG_OPTION_MAG:
     
    207217              break;
    208218            case MAG_LEVEL_REF:
    209               // why is measure needed here?
     219              // which measure is needed here?
    210220              // PhotRef  (field->photcode, average, secfilt, measure, field->magClass, field->magSource);
    211221              break;
     
    242252              break;
    243253            case MAG_LEVEL_REF:
    244               // value.Flt = PhotFluxRef  (equiv, average, secfilt, measure, field->magClass, field->magSource);
     254              // XXX which measure is needed here?
     255              // value.Flt = PhotFluxRef  (field->photcode, average, secfilt, measure, field->magClass, field->magSource);
    245256              break;
    246257            case MAG_LEVEL_INST:
     
    258269            case MAG_LEVEL_AVE:
    259270            case MAG_LEVEL_REF:
    260               // value.Flt = PhotFluxAveErr (equiv, average, secfilt, field->magClass, field->magSource); 
     271              value.Flt = PhotFluxAveErr (field->photcode, average, secfilt, field->magClass, field->magSource); 
    261272              break;
    262273            case MAG_LEVEL_INST:
     
    271282
    272283        case MAG_OPTION_STDEV:
     284          value.Flt = PhotMstdev (field->photcode, average, secfilt, field->magClass, field->magSource);
     285          break;
    273286        case MAG_OPTION_CHISQ:
     287          value.Flt = PhotXm (field->photcode, average, secfilt);
     288          break;
    274289        case MAG_OPTION_MIN:
     290          value.Flt = PhotMmin (field->photcode, average, secfilt);
     291          break;
    275292        case MAG_OPTION_MAX:
     293          value.Flt = PhotMmax (field->photcode, average, secfilt);
     294          break;
    276295        case MAG_OPTION_NCODE: {
    277296          int Nsec = GetPhotcodeNsec (field->photcode->code);
     
    281300        }
    282301        case MAG_OPTION_NPHOT: {
    283           int Nsec = GetPhotcodeNsec (field->photcode->code);
    284           if (Nsec == -1) break;
    285           value.Int = secfilt[Nsec].Nused;
     302          value.Int = PhotNphot (field->photcode, average, secfilt, field->magClass, field->magSource);
    286303          break;
    287304        }
    288305        case MAG_OPTION_UC_DIST:
     306          value.Flt = PhotUCdist (field->photcode, average, secfilt);
     307          break;
    289308        case MAG_OPTION_STACK_DET_ID:
    290309          value.Int = PhotStackID (field->photcode, average, secfilt);
     
    301320      break;
    302321
    303 # if (0)
    304       switch (field->magMode) {
    305         case MAG_AVE:
    306           value.Flt = PhotAve  (field->photcode, average, secfilt);
    307           break;
    308         case MAG_REF:
    309           value.Flt = PhotRef  (field->photcode, average, secfilt, measure);
    310           break;
    311         case MAG_INST:
    312         case MAG_CAT:
    313         case MAG_SYS:
    314         case MAG_REL:
    315         case MAG_CAL:
    316           // XXX need to code this correctly: this returns just the first matching value
    317           value.Flt = NAN;
    318           for (i = 0; i < average[0].Nmeasure; i++) {
    319             if (field->photcode->code != measure[i].photcode) continue;
    320             value.Flt = measure[i].M;
    321             break;
    322           }
    323           break;
    324         case MAG_CHISQ:
    325           value.Flt = PhotXm (field->photcode, average, secfilt);
    326           break;
    327         case MAG_ERR:
    328           if ((field->photcode->type == PHOT_REF) || (field->photcode->type == PHOT_DEP)) {
    329             for (i = 0; i < average[0].Nmeasure; i++) {
    330               if (field->photcode->code != measure[i].photcode) continue;
    331               value.Flt = measure[i].dM;
    332               break;
    333             }
    334           } else {
    335             value.Flt = PhotAveErr (field->photcode, average, secfilt);
    336           }
    337           break;
    338         case MAG_STDEV:
    339           value.Flt = PhotMstdev (field->photcode, average, secfilt);
    340           break;
    341         case MAG_PHOT_FLAGS:
    342           if ((field->photcode->type == PHOT_REF) || (field->photcode->type == PHOT_DEP)) {
    343             for (i = 0; i < average[0].Nmeasure; i++) {
    344               if (field->photcode->code != measure[i].photcode) continue;
    345               value.Int = measure[i].photFlags;
    346               break;
    347             }
    348           } else {
    349             int Nsec = GetPhotcodeNsec (field->photcode->code);
    350             if (Nsec == -1) break;
    351             value.Int = secfilt[Nsec].flags;
    352           }
    353           break;
    354         case MAG_NCODE:
    355           // XXX push these into dvo_photcode_ops APIs
    356           // XXX do I need to allow for conversion to equiv?
    357           int Nsec = GetPhotcodeNsec (field->photcode->code);
    358           if (Nsec == -1) break;
    359           value.Int = secfilt[Nsec].Ncode;
    360           break;
    361         case MAG_NPHOT:
    362           int Nsec = GetPhotcodeNsec (field->photcode->code);
    363           if (Nsec == -1) break;
    364           value.Int = secfilt[Nsec].Nused;
    365           break;
    366 
    367         case MAG_APER:
    368         case MAG_APER_AVE:
    369           value.Flt = PhotAperAve (field->photcode, average, secfilt);
    370           break;
    371 
    372         case MAG_APER_REF:
    373           value.Flt = PhotAperRef (field->photcode, average, secfilt, measure);
    374           break;
    375 
    376         case MAG_KRON:
    377         case MAG_KRON_AVE:
    378           value.Flt = PhotKronAve (field->photcode, average, secfilt);
    379           break;
    380 
    381         case MAG_KRON_REF:
    382           value.Flt = PhotKronRef (field->photcode, average, secfilt, measure);
    383           break;
    384 
    385         case MAG_KRON_ERR:
    386           value.Flt = PhotKronAveErr (field->photcode, average, secfilt);
    387           break;
    388 
    389         case MAG_MIN:
    390           value.Flt = PhotMmin (field->photcode, average, secfilt);
    391           break;
    392         case MAG_MAX:
    393           value.Flt = PhotMmax (field->photcode, average, secfilt);
    394           break;
    395         case MAG_UC_DIST:
    396           value.Flt = PhotUCdist (field->photcode, average, secfilt);
    397           break;
    398         case MAG_STACK_DET_ID:
    399           value.Int = PhotStackID (field->photcode, average, secfilt);
    400           break;
    401 
    402         case MAG_FLUX_PSF:
    403           value.Flt = PhotAveFluxPSF (field->photcode, average, secfilt);
    404           break;
    405         case MAG_FLUX_PSF_ERR:
    406           value.Flt = PhotAvedFluxPSF (field->photcode, average, secfilt);
    407           break;
    408         case MAG_FLUX_KRON:
    409           value.Flt = PhotAveFluxKron (field->photcode, average, secfilt);
    410           break;
    411         case MAG_FLUX_KRON_ERR:
    412           value.Flt = PhotAvedFluxKron (field->photcode, average, secfilt);
    413           break;
    414       }
    415       break;
    416     case AVE_dMAG:
    417       value.Flt = PhotAveErr (field->photcode, average, secfilt);
    418       break;
    419     case AVE_Xm:
    420       value.Flt = PhotXm (field->photcode, average, secfilt);
    421       break;
    422 # endif
    423322    case AVE_TYPE:
    424323      break;
  • branches/eam_branches/ipp-20140717/Ohana/src/libdvo/src/dvo_photcode_ops.c

    r37035 r37093  
    687687}
    688688
    689 float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt) {
    690 
    691   int Ns;
    692   float Mstdev;
    693 
    694   if (code == NULL) return NAN;
    695 
    696   Ns = photcodes[0].hashNsec[code[0].code];
    697   Mstdev  = (Ns == -1) ? NAN : 0.001*secfilt[Ns].Mstdev;
     689float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source) {
     690
     691  if (code == NULL) return NAN;
     692
     693  int Ns = photcodes[0].hashNsec[code[0].code];
     694  if (Ns == -1) return (NAN);
     695
     696  float Mstdev = NAN;
     697  switch (source) {
     698    case MAG_SRC_CHP:
     699      switch (class) {
     700        case MAG_CLASS_PSF:
     701          Mstdev = secfilt[Ns].Mstdev;
     702          break;
     703        case MAG_CLASS_KRON:
     704          Mstdev = secfilt[Ns].sMkron;
     705          break;
     706        case MAG_CLASS_APER:
     707          Mstdev = secfilt[Ns].sMap;
     708          break;
     709        default:
     710          break;
     711      }
     712      break;
     713    case MAG_SRC_WRP:
     714      switch (class) {
     715        case MAG_CLASS_PSF:
     716          Mstdev = secfilt[Ns].sFpsfWrp;
     717          break;
     718        case MAG_CLASS_KRON:
     719          Mstdev = secfilt[Ns].sFkronWrp;
     720          break;
     721        case MAG_CLASS_APER:
     722          Mstdev = secfilt[Ns].sFapWrp;
     723          break;
     724        default:
     725          break;
     726      }
     727      break;
     728    case MAG_SRC_STK:
     729    default:
     730      break;
     731  }
    698732  return (Mstdev);
     733}
     734
     735int PhotNphot (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source) {
     736
     737  if (code == NULL) return 0;
     738
     739  int Ns = photcodes[0].hashNsec[code[0].code];
     740  if (Ns == -1) return 0;
     741
     742  int Nphot = 0;
     743  switch (source) {
     744    case MAG_SRC_CHP:
     745      switch (class) {
     746        case MAG_CLASS_PSF:
     747          Nphot = secfilt[Ns].Nused;
     748          break;
     749        case MAG_CLASS_KRON:
     750          Nphot = secfilt[Ns].NusedKron;
     751          break;
     752        case MAG_CLASS_APER:
     753          Nphot = secfilt[Ns].NusedAp;
     754          break;
     755        default:
     756          break;
     757      }
     758      break;
     759    case MAG_SRC_WRP:
     760      switch (class) {
     761        case MAG_CLASS_PSF:
     762          Nphot = secfilt[Ns].NusedWrp;
     763          break;
     764        case MAG_CLASS_KRON:
     765          Nphot = secfilt[Ns].NusedKronWrp;
     766          break;
     767        case MAG_CLASS_APER:
     768          Nphot = secfilt[Ns].NusedApWrp;
     769          break;
     770        default:
     771          break;
     772      }
     773      break;
     774    case MAG_SRC_STK:
     775    default:
     776      break;
     777  }
     778  return (Nphot);
    699779}
    700780
     
    11121192  }
    11131193  return (Fave);
     1194}
     1195
     1196float PhotFluxAveErr (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source) {
     1197
     1198  if (code == NULL) return NAN;
     1199
     1200  int Ns = photcodes[0].hashNsec[code[0].code];
     1201  if (Ns == -1) return (NAN);
     1202
     1203  float dFave = NAN;
     1204  switch (source) {
     1205    case MAG_SRC_CHP:
     1206      switch (class) {
     1207        case MAG_CLASS_PSF:
     1208          dFave = secfilt[Ns].dM * MagToFlux(secfilt[Ns].M);
     1209          break;
     1210        case MAG_CLASS_KRON:
     1211          dFave = secfilt[Ns].dMkron * MagToFlux(secfilt[Ns].Mkron);
     1212          break;
     1213        case MAG_CLASS_APER:
     1214          dFave = secfilt[Ns].dMap * MagToFlux(secfilt[Ns].Map);
     1215          break;
     1216        default:
     1217          break;
     1218      }
     1219      break;
     1220    case MAG_SRC_WRP:
     1221      switch (class) {
     1222        case MAG_CLASS_PSF:
     1223          dFave = secfilt[Ns].dFpsfWrp;
     1224          break;
     1225        case MAG_CLASS_KRON:
     1226          dFave = secfilt[Ns].dFkronWrp;
     1227          break;
     1228        case MAG_CLASS_APER:
     1229          dFave = secfilt[Ns].dFapWrp;
     1230          break;
     1231        default:
     1232          break;
     1233      }
     1234      break;
     1235    case MAG_SRC_STK:
     1236      switch (class) {
     1237        case MAG_CLASS_PSF:
     1238          dFave = secfilt[Ns].dFpsfStk;
     1239          break;
     1240        case MAG_CLASS_KRON:
     1241          dFave = secfilt[Ns].dFkronStk;
     1242          break;
     1243        case MAG_CLASS_APER:
     1244          dFave = secfilt[Ns].dFapStk;
     1245          break;
     1246        default:
     1247          break;
     1248      }
     1249      break;
     1250    default:
     1251      break;
     1252  }
     1253  return (dFave);
    11141254}
    11151255
Note: See TracChangeset for help on using the changeset viewer.