Changeset 37093
- Timestamp:
- Jul 21, 2014, 9:26:08 AM (12 years ago)
- Location:
- branches/eam_branches/ipp-20140717/Ohana/src/libdvo
- Files:
-
- 3 edited
-
include/dvo.h (modified) (1 diff)
-
src/dbExtractAverages.c (modified) (7 diffs)
-
src/dvo_photcode_ops.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20140717/Ohana/src/libdvo/include/dvo.h
r37035 r37093 710 710 float PhotFluxInstErr (Measure *measure, dvoMagClassType class); 711 711 float PhotFluxCatErr (Measure *measure, dvoMagClassType class); 712 float PhotFluxAveErr (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source); 712 713 713 714 float PhotXm (PhotCode *code, Average *average, SecFilt *secfilt); 714 715 float PhotZeroPoint (Measure *measure, Average *average, SecFilt *secfilt); 715 716 716 float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt); 717 int PhotNphot (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source); 718 float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source); 717 719 float PhotMmin (PhotCode *code, Average *average, SecFilt *secfilt); 718 720 float PhotMmax (PhotCode *code, Average *average, SecFilt *secfilt); -
branches/eam_branches/ipp-20140717/Ohana/src/libdvo/src/dbExtractAverages.c
r37035 r37093 200 200 } 201 201 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 202 212 switch (field->magOption) { 203 213 case MAG_OPTION_MAG: … … 207 217 break; 208 218 case MAG_LEVEL_REF: 209 // wh y is measureneeded here?219 // which measure is needed here? 210 220 // PhotRef (field->photcode, average, secfilt, measure, field->magClass, field->magSource); 211 221 break; … … 242 252 break; 243 253 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); 245 256 break; 246 257 case MAG_LEVEL_INST: … … 258 269 case MAG_LEVEL_AVE: 259 270 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); 261 272 break; 262 273 case MAG_LEVEL_INST: … … 271 282 272 283 case MAG_OPTION_STDEV: 284 value.Flt = PhotMstdev (field->photcode, average, secfilt, field->magClass, field->magSource); 285 break; 273 286 case MAG_OPTION_CHISQ: 287 value.Flt = PhotXm (field->photcode, average, secfilt); 288 break; 274 289 case MAG_OPTION_MIN: 290 value.Flt = PhotMmin (field->photcode, average, secfilt); 291 break; 275 292 case MAG_OPTION_MAX: 293 value.Flt = PhotMmax (field->photcode, average, secfilt); 294 break; 276 295 case MAG_OPTION_NCODE: { 277 296 int Nsec = GetPhotcodeNsec (field->photcode->code); … … 281 300 } 282 301 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); 286 303 break; 287 304 } 288 305 case MAG_OPTION_UC_DIST: 306 value.Flt = PhotUCdist (field->photcode, average, secfilt); 307 break; 289 308 case MAG_OPTION_STACK_DET_ID: 290 309 value.Int = PhotStackID (field->photcode, average, secfilt); … … 301 320 break; 302 321 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 value317 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 APIs356 // 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 # endif423 322 case AVE_TYPE: 424 323 break; -
branches/eam_branches/ipp-20140717/Ohana/src/libdvo/src/dvo_photcode_ops.c
r37035 r37093 687 687 } 688 688 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; 689 float 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 } 698 732 return (Mstdev); 733 } 734 735 int 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); 699 779 } 700 780 … … 1112 1192 } 1113 1193 return (Fave); 1194 } 1195 1196 float 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); 1114 1254 } 1115 1255
Note:
See TracChangeset
for help on using the changeset viewer.
