IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 28027


Ignore:
Timestamp:
May 19, 2010, 1:46:54 PM (16 years ago)
Author:
Paul Price
Message:
  • ANGLE, ANGLE_ERR, LENGTH, LENGTH_ERR have been removed completely. We

expect MOPS will calculate the relevant quantities from the moments.

  • Added PSF_CHI2, PSF_DOF, CR_SIGNIFICANCE, PSF_MAJOR, PSF_MINOR,

PSF_THETA, PSF_QUALITY, PSF_NPIX, MOMENTS_XX, MOMENTS_XY, MOMENTS_YY for
more complete data on each detection

  • Added N_POS, F_POS, RATIO_BAD, RATIO_MASK, RATIO_ALL for better

weeding out of bad subtractions

  • STARPSF renamed EXT_SIGNIFICANCE to be more clear
Location:
trunk/ppTranslate/src
Files:
4 edited

Legend:

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

    r25923 r28027  
    2727} ppMopsArguments;
    2828
     29#if 0
     30TTYPE19 = 'PSF_CHISQ'          / label for field  19
     31TFORM19 = '1E      '           / data format of field: 4-byte REAL
     32TTYPE20 = 'CR_NSIGMA'          / label for field  20
     33TFORM20 = '1E      '           / data format of field: 4-byte REAL
     34TTYPE21 = 'EXT_NSIGMA'         / label for field  21
     35TFORM21 = '1E      '           / data format of field: 4-byte REAL
     36TTYPE22 = 'PSF_MAJOR'          / label for field  22
     37TFORM22 = '1E      '           / data format of field: 4-byte REAL
     38TTYPE23 = 'PSF_MINOR'          / label for field  23
     39TFORM23 = '1E      '           / data format of field: 4-byte REAL
     40TTYPE24 = 'PSF_THETA'          / label for field  24
     41TFORM24 = '1E      '           / data format of field: 4-byte REAL
     42TTYPE25 = 'PSF_QF  '           / label for field  25
     43TFORM25 = '1E      '           / data format of field: 4-byte REAL
     44TTYPE26 = 'PSF_NDOF'           / label for field  26
     45TFORM26 = '1J      '           / data format of field: 4-byte INTEGER
     46TTYPE27 = 'PSF_NPIX'           / label for field  27
     47TFORM27 = '1J      '           / data format of field: 4-byte INTEGER
     48TTYPE28 = 'MOMENTS_XX'         / label for field  28
     49TFORM28 = '1E      '           / data format of field: 4-byte REAL
     50TTYPE29 = 'MOMENTS_XY'         / label for field  29
     51TFORM29 = '1E      '           / data format of field: 4-byte REAL
     52TTYPE30 = 'MOMENTS_YY'         / label for field  30
     53TFORM30 = '1E      '           / data format of field: 4-byte REAL
     54#endif
     55
    2956/// Parse arguments
    3057ppMopsArguments *ppMopsArgumentsParse(int argc, char *argv[]);
     
    4471    psVector *raErr, *decErr;           // Error in sky coordinates
    4572    psVector *mag, *magErr;             // Magnitude and associated error
    46     psVector *extended;                 // Measure of extendedness
    47     psVector *angle, *angleErr;         // Angle of trail and associated error
    48     psVector *length, *lengthErr;       // Length of trail and associated error
     73    psVector *chi2, *dof;               // Chi^2 from fitting, with associated degrees of freedom
     74    psVector *cr, *extended;            // Measures of CR-ness and extendedness
     75    psVector *psfMajor, *psfMinor, *psfTheta; // PSF major and minor axes, and position angle
     76    psVector *quality, *numPix;               // PSF quality factor and number of pixels
     77    psVector *xxMoment, *xyMoment, *yyMoment; // Moments
    4978    psVector *flags;                    // psphot flags
    5079    psVector *diffSkyfileId;            // Identifier for source image
    5180    psVector *naxis1, *naxis2;          // Size of image
    5281    psVector *mask;                     // Mask for detections
     82    psVector *nPos;                     // Number of positive pixels
     83    psVector *fPos;                     // Fraction of positive flux
     84    psVector *nRatioBad;                // Fraction of positive pixels to negative
     85    psVector *nRatioMask;               // Fraction of positive pixels to masked
     86    psVector *nRatioAll;                // Fraction of positive pixels to all
    5387} ppMopsDetections;
     88
    5489
    5590ppMopsDetections *ppMopsDetectionsAlloc(long num);
  • trunk/ppTranslate/src/ppMopsDetections.c

    r25256 r28027  
    2121    psFree(det->mag);
    2222    psFree(det->magErr);
     23    psFree(det->chi2);
     24    psFree(det->dof);
     25    psFree(det->cr);
    2326    psFree(det->extended);
    24     psFree(det->angle);
    25     psFree(det->angleErr);
    26     psFree(det->length);
    27     psFree(det->lengthErr);
     27    psFree(det->psfMajor);
     28    psFree(det->psfMinor);
     29    psFree(det->psfTheta);
     30    psFree(det->quality);
     31    psFree(det->numPix);
     32    psFree(det->xxMoment);
     33    psFree(det->xyMoment);
     34    psFree(det->yyMoment);
    2835    psFree(det->flags);
    2936    psFree(det->diffSkyfileId);
     
    3138    psFree(det->naxis2);
    3239    psFree(det->mask);
     40    psFree(det->nPos);
     41    psFree(det->fPos);
     42    psFree(det->nRatioBad);
     43    psFree(det->nRatioMask);
     44    psFree(det->nRatioAll);
     45
    3346    return;
    3447}
     
    5871    det->mag = psVectorAllocEmpty(num, PS_TYPE_F32);
    5972    det->magErr = psVectorAllocEmpty(num, PS_TYPE_F32);
     73    det->chi2 = psVectorAllocEmpty(num, PS_TYPE_F32);
     74    det->dof = psVectorAllocEmpty(num, PS_TYPE_S32);
     75    det->cr = psVectorAllocEmpty(num, PS_TYPE_F32);
    6076    det->extended = psVectorAllocEmpty(num, PS_TYPE_F32);
    61     det->angle = psVectorAllocEmpty(num, PS_TYPE_F32);
    62     det->angleErr = psVectorAllocEmpty(num, PS_TYPE_F32);
    63     det->length = psVectorAllocEmpty(num, PS_TYPE_F32);
    64     det->lengthErr = psVectorAllocEmpty(num, PS_TYPE_F32);
     77    det->psfMajor = psVectorAllocEmpty(num, PS_TYPE_F32);
     78    det->psfMinor = psVectorAllocEmpty(num, PS_TYPE_F32);
     79    det->psfTheta = psVectorAllocEmpty(num, PS_TYPE_F32);
     80    det->quality = psVectorAllocEmpty(num, PS_TYPE_F32);
     81    det->numPix = psVectorAllocEmpty(num, PS_TYPE_S32);
     82    det->xxMoment = psVectorAllocEmpty(num, PS_TYPE_F32);
     83    det->xyMoment = psVectorAllocEmpty(num, PS_TYPE_F32);
     84    det->yyMoment = psVectorAllocEmpty(num, PS_TYPE_F32);
    6585    det->flags = psVectorAllocEmpty(num, PS_TYPE_U32);
    6686    det->diffSkyfileId = psVectorAllocEmpty(num, PS_TYPE_S64);
     
    6888    det->naxis2 = psVectorAllocEmpty(num, PS_TYPE_S32);
    6989    det->mask = psVectorAllocEmpty(num, PS_TYPE_U8);
     90    det->nPos = psVectorAllocEmpty(num, PS_TYPE_S32);
     91    det->fPos = psVectorAllocEmpty(num, PS_TYPE_F32);
     92    det->nRatioBad = psVectorAllocEmpty(num, PS_TYPE_F32);
     93    det->nRatioMask = psVectorAllocEmpty(num, PS_TYPE_F32);
     94    det->nRatioAll = psVectorAllocEmpty(num, PS_TYPE_F32);
    7095
    7196    return det;
     
    83108    det->mag = psVectorRealloc(det->mag, num);
    84109    det->magErr = psVectorRealloc(det->magErr, num);
     110    det->chi2 = psVectorRealloc(det->chi2, num);
     111    det->dof = psVectorRealloc(det->dof, num);
     112    det->cr = psVectorRealloc(det->cr, num);
    85113    det->extended = psVectorRealloc(det->extended, num);
    86     det->angle = psVectorRealloc(det->angle, num);
    87     det->angleErr = psVectorRealloc(det->angleErr, num);
    88     det->length = psVectorRealloc(det->length, num);
    89     det->lengthErr = psVectorRealloc(det->lengthErr, num);
     114    det->psfMajor = psVectorRealloc(det->psfMajor, num);
     115    det->psfMinor = psVectorRealloc(det->psfMinor, num);
     116    det->psfTheta = psVectorRealloc(det->psfTheta, num);
     117    det->quality = psVectorRealloc(det->quality, num);
     118    det->numPix = psVectorRealloc(det->numPix, num);
     119    det->xxMoment = psVectorRealloc(det->xxMoment, num);
     120    det->xyMoment = psVectorRealloc(det->xyMoment, num);
     121    det->yyMoment = psVectorRealloc(det->yyMoment, num);
    90122    det->flags = psVectorRealloc(det->flags, num);
    91123    det->diffSkyfileId = psVectorRealloc(det->diffSkyfileId, num);
     
    93125    det->naxis2 = psVectorRealloc(det->naxis2, num);
    94126    det->mask = psVectorRealloc(det->mask, num);
     127    det->nPos = psVectorRealloc(det->nPos, num);
     128    det->fPos = psVectorRealloc(det->fPos, num);
     129    det->nRatioBad = psVectorRealloc(det->nRatioBad, num);
     130    det->nRatioMask = psVectorRealloc(det->nRatioMask, num);
     131    det->nRatioAll = psVectorRealloc(det->nRatioAll, num);
    95132
    96133    return det;
     
    99136
    100137bool ppMopsDetectionsAdd(ppMopsDetections *det, float x, float y, double ra, double dec,
    101                          double raErr, double decErr, float mag, float magErr, float extended,
    102                          float angle, float angleErr, float length, float lengthErr,
    103                          psU32 flags, psS64 diffSkyfileId, int naxis1, int naxis2)
     138                         double raErr, double decErr, float mag, float magErr,
     139                         float chi2, int dof, float cr, float extended, float psfMajor,
     140                         float psfMinor, float psfTheta, float quality, int numPix,
     141                         float xxMoment, float xyMoment, float yyMoment,
     142                         psU32 flags, psS64 diffSkyfileId, int naxis1, int naxis2,
     143                         int nPos, float fPos, float nRatioBad, float nRatioMask, float nRatioAll)
    104144{
    105145    psVectorAppend(det->x, x);
     
    111151    psVectorAppend(det->mag, mag);
    112152    psVectorAppend(det->magErr, magErr);
     153    psVectorAppend(det->chi2, chi2);
     154    psVectorAppend(det->dof, dof);
     155    psVectorAppend(det->cr, cr);
    113156    psVectorAppend(det->extended, extended);
    114     psVectorAppend(det->angle, angle);
    115     psVectorAppend(det->angleErr, angleErr);
    116     psVectorAppend(det->length, length);
    117     psVectorAppend(det->lengthErr, lengthErr);
     157    psVectorAppend(det->psfMajor, psfMajor);
     158    psVectorAppend(det->psfMinor, psfMinor);
     159    psVectorAppend(det->psfTheta, psfTheta);
     160    psVectorAppend(det->quality, quality);
     161    psVectorAppend(det->numPix, numPix);
     162    psVectorAppend(det->xxMoment, xxMoment);
     163    psVectorAppend(det->xyMoment, xyMoment);
     164    psVectorAppend(det->yyMoment, yyMoment);
    118165    psVectorAppend(det->flags, flags);
    119166    psVectorAppend(det->diffSkyfileId, diffSkyfileId);
     
    121168    psVectorAppend(det->naxis2, naxis2);
    122169    psVectorAppend(det->mask, 0);
     170    psVectorAppend(det->nPos, nPos);
     171    psVectorAppend(det->fPos, fPos);
     172    psVectorAppend(det->nRatioBad, nRatioBad);
     173    psVectorAppend(det->nRatioMask, nRatioMask);
     174    psVectorAppend(det->nRatioAll, nRatioAll);
     175
    123176    return true;
    124177}
     
    135188    psVectorAppend(target->mag, source->mag->data.F32[index]);
    136189    psVectorAppend(target->magErr, source->magErr->data.F32[index]);
     190    psVectorAppend(target->chi2, source->chi2->data.F32[index]);
     191    psVectorAppend(target->dof, source->dof->data.S32[index]);
     192    psVectorAppend(target->cr, source->cr->data.F32[index]);
    137193    psVectorAppend(target->extended, source->extended->data.F32[index]);
    138     psVectorAppend(target->angle, source->angle->data.F32[index]);
    139     psVectorAppend(target->angleErr, source->angleErr->data.F32[index]);
    140     psVectorAppend(target->length, source->length->data.F32[index]);
    141     psVectorAppend(target->lengthErr, source->lengthErr->data.F32[index]);
     194    psVectorAppend(target->psfMajor, source->psfMajor->data.F32[index]);
     195    psVectorAppend(target->psfMinor, source->psfMinor->data.F32[index]);
     196    psVectorAppend(target->psfTheta, source->psfTheta->data.F32[index]);
     197    psVectorAppend(target->quality, source->quality->data.F32[index]);
     198    psVectorAppend(target->numPix, source->numPix->data.S32[index]);
     199    psVectorAppend(target->xxMoment, source->xxMoment->data.F32[index]);
     200    psVectorAppend(target->xyMoment, source->xyMoment->data.F32[index]);
     201    psVectorAppend(target->yyMoment, source->yyMoment->data.F32[index]);
    142202    psVectorAppend(target->flags, source->flags->data.U32[index]);
    143203    psVectorAppend(target->diffSkyfileId, source->diffSkyfileId->data.S64[index]);
     
    145205    psVectorAppend(target->naxis2, source->naxis2->data.S32[index]);
    146206    psVectorAppend(target->mask, 0);
     207    psVectorAppend(target->nPos, source->nPos->data.S32[index]);
     208    psVectorAppend(target->fPos, source->fPos->data.F32[index]);
     209    psVectorAppend(target->nRatioBad, source->nRatioBad->data.F32[index]);
     210    psVectorAppend(target->nRatioMask, source->nRatioMask->data.F32[index]);
     211    psVectorAppend(target->nRatioAll, source->nRatioAll->data.F32[index]);
     212
    147213    target->num++;
     214
    148215    return true;
    149216}
     
    168235            det->mag->data.F32[num] = det->mag->data.F32[i];
    169236            det->magErr->data.F32[num] = det->magErr->data.F32[i];
     237            det->chi2->data.F32[num] = det->chi2->data.F32[i];
     238            det->dof->data.S32[num] = det->dof->data.S32[i];
     239            det->cr->data.F32[num] = det->cr->data.F32[i];
    170240            det->extended->data.F32[num] = det->extended->data.F32[i];
    171             det->angle->data.F32[num] = det->angle->data.F32[i];
    172             det->angleErr->data.F32[num] = det->angleErr->data.F32[i];
    173             det->length->data.F32[num] = det->length->data.F32[i];
    174             det->lengthErr->data.F32[num] = det->lengthErr->data.F32[i];
     241            det->psfMajor->data.F32[num] = det->psfMajor->data.F32[i];
     242            det->psfMinor->data.F32[num] = det->psfMinor->data.F32[i];
     243            det->psfTheta->data.F32[num] = det->psfTheta->data.F32[i];
     244            det->quality->data.F32[num] = det->quality->data.F32[i];
     245            det->numPix->data.S32[num] = det->numPix->data.S32[i];
     246            det->xxMoment->data.F32[num] = det->xxMoment->data.F32[i];
     247            det->xyMoment->data.F32[num] = det->xyMoment->data.F32[i];
     248            det->yyMoment->data.F32[num] = det->yyMoment->data.F32[i];
    175249            det->flags->data.U32[num] = det->flags->data.U32[i];
    176250            det->diffSkyfileId->data.S64[num] = det->diffSkyfileId->data.S64[i];
     
    178252            det->naxis2->data.S32[num] = det->naxis2->data.S32[i];
    179253            det->mask->data.U8[num] = 0;
     254            det->nPos->data.S32[num] = det->nPos->data.S32[i];
     255            det->fPos->data.F32[num] = det->fPos->data.F32[i];
     256            det->nRatioBad->data.F32[num] = det->nRatioBad->data.F32[i];
     257            det->nRatioMask->data.F32[num] = det->nRatioMask->data.F32[i];
     258            det->nRatioAll->data.F32[num] = det->nRatioAll->data.F32[i];
    180259            num++;
    181260        }
     
    189268    det->mag->n = num;
    190269    det->magErr->n = num;
     270    det->chi2->n = num;
     271    det->dof->n = num;
     272    det->cr->n = num;
    191273    det->extended->n = num;
    192     det->angle->n = num;
    193     det->angleErr->n = num;
    194     det->length->n = num;
    195     det->lengthErr->n = num;
     274    det->psfMajor->n = num;
     275    det->psfMinor->n = num;
     276    det->psfTheta->n = num;
     277    det->quality->n = num;
     278    det->numPix->n = num;
     279    det->xxMoment->n = num;
     280    det->xyMoment->n = num;
     281    det->yyMoment->n = num;
    196282    det->flags->n = num;
    197283    det->diffSkyfileId->n = num;
     
    200286    det->mask->n = num;
    201287    det->num = num;
     288    det->nPos->n = num;
     289    det->fPos->n = num;
     290    det->nRatioBad->n = num;
     291    det->nRatioMask->n = num;
     292    det->nRatioAll->n = num;
     293
    202294    return true;
    203295}
  • trunk/ppTranslate/src/ppMopsRead.c

    r26561 r28027  
    9393            det->mag->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_INST_MAG");
    9494            det->magErr->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_INST_MAG_SIG");
     95            det->chi2->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_CHISQ");
     96            det->dof->data.S32[numGood] = psMetadataLookupS32(NULL, row, "PSF_NDOF");
     97            det->cr->data.F32[numGood] = psMetadataLookupF32(NULL, row, "CR_NSIGMA");
    9598            det->extended->data.F32[numGood] = psMetadataLookupF32(NULL, row, "EXT_NSIGMA");
    96             det->angle->data.F32[numGood] = 0.0;
    97             det->angleErr->data.F32[numGood] = 0.0;
    98             det->length->data.F32[numGood] = 0.0;
    99             det->lengthErr->data.F32[numGood] = 0.0;
     99            det->psfMajor->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_MAJOR");
     100            det->psfMinor->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_MINOR");
     101            det->psfTheta->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_THETA");
     102            det->quality->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_QF");
     103            det->numPix->data.S32[numGood] = psMetadataLookupS32(NULL, row, "PSF_NPIX");
     104            det->xxMoment->data.F32[numGood] = psMetadataLookupF32(NULL, row, "MOMENTS_XX");
     105            det->xyMoment->data.F32[numGood] = psMetadataLookupF32(NULL, row, "MOMENTS_XY");
     106            det->yyMoment->data.F32[numGood] = psMetadataLookupF32(NULL, row, "MOMENTS_YY");
    100107            det->flags->data.U32[numGood] = psMetadataLookupU32(NULL, row, "FLAGS");
    101108            det->diffSkyfileId->data.S64[numGood] = diffSkyfileId;
    102109            det->naxis1->data.S32[numGood] = naxis1;
    103110            det->naxis2->data.S32[numGood] = naxis2;
     111
     112            det->nPos->data.S32[numGood] = psMetadataLookupS32(NULL, row, "DIFF_NPOS");
     113            det->fPos->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_FRATIO");
     114            det->nRatioBad->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_NRATIO_BAD");
     115            det->nRatioMask->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_NRATIO_MASK");
     116            det->nRatioAll->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_NRATIO_ALL");
    104117
    105118            // Calculate error in RA, Dec
     
    146159        det->mag->n = numGood;
    147160        det->magErr->n = numGood;
     161        det->chi2->n = numGood;
     162        det->dof->n = numGood;
     163        det->cr->n = numGood;
    148164        det->extended->n = numGood;
    149         det->angle->n = numGood;
    150         det->angleErr->n = numGood;
    151         det->length->n = numGood;
    152         det->lengthErr->n = numGood;
     165        det->psfMajor->n = numGood;
     166        det->psfMinor->n = numGood;
     167        det->psfTheta->n = numGood;
     168        det->quality->n = numGood;
     169        det->numPix->n = numGood;
     170        det->xxMoment->n = numGood;
     171        det->xyMoment->n = numGood;
     172        det->yyMoment->n = numGood;
    153173        det->flags->n = numGood;
    154174        det->diffSkyfileId->n = numGood;
     
    156176        det->naxis2->n = numGood;
    157177        det->mask->n = numGood;
     178        det->nPos->n = numGood;
     179        det->fPos->n = numGood;
     180        det->nRatioBad->n = numGood;
     181        det->nRatioMask->n = numGood;
     182        det->nRatioAll->n = numGood;
    158183
    159184        det->num = numGood;
  • trunk/ppTranslate/src/ppMopsWrite.c

    r25923 r28027  
    6161        psMetadataAddF32(row, PS_LIST_TAIL, "MAG", 0, "Magnitude", NAN);
    6262        psMetadataAddF32(row, PS_LIST_TAIL, "MAG_ERR", 0, "Magnitude error", NAN);
    63         psMetadataAddF32(row, PS_LIST_TAIL, "STARPSF", 0, "EXT_NSIGMA", NAN);
    64         psMetadataAddF32(row, PS_LIST_TAIL, "ANGLE", 0, "Position angle of trail (degrees)", NAN);
    65         psMetadataAddF32(row, PS_LIST_TAIL, "ANGLE_ERR", 0, "Position angle error (degrees)", NAN);
    66         psMetadataAddF32(row, PS_LIST_TAIL, "LENGTH", 0, "Length of trail (arcsec)", NAN);
    67         psMetadataAddF32(row, PS_LIST_TAIL, "LENGTH_ERR", 0, "Length error (arcsec)", NAN);
     63        psMetadataAddF32(row, PS_LIST_TAIL, "PSF_CHI2", 0, "chi^2 of PSF fit", NAN);
     64        psMetadataAddS32(row, PS_LIST_TAIL, "PSF_DOF", 0, "Degrees of freedom of PSF fit", 0);
     65        psMetadataAddF32(row, PS_LIST_TAIL, "CR_SIGNIFICANCE", 0, "Significance of CR", NAN);
     66        psMetadataAddF32(row, PS_LIST_TAIL, "EXT_SIGNIFICANCE", 0, "Significance of extendedness", NAN);
     67        psMetadataAddF32(row, PS_LIST_TAIL, "PSF_MAJOR", 0, "PSF major axis (pixels)", NAN);
     68        psMetadataAddF32(row, PS_LIST_TAIL, "PSF_MINOR", 0, "PSF minor axis (pixels)", NAN);
     69        psMetadataAddF32(row, PS_LIST_TAIL, "PSF_THETA", 0, "PSF position angle (deg on chip)", NAN);
     70        psMetadataAddF32(row, PS_LIST_TAIL, "PSF_QUALITY", 0, "PSF quality factor", NAN);
     71        psMetadataAddS32(row, PS_LIST_TAIL, "PSF_NPIX", 0, "Number of pixels in PSF", 0);
     72        psMetadataAddF32(row, PS_LIST_TAIL, "MOMENTS_XX", 0, "xx moment", NAN);
     73        psMetadataAddF32(row, PS_LIST_TAIL, "MOMENTS_XY", 0, "xy moment", NAN);
     74        psMetadataAddF32(row, PS_LIST_TAIL, "MOMENTS_YY", 0, "yy moment", NAN);
    6875        psMetadataAddU32(row, PS_LIST_TAIL, "FLAGS", 0, "Detection bit flags", 0);
    6976        psMetadataAddS64(row, PS_LIST_TAIL, "DIFF_SKYFILE_ID", 0, "Identifier for diff skyfile", 0);
     77
     78        psMetadataAddS32(row, PS_LIST_TAIL, "N_POS", 0, "Number of positive pixels", 0);
     79        psMetadataAddF32(row, PS_LIST_TAIL, "F_POS", 0, "Fraction of positive pixels", NAN);
     80        psMetadataAddF32(row, PS_LIST_TAIL, "RATIO_BAD", 0, "Ratio of positive pixels to negative", NAN);
     81        psMetadataAddF32(row, PS_LIST_TAIL, "RATIO_MASK", 0, "Ratio of positive pixels to masked", NAN);
     82        psMetadataAddF32(row, PS_LIST_TAIL, "RATIO_ALL", 0, "Ratio of positive pixels to all", NAN);
    7083        if (!psFitsWriteTableEmpty(fits, header, row, OUT_EXTNAME)) {
    7184            psErrorStackPrint(stderr, "Unable to write empty table.");
     
    89102            psMetadataAddF32(row, PS_LIST_TAIL, "MAG", 0, "Magnitude", det->mag->data.F32[i]);
    90103            psMetadataAddF32(row, PS_LIST_TAIL, "MAG_ERR", 0, "Magnitude error", det->magErr->data.F32[i]);
    91             psMetadataAddF32(row, PS_LIST_TAIL, "STARPSF", 0, "EXT_NSIGMA", det->extended->data.F32[i]);
    92             psMetadataAddF32(row, PS_LIST_TAIL, "ANGLE", 0, "Position angle of trail (degrees)",
    93                              det->angle->data.F32[i]);
    94             psMetadataAddF32(row, PS_LIST_TAIL, "ANGLE_ERR", 0, "Position angle error (degrees)",
    95                              det->angleErr->data.F32[i]);
    96             psMetadataAddF32(row, PS_LIST_TAIL, "LENGTH", 0, "Length of trail (arcsec)",
    97                              det->length->data.F32[i]);
    98             psMetadataAddF32(row, PS_LIST_TAIL, "LENGTH_ERR", 0, "Length error (arcsec)",
    99                              det->lengthErr->data.F32[i]);
     104            psMetadataAddF32(row, PS_LIST_TAIL, "PSF_CHI2", 0, "chi^2 of PSF fit", det->chi2->data.F32[i]);
     105            psMetadataAddS32(row, PS_LIST_TAIL, "PSF_DOF", 0, "Degrees of freedom of PSF fit",
     106                             det->dof->data.S32[i]);
     107            psMetadataAddF32(row, PS_LIST_TAIL, "CR_SIGNIFICANCE", 0, "Significance of CR",
     108                             det->cr->data.F32[i]);
     109            psMetadataAddF32(row, PS_LIST_TAIL, "EXT_SIGNIFICANCE", 0, "Significance of extendedness",
     110                             det->extended->data.F32[i]);
     111            psMetadataAddF32(row, PS_LIST_TAIL, "PSF_MAJOR", 0, "PSF major axis (pixels)", det->psfMajor->data.F32[i]);
     112            psMetadataAddF32(row, PS_LIST_TAIL, "PSF_MINOR", 0, "PSF minor axis (pixels)", det->psfMinor->data.F32[i]);
     113            psMetadataAddF32(row, PS_LIST_TAIL, "PSF_THETA", 0, "PSF position angle (deg on chip)",
     114                             det->psfTheta->data.F32[i]);
     115            psMetadataAddF32(row, PS_LIST_TAIL, "PSF_QUALITY", 0, "PSF quality factor",
     116                             det->quality->data.F32[i]);
     117            psMetadataAddS32(row, PS_LIST_TAIL, "PSF_NPIX", 0, "Number of pixels in PSF",
     118                             det->numPix->data.S32[i]);
     119            psMetadataAddF32(row, PS_LIST_TAIL, "MOMENTS_XX", 0, "xx moment", det->xxMoment->data.F32[i]);
     120            psMetadataAddF32(row, PS_LIST_TAIL, "MOMENTS_XY", 0, "xy moment", det->xyMoment->data.F32[i]);
     121            psMetadataAddF32(row, PS_LIST_TAIL, "MOMENTS_YY", 0, "yy moment", det->yyMoment->data.F32[i]);
     122            psMetadataAddS32(row, PS_LIST_TAIL, "N_POS", 0, "Number of positive pixels",
     123                             det->nPos->data.S32[i]);
     124            psMetadataAddF32(row, PS_LIST_TAIL, "F_POS", 0, "Fraction of positive pixels",
     125                             det->fPos->data.F32[i]);
     126            psMetadataAddF32(row, PS_LIST_TAIL, "RATIO_BAD", 0, "Ratio of positive pixels to negative",
     127                             det->nRatioBad->data.F32[i]);
     128            psMetadataAddF32(row, PS_LIST_TAIL, "RATIO_MASK", 0, "Ratio of positive pixels to masked",
     129                             det->nRatioMask->data.F32[i]);
     130            psMetadataAddF32(row, PS_LIST_TAIL, "RATIO_ALL", 0, "Ratio of positive pixels to all",
     131                             det->nRatioAll->data.F32[i]);
    100132            psMetadataAddU32(row, PS_LIST_TAIL, "FLAGS", 0, "Detection bit flags", det->flags->data.U32[i]);
    101133            psMetadataAddS64(row, PS_LIST_TAIL, "DIFF_SKYFILE_ID", 0, "Identifier for diff skyfile",
    102134                             det->diffSkyfileId->data.S64[i]);
     135
    103136            table->data[i] = row;
    104137        }
Note: See TracChangeset for help on using the changeset viewer.