IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 18, 2015, 6:27:41 AM (11 years ago)
Author:
eugene
Message:

merge changes from trunk (updates for pstamp, remote tools, ippToPsps schema 20)

Location:
branches/eam_branches/ipp-20150405
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20150405

  • branches/eam_branches/ipp-20150405/psModules/src/objects

  • branches/eam_branches/ipp-20150405/psModules/src/objects/pmSourceIO_CMF.c.in

    r38062 r38152  
    552552    psMetadataAddStr (outhead, PS_LIST_TAIL, "EXTNAME", PS_META_REPLACE, "xsrc table extension", extname);
    553553
     554    // we can either write out the petrosian mag errors correctly or inverted (by default, psphot writes them out inverted)
     555    bool repairMagErrors = psMetadataLookupBool (&status, recipe, "REPAIR.PETROSIAN.MAG.ERRORS");
     556    if (repairMagErrors) {
     557      psMetadataAddBool (outhead, PS_LIST_TAIL, "REPAIR.PETROSIAN.MAG.ERRORS", PS_META_REPLACE, "", true);
     558    }
     559
    554560    pmChip *chip = readout->parent->parent;
    555561    pmFPA  *fpa  = chip->parent;
     
    651657                // XXX note that this mag is either calibrated or instrumental depending on existence of zero point
    652658                float mag = (extpars->petrosianFlux > 0.0) ? -2.5*log10(extpars->petrosianFlux) + magOffset : NAN; // XXX zero point
    653                 // XXX NOTE EAM 20140806 : PETRO_MAG_ERR is inverted!! oops!!
     659                // NOTE EAM 20140806 : PETRO_MAG_ERR was inverted!! this allows for it to be repaired
    654660                float magErr = (extpars->petrosianFlux > 0.0) ? extpars->petrosianFlux / extpars->petrosianFluxErr : NAN; // XXX zero point
     661                if (repairMagErrors) {
     662                  // I need to add the kron error in quadrature becasue pet_error ignores the object flux
     663                  float Krf  = source->moments ? source->moments->KronFlux : NAN;
     664                  float dKrf = source->moments ? source->moments->KronFluxErr : NAN;
     665                  if (isfinite (Krf) && isfinite (dKrf)) {
     666                    magErr = sqrt(PS_SQR(1.0 / magErr) + PS_SQR(dKrf / Krf));
     667                  } else {
     668                    magErr = 1.0 / magErr;
     669                  }
     670                }
    655671                psMetadataAdd (row, PS_LIST_TAIL, "PETRO_MAG",        PS_DATA_F32, "Petrosian Magnitude", mag);
    656672                psMetadataAdd (row, PS_LIST_TAIL, "PETRO_MAG_ERR",    PS_DATA_F32, "Petrosian Magnitude Error", magErr);
     
    836852    }
    837853
     854    bool repairMagErrors = psMetadataLookupBool (&status, tableHeader, "REPAIR.PETROSIAN.MAG.ERRORS");
     855
    838856    for (long i = 0; i < numSources; i++) {
    839857        psMetadata *row = psFitsReadTableRow(fits, i); // Table row
     
    867885        extpars->axes.theta = psMetadataLookupF32(&status, row, "F25_THETA");
    868886
     887        // magErr may have been saved in inverted form
    869888        float mag = psMetadataLookupF32(&status, row, "PETRO_MAG");
    870889        float magErr = psMetadataLookupF32(&status, row, "PETRO_MAG_ERR");
    871890        if (isfinite(mag)) {
    872             extpars->petrosianFlux    = pow(10., (magOffset - mag) / 2.5);
    873             if (isfinite(magErr)) {
    874                 extpars->petrosianFluxErr = extpars->petrosianFlux / magErr;
    875             }
    876         }
     891          extpars->petrosianFlux    = pow(10., (magOffset - mag) / 2.5);
     892          if (isfinite(magErr)) {
     893            if (repairMagErrors) {
     894              // I need to add the kron error in quadrature becasue pet_error ignores the object flux
     895              float Krf  = source->moments ? source->moments->KronFlux : NAN;
     896              float dKrf = source->moments ? source->moments->KronFluxErr : NAN;
     897              if (isfinite (Krf) && isfinite (dKrf)) {
     898                magErr = 1.0 / sqrt(PS_SQR(magErr) - PS_SQR(dKrf / Krf));
     899              } else {
     900                magErr = 1.0 / magErr;
     901              }
     902              extpars->petrosianFluxErr = extpars->petrosianFlux * magErr;
     903            } else {
     904              extpars->petrosianFluxErr = extpars->petrosianFlux / magErr;
     905            }
     906          }
     907        }
    877908
    878909        extpars->petrosianRadius   = psMetadataLookupF32(&status, row, "PETRO_RADIUS");
Note: See TracChangeset for help on using the changeset viewer.