IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Nov 30, 2012, 10:06:05 AM (14 years ago)
Author:
eugene
Message:

merge from eam/20120905 (updates to delstar, setposangle, update to ps1-v4 schema to add measure.Xoff,Yoff)

Location:
trunk/Ohana/src/relphot/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/relphot/src/ConfigInit.c

    r33963 r34749  
    66  char  *config, *file;
    77  char CatdirPhotcodeFile[256];
    8   char MasterPhotcodeFile[256];
    98
    109  /*** load configuration info ***/
     
    4544  ScanConfig (config, "CATMODE",                "%s",  0, CATMODE);
    4645  ScanConfig (config, "CATFORMAT",              "%s",  0, CATFORMAT);
    47   ScanConfig (config, "PHOTCODE_FILE",          "%s",  0, MasterPhotcodeFile);
    4846
    49   sprintf (ImageCat, "%s/Images.dat", CATDIR);
     47  snprintf (ImageCat, DVO_MAX_PATH, "%s/Images.dat", CATDIR);
    5048
    5149  if (!ScanConfig (config, "SKY_DEPTH",         "%d",  0, &SKY_DEPTH)) {
     
    6967  /* XXX this does not yet write out the master photcode table */
    7068  sprintf (CatdirPhotcodeFile, "%s/Photcodes.dat", CATDIR);
    71   if (!LoadPhotcodes (CatdirPhotcodeFile, MasterPhotcodeFile, TRUE)) {
    72     fprintf (stderr, "error loading photcode table %s or master file %s\n", CatdirPhotcodeFile, MasterPhotcodeFile);
     69  if (!LoadPhotcodes (CatdirPhotcodeFile, NULL, FALSE)) {
     70    fprintf (stderr, "error loading photcode table %s\n", CatdirPhotcodeFile);
    7371    exit (1);
    7472  }
  • trunk/Ohana/src/relphot/src/StarOps.c

    r34621 r34749  
    356356
    357357  for (j = 0; j < catalog[Nc].Naverage; j++) {
    358     // XXX accumulate all secfilt values in a single pass?
    359 
    360358    // option for a test print
    361359    if (FALSE && (catalog[Nc].average[j].objID == 0x7146) && (catalog[Nc].average[j].catID == 0x49d8)) {
     
    376374
    377375    int Nmeas = 0; // number of meas used for psfqf, psfqfperf, and stargal
     376
     377    int NstackGood = 0;
     378    int NstackSuspect = 0;
     379
     380    int haveStackObject = FALSE;
    378381
    379382    int Ns;
     
    401404
    402405      float stackCenterOffsetMin = 1e9;
    403       // int stackCenterIDmin = -1;
    404406      off_t stackCenterMeasureMin = -1;
    405407
    406408      float stackPrimaryOffsetMin = 1e9;
    407       // int stackPrimaryIDmin = -1;
    408409      off_t stackPrimaryMeasureMin = -1;
    409410
     
    415416      int minUbercalDist = 1000;
    416417   
     418      int isBad = FALSE;
     419      int isSuspect = FALSE;
     420
    417421      N = 0;
    418422      m = catalog[Nc].averageT[j].measureOffset;
     
    447451        if (isnan(Msys)) SKIP_THIS_MEAS(Nsys);
    448452
    449         list[N] = Msys - Mcal - Mmos - Mgrid;
    450 
    451453        int myUbercalDist = getUbercalDist(m,Nc);
    452454        minUbercalDist = MIN(minUbercalDist, myUbercalDist);
    453455
    454456        if (isSetMrelFinal) {
    455           // Map (aplist) and Mkron (kronlist,dkronlist) are used to calculate mean mags per filter
    456           float Map = PhotAper (&catalog[Nc].measure[m]);
    457           aplist[N] = Map - Mcal - Mmos - Mgrid;
    458 
    459           float Mkron = PhotKron (&catalog[Nc].measure[m]);
    460           kronlist[N] = Mkron - Mcal - Mmos - Mgrid;
    461           dkronlist[N] = catalog[Nc].measure[m].dMkron;
    462 
    463           // mean psfQF, psfQFperf, and stargal values are calculated per object (all filters)
    464           psfqf_list[Nmeas]     = catalog[Nc].measure[m].psfQF;
    465           psfqfperf_list[Nmeas] = catalog[Nc].measure[m].psfQF;
    466           stargal_list[Nmeas]   = catalog[Nc].measure[m].extNsigma;
    467 
    468457          // special options for PS1 data
    469458          if ((catalog[Nc].measure[m].photcode >= 10000) && (catalog[Nc].measure[m].photcode <= 10500)) {
     
    484473            havePS1 = TRUE;
    485474          }
     475
    486476          // gpc1 stack data
    487477          if ((catalog[Nc].measure[m].photcode >= 11000) && (catalog[Nc].measure[m].photcode <= 11400)) {
    488             // if (pass < 2) continue;
    489478            haveStack = TRUE;
     479            haveStackObject = TRUE;
    490480
    491481            unsigned int stackImageID;
     
    509499              stackCenterMeasureMin = m;
    510500            }
     501
     502            // data quality assessment
     503            isBad |= (catalog[Nc].measure[m].photFlags & code->photomBadMask);
     504            isBad |= (catalog[Nc].measure[m].psfQF < 0.85);
     505            isBad |= isnan(catalog[Nc].measure[m].psfQF);
     506            isBad |= catalog[Nc].measure[m].dM > 0.2; // S/N < 5.0
     507
     508            isSuspect |= (catalog[Nc].measure[m].photFlags & code->photomPoorMask);
     509            isSuspect |= (catalog[Nc].measure[m].psfQFperf < 0.85);
     510
     511            // mean psfQF, psfQFperf, and stargal values are calculated per object (all filters, stacks and exposures)
     512            psfqf_list[Nmeas]     = catalog[Nc].measure[m].psfQF;
     513            psfqfperf_list[Nmeas] = catalog[Nc].measure[m].psfQFperf;
     514            stargal_list[Nmeas]   = catalog[Nc].measure[m].extNsigma;
     515            Nmeas++;
     516
     517            continue; // do not include stack measurements in the per-exposure statistics
    511518          }
    512519
     
    523530                // detections without one of these bits should only be used in PASS_1
    524531                SKIP_THIS_MEAS(Nbad);
    525                 continue;
    526532              }
    527533            }
     
    557563              if (pass < 4) {
    558564                SKIP_THIS_MEAS(Nbad);
    559                 continue;
    560565              }
    561566              haveSynth = TRUE;
    562567            }
    563568          }
     569
     570          // Map (aplist) and Mkron (kronlist,dkronlist) are used to calculate mean mags per filter
     571          float Map = PhotAper (&catalog[Nc].measure[m]);
     572          aplist[N] = Map - Mcal - Mmos - Mgrid;
     573
     574          float Mkron = PhotKron (&catalog[Nc].measure[m]);
     575          kronlist[N] = Mkron - Mcal - Mmos - Mgrid;
     576          dkronlist[N] = catalog[Nc].measure[m].dMkron;
     577
     578          // mean psfQF, psfQFperf, and stargal values are calculated per object (all filters, stacks and exposures)
     579          psfqf_list[Nmeas]     = catalog[Nc].measure[m].psfQF;
     580          psfqfperf_list[Nmeas] = catalog[Nc].measure[m].psfQFperf;
     581          stargal_list[Nmeas]   = catalog[Nc].measure[m].extNsigma;
     582          Nmeas++;
    564583        }
    565584
     
    572591        dlist[N] = MAX (hypot(catalog[Nc].measureT[m].dM, code->photomErrSys), MIN_ERROR);
    573592        wlist[N] = 1.0;
     593        list[N]  = Msys - Mcal - Mmos - Mgrid;
    574594
    575595        // up-weight the ubercal values (or convergence can take a long time...)
     
    588608        }
    589609        N++;
    590         Nmeas++;
    591610      }
    592611
     
    595614      if (haveStack && (N > 1)) {
    596615        // fprintf (stderr, "multiple stack values for %10.6f %10.6f\n", catalog[Nc].averageT[j].R, catalog[Nc].averageT[j].D);
     616      }
     617
     618      if (haveStack) {
     619        if (!isSuspect && !isBad) {
     620          NstackGood ++;
     621        }
     622        if (isSuspect && !isBad) {
     623          NstackSuspect ++;
     624        }
    597625      }
    598626
     
    764792      }
    765793
     794      if (NstackGood >= 2) {
     795        catalog[Nc].average[j].flags |= ID_OBJ_GOOD_STACK;
     796      } else if (NstackGood + NstackSuspect >= 2) {
     797        catalog[Nc].average[j].flags |= ID_OBJ_SUSPECT_STACK;
     798      } else if (haveStackObject) {
     799        catalog[Nc].average[j].flags |= ID_OBJ_BAD_STACK;
     800      }
     801
    766802      // use NAN values for catalog[Nc].average[j].psfQF as signal
    767803      if (!isfinite(catalog[Nc].average[j].psfQF)) {
  • trunk/Ohana/src/relphot/src/setMrelFinal.c

    r34642 r34749  
    4040      for (i = 0; i < catalog[0].Naverage; i++) {
    4141        off_t N = Nsecfilt*i+Nsec;
    42         catalog[0].secfilt[N].M      = NAN;
    43         catalog[0].secfilt[N].Map    = NAN;
    44         catalog[0].secfilt[N].dM     = NAN;
    45         catalog[0].secfilt[N].Mstdev = NAN_S_SHORT;
    46         catalog[0].secfilt[N].Xm     = NAN;
    47         catalog[0].secfilt[N].M_20   = NAN_S_SHORT;
    48         catalog[0].secfilt[N].M_80   = NAN_S_SHORT;
    49         catalog[0].secfilt[N].Ncode  = 0;
    50         catalog[0].secfilt[N].Nused  = 0;
    51         catalog[0].secfilt[N].flags  = 0; // XXX there are no *astrometry* bits in secfilt.flags
    52         catalog[0].secfilt[N].ubercalDist = 1000;
     42        dvo_secfilt_init (&catalog[0].secfilt[N]);
    5343
    5444        off_t m = catalog[0].average[i].measureOffset;
     
    247237        }
    248238       
    249         // PASS 2 : accept stack measurements
     239        // PASS 2 : (no additional cut)
    250240
    251241        // PASS 1 : accept poor measurements as well (eg, POOR FIT, etc)
Note: See TracChangeset for help on using the changeset viewer.