IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 40231


Ignore:
Timestamp:
Nov 30, 2017, 8:45:51 PM (9 years ago)
Author:
eugene
Message:

need to set Mkron for average chips or we cannot measure the stack zp.aper

Location:
branches/eam_branches/ohana.20170822/src/relphot
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ohana.20170822/src/relphot/include/relphot.h

    r40213 r40231  
    406406void          findImages          PROTO((Catalog *catalog, int Ncatalog, int doImageList));
    407407int           findMosaics         PROTO((Catalog *catalog, int Ncatalog, int doMosaicList));
     408
     409int dumpMags (FILE *fout, Catalog *catalog, int Ncatalog);
    408410
    409411void makeMosaics (Image *image, off_t Nimage, int mergeMcal);
  • branches/eam_branches/ohana.20170822/src/relphot/src/StarOps.c

    r40213 r40231  
    542542  }
    543543  fclose (ftest);
     544  return TRUE;
     545}
     546
     547int dumpMags (FILE *fout, Catalog *catalog, int Ncatalog) {
     548
     549  int i, n;
     550  off_t j;
     551
     552  int Nsecfilt = GetPhotcodeNsecfilt ();
     553
     554  for (i = 0; i < Ncatalog; i++) {
     555    for (j = 0; (j < catalog[i].Naverage) && (j < 2); j++) {
     556      fprintf (fout, "%08x %08x %10.6f %10.6f : \n", catalog[i].averageT[j].catID, catalog[i].averageT[j].objID, catalog[i].averageT[j].R, catalog[i].averageT[j].D);
     557      for (n = 0; n < 5; n++) {
     558        fprintf (fout, "secf  %5d | %6.3f %6.3f | %6.3f %6.3f | %6.3f %6.3f\n", n, catalog[i].secfilt[j*Nsecfilt + n].MpsfChp, catalog[i].secfilt[j*Nsecfilt + n].MkronChp, catalog[i].secfilt[j*Nsecfilt + n].MpsfStk, catalog[i].secfilt[j*Nsecfilt + n].MkronStk, catalog[i].secfilt[j*Nsecfilt + n].MpsfWrp, catalog[i].secfilt[j*Nsecfilt + n].MkronWrp);
     559      }
     560      int m = catalog[i].averageT[j].measureOffset;
     561      for (n = 0; n < catalog[i].averageT[j].Nmeasure; n++) {
     562        fprintf (fout, "meas %5d %5d | %6.3f %6.3f | %6.3f\n", m+n, catalog[i].measureT[m+n].photcode, catalog[i].measureT[m+n].M, catalog[i].measureT[m+n].Mkron, catalog[i].measureT[m+n].Mcal);
     563      }
     564    }
     565  }
    544566  return TRUE;
    545567}
  • branches/eam_branches/ohana.20170822/src/relphot/src/relphot_images.c

    r39643 r40231  
    108108        plot_scatter (catalog, Ncatalog, flatcorr);
    109109      }
     110      if (VERBOSE2) dumpMags (stderr, catalog, Ncatalog);
     111
    110112      setMrel  (catalog, Ncatalog, flatcorr); // threaded
     113      if (VERBOSE2) dumpMags (stderr, catalog, Ncatalog);
     114
    111115      if (PLOTSTUFF) {
    112116        plot_scatter (catalog, Ncatalog, flatcorr);
    113117      }
    114118      setMcal  (catalog, FALSE, flatcorr);
     119      if (VERBOSE2) dumpMags (stderr, catalog, Ncatalog);
     120
    115121      setMmos  (catalog, FALSE, flatcorr);
    116122      setMgrid (catalog, flatcorr);
  • branches/eam_branches/ohana.20170822/src/relphot/src/setMrelCatalog.c

    r40214 r40231  
    267267    }
    268268
    269     float Mkron, dMkron;
     269    // NOTE: we need to calculate the averge chip Kron on each pass to be able to calibrate the stacks
     270    float Mkron = PhotCatTiny (&measureT[k], MAG_CLASS_KRON);
     271    float dMkron;
    270272    if (isSetMrelFinal) {
    271       Mkron = PhotCat (&measure[k], MAG_CLASS_KRON);
    272273      dMkron = MAX (hypot(measure[k].dMkron, code->photomErrSys), MIN_ERROR);
    273       if (CHECK_VALID_MAG(Mkron, dMkron)) {
    274         int Nkron = results->kronData[Nsec].Nlist;
    275         results->kronData[Nsec].flxlist[Nkron] = Mkron - Mflat - Mcal - Mmos - Mgrid; // this is consistent with PhotRel
    276         results->kronData[Nsec].errlist[Nkron] = dMkron;
    277         results->kronData[Nsec].wgtlist[Nkron] = isUbercal ? UBERCAL_WEIGHT : 1.0;
    278         results->kronData[Nsec].ranking[Nkron] = measureRank[k];
    279         results->kronData[Nsec].measSeq[Nkron] = k;
    280         results->kronData[Nsec].msklist[Nkron] = 0;
    281         results->kronData[Nsec].Nlist ++;
    282       }
     274    } else {
     275      dMkron = MAX (hypot(measureT[k].dM, code->photomErrSys), MIN_ERROR);
     276    }
     277    if (CHECK_VALID_MAG(Mkron, dMkron)) {
     278      int Nkron = results->kronData[Nsec].Nlist;
     279      results->kronData[Nsec].flxlist[Nkron] = Mkron - Mflat - Mcal - Mmos - Mgrid; // this is consistent with PhotRel
     280      results->kronData[Nsec].errlist[Nkron] = dMkron;
     281      results->kronData[Nsec].wgtlist[Nkron] = isUbercal ? UBERCAL_WEIGHT : 1.0;
     282      results->kronData[Nsec].ranking[Nkron] = measureRank ? measureRank[k] : 0;
     283      results->kronData[Nsec].measSeq[Nkron] = k;
     284      results->kronData[Nsec].msklist[Nkron] = 0;
     285      results->kronData[Nsec].Nlist ++;
    283286    }
    284287
     
    385388    // if too few valid measurements meet the minimum criteria, go to the next entry
    386389    StatType *psfstats = &results->psfstats;
    387     int Nranking = MAG_STATS_BY_RANKING (&results->psfData[Nsec], psfstats);
    388     if (Nranking < Nminmeas) {
     390    int NrankingPSF = MAG_STATS_BY_RANKING (&results->psfData[Nsec], psfstats);
     391    if (NrankingPSF < Nminmeas) {
    389392      secfilt[Nsec].flags |= ID_OBJ_FEW;
    390393    } else {
     
    393396      secfilt[Nsec].Mchisq   = (psfstats->Nmeas > 1) ? psfstats->chisq : NAN;
    394397    }
    395     int minRankPSF = (Nranking > 0) ? results->psfData[Nsec].ranking[0] : 10;
    396398
    397399    // when running -averages, we have no information about the images, so we cannot set this
     
    400402    }
    401403
     404    StatType *kronstats = &results->kronstats;
     405    int NrankingKRON = MAG_STATS_BY_RANKING (&results->kronData[Nsec], kronstats);
     406    if (NrankingKRON) {
     407      secfilt[Nsec].MkronChp  = kronstats->mean;
     408      secfilt[Nsec].dMkronChp = kronstats->error;
     409      secfilt[Nsec].sMkronChp = kronstats->sigma;
     410      secfilt[Nsec].NusedKron = NrankingKRON;
     411    }
     412
    402413    if (isSetMrelFinal) {
    403414      if ((average[0].objID == TEST_OBJ_ID) && (average[0].catID == TEST_CAT_ID)) {
     
    405416      }
    406417
    407       // mark the measurements matching this ranking
    408       markMeasureByRanking (&results->psfData[Nsec], measure, minRankPSF, ID_MEAS_PHOTOM_PSF, ID_MEAS_MASKED_PSF);
    409 
    410       if (Nranking) {
     418      if (NrankingPSF) {
    411419        secfilt[Nsec].sMpsfChp = psfstats->sigma;
    412420        secfilt[Nsec].Nused    = psfstats->Nmeas;
     
    420428      MAX_NOT_NAN (psfQfPerfMax, secfilt[Nsec].psfQfPerfMax);
    421429
     430      // mark the measurements matching this ranking
     431      int minRankPSF = (NrankingPSF > 0) ? results->psfData[Nsec].ranking[0] : 10;
     432      markMeasureByRanking (&results->psfData[Nsec], measure, minRankPSF, ID_MEAS_PHOTOM_PSF, ID_MEAS_MASKED_PSF);
     433
     434      int minRankKron = (NrankingKRON > 0) ? results->kronData[Nsec].ranking[0] : 10;
     435      markMeasureByRanking (&results->kronData[Nsec], measure, minRankKron, ID_MEAS_PHOTOM_KRON, ID_MEAS_MASKED_KRON);
     436
    422437      StatType *apstats = &results->apstats;
    423       Nranking = MAG_STATS_BY_RANKING (&results->aperData[Nsec], apstats);
    424       if (Nranking) {
     438      int NrankingAPER = MAG_STATS_BY_RANKING (&results->aperData[Nsec], apstats);
     439      if (NrankingAPER) {
    425440        secfilt[Nsec].MapChp  = apstats->mean;
    426441        secfilt[Nsec].dMapChp = apstats->error;
    427442        secfilt[Nsec].sMapChp = apstats->sigma;
    428         secfilt[Nsec].NusedAp = Nranking;
    429       }
    430       int minRankAper = (Nranking > 0) ? results->aperData[Nsec].ranking[0] : 10;
     443        secfilt[Nsec].NusedAp = NrankingAPER;
     444      }
     445      int minRankAper = (NrankingAPER > 0) ? results->aperData[Nsec].ranking[0] : 10;
    431446      markMeasureByRanking (&results->aperData[Nsec], measure, minRankAper, ID_MEAS_PHOTOM_APER, ID_MEAS_MASKED_APER);
    432 
    433       StatType *kronstats = &results->kronstats;
    434       Nranking = MAG_STATS_BY_RANKING (&results->kronData[Nsec], kronstats);
    435       if (Nranking) {
    436         secfilt[Nsec].MkronChp  = kronstats->mean;
    437         secfilt[Nsec].dMkronChp = kronstats->error;
    438         secfilt[Nsec].sMkronChp = kronstats->sigma;
    439         secfilt[Nsec].NusedKron = Nranking;
    440       }
    441       int minRankKron = (Nranking > 0) ? results->kronData[Nsec].ranking[0] : 10;
    442       markMeasureByRanking (&results->kronData[Nsec], measure, minRankKron, ID_MEAS_PHOTOM_KRON, ID_MEAS_MASKED_KRON);
    443447
    444448      // does this object appear extended in > 50% of measurements?
Note: See TracChangeset for help on using the changeset viewer.