IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 34207


Ignore:
Timestamp:
Jul 25, 2012, 5:11:36 AM (14 years ago)
Author:
eugene
Message:

add stack ID to dvo schema (secfilt); code to calculate distance to skycell center; average flux in AB mags

Location:
branches/eam_branches/ipp-20120627/Ohana/src
Files:
23 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20120627/Ohana/src/libautocode/def/secfilt-ps1-v4.d

    r34194 r34207  
    22EXTNAME      DVO_SECFILT_PS1_V4
    33TYPE         BINTABLE
    4 SIZE         56
     4SIZE         64
    55DESCRIPTION  DVO SecFilt : Secondary Filter Data
    66
     
    2323FIELD  ubercalDist, UBERCAL_DIST,  short,      number of images from an ubercal-image
    2424FIELD  Mstdev,      MAG_STDEV,     short,      standard deviation of measurements,    millimags
     25FIELD  stackID,     STACK_ID,      uint32_t,   image ID of stack used for fluxes (if any)
     26FIELD  dummy,       DUMMY,         uint32_t,   padding
  • branches/eam_branches/ipp-20120627/Ohana/src/libautocode/def/secfilt.d

    r34194 r34207  
    22EXTNAME      DVO_SECFILT
    33TYPE         BINTABLE
    4 SIZE         56
     4SIZE         64
    55DESCRIPTION  DVO SecFilt : Secondary Filter Data
    66
    77# elements of data structure / FITS table
    8 FIELD  M,           MAG,          float,      average mag in this band,              mags
    9 FIELD  Map,         MAG,          float,      average mag in this band,              mags
    10 FIELD  Mkron,       MAG_KRON,     float,      ave kron mag in this band,             mags
    11 FIELD  dMkron,      MAG_KRON_ERR, float,      formal error on average kron mag,      mags
    12 FIELD  dM,          MAG_ERR,      float,      formal error on average mag,           mags
    13 FIELD  Xm,          MAG_CHI,      float,      chisq on average mag,                  [100*log(value)]
     8FIELD  M,           MAG,           float,      average mag in this band,              mags
     9FIELD  Map,         MAG,           float,      average mag in this band,              mags
     10FIELD  Mkron,       MAG_KRON,      float,      ave kron mag in this band,             mags
     11FIELD  dMkron,      MAG_KRON_ERR,  float,      formal error on average kron mag,      mags
     12FIELD  dM,          MAG_ERR,       float,      formal error on average mag,           mags
     13FIELD  Xm,          MAG_CHI,       float,      chisq on average mag,                  [100*log(value)]
    1414FIELD  FluxPSF,     FLUX_PSF,      float,      mean flux psf fit (PS1: stack)
    1515FIELD  dFluxPSF,    FLUX_PSF_ERR,  float,      mean flux psf error
    1616FIELD  FluxKron,    FLUX_KRON,     float,      mean flux kron ap (PS1: stack)
    1717FIELD  dFluxKron,   FLUX_KRON_ERR, float,      mean flux kron err
    18 FIELD  flags,       FLAGS,        uint32_t,   photometry flags
    19 FIELD  Ncode,       NCODE,        short,      number of detections in band
    20 FIELD  Nused,       NUSED,        short,      number of detections used in average
    21 FIELD  M_20,        MAG_20,       short,      lower 20percent mag,                   millimags
    22 FIELD  M_80,        MAG_80,       short,      upper 20percent mag,                   millimags
    23 FIELD  ubercalDist, UBERCAL_DIST, short,      number of images from an ubercal-image
    24 FIELD  Mstdev,      MAG_STDEV,    short,      standard deviation of measurements,    millimags
     18FIELD  flags,       FLAGS,         uint32_t,   photometry flags
     19FIELD  Ncode,       NCODE,         short,      number of detections in band
     20FIELD  Nused,       NUSED,         short,      number of detections used in average
     21FIELD  M_20,        MAG_20,        short,      lower 20percent mag,                   millimags
     22FIELD  M_80,        MAG_80,        short,      upper 20percent mag,                   millimags
     23FIELD  ubercalDist, UBERCAL_DIST,  short,      number of images from an ubercal-image
     24FIELD  Mstdev,      MAG_STDEV,     short,      standard deviation of measurements,    millimags
     25FIELD  stackID,     STACK_ID,      uint32_t,   image ID of stack used for fluxes (if any)
     26FIELD  dummy,       DUMMY,         uint32_t,   padding
    2527
    2628# *** 20090206 : new fields : M_20, M_80; dropped dummy
    2729# *** 20120302 : new fields : ubercalDist, Map, Mstdev
    28 # *** 20120710 : new fields : Mkron, dMkron, FluxPSF, dFluxPSF, FluxKron, dFluxKron
     30# *** 20120710 : new fields : Mkron, dMkron, FluxPSF, dFluxPSF, FluxKron, dFluxKron, stackID
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/include/dvo.h

    r34194 r34207  
    472472float PhotM80 (PhotCode *code, Average *average, SecFilt *secfilt);
    473473float PhotUCdist (PhotCode *code, Average *average, SecFilt *secfilt);
     474unsigned int PhotStackID (PhotCode *code, Average *average, SecFilt *secfilt);
    474475
    475476float PhotColorForCode (Average *average, SecFilt *secfilt, Measure *measure, PhotCode *code);
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/include/dvodb.h

    r34194 r34207  
    4545      MAG_80,
    4646      MAG_UC_DIST,
     47      MAG_STACK_ID,
    4748      MAG_FLUX_PSF,
    4849      MAG_FLUX_PSF_ERR,
     
    140141      MEAS_MCAL_OFFSET,
    141142      MEAS_FLAT,
     143      MEAS_CENTER_OFFSET,
    142144      MEAS_FLUX_PSF,
    143145      MEAS_FLUX_PSF_ERR,
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/dbExtractAverages.c

    r34194 r34207  
    246246          value.Flt = PhotUCdist (field->photcode, average, secfilt);
    247247          break;
     248        case MAG_STACK_ID:
     249          value.Int = PhotStackID (field->photcode, average, secfilt);
     250          break;
    248251
    249252        case MAG_FLUX_PSF:
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/dbExtractMeasures.c

    r34194 r34207  
    522522      break;
    523523
     524    case MEAS_CENTER_OFFSET: /* OK */
     525      {
     526        Image *image;
     527        image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
     528        if (image == NULL) break;
     529       
     530        // we have measure[0].Xccd,Yccd and image[0].NX,NY.  Find the distance to the center
     531
     532        // XXX we may hypotetically have images with -NX to +NX here (eg, projection center), but
     533        // we do not get a detection from that type of image
     534        float Xcenter = 0.5*image[0].NX;
     535        float Ycenter = 0.5*image[0].NY;
     536        float distance = hypot (measure[0].Xccd - Xcenter, measure[0].Yccd - Ycenter);
     537        value.Flt = distance;
     538      }
     539      break;
     540
    524541    case MEAS_FLUX_PSF: /* OK */
    525542      value.Flt = measure[0].FluxPSF;
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/dbFields.c

    r34194 r34207  
    5656  if (!strcasecmp (string, "80"))          return (MAG_80);
    5757  if (!strcasecmp (string, "ucdist"))      return (MAG_UC_DIST);
     58  if (!strcasecmp (string, "stackID"))     return (MAG_STACK_ID);
    5859  if (!strcasecmp (string, "fluxpsf"))     return (MAG_FLUX_PSF);
    5960  if (!strcasecmp (string, "fluxpsferr"))  return (MAG_FLUX_PSF_ERR);
     
    239240  if (!strcasecmp (fieldName, "MCAL_OFFSET"))    ESCAPE (MEAS_MCAL_OFFSET,    MAG_NONE, OPIHI_FLT);
    240241  if (!strcasecmp (fieldName, "FLAT"))           ESCAPE (MEAS_FLAT,           MAG_NONE, OPIHI_FLT);
     242  if (!strcasecmp (fieldName, "CENTER_OFFSET"))  ESCAPE (MEAS_CENTER_OFFSET,  MAG_NONE, OPIHI_FLT);
    241243  if (!strcasecmp (fieldName, "FLUX"))           ESCAPE (MEAS_FLUX_PSF,       MAG_NONE, OPIHI_FLT);
    242244  if (!strcasecmp (fieldName, "FLUX_ERR"))       ESCAPE (MEAS_FLUX_PSF_ERR,   MAG_NONE, OPIHI_FLT);
     
    258260  field->magMode = mode;
    259261  switch (mode) {
     262    case MAG_STACK_ID:
    260263    case MAG_NCODE:
    261264    case MAG_NPHOT:
     
    352355  field->magMode = mode;
    353356  switch (mode) {
     357    case MAG_STACK_ID:
    354358    case MAG_NCODE:
    355359    case MAG_NPHOT:
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c

    r34194 r34207  
    231231    out[i].FluxKron    = NAN;
    232232    out[i].dFluxKron   = NAN;
     233    out[i].stackID     = 0;
    233234 }
    234235  return (out);
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c

    r34194 r34207  
    225225    out[i].FluxKron    = NAN;
    226226    out[i].dFluxKron   = NAN;
     227    out[i].stackID     = 0;
    227228 }
    228229  return (out);
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c

    r34194 r34207  
    185185    out[i].FluxKron    = NAN;
    186186    out[i].dFluxKron   = NAN;
     187    out[i].stackID     = 0;
    187188 }
    188189  return (out);
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c

    r34194 r34207  
    229229    out[i].FluxKron    = NAN;
    230230    out[i].dFluxKron   = NAN;
     231    out[i].stackID     = 0;
    231232 }
    232233  return (out);
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c

    r34194 r34207  
    228228    out[i].Mkron       = NAN;
    229229    out[i].dMkron      = NAN;
    230     out[i].FluxPSF    = NAN;
    231     out[i].dFluxPSF   = NAN;
    232     out[i].FluxKron   = NAN;
    233     out[i].dFluxKron  = NAN;
     230    out[i].FluxPSF     = NAN;
     231    out[i].dFluxPSF    = NAN;
     232    out[i].FluxKron    = NAN;
     233    out[i].dFluxKron   = NAN;
     234    out[i].stackID     = 0;
    234235 }
    235236  return (out);
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c

    r34194 r34207  
    226226    out[i].Mkron       = NAN;
    227227    out[i].dMkron      = NAN;
    228     out[i].FluxPSF    = NAN;
    229     out[i].dFluxPSF   = NAN;
    230     out[i].FluxKron   = NAN;
    231     out[i].dFluxKron  = NAN;
     228    out[i].FluxPSF     = NAN;
     229    out[i].dFluxPSF    = NAN;
     230    out[i].FluxKron    = NAN;
     231    out[i].dFluxKron   = NAN;
     232    out[i].stackID     = 0;
    232233 }
    233234  return (out);
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c

    r34194 r34207  
    232232    out[i].Mstdev      = in[i].Mstdev;     
    233233    out[i].ubercalDist = in[i].ubercalDist;     
     234    out[i].stackID     = in[i].stackID;     
    234235 }
    235236  return (out);
     
    261262    out[i].Mstdev      = in[i].Mstdev;     
    262263    out[i].ubercalDist = in[i].ubercalDist;     
     264    out[i].stackID     = in[i].stackID;     
    263265  }
    264266  return (out);
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/dvo_convert_elixir.c

    r34194 r34207  
    240240    out[i].FluxKron   = NAN;
    241241    out[i].dFluxKron  = NAN;
     242    out[i].stackID     = 0;
    242243  }
    243244  return (out);
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/dvo_convert_loneos.c

    r34194 r34207  
    233233    out[i].FluxKron   = NAN;
    234234    out[i].dFluxKron  = NAN;
     235    out[i].stackID     = 0;
    235236  }
    236237  return (out);
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c

    r34194 r34207  
    240240    out[i].FluxKron    = NAN;
    241241    out[i].dFluxKron   = NAN;
     242    out[i].stackID     = 0;
    242243 }
    243244  return (out);
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c

    r34194 r34207  
    240240    out[i].FluxKron    = NAN;
    241241    out[i].dFluxKron   = NAN;
     242    out[i].stackID     = 0;
    242243 }
    243244  return (out);
  • branches/eam_branches/ipp-20120627/Ohana/src/libdvo/src/dvo_photcode_ops.c

    r34194 r34207  
    656656}
    657657
     658unsigned int PhotStackID (PhotCode *code, Average *average, SecFilt *secfilt) {
     659
     660  int Ns;
     661  unsigned int ID;
     662
     663  if (code == NULL) return 0;
     664
     665  Ns = photcodes[0].hashNsec[code[0].code];
     666  ID = (Ns == -1) ? 0 : secfilt[Ns].stackID;
     667  return (ID);
     668}
     669
    658670// XXX return NAN or NAN_S_SHORT? (secfilt->Xm is short)
    659671float PhotXm (PhotCode *code, Average *average, SecFilt *secfilt) {
  • branches/eam_branches/ipp-20120627/Ohana/src/opihi/dvo/mextract.c

    r33963 r34207  
    129129      if (fields[i].ID == MEAS_YCCD) loadImages = TRUE;
    130130    }
    131     if (fields[i].ID == MEAS_XMOSAIC)   loadImages = mosaicMode = TRUE;
    132     if (fields[i].ID == MEAS_YMOSAIC)   loadImages = mosaicMode = TRUE;
    133     if (fields[i].ID == MEAS_EXTERN_ID) loadImages = mosaicMode = TRUE;
    134     if (fields[i].ID == MEAS_FLAT)      loadImages = mosaicMode = TRUE;
     131    if (fields[i].ID == MEAS_XMOSAIC)       loadImages = mosaicMode = TRUE;
     132    if (fields[i].ID == MEAS_YMOSAIC)       loadImages = mosaicMode = TRUE;
     133    if (fields[i].ID == MEAS_EXTERN_ID)     loadImages = mosaicMode = TRUE;
     134    if (fields[i].ID == MEAS_FLAT)          loadImages = mosaicMode = TRUE;
     135    if (fields[i].ID == MEAS_CENTER_OFFSET) loadImages = mosaicMode = TRUE;
    135136  }
    136137  if (loadImages && !SetImageSelection (mosaicMode, selection)) goto escape;
  • branches/eam_branches/ipp-20120627/Ohana/src/relphot/include/relphot.h

    r33963 r34207  
    242242float         getMrel             PROTO((Catalog *catalog, off_t meas, int cat));
    243243short         getUbercalDist      PROTO((off_t meas, int cat));
     244float         getCenterOffset     PROTO((off_t meas, int cat, Measure *measure, unsigned int *myID));
    244245Image        *getimage            PROTO((off_t N));
    245246Image        *getimages           PROTO((off_t *N, off_t **LineNumber));
  • branches/eam_branches/ipp-20120627/Ohana/src/relphot/src/ImageOps.c

    r33963 r34207  
    364364  if (image[i].flags & IMAGE_BAD) return (1000); 
    365365  distance = image[i].ubercalDist; // was dummy3 in structure
     366  return (distance);
     367}
     368
     369// returns image.Mcal - ff(x,y)
     370float getCenterOffset (off_t meas, int cat, Measure *measure, unsigned int *myID) {
     371
     372  off_t i;
     373  float distance;
     374
     375  if (!MeasureToImage) return -1;
     376
     377  i = MeasureToImage[cat][meas];
     378  if (i == -1) return (1000);
     379
     380  float Xcenter = 0.5*image[i].NX;
     381  float Ycenter = 0.5*image[i].NY;
     382
     383  *myID = image[i].imageID;
     384
     385  distance = hypot (measure[0].Xccd - Xcenter, measure[0].Yccd - Ycenter);
    366386  return (distance);
    367387}
  • branches/eam_branches/ipp-20120627/Ohana/src/relphot/src/StarOps.c

    r34194 r34207  
    365365      float stackFluxKron = NAN;
    366366      float stackdFluxKron = NAN;
     367      float stackCenterOffsetMin = 1e9;
     368      unsigned int stackImageIDmin;
    367369
    368370      int forceSynth = FALSE;
     
    430432          // gpc1 stack data
    431433          if ((catalog[Nc].measure[m].photcode >= 11000) && (catalog[Nc].measure[m].photcode <= 11400)) {
    432             if (pass < 2) continue;
     434            // if (pass < 2) continue;
    433435            haveStack = TRUE;
    434             float zp = Mcal + Mmos + Mgrid + PhotZeroPoint (&catalog[Nc].measure[m], &catalog[Nc].average[j], &catalog[Nc].secfilt[j*Nsecfilt]);
    435             float zpFactor = pow(10.0, -0.4*zp);
    436             // need to put in AB mag factor to get to Janskies (or uJy?)
    437             stackFluxPSF   = zpFactor * catalog[Nc].measure[m].FluxPSF;
    438             stackdFluxPSF  = zpFactor * catalog[Nc].measure[m].dFluxPSF;
    439             stackFluxKron  = zpFactor * catalog[Nc].measure[m].FluxKron;
    440             stackdFluxKron = zpFactor * catalog[Nc].measure[m].dFluxKron;
     436
     437            unsigned int stackImageID;
     438            float stackCenterOffset = getCenterOffset (m, Nc, &catalog[Nc].measure[m], &stackImageID);
     439            if (stackCenterOffset < stackCenterOffsetMin) {
     440              stackImageIDmin = stackImageID;
     441
     442              float zp = Mcal + Mmos + Mgrid + PhotZeroPoint (&catalog[Nc].measure[m], &catalog[Nc].average[j], &catalog[Nc].secfilt[j*Nsecfilt]);
     443
     444              // flux_cgs : erg sec^1 cm^-2 Hz^-1
     445              // mag_inst : -2.5 log (cts/sec)
     446              // mag_inst : -2.5 log (flux_inst)
     447              // flux_inst = ten(-0.4*mag_inst)
     448
     449              // mag_AB = -2.5 log (flux_cgs) - 48.6 (~by definition) [~Vega flux in V-band]
     450              // flux_cgs = ten(-0.4*(mag_AB + 48.6))
     451
     452              // flux_AB : ten(-0.4*mag_AB)
     453
     454              // flux_cgs = ten(-0.4*48.6) * flux_AB
     455              // flux_AB  = ten(+0.4*48.6) * flux_cgs
     456           
     457              // flux_Jy : flux_cgs * 10^23
     458
     459              // flux_AB = ten(+0.4*48.6) * ten(-23) * flux_Jy
     460
     461              // mag_AB = mag_inst + ZP
     462
     463              // flux_inst = ten(-0.4*(mag_AB - ZP)) = ten(0.4*ZP) * flux_AB
     464
     465              // flux_AB = flux_inst * ten(-0.4*ZP)
     466
     467              // flux_inst * ten(-0.4*ZP) = ten(+0.4*48.6 - 23) * flux_Jy
     468
     469              // flux_inst = flux_Jy * ten(0.4*ZP + 0.4*48.6 - 23)
     470              // flux_inst = flux_Jy * ten(0.4*ZP - 3.56)
     471              // flux_Jy = flux_inst * ten(-0.4*ZP + 3.56)
     472
     473              // zpFactor to go from instrumental flux to Janskies
     474              float zpFactor = pow(10.0, -0.4*zp + 3.56);
     475
     476              // need to put in AB mag factor to get to Janskies (or uJy?)
     477              stackFluxPSF   = zpFactor * catalog[Nc].measure[m].FluxPSF;
     478              stackdFluxPSF  = zpFactor * catalog[Nc].measure[m].dFluxPSF;
     479              stackFluxKron  = zpFactor * catalog[Nc].measure[m].FluxKron;
     480              stackdFluxKron = zpFactor * catalog[Nc].measure[m].dFluxKron;
     481            }
    441482          }
    442483
     
    582623          catalog[Nc].secfilt[Nsecfilt*j+Nsec].FluxKron = stackFluxKron;
    583624          catalog[Nc].secfilt[Nsecfilt*j+Nsec].dFluxKron = stackdFluxKron;
     625          catalog[Nc].secfilt[Nsecfilt*j+Nsec].stackID = stackImageIDmin;
    584626        }
    585627
Note: See TracChangeset for help on using the changeset viewer.