Changeset 36908
- Timestamp:
- Jun 18, 2014, 9:44:36 PM (12 years ago)
- Location:
- branches/eam_branches/ipp-20140610/Ohana/src/libdvo
- Files:
-
- 8 edited
-
include/dvo.h (modified) (1 diff)
-
include/dvodb.h (modified) (6 diffs)
-
src/LoadPhotcodesFITS.c (modified) (1 diff)
-
src/LoadPhotcodesText.c (modified) (1 diff)
-
src/dbExtractAverages.c (modified) (5 diffs)
-
src/dbExtractMeasures.c (modified) (4 diffs)
-
src/dbFields.c (modified) (8 diffs)
-
src/dvo_photcode_ops.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/dvo.h
r36898 r36908 662 662 char *GetPhotcodeNamebyCode (int code); 663 663 664 float PhotInst (Measure *measure); 665 float PhotCat (Measure *measure); 666 float PhotSys (Measure *measure, Average *average, SecFilt *secfilt); 667 float PhotRel (Measure *measure, Average *average, SecFilt *secfilt); 668 float PhotCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code); 669 float PhotAve (PhotCode *code, Average *average, SecFilt *secfilt); 670 float PhotRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure); 671 float PhotAveErr (PhotCode *code, Average *average, SecFilt *secfilt); 672 673 float PhotAperInst (Measure *measure); 674 float PhotAperCat (Measure *measure); 675 float PhotAperSys (Measure *measure, Average *average, SecFilt *secfilt); 676 float PhotAperRel (Measure *measure, Average *average, SecFilt *secfilt); 677 float PhotAperCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code); 678 float PhotAperAve (PhotCode *code, Average *average, SecFilt *secfilt); 679 float PhotAperRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure); 680 681 float PhotKronInst (Measure *measure); 682 float PhotKronCat (Measure *measure); 683 float PhotKronSys (Measure *measure, Average *average, SecFilt *secfilt); 684 float PhotKronRel (Measure *measure, Average *average, SecFilt *secfilt); 685 float PhotKronCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code); 686 float PhotKronAve (PhotCode *code, Average *average, SecFilt *secfilt); 687 float PhotKronRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure); 688 float PhotKronAveErr (PhotCode *code, Average *average, SecFilt *secfilt); 664 float PhotInst (Measure *measure, dvoMagClassType class); 665 float PhotCat (Measure *measure, dvoMagClassType class); 666 float PhotSys (Measure *measure, Average *average, SecFilt *secfilt, dvoMagClassType class); 667 float PhotRel (Measure *measure, Average *average, SecFilt *secfilt, dvoMagClassType class); 668 float PhotCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code, dvoMagClassType class); 669 float PhotErr (Measure *measure, dvoMagClassType class); 670 671 float PhotAve (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source); 672 float PhotRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure, dvoMagClassType class, dvoMagSourceType source); 673 float PhotAveErr (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source); 689 674 690 675 float PhotXm (PhotCode *code, Average *average, SecFilt *secfilt); -
branches/eam_branches/ipp-20140610/Ohana/src/libdvo/include/dvodb.h
r36898 r36908 22 22 23 23 /* magnitude types */ 24 enum {MAG_NONE, 24 25 typedef enum { 26 MAG_SRC_NONE, 27 MAG_SRC_CHP, 28 MAG_SRC_WRP, 29 MAG_SRC_STK, 30 } dvoMagSourceType; 31 32 typedef enum { 33 MAG_LEVEL_NONE, // -2.5*log(DN) [ie, not DN/sec] 34 MAG_LEVEL_INST, // -2.5*log(DN) [ie, not DN/sec] 35 MAG_LEVEL_CAT, // MAG_INST + 2.5*log(exptime) + C_lambda + K_lambda*(airmass - 1) 36 MAG_LEVEL_SYS, // MAG_CAT + \sum_i A_i * (color_i - color_o) [color correction for measure photcode] 37 MAG_LEVEL_REL, // MAG_SYS - Mcal [specific zero point for image] 38 MAG_LEVEL_CAL, // MAG_REL + \sum_i A_i * (color_i - color_o) [color correction for average photcode] 39 MAG_LEVEL_AVE, 40 MAG_LEVEL_REF, 41 } dvoMagLevelType; 42 43 typedef enum { 44 MAG_OPTION_NONE, 45 MAG_OPTION_MAG, 46 MAG_OPTION_FLUX, 47 MAG_OPTION_FLUX_ERR, 48 MAG_OPTION_ERR, 49 MAG_OPTION_STDEV, 50 MAG_OPTION_CHISQ, 51 MAG_OPTION_MIN, 52 MAG_OPTION_MAX, 53 MAG_OPTION_NCODE, 54 MAG_OPTION_NPHOT, // Nused 55 MAG_OPTION_UC_DIST, 56 MAG_OPTION_STACK_DET_ID, 57 MAG_OPTION_FLAGS, 58 } dvoMagOptionType; 59 60 typedef enum { 61 MAG_CLASS_NONE, 62 MAG_CLASS_PSF, 63 MAG_CLASS_KRON, 64 MAG_CLASS_APER, 65 } dvoMagClassType; 66 67 # if (0) 68 enum { 69 MAG_NONE, 25 70 26 71 // these magnitude types are from the measurement table (or derived therein) … … 53 98 // these magnitude types are from the average (secfilt) table: 54 99 // the following imply PSF magnitudes (or fluxes) 55 MAG_AVE,56 MAG_REF,57 100 MAG_STDEV, 58 101 MAG_AVE_ERR, … … 79 122 MAG_UC_DIST, 80 123 MAG_STACK_DET_ID, 81 }; 124 } ; 125 # endif 82 126 83 127 /* measure fields */ … … 173 217 MEAS_EXTERN_ID, 174 218 MEAS_EXPNAME_AS_INT, 175 MEAS_MCAL_OFFSET, 219 MEAS_MCAL_OFFSET, // make this a dvoMagOption? 176 220 MEAS_FLAT, 177 221 MEAS_CENTER_OFFSET, 178 MEAS_FLUX_PSF,179 MEAS_FLUX_PSF_ERR,180 MEAS_FLUX_KRON,181 MEAS_FLUX_KRON_ERR,182 222 MEAS_REF_COLOR, 183 223 }; … … 312 352 int table; 313 353 int ID; 314 int magMode; 354 355 dvoMagSourceType magSource; // chip, (forced) warp, stack [only relevant for averages] 356 dvoMagLevelType magLevel; // inst, cat, sys, rel, ave, ref, err, min, max, stdev, nphot, chisq, 357 dvoMagOptionType magOption; // psf, kron, aper 358 dvoMagClassType magClass; 359 315 360 char type; 316 361 PhotCode *photcode; … … 374 419 375 420 int GetMagMode PROTO((char *string)); 376 PhotCode *ParsePhotcodeField PROTO((char *field, int *mode, int def));421 int ParsePhotcodeField PROTO((dbField *field, char *fieldName)); 377 422 int ParseMeasureField PROTO((dbField *field, char *fieldName)); 378 423 int ParseAverageField PROTO((dbField *field, char *fieldName)); -
branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/LoadPhotcodesFITS.c
r36898 r36908 101 101 // photcode.equiv of 0 means "undefined" 102 102 for (i = 0; i < Ncode; i++) { 103 if (!strcasecmp(photcode[i].name, "MAG")) { 104 fprintf (stderr, "MAG is not an allowed photcode name (reserved to DVO internals)\n"); 105 free (photcode); 106 return FALSE; 107 } 108 103 109 if (photcode[i].type == PHOT_DEP) { 104 110 if (photcode[i].equiv == 0) continue; -
branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/LoadPhotcodesText.c
r28833 r36908 106 106 fprintf (stderr, "photcode values may not be 0: fix %s\n", name); 107 107 return (FALSE); 108 } 109 110 if (!strcasecmp(name, "MAG")) { 111 fprintf (stderr, "MAG is not an allowed photcode name (reserved to DVO internals)\n"); 112 return FALSE; 108 113 } 109 114 -
branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dbExtractAverages.c
r36898 r36908 52 52 dbValue dbExtractAverages (Average *average, SecFilt *secfilt, Measure *measure, dbField *field) { 53 53 54 off_t i; 55 int Nsec; 54 // off_t i; 56 55 dbValue value; 57 56 … … 182 181 break; 183 182 183 # if (0) 184 184 case AVE_MAG: 185 185 switch (field->magMode) { … … 228 228 } 229 229 } else { 230 Nsec = GetPhotcodeNsec (field->photcode->code);230 int Nsec = GetPhotcodeNsec (field->photcode->code); 231 231 if (Nsec == -1) break; 232 232 value.Int = secfilt[Nsec].flags; … … 236 236 // XXX push these into dvo_photcode_ops APIs 237 237 // XXX do I need to allow for conversion to equiv? 238 Nsec = GetPhotcodeNsec (field->photcode->code);238 int Nsec = GetPhotcodeNsec (field->photcode->code); 239 239 if (Nsec == -1) break; 240 240 value.Int = secfilt[Nsec].Ncode; 241 241 break; 242 242 case MAG_NPHOT: 243 Nsec = GetPhotcodeNsec (field->photcode->code);243 int Nsec = GetPhotcodeNsec (field->photcode->code); 244 244 if (Nsec == -1) break; 245 245 value.Int = secfilt[Nsec].Nused; … … 301 301 value.Flt = PhotXm (field->photcode, average, secfilt); 302 302 break; 303 # endif 303 304 case AVE_TYPE: 304 305 break; -
branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dbExtractMeasures.c
r36898 r36908 117 117 // if we ask for g:ave, or other SEC-level values, return the corresponding field 118 118 if (field->photcode->type == PHOT_SEC) { 119 switch (field->mag Mode) {119 switch (field->magLevel) { 120 120 // measure-like : return non-NAN if measure.equiv.photcode matches field.photcode 121 case MAG_INST: 122 case MAG_CAT: 123 case MAG_SYS: 124 case MAG_REL: 125 case MAG_CAL: 126 case MAG_ERR: 127 128 case MAG_APER_INST: 129 case MAG_APER_CAT: 130 case MAG_APER_SYS: 131 case MAG_APER_REL: 132 case MAG_APER_CAL: 133 case MAG_APER_ERR: 134 135 case MAG_KRON_INST: 136 case MAG_KRON_CAT: 137 case MAG_KRON_SYS: 138 case MAG_KRON_REL: 139 case MAG_KRON_CAL: 140 case MAG_KRON_ERR: 141 142 case MAG_PHOT_FLAGS: 121 case MAG_LEVEL_INST: 122 case MAG_LEVEL_CAT: 123 case MAG_LEVEL_SYS: 124 case MAG_LEVEL_REL: 125 case MAG_LEVEL_CAL: 143 126 equiv = myEquiv; 144 127 if (equiv && (equiv->code == field->photcode->code)) goto valid_photcode; … … 146 129 147 130 // mean-like : return value for the given photcode 148 case MAG_AVE: 149 case MAG_REF: 150 case MAG_STDEV: 151 case MAG_AVE_ERR: 152 case MAG_CHISQ: 153 154 case MAG_FLUX_PSF: 155 case MAG_FLUX_PSF_ERR: 156 157 case MAG_APER_AVE: 158 159 case MAG_KRON_AVE: 160 case MAG_FLUX_KRON: 161 case MAG_FLUX_KRON_ERR: 162 163 case MAG_MIN: 164 case MAG_MAX: 165 case MAG_UC_DIST: 166 case MAG_STACK_DET_ID: 167 168 case MAG_NCODE: 169 case MAG_NPHOT: 131 case MAG_LEVEL_AVE: 132 case MAG_LEVEL_REF: 170 133 equiv = field->photcode; 171 134 goto valid_photcode; … … 179 142 180 143 valid_photcode: 181 switch (field->magMode) { 182 case MAG_INST: 183 value.Flt = PhotInst (measure); 184 break; 185 case MAG_CAT: 186 value.Flt = PhotCat (measure); 187 break; 188 case MAG_SYS: 189 value.Flt = PhotSys (measure, average, secfilt); 190 break; 191 case MAG_REL: 192 value.Flt = PhotRel (measure, average, secfilt); 193 break; 194 case MAG_CAL: 195 value.Flt = PhotCal (measure, average, secfilt, measure, equiv); 196 break; 197 case MAG_AVE: 198 value.Flt = PhotAve (equiv, average, secfilt); 199 break; 200 case MAG_REF: 201 value.Flt = PhotRef (equiv, average, secfilt, measure); 202 break; 203 case MAG_ERR: 204 value.Flt = measure[0].dM; 205 break; 206 case MAG_AVE_ERR: 207 value.Flt = PhotAveErr (equiv, average, secfilt); 208 break; 209 210 case MAG_APER_INST: 211 value.Flt = PhotAperInst (measure); 212 break; 213 case MAG_APER_CAT: 214 value.Flt = PhotAperCat (measure); 215 break; 216 case MAG_APER_SYS: 217 value.Flt = PhotAperSys (measure, average, secfilt); 218 break; 219 case MAG_APER: 220 case MAG_APER_REL: 221 value.Flt = PhotAperRel (measure, average, secfilt); 222 break; 223 case MAG_APER_CAL: 224 value.Flt = PhotAperCal (measure, average, secfilt, measure, equiv); 225 break; 226 case MAG_APER_AVE: 227 value.Flt = PhotAperAve (equiv, average, secfilt); 228 break; 229 case MAG_APER_REF: 230 value.Flt = PhotAperRef (equiv, average, secfilt, measure); 231 break; 232 case MAG_APER_ERR: 233 value.Flt = measure[0].dM; 234 break; 235 236 case MAG_KRON_INST: 237 value.Flt = PhotKronInst (measure); 238 break; 239 case MAG_KRON_CAT: 240 value.Flt = PhotKronCat (measure); 241 break; 242 case MAG_KRON_SYS: 243 value.Flt = PhotKronSys (measure, average, secfilt); 244 break; 245 case MAG_KRON: 246 case MAG_KRON_REL: 247 value.Flt = PhotKronRel (measure, average, secfilt); 248 break; 249 case MAG_KRON_CAL: 250 value.Flt = PhotKronCal (measure, average, secfilt, measure, equiv); 251 break; 252 case MAG_KRON_AVE: 253 value.Flt = PhotKronAve (equiv, average, secfilt); 254 break; 255 case MAG_KRON_REF: 256 value.Flt = PhotKronRef (equiv, average, secfilt, measure); 257 break; 258 case MAG_KRON_ERR: 259 value.Flt = measure[0].dMkron; 260 break; 261 262 case MAG_PHOT_FLAGS: 263 if ((field->photcode->type == PHOT_REF) || (field->photcode->type == PHOT_DEP)) { 264 value.Int = measure[0].photFlags; 144 switch (field->magOption) { 145 case MAG_OPTION_MAG: 146 switch (field->magLevel) { 147 case MAG_LEVEL_INST: 148 value.Flt = PhotInst (measure, field->magClass); 149 break; 150 case MAG_LEVEL_CAT: 151 value.Flt = PhotCat (measure, field->magClass); 152 break; 153 case MAG_LEVEL_SYS: 154 value.Flt = PhotSys (measure, average, secfilt, field->magClass); 155 break; 156 case MAG_LEVEL_REL: 157 value.Flt = PhotRel (measure, average, secfilt, field->magClass); 158 break; 159 case MAG_LEVEL_CAL: 160 value.Flt = PhotCal (measure, average, secfilt, measure, equiv, field->magClass); 161 break; 162 case MAG_LEVEL_AVE: 163 value.Flt = PhotAve (equiv, average, secfilt, field->magClass, field->magSource); 164 break; 165 case MAG_LEVEL_REF: 166 value.Flt = PhotRef (equiv, average, secfilt, measure, field->magClass, field->magSource); 167 break; 168 case MAG_LEVEL_NONE: 169 break; 265 170 } 266 171 break; 267 268 case MAG_NCODE: 269 if (equiv == NULL) break; 270 Nsec = GetPhotcodeNsec (equiv->code); 271 if (Nsec == -1) break; 272 value.Int = secfilt[Nsec].Ncode; 172 case MAG_OPTION_ERR: 173 switch (field->magLevel) { 174 case MAG_LEVEL_INST: 175 case MAG_LEVEL_CAT: 176 case MAG_LEVEL_SYS: 177 case MAG_LEVEL_REL: 178 case MAG_LEVEL_CAL: 179 value.Flt = PhotErr (measure, field->magClass); 180 break; 181 case MAG_LEVEL_AVE: 182 case MAG_LEVEL_REF: 183 value.Flt = PhotAveErr (equiv, average, secfilt, field->magClass, field->magSource); 184 break; 185 case MAG_LEVEL_NONE: 186 break; 187 } 273 188 break; 274 case MAG_NPHOT: 275 if (equiv == NULL) break; 276 Nsec = GetPhotcodeNsec (equiv->code); 277 if (Nsec == -1) break; 278 value.Int = secfilt[Nsec].Nused; 279 break; 280 281 case MAG_CHISQ: 282 value.Flt = PhotXm (equiv, average, secfilt); 283 break; 284 case MAG_STDEV: 285 value.Flt = PhotMstdev (equiv, average, secfilt); 286 break; 287 case MAG_MIN: 288 value.Flt = PhotMmin (equiv, average, secfilt); 289 break; 290 case MAG_MAX: 291 value.Flt = PhotMmax (equiv, average, secfilt); 292 break; 293 case MAG_UC_DIST: 294 value.Flt = PhotUCdist (equiv, average, secfilt); 295 break; 296 297 case MAG_FLUX_PSF: 298 value.Flt = PhotAveFluxPSF (field->photcode, average, secfilt); 299 break; 300 case MAG_FLUX_PSF_ERR: 301 value.Flt = PhotAvedFluxPSF (field->photcode, average, secfilt); 302 break; 303 case MAG_FLUX_KRON: 304 value.Flt = PhotAveFluxKron (field->photcode, average, secfilt); 305 break; 306 case MAG_FLUX_KRON_ERR: 307 value.Flt = PhotAvedFluxKron (field->photcode, average, secfilt); 189 190 case MAG_OPTION_FLUX: 191 case MAG_OPTION_FLUX_ERR: 192 case MAG_OPTION_STDEV: 193 case MAG_OPTION_CHISQ: 194 case MAG_OPTION_MIN: 195 case MAG_OPTION_MAX: 196 case MAG_OPTION_NCODE: 197 case MAG_OPTION_NPHOT: 198 case MAG_OPTION_UC_DIST: 199 case MAG_OPTION_STACK_DET_ID: 200 case MAG_OPTION_FLAGS: 201 case MAG_OPTION_NONE: 308 202 break; 309 203 } … … 777 671 break; 778 672 779 case MEAS_FLUX_PSF: /* OK */780 value.Flt = measure[0].FluxPSF;781 break;782 case MEAS_FLUX_PSF_ERR: /* OK */783 value.Flt = measure[0].dFluxPSF;784 break;785 case MEAS_FLUX_KRON: /* OK */786 value.Flt = measure[0].FluxKron;787 break;788 case MEAS_FLUX_KRON_ERR: /* OK */789 value.Flt = measure[0].dFluxKron;790 break;673 // case MEAS_FLUX_PSF: /* OK */ 674 // value.Flt = measure[0].FluxPSF; 675 // break; 676 // case MEAS_FLUX_PSF_ERR: /* OK */ 677 // value.Flt = measure[0].dFluxPSF; 678 // break; 679 // case MEAS_FLUX_KRON: /* OK */ 680 // value.Flt = measure[0].FluxKron; 681 // break; 682 // case MEAS_FLUX_KRON_ERR: /* OK */ 683 // value.Flt = measure[0].dFluxKron; 684 // break; 791 685 } 792 686 return (value); -
branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dbFields.c
r36898 r36908 9 9 for (i = 0; i < Nfields; i++) { 10 10 if (fields[i].name != NULL) free (fields[i].name); 11 if (fields[i].photcode != NULL) {12 if (fields[i].photcode[0].type == PHOT_MAG) {13 free (fields[i].photcode);14 }15 }16 11 } 17 12 free (fields); … … 24 19 field->ID = 0; 25 20 field->type = OPIHI_FLT; 26 field->magMode = 0; 21 22 field->magSource = MAG_SRC_NONE; 23 field->magLevel = MAG_LEVEL_NONE; 24 field->magClass = MAG_CLASS_NONE; 25 field->magOption = MAG_OPTION_NONE; 26 27 27 field->photcode = NULL; 28 28 } 29 29 30 dvoMagSourceType GetMagSource (char *string) { 31 32 if (!strcasecmp (string, "chip")) return (MAG_SRC_CHP); 33 if (!strcasecmp (string, "warp")) return (MAG_SRC_WRP); 34 if (!strcasecmp (string, "stack")) return (MAG_SRC_STK); 35 36 if (!strcasecmp (string, "chp")) return (MAG_SRC_CHP); 37 if (!strcasecmp (string, "wrp")) return (MAG_SRC_WRP); 38 if (!strcasecmp (string, "stk")) return (MAG_SRC_STK); 39 40 return MAG_SRC_NONE; 41 } 42 43 dvoMagLevelType GetMagLevel (char *string) { 44 45 if (!strcasecmp (string, "inst")) return (MAG_LEVEL_INST); 46 if (!strcasecmp (string, "cat")) return (MAG_LEVEL_CAT); 47 if (!strcasecmp (string, "sys")) return (MAG_LEVEL_SYS); 48 if (!strcasecmp (string, "rel")) return (MAG_LEVEL_REL); 49 if (!strcasecmp (string, "cal")) return (MAG_LEVEL_CAL); 50 if (!strcasecmp (string, "ave")) return (MAG_LEVEL_AVE); 51 if (!strcasecmp (string, "ref")) return (MAG_LEVEL_REF); 52 53 return MAG_LEVEL_NONE; 54 } 55 56 dvoMagClassType GetMagClass (char *string) { 57 58 if (!strcasecmp (string, "psf")) return (MAG_CLASS_PSF); 59 if (!strcasecmp (string, "kron")) return (MAG_CLASS_KRON); 60 if (!strcasecmp (string, "aper")) return (MAG_CLASS_APER); 61 if (!strcasecmp (string, "ap")) return (MAG_CLASS_APER); 62 63 return MAG_CLASS_NONE; 64 } 65 66 dvoMagOptionType GetMagOption (char *string) { 67 68 if (!strcasecmp (string, "mag")) return (MAG_OPTION_MAG); 69 if (!strcasecmp (string, "flux")) return (MAG_OPTION_FLUX); 70 if (!strcasecmp (string, "fluxerr")) return (MAG_OPTION_FLUX_ERR); 71 if (!strcasecmp (string, "err")) return (MAG_OPTION_ERR); 72 if (!strcasecmp (string, "stdev")) return (MAG_OPTION_STDEV); 73 if (!strcasecmp (string, "chisq")) return (MAG_OPTION_CHISQ); 74 if (!strcasecmp (string, "min")) return (MAG_OPTION_MIN); 75 if (!strcasecmp (string, "max")) return (MAG_OPTION_MAX); 76 if (!strcasecmp (string, "ncode")) return (MAG_OPTION_NCODE); 77 if (!strcasecmp (string, "nphot")) return (MAG_OPTION_NPHOT); 78 if (!strcasecmp (string, "uc_dist")) return (MAG_OPTION_UC_DIST); 79 if (!strcasecmp (string, "stack_det_id")) return (MAG_OPTION_STACK_DET_ID); 80 if (!strcasecmp (string, "flags")) return (MAG_OPTION_FLAGS); 81 82 return MAG_OPTION_NONE; 83 } 84 85 # if (0) 30 86 int GetMagMode (char *string) { 31 87 … … 95 151 return (MAG_NONE); 96 152 } 97 98 PhotCode *ParsePhotcodeField (char *field, int *mode, int defMode) { 99 100 int useDefault; 101 char *tmpstring, *p; 102 PhotCode *code; 103 104 *mode = defMode; 105 useDefault = TRUE; 106 107 p = strchr (field, ':'); 108 if (p != NULL) { 109 *mode = GetMagMode (p + 1); 110 useDefault = FALSE; 111 if (*mode == MAG_NONE) return (NULL); 112 tmpstring = strncreate (field, p - field); 113 } else { 114 tmpstring = strcreate (field); 115 } 116 if (!strcasecmp (tmpstring, "MAG")) { 117 ALLOCATE (code, PhotCode, 1); 118 code[0].code = 0; 119 strcpy (code[0].name, "MAG"); 120 code[0].type = PHOT_MAG; 121 // the field call 'mag' is only valid for mextract 122 // it should default to REL, but other types should default to AVE 123 if (useDefault) { 124 *mode = MAG_REL; 153 # endif 154 155 // field may be of the form mag:psf:inst:wrp. except for the first subword, 156 // the words may be in any order 157 int ParsePhotcodeField (dbField *field, char *fieldName) { 158 159 int j; 160 161 // defaults: 162 field->ID = MEAS_MAG; // change if not true in the end? 163 field->magSource = MAG_SRC_CHP; 164 field->magLevel = MAG_LEVEL_AVE; 165 field->magClass = MAG_CLASS_PSF; 166 field->magOption = MAG_OPTION_MAG; 167 168 // make a local working copy of fieldName and replace ':' with spaces 169 char *fieldCopy = strcreate(fieldName); 170 for (j = 0; fieldCopy[j]; j++) { 171 if (fieldCopy[j] == ':') fieldCopy[j] = ' '; 172 } 173 174 char *firstWord = getword(fieldCopy); 175 176 // firstWord may be either mag [mextract] or photcode 177 if (!strcasecmp (firstWord, "MAG")) { 178 // default level for 'mag' is rel 179 field->magLevel = MAG_LEVEL_REL; 180 } 181 PhotCode *code = GetPhotcodebyName (firstWord); 182 free (firstWord); 183 184 if (!code) return FALSE; 185 186 // enforce compatibility 187 if (code->type == PHOT_REF) { 188 field->magLevel = MAG_LEVEL_CAT; 189 } 190 if (code->type == PHOT_DEP) { 191 field->magLevel = MAG_LEVEL_REL; 192 } 193 194 // look at the remaining words and assign properties as approrpiate 195 char *ptr = skipword(fieldCopy); 196 while (ptr) { 197 198 char *word = getword(ptr); 199 if (!word) break; 200 201 dvoMagSourceType source = GetMagSource (word); 202 if (source != MAG_SRC_NONE) { 203 field->magSource = source; 204 ptr = skipword (ptr); 205 continue; 125 206 } 126 free (tmpstring); 127 return (code); 128 } 129 code = GetPhotcodebyName (tmpstring); 130 if (!code) { 131 return NULL; 132 } 133 134 // enforce compatibility 135 if (useDefault) { 136 if (code[0].type == PHOT_REF) { 137 *mode = MAG_CAT; 207 208 dvoMagLevelType level = GetMagLevel (word); 209 if (level != MAG_LEVEL_NONE) { 210 field->magLevel = level; 211 ptr = skipword (ptr); 212 continue; 138 213 } 139 if (code[0].type == PHOT_DEP) { 140 *mode = MAG_REL; 214 215 dvoMagClassType class = GetMagClass (word); 216 if (class != MAG_CLASS_NONE) { 217 field->magClass = class; 218 ptr = skipword (ptr); 219 continue; 141 220 } 142 } 143 free (tmpstring); 144 return (code); 145 } 146 147 # define ESCAPE(F,M,T) { \ 148 field->ID = (F); \ 149 field->magMode = (M); \ 150 field->type = (T); \ 151 field->photcode = NULL; \ 152 return (TRUE); } 153 154 int ParseMeasureField (dbField *field, char *fieldName) { 155 156 int mode; 157 PhotCode *code; 158 159 field->table = DVO_TABLE_MEASURE; 160 field->name = strcreate (fieldName); 161 162 if (!strcasecmp (fieldName, "GLON")) { 163 dbExtractMeasuresInitTransform (COORD_GALACTIC); 164 ESCAPE (MEAS_GLON, MAG_NONE, OPIHI_FLT); 165 } 166 if (!strcasecmp (fieldName, "GLAT")) { 167 dbExtractMeasuresInitTransform (COORD_GALACTIC); 168 ESCAPE (MEAS_GLAT, MAG_NONE, OPIHI_FLT); 169 } 170 if (!strcasecmp (fieldName, "GLON:AVE")) { 171 dbExtractMeasuresInitTransform (COORD_GALACTIC); 172 ESCAPE (MEAS_GLON_AVE, MAG_NONE, OPIHI_FLT); 173 } 174 if (!strcasecmp (fieldName, "GLAT:AVE")) { 175 dbExtractMeasuresInitTransform (COORD_GALACTIC); 176 ESCAPE (MEAS_GLAT_AVE, MAG_NONE, OPIHI_FLT); 177 } 178 179 if (!strcasecmp (fieldName, "ELON")) { 180 dbExtractMeasuresInitTransform (COORD_ECLIPTIC); 181 ESCAPE (MEAS_ELON, MAG_NONE, OPIHI_FLT); 182 } 183 if (!strcasecmp (fieldName, "ELAT")) { 184 dbExtractMeasuresInitTransform (COORD_ECLIPTIC); 185 ESCAPE (MEAS_ELAT, MAG_NONE, OPIHI_FLT); 186 } 187 if (!strcasecmp (fieldName, "ELON:AVE")) { 188 dbExtractMeasuresInitTransform (COORD_ECLIPTIC); 189 ESCAPE (MEAS_ELON_AVE, MAG_NONE, OPIHI_FLT); 190 } 191 if (!strcasecmp (fieldName, "ELAT:AVE")) { 192 dbExtractMeasuresInitTransform (COORD_ECLIPTIC); 193 ESCAPE (MEAS_ELAT_AVE, MAG_NONE, OPIHI_FLT); 194 } 195 196 if (!strcasecmp (fieldName, "RA")) ESCAPE (MEAS_RA, MAG_NONE, OPIHI_FLT); 197 if (!strcasecmp (fieldName, "DEC")) ESCAPE (MEAS_DEC, MAG_NONE, OPIHI_FLT); 198 if (!strcasecmp (fieldName, "RA:AVE")) ESCAPE (MEAS_RA_AVE, MAG_NONE, OPIHI_FLT); 199 if (!strcasecmp (fieldName, "DEC:AVE")) ESCAPE (MEAS_DEC_AVE, MAG_NONE, OPIHI_FLT); 200 if (!strcasecmp (fieldName, "RA:ERR")) ESCAPE (MEAS_RA_AVE_ERR, MAG_NONE, OPIHI_FLT); 201 if (!strcasecmp (fieldName, "DEC:ERR")) ESCAPE (MEAS_DEC_AVE_ERR, MAG_NONE, OPIHI_FLT); 202 if (!strcasecmp (fieldName, "uRA")) ESCAPE (MEAS_U_RA, MAG_NONE, OPIHI_FLT); 203 if (!strcasecmp (fieldName, "uDEC")) ESCAPE (MEAS_U_DEC, MAG_NONE, OPIHI_FLT); 204 if (!strcasecmp (fieldName, "duRA")) ESCAPE (MEAS_U_RA_ERR, MAG_NONE, OPIHI_FLT); 205 if (!strcasecmp (fieldName, "duDEC")) ESCAPE (MEAS_U_DEC_ERR, MAG_NONE, OPIHI_FLT); 206 if (!strcasecmp (fieldName, "PAR")) ESCAPE (MEAS_PAR, MAG_NONE, OPIHI_FLT); 207 if (!strcasecmp (fieldName, "dPAR")) ESCAPE (MEAS_PAR_ERR, MAG_NONE, OPIHI_FLT); 208 if (!strcasecmp (fieldName, "dR")) ESCAPE (MEAS_RA_OFFSET, MAG_NONE, OPIHI_FLT); 209 if (!strcasecmp (fieldName, "dD")) ESCAPE (MEAS_DEC_OFFSET, MAG_NONE, OPIHI_FLT); 210 if (!strcasecmp (fieldName, "dR:FIT")) ESCAPE (MEAS_RA_FIT_OFFSET, MAG_NONE, OPIHI_FLT); 211 if (!strcasecmp (fieldName, "dD:FIT")) ESCAPE (MEAS_DEC_FIT_OFFSET, MAG_NONE, OPIHI_FLT); 212 if (!strcasecmp (fieldName, "dR:ERR")) ESCAPE (MEAS_RA_OFFSET_ERR, MAG_NONE, OPIHI_FLT); 213 if (!strcasecmp (fieldName, "dD:ERR")) ESCAPE (MEAS_DEC_OFFSET_ERR, MAG_NONE, OPIHI_FLT); 214 if (!strcasecmp (fieldName, "ChiSqPos")) ESCAPE (MEAS_CHISQ_POS, MAG_NONE, OPIHI_FLT); 215 if (!strcasecmp (fieldName, "ChiSqPM")) ESCAPE (MEAS_CHISQ_PM, MAG_NONE, OPIHI_FLT); 216 if (!strcasecmp (fieldName, "ChiSqPar")) ESCAPE (MEAS_CHISQ_PAR, MAG_NONE, OPIHI_FLT); 217 if (!strcasecmp (fieldName, "Tmean")) ESCAPE (MEAS_TMEAN, MAG_NONE, OPIHI_FLT); 218 if (!strcasecmp (fieldName, "Trange")) ESCAPE (MEAS_TRANGE, MAG_NONE, OPIHI_FLT); 219 if (!strcasecmp (fieldName, "nmeas")) ESCAPE (MEAS_NMEAS, MAG_NONE, OPIHI_INT); 220 if (!strcasecmp (fieldName, "nmiss")) ESCAPE (MEAS_NMISS, MAG_NONE, OPIHI_INT); 221 if (!strcasecmp (fieldName, "npos")) ESCAPE (MEAS_NPOS, MAG_NONE, OPIHI_INT); 222 if (!strcasecmp (fieldName, "OBJFLAGS")) ESCAPE (MEAS_OBJ_FLAGS, MAG_NONE, OPIHI_INT); 223 if (!strcasecmp (fieldName, "OBJ_FLAGS")) ESCAPE (MEAS_OBJ_FLAGS, MAG_NONE, OPIHI_INT); 224 if (!strcasecmp (fieldName, "OBJ_PHOT_FLAGS")) ESCAPE (MEAS_SECFILT_FLAGS, MAG_NONE, OPIHI_INT); 225 if (!strcasecmp (fieldName, "SECFLAGS")) ESCAPE (MEAS_SECFILT_FLAGS, MAG_NONE, OPIHI_INT); 226 if (!strcasecmp (fieldName, "SEC_FLAGS")) ESCAPE (MEAS_SECFILT_FLAGS, MAG_NONE, OPIHI_INT); 227 if (!strcasecmp (fieldName, "SECFILT_FLAGS")) ESCAPE (MEAS_SECFILT_FLAGS, MAG_NONE, OPIHI_INT); 228 if (!strcasecmp (fieldName, "DB_FLAGS")) ESCAPE (MEAS_DB_FLAGS, MAG_NONE, OPIHI_INT); 229 if (!strcasecmp (fieldName, "PHOT_FLAGS")) ESCAPE (MEAS_PHOT_FLAGS, MAG_NONE, OPIHI_INT); 230 if (!strcasecmp (fieldName, "DBFLAGS")) ESCAPE (MEAS_DB_FLAGS, MAG_NONE, OPIHI_INT); 231 if (!strcasecmp (fieldName, "PHOTFLAGS")) ESCAPE (MEAS_PHOT_FLAGS, MAG_NONE, OPIHI_INT); 232 if (!strcasecmp (fieldName, "AIRMASS")) ESCAPE (MEAS_AIRMASS, MAG_NONE, OPIHI_FLT); 233 if (!strcasecmp (fieldName, "MEAN_AIRMASS")) ESCAPE (MEAS_MEAN_AIRMASS, MAG_NONE, OPIHI_FLT); 234 if (!strcasecmp (fieldName, "ALT")) ESCAPE (MEAS_ALT, MAG_NONE, OPIHI_FLT); 235 if (!strcasecmp (fieldName, "AZ")) ESCAPE (MEAS_AZ, MAG_NONE, OPIHI_FLT); 236 if (!strcasecmp (fieldName, "EXPTIME")) ESCAPE (MEAS_EXPTIME, MAG_NONE, OPIHI_FLT); 237 if (!strcasecmp (fieldName, "PHOTCODE")) ESCAPE (MEAS_PHOTCODE, MAG_NONE, OPIHI_INT); 238 if (!strcasecmp (fieldName, "PHOTCODE:KLAM")) ESCAPE (MEAS_PHOTCODE_KLAM, MAG_NONE, OPIHI_FLT); 239 if (!strcasecmp (fieldName, "PHOTCODE:C")) ESCAPE (MEAS_PHOTCODE_C, MAG_NONE, OPIHI_FLT); 240 if (!strcasecmp (fieldName, "PHOTCODE:EQUIV")) ESCAPE (MEAS_PHOTCODE_EQUIV, MAG_NONE, OPIHI_INT); 241 if (!strcasecmp (fieldName, "TIME")) ESCAPE (MEAS_TIME, MAG_NONE, OPIHI_FLT); 242 if (!strcasecmp (fieldName, "FWHM")) ESCAPE (MEAS_FWHM, MAG_NONE, OPIHI_FLT); 243 if (!strcasecmp (fieldName, "FWHM_MAJ")) ESCAPE (MEAS_FWHM_MAJ, MAG_NONE, OPIHI_FLT); 244 if (!strcasecmp (fieldName, "FWHM_MIN")) ESCAPE (MEAS_FWHM_MIN, MAG_NONE, OPIHI_FLT); 245 if (!strcasecmp (fieldName, "THETA")) ESCAPE (MEAS_THETA, MAG_NONE, OPIHI_FLT); 246 if (!strcasecmp (fieldName, "POSANGLE")) ESCAPE (MEAS_POSANGLE, MAG_NONE, OPIHI_FLT); 247 if (!strcasecmp (fieldName, "PLATESCALE")) ESCAPE (MEAS_PLATESCALE, MAG_NONE, OPIHI_FLT); 248 if (!strcasecmp (fieldName, "MXX")) ESCAPE (MEAS_MXX, MAG_NONE, OPIHI_FLT); 249 if (!strcasecmp (fieldName, "MYY")) ESCAPE (MEAS_MYY, MAG_NONE, OPIHI_FLT); 250 if (!strcasecmp (fieldName, "MXY")) ESCAPE (MEAS_MXY, MAG_NONE, OPIHI_FLT); 251 if (!strcasecmp (fieldName, "DOPHOT")) ESCAPE (MEAS_DOPHOT, MAG_NONE, OPIHI_INT); 252 if (!strcasecmp (fieldName, "XCCD")) ESCAPE (MEAS_XCCD, MAG_NONE, OPIHI_FLT); 253 if (!strcasecmp (fieldName, "YCCD")) ESCAPE (MEAS_YCCD, MAG_NONE, OPIHI_FLT); 254 if (!strcasecmp (fieldName, "XCCD:ERR")) ESCAPE (MEAS_XCCD_ERR, MAG_NONE, OPIHI_FLT); 255 if (!strcasecmp (fieldName, "YCCD:ERR")) ESCAPE (MEAS_YCCD_ERR, MAG_NONE, OPIHI_FLT); 256 if (!strcasecmp (fieldName, "XFIX")) ESCAPE (MEAS_XFIX, MAG_NONE, OPIHI_FLT); 257 if (!strcasecmp (fieldName, "YFIX")) ESCAPE (MEAS_YFIX, MAG_NONE, OPIHI_FLT); 258 if (!strcasecmp (fieldName, "POS_SYS_ERR")) ESCAPE (MEAS_POS_SYS_ERR, MAG_NONE, OPIHI_FLT); 259 if (!strcasecmp (fieldName, "XFIELD")) ESCAPE (MEAS_XFIELD, MAG_NONE, OPIHI_FLT); 260 if (!strcasecmp (fieldName, "YFIELD")) ESCAPE (MEAS_YFIELD, MAG_NONE, OPIHI_FLT); 261 if (!strcasecmp (fieldName, "XMOSAIC")) ESCAPE (MEAS_XMOSAIC, MAG_NONE, OPIHI_FLT); 262 if (!strcasecmp (fieldName, "YMOSAIC")) ESCAPE (MEAS_YMOSAIC, MAG_NONE, OPIHI_FLT); 263 if (!strcasecmp (fieldName, "XCHIP")) ESCAPE (MEAS_XCCD, MAG_NONE, OPIHI_FLT); 264 if (!strcasecmp (fieldName, "YCHIP")) ESCAPE (MEAS_YCCD, MAG_NONE, OPIHI_FLT); 265 if (!strcasecmp (fieldName, "XFPA")) ESCAPE (MEAS_XMOSAIC, MAG_NONE, OPIHI_FLT); 266 if (!strcasecmp (fieldName, "YFPA")) ESCAPE (MEAS_YMOSAIC, MAG_NONE, OPIHI_FLT); 267 if (!strcasecmp (fieldName, "DETID")) ESCAPE (MEAS_DET_ID, MAG_NONE, OPIHI_INT); 268 if (!strcasecmp (fieldName, "OBJID")) ESCAPE (MEAS_OBJ_ID, MAG_NONE, OPIHI_INT); 269 if (!strcasecmp (fieldName, "CATID")) ESCAPE (MEAS_CAT_ID, MAG_NONE, OPIHI_INT); 270 if (!strcasecmp (fieldName, "IMAGEID")) ESCAPE (MEAS_IMAGE_ID, MAG_NONE, OPIHI_INT); 271 if (!strcasecmp (fieldName, "EXTERNID")) ESCAPE (MEAS_EXTERN_ID, MAG_NONE, OPIHI_INT); 272 if (!strcasecmp (fieldName, "EXPNAME")) ESCAPE (MEAS_EXPNAME_AS_INT, MAG_NONE, OPIHI_INT); 273 if (!strcasecmp (fieldName, "PSF_QF")) ESCAPE (MEAS_PSF_QF, MAG_NONE, OPIHI_FLT); 274 if (!strcasecmp (fieldName, "PSF_QF_PERFECT")) ESCAPE (MEAS_PSF_QF_PERFECT, MAG_NONE, OPIHI_FLT); 275 if (!strcasecmp (fieldName, "PSF_CHISQ")) ESCAPE (MEAS_PSF_CHISQ, MAG_NONE, OPIHI_FLT); 276 if (!strcasecmp (fieldName, "PSF_NDOF")) ESCAPE (MEAS_PSF_NDOF, MAG_NONE, OPIHI_INT); 277 if (!strcasecmp (fieldName, "PSF_NPIX")) ESCAPE (MEAS_PSF_NPIX, MAG_NONE, OPIHI_INT); 278 if (!strcasecmp (fieldName, "CR_NSIGMA")) ESCAPE (MEAS_CR_NSIGMA, MAG_NONE, OPIHI_FLT); 279 if (!strcasecmp (fieldName, "EXT_NSIGMA")) ESCAPE (MEAS_EXT_NSIGMA, MAG_NONE, OPIHI_FLT); 280 if (!strcasecmp (fieldName, "SKY")) ESCAPE (MEAS_SKY, MAG_NONE, OPIHI_FLT); 281 if (!strcasecmp (fieldName, "SKY_ERR")) ESCAPE (MEAS_dSKY, MAG_NONE, OPIHI_FLT); 282 if (!strcasecmp (fieldName, "MCAL_OFFSET")) ESCAPE (MEAS_MCAL_OFFSET, MAG_NONE, OPIHI_FLT); 283 if (!strcasecmp (fieldName, "FLAT")) ESCAPE (MEAS_FLAT, MAG_NONE, OPIHI_FLT); 284 if (!strcasecmp (fieldName, "CENTER_OFFSET")) ESCAPE (MEAS_CENTER_OFFSET, MAG_NONE, OPIHI_FLT); 285 if (!strcasecmp (fieldName, "FLUX")) ESCAPE (MEAS_FLUX_PSF, MAG_NONE, OPIHI_FLT); 286 if (!strcasecmp (fieldName, "FLUX_ERR")) ESCAPE (MEAS_FLUX_PSF_ERR, MAG_NONE, OPIHI_FLT); 287 if (!strcasecmp (fieldName, "FLUX_PSF")) ESCAPE (MEAS_FLUX_PSF, MAG_NONE, OPIHI_FLT); 288 if (!strcasecmp (fieldName, "FLUX_PSF_ERR")) ESCAPE (MEAS_FLUX_PSF_ERR, MAG_NONE, OPIHI_FLT); 289 if (!strcasecmp (fieldName, "FLUX_KRON")) ESCAPE (MEAS_FLUX_KRON, MAG_NONE, OPIHI_FLT); 290 if (!strcasecmp (fieldName, "FLUX_KRON_ERR")) ESCAPE (MEAS_FLUX_KRON_ERR, MAG_NONE, OPIHI_FLT); 291 if (!strcasecmp (fieldName, "REF_COLOR")) ESCAPE (MEAS_REF_COLOR, MAG_NONE, OPIHI_FLT); 292 293 // for words that don't parse, try a photcode 294 295 // check for code:mode in photcode name 296 code = ParsePhotcodeField (fieldName, &mode, MAG_AVE); 297 if (code == NULL) { 298 gprint (GP_ERR, "unknown field '%s' for measurement table in DVO database\n", fieldName); 299 return (FALSE); 300 } 301 302 field->ID = MEAS_MAG; 303 field->magMode = mode; 304 switch (mode) { 305 case MAG_STACK_DET_ID: 306 case MAG_NCODE: 307 case MAG_NPHOT: 308 case MAG_PHOT_FLAGS: 221 222 dvoMagOptionType option = GetMagOption (word); 223 if (option != MAG_OPTION_NONE) { 224 field->magOption = option; 225 ptr = skipword (ptr); 226 continue; 227 } 228 229 fprintf (stderr, "ERROR: unknown mag/photocode argument %s\n", word); 230 free (word); 231 } 232 233 switch (field->magOption) { 234 case MAG_OPTION_STACK_DET_ID: 235 case MAG_OPTION_NCODE: 236 case MAG_OPTION_NPHOT: 237 case MAG_OPTION_FLAGS: 309 238 field->type = OPIHI_INT; 310 239 break; … … 314 243 } 315 244 field->photcode = code; 245 return TRUE; 246 } 247 248 // field needs to be initialized with dbInitField() 249 # define ESCAPE(F,T) { \ 250 field->ID = (F); \ 251 field->type = (T); \ 252 return (TRUE); } 253 254 int ParseMeasureField (dbField *field, char *fieldName) { 255 256 field->table = DVO_TABLE_MEASURE; 257 field->name = strcreate (fieldName); 258 259 if (!strcasecmp (fieldName, "GLON")) { 260 dbExtractMeasuresInitTransform (COORD_GALACTIC); 261 ESCAPE (MEAS_GLON, OPIHI_FLT); 262 } 263 if (!strcasecmp (fieldName, "GLAT")) { 264 dbExtractMeasuresInitTransform (COORD_GALACTIC); 265 ESCAPE (MEAS_GLAT, OPIHI_FLT); 266 } 267 if (!strcasecmp (fieldName, "GLON:AVE")) { 268 dbExtractMeasuresInitTransform (COORD_GALACTIC); 269 ESCAPE (MEAS_GLON_AVE, OPIHI_FLT); 270 } 271 if (!strcasecmp (fieldName, "GLAT:AVE")) { 272 dbExtractMeasuresInitTransform (COORD_GALACTIC); 273 ESCAPE (MEAS_GLAT_AVE, OPIHI_FLT); 274 } 275 276 if (!strcasecmp (fieldName, "ELON")) { 277 dbExtractMeasuresInitTransform (COORD_ECLIPTIC); 278 ESCAPE (MEAS_ELON, OPIHI_FLT); 279 } 280 if (!strcasecmp (fieldName, "ELAT")) { 281 dbExtractMeasuresInitTransform (COORD_ECLIPTIC); 282 ESCAPE (MEAS_ELAT, OPIHI_FLT); 283 } 284 if (!strcasecmp (fieldName, "ELON:AVE")) { 285 dbExtractMeasuresInitTransform (COORD_ECLIPTIC); 286 ESCAPE (MEAS_ELON_AVE, OPIHI_FLT); 287 } 288 if (!strcasecmp (fieldName, "ELAT:AVE")) { 289 dbExtractMeasuresInitTransform (COORD_ECLIPTIC); 290 ESCAPE (MEAS_ELAT_AVE, OPIHI_FLT); 291 } 292 293 if (!strcasecmp (fieldName, "RA")) ESCAPE (MEAS_RA, OPIHI_FLT); 294 if (!strcasecmp (fieldName, "DEC")) ESCAPE (MEAS_DEC, OPIHI_FLT); 295 if (!strcasecmp (fieldName, "RA:AVE")) ESCAPE (MEAS_RA_AVE, OPIHI_FLT); 296 if (!strcasecmp (fieldName, "DEC:AVE")) ESCAPE (MEAS_DEC_AVE, OPIHI_FLT); 297 if (!strcasecmp (fieldName, "RA:ERR")) ESCAPE (MEAS_RA_AVE_ERR, OPIHI_FLT); 298 if (!strcasecmp (fieldName, "DEC:ERR")) ESCAPE (MEAS_DEC_AVE_ERR, OPIHI_FLT); 299 if (!strcasecmp (fieldName, "uRA")) ESCAPE (MEAS_U_RA, OPIHI_FLT); 300 if (!strcasecmp (fieldName, "uDEC")) ESCAPE (MEAS_U_DEC, OPIHI_FLT); 301 if (!strcasecmp (fieldName, "duRA")) ESCAPE (MEAS_U_RA_ERR, OPIHI_FLT); 302 if (!strcasecmp (fieldName, "duDEC")) ESCAPE (MEAS_U_DEC_ERR, OPIHI_FLT); 303 if (!strcasecmp (fieldName, "PAR")) ESCAPE (MEAS_PAR, OPIHI_FLT); 304 if (!strcasecmp (fieldName, "dPAR")) ESCAPE (MEAS_PAR_ERR, OPIHI_FLT); 305 if (!strcasecmp (fieldName, "dR")) ESCAPE (MEAS_RA_OFFSET, OPIHI_FLT); 306 if (!strcasecmp (fieldName, "dD")) ESCAPE (MEAS_DEC_OFFSET, OPIHI_FLT); 307 if (!strcasecmp (fieldName, "dR:FIT")) ESCAPE (MEAS_RA_FIT_OFFSET, OPIHI_FLT); 308 if (!strcasecmp (fieldName, "dD:FIT")) ESCAPE (MEAS_DEC_FIT_OFFSET, OPIHI_FLT); 309 if (!strcasecmp (fieldName, "dR:ERR")) ESCAPE (MEAS_RA_OFFSET_ERR, OPIHI_FLT); 310 if (!strcasecmp (fieldName, "dD:ERR")) ESCAPE (MEAS_DEC_OFFSET_ERR, OPIHI_FLT); 311 if (!strcasecmp (fieldName, "ChiSqPos")) ESCAPE (MEAS_CHISQ_POS, OPIHI_FLT); 312 if (!strcasecmp (fieldName, "ChiSqPM")) ESCAPE (MEAS_CHISQ_PM, OPIHI_FLT); 313 if (!strcasecmp (fieldName, "ChiSqPar")) ESCAPE (MEAS_CHISQ_PAR, OPIHI_FLT); 314 if (!strcasecmp (fieldName, "Tmean")) ESCAPE (MEAS_TMEAN, OPIHI_FLT); 315 if (!strcasecmp (fieldName, "Trange")) ESCAPE (MEAS_TRANGE, OPIHI_FLT); 316 if (!strcasecmp (fieldName, "nmeas")) ESCAPE (MEAS_NMEAS, OPIHI_INT); 317 if (!strcasecmp (fieldName, "nmiss")) ESCAPE (MEAS_NMISS, OPIHI_INT); 318 if (!strcasecmp (fieldName, "npos")) ESCAPE (MEAS_NPOS, OPIHI_INT); 319 if (!strcasecmp (fieldName, "OBJFLAGS")) ESCAPE (MEAS_OBJ_FLAGS, OPIHI_INT); 320 if (!strcasecmp (fieldName, "OBJ_FLAGS")) ESCAPE (MEAS_OBJ_FLAGS, OPIHI_INT); 321 if (!strcasecmp (fieldName, "OBJ_PHOT_FLAGS")) ESCAPE (MEAS_SECFILT_FLAGS, OPIHI_INT); 322 if (!strcasecmp (fieldName, "SECFLAGS")) ESCAPE (MEAS_SECFILT_FLAGS, OPIHI_INT); 323 if (!strcasecmp (fieldName, "SEC_FLAGS")) ESCAPE (MEAS_SECFILT_FLAGS, OPIHI_INT); 324 if (!strcasecmp (fieldName, "SECFILT_FLAGS")) ESCAPE (MEAS_SECFILT_FLAGS, OPIHI_INT); 325 if (!strcasecmp (fieldName, "DB_FLAGS")) ESCAPE (MEAS_DB_FLAGS, OPIHI_INT); 326 if (!strcasecmp (fieldName, "PHOT_FLAGS")) ESCAPE (MEAS_PHOT_FLAGS, OPIHI_INT); 327 if (!strcasecmp (fieldName, "DBFLAGS")) ESCAPE (MEAS_DB_FLAGS, OPIHI_INT); 328 if (!strcasecmp (fieldName, "PHOTFLAGS")) ESCAPE (MEAS_PHOT_FLAGS, OPIHI_INT); 329 if (!strcasecmp (fieldName, "AIRMASS")) ESCAPE (MEAS_AIRMASS, OPIHI_FLT); 330 if (!strcasecmp (fieldName, "MEAN_AIRMASS")) ESCAPE (MEAS_MEAN_AIRMASS, OPIHI_FLT); 331 if (!strcasecmp (fieldName, "ALT")) ESCAPE (MEAS_ALT, OPIHI_FLT); 332 if (!strcasecmp (fieldName, "AZ")) ESCAPE (MEAS_AZ, OPIHI_FLT); 333 if (!strcasecmp (fieldName, "EXPTIME")) ESCAPE (MEAS_EXPTIME, OPIHI_FLT); 334 if (!strcasecmp (fieldName, "PHOTCODE")) ESCAPE (MEAS_PHOTCODE, OPIHI_INT); 335 if (!strcasecmp (fieldName, "PHOTCODE:KLAM")) ESCAPE (MEAS_PHOTCODE_KLAM, OPIHI_FLT); 336 if (!strcasecmp (fieldName, "PHOTCODE:C")) ESCAPE (MEAS_PHOTCODE_C, OPIHI_FLT); 337 if (!strcasecmp (fieldName, "PHOTCODE:EQUIV")) ESCAPE (MEAS_PHOTCODE_EQUIV, OPIHI_INT); 338 if (!strcasecmp (fieldName, "TIME")) ESCAPE (MEAS_TIME, OPIHI_FLT); 339 if (!strcasecmp (fieldName, "FWHM")) ESCAPE (MEAS_FWHM, OPIHI_FLT); 340 if (!strcasecmp (fieldName, "FWHM_MAJ")) ESCAPE (MEAS_FWHM_MAJ, OPIHI_FLT); 341 if (!strcasecmp (fieldName, "FWHM_MIN")) ESCAPE (MEAS_FWHM_MIN, OPIHI_FLT); 342 if (!strcasecmp (fieldName, "THETA")) ESCAPE (MEAS_THETA, OPIHI_FLT); 343 if (!strcasecmp (fieldName, "POSANGLE")) ESCAPE (MEAS_POSANGLE, OPIHI_FLT); 344 if (!strcasecmp (fieldName, "PLATESCALE")) ESCAPE (MEAS_PLATESCALE, OPIHI_FLT); 345 if (!strcasecmp (fieldName, "MXX")) ESCAPE (MEAS_MXX, OPIHI_FLT); 346 if (!strcasecmp (fieldName, "MYY")) ESCAPE (MEAS_MYY, OPIHI_FLT); 347 if (!strcasecmp (fieldName, "MXY")) ESCAPE (MEAS_MXY, OPIHI_FLT); 348 if (!strcasecmp (fieldName, "DOPHOT")) ESCAPE (MEAS_DOPHOT, OPIHI_INT); 349 if (!strcasecmp (fieldName, "XCCD")) ESCAPE (MEAS_XCCD, OPIHI_FLT); 350 if (!strcasecmp (fieldName, "YCCD")) ESCAPE (MEAS_YCCD, OPIHI_FLT); 351 if (!strcasecmp (fieldName, "XCCD:ERR")) ESCAPE (MEAS_XCCD_ERR, OPIHI_FLT); 352 if (!strcasecmp (fieldName, "YCCD:ERR")) ESCAPE (MEAS_YCCD_ERR, OPIHI_FLT); 353 if (!strcasecmp (fieldName, "XFIX")) ESCAPE (MEAS_XFIX, OPIHI_FLT); 354 if (!strcasecmp (fieldName, "YFIX")) ESCAPE (MEAS_YFIX, OPIHI_FLT); 355 if (!strcasecmp (fieldName, "POS_SYS_ERR")) ESCAPE (MEAS_POS_SYS_ERR, OPIHI_FLT); 356 if (!strcasecmp (fieldName, "XFIELD")) ESCAPE (MEAS_XFIELD, OPIHI_FLT); 357 if (!strcasecmp (fieldName, "YFIELD")) ESCAPE (MEAS_YFIELD, OPIHI_FLT); 358 if (!strcasecmp (fieldName, "XMOSAIC")) ESCAPE (MEAS_XMOSAIC, OPIHI_FLT); 359 if (!strcasecmp (fieldName, "YMOSAIC")) ESCAPE (MEAS_YMOSAIC, OPIHI_FLT); 360 if (!strcasecmp (fieldName, "XCHIP")) ESCAPE (MEAS_XCCD, OPIHI_FLT); 361 if (!strcasecmp (fieldName, "YCHIP")) ESCAPE (MEAS_YCCD, OPIHI_FLT); 362 if (!strcasecmp (fieldName, "XFPA")) ESCAPE (MEAS_XMOSAIC, OPIHI_FLT); 363 if (!strcasecmp (fieldName, "YFPA")) ESCAPE (MEAS_YMOSAIC, OPIHI_FLT); 364 if (!strcasecmp (fieldName, "DETID")) ESCAPE (MEAS_DET_ID, OPIHI_INT); 365 if (!strcasecmp (fieldName, "OBJID")) ESCAPE (MEAS_OBJ_ID, OPIHI_INT); 366 if (!strcasecmp (fieldName, "CATID")) ESCAPE (MEAS_CAT_ID, OPIHI_INT); 367 if (!strcasecmp (fieldName, "IMAGEID")) ESCAPE (MEAS_IMAGE_ID, OPIHI_INT); 368 if (!strcasecmp (fieldName, "EXTERNID")) ESCAPE (MEAS_EXTERN_ID, OPIHI_INT); 369 if (!strcasecmp (fieldName, "EXPNAME")) ESCAPE (MEAS_EXPNAME_AS_INT, OPIHI_INT); 370 if (!strcasecmp (fieldName, "PSF_QF")) ESCAPE (MEAS_PSF_QF, OPIHI_FLT); 371 if (!strcasecmp (fieldName, "PSF_QF_PERFECT")) ESCAPE (MEAS_PSF_QF_PERFECT, OPIHI_FLT); 372 if (!strcasecmp (fieldName, "PSF_CHISQ")) ESCAPE (MEAS_PSF_CHISQ, OPIHI_FLT); 373 if (!strcasecmp (fieldName, "PSF_NDOF")) ESCAPE (MEAS_PSF_NDOF, OPIHI_INT); 374 if (!strcasecmp (fieldName, "PSF_NPIX")) ESCAPE (MEAS_PSF_NPIX, OPIHI_INT); 375 if (!strcasecmp (fieldName, "CR_NSIGMA")) ESCAPE (MEAS_CR_NSIGMA, OPIHI_FLT); 376 if (!strcasecmp (fieldName, "EXT_NSIGMA")) ESCAPE (MEAS_EXT_NSIGMA, OPIHI_FLT); 377 if (!strcasecmp (fieldName, "SKY")) ESCAPE (MEAS_SKY, OPIHI_FLT); 378 if (!strcasecmp (fieldName, "SKY_ERR")) ESCAPE (MEAS_dSKY, OPIHI_FLT); 379 if (!strcasecmp (fieldName, "MCAL_OFFSET")) ESCAPE (MEAS_MCAL_OFFSET, OPIHI_FLT); 380 if (!strcasecmp (fieldName, "FLAT")) ESCAPE (MEAS_FLAT, OPIHI_FLT); 381 if (!strcasecmp (fieldName, "CENTER_OFFSET")) ESCAPE (MEAS_CENTER_OFFSET, OPIHI_FLT); 382 // if (!strcasecmp (fieldName, "FLUX")) ESCAPE (MEAS_FLUX_PSF, OPIHI_FLT); 383 // if (!strcasecmp (fieldName, "FLUX_ERR")) ESCAPE (MEAS_FLUX_PSF_ERR, OPIHI_FLT); 384 // if (!strcasecmp (fieldName, "FLUX_PSF")) ESCAPE (MEAS_FLUX_PSF, OPIHI_FLT); 385 // if (!strcasecmp (fieldName, "FLUX_PSF_ERR")) ESCAPE (MEAS_FLUX_PSF_ERR, OPIHI_FLT); 386 // if (!strcasecmp (fieldName, "FLUX_KRON")) ESCAPE (MEAS_FLUX_KRON, OPIHI_FLT); 387 // if (!strcasecmp (fieldName, "FLUX_KRON_ERR")) ESCAPE (MEAS_FLUX_KRON_ERR, OPIHI_FLT); 388 if (!strcasecmp (fieldName, "REF_COLOR")) ESCAPE (MEAS_REF_COLOR, OPIHI_FLT); 389 390 // for words that don't parse, try a photcode 391 392 // check for code:mode in photcode name 393 if (!ParsePhotcodeField (field, fieldName)) { 394 gprint (GP_ERR, "unknown field '%s' for measurement table in DVO database\n", fieldName); 395 return (FALSE); 396 } 397 316 398 return (TRUE); 317 399 } 318 400 319 401 int ParseAverageField (dbField *field, char *fieldName) { 320 321 int mode;322 PhotCode *code;323 402 324 403 field->table = DVO_TABLE_AVERAGE; … … 329 408 if (!strcasecmp (fieldName, "GLON")) { 330 409 dbExtractAveragesInitTransform (COORD_GALACTIC); 331 ESCAPE (AVE_GLON, MAG_NONE,OPIHI_FLT);410 ESCAPE (AVE_GLON, OPIHI_FLT); 332 411 } 333 412 if (!strcasecmp (fieldName, "GLAT")) { 334 413 dbExtractAveragesInitTransform (COORD_GALACTIC); 335 ESCAPE (AVE_GLAT, MAG_NONE,OPIHI_FLT);414 ESCAPE (AVE_GLAT, OPIHI_FLT); 336 415 } 337 416 … … 340 419 if (!strcasecmp (fieldName, "ELON")) { 341 420 dbExtractAveragesInitTransform (COORD_ECLIPTIC); 342 ESCAPE (AVE_ELON, MAG_NONE,OPIHI_FLT);421 ESCAPE (AVE_ELON, OPIHI_FLT); 343 422 } 344 423 if (!strcasecmp (fieldName, "ELAT")) { 345 424 dbExtractAveragesInitTransform (COORD_ECLIPTIC); 346 ESCAPE (AVE_ELAT, MAG_NONE,OPIHI_FLT);347 } 348 349 if (!strcasecmp (fieldName, "RA")) ESCAPE (AVE_RA, MAG_NONE,OPIHI_FLT);350 if (!strcasecmp (fieldName, "DEC")) ESCAPE (AVE_DEC, MAG_NONE,OPIHI_FLT);351 if (!strcasecmp (fieldName, "GLON")) ESCAPE (AVE_GLON, MAG_NONE,OPIHI_FLT);352 if (!strcasecmp (fieldName, "GLAT")) ESCAPE (AVE_GLAT, MAG_NONE,OPIHI_FLT);353 if (!strcasecmp (fieldName, "ELON")) ESCAPE (AVE_ELON, MAG_NONE,OPIHI_FLT);354 if (!strcasecmp (fieldName, "ELAT")) ESCAPE (AVE_ELAT, MAG_NONE,OPIHI_FLT);355 if (!strcasecmp (fieldName, "dRA")) ESCAPE (AVE_RA_ERR, MAG_NONE,OPIHI_FLT);356 if (!strcasecmp (fieldName, "dDEC")) ESCAPE (AVE_DEC_ERR, MAG_NONE,OPIHI_FLT);357 if (!strcasecmp (fieldName, "uRA")) ESCAPE (AVE_U_RA, MAG_NONE,OPIHI_FLT);358 if (!strcasecmp (fieldName, "uDEC")) ESCAPE (AVE_U_DEC, MAG_NONE,OPIHI_FLT);359 if (!strcasecmp (fieldName, "duRA")) ESCAPE (AVE_U_RA_ERR, MAG_NONE,OPIHI_FLT);360 if (!strcasecmp (fieldName, "duDEC")) ESCAPE (AVE_U_DEC_ERR, MAG_NONE,OPIHI_FLT);361 if (!strcasecmp (fieldName, "PAR")) ESCAPE (AVE_PAR, MAG_NONE,OPIHI_FLT);362 if (!strcasecmp (fieldName, "dPAR")) ESCAPE (AVE_PAR_ERR, MAG_NONE,OPIHI_FLT);363 if (!strcasecmp (fieldName, "ChiSqPos")) ESCAPE (AVE_CHISQ_POS, MAG_NONE,OPIHI_FLT);364 if (!strcasecmp (fieldName, "ChiSqPM")) ESCAPE (AVE_CHISQ_PM, MAG_NONE,OPIHI_FLT);365 if (!strcasecmp (fieldName, "ChiSqPar")) ESCAPE (AVE_CHISQ_PAR, MAG_NONE,OPIHI_FLT);366 if (!strcasecmp (fieldName, "Tmean")) ESCAPE (AVE_TMEAN, MAG_NONE,OPIHI_FLT);367 if (!strcasecmp (fieldName, "Trange")) ESCAPE (AVE_TRANGE, MAG_NONE,OPIHI_FLT);368 if (!strcasecmp (fieldName, "psfqf")) ESCAPE (AVE_PSF_QF, MAG_NONE,OPIHI_FLT);369 if (!strcasecmp (fieldName, "psfqfperf")) ESCAPE (AVE_PSF_QF_PERF, MAG_NONE,OPIHI_FLT);370 if (!strcasecmp (fieldName, "psf_qf")) ESCAPE (AVE_PSF_QF, MAG_NONE,OPIHI_FLT);371 if (!strcasecmp (fieldName, "psf_qf_perf")) ESCAPE (AVE_PSF_QF_PERF, MAG_NONE,OPIHI_FLT);372 if (!strcasecmp (fieldName, "stargal")) ESCAPE (AVE_STARGAL, MAG_NONE,OPIHI_FLT);373 if (!strcasecmp (fieldName, "NMEAS")) ESCAPE (AVE_NMEAS, MAG_NONE,OPIHI_INT);374 if (!strcasecmp (fieldName, "NMISS")) ESCAPE (AVE_NMISS, MAG_NONE,OPIHI_INT);375 if (!strcasecmp (fieldName, "NPOS")) ESCAPE (AVE_NPOS, MAG_NONE,OPIHI_INT);376 if (!strcasecmp (fieldName, "NASTROM")) ESCAPE (AVE_NPOS, MAG_NONE,OPIHI_INT);377 if (!strcasecmp (fieldName, "FLAGS")) ESCAPE (AVE_OBJ_FLAGS, MAG_NONE,OPIHI_INT);378 if (!strcasecmp (fieldName, "OBJ_FLAGS")) ESCAPE (AVE_OBJ_FLAGS, MAG_NONE,OPIHI_INT);379 if (!strcasecmp (fieldName, "OBJFLAGS")) ESCAPE (AVE_OBJ_FLAGS, MAG_NONE,OPIHI_INT);380 if (!strcasecmp (fieldName, "OBJID")) ESCAPE (AVE_OBJID, MAG_NONE,OPIHI_INT);381 if (!strcasecmp (fieldName, "CATID")) ESCAPE (AVE_CATID, MAG_NONE,OPIHI_INT);382 if (!strcasecmp (fieldName, "EXTID_HI")) ESCAPE (AVE_EXTID_HI, MAG_NONE,OPIHI_INT);383 if (!strcasecmp (fieldName, "EXTID_LO")) ESCAPE (AVE_EXTID_LO, MAG_NONE,OPIHI_INT);384 if (!strcasecmp (fieldName, "REF_COLOR")) ESCAPE (AVE_REF_COLOR, MAG_NONE,OPIHI_FLT);425 ESCAPE (AVE_ELAT, OPIHI_FLT); 426 } 427 428 if (!strcasecmp (fieldName, "RA")) ESCAPE (AVE_RA, OPIHI_FLT); 429 if (!strcasecmp (fieldName, "DEC")) ESCAPE (AVE_DEC, OPIHI_FLT); 430 if (!strcasecmp (fieldName, "GLON")) ESCAPE (AVE_GLON, OPIHI_FLT); 431 if (!strcasecmp (fieldName, "GLAT")) ESCAPE (AVE_GLAT, OPIHI_FLT); 432 if (!strcasecmp (fieldName, "ELON")) ESCAPE (AVE_ELON, OPIHI_FLT); 433 if (!strcasecmp (fieldName, "ELAT")) ESCAPE (AVE_ELAT, OPIHI_FLT); 434 if (!strcasecmp (fieldName, "dRA")) ESCAPE (AVE_RA_ERR, OPIHI_FLT); 435 if (!strcasecmp (fieldName, "dDEC")) ESCAPE (AVE_DEC_ERR, OPIHI_FLT); 436 if (!strcasecmp (fieldName, "uRA")) ESCAPE (AVE_U_RA, OPIHI_FLT); 437 if (!strcasecmp (fieldName, "uDEC")) ESCAPE (AVE_U_DEC, OPIHI_FLT); 438 if (!strcasecmp (fieldName, "duRA")) ESCAPE (AVE_U_RA_ERR, OPIHI_FLT); 439 if (!strcasecmp (fieldName, "duDEC")) ESCAPE (AVE_U_DEC_ERR, OPIHI_FLT); 440 if (!strcasecmp (fieldName, "PAR")) ESCAPE (AVE_PAR, OPIHI_FLT); 441 if (!strcasecmp (fieldName, "dPAR")) ESCAPE (AVE_PAR_ERR, OPIHI_FLT); 442 if (!strcasecmp (fieldName, "ChiSqPos")) ESCAPE (AVE_CHISQ_POS, OPIHI_FLT); 443 if (!strcasecmp (fieldName, "ChiSqPM")) ESCAPE (AVE_CHISQ_PM, OPIHI_FLT); 444 if (!strcasecmp (fieldName, "ChiSqPar")) ESCAPE (AVE_CHISQ_PAR, OPIHI_FLT); 445 if (!strcasecmp (fieldName, "Tmean")) ESCAPE (AVE_TMEAN, OPIHI_FLT); 446 if (!strcasecmp (fieldName, "Trange")) ESCAPE (AVE_TRANGE, OPIHI_FLT); 447 if (!strcasecmp (fieldName, "psfqf")) ESCAPE (AVE_PSF_QF, OPIHI_FLT); 448 if (!strcasecmp (fieldName, "psfqfperf")) ESCAPE (AVE_PSF_QF_PERF, OPIHI_FLT); 449 if (!strcasecmp (fieldName, "psf_qf")) ESCAPE (AVE_PSF_QF, OPIHI_FLT); 450 if (!strcasecmp (fieldName, "psf_qf_perf")) ESCAPE (AVE_PSF_QF_PERF, OPIHI_FLT); 451 if (!strcasecmp (fieldName, "stargal")) ESCAPE (AVE_STARGAL, OPIHI_FLT); 452 if (!strcasecmp (fieldName, "NMEAS")) ESCAPE (AVE_NMEAS, OPIHI_INT); 453 if (!strcasecmp (fieldName, "NMISS")) ESCAPE (AVE_NMISS, OPIHI_INT); 454 if (!strcasecmp (fieldName, "NPOS")) ESCAPE (AVE_NPOS, OPIHI_INT); 455 if (!strcasecmp (fieldName, "NASTROM")) ESCAPE (AVE_NPOS, OPIHI_INT); 456 if (!strcasecmp (fieldName, "FLAGS")) ESCAPE (AVE_OBJ_FLAGS, OPIHI_INT); 457 if (!strcasecmp (fieldName, "OBJ_FLAGS")) ESCAPE (AVE_OBJ_FLAGS, OPIHI_INT); 458 if (!strcasecmp (fieldName, "OBJFLAGS")) ESCAPE (AVE_OBJ_FLAGS, OPIHI_INT); 459 if (!strcasecmp (fieldName, "OBJID")) ESCAPE (AVE_OBJID, OPIHI_INT); 460 if (!strcasecmp (fieldName, "CATID")) ESCAPE (AVE_CATID, OPIHI_INT); 461 if (!strcasecmp (fieldName, "EXTID_HI")) ESCAPE (AVE_EXTID_HI, OPIHI_INT); 462 if (!strcasecmp (fieldName, "EXTID_LO")) ESCAPE (AVE_EXTID_LO, OPIHI_INT); 463 if (!strcasecmp (fieldName, "REF_COLOR")) ESCAPE (AVE_REF_COLOR, OPIHI_FLT); 385 464 386 465 // check for code:mode in photcode name 387 code = ParsePhotcodeField (fieldName, &mode, MAG_AVE); 388 if (code == NULL) { 466 if (!ParsePhotcodeField (field, fieldName)) { 389 467 gprint (GP_ERR, "unknown field '%s' for average table in DVO database\n", fieldName); 390 468 return (FALSE); 391 469 } 392 470 393 if ( code[0].type == PHOT_MAG) {471 if (field->photcode->type == PHOT_MAG) { 394 472 gprint (GP_ERR, "'mag' is ambiguous for avextract\n"); 395 free (code);396 473 return (FALSE); 397 474 } 398 475 399 field->ID = AVE_MAG;400 field->magMode = mode;401 switch (mode) {402 case MAG_STACK_DET_ID:403 case MAG_NCODE:404 case MAG_NPHOT:405 case MAG_PHOT_FLAGS:406 field->type = OPIHI_INT;407 break;408 default:409 field->type = OPIHI_FLT;410 break;411 }412 field->photcode = code;413 476 return (TRUE); 414 477 } … … 424 487 if (!strcasecmp (fieldName, "GLON")) { 425 488 dbExtractImagesInitTransform (COORD_GALACTIC); 426 ESCAPE (IMAGE_GLON, MAG_NONE,OPIHI_FLT);489 ESCAPE (IMAGE_GLON, OPIHI_FLT); 427 490 } 428 491 if (!strcasecmp (fieldName, "GLAT")) { 429 492 dbExtractImagesInitTransform (COORD_GALACTIC); 430 ESCAPE (IMAGE_GLAT, MAG_NONE,OPIHI_FLT);493 ESCAPE (IMAGE_GLAT, OPIHI_FLT); 431 494 } 432 495 … … 435 498 if (!strcasecmp (fieldName, "ELON")) { 436 499 dbExtractImagesInitTransform (COORD_ECLIPTIC); 437 ESCAPE (IMAGE_ELON, MAG_NONE,OPIHI_FLT);500 ESCAPE (IMAGE_ELON, OPIHI_FLT); 438 501 } 439 502 if (!strcasecmp (fieldName, "ELAT")) { 440 503 dbExtractImagesInitTransform (COORD_ECLIPTIC); 441 ESCAPE (IMAGE_ELAT, MAG_NONE,OPIHI_FLT);442 } 443 444 if (!strcasecmp (fieldName, "RA" )) ESCAPE (IMAGE_RA, MAG_NONE,OPIHI_FLT);445 if (!strcasecmp (fieldName, "DEC" )) ESCAPE (IMAGE_DEC, MAG_NONE,OPIHI_FLT);446 if (!strcasecmp (fieldName, "GLON" )) ESCAPE (IMAGE_GLON, MAG_NONE,OPIHI_FLT);447 if (!strcasecmp (fieldName, "GLAT" )) ESCAPE (IMAGE_GLAT, MAG_NONE,OPIHI_FLT);448 if (!strcasecmp (fieldName, "ELON" )) ESCAPE (IMAGE_ELON, MAG_NONE,OPIHI_FLT);449 if (!strcasecmp (fieldName, "ELAT" )) ESCAPE (IMAGE_ELAT, MAG_NONE,OPIHI_FLT);450 451 if (!strcasecmp (fieldName, "theta" )) ESCAPE (IMAGE_THETA, MAG_NONE,OPIHI_FLT);452 if (!strcasecmp (fieldName, "skew" )) ESCAPE (IMAGE_SKEW, MAG_NONE,OPIHI_FLT);453 if (!strcasecmp (fieldName, "scale" )) ESCAPE (IMAGE_SCALE, MAG_NONE,OPIHI_FLT);454 if (!strcasecmp (fieldName, "dscale" )) ESCAPE (IMAGE_DSCALE, MAG_NONE,OPIHI_FLT);455 456 if (!strcasecmp (fieldName, "time" )) ESCAPE (IMAGE_TIME, MAG_NONE,OPIHI_FLT);457 if (!strcasecmp (fieldName, "nstar" )) ESCAPE (IMAGE_NSTAR, MAG_NONE,OPIHI_INT);458 if (!strcasecmp (fieldName, "airmass" )) ESCAPE (IMAGE_AIRMASS, MAG_NONE,OPIHI_FLT);459 if (!strcasecmp (fieldName, "NX" )) ESCAPE (IMAGE_NX_PIX, MAG_NONE,OPIHI_INT);460 if (!strcasecmp (fieldName, "NY" )) ESCAPE (IMAGE_NY_PIX, MAG_NONE,OPIHI_INT);461 if (!strcasecmp (fieldName, "apresid" )) ESCAPE (IMAGE_APRESID, MAG_NONE,OPIHI_FLT);462 if (!strcasecmp (fieldName, "dapresid" )) ESCAPE (IMAGE_DAPRESID, MAG_NONE,OPIHI_FLT);463 464 if (!strcasecmp (fieldName, "Mcal" )) ESCAPE (IMAGE_MCAL, MAG_NONE,OPIHI_FLT);465 if (!strcasecmp (fieldName, "dMcal" )) ESCAPE (IMAGE_dMCAL, MAG_NONE,OPIHI_FLT);466 if (!strcasecmp (fieldName, "Xm" )) ESCAPE (IMAGE_XM, MAG_NONE,OPIHI_FLT);467 if (!strcasecmp (fieldName, "photcode" )) ESCAPE (IMAGE_PHOTCODE, MAG_NONE,OPIHI_INT);468 if (!strcasecmp (fieldName, "exptime" )) ESCAPE (IMAGE_EXPTIME, MAG_NONE,OPIHI_FLT);469 if (!strcasecmp (fieldName, "sidtime" )) ESCAPE (IMAGE_SIDTIME, MAG_NONE,OPIHI_FLT);470 471 if (!strcasecmp (fieldName, "latitude" )) ESCAPE (IMAGE_LATITUDE, MAG_NONE,OPIHI_FLT);472 473 if (!strcasecmp (fieldName, "detlimit" )) ESCAPE (IMAGE_DET_LIMIT, MAG_NONE,OPIHI_FLT);474 if (!strcasecmp (fieldName, "satlimit" )) ESCAPE (IMAGE_SAT_LIMIT, MAG_NONE,OPIHI_FLT);475 if (!strcasecmp (fieldName, "cerror" )) ESCAPE (IMAGE_CERROR, MAG_NONE,OPIHI_FLT);476 477 if (!strcasecmp (fieldName, "FWHM" )) ESCAPE (IMAGE_FWHM, MAG_NONE,OPIHI_FLT);478 if (!strcasecmp (fieldName, "FWHM_MAJ" )) ESCAPE (IMAGE_FWHM_MAJ, MAG_NONE,OPIHI_FLT);479 if (!strcasecmp (fieldName, "FWHM_MIN" )) ESCAPE (IMAGE_FWHM_MIN, MAG_NONE,OPIHI_FLT);480 if (!strcasecmp (fieldName, "FWHM_MAJOR" )) ESCAPE (IMAGE_FWHM_MAJ, MAG_NONE,OPIHI_FLT);481 if (!strcasecmp (fieldName, "FWHM_MINOR" )) ESCAPE (IMAGE_FWHM_MIN, MAG_NONE,OPIHI_FLT);482 483 if (!strcasecmp (fieldName, "FWHM_MEDIAN" )) ESCAPE (IMAGE_FWHM_MEDIAN, MAG_NONE,OPIHI_FLT);484 if (!strcasecmp (fieldName, "FWHM_MAJ_MEDIAN")) ESCAPE (IMAGE_FWHM_MAJ_MEDIAN, MAG_NONE,OPIHI_FLT);485 if (!strcasecmp (fieldName, "FWHM_MIN_MEDIAN")) ESCAPE (IMAGE_FWHM_MIN_MEDIAN, MAG_NONE,OPIHI_FLT);486 if (!strcasecmp (fieldName, "FWHM_MAJOR_MEDIAN")) ESCAPE (IMAGE_FWHM_MAJ_MEDIAN, MAG_NONE,OPIHI_FLT);487 if (!strcasecmp (fieldName, "FWHM_MINOR_MEDIAN")) ESCAPE (IMAGE_FWHM_MIN_MEDIAN, MAG_NONE,OPIHI_FLT);488 489 if (!strcasecmp (fieldName, "trate" )) ESCAPE (IMAGE_TRATE, MAG_NONE,OPIHI_FLT);490 491 if (!strcasecmp (fieldName, "ncal" )) ESCAPE (IMAGE_NCAL, MAG_NONE,OPIHI_INT);492 if (!strcasecmp (fieldName, "sky" )) ESCAPE (IMAGE_SKY, MAG_NONE,OPIHI_FLT); // deprecated for now493 494 if (!strcasecmp (fieldName, "imflags" )) ESCAPE (IMAGE_FLAGS, MAG_NONE,OPIHI_INT);495 if (!strcasecmp (fieldName, "flags" )) ESCAPE (IMAGE_FLAGS, MAG_NONE,OPIHI_INT);496 if (!strcasecmp (fieldName, "ccdnum" )) ESCAPE (IMAGE_CCDNUM, MAG_NONE,OPIHI_INT);497 498 if (!strcasecmp (fieldName, "imageID" )) ESCAPE (IMAGE_IMAGE_ID, MAG_NONE,OPIHI_INT);499 if (!strcasecmp (fieldName, "externID" )) ESCAPE (IMAGE_EXTERN_ID, MAG_NONE,OPIHI_INT);500 if (!strcasecmp (fieldName, "sourceID" )) ESCAPE (IMAGE_SOURCE_ID, MAG_NONE,OPIHI_INT);501 502 if (!strcasecmp (fieldName, "X_LL_CHIP")) ESCAPE (IMAGE_X_LL_CHIP, MAG_NONE,OPIHI_FLT);503 if (!strcasecmp (fieldName, "X_LR_CHIP")) ESCAPE (IMAGE_X_LR_CHIP, MAG_NONE,OPIHI_FLT);504 if (!strcasecmp (fieldName, "X_UL_CHIP")) ESCAPE (IMAGE_X_UL_CHIP, MAG_NONE,OPIHI_FLT);505 if (!strcasecmp (fieldName, "X_UR_CHIP")) ESCAPE (IMAGE_X_UR_CHIP, MAG_NONE,OPIHI_FLT);506 if (!strcasecmp (fieldName, "Y_LL_CHIP")) ESCAPE (IMAGE_Y_LL_CHIP, MAG_NONE,OPIHI_FLT);507 if (!strcasecmp (fieldName, "Y_LR_CHIP")) ESCAPE (IMAGE_Y_LR_CHIP, MAG_NONE,OPIHI_FLT);508 if (!strcasecmp (fieldName, "Y_UL_CHIP")) ESCAPE (IMAGE_Y_UL_CHIP, MAG_NONE,OPIHI_FLT);509 if (!strcasecmp (fieldName, "Y_UR_CHIP")) ESCAPE (IMAGE_Y_UR_CHIP, MAG_NONE,OPIHI_FLT);510 if (!strcasecmp (fieldName, "X_LL_FP" )) ESCAPE (IMAGE_X_LL_FP, MAG_NONE,OPIHI_FLT);511 if (!strcasecmp (fieldName, "X_LR_FP" )) ESCAPE (IMAGE_X_LR_FP, MAG_NONE,OPIHI_FLT);512 if (!strcasecmp (fieldName, "X_UL_FP" )) ESCAPE (IMAGE_X_UL_FP, MAG_NONE,OPIHI_FLT);513 if (!strcasecmp (fieldName, "X_UR_FP" )) ESCAPE (IMAGE_X_UR_FP, MAG_NONE,OPIHI_FLT);514 if (!strcasecmp (fieldName, "Y_LL_FP" )) ESCAPE (IMAGE_Y_LL_FP, MAG_NONE,OPIHI_FLT);515 if (!strcasecmp (fieldName, "Y_LR_FP" )) ESCAPE (IMAGE_Y_LR_FP, MAG_NONE,OPIHI_FLT);516 if (!strcasecmp (fieldName, "Y_UL_FP" )) ESCAPE (IMAGE_Y_UL_FP, MAG_NONE,OPIHI_FLT);517 if (!strcasecmp (fieldName, "Y_UR_FP" )) ESCAPE (IMAGE_Y_UR_FP, MAG_NONE,OPIHI_FLT);518 519 if (!strcasecmp (fieldName, "dX_SYS" )) ESCAPE (IMAGE_X_ERR_SYS, MAG_NONE,OPIHI_FLT);520 if (!strcasecmp (fieldName, "dY_SYS" )) ESCAPE (IMAGE_Y_ERR_SYS, MAG_NONE,OPIHI_FLT);521 if (!strcasecmp (fieldName, "dM_SYS" )) ESCAPE (IMAGE_MAG_ERR_SYS, MAG_NONE,OPIHI_FLT);522 523 if (!strcasecmp (fieldName, "UBERCAL_DIST")) ESCAPE (IMAGE_UBERCAL_DIST, MAG_NONE,OPIHI_INT);524 if (!strcasecmp (fieldName, "UCDIST")) ESCAPE (IMAGE_UBERCAL_DIST, MAG_NONE,OPIHI_INT);525 526 if (!strcasecmp (fieldName, "NFIT_PHOTOM")) ESCAPE (IMAGE_NFIT_PHOTOM, MAG_NONE,OPIHI_INT);527 if (!strcasecmp (fieldName, "NFIT_ASTROM")) ESCAPE (IMAGE_NFIT_ASTROM, MAG_NONE,OPIHI_INT);528 if (!strcasecmp (fieldName, "NLINK_PHOTOM")) ESCAPE (IMAGE_NLINK_PHOTOM, MAG_NONE,OPIHI_INT);529 if (!strcasecmp (fieldName, "NLINK_ASTROM")) ESCAPE (IMAGE_NLINK_ASTROM, MAG_NONE,OPIHI_INT);530 if (!strcasecmp (fieldName, "REF_COLOR")) ESCAPE (IMAGE_REF_COLOR, MAG_NONE,OPIHI_FLT);504 ESCAPE (IMAGE_ELAT, OPIHI_FLT); 505 } 506 507 if (!strcasecmp (fieldName, "RA" )) ESCAPE (IMAGE_RA, OPIHI_FLT); 508 if (!strcasecmp (fieldName, "DEC" )) ESCAPE (IMAGE_DEC, OPIHI_FLT); 509 if (!strcasecmp (fieldName, "GLON" )) ESCAPE (IMAGE_GLON, OPIHI_FLT); 510 if (!strcasecmp (fieldName, "GLAT" )) ESCAPE (IMAGE_GLAT, OPIHI_FLT); 511 if (!strcasecmp (fieldName, "ELON" )) ESCAPE (IMAGE_ELON, OPIHI_FLT); 512 if (!strcasecmp (fieldName, "ELAT" )) ESCAPE (IMAGE_ELAT, OPIHI_FLT); 513 514 if (!strcasecmp (fieldName, "theta" )) ESCAPE (IMAGE_THETA, OPIHI_FLT); 515 if (!strcasecmp (fieldName, "skew" )) ESCAPE (IMAGE_SKEW, OPIHI_FLT); 516 if (!strcasecmp (fieldName, "scale" )) ESCAPE (IMAGE_SCALE, OPIHI_FLT); 517 if (!strcasecmp (fieldName, "dscale" )) ESCAPE (IMAGE_DSCALE, OPIHI_FLT); 518 519 if (!strcasecmp (fieldName, "time" )) ESCAPE (IMAGE_TIME, OPIHI_FLT); 520 if (!strcasecmp (fieldName, "nstar" )) ESCAPE (IMAGE_NSTAR, OPIHI_INT); 521 if (!strcasecmp (fieldName, "airmass" )) ESCAPE (IMAGE_AIRMASS, OPIHI_FLT); 522 if (!strcasecmp (fieldName, "NX" )) ESCAPE (IMAGE_NX_PIX, OPIHI_INT); 523 if (!strcasecmp (fieldName, "NY" )) ESCAPE (IMAGE_NY_PIX, OPIHI_INT); 524 if (!strcasecmp (fieldName, "apresid" )) ESCAPE (IMAGE_APRESID, OPIHI_FLT); 525 if (!strcasecmp (fieldName, "dapresid" )) ESCAPE (IMAGE_DAPRESID, OPIHI_FLT); 526 527 if (!strcasecmp (fieldName, "Mcal" )) ESCAPE (IMAGE_MCAL, OPIHI_FLT); 528 if (!strcasecmp (fieldName, "dMcal" )) ESCAPE (IMAGE_dMCAL, OPIHI_FLT); 529 if (!strcasecmp (fieldName, "Xm" )) ESCAPE (IMAGE_XM, OPIHI_FLT); 530 if (!strcasecmp (fieldName, "photcode" )) ESCAPE (IMAGE_PHOTCODE, OPIHI_INT); 531 if (!strcasecmp (fieldName, "exptime" )) ESCAPE (IMAGE_EXPTIME, OPIHI_FLT); 532 if (!strcasecmp (fieldName, "sidtime" )) ESCAPE (IMAGE_SIDTIME, OPIHI_FLT); 533 534 if (!strcasecmp (fieldName, "latitude" )) ESCAPE (IMAGE_LATITUDE, OPIHI_FLT); 535 536 if (!strcasecmp (fieldName, "detlimit" )) ESCAPE (IMAGE_DET_LIMIT, OPIHI_FLT); 537 if (!strcasecmp (fieldName, "satlimit" )) ESCAPE (IMAGE_SAT_LIMIT, OPIHI_FLT); 538 if (!strcasecmp (fieldName, "cerror" )) ESCAPE (IMAGE_CERROR, OPIHI_FLT); 539 540 if (!strcasecmp (fieldName, "FWHM" )) ESCAPE (IMAGE_FWHM, OPIHI_FLT); 541 if (!strcasecmp (fieldName, "FWHM_MAJ" )) ESCAPE (IMAGE_FWHM_MAJ, OPIHI_FLT); 542 if (!strcasecmp (fieldName, "FWHM_MIN" )) ESCAPE (IMAGE_FWHM_MIN, OPIHI_FLT); 543 if (!strcasecmp (fieldName, "FWHM_MAJOR" )) ESCAPE (IMAGE_FWHM_MAJ, OPIHI_FLT); 544 if (!strcasecmp (fieldName, "FWHM_MINOR" )) ESCAPE (IMAGE_FWHM_MIN, OPIHI_FLT); 545 546 if (!strcasecmp (fieldName, "FWHM_MEDIAN" )) ESCAPE (IMAGE_FWHM_MEDIAN, OPIHI_FLT); 547 if (!strcasecmp (fieldName, "FWHM_MAJ_MEDIAN")) ESCAPE (IMAGE_FWHM_MAJ_MEDIAN, OPIHI_FLT); 548 if (!strcasecmp (fieldName, "FWHM_MIN_MEDIAN")) ESCAPE (IMAGE_FWHM_MIN_MEDIAN, OPIHI_FLT); 549 if (!strcasecmp (fieldName, "FWHM_MAJOR_MEDIAN")) ESCAPE (IMAGE_FWHM_MAJ_MEDIAN, OPIHI_FLT); 550 if (!strcasecmp (fieldName, "FWHM_MINOR_MEDIAN")) ESCAPE (IMAGE_FWHM_MIN_MEDIAN, OPIHI_FLT); 551 552 if (!strcasecmp (fieldName, "trate" )) ESCAPE (IMAGE_TRATE, OPIHI_FLT); 553 554 if (!strcasecmp (fieldName, "ncal" )) ESCAPE (IMAGE_NCAL, OPIHI_INT); 555 if (!strcasecmp (fieldName, "sky" )) ESCAPE (IMAGE_SKY, OPIHI_FLT); // deprecated for now 556 557 if (!strcasecmp (fieldName, "imflags" )) ESCAPE (IMAGE_FLAGS, OPIHI_INT); 558 if (!strcasecmp (fieldName, "flags" )) ESCAPE (IMAGE_FLAGS, OPIHI_INT); 559 if (!strcasecmp (fieldName, "ccdnum" )) ESCAPE (IMAGE_CCDNUM, OPIHI_INT); 560 561 if (!strcasecmp (fieldName, "imageID" )) ESCAPE (IMAGE_IMAGE_ID, OPIHI_INT); 562 if (!strcasecmp (fieldName, "externID" )) ESCAPE (IMAGE_EXTERN_ID, OPIHI_INT); 563 if (!strcasecmp (fieldName, "sourceID" )) ESCAPE (IMAGE_SOURCE_ID, OPIHI_INT); 564 565 if (!strcasecmp (fieldName, "X_LL_CHIP")) ESCAPE (IMAGE_X_LL_CHIP, OPIHI_FLT); 566 if (!strcasecmp (fieldName, "X_LR_CHIP")) ESCAPE (IMAGE_X_LR_CHIP, OPIHI_FLT); 567 if (!strcasecmp (fieldName, "X_UL_CHIP")) ESCAPE (IMAGE_X_UL_CHIP, OPIHI_FLT); 568 if (!strcasecmp (fieldName, "X_UR_CHIP")) ESCAPE (IMAGE_X_UR_CHIP, OPIHI_FLT); 569 if (!strcasecmp (fieldName, "Y_LL_CHIP")) ESCAPE (IMAGE_Y_LL_CHIP, OPIHI_FLT); 570 if (!strcasecmp (fieldName, "Y_LR_CHIP")) ESCAPE (IMAGE_Y_LR_CHIP, OPIHI_FLT); 571 if (!strcasecmp (fieldName, "Y_UL_CHIP")) ESCAPE (IMAGE_Y_UL_CHIP, OPIHI_FLT); 572 if (!strcasecmp (fieldName, "Y_UR_CHIP")) ESCAPE (IMAGE_Y_UR_CHIP, OPIHI_FLT); 573 if (!strcasecmp (fieldName, "X_LL_FP" )) ESCAPE (IMAGE_X_LL_FP, OPIHI_FLT); 574 if (!strcasecmp (fieldName, "X_LR_FP" )) ESCAPE (IMAGE_X_LR_FP, OPIHI_FLT); 575 if (!strcasecmp (fieldName, "X_UL_FP" )) ESCAPE (IMAGE_X_UL_FP, OPIHI_FLT); 576 if (!strcasecmp (fieldName, "X_UR_FP" )) ESCAPE (IMAGE_X_UR_FP, OPIHI_FLT); 577 if (!strcasecmp (fieldName, "Y_LL_FP" )) ESCAPE (IMAGE_Y_LL_FP, OPIHI_FLT); 578 if (!strcasecmp (fieldName, "Y_LR_FP" )) ESCAPE (IMAGE_Y_LR_FP, OPIHI_FLT); 579 if (!strcasecmp (fieldName, "Y_UL_FP" )) ESCAPE (IMAGE_Y_UL_FP, OPIHI_FLT); 580 if (!strcasecmp (fieldName, "Y_UR_FP" )) ESCAPE (IMAGE_Y_UR_FP, OPIHI_FLT); 581 582 if (!strcasecmp (fieldName, "dX_SYS" )) ESCAPE (IMAGE_X_ERR_SYS, OPIHI_FLT); 583 if (!strcasecmp (fieldName, "dY_SYS" )) ESCAPE (IMAGE_Y_ERR_SYS, OPIHI_FLT); 584 if (!strcasecmp (fieldName, "dM_SYS" )) ESCAPE (IMAGE_MAG_ERR_SYS,OPIHI_FLT); 585 586 if (!strcasecmp (fieldName, "UBERCAL_DIST")) ESCAPE (IMAGE_UBERCAL_DIST,OPIHI_INT); 587 if (!strcasecmp (fieldName, "UCDIST")) ESCAPE (IMAGE_UBERCAL_DIST,OPIHI_INT); 588 589 if (!strcasecmp (fieldName, "NFIT_PHOTOM")) ESCAPE (IMAGE_NFIT_PHOTOM, OPIHI_INT); 590 if (!strcasecmp (fieldName, "NFIT_ASTROM")) ESCAPE (IMAGE_NFIT_ASTROM, OPIHI_INT); 591 if (!strcasecmp (fieldName, "NLINK_PHOTOM")) ESCAPE (IMAGE_NLINK_PHOTOM, OPIHI_INT); 592 if (!strcasecmp (fieldName, "NLINK_ASTROM")) ESCAPE (IMAGE_NLINK_ASTROM, OPIHI_INT); 593 if (!strcasecmp (fieldName, "REF_COLOR")) ESCAPE (IMAGE_REF_COLOR, OPIHI_FLT); 531 594 532 595 // for words that don't parse, try a photcode -
branches/eam_branches/ipp-20140610/Ohana/src/libdvo/src/dvo_photcode_ops.c
r36898 r36908 18 18 19 19 static PhotCodeData *photcodes = NULL; 20 static PhotCode *genericCode = NULL; 20 21 21 22 PhotCodeData *GetPhotcodeTable () { … … 26 27 photcodes[0].code = NULL; 27 28 } 29 if (genericCode == NULL) { 30 ALLOCATE (genericCode, PhotCode, 1); 31 genericCode->code = 0; 32 strcpy (genericCode->name, "MAG"); 33 genericCode->type = PHOT_MAG; 34 } 28 35 return photcodes; 29 36 } … … 57 64 if (name == NULL) return (NULL); 58 65 66 // "MAG" is a special word, not allowed for a photcode name 67 if (!strcasecmp (name, "MAG")) { 68 return genericCode; 69 } 70 59 71 for (i = 0; i < photcodes[0].Ncode; i++) { 60 72 if (!strcmp (photcodes[0].code[i].name, name)) { … … 70 82 71 83 if (name == NULL) return (0); 84 85 // "MAG" is a special word, not allowed for a photcode name 86 if (!strcasecmp (name, "MAG")) { 87 return genericCode->code; 88 } 72 89 73 90 for (i = 0; i < photcodes[0].Ncode; i++) { … … 222 239 223 240 /******** photometry conversion functions *********/ 224 float PhotInst (Measure *measure) { 225 226 int Np; 227 float M; 228 229 Np = photcodes[0].hashcode[measure[0].photcode]; 241 float PhotInst (Measure *measure, dvoMagClassType class) { 242 243 int Np = photcodes[0].hashcode[measure[0].photcode]; 230 244 if (Np == -1) return (NAN); 231 232 if (photcodes[0].code[Np].type == PHOT_REF) { 233 M = measure[0].M; 234 return (M); 235 } 236 237 M = measure[0].M - measure[0].dt - ZERO_POINT; 238 239 return (M); 240 241 } 242 243 float PhotCat (Measure *measure) { 244 245 int Np; 246 float Mcat; 247 PhotCode *code; 248 249 Np = photcodes[0].hashcode[measure[0].photcode]; 245 PhotCode *code = &photcodes[0].code[Np]; 246 247 float Mraw = NAN; 248 switch (class) { 249 case MAG_CLASS_PSF: 250 Mraw = measure[0].M; 251 break; 252 case MAG_CLASS_KRON: 253 Mraw = measure[0].Mkron; 254 break; 255 case MAG_CLASS_APER: 256 Mraw = measure[0].Map; 257 break; 258 default: 259 break; 260 } 261 if (code->type == PHOT_REF) { 262 return (Mraw); 263 } 264 float Minst = Mraw - measure[0].dt - ZERO_POINT; 265 266 return (Minst); 267 } 268 269 float PhotCat (Measure *measure, dvoMagClassType class) { 270 271 int Np = photcodes[0].hashcode[measure[0].photcode]; 250 272 if (Np == -1) return (NAN); 251 252 if (photcodes[0].code[Np].type == PHOT_REF) { 253 Mcat = measure[0].M; 254 return (Mcat); 255 } 256 code = &photcodes[0].code[Np]; 257 Mcat = measure[0].M - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C; 273 PhotCode *code = &photcodes[0].code[Np]; 274 275 float Mraw = NAN; 276 switch (class) { 277 case MAG_CLASS_PSF: 278 Mraw = measure[0].M; 279 break; 280 case MAG_CLASS_KRON: 281 Mraw = measure[0].Mkron; 282 break; 283 case MAG_CLASS_APER: 284 Mraw = measure[0].Map; 285 break; 286 default: 287 break; 288 } 289 if (code->type == PHOT_REF) { 290 return (Mraw); 291 } 292 293 float Mcat = Mraw - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C; 258 294 259 295 return (Mcat); 260 296 } 261 297 262 float PhotSys (Measure *measure, Average *average, SecFilt *secfilt) { 263 264 int i, Np; 265 float Mcat, Mcol, Msys, mc, Mc; 266 PhotCode *code; 267 268 Np = photcodes[0].hashcode[measure[0].photcode]; 298 float PhotSys (Measure *measure, Average *average, SecFilt *secfilt, dvoMagClassType class) { 299 300 int Np = photcodes[0].hashcode[measure[0].photcode]; 269 301 if (Np == -1) return (NAN); 270 271 if (photcodes[0].code[Np].type == PHOT_REF) { 272 Msys = measure[0].M; 273 return (Msys); 274 } 275 code = &photcodes[0].code[Np]; 276 Mcat = measure[0].M - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C; 302 PhotCode *code = &photcodes[0].code[Np]; 303 304 float Mraw = NAN; 305 switch (class) { 306 case MAG_CLASS_PSF: 307 Mraw = measure[0].M; 308 break; 309 case MAG_CLASS_KRON: 310 Mraw = measure[0].Mkron; 311 break; 312 case MAG_CLASS_APER: 313 Mraw = measure[0].Map; 314 break; 315 default: 316 break; 317 } 318 if (code->type == PHOT_REF) { 319 return (Mraw); 320 } 321 float Mcat = Mraw - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C; 277 322 278 323 /* for DEP, color must be made of PRI/SEC */ 279 mc = PhotColorForCode (average, secfilt, NULL, code);324 float mc = PhotColorForCode (average, secfilt, NULL, code); 280 325 if (isnan(mc)) return (Mcat); 281 mc = mc - SCALE*code[0].dX; 282 283 Mc = mc; 284 Mcol = 0; 326 mc -= SCALE*code[0].dX; 327 328 int i = 0; 329 double Mc = mc; 330 float Mcol = 0; 285 331 for (i = 0; i < code[0].Nc; i++) { 286 332 Mcol += code[0].X[i]*Mc; 287 333 Mc *= mc; 288 334 } 289 Msys = Mcat + Mcol;335 float Msys = Mcat + Mcol; 290 336 return (Msys); 291 337 } 292 338 293 float PhotRel (Measure *measure, Average *average, SecFilt *secfilt) { 294 295 int i, Np; 296 float Mcat, Mcol, Mrel, mc, Mc; 297 PhotCode *code; 298 299 Np = photcodes[0].hashcode[measure[0].photcode]; 339 float PhotRel (Measure *measure, Average *average, SecFilt *secfilt, dvoMagClassType class) { 340 341 int Np = photcodes[0].hashcode[measure[0].photcode]; 300 342 if (Np == -1) return (NAN); 301 302 if (photcodes[0].code[Np].type == PHOT_REF) { 303 Mcat = measure[0].M; 304 return (Mcat); 305 } 306 code = &photcodes[0].code[Np]; 307 Mrel = measure[0].M - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C - measure[0].Mcal; 343 PhotCode *code = &photcodes[0].code[Np]; 344 345 float Mraw = NAN; 346 switch (class) { 347 case MAG_CLASS_PSF: 348 Mraw = measure[0].M; 349 break; 350 case MAG_CLASS_KRON: 351 Mraw = measure[0].Mkron; 352 break; 353 case MAG_CLASS_APER: 354 Mraw = measure[0].Map; 355 break; 356 default: 357 break; 358 } 359 if (code->type == PHOT_REF) { 360 return (Mraw); 361 } 362 float Mcat = Mraw - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C - measure[0].Mcal; 308 363 309 364 /* for DEP, color must be made of PRI/SEC */ 310 mc = PhotColorForCode (average, secfilt, NULL, code); 311 if (isnan(mc)) return (Mrel); 312 mc = mc - SCALE*code[0].dX; 313 314 Mc = mc; 315 Mcol = 0; 365 float mc = PhotColorForCode (average, secfilt, NULL, code); 366 if (isnan(mc)) return (Mcat); 367 mc -= SCALE*code[0].dX; 368 369 double Mc = mc; 370 float Mcol = 0; 371 int i = 0; 372 for (i = 0; i < code[0].Nc; i++) { 373 Mcol += code[0].X[i]*Mc; 374 Mc *= mc; 375 } 376 float Mrel = Mcat + Mcol; 377 return (Mrel); 378 } 379 380 /* return calibrated magnitude from measure for given photcode */ 381 float PhotCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code, dvoMagClassType class) { 382 383 int i; 384 385 if (code == NULL) return NAN; 386 387 /* code must be the matching PRI/SEC code for this measurement or an equivalent ALT */ 388 int Np = photcodes[0].hashcode[thisone[0].photcode]; 389 if (Np == -1) return (NAN); 390 PhotCode *myCode = &photcodes[0].code[Np]; 391 392 if (code->code != myCode->equiv) return (NAN); 393 394 // if we are REF type, just get the right version and return 395 if (myCode->type == PHOT_REF) { 396 float Mraw = NAN; 397 switch (class) { 398 case MAG_CLASS_PSF: 399 Mraw = thisone[0].M; 400 break; 401 case MAG_CLASS_KRON: 402 Mraw = thisone[0].Mkron; 403 break; 404 case MAG_CLASS_APER: 405 Mraw = thisone[0].Map; 406 break; 407 default: 408 break; 409 } 410 return (Mraw); 411 } 412 413 float Mcal = PhotRel (thisone, average, secfilt, class) + SCALE*code[0].C; 414 415 float mc = PhotColorForCode (average, secfilt, measure, code); 416 if (isnan(mc)) return (Mcal); 417 mc -= SCALE*code[0].dX; 418 419 double Mc = mc; 420 float Mcol = 0; 421 for (i = 0; i < code[0].Nc; i++) { 422 Mcol += code[0].X[i]*Mc; 423 Mc *= mc; 424 } 425 Mcal += Mcol; 426 return (Mcal); 427 } 428 429 /***/ 430 float PhotAve (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source) { 431 432 if (code == NULL) return NAN; 433 434 int Ns = photcodes[0].hashNsec[code[0].code]; 435 if (Ns == -1) return (NAN); 436 437 float Mave = NAN; 438 switch (source) { 439 case MAG_SRC_CHP: 440 switch (class) { 441 case MAG_CLASS_PSF: 442 Mave = secfilt[Ns].M; 443 break; 444 case MAG_CLASS_KRON: 445 Mave = secfilt[Ns].Mkron; 446 break; 447 case MAG_CLASS_APER: 448 Mave = secfilt[Ns].Map; 449 break; 450 default: 451 break; 452 } 453 break; 454 case MAG_SRC_WRP: 455 switch (class) { 456 case MAG_CLASS_PSF: 457 Mave = secfilt[Ns].MpsfWrp; 458 break; 459 case MAG_CLASS_KRON: 460 Mave = secfilt[Ns].MkronWrp; 461 break; 462 case MAG_CLASS_APER: 463 Mave = secfilt[Ns].MapWrp; 464 break; 465 default: 466 break; 467 } 468 break; 469 case MAG_SRC_STK: 470 switch (class) { 471 case MAG_CLASS_PSF: 472 Mave = secfilt[Ns].MpsfStk; 473 break; 474 case MAG_CLASS_KRON: 475 Mave = secfilt[Ns].MkronStk; 476 break; 477 case MAG_CLASS_APER: 478 Mave = secfilt[Ns].MapStk; 479 break; 480 default: 481 break; 482 } 483 break; 484 default: 485 break; 486 } 487 return (Mave); 488 } 489 490 /* return calibrated magnitude from average/secfilt for given photcode */ 491 float PhotRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure, dvoMagClassType class, dvoMagSourceType source) { 492 493 int i; 494 495 float Mave = PhotAve (code, average, secfilt, class, source); 496 if (isnan(Mave)) return NAN; 497 498 // correct for relative zero-point 499 float Mref = Mave + SCALE*code[0].C; 500 501 float mc = PhotColorForCode (average, secfilt, measure, code); 502 if (isnan(mc)) return (Mref); 503 mc -= SCALE*code[0].dX; 504 505 // correct for color terms 506 double Mc = mc; 507 float Mcol = 0; 316 508 for (i = 0; i < code[0].Nc; i++) { 317 509 Mcol += code[0].X[i]*Mc; 318 510 Mc *= mc; /* the 0.001 is needed for higher order terms to keep the units mag = mag^n */ 319 511 } 320 Mrel += Mcol;321 return (Mrel);322 }323 324 /* return calibrated magnitude from measure for given photcode */325 float PhotCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code) {326 327 int i, Np;328 float Mcal, Mrel, Mcol, mc, Mc;329 330 if (code == NULL) return NAN;331 332 /* code must be the matching PRI/SEC code for this measurement or an equivalent ALT */333 Np = photcodes[0].hashcode[thisone[0].photcode];334 if (Np == -1) return (NAN);335 336 if (photcodes[0].code[Np].type == PHOT_REF) {337 Mrel = thisone[0].M;338 return (Mrel);339 }340 if (code[0].code != photcodes[0].code[Np].equiv) return (NAN);341 342 Mcal = PhotRel (thisone, average, secfilt) + SCALE*code[0].C;343 344 mc = PhotColorForCode (average, secfilt, measure, code);345 if (isnan(mc)) return (Mcal);346 mc = mc - SCALE*code[0].dX;347 348 Mc = mc;349 Mcol = 0;350 for (i = 0; i < code[0].Nc; i++) {351 Mcol += code[0].X[i]*Mc;352 Mc *= mc;353 }354 Mcal += Mcol;355 return (Mcal);356 }357 358 /***/359 float PhotAve (PhotCode *code, Average *average, SecFilt *secfilt) {360 361 int Ns;362 float Mave;363 364 if (code == NULL) return NAN;365 366 Ns = photcodes[0].hashNsec[code[0].code];367 Mave = (Ns == -1) ? NAN : secfilt[Ns].M;368 return (Mave);369 }370 371 /* return calibrated magnitude from average/secfilt for given photcode */372 float PhotRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure) {373 374 int i, Ns;375 float Mave, Mref, Mcol, mc;376 double Mc;377 378 if (code == NULL) return NAN;379 380 Ns = photcodes[0].hashNsec[code[0].code];381 Mave = (Ns == -1) ? NAN : secfilt[Ns].M;382 Mref = Mave + SCALE*code[0].C;383 384 mc = PhotColorForCode (average, secfilt, measure, code);385 if (isnan(mc)) return (Mref);386 mc = mc - SCALE*code[0].dX;387 388 Mc = mc;389 Mcol = 0;390 for (i = 0; i < code[0].Nc; i++) {391 Mcol += code[0].X[i]*Mc;392 Mc *= mc; /* the 0.001 is needed for higher order terms to keep the units mag = mag^n */393 }394 512 Mref += Mcol; 395 513 return (Mref); 396 514 } 397 515 398 float PhotAveErr (PhotCode *code, Average *average, SecFilt *secfilt) { 399 400 int Ns; 401 float dM; 402 403 if (code == NULL) return NAN; 404 405 Ns = photcodes[0].hashNsec[code[0].code]; 406 dM = (Ns == -1) ? NAN : secfilt[Ns].dM; 407 return (dM); 408 } 409 410 /************************************** APERTURE-related Magnitudes ***********************************************/ 411 412 float PhotAperInst (Measure *measure) { 413 414 int Np; 415 float Minst; 416 417 Np = photcodes[0].hashcode[measure[0].photcode]; 418 if (Np == -1) return (NAN); 419 420 if (photcodes[0].code[Np].type == PHOT_REF) { 421 Minst = measure[0].Map; 422 return (Minst); 423 } 424 Minst = measure[0].Map - measure[0].dt - ZERO_POINT; 425 426 return (Minst); 427 } 428 429 float PhotAperCat (Measure *measure) { 430 431 int Np; 432 float Mcat; 433 PhotCode *code; 434 435 Np = photcodes[0].hashcode[measure[0].photcode]; 436 if (Np == -1) return (NAN); 437 438 if (photcodes[0].code[Np].type == PHOT_REF) { 439 Mcat = measure[0].Map; 440 return (Mcat); 441 } 442 code = &photcodes[0].code[Np]; 443 Mcat = measure[0].Map - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C; 444 445 return (Mcat); 446 } 447 448 float PhotAperSys (Measure *measure, Average *average, SecFilt *secfilt) { 449 450 int i, Np; 451 float Mcat, Mcol, Msys, mc, Mc; 452 PhotCode *code; 453 454 Np = photcodes[0].hashcode[measure[0].photcode]; 455 if (Np == -1) return (NAN); 456 457 if (photcodes[0].code[Np].type == PHOT_REF) { 458 Mcat = measure[0].Map; 459 return (Mcat); 460 } 461 code = &photcodes[0].code[Np]; 462 Mcat = measure[0].Map - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C; 463 464 /* for DEP, color must be made of PRI/SEC */ 465 mc = PhotColorForCode (average, secfilt, NULL, code); 466 if (isnan(mc)) return (Mcat); 467 mc = mc - SCALE*code[0].dX; 468 469 Mc = mc; 470 Mcol = 0; 471 for (i = 0; i < code[0].Nc; i++) { 472 Mcol += code[0].X[i]*Mc; 473 Mc *= mc; 474 } 475 Msys = Mcat + Mcol; 476 return (Msys); 477 } 478 479 float PhotAperRel (Measure *measure, Average *average, SecFilt *secfilt) { 480 481 int i, Np; 482 float Mcat, Mcol, Mrel, mc, Mc; 483 PhotCode *code; 484 485 Np = photcodes[0].hashcode[measure[0].photcode]; 486 if (Np == -1) return (NAN); 487 488 if (photcodes[0].code[Np].type == PHOT_REF) { 489 Mcat = measure[0].Map; 490 return (Mcat); 491 } 492 code = &photcodes[0].code[Np]; 493 Mrel = measure[0].Map - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C - measure[0].Mcal; 494 495 /* for DEP, color must be made of PRI/SEC */ 496 mc = PhotColorForCode (average, secfilt, NULL, code); 497 if (isnan(mc)) return (Mrel); 498 mc = mc - SCALE*code[0].dX; 499 500 Mc = mc; 501 Mcol = 0; 502 for (i = 0; i < code[0].Nc; i++) { 503 Mcol += code[0].X[i]*Mc; 504 Mc *= mc; /* the 0.001 is needed for higher order terms to keep the units mag = mag^n */ 505 } 506 Mrel += Mcol; 507 return (Mrel); 508 } 509 510 /* return calibrated magnitude from measure for given photcode */ 511 float PhotAperCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code) { 512 513 int i, Np; 514 float Mcal, Mrel, Mcol, mc, Mc; 515 516 if (code == NULL) return NAN; 517 518 /* code must be the matching PRI/SEC code for this measurement or an equivalent ALT */ 519 Np = photcodes[0].hashcode[thisone[0].photcode]; 520 if (Np == -1) return (NAN); 521 522 if (photcodes[0].code[Np].type == PHOT_REF) { 523 Mrel = thisone[0].Map; 524 return (Mrel); 525 } 526 if (code[0].code != photcodes[0].code[Np].equiv) return (NAN); 527 528 Mcal = PhotAperRel (thisone, average, secfilt) + SCALE*code[0].C; 529 530 mc = PhotColorForCode (average, secfilt, measure, code); 531 if (isnan(mc)) return (Mcal); 532 mc = mc - SCALE*code[0].dX; 533 534 Mc = mc; 535 Mcol = 0; 536 for (i = 0; i < code[0].Nc; i++) { 537 Mcol += code[0].X[i]*Mc; 538 Mc *= mc; 539 } 540 Mcal += Mcol; 541 return (Mcal); 542 } 543 544 float PhotAperAve (PhotCode *code, Average *average, SecFilt *secfilt) { 545 546 int Ns; 547 float Maper; 548 549 if (code == NULL) return NAN; 550 551 Ns = photcodes[0].hashNsec[code[0].code]; 552 Maper = (Ns == -1) ? NAN : secfilt[Ns].Map; 553 return (Maper); 554 } 555 556 /* return calibrated magnitude from average/secfilt for given photcode */ 557 float PhotAperRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure) { 558 559 int i, Ns; 560 float Mave, Mref, Mcol, mc; 561 double Mc; 562 563 if (code == NULL) return NAN; 564 565 Ns = photcodes[0].hashNsec[code[0].code]; 566 Mave = (Ns == -1) ? NAN : secfilt[Ns].Map; 567 Mref = Mave + SCALE*code[0].C; 568 569 mc = PhotColorForCode (average, secfilt, measure, code); 570 if (isnan(mc)) return (Mref); 571 mc = mc - SCALE*code[0].dX; 572 573 Mc = mc; 574 Mcol = 0; 575 for (i = 0; i < code[0].Nc; i++) { 576 Mcol += code[0].X[i]*Mc; 577 Mc *= mc; /* the 0.001 is needed for higher order terms to keep the units mag = mag^n */ 578 } 579 Mref += Mcol; 580 return (Mref); 581 } 582 583 /************************************** KRON-related Magnitudes ***********************************************/ 584 585 float PhotKronInst (Measure *measure) { 586 587 int Np; 588 float Minst; 589 590 Np = photcodes[0].hashcode[measure[0].photcode]; 591 if (Np == -1) return (NAN); 592 593 if (photcodes[0].code[Np].type == PHOT_REF) { 594 Minst = measure[0].Mkron; 595 return (Minst); 596 } 597 Minst = measure[0].Mkron - measure[0].dt - ZERO_POINT; 598 599 return (Minst); 600 } 601 602 float PhotKronCat (Measure *measure) { 603 604 int Np; 605 float Mcat; 606 PhotCode *code; 607 608 Np = photcodes[0].hashcode[measure[0].photcode]; 609 if (Np == -1) return (NAN); 610 611 if (photcodes[0].code[Np].type == PHOT_REF) { 612 Mcat = measure[0].Mkron; 613 return (Mcat); 614 } 615 code = &photcodes[0].code[Np]; 616 Mcat = measure[0].Mkron - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C; 617 618 return (Mcat); 619 } 620 621 float PhotKronSys (Measure *measure, Average *average, SecFilt *secfilt) { 622 623 int i, Np; 624 float Mcat, Mcol, Msys, mc, Mc; 625 PhotCode *code; 626 627 Np = photcodes[0].hashcode[measure[0].photcode]; 628 if (Np == -1) return (NAN); 629 630 if (photcodes[0].code[Np].type == PHOT_REF) { 631 Msys = measure[0].Mkron; 632 return (Msys); 633 } 634 code = &photcodes[0].code[Np]; 635 Mcat = measure[0].Mkron - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C; 636 637 /* for DEP, color must be made of PRI/SEC */ 638 mc = PhotColorForCode (average, secfilt, NULL, code); 639 if (isnan(mc)) return (Mcat); 640 mc = mc - SCALE*code[0].dX; 641 642 Mc = mc; 643 Mcol = 0; 644 for (i = 0; i < code[0].Nc; i++) { 645 Mcol += code[0].X[i]*Mc; 646 Mc *= mc; 647 } 648 Msys = Mcat + Mcol; 649 return (Msys); 650 } 651 652 float PhotKronRel (Measure *measure, Average *average, SecFilt *secfilt) { 653 654 int i, Np; 655 float Mcat, Mcol, Mrel, mc, Mc; 656 PhotCode *code; 657 658 Np = photcodes[0].hashcode[measure[0].photcode]; 659 if (Np == -1) return (NAN); 660 661 if (photcodes[0].code[Np].type == PHOT_REF) { 662 Mcat = measure[0].Mkron; 663 return (Mcat); 664 } 665 code = &photcodes[0].code[Np]; 666 Mrel = measure[0].Mkron - ZERO_POINT + code[0].K*(measure[0].airmass - 1.000) + SCALE*code[0].C - measure[0].Mcal; 667 668 /* for DEP, color must be made of PRI/SEC */ 669 mc = PhotColorForCode (average, secfilt, NULL, code); 670 if (isnan(mc)) return (Mrel); 671 mc = mc - SCALE*code[0].dX; 672 673 Mc = mc; 674 Mcol = 0; 675 for (i = 0; i < code[0].Nc; i++) { 676 Mcol += code[0].X[i]*Mc; 677 Mc *= mc; /* the 0.001 is needed for higher order terms to keep the units mag = mag^n */ 678 } 679 Mrel += Mcol; 680 return (Mrel); 681 } 682 683 /* return calibrated magnitude from measure for given photcode */ 684 float PhotKronCal (Measure *thisone, Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code) { 685 686 int i, Np; 687 float Mcal, Mrel, Mcol, mc, Mc; 688 689 if (code == NULL) return NAN; 690 691 /* code must be the matching PRI/SEC code for this measurement or an equivalent ALT */ 692 Np = photcodes[0].hashcode[thisone[0].photcode]; 693 if (Np == -1) return (NAN); 694 695 if (photcodes[0].code[Np].type == PHOT_REF) { 696 Mrel = thisone[0].Mkron; 697 return (Mrel); 698 } 699 if (code[0].code != photcodes[0].code[Np].equiv) return (NAN); 700 701 Mcal = PhotKronRel (thisone, average, secfilt) + SCALE*code[0].C; 702 703 mc = PhotColorForCode (average, secfilt, measure, code); 704 if (isnan(mc)) return (Mcal); 705 mc = mc - SCALE*code[0].dX; 706 707 Mc = mc; 708 Mcol = 0; 709 for (i = 0; i < code[0].Nc; i++) { 710 Mcol += code[0].X[i]*Mc; 711 Mc *= mc; 712 } 713 Mcal += Mcol; 714 return (Mcal); 715 } 716 717 float PhotKronAve (PhotCode *code, Average *average, SecFilt *secfilt) { 718 719 int Ns; 720 float Mkron; 721 722 if (code == NULL) return NAN; 723 724 Ns = photcodes[0].hashNsec[code[0].code]; 725 Mkron = (Ns == -1) ? NAN : secfilt[Ns].Mkron; 726 return (Mkron); 727 } 728 729 /* return calibrated magnitude from average/secfilt for given photcode */ 730 float PhotKronRef (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure) { 731 732 int i, Ns; 733 float Mave, Mref, Mcol, mc; 734 double Mc; 735 736 if (code == NULL) return NAN; 737 738 Ns = photcodes[0].hashNsec[code[0].code]; 739 Mave = (Ns == -1) ? NAN : secfilt[Ns].Mkron; 740 Mref = Mave + SCALE*code[0].C; 741 742 mc = PhotColorForCode (average, secfilt, measure, code); 743 if (isnan(mc)) return (Mref); 744 mc = mc - SCALE*code[0].dX; 745 746 Mc = mc; 747 Mcol = 0; 748 for (i = 0; i < code[0].Nc; i++) { 749 Mcol += code[0].X[i]*Mc; 750 Mc *= mc; /* the 0.001 is needed for higher order terms to keep the units mag = mag^n */ 751 } 752 Mref += Mcol; 753 return (Mref); 754 } 755 756 float PhotKronAveErr (PhotCode *code, Average *average, SecFilt *secfilt) { 757 758 int Ns; 759 float dMkron; 760 761 if (code == NULL) return NAN; 762 763 Ns = photcodes[0].hashNsec[code[0].code]; 764 dMkron = (Ns == -1) ? NAN : secfilt[Ns].dMkron; 765 return (dMkron); 516 float PhotErr (Measure *measure, dvoMagClassType class) { 517 518 float dMraw = NAN; 519 switch (class) { 520 case MAG_CLASS_PSF: 521 dMraw = measure[0].dM; 522 break; 523 case MAG_CLASS_KRON: 524 dMraw = measure[0].dMkron; 525 break; 526 case MAG_CLASS_APER: 527 dMraw = measure[0].dMap; 528 break; 529 default: 530 break; 531 } 532 return (dMraw); 533 } 534 535 float PhotAveErr (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source) { 536 537 if (code == NULL) return NAN; 538 539 int Ns = photcodes[0].hashNsec[code[0].code]; 540 if (Ns == -1) return (NAN); 541 542 float dMave = NAN; 543 switch (source) { 544 case MAG_SRC_CHP: 545 switch (class) { 546 case MAG_CLASS_PSF: 547 dMave = secfilt[Ns].dM; 548 break; 549 case MAG_CLASS_KRON: 550 dMave = secfilt[Ns].dMkron; 551 break; 552 case MAG_CLASS_APER: 553 dMave = secfilt[Ns].dMap; 554 break; 555 default: 556 break; 557 } 558 break; 559 case MAG_SRC_WRP: 560 switch (class) { 561 case MAG_CLASS_PSF: 562 dMave = secfilt[Ns].dFpsfWrp / secfilt[Ns].FpsfWrp; 563 break; 564 case MAG_CLASS_KRON: 565 dMave = secfilt[Ns].dFkronWrp / secfilt[Ns].FkronWrp; 566 break; 567 case MAG_CLASS_APER: 568 dMave = secfilt[Ns].dFapWrp / secfilt[Ns].FapWrp; 569 break; 570 default: 571 break; 572 } 573 break; 574 case MAG_SRC_STK: 575 switch (class) { 576 case MAG_CLASS_PSF: 577 dMave = secfilt[Ns].dFpsfStk / secfilt[Ns].FpsfStk; 578 break; 579 case MAG_CLASS_KRON: 580 dMave = secfilt[Ns].dFkronStk / secfilt[Ns].FkronStk; 581 break; 582 case MAG_CLASS_APER: 583 dMave = secfilt[Ns].dFapStk / secfilt[Ns].FapStk; 584 break; 585 default: 586 break; 587 } 588 break; 589 default: 590 break; 591 } 592 return (dMave); 766 593 } 767 594
Note:
See TracChangeset
for help on using the changeset viewer.
