IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 34505 for trunk


Ignore:
Timestamp:
Oct 4, 2012, 10:48:19 AM (14 years ago)
Author:
Serge CHASTEL
Message:

ppMops PS1_DV3 release candidate 1

Location:
trunk/ppTranslate/src
Files:
2 edited

Legend:

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

    r34474 r34505  
    5656  psVector *ra, *dec;                 // Sky coordinates
    5757  psVector *raErr, *decErr;           // Error in sky coordinates
     58  psVector *raExt, *decExt;           // Sky coordinates for RA_EXT and DEC_EXT
     59  psVector *raExtErr, *decExtErr;     // Error in sky coordinates for RA_EXT and DEC_EXT
    5860  psVector *mask;                     // Mask for detections
    5961} ppMopsDetections;
  • trunk/ppTranslate/src/ppMopsRead.c

    r34488 r34505  
    1010static void addDummyValues(psMetadata* md, long size, int version);
    1111static void replaceDummyValuesF32(const char* colName, psMetadata* source, psMetadata* target, psVector* indexes);
     12static void replaceDummyValuesS32(const char* colName, psMetadata* source, psMetadata* target, psVector* indexes);
     13static void renameDummyValuesF32(const char* colNameSource, psMetadata* source, const char* colNameTarget, psMetadata* target, psVector* indexes);
    1214
    1315/*
     
    2426  for (int i = 0; i < num; i++) {
    2527    const char *name = inNames->data[i];
     28    printf("%s\n", name);
    2629
    2730    psFits *fits = psFitsOpen(name,  "r"); // FITS file
     
    118121      } else {
    119122        psTrace("ppMops.read", 3, "Fitted trails extension found\n");
     123        psTrace("ppMops.read", 10, "Getting size?\n");
    120124        int fittedTrailsSize = psFitsTableSize(fits);
     125        psTrace("ppMops.read", 10, "size = %d\n", fittedTrailsSize);
    121126        if (fittedTrailsSize <= 0) {
    122127          psErrorStackPrint(stderr, "Unable to determine size of fitted trails extension table %d", i);
     
    124129          psErrorClear();
    125130        } else {
     131          psTrace("ppMops.read", 10, "Reading table of interest?\n");
    126132          psMetadata* fittedTrails = psFitsReadTableAllColumns(fits); // Table of interest
     133          psTrace("ppMops.read", 10, "OK for table of interest\n");
    127134          if (!fittedTrails) {
    128135            psError(PS_ERR_IO, false, "Unable to read fittedTrails table in file %d", i);
     
    130137          }
    131138          //Iterate on the different names and types expected in the fittedTrails parameters
     139          psTrace("ppMops.read", 10, "Getting IPP_IDET\n");
    132140          psVector* idet = psMetadataLookupVector(NULL, fittedTrails, "IPP_IDET");
    133141          replaceDummyValuesF32("X_EXT", fittedTrails, det->table, idet);
     
    142150          replaceDummyValuesF32("EXT_THETA",  fittedTrails, det->table, idet);
    143151          replaceDummyValuesF32("EXT_WIDTH_MAJ_ERR",  fittedTrails, det->table, idet);
    144           replaceDummyValuesF32("EXT_WIDTH_MIN_ERR",  fittedTrails, det->table, idet);
     152          // EXT_WIDTH_MIN_ERR is actually undefined but set to 0. in CMF files
     153          // We explicitely let it set to NaN, hence the commented out
     154          // following line
     155          //replaceDummyValuesF32("EXT_WIDTH_MIN_ERR",  fittedTrails, det->table, idet);
    145156          replaceDummyValuesF32("EXT_THETA_ERR",  fittedTrails, det->table, idet);
     157          psTrace("ppMops.read", 10, "Got all version 2 values\n");
    146158          if (skyChipPsfVersion >= 3) {
     159            psTrace("ppMops.read", 10, "Getting PS1_DV3 data\n");
    147160            replaceDummyValuesF32("RA_EXT",  fittedTrails, det->table, idet);
    148             replaceDummyValuesF32("RA_EXT_SIGMA",  fittedTrails, det->table, idet);
     161            // Note: RA_EXT_SIGMA is computed (see det->raExtErr)
    149162            replaceDummyValuesF32("DEC_EXT",  fittedTrails, det->table, idet);
    150             replaceDummyValuesF32("DEC_EXT_SIGMA",  fittedTrails, det->table, idet);
    151             replaceDummyValuesF32("POSANG_EXT",  fittedTrails, det->table, idet);
    152             replaceDummyValuesF32("PLTSCALE_EXT",  fittedTrails, det->table, idet);
    153             replaceDummyValuesF32("EXT_FLUX",  fittedTrails, det->table, idet);
    154             replaceDummyValuesF32("EXT_CAL_MAG",  fittedTrails, det->table, idet);
    155             replaceDummyValuesF32("EXT_MAG_SIG",  fittedTrails, det->table, idet);
    156             replaceDummyValuesF32("EXT_CHISQ",  fittedTrails, det->table, idet);
    157             replaceDummyValuesF32("EXT_NDOF",  fittedTrails, det->table, idet);
     163            // Note: DEC_EXT_SIGMA is computed (see det->decExtErr)
     164            //Note: POSANG_EXT is POSANGLE in xfit
     165            renameDummyValuesF32("POSANGLE",  fittedTrails, "POSANG_EXT", det->table, idet);
     166            //Note: PLTSCALE_EXT in xfit is PLTSCALE
     167            renameDummyValuesF32("PLTSCALE", fittedTrails, "PLTSCALE_EXT", det->table, idet);
     168            renameDummyValuesF32("EXT_INST_FLUX", fittedTrails, "EXT_FLUX", det->table, idet);
     169            replaceDummyValuesF32("EXT_CAL_MAG", fittedTrails, det->table, idet);
     170            renameDummyValuesF32("EXT_INST_MAG_SIG", fittedTrails, "EXT_MAG_SIG", det->table, idet);
     171            replaceDummyValuesF32("EXT_CHISQ", fittedTrails, det->table, idet);
     172            replaceDummyValuesS32("EXT_NDOF", fittedTrails, det->table, idet);
     173            psTrace("ppMops.read", 10, "Got all version 3 values\n");
    158174          }
    159175        }
     
    170186    psVector *ra = psMetadataLookupVector(NULL, table, "RA_PSF");
    171187    psVector *dec = psMetadataLookupVector(NULL, table, "DEC_PSF");
    172 
    173188    det->raErr = psVectorAlloc(size, PS_TYPE_F64);
    174189    det->decErr = psVectorAlloc(size, PS_TYPE_F64);
     190    if (skyChipPsfVersion >= 3) {
     191      det->raExtErr = psVectorAlloc(size, PS_TYPE_F64);
     192      det->decExtErr = psVectorAlloc(size, PS_TYPE_F64);
     193    } else {
     194      det->raExtErr = NULL;
     195      det->decExtErr = NULL;
     196    }
    175197    det->mask = psVectorAlloc(size, PS_TYPE_U8);
    176198
     
    186208
    187209    // Add our new vectors to the table so that duplicates and masked items may be purged
     210    psMetadataAddVector(table, PS_LIST_HEAD, "RA_ERR", 0, NULL, det->raErr);
    188211    psMetadataAddVector(table, PS_LIST_HEAD, "DEC_ERR", 0, NULL, det->decErr);
    189     psMetadataAddVector(table, PS_LIST_HEAD, "RA_ERR", 0, NULL, det->raErr);
     212    if (skyChipPsfVersion >= 3) {
     213      psMetadataAddVector(table, PS_LIST_HEAD, "RA_EXT_SIGMA", 0, NULL, det->raExtErr);
     214      psMetadataAddVector(table, PS_LIST_HEAD, "DEC_EXT_SIGMA", 0, NULL, det->decExtErr);
     215    }
    190216
    191217    psTrace("ppMops.read", 2, "Read %ld rows from %s\n", det->num, det->component);
     
    198224    psVector *angleV = psMetadataLookupVector(NULL, table, "POSANGLE");
    199225    psVector *flagsV = psMetadataLookupVector(NULL, table, "FLAGS");
     226    psVector *xExtErrV = NULL;
     227    psVector *yExtErrV = NULL;
     228    psVector *scaleExtV = NULL;
     229    psVector *angleExtV = NULL;
     230    if (skyChipPsfVersion >= 3) {
     231      xExtErrV = psMetadataLookupVector(NULL, table, "X_EXT_SIG");
     232      yExtErrV = psMetadataLookupVector(NULL, table, "Y_EXT_SIG");
     233      scaleExtV = psMetadataLookupVector(NULL, table, "PLTSCALE_EXT");
     234      angleExtV = psMetadataLookupVector(NULL, table, "POSANG_EXT");
     235    }
    200236
    201237    double plateScale = 0.0;        // Plate scale
    202238    long numGood = 0;               // Number of good rows
    203239    for (long row = 0; row < size; row++) {
    204 
    205240      psU32 flags = flagsV->data.U32[row]; // psFitsTableGetU32(NULL, table, row, "FLAGS");
    206241      if (flags & SOURCE_MASK) {
     
    242277      plateScale += scale;
    243278      numGood++;
     279
     280      // Same for EXT data if version permits
     281      if (skyChipPsfVersion >= 3) {
     282        xErr = xExtErrV->data.F32[row];
     283        yErr = yExtErrV->data.F32[row];
     284        scale = scaleExtV->data.F32[row]/3600.;
     285        angle = angleExtV->data.F32[row];
     286
     287        cosAngle = cos(angle);
     288        sinAngle = sin(angle);
     289        cosAngle2 = PS_SQR(cosAngle);
     290        sinAngle2 = PS_SQR(sinAngle);
     291        xErr2 = PS_SQR(xErr);
     292        yErr2 = PS_SQR(yErr);
     293        errScale = scale / 3600.0;
     294        det->raExtErr->data.F64[row] = errScale * sqrt(cosAngle2 * xErr2 + sinAngle2 * yErr2);
     295        det->decExtErr->data.F64[row] = errScale * sqrt(sinAngle2 * xErr2 + cosAngle2 * yErr2);
     296      }
    244297    }
    245298    det->numGood = numGood;
     
    259312static psVector* createDummyF32(long size) {
    260313  psVector* dummy = psVectorAlloc(size, PS_TYPE_F32);
     314  psVectorInit(dummy, NAN);
     315  return dummy;
     316}
     317static psVector* createDummyS32(long size) {
     318  psVector* dummy = psVectorAlloc(size, PS_TYPE_S32);
    261319  psVectorInit(dummy, NAN);
    262320  return dummy;
     
    280338    psTrace("ppMops.read", 10, "Adding columns for version PS1_DV%d\n", version);
    281339    psMetadataAdd(md, PS_LIST_TAIL, "RA_EXT",  PS_DATA_VECTOR, "Fitted centroid RA", createDummyF32(size));
    282     psMetadataAdd(md, PS_LIST_TAIL, "RA_EXT_SIGMA",  PS_DATA_VECTOR, "Fitted RA sigma", createDummyF32(size));
     340/*     psMetadataAdd(md, PS_LIST_TAIL, "RA_EXT_SIGMA",  PS_DATA_VECTOR, "Fitted RA sigma", createDummyF32(size)); *\/ */
    283341    psMetadataAdd(md, PS_LIST_TAIL, "DEC_EXT",  PS_DATA_VECTOR, "Fitted centroid DEC", createDummyF32(size));
    284     psMetadataAdd(md, PS_LIST_TAIL, "DEC_EXT_SIGMA",  PS_DATA_VECTOR, "Fitted DEC sigma", createDummyF32(size));
     342/*     psMetadataAdd(md, PS_LIST_TAIL, "DEC_EXT_SIGMA",  PS_DATA_VECTOR, "Fitted DEC sigma", createDummyF32(size)); *\/ */
    285343    psMetadataAdd(md, PS_LIST_TAIL, "POSANG_EXT",  PS_DATA_VECTOR, "Fitted position angle", createDummyF32(size));
    286344    psMetadataAdd(md, PS_LIST_TAIL, "PLTSCALE_EXT",  PS_DATA_VECTOR, "Plate scale at centroid", createDummyF32(size));
     
    289347    psMetadataAdd(md, PS_LIST_TAIL, "EXT_MAG_SIG",  PS_DATA_VECTOR, "Mag sigma", createDummyF32(size));
    290348    psMetadataAdd(md, PS_LIST_TAIL, "EXT_CHISQ",  PS_DATA_VECTOR, "Chi^2 of fit", createDummyF32(size));
    291     psMetadataAdd(md, PS_LIST_TAIL, "EXT_NDOF",  PS_DATA_VECTOR, "Fit degrees of freedom", createDummyF32(size));
     349    psMetadataAdd(md, PS_LIST_TAIL, "EXT_NDOF",  PS_DATA_VECTOR, "Fit degrees of freedom", createDummyS32(size));
    292350  }
    293351}
    294352
    295353static void replaceDummyValuesF32(const char* colName, psMetadata* source, psMetadata* target, psVector* indexes) {
     354  psTrace("ppMops.read", 10, "Trying to get column %s\n", colName);
    296355  psVector* source_vector = psMetadataLookupVector(NULL, source, colName);
    297356  psVector* target_vector = psMetadataLookupVector(NULL, target, colName);
     
    299358    target_vector->data.F32[indexes->data.S64[index]] = source_vector->data.F32[index];
    300359  }
    301 }
     360  psTrace("ppMops.read", 10, "OK for %s\n", colName);
     361}
     362
     363static void replaceDummyValuesS32(const char* colName, psMetadata* source, psMetadata* target, psVector* indexes) {
     364  psTrace("ppMops.read", 10, "Trying to get column %s\n", colName);
     365  psVector* source_vector = psMetadataLookupVector(NULL, source, colName);
     366  psVector* target_vector = psMetadataLookupVector(NULL, target, colName);
     367  for (long index = 0; index<indexes->n; ++index) {
     368    target_vector->data.S32[indexes->data.S64[index]] = source_vector->data.S32[index];
     369  }
     370  psTrace("ppMops.read", 10, "OK for %s\n", colName);
     371}
     372
     373static void renameDummyValuesF32(const char* colNameSource, psMetadata* source, const char* colNameTarget, psMetadata* target, psVector* indexes) {
     374  psTrace("ppMops.read", 10, "Trying to rename column %s to %s\n", colNameSource, colNameTarget);
     375  psVector* source_vector = psMetadataLookupVector(NULL, source, colNameSource);
     376  psVector* target_vector = psMetadataLookupVector(NULL, target, colNameTarget);
     377  for (long index = 0; index<indexes->n; ++index) {
     378    target_vector->data.F32[indexes->data.S64[index]] = source_vector->data.F32[index];
     379  }
     380  psTrace("ppMops.read", 10, "OK for %s (renamed by %s)\n", colNameSource, colNameTarget);
     381}
Note: See TracChangeset for help on using the changeset viewer.