IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 24, 2014, 5:10:56 PM (12 years ago)
Author:
eugene
Message:

merge relphot changes from eam_branches/ipp-20140717

Location:
trunk/Ohana
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana

  • trunk/Ohana/src/libdvo/include/dvo.h

    r37035 r37116  
    128128  ID_MEAS_BLEND_MEAS     = 0x00000100,  // detection is within radius of multiple objects
    129129  ID_MEAS_BLEND_OBJ      = 0x00000200,  // multiple detections within radius of object
    130   ID_MEAS_UNDEF_3        = 0x00000400,  // unused
     130  ID_MEAS_WARP_USED      = 0x00000400,  // measurement used to find mean warp photometry
    131131  ID_MEAS_UNDEF_4        = 0x00000800,  // unused
    132132  ID_MEAS_BLEND_MEAS_X   = 0x00001000,  // detection is within radius of multiple objects across catalogs                   
     
    383383  char  ***name; // projection cell name
    384384 
    385   int NX_SUB;
    386   int NY_SUB;
     385  float NX_SUB;
     386  float NY_SUB;
    387387  double dPix;
    388388
    389389  double **Xo;
    390390  double **Yo;
    391   int **dX;
    392   int **dY;
     391  float **dX;
     392  float **dY;
    393393} BoundaryTree;
    394394
     
    411411  double Do;
    412412  double dPix;
    413   int dX;
    414   int dY;
    415 
    416   int NX_SUB;
    417   int NY_SUB;
     413  float dX;
     414  float dY;
     415
     416  float NX_SUB;
     417  float NY_SUB;
    418418
    419419  char *basename;
     
    710710float PhotFluxInstErr (Measure *measure, dvoMagClassType class);
    711711float PhotFluxCatErr (Measure *measure, dvoMagClassType class);
     712float PhotFluxAveErr (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source);
    712713
    713714float PhotXm (PhotCode *code, Average *average, SecFilt *secfilt);
    714715float PhotZeroPoint (Measure *measure, Average *average, SecFilt *secfilt);
    715716
    716 float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt);
     717int   PhotNphot (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source);
     718float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source);
    717719float PhotMmin (PhotCode *code, Average *average, SecFilt *secfilt);
    718720float PhotMmax (PhotCode *code, Average *average, SecFilt *secfilt);
  • trunk/Ohana/src/libdvo/include/dvodb.h

    r37035 r37116  
    5454  MAG_OPTION_NPHOT, // Nused
    5555  MAG_OPTION_UC_DIST,
    56   MAG_OPTION_STACK_DET_ID,
    5756  MAG_OPTION_FLAGS,
    5857} dvoMagOptionType;
     58
     59//  MAG_OPTION_STACK_PRIMARY_OFF,
     60//  MAG_OPTION_STACK_BEST_OFF,
    5961
    6062typedef enum {
  • trunk/Ohana/src/libdvo/src/BoundaryTree.c

    r36490 r37116  
    8484  gfits_scan (headerPHU, "DEC_ORI",  "%lf", 1, &tree->DEC_origin);
    8585  gfits_scan (headerPHU, "DEC_OFF",  "%lf", 1, &tree->DEC_offset);
    86   gfits_scan (headerPHU, "NX_SUB",   "%d",  1, &tree->NX_SUB);
    87   gfits_scan (headerPHU, "NY_SUB",   "%d",  1, &tree->NY_SUB);
     86  gfits_scan (headerPHU, "NX_SUB",   "%f",  1, &tree->NX_SUB);
     87  gfits_scan (headerPHU, "NY_SUB",   "%f",  1, &tree->NY_SUB);
    8888  gfits_scan (headerPHU, "PIXSCALE", "%lf", 1, &tree->dPix);
    8989
     
    111111  ALLOCATE (tree->Xo,   double *, tree->Nzone);
    112112  ALLOCATE (tree->Yo,   double *, tree->Nzone);
    113   ALLOCATE (tree->dX,      int *, tree->Nzone);
    114   ALLOCATE (tree->dY,      int *, tree->Nzone);
     113  ALLOCATE (tree->dX,    float *, tree->Nzone);
     114  ALLOCATE (tree->dY,    float *, tree->Nzone);
    115115  ALLOCATE (tree->cell,    int *, tree->Nzone);
    116116  ALLOCATE (tree->projID,  int *, tree->Nzone);
     
    121121    ALLOCATE (tree->Xo[i],   double, tree->Nband[i]);
    122122    ALLOCATE (tree->Yo[i],   double, tree->Nband[i]);
    123     ALLOCATE (tree->dX[i],      int, tree->Nband[i]);
    124     ALLOCATE (tree->dY[i],      int, tree->Nband[i]);
     123    ALLOCATE (tree->dX[i],    float, tree->Nband[i]);
     124    ALLOCATE (tree->dY[i],    float, tree->Nband[i]);
    125125    ALLOCATE (tree->cell[i],    int, tree->Nband[i]);
    126126    ALLOCATE (tree->projID[i],  int, tree->Nband[i]);
     
    147147  GET_COLUMN_NEW(&headerCell, &ftableCell, Xo,    "X_CENT",      double);
    148148  GET_COLUMN_NEW(&headerCell, &ftableCell, Yo,    "Y_CENT",      double);
    149   GET_COLUMN_NEW(&headerCell, &ftableCell, dX,    "X_GRID",      int);
    150   GET_COLUMN_NEW(&headerCell, &ftableCell, dY,    "Y_GRID",      int);
     149  GET_COLUMN_NEW(&headerCell, &ftableCell, dX,    "X_GRID",      float);
     150  GET_COLUMN_NEW(&headerCell, &ftableCell, dY,    "Y_GRID",      float);
    151151  GET_COLUMN_NEW(&headerCell, &ftableCell, name,  "NAME",        char); // XXX how is this done?
    152152  gfits_free_header (&headerCell);
     
    214214  gfits_modify (&header, "DEC_OFF", "%lf", 1, tree->DEC_offset);
    215215
    216   gfits_modify (&header, "NX_SUB", "%d", 1, tree->NX_SUB);
    217   gfits_modify (&header, "NY_SUB", "%d", 1, tree->NY_SUB);
     216  gfits_modify (&header, "NX_SUB", "%f", 1, tree->NX_SUB);
     217  gfits_modify (&header, "NY_SUB", "%f", 1, tree->NY_SUB);
    218218  gfits_modify (&header, "PIXSCALE", "%lf", 1, tree->dPix);
    219219
     
    289289    gfits_define_bintable_column (&theader, "D", "X_CENT", "projection cell center pixel", "none", 1.0, 0.0);
    290290    gfits_define_bintable_column (&theader, "D", "Y_CENT", "projection cell center pixel", "none", 1.0, 0.0);
    291     gfits_define_bintable_column (&theader, "J", "X_GRID", "skycell grid spacing", "none", 1.0, 0.0);
    292     gfits_define_bintable_column (&theader, "J", "Y_GRID", "skycell grid spacing", "none", 1.0, 0.0);
     291    gfits_define_bintable_column (&theader, "E", "X_GRID", "skycell grid spacing", "none", 1.0, 0.0);
     292    gfits_define_bintable_column (&theader, "E", "Y_GRID", "skycell grid spacing", "none", 1.0, 0.0);
    293293    gfits_define_bintable_column (&theader, fmt, "NAME", "cell name", "none", 1.0, 0.0);
    294294
     
    310310    double *Xo            ; ALLOCATE (Xo,    double, Ncell);
    311311    double *Yo            ; ALLOCATE (Yo,    double, Ncell);
    312     int    *dX            ; ALLOCATE (dX,    int,    Ncell);
    313     int    *dY            ; ALLOCATE (dY,    int,    Ncell);
     312    float  *dX            ; ALLOCATE (dX,    float,  Ncell);
     313    float  *dY            ; ALLOCATE (dY,    float,  Ncell);
    314314    char   *name          ; ALLOCATE (name,  char,   Ncell*BOUNDARY_TREE_NAME_LENGTH);
    315315
  • trunk/Ohana/src/libdvo/src/TessellationTable.c

    r36490 r37116  
    2828    tess[i].dPix = NAN;
    2929
    30     tess[i].dX = 0;
    31     tess[i].dY = 0;
    32 
    33     tess[i].NX_SUB = 0;
    34     tess[i].NY_SUB = 0;
     30    tess[i].dX = NAN;
     31    tess[i].dY = NAN;
     32
     33    tess[i].NX_SUB = NAN;
     34    tess[i].NY_SUB = NAN;
    3535
    3636    tess[i].basename = NULL;
     
    123123  GET_COLUMN_NEW(Xo,     "X_CENT", double);
    124124  GET_COLUMN_NEW(Yo,     "Y_CENT", double);
    125   GET_COLUMN_NEW(dX,     "X_GRID", int);
    126   GET_COLUMN_NEW(dY,     "Y_GRID", int);
     125  GET_COLUMN_NEW(dX,     "X_GRID", float);
     126  GET_COLUMN_NEW(dY,     "Y_GRID", float);
    127127  GET_COLUMN_NEW(Rmin,   "R_MIN",  double);
    128128  GET_COLUMN_NEW(Rmax,   "R_MAX",  double);
     
    130130  GET_COLUMN_NEW(Dmax,   "D_MAX",  double);
    131131  GET_COLUMN_NEW(dPix,   "SCALE",  double);
    132   GET_COLUMN_NEW(NX_SUB, "NX_SUB", int);
    133   GET_COLUMN_NEW(NY_SUB, "NY_SUB", int);
     132  GET_COLUMN_NEW(NX_SUB, "NX_SUB", float);
     133  GET_COLUMN_NEW(NY_SUB, "NY_SUB", float);
    134134  GET_COLUMN_NEW(TYPE,   "TYPE",   int);
    135135
     
    280280    gfits_modify (&header, "DEC_OFF", "%lf", 1, rings->DEC_offset);
    281281
    282     gfits_modify (&header, "NX_SUB", "%d", 1, rings->NX_SUB);
    283     gfits_modify (&header, "NY_SUB", "%d", 1, rings->NY_SUB);
     282    gfits_modify (&header, "NX_SUB", "%f", 1, rings->NX_SUB);
     283    gfits_modify (&header, "NY_SUB", "%f", 1, rings->NY_SUB);
    284284    gfits_modify (&header, "PIXSCALE", "%lf", 1, rings->dPix);
    285285  }
     
    300300  gfits_define_bintable_column (&theader, "D", "X_CENT", "projection cell center pixel", "none", 1.0, 0.0);
    301301  gfits_define_bintable_column (&theader, "D", "Y_CENT", "projection cell center pixel", "none", 1.0, 0.0);
    302   gfits_define_bintable_column (&theader, "J", "X_GRID", "skycell grid spacing", "none", 1.0, 0.0);
    303   gfits_define_bintable_column (&theader, "J", "Y_GRID", "skycell grid spacing", "none", 1.0, 0.0);
     302  gfits_define_bintable_column (&theader, "E", "X_GRID", "skycell grid spacing", "none", 1.0, 0.0);
     303  gfits_define_bintable_column (&theader, "E", "Y_GRID", "skycell grid spacing", "none", 1.0, 0.0);
    304304  gfits_define_bintable_column (&theader, "D", "R_MIN",  "RA limit (lower)", "none", 1.0, 0.0);
    305305  gfits_define_bintable_column (&theader, "D", "R_MAX",  "RA limit (upper)", "none", 1.0, 0.0);
     
    307307  gfits_define_bintable_column (&theader, "D", "D_MAX",  "DEC limit (upper)", "none", 1.0, 0.0);
    308308  gfits_define_bintable_column (&theader, "D", "SCALE",  "pixel scale for projection cell", "none", 1.0, 0.0);
    309   gfits_define_bintable_column (&theader, "J", "NX_SUB", "skycell subdivision in x", "none", 1.0, 0.0);
    310   gfits_define_bintable_column (&theader, "J", "NY_SUB", "skycell subdivision in y", "none", 1.0, 0.0);
     309  gfits_define_bintable_column (&theader, "E", "NX_SUB", "skycell subdivision in x", "none", 1.0, 0.0);
     310  gfits_define_bintable_column (&theader, "E", "NY_SUB", "skycell subdivision in y", "none", 1.0, 0.0);
    311311  gfits_define_bintable_column (&theader, "J", "TYPE",   "type of tessellation", "none", 1.0, 0.0);
    312312
     
    330330  double *Xo            ; ALLOCATE (Xo    ,    double, Nout);
    331331  double *Yo            ; ALLOCATE (Yo    ,    double, Nout);
    332   int    *dX            ; ALLOCATE (dX    ,    int,    Nout);
    333   int    *dY            ; ALLOCATE (dY    ,    int,    Nout);
     332  float  *dX            ; ALLOCATE (dX    ,    float,  Nout);
     333  float  *dY            ; ALLOCATE (dY    ,    float,  Nout);
    334334  double *Rmin          ; ALLOCATE (Rmin  ,    double, Nout);
    335335  double *Rmax          ; ALLOCATE (Rmax  ,    double, Nout);
     
    337337  double *Dmax          ; ALLOCATE (Dmax  ,    double, Nout);
    338338  double *dPix          ; ALLOCATE (dPix  ,    double, Nout);
    339   int    *NX_SUB        ; ALLOCATE (NX_SUB,    int,    Nout);
    340   int    *NY_SUB        ; ALLOCATE (NY_SUB,    int,    Nout);
     339  float  *NX_SUB        ; ALLOCATE (NX_SUB,    float,  Nout);
     340  float  *NY_SUB        ; ALLOCATE (NY_SUB,    float,  Nout);
    341341  int    *TYPE          ; ALLOCATE (TYPE,      int,    Nout);
    342342
     
    559559    int xi = x / tess[myTess].tree->dX[zone][band];
    560560    int yi = y / tess[myTess].tree->dY[zone][band];
     561
     562    xi = MAX(MIN(xi, tess[myTess].tree->NX_SUB - 1.0), 0);
     563    yi = MAX(MIN(yi, tess[myTess].tree->NY_SUB - 1.0), 0);
     564
    561565    int N = xi + tess[myTess].tree->NX_SUB * yi;
    562566 
  • trunk/Ohana/src/libdvo/src/dbExtractAverages.c

    r37035 r37116  
    200200      }
    201201
     202      /* in some cases below we need a measurement which matches the requested photcode.
     203         here is some sample code to find this.
     204
     205          for (i = 0; i < average[0].Nmeasure; i++) {
     206            if (field->photcode->code != measure[i].photcode) continue;
     207            value.Flt = measure[i].M;
     208            break;
     209          }
     210      */
     211
    202212      switch (field->magOption) {
    203213        case MAG_OPTION_MAG:
     
    207217              break;
    208218            case MAG_LEVEL_REF:
    209               // why is measure needed here?
     219              // which measure is needed here?
    210220              // PhotRef  (field->photcode, average, secfilt, measure, field->magClass, field->magSource);
    211221              break;
     
    242252              break;
    243253            case MAG_LEVEL_REF:
    244               // value.Flt = PhotFluxRef  (equiv, average, secfilt, measure, field->magClass, field->magSource);
     254              // XXX which measure is needed here?
     255              // value.Flt = PhotFluxRef  (field->photcode, average, secfilt, measure, field->magClass, field->magSource);
    245256              break;
    246257            case MAG_LEVEL_INST:
     
    258269            case MAG_LEVEL_AVE:
    259270            case MAG_LEVEL_REF:
    260               // value.Flt = PhotFluxAveErr (equiv, average, secfilt, field->magClass, field->magSource); 
     271              value.Flt = PhotFluxAveErr (field->photcode, average, secfilt, field->magClass, field->magSource); 
    261272              break;
    262273            case MAG_LEVEL_INST:
     
    271282
    272283        case MAG_OPTION_STDEV:
     284          value.Flt = PhotMstdev (field->photcode, average, secfilt, field->magClass, field->magSource);
     285          break;
    273286        case MAG_OPTION_CHISQ:
     287          value.Flt = PhotXm (field->photcode, average, secfilt);
     288          break;
    274289        case MAG_OPTION_MIN:
     290          value.Flt = PhotMmin (field->photcode, average, secfilt);
     291          break;
    275292        case MAG_OPTION_MAX:
     293          value.Flt = PhotMmax (field->photcode, average, secfilt);
     294          break;
    276295        case MAG_OPTION_NCODE: {
    277296          int Nsec = GetPhotcodeNsec (field->photcode->code);
     
    281300        }
    282301        case MAG_OPTION_NPHOT: {
    283           int Nsec = GetPhotcodeNsec (field->photcode->code);
    284           if (Nsec == -1) break;
    285           value.Int = secfilt[Nsec].Nused;
     302          value.Int = PhotNphot (field->photcode, average, secfilt, field->magClass, field->magSource);
    286303          break;
    287304        }
    288305        case MAG_OPTION_UC_DIST:
    289         case MAG_OPTION_STACK_DET_ID:
    290           value.Int = PhotStackID (field->photcode, average, secfilt);
    291           break;
     306          value.Flt = PhotUCdist (field->photcode, average, secfilt);
     307          break;
     308        // XX case MAG_OPTION_STACK_DET_ID:
     309        // XX   value.Int = PhotStackID (field->photcode, average, secfilt);
     310        // XX   break;
    292311        case MAG_OPTION_FLAGS: {
    293312          int Nsec = GetPhotcodeNsec (field->photcode->code);
     
    301320      break;
    302321
    303 # if (0)
    304       switch (field->magMode) {
    305         case MAG_AVE:
    306           value.Flt = PhotAve  (field->photcode, average, secfilt);
    307           break;
    308         case MAG_REF:
    309           value.Flt = PhotRef  (field->photcode, average, secfilt, measure);
    310           break;
    311         case MAG_INST:
    312         case MAG_CAT:
    313         case MAG_SYS:
    314         case MAG_REL:
    315         case MAG_CAL:
    316           // XXX need to code this correctly: this returns just the first matching value
    317           value.Flt = NAN;
    318           for (i = 0; i < average[0].Nmeasure; i++) {
    319             if (field->photcode->code != measure[i].photcode) continue;
    320             value.Flt = measure[i].M;
    321             break;
    322           }
    323           break;
    324         case MAG_CHISQ:
    325           value.Flt = PhotXm (field->photcode, average, secfilt);
    326           break;
    327         case MAG_ERR:
    328           if ((field->photcode->type == PHOT_REF) || (field->photcode->type == PHOT_DEP)) {
    329             for (i = 0; i < average[0].Nmeasure; i++) {
    330               if (field->photcode->code != measure[i].photcode) continue;
    331               value.Flt = measure[i].dM;
    332               break;
    333             }
    334           } else {
    335             value.Flt = PhotAveErr (field->photcode, average, secfilt);
    336           }
    337           break;
    338         case MAG_STDEV:
    339           value.Flt = PhotMstdev (field->photcode, average, secfilt);
    340           break;
    341         case MAG_PHOT_FLAGS:
    342           if ((field->photcode->type == PHOT_REF) || (field->photcode->type == PHOT_DEP)) {
    343             for (i = 0; i < average[0].Nmeasure; i++) {
    344               if (field->photcode->code != measure[i].photcode) continue;
    345               value.Int = measure[i].photFlags;
    346               break;
    347             }
    348           } else {
    349             int Nsec = GetPhotcodeNsec (field->photcode->code);
    350             if (Nsec == -1) break;
    351             value.Int = secfilt[Nsec].flags;
    352           }
    353           break;
    354         case MAG_NCODE:
    355           // XXX push these into dvo_photcode_ops APIs
    356           // XXX do I need to allow for conversion to equiv?
    357           int Nsec = GetPhotcodeNsec (field->photcode->code);
    358           if (Nsec == -1) break;
    359           value.Int = secfilt[Nsec].Ncode;
    360           break;
    361         case MAG_NPHOT:
    362           int Nsec = GetPhotcodeNsec (field->photcode->code);
    363           if (Nsec == -1) break;
    364           value.Int = secfilt[Nsec].Nused;
    365           break;
    366 
    367         case MAG_APER:
    368         case MAG_APER_AVE:
    369           value.Flt = PhotAperAve (field->photcode, average, secfilt);
    370           break;
    371 
    372         case MAG_APER_REF:
    373           value.Flt = PhotAperRef (field->photcode, average, secfilt, measure);
    374           break;
    375 
    376         case MAG_KRON:
    377         case MAG_KRON_AVE:
    378           value.Flt = PhotKronAve (field->photcode, average, secfilt);
    379           break;
    380 
    381         case MAG_KRON_REF:
    382           value.Flt = PhotKronRef (field->photcode, average, secfilt, measure);
    383           break;
    384 
    385         case MAG_KRON_ERR:
    386           value.Flt = PhotKronAveErr (field->photcode, average, secfilt);
    387           break;
    388 
    389         case MAG_MIN:
    390           value.Flt = PhotMmin (field->photcode, average, secfilt);
    391           break;
    392         case MAG_MAX:
    393           value.Flt = PhotMmax (field->photcode, average, secfilt);
    394           break;
    395         case MAG_UC_DIST:
    396           value.Flt = PhotUCdist (field->photcode, average, secfilt);
    397           break;
    398         case MAG_STACK_DET_ID:
    399           value.Int = PhotStackID (field->photcode, average, secfilt);
    400           break;
    401 
    402         case MAG_FLUX_PSF:
    403           value.Flt = PhotAveFluxPSF (field->photcode, average, secfilt);
    404           break;
    405         case MAG_FLUX_PSF_ERR:
    406           value.Flt = PhotAvedFluxPSF (field->photcode, average, secfilt);
    407           break;
    408         case MAG_FLUX_KRON:
    409           value.Flt = PhotAveFluxKron (field->photcode, average, secfilt);
    410           break;
    411         case MAG_FLUX_KRON_ERR:
    412           value.Flt = PhotAvedFluxKron (field->photcode, average, secfilt);
    413           break;
    414       }
    415       break;
    416     case AVE_dMAG:
    417       value.Flt = PhotAveErr (field->photcode, average, secfilt);
    418       break;
    419     case AVE_Xm:
    420       value.Flt = PhotXm (field->photcode, average, secfilt);
    421       break;
    422 # endif
    423322    case AVE_TYPE:
    424323      break;
  • trunk/Ohana/src/libdvo/src/dbExtractMeasures.c

    r37035 r37116  
    248248        case MAG_OPTION_NPHOT:
    249249        case MAG_OPTION_UC_DIST:
    250         case MAG_OPTION_STACK_DET_ID:
    251250        case MAG_OPTION_FLAGS:
    252251        case MAG_OPTION_NONE:
  • trunk/Ohana/src/libdvo/src/dbFields.c

    r37035 r37116  
    7878  if (!strcasecmp (string, "nphot"))        return (MAG_OPTION_NPHOT);
    7979  if (!strcasecmp (string, "uc_dist"))      return (MAG_OPTION_UC_DIST);
    80   if (!strcasecmp (string, "stack_det_id")) return (MAG_OPTION_STACK_DET_ID);
    8180  if (!strcasecmp (string, "flags"))        return (MAG_OPTION_FLAGS);
    8281
     
    145144  if (!strcasecmp (string, "max"))         return (MAG_MAX);
    146145  if (!strcasecmp (string, "ucdist"))      return (MAG_UC_DIST);
    147   if (!strcasecmp (string, "stackDetectID")) return (MAG_STACK_DET_ID);
    148146  if (!strcasecmp (string, "fluxpsf"))     return (MAG_FLUX_PSF);
    149147  if (!strcasecmp (string, "fluxpsferr"))  return (MAG_FLUX_PSF_ERR);
     
    296294
    297295  switch (field->magOption) {
    298     case MAG_OPTION_STACK_DET_ID:
    299296    case MAG_OPTION_NCODE:
    300297    case MAG_OPTION_NPHOT:
  • trunk/Ohana/src/libdvo/src/dvo_catalog.c

    r37035 r37116  
    197197  secfilt->dFapStk     = NAN;
    198198
    199   secfilt->stackDetectID = 0;
     199  secfilt->stackPrmryOff = -1;
     200  secfilt->stackBestOff  = -1;
    200201
    201202  secfilt->MpsfWrp     = NAN;
     
    860861    catalog[0].lensobj = NULL;
    861862  }
    862   // if (catalog[0].X_t)      free (catalog[0].X_t);
    863   // if (catalog[0].Y_t)      free (catalog[0].Y_t);
    864   if (catalog[0].nOwn_t)      free (catalog[0].nOwn_t);
    865   if (catalog[0].found_t)     free (catalog[0].found_t);
    866   // if (catalog[0].image_t)  free (catalog[0].image_t);
    867   // if (catalog[0].mosaic_t) free (catalog[0].mosaic_t);
    868   if (catalog[0].foundWarp_t) free (catalog[0].foundWarp_t);
     863  if (catalog[0].nOwn_t)      { free (catalog[0].nOwn_t); catalog[0].nOwn_t = NULL; }
     864  if (catalog[0].found_t)     { free (catalog[0].found_t); catalog[0].found_t = NULL; }
     865  if (catalog[0].foundWarp_t) { free (catalog[0].foundWarp_t); catalog[0].foundWarp_t = NULL; }
    869866}
    870867
  • trunk/Ohana/src/libdvo/src/dvo_convert.c

    r37035 r37116  
    392392    return (lensing); }
    393393
     394# define SKIPPING_FORMAT(NAME, FORMAT, TYPE)            \
     395  if (!strcmp (extname, NAME)) {                                        \
     396    fprintf (stderr, "ERROR: format %s not defined for lensing, skipping\n", NAME); \
     397    *Nlensing = 0; \
     398    return NULL; \
     399  }
     400
    394401  if (!strcmp (extname, "DVO_LENSING")) {
    395402    lensing = gfits_table_get_Lensing (ftable, Nlensing, NULL);
     
    402409  }
    403410
    404 // CONVERT_FORMAT ("DVO_LENSING_PS1_REF",         PS1_REF,         PS1_REF);
    405 // CONVERT_FORMAT ("DVO_LENSING_ELIXIR",          ELIXIR,          Elixir);
    406 // CONVERT_FORMAT ("DVO_LENSING_LONEOS",          LONEOS,          Loneos);
    407 // CONVERT_FORMAT ("DVO_LENSING_PANSTARRS_DEV_0", PANSTARRS_DEV_0, Panstarrs_DEV_0);
    408 // CONVERT_FORMAT ("DVO_LENSING_PANSTARRS_DEV_1", PANSTARRS_DEV_1, Panstarrs_DEV_1);
    409 // CONVERT_FORMAT ("DVO_LENSING_PS1_DEV_1",       PS1_DEV_1,       PS1_DEV_1);
    410 // CONVERT_FORMAT ("DVO_LENSING_PS1_DEV_2",       PS1_DEV_2,       PS1_DEV_2);
    411 // CONVERT_FORMAT ("DVO_LENSING_PS1_V1",          PS1_V1,          PS1_V1);
    412 // CONVERT_FORMAT ("DVO_LENSING_PS1_V2",          PS1_V2,          PS1_V2);
    413 // CONVERT_FORMAT ("DVO_LENSING_PS1_V3",          PS1_V3,          PS1_V3);
    414 // CONVERT_FORMAT ("DVO_LENSING_PS1_V4",          PS1_V4,          PS1_V4);
    415   CONVERT_FORMAT ("DVO_LENSING_PS1_V5",          PS1_V5,          PS1_V5);
     411  SKIPPING_FORMAT ("DVO_LENSING_PS1_REF",         PS1_REF,         PS1_REF);
     412  SKIPPING_FORMAT ("DVO_LENSING_ELIXIR",          ELIXIR,          Elixir);
     413  SKIPPING_FORMAT ("DVO_LENSING_LONEOS",          LONEOS,          Loneos);
     414  SKIPPING_FORMAT ("DVO_LENSING_PANSTARRS_DEV_0", PANSTARRS_DEV_0, Panstarrs_DEV_0);
     415  SKIPPING_FORMAT ("DVO_LENSING_PANSTARRS_DEV_1", PANSTARRS_DEV_1, Panstarrs_DEV_1);
     416  SKIPPING_FORMAT ("DVO_LENSING_PS1_DEV_1",       PS1_DEV_1,       PS1_DEV_1);
     417  SKIPPING_FORMAT ("DVO_LENSING_PS1_DEV_2",       PS1_DEV_2,       PS1_DEV_2);
     418  SKIPPING_FORMAT ("DVO_LENSING_PS1_V1",          PS1_V1,          PS1_V1);
     419  SKIPPING_FORMAT ("DVO_LENSING_PS1_V2",          PS1_V2,          PS1_V2);
     420  SKIPPING_FORMAT ("DVO_LENSING_PS1_V3",          PS1_V3,          PS1_V3);
     421  SKIPPING_FORMAT ("DVO_LENSING_PS1_V4",          PS1_V4,          PS1_V4);
     422  CONVERT_FORMAT  ("DVO_LENSING_PS1_V5",          PS1_V5,          PS1_V5);
    416423# undef CONVERT_FORMAT
    417424
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c

    r37035 r37116  
    251251    out[i].Mstdev        = in[i].Mstdev;     
    252252    out[i].ubercalDist   = in[i].ubercalDist;     
    253     out[i].stackDetectID = in[i].stackDetectID;     
     253    out[i].stackPrmryOff = in[i].stackPrmryOff;     
     254    out[i].stackBestOff  = in[i].stackBestOff;     
    254255 }
    255256  return (out);
     
    281282    out[i].Mstdev        = in[i].Mstdev;     
    282283    out[i].ubercalDist   = in[i].ubercalDist;     
    283     out[i].stackDetectID = in[i].stackDetectID;
     284    out[i].stackPrmryOff = in[i].stackPrmryOff;     
     285    out[i].stackBestOff  = in[i].stackBestOff;     
    284286  }
    285287  return (out);
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V5.c

    r37035 r37116  
    319319    out[i].dFapStk       = in[i].dFapStk;
    320320
    321     out[i].stackDetectID = in[i].stackDetectID;     
     321    out[i].stackPrmryOff = in[i].stackPrmryOff;     
     322    out[i].stackBestOff  = in[i].stackBestOff;     
    322323
    323324    out[i].MpsfWrp       = in[i].MpsfWrp;
     
    387388    out[i].dFapStk       = in[i].dFapStk;
    388389
    389     out[i].stackDetectID = in[i].stackDetectID;     
     390    out[i].stackPrmryOff = in[i].stackPrmryOff;     
     391    out[i].stackBestOff  = in[i].stackBestOff;     
    390392
    391393    out[i].MpsfWrp       = in[i].MpsfWrp;
  • trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c

    r37035 r37116  
    687687}
    688688
    689 float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt) {
    690 
    691   int Ns;
    692   float Mstdev;
    693 
    694   if (code == NULL) return NAN;
    695 
    696   Ns = photcodes[0].hashNsec[code[0].code];
    697   Mstdev  = (Ns == -1) ? NAN : 0.001*secfilt[Ns].Mstdev;
     689float PhotMstdev (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source) {
     690
     691  if (code == NULL) return NAN;
     692
     693  int Ns = photcodes[0].hashNsec[code[0].code];
     694  if (Ns == -1) return (NAN);
     695
     696  float Mstdev = NAN;
     697  switch (source) {
     698    case MAG_SRC_CHP:
     699      switch (class) {
     700        case MAG_CLASS_PSF:
     701          Mstdev = secfilt[Ns].Mstdev;
     702          break;
     703        case MAG_CLASS_KRON:
     704          Mstdev = secfilt[Ns].sMkron;
     705          break;
     706        case MAG_CLASS_APER:
     707          Mstdev = secfilt[Ns].sMap;
     708          break;
     709        default:
     710          break;
     711      }
     712      break;
     713    case MAG_SRC_WRP:
     714      switch (class) {
     715        case MAG_CLASS_PSF:
     716          Mstdev = secfilt[Ns].sFpsfWrp;
     717          break;
     718        case MAG_CLASS_KRON:
     719          Mstdev = secfilt[Ns].sFkronWrp;
     720          break;
     721        case MAG_CLASS_APER:
     722          Mstdev = secfilt[Ns].sFapWrp;
     723          break;
     724        default:
     725          break;
     726      }
     727      break;
     728    case MAG_SRC_STK:
     729    default:
     730      break;
     731  }
    698732  return (Mstdev);
     733}
     734
     735int PhotNphot (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source) {
     736
     737  if (code == NULL) return 0;
     738
     739  int Ns = photcodes[0].hashNsec[code[0].code];
     740  if (Ns == -1) return 0;
     741
     742  int Nphot = 0;
     743  switch (source) {
     744    case MAG_SRC_CHP:
     745      switch (class) {
     746        case MAG_CLASS_PSF:
     747          Nphot = secfilt[Ns].Nused;
     748          break;
     749        case MAG_CLASS_KRON:
     750          Nphot = secfilt[Ns].NusedKron;
     751          break;
     752        case MAG_CLASS_APER:
     753          Nphot = secfilt[Ns].NusedAp;
     754          break;
     755        default:
     756          break;
     757      }
     758      break;
     759    case MAG_SRC_WRP:
     760      switch (class) {
     761        case MAG_CLASS_PSF:
     762          Nphot = secfilt[Ns].NusedWrp;
     763          break;
     764        case MAG_CLASS_KRON:
     765          Nphot = secfilt[Ns].NusedKronWrp;
     766          break;
     767        case MAG_CLASS_APER:
     768          Nphot = secfilt[Ns].NusedApWrp;
     769          break;
     770        default:
     771          break;
     772      }
     773      break;
     774    case MAG_SRC_STK:
     775    default:
     776      break;
     777  }
     778  return (Nphot);
    699779}
    700780
     
    783863}
    784864
    785 unsigned int PhotStackID (PhotCode *code, Average *average, SecFilt *secfilt) {
    786 
    787   int Ns;
    788   unsigned int ID;
    789 
    790   if (code == NULL) return 0;
    791 
    792   Ns = photcodes[0].hashNsec[code[0].code];
    793   ID = (Ns == -1) ? 0 : secfilt[Ns].stackDetectID;
    794   return (ID);
    795 }
     865// XX unsigned int PhotStackID (PhotCode *code, Average *average, SecFilt *secfilt) {
     866// XX
     867// XX   int Ns;
     868// XX   unsigned int ID;
     869// XX
     870// XX   if (code == NULL) return 0;
     871// XX
     872// XX   Ns = photcodes[0].hashNsec[code[0].code];
     873// XX   ID = (Ns == -1) ? 0 : secfilt[Ns].stackDetectID;
     874// XX   return (ID);
     875// XX }
    796876
    797877// Xm is now (2014.07.03) stored as the chisq except in dvo formats which use as short
     
    11121192  }
    11131193  return (Fave);
     1194}
     1195
     1196float PhotFluxAveErr (PhotCode *code, Average *average, SecFilt *secfilt, dvoMagClassType class, dvoMagSourceType source) {
     1197
     1198  if (code == NULL) return NAN;
     1199
     1200  int Ns = photcodes[0].hashNsec[code[0].code];
     1201  if (Ns == -1) return (NAN);
     1202
     1203  float dFave = NAN;
     1204  switch (source) {
     1205    case MAG_SRC_CHP:
     1206      switch (class) {
     1207        case MAG_CLASS_PSF:
     1208          dFave = secfilt[Ns].dM * MagToFlux(secfilt[Ns].M);
     1209          break;
     1210        case MAG_CLASS_KRON:
     1211          dFave = secfilt[Ns].dMkron * MagToFlux(secfilt[Ns].Mkron);
     1212          break;
     1213        case MAG_CLASS_APER:
     1214          dFave = secfilt[Ns].dMap * MagToFlux(secfilt[Ns].Map);
     1215          break;
     1216        default:
     1217          break;
     1218      }
     1219      break;
     1220    case MAG_SRC_WRP:
     1221      switch (class) {
     1222        case MAG_CLASS_PSF:
     1223          dFave = secfilt[Ns].dFpsfWrp;
     1224          break;
     1225        case MAG_CLASS_KRON:
     1226          dFave = secfilt[Ns].dFkronWrp;
     1227          break;
     1228        case MAG_CLASS_APER:
     1229          dFave = secfilt[Ns].dFapWrp;
     1230          break;
     1231        default:
     1232          break;
     1233      }
     1234      break;
     1235    case MAG_SRC_STK:
     1236      switch (class) {
     1237        case MAG_CLASS_PSF:
     1238          dFave = secfilt[Ns].dFpsfStk;
     1239          break;
     1240        case MAG_CLASS_KRON:
     1241          dFave = secfilt[Ns].dFkronStk;
     1242          break;
     1243        case MAG_CLASS_APER:
     1244          dFave = secfilt[Ns].dFapStk;
     1245          break;
     1246        default:
     1247          break;
     1248      }
     1249      break;
     1250    default:
     1251      break;
     1252  }
     1253  return (dFave);
    11141254}
    11151255
Note: See TracChangeset for help on using the changeset viewer.