IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 34650


Ignore:
Timestamp:
Nov 2, 2012, 3:18:18 PM (14 years ago)
Author:
Serge CHASTEL
Message:

Minor changes: (1) PLTSCALE_EXT is now in header; (2) NPARAMS and EXT_NDOF default values are now 0

Location:
trunk/ppTranslate/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppTranslate/src/ppMops.h

    r34505 r34650  
    5959  psVector *raExtErr, *decExtErr;     // Error in sky coordinates for RA_EXT and DEC_EXT
    6060  psVector *mask;                     // Mask for detections
     61    float platescale; //Plate scale at centroid
    6162} ppMopsDetections;
    6263
  • trunk/ppTranslate/src/ppMopsRead.c

    r34511 r34650  
    3737 *
    3838 * Look for "DIRTY_BUG_FIX" to know where
    39  * 
     39 *
    4040 * and set the following to 0 to change the code
    4141 */
    42 #define DIRTY_BUG_FIX 1
     42#define DIRTY_BUG_FIX 0
    4343/*
    4444 *
     
    145145    if (skyChipPsfVersion != args->version) {
    146146      if (skyChipPsfVersion > args->version) {
    147         psWarning("The FITS data will be downgraded from PS1_DV%d to PS1_DV%d\n",
    148                   skyChipPsfVersion, args->version);
     147        psWarning("The FITS data will be downgraded from PS1_DV%d to PS1_DV%d\n",
     148                  skyChipPsfVersion, args->version);
    149149      } else { // Necessarily: skyChipPsfVersion > args->version
    150         psWarning("The FITS data will be upgraded from PS1_DV%d to PS1_DV%d (new values set to default 0, NaN...)\n",
    151                   skyChipPsfVersion, args->version);
     150        psWarning("The FITS data will be upgraded from PS1_DV%d to PS1_DV%d (new values set to default 0, NaN...)\n",
     151                  skyChipPsfVersion, args->version);
    152152      }
    153153    }
     
    199199      addDummyValues(det->table, size, args->version);
    200200      if (!psFitsMoveExtName(fits, "SkyChip.xfit")) {
    201         psTrace("ppMops.read", 3, "No fitted trails extension");
     201        psTrace("ppMops.read", 3, "No fitted trails extension");
    202202      } else {
    203         psTrace("ppMops.read", 3, "Fitted trails extension found\n");
    204         psTrace("ppMops.read", 10, "Getting size?\n");
    205         int fittedTrailsSize = psFitsTableSize(fits);
    206         psTrace("ppMops.read", 10, "size = %d\n", fittedTrailsSize);
    207         if (fittedTrailsSize <= 0) {
    208           psErrorStackPrint(stderr, "Unable to determine size of fitted trails extension table %d", i);
    209           psTrace("ppMops.read", 3, "No entry in fitted trails extension!!!!\n");
    210           psErrorClear();
    211         } else {
    212           psTrace("ppMops.read", 10, "Reading table of interest?\n");
    213           psMetadata* fittedTrails = psFitsReadTableAllColumns(fits); // Table of interest
    214           psTrace("ppMops.read", 10, "OK for table of interest\n");
    215           if (!fittedTrails) {
    216             psError(PS_ERR_IO, false, "Unable to read fittedTrails table in file %d", i);
    217             return NULL;
    218           }
    219           //Iterate on the different names and types expected in the fittedTrails parameters
    220           psTrace("ppMops.read", 10, "Getting IPP_IDET\n");
    221           psVector* idet = psMetadataLookupVector(NULL, fittedTrails, "IPP_IDET");
    222           replaceDummyValuesF32("X_EXT", fittedTrails, det->table, idet);
    223           replaceDummyValuesF32("Y_EXT", fittedTrails, det->table, idet);
    224           replaceDummyValuesF32("X_EXT_SIG", fittedTrails, det->table, idet);
    225           replaceDummyValuesF32("Y_EXT_SIG", fittedTrails, det->table, idet);
    226           replaceDummyValuesF32("EXT_INST_MAG",  fittedTrails, det->table, idet);
    227           replaceDummyValuesF32("EXT_INST_MAG_SIG",  fittedTrails, det->table, idet);
    228           replaceDummyValuesS32("NPARAMS",  fittedTrails, det->table, idet);
    229           replaceDummyValuesF32("EXT_WIDTH_MAJ",  fittedTrails, det->table, idet);
    230           replaceDummyValuesF32("EXT_WIDTH_MIN",  fittedTrails, det->table, idet);
    231           replaceDummyValuesF32("EXT_THETA",  fittedTrails, det->table, idet);
    232           replaceDummyValuesF32("EXT_WIDTH_MAJ_ERR",  fittedTrails, det->table, idet);
    233           // EXT_WIDTH_MIN_ERR is actually undefined but set to 0. in CMF files
    234           // We explicitely let it set to NaN, hence the commented out
    235           // following line
    236           //replaceDummyValuesF32("EXT_WIDTH_MIN_ERR",  fittedTrails, det->table, idet);
    237           replaceDummyValuesF32("EXT_THETA_ERR",  fittedTrails, det->table, idet);
    238           psTrace("ppMops.read", 10, "Got all version 2 values\n");
    239           if (skyChipPsfVersion >= 3) {
    240             psTrace("ppMops.read", 10, "Getting PS1_DV3 data\n");
    241             replaceDummyValuesF32("RA_EXT",  fittedTrails, det->table, idet);
    242             // Note: RA_EXT_SIGMA is computed (see det->raExtErr)
    243             replaceDummyValuesF32("DEC_EXT",  fittedTrails, det->table, idet);
    244             // Note: DEC_EXT_SIGMA is computed (see det->decExtErr)
    245             //Note: POSANG_EXT is POSANGLE in xfit
     203        psTrace("ppMops.read", 3, "Fitted trails extension found\n");
     204        psTrace("ppMops.read", 10, "Getting size?\n");
     205        int fittedTrailsSize = psFitsTableSize(fits);
     206        psTrace("ppMops.read", 10, "size = %d\n", fittedTrailsSize);
     207        if (fittedTrailsSize <= 0) {
     208          psErrorStackPrint(stderr, "Unable to determine size of fitted trails extension table %d", i);
     209          psTrace("ppMops.read", 3, "No entry in fitted trails extension!!!!\n");
     210          psErrorClear();
     211        } else {
     212          psTrace("ppMops.read", 10, "Reading table of interest?\n");
     213          psMetadata* fittedTrails = psFitsReadTableAllColumns(fits); // Table of interest
     214          psTrace("ppMops.read", 10, "OK for table of interest\n");
     215          if (!fittedTrails) {
     216            psError(PS_ERR_IO, false, "Unable to read fittedTrails table in file %d", i);
     217            return NULL;
     218          }
     219          //Iterate on the different names and types expected in the fittedTrails parameters
     220          psTrace("ppMops.read", 10, "Getting IPP_IDET\n");
     221          psVector* idet = psMetadataLookupVector(NULL, fittedTrails, "IPP_IDET");
     222          replaceDummyValuesF32("X_EXT", fittedTrails, det->table, idet);
     223          replaceDummyValuesF32("Y_EXT", fittedTrails, det->table, idet);
     224          replaceDummyValuesF32("X_EXT_SIG", fittedTrails, det->table, idet);
     225          replaceDummyValuesF32("Y_EXT_SIG", fittedTrails, det->table, idet);
     226          replaceDummyValuesF32("EXT_INST_MAG",  fittedTrails, det->table, idet);
     227          replaceDummyValuesF32("EXT_INST_MAG_SIG",  fittedTrails, det->table, idet);
     228          replaceDummyValuesS32("NPARAMS",  fittedTrails, det->table, idet);
     229          replaceDummyValuesF32("EXT_WIDTH_MAJ",  fittedTrails, det->table, idet);
     230          replaceDummyValuesF32("EXT_WIDTH_MIN",  fittedTrails, det->table, idet);
     231          replaceDummyValuesF32("EXT_THETA",  fittedTrails, det->table, idet);
     232          replaceDummyValuesF32("EXT_WIDTH_MAJ_ERR",  fittedTrails, det->table, idet);
     233          // EXT_WIDTH_MIN_ERR is actually undefined but set to 0. in CMF files
     234          // We explicitely let it set to NaN, hence the commented out
     235          // following line
     236          //replaceDummyValuesF32("EXT_WIDTH_MIN_ERR",  fittedTrails, det->table, idet);
     237          replaceDummyValuesF32("EXT_THETA_ERR",  fittedTrails, det->table, idet);
     238          psTrace("ppMops.read", 10, "Got all version 2 values\n");
     239          if (skyChipPsfVersion >= 3) {
     240            psTrace("ppMops.read", 10, "Getting PS1_DV3 data\n");
     241            replaceDummyValuesF32("RA_EXT",  fittedTrails, det->table, idet);
     242            // Note: RA_EXT_SIGMA is computed (see det->raExtErr)
     243            replaceDummyValuesF32("DEC_EXT",  fittedTrails, det->table, idet);
     244            // Note: DEC_EXT_SIGMA is computed (see det->decExtErr)
     245            //Note: POSANG_EXT is POSANGLE in xfit
    246246#if DIRTY_BUG_FIX
    247247#else
    248             renameDummyValuesF32("POSANGLE",  fittedTrails, "POSANG_EXT", det->table, idet);
    249 #endif   
    250             //Note: PLTSCALE_EXT in xfit is PLTSCALE
    251             renameDummyValuesF32("PLTSCALE", fittedTrails, "PLTSCALE_EXT", det->table, idet);
    252             renameDummyValuesF32("EXT_INST_FLUX", fittedTrails, "EXT_FLUX", det->table, idet);
    253             replaceDummyValuesF32("EXT_CAL_MAG", fittedTrails, det->table, idet);
    254             renameDummyValuesF32("EXT_INST_MAG_SIG", fittedTrails, "EXT_MAG_SIG", det->table, idet);
    255             replaceDummyValuesF32("EXT_CHISQ", fittedTrails, det->table, idet);
    256             replaceDummyValuesS32("EXT_NDOF", fittedTrails, det->table, idet);
    257             psTrace("ppMops.read", 10, "Got all version 3 values\n");
    258           }
    259         }
     248            renameDummyValuesF32("POSANGLE",  fittedTrails, "POSANG_EXT", det->table, idet);
     249#endif
     250            //Not written anymore but still used in computation
     251            renameDummyValuesF32("PLTSCALE", fittedTrails, "PLTSCALE_EXT", det->table, idet);
     252            renameDummyValuesF32("EXT_INST_FLUX", fittedTrails, "EXT_FLUX", det->table, idet);
     253            replaceDummyValuesF32("EXT_CAL_MAG", fittedTrails, det->table, idet);
     254            renameDummyValuesF32("EXT_INST_MAG_SIG", fittedTrails, "EXT_MAG_SIG", det->table, idet);
     255            replaceDummyValuesF32("EXT_CHISQ", fittedTrails, det->table, idet);
     256            replaceDummyValuesS32("EXT_NDOF", fittedTrails, det->table, idet);
     257            psTrace("ppMops.read", 10, "Got all version 3 values\n");
     258          }
     259        }
    260260      }
    261261    }
     
    264264    if (args->version == 0) {
    265265      if (skyChipPsfVersion < 2) {
    266         // XXX: TODO: Do we need to add dummy vectors for the missing columns?
     266        // XXX: TODO: Do we need to add dummy vectors for the missing columns?
    267267      }
    268268    }
     
    324324      psU32 flags = flagsV->data.U32[row]; // psFitsTableGetU32(NULL, table, row, "FLAGS");
    325325      if (flags & SOURCE_MASK) {
    326         psTrace("ppMops.read", 10, "Discarding row %ld from input %d because of flags: %ud", row, i, flags);
    327         det->mask->data.U8[row] = 0xFF;
    328         continue;
     326        psTrace("ppMops.read", 10, "Discarding row %ld from input %d because of flags: %ud", row, i, flags);
     327        det->mask->data.U8[row] = 0xFF;
     328        continue;
    329329      }
    330330
     
    340340
    341341      if (!isfinite(det->x->data.F32[row]) || !isfinite(det->y->data.F32[row]) ||
    342           !isfinite(det->ra->data.F64[row]) || !isfinite(det->dec->data.F64[row]) ||
    343           !isfinite(mag->data.F32[row]) || !isfinite(magErr->data.F32[row]) ||
    344           !isfinite(xErr) || !isfinite(yErr) || !isfinite(scale) || !isfinite(angle)) {
    345         psTrace("ppMops.read", 10,
    346                 "Discarding row %ld from input %d because of non-finite values: "
    347                 "%f %f %lf %lf %f %f %f %f %f %f",
    348                 row, i,
    349                 det->x->data.F32[row], det->y->data.F32[row],
    350                 det->ra->data.F64[row], det->dec->data.F64[row],
    351                 mag->data.F32[row], magErr->data.F32[row],
    352                 xErr, yErr, scale, angle);
    353         det->mask->data.U8[row] = 0xFF;
    354         continue;
     342          !isfinite(det->ra->data.F64[row]) || !isfinite(det->dec->data.F64[row]) ||
     343          !isfinite(mag->data.F32[row]) || !isfinite(magErr->data.F32[row]) ||
     344          !isfinite(xErr) || !isfinite(yErr) || !isfinite(scale) || !isfinite(angle)) {
     345        psTrace("ppMops.read", 10,
     346                "Discarding row %ld from input %d because of non-finite values: "
     347                "%f %f %lf %lf %f %f %f %f %f %f",
     348                row, i,
     349                det->x->data.F32[row], det->y->data.F32[row],
     350                det->ra->data.F64[row], det->dec->data.F64[row],
     351                mag->data.F32[row], magErr->data.F32[row],
     352                xErr, yErr, scale, angle);
     353        det->mask->data.U8[row] = 0xFF;
     354        continue;
    355355      }
    356356
     
    368368      // Same for EXT data if version permits
    369369      if (skyChipPsfVersion >= 3) {
    370         xErr = xExtErrV->data.F32[row];
    371         yErr = yExtErrV->data.F32[row];
    372         scale = scaleExtV->data.F32[row]/3600.;
    373 #if DIRTY_BUG_FIX
    374         angle = 0.;
     370        xErr = xExtErrV->data.F32[row];
     371        yErr = yExtErrV->data.F32[row];
     372        scale = scaleExtV->data.F32[row]/3600.;
     373#if DIRTY_BUG_FIX
     374        angle = 0.;
    375375#else
    376         angle = angleExtV->data.F32[row];
    377 #endif
    378         cosAngle = cos(angle);
    379         sinAngle = sin(angle);
    380         cosAngle2 = PS_SQR(cosAngle);
    381         sinAngle2 = PS_SQR(sinAngle);
    382         xErr2 = PS_SQR(xErr);
    383         yErr2 = PS_SQR(yErr);
    384         errScale = scale / 3600.0;
    385         det->raExtErr->data.F64[row] = errScale * sqrt(cosAngle2 * xErr2 + sinAngle2 * yErr2);
    386         det->decExtErr->data.F64[row] = errScale * sqrt(sinAngle2 * xErr2 + cosAngle2 * yErr2);
     376        angle = angleExtV->data.F32[row];
     377#endif
     378        cosAngle = cos(angle);
     379        sinAngle = sin(angle);
     380        cosAngle2 = PS_SQR(cosAngle);
     381        sinAngle2 = PS_SQR(sinAngle);
     382        xErr2 = PS_SQR(xErr);
     383        yErr2 = PS_SQR(yErr);
     384        errScale = scale / 3600.0;
     385        det->raExtErr->data.F64[row] = errScale * sqrt(cosAngle2 * xErr2 + sinAngle2 * yErr2);
     386        det->decExtErr->data.F64[row] = errScale * sqrt(sinAngle2 * xErr2 + cosAngle2 * yErr2);
     387        //Update the platescale value (should be a constant)
     388        det->platescale = scale;
    387389      }
    388390    }
     
    413415}
    414416#endif
     417
    415418static psVector* createDummyS32(long size) {
    416419  psVector* dummy = psVectorAlloc(size, PS_TYPE_S32);
    417   psVectorInit(dummy, NAN);
     420  psVectorInit(dummy, 0);
    418421  return dummy;
    419422}
  • trunk/ppTranslate/src/ppMopsWrite.c

    r34488 r34650  
    8585  psMetadataAddF32(header, PS_LIST_TAIL, "SKY", 0, "Exposure avg sky background", args->sky);
    8686  psMetadataAddStr(header, PS_LIST_TAIL, "SHUTOUTC", 0, "Camera exposure shutter open (UTC)", args->shutoutc);
     87  psMetadataAddF32(header, PS_LIST_TAIL, "PLTSCALE_EXT", 0, "Plate scale at centroid", det->platescale);
    8788
    8889  //field in header that tells about the CMF version
     
    9293
    9394  // Find the total number of detections
    94 
    9595  long total = 0;
    9696  for (long i=0; i<detections->n; i++) {
     
    191191                     0);
    192192      if (args->version == 3) {
    193         // Write data of version 3 (see ICD)
    194         psMetadataAdd (row, PS_LIST_TAIL, "RA_EXT",         PS_DATA_F32, "Fitted centroid RA",
    195                        0);
    196         psMetadataAdd (row, PS_LIST_TAIL, "RA_EXT_SIGMA",   PS_DATA_F32, "Fitted RA sigma",
    197                        0);
    198         psMetadataAdd (row, PS_LIST_TAIL, "DEC_EXT",        PS_DATA_F32, "Fitted centroid DEC",
    199                        0);
    200         psMetadataAdd (row, PS_LIST_TAIL, "DEC_EXT_SIGMA",  PS_DATA_F32, "Fitted DEC sigma",
    201                        0);
    202         psMetadataAdd (row, PS_LIST_TAIL, "POSANG_EXT",     PS_DATA_F32, "Fitted position angle",
    203                        0);
    204         psMetadataAdd (row, PS_LIST_TAIL, "PLTSCALE_EXT",   PS_DATA_F32, "Plate scale at centroid",
    205                        0);
    206         psMetadataAdd (row, PS_LIST_TAIL, "EXT_FLUX",       PS_DATA_F32, "Fitted flux",
    207                        0);
    208         psMetadataAdd (row, PS_LIST_TAIL, "EXT_CAL_MAG",    PS_DATA_F32, "Calibrated mag",
    209                        0);
    210         psMetadataAdd (row, PS_LIST_TAIL, "EXT_MAG_SIG",    PS_DATA_F32, "Mag sigma",
    211                        0);
    212         psMetadataAdd (row, PS_LIST_TAIL, "EXT_CHISQ",      PS_DATA_F32, "Chi^2 of fit",
    213                        0);
    214         psMetadataAdd (row, PS_LIST_TAIL, "EXT_NDOF",       PS_DATA_F32, "Fit degrees of freedom",
    215                        0);
     193// Write data of version 3 (see ICD)
     194        psMetadataAdd (row, PS_LIST_TAIL, "RA_EXT",         PS_DATA_F32, "Fitted centroid RA",
     195                       0);
     196        psMetadataAdd (row, PS_LIST_TAIL, "RA_EXT_SIGMA",   PS_DATA_F32, "Fitted RA sigma",
     197                       0);
     198        psMetadataAdd (row, PS_LIST_TAIL, "DEC_EXT",        PS_DATA_F32, "Fitted centroid DEC",
     199                       0);
     200        psMetadataAdd (row, PS_LIST_TAIL, "DEC_EXT_SIGMA",  PS_DATA_F32, "Fitted DEC sigma",
     201                       0);
     202        psMetadataAdd (row, PS_LIST_TAIL, "POSANG_EXT",     PS_DATA_F32, "Fitted position angle",
     203                       0);
     204        psMetadataAdd (row, PS_LIST_TAIL, "EXT_FLUX",       PS_DATA_F32, "Fitted flux",
     205                       0);
     206        psMetadataAdd (row, PS_LIST_TAIL, "EXT_CAL_MAG",    PS_DATA_F32, "Calibrated mag",
     207                       0);
     208        psMetadataAdd (row, PS_LIST_TAIL, "EXT_MAG_SIG",    PS_DATA_F32, "Mag sigma",
     209                       0);
     210        psMetadataAdd (row, PS_LIST_TAIL, "EXT_CHISQ",      PS_DATA_F32, "Chi^2 of fit",
     211                       0);
     212        psMetadataAdd (row, PS_LIST_TAIL, "EXT_NDOF",       PS_DATA_F32, "Fit degrees of freedom",
     213                       0);
    216214      }
    217215    }
     
    308306      addColumn("DEC_EXT_SIGMA", NULL, 0);
    309307      addColumn("POSANG_EXT", NULL, 0);
    310       addColumn("PLTSCALE_EXT", NULL, 0);
    311308      addColumn("EXT_FLUX", NULL, 0);
    312309      addColumn("EXT_CAL_MAG", NULL, 0);
Note: See TracChangeset for help on using the changeset viewer.