IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 33458


Ignore:
Timestamp:
Mar 9, 2012, 10:50:10 AM (14 years ago)
Author:
eugene
Message:

make -averages and standard relphot flags match

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/StarOps.c

    r33453 r33458  
    232232          minUbercalDist = MIN(minUbercalDist, myUbercalDist);
    233233
     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
    234253          // dlist gives the error, which is used as the weight in WT_MEAN.
    235254          // we can modify the resulting weight in a few ways:
     
    255274            }
    256275          }
    257 
    258           // count the extended detections
    259           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_1
    273               continue;
    274             }
    275           }
    276 
    277276          N++;
    278277        }
     
    312311
    313312        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;
    315314        }
    316315      }
     
    322321  return (TRUE);
    323322}
     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  } }
    324332
    325333// For each average object, set the average mags based on existing equiv photometry.
     
    335343  double *list, *dlist;
    336344  StatType stats;
    337   PhotCode *code;
    338345  DVOAverageFlags flagBits;
    339346
     
    352359  Nsecfilt = GetPhotcodeNsecfilt ();
    353360
    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
    355366  for (i = 0; i < Ncatalog; i++) {
    356367    for (j = 0; j < catalog[i].Naverage; j++) {
     
    361372      // them in a single pass
    362373
     374      int Next = 0;
     375
    363376      for (Ns = 0; Ns < Nsecfilt; Ns++) {
    364377
    365         code = GetPhotcodebyNsec (Ns);
     378        PhotCode *code = GetPhotcodebyNsec (Ns);
    366379        Nc = code[0].code;
    367380       
     
    375388          if (isnan(Msys)) continue;
    376389
     390          // reject POOR detections (PSF_QF < 0.85) and count extended detections
    377391          // 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            }
    380399          }
    381400
     
    398417        catalog[i].secfilt[Nsecfilt*j+Ns].M_80 = 1000 * stats.Upper80;
    399418        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        }
    400423      }
    401424
    402425      // 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 ++;
    426447              }
    427448            }
    428449          }
     450        }
    429451         
    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;
    459504      }
    460505    }
Note: See TracChangeset for help on using the changeset viewer.