- Timestamp:
- Sep 19, 2014, 4:05:27 PM (12 years ago)
- Location:
- branches/eam_branches/ps2-tc3-20130727
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ps2-tc3-20130727
- Property svn:mergeinfo changed
-
branches/eam_branches/ps2-tc3-20130727/Ohana
- Property svn:mergeinfo changed
-
branches/eam_branches/ps2-tc3-20130727/Ohana/src/libdvo/src/dbExtractAverages.c
r36680 r37403 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 … … 162 161 value.Flt = average[0].stargal; 163 162 break; 163 case AVE_REF_COLOR: 164 value.Flt = average[0].refColorBlue; 165 break; 164 166 165 167 case AVE_OBJ_FLAGS: … … 179 181 break; 180 182 181 case AVE_MAG: 182 switch (field->magMode) { 183 case MAG_AVE: 184 value.Flt = PhotAve (field->photcode, average, secfilt); 185 break; 186 case MAG_REF: 187 value.Flt = PhotRef (field->photcode, average, secfilt, measure); 188 break; 189 case MAG_INST: 190 case MAG_CAT: 191 case MAG_SYS: 192 case MAG_REL: 193 case MAG_CAL: 194 // XXX need to code this correctly: this returns just the first matching value 195 value.Flt = NAN; 183 case AVE_PHOT: 184 // if we request mag:ave, use equiv for photcode (ie a given measure, say GPC1.g.XY01, will return g for mag:ave) 185 if (field->photcode->type == PHOT_MAG) { 186 // this is an error 187 break; 188 } 189 190 // if we ask for 2MASS_K, etc (REF values), return NAN unless measure->code matches 191 if (field->photcode->type == PHOT_REF) { 192 // need to ensure measure exists. 193 break; 194 } 195 196 // if we ask for GPC1.g.XY03:rel, etc (DEP values), return NAN unless measure->code matches 197 if (field->photcode->type == PHOT_DEP) { 198 // again. 199 break; 200 } 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 196 205 for (i = 0; i < average[0].Nmeasure; i++) { 197 206 if (field->photcode->code != measure[i].photcode) continue; … … 199 208 break; 200 209 } 201 break; 202 case MAG_CHISQ: 210 */ 211 212 switch (field->magOption) { 213 case MAG_OPTION_MAG: 214 switch (field->magLevel) { 215 case MAG_LEVEL_AVE: 216 value.Flt = PhotAve (field->photcode, average, secfilt, field->magClass, field->magSource); 217 break; 218 case MAG_LEVEL_REF: 219 // which measure is needed here? 220 // PhotRef (field->photcode, average, secfilt, measure, field->magClass, field->magSource); 221 break; 222 case MAG_LEVEL_INST: 223 case MAG_LEVEL_CAT: 224 case MAG_LEVEL_SYS: 225 case MAG_LEVEL_REL: 226 case MAG_LEVEL_CAL: 227 case MAG_LEVEL_NONE: 228 break; 229 } 230 break; 231 232 case MAG_OPTION_ERR: 233 switch (field->magLevel) { 234 case MAG_LEVEL_AVE: 235 case MAG_LEVEL_REF: 236 value.Flt = PhotAveErr (field->photcode, average, secfilt, field->magClass, field->magSource); 237 break; 238 case MAG_LEVEL_INST: 239 case MAG_LEVEL_CAT: 240 case MAG_LEVEL_SYS: 241 case MAG_LEVEL_REL: 242 case MAG_LEVEL_CAL: 243 case MAG_LEVEL_NONE: 244 break; 245 } 246 break; 247 248 case MAG_OPTION_FLUX: 249 switch (field->magLevel) { 250 case MAG_LEVEL_AVE: 251 value.Flt = PhotFluxAve (field->photcode, average, secfilt, field->magClass, field->magSource); 252 break; 253 case MAG_LEVEL_REF: 254 // XXX which measure is needed here? 255 // value.Flt = PhotFluxRef (field->photcode, average, secfilt, measure, field->magClass, field->magSource); 256 break; 257 case MAG_LEVEL_INST: 258 case MAG_LEVEL_CAT: 259 case MAG_LEVEL_SYS: 260 case MAG_LEVEL_REL: 261 case MAG_LEVEL_CAL: 262 case MAG_LEVEL_NONE: 263 break; 264 } 265 break; 266 267 case MAG_OPTION_FLUX_ERR: 268 switch (field->magLevel) { 269 case MAG_LEVEL_AVE: 270 case MAG_LEVEL_REF: 271 value.Flt = PhotFluxAveErr (field->photcode, average, secfilt, field->magClass, field->magSource); 272 break; 273 case MAG_LEVEL_INST: 274 case MAG_LEVEL_CAT: 275 case MAG_LEVEL_SYS: 276 case MAG_LEVEL_REL: 277 case MAG_LEVEL_CAL: 278 case MAG_LEVEL_NONE: 279 break; 280 } 281 break; 282 283 case MAG_OPTION_STDEV: 284 value.Flt = PhotMstdev (field->photcode, average, secfilt, field->magClass, field->magSource); 285 break; 286 case MAG_OPTION_CHISQ: 203 287 value.Flt = PhotXm (field->photcode, average, secfilt); 204 288 break; 205 case MAG_ERR: 206 if ((field->photcode->type == PHOT_REF) || (field->photcode->type == PHOT_DEP)) { 207 for (i = 0; i < average[0].Nmeasure; i++) { 208 if (field->photcode->code != measure[i].photcode) continue; 209 value.Flt = measure[i].dM; 210 break; 211 } 212 } else { 213 value.Flt = PhotAveErr (field->photcode, average, secfilt); 214 } 215 break; 216 case MAG_STDEV: 217 value.Flt = PhotMstdev (field->photcode, average, secfilt); 218 break; 219 case MAG_PHOT_FLAGS: 220 if ((field->photcode->type == PHOT_REF) || (field->photcode->type == PHOT_DEP)) { 221 for (i = 0; i < average[0].Nmeasure; i++) { 222 if (field->photcode->code != measure[i].photcode) continue; 223 value.Int = measure[i].photFlags; 224 break; 225 } 226 } else { 227 Nsec = GetPhotcodeNsec (field->photcode->code); 228 if (Nsec == -1) break; 229 value.Int = secfilt[Nsec].flags; 230 } 231 break; 232 case MAG_NCODE: 233 // XXX push these into dvo_photcode_ops APIs 234 // XXX do I need to allow for conversion to equiv? 235 Nsec = GetPhotcodeNsec (field->photcode->code); 289 case MAG_OPTION_MIN: 290 value.Flt = PhotMmin (field->photcode, average, secfilt); 291 break; 292 case MAG_OPTION_MAX: 293 value.Flt = PhotMmax (field->photcode, average, secfilt); 294 break; 295 case MAG_OPTION_NCODE: { 296 int Nsec = GetPhotcodeNsec (field->photcode->code); 236 297 if (Nsec == -1) break; 237 298 value.Int = secfilt[Nsec].Ncode; 238 299 break; 239 case MAG_NPHOT: 240 Nsec = GetPhotcodeNsec (field->photcode->code); 300 } 301 case MAG_OPTION_NPHOT: { 302 value.Int = PhotNphot (field->photcode, average, secfilt, field->magClass, field->magSource); 303 break; 304 } 305 case MAG_OPTION_UC_DIST: 306 value.Flt = PhotUCdist (field->photcode, average, secfilt); 307 break; 308 // XX case MAG_OPTION_STACK_DET_ID: 309 // XX value.Int = PhotStackID (field->photcode, average, secfilt); 310 // XX break; 311 case MAG_OPTION_FLAGS: { 312 int Nsec = GetPhotcodeNsec (field->photcode->code); 241 313 if (Nsec == -1) break; 242 value.Int = secfilt[Nsec].Nused; 243 break; 244 245 case MAG_APER: 246 case MAG_APER_AVE: 247 value.Flt = PhotAperAve (field->photcode, average, secfilt); 248 break; 249 250 case MAG_APER_REF: 251 value.Flt = PhotAperRef (field->photcode, average, secfilt, measure); 252 break; 253 254 case MAG_KRON: 255 case MAG_KRON_AVE: 256 value.Flt = PhotKronAve (field->photcode, average, secfilt); 257 break; 258 259 case MAG_KRON_REF: 260 value.Flt = PhotKronRef (field->photcode, average, secfilt, measure); 261 break; 262 263 case MAG_KRON_ERR: 264 value.Flt = PhotKronAveErr (field->photcode, average, secfilt); 265 break; 266 267 case MAG_20: 268 value.Flt = PhotM20 (field->photcode, average, secfilt); 269 break; 270 case MAG_80: 271 value.Flt = PhotM80 (field->photcode, average, secfilt); 272 break; 273 case MAG_UC_DIST: 274 value.Flt = PhotUCdist (field->photcode, average, secfilt); 275 break; 276 case MAG_STACK_DET_ID: 277 value.Int = PhotStackID (field->photcode, average, secfilt); 278 break; 279 280 case MAG_FLUX_PSF: 281 value.Flt = PhotAveFluxPSF (field->photcode, average, secfilt); 282 break; 283 case MAG_FLUX_PSF_ERR: 284 value.Flt = PhotAvedFluxPSF (field->photcode, average, secfilt); 285 break; 286 case MAG_FLUX_KRON: 287 value.Flt = PhotAveFluxKron (field->photcode, average, secfilt); 288 break; 289 case MAG_FLUX_KRON_ERR: 290 value.Flt = PhotAvedFluxKron (field->photcode, average, secfilt); 291 break; 292 } 293 break; 294 case AVE_dMAG: 295 value.Flt = PhotAveErr (field->photcode, average, secfilt); 296 break; 297 case AVE_Xm: 298 value.Flt = PhotXm (field->photcode, average, secfilt); 299 break; 314 value.Int = secfilt[Nsec].flags; 315 break; 316 } 317 case MAG_OPTION_NONE: 318 break; 319 } 320 break; 321 300 322 case AVE_TYPE: 301 323 break;
Note:
See TracChangeset
for help on using the changeset viewer.
