Changeset 33458
- Timestamp:
- Mar 9, 2012, 10:50:10 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/StarOps.c
r33453 r33458 232 232 minUbercalDist = MIN(minUbercalDist, myUbercalDist); 233 233 234 // count the extended detections 235 if ((catalog[i].measure[m].photcode >= 10000) && (catalog[i].measure[m].photcode <= 10500)) { 236 if (!isnan(catalog[i].measure[m].Map)) { 237 if (catalog[i].measure[m].M - catalog[i].measure[m].Map > 0.5) { 238 Next ++; 239 } 240 } 241 } 242 // count extended detections for 2MASS (XXX NOTE hardwired photcodes 2011, 2012, 2013) 243 if ((catalog[i].measure[m].photcode >= 2011) && (catalog[i].measure[m].photcode <= 2013)) { 244 if (catalog[i].measure[m].photFlags & 0x00c00000) { 245 Next ++; 246 } 247 if ((pass == 0) && !(catalog[i].measure[m].photFlags & 0x00000007)) { 248 // detections without one of these bits should only be used in PASS_1 249 continue; 250 } 251 } 252 234 253 // dlist gives the error, which is used as the weight in WT_MEAN. 235 254 // we can modify the resulting weight in a few ways: … … 255 274 } 256 275 } 257 258 // count the extended detections259 if ((catalog[i].measure[m].photcode >= 10000) && (catalog[i].measure[m].photcode <= 10500)) {260 if (!isnan(catalog[i].measure[m].Map)) {261 if (catalog[i].measure[m].M - catalog[i].measure[m].Map > 0.5) {262 Next ++;263 }264 }265 }266 // count extended detections for 2MASS (XXX NOTE hardwired photcodes 2011, 2012, 2013)267 if ((catalog[i].measure[m].photcode >= 2011) && (catalog[i].measure[m].photcode <= 2013)) {268 if (catalog[i].measure[m].photFlags & 0x00c00000) {269 Next ++;270 }271 if ((pass == 0) && !(catalog[i].measure[m].photFlags & 0x00000007)) {272 // detections without one of these bits should only be used in PASS_1273 continue;274 }275 }276 277 276 N++; 278 277 } … … 312 311 313 312 if ((Next > 0) && (Next > 0.5*N)) { 314 catalog[i].secfilt[Nsecfilt*j+Nsec].flags |= ID_SECF_OBJ_EXT;313 catalog[i].secfilt[Nsecfilt*j+Nsec].flags |= ID_SECF_OBJ_EXT; 315 314 } 316 315 } … … 322 321 return (TRUE); 323 322 } 323 324 /* grab Nsec for named photcode */ 325 # define NAMED_PHOTCODE_NSEC(MY_NSEC,NAME) \ 326 short MY_NSEC = -1; \ 327 { \ 328 PhotCode *code = GetPhotcodebyName (NAME); \ 329 if (code) { \ 330 MY_NSEC = GetPhotcodeNsec (code->equiv); \ 331 } } 324 332 325 333 // For each average object, set the average mags based on existing equiv photometry. … … 335 343 double *list, *dlist; 336 344 StatType stats; 337 PhotCode *code;338 345 DVOAverageFlags flagBits; 339 346 … … 352 359 Nsecfilt = GetPhotcodeNsecfilt (); 353 360 354 # define PSFQUALSTATS 1 361 // we want to raise some bits on the 2MASS (JHK) secfilt flags, if we have 2MASS data 362 NAMED_PHOTCODE_NSEC (Nsec_J, "2MASS_J"); 363 NAMED_PHOTCODE_NSEC (Nsec_H, "2MASS_H"); 364 NAMED_PHOTCODE_NSEC (Nsec_K, "2MASS_K"); 365 355 366 for (i = 0; i < Ncatalog; i++) { 356 367 for (j = 0; j < catalog[i].Naverage; j++) { … … 361 372 // them in a single pass 362 373 374 int Next = 0; 375 363 376 for (Ns = 0; Ns < Nsecfilt; Ns++) { 364 377 365 code = GetPhotcodebyNsec (Ns);378 PhotCode *code = GetPhotcodebyNsec (Ns); 366 379 Nc = code[0].code; 367 380 … … 375 388 if (isnan(Msys)) continue; 376 389 390 // reject POOR detections (PSF_QF < 0.85) and count extended detections 377 391 // XXX only apply this filter for psphot data from GPC1 for now... 378 if (PSFQUALSTATS && (catalog[i].measure[m].photcode > 10000) && (catalog[i].measure[m].photcode < 10500)) { 379 if (catalog[i].measure[m].psfQual < 0.85) continue; 392 if ((catalog[i].measure[m].photcode > 10000) && (catalog[i].measure[m].photcode < 10500)) { 393 if (catalog[i].measure[m].psfQual < 0.85) continue; 394 if (!isnan(catalog[i].measure[m].Map)) { 395 if (catalog[i].measure[m].M - catalog[i].measure[m].Map > 0.5) { 396 Next ++; 397 } 398 } 380 399 } 381 400 … … 398 417 catalog[i].secfilt[Nsecfilt*j+Ns].M_80 = 1000 * stats.Upper80; 399 418 catalog[i].secfilt[Nsecfilt*j+Ns].M_20 = 1000 * stats.Lower20; 419 420 if ((Next > 0) && (Next > 0.5*N)) { 421 catalog[i].secfilt[Nsecfilt*j+Ns].flags |= ID_SECF_OBJ_EXT; 422 } 400 423 } 401 424 402 425 // update average flags based on the detection stats. 403 // XXX we need to clean this up -- this is a serious set of hacks... 404 if (PSFQUALSTATS) { 405 int Galaxy2MASS, GalaxySDSS, goodPS1, nEXT, nPSF, good2MASS; 406 407 Galaxy2MASS = FALSE; // best guess for galaxy based on 2MASS J measurements (gal_contam == measure.flags[0x00400000 | 0x00800000]) 408 GalaxySDSS = FALSE; // best guess for galaxy based on SDSS measurements (XXX need to fix SDSS flags) 409 goodPS1 = FALSE; // true if any PS1 measurements have psfQual > 0.85 410 good2MASS = FALSE; // true if 2MASS J measurements have significant detections 411 nEXT = nPSF = 0; // number of PS1 PSF vs EXT measurements 412 413 m = catalog[i].average[j].measureOffset; 414 for (k = 0; k < catalog[i].average[j].Nmeasure; k++, m++) { 415 416 // PS1 data : 417 if ((catalog[i].measure[m].photcode >= 10000) && (catalog[i].measure[m].photcode <= 10500)) { 418 if (catalog[i].measure[m].psfQual > 0.85) { 419 goodPS1 = TRUE; 420 if (!isnan(catalog[i].measure[m].Map)) { 421 if (catalog[i].measure[m].M - catalog[i].measure[m].Map > 0.5) { 422 nEXT ++; 423 } else { 424 nPSF ++; 425 } 426 427 int Galaxy2MASS = FALSE; // best guess for galaxy based on 2MASS J measurements (gal_contam == measure.flags[0x00400000 | 0x00800000]) 428 int goodPS1 = FALSE; // true if any PS1 measurements have psfQual > 0.85 429 int good2MASS = FALSE; // true if 2MASS J measurements have significant detections 430 int nEXT = 0; 431 int nPSF = 0; // number of PS1 PSF vs EXT measurements 432 int have2MASS = FALSE; 433 434 // count, flag good and extended detections 435 m = catalog[i].average[j].measureOffset; 436 for (k = 0; k < catalog[i].average[j].Nmeasure; k++, m++) { 437 438 // PS1 data : 439 if ((catalog[i].measure[m].photcode >= 10000) && (catalog[i].measure[m].photcode <= 10500)) { 440 if (catalog[i].measure[m].psfQual > 0.85) { 441 goodPS1 = TRUE; 442 if (!isnan(catalog[i].measure[m].Map)) { 443 if (catalog[i].measure[m].M - catalog[i].measure[m].Map > 0.5) { 444 nEXT ++; 445 } else { 446 nPSF ++; 426 447 } 427 448 } 428 449 } 450 } 429 451 430 // 2MASS data: 431 if (catalog[i].measure[m].photcode == 2011) { 432 if (catalog[i].measure[m].photFlags & 0x00c00000) { 433 Galaxy2MASS = TRUE; 434 } 435 if (catalog[i].measure[m].photFlags & 0x00000007) { 436 good2MASS = TRUE; 437 } 438 } 439 } 440 441 // we attempt to set a few flags here; reset those bits before trying: 442 catalog[i].average[j].flags &= ~flagBits; 443 444 // XXX set the secfilt bits? 445 if (nEXT && (nEXT > nPSF)) { 446 catalog[i].average[j].flags |= ID_OBJ_EXT; 447 } 448 if (goodPS1) { 449 catalog[i].average[j].flags |= ID_OBJ_GOOD; 450 } 451 if (Galaxy2MASS) { 452 catalog[i].average[j].flags |= ID_OBJ_EXT_ALT; 453 // XXX set the secfilt bits for PASS_0 or PASS_1 here? 454 } 455 if (good2MASS) { 456 catalog[i].average[j].flags |= ID_OBJ_GOOD_ALT; 457 // XXX set the secfilt bits for PASS_0 or PASS_1 here? 458 } 452 // 2MASS data J-band flags 453 if (catalog[i].measure[m].photcode == 2011) { 454 // only need to do this once (always have JHK triplet; galaxy flag is same for all 3) 455 have2MASS = TRUE; 456 if (catalog[i].measure[m].photFlags & 0x00c00000) { 457 Galaxy2MASS = TRUE; 458 } 459 if (catalog[i].measure[m].photFlags & 0x00000007) { 460 good2MASS = TRUE; 461 if (Nsec_J > -1) catalog[i].secfilt[j*Nsecfilt + Nsec_J].flags |= ID_PHOTOM_PASS_0; 462 } else { 463 if (Nsec_J > -1) catalog[i].secfilt[j*Nsecfilt + Nsec_J].flags |= ID_PHOTOM_PASS_1; 464 } 465 } 466 // 2MASS data H-band flags 467 if (catalog[i].measure[m].photcode == 2012) { 468 if (catalog[i].measure[m].photFlags & 0x00000007) { 469 good2MASS = TRUE; 470 if (Nsec_H > -1) catalog[i].secfilt[j*Nsecfilt + Nsec_H].flags |= ID_PHOTOM_PASS_0; 471 } else { 472 if (Nsec_H > -1) catalog[i].secfilt[j*Nsecfilt + Nsec_H].flags |= ID_PHOTOM_PASS_1; 473 } 474 } 475 // 2MASS data K-band flags 476 if (catalog[i].measure[m].photcode == 2013) { 477 if (catalog[i].measure[m].photFlags & 0x00000007) { 478 good2MASS = TRUE; 479 if (Nsec_K > -1) catalog[i].secfilt[j*Nsecfilt + Nsec_K].flags |= ID_PHOTOM_PASS_0; 480 } else { 481 if (Nsec_K > -1) catalog[i].secfilt[j*Nsecfilt + Nsec_K].flags |= ID_PHOTOM_PASS_1; 482 } 483 } 484 } 485 486 // we attempt to set a few flags here; reset those bits before trying: 487 catalog[i].average[j].flags &= ~flagBits; 488 489 // XXX set the secfilt bits? 490 if (nEXT && (nEXT > nPSF)) { 491 catalog[i].average[j].flags |= ID_OBJ_EXT; 492 } 493 if (goodPS1) { 494 catalog[i].average[j].flags |= ID_OBJ_GOOD; 495 } 496 if (Galaxy2MASS) { 497 catalog[i].average[j].flags |= ID_OBJ_EXT_ALT; 498 if (Nsec_J > -1) catalog[i].secfilt[j*Nsecfilt + Nsec_J].flags |= ID_SECF_OBJ_EXT; 499 if (Nsec_H > -1) catalog[i].secfilt[j*Nsecfilt + Nsec_H].flags |= ID_SECF_OBJ_EXT; 500 if (Nsec_K > -1) catalog[i].secfilt[j*Nsecfilt + Nsec_K].flags |= ID_SECF_OBJ_EXT; 501 } 502 if (good2MASS) { 503 catalog[i].average[j].flags |= ID_OBJ_GOOD_ALT; 459 504 } 460 505 }
Note:
See TracChangeset
for help on using the changeset viewer.
