IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Sep 15, 2011, 4:50:36 PM (15 years ago)
Author:
bills
Message:

Modify ppMops to use psFitsReadTableAllColumns and psFitsWriteTableAllColumns. These
functions store the columns in psVectors. This avoids the memory explosion that
results by storing the table as an array of metadatas representing rows.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppTranslate/src/ppMopsDetections.c

    r30660 r32406  
    88static void mopsDetectionsFree(ppMopsDetections *det)
    99{
     10    psFree(det->component);
    1011    psFree(det->raBoresight);
    1112    psFree(det->decBoresight);
    1213    psFree(det->filter);
     14    psFree(det->table);
    1315    psFree(det->x);
    1416    psFree(det->y);
     
    1719    psFree(det->raErr);
    1820    psFree(det->decErr);
    19     psFree(det->mag);
    20     psFree(det->magErr);
    21     psFree(det->chi2);
    22     psFree(det->dof);
    23     psFree(det->cr);
    24     psFree(det->extended);
    25     psFree(det->psfMajor);
    26     psFree(det->psfMinor);
    27     psFree(det->psfTheta);
    28     psFree(det->quality);
    29     psFree(det->numPix);
    30     psFree(det->xxMoment);
    31     psFree(det->xyMoment);
    32     psFree(det->yyMoment);
    33     psFree(det->flags);
    34     psFree(det->diffSkyfileId);
    35     psFree(det->naxis1);
    36     psFree(det->naxis2);
    3721    psFree(det->mask);
    38     psFree(det->nPos);
    39     psFree(det->fPos);
    40     psFree(det->nRatioBad);
    41     psFree(det->nRatioMask);
    42     psFree(det->nRatioAll);
    43     psFree(det->psfInstFlux);
    44     psFree(det->psfInstFluxSig);
    45     psFree(det->apMag);
    46     psFree(det->apMagRadius);
    47     psFree(det->apMagRaw);
    48     psFree(det->apFlux);
    49     psFree(det->apFluxSig);
    50     psFree(det->peakFluxAsMag);
    51     psFree(det->calPsfMag);
    52     psFree(det->calPsfMagSig);
    53     psFree(det->sky);
    54     psFree(det->skySig);
    55     psFree(det->qualityPerfect);
    56     psFree(det->momentsR1);
    57     psFree(det->momentsRH);
    58     psFree(det->kronFlux);
    59     psFree(det->kronFluxErr);
    60     psFree(det->kronFluxInner);
    61     psFree(det->kronFluxOuter);
    62     psFree(det->diffRP);
    63     psFree(det->diffSnP);
    64     psFree(det->diffRM);
    65     psFree(det->diffSnM);
    66     psFree(det->flags2);
    67     psFree(det->ippIdet);
    68     psFree(det->nFrames);
    69     psFree(det->padding);
    7022    return;
    7123}
    7224
    73 ppMopsDetections *ppMopsDetectionsAlloc(long num)
     25ppMopsDetections *ppMopsDetectionsAlloc()
    7426{
    7527    ppMopsDetections *det = psAlloc(sizeof(ppMopsDetections)); // Detections, to return
    7628    psMemSetDeallocator(det, (psFreeFunc)mopsDetectionsFree);
     29    det->component = NULL;
    7730    det->raBoresight = NULL;
    7831    det->decBoresight = NULL;
     
    8639    det->seeing = NAN;
    8740    det->num = 0;
    88     det->x = psVectorAllocEmpty(num, PS_TYPE_F32);
    89     det->y = psVectorAllocEmpty(num, PS_TYPE_F32);
    90     det->ra = psVectorAllocEmpty(num, PS_TYPE_F64);
    91     det->dec = psVectorAllocEmpty(num, PS_TYPE_F64);
    92     det->raErr = psVectorAllocEmpty(num, PS_TYPE_F64);
    93     det->decErr = psVectorAllocEmpty(num, PS_TYPE_F64);
    94     det->mag = psVectorAllocEmpty(num, PS_TYPE_F32);
    95     det->magErr = psVectorAllocEmpty(num, PS_TYPE_F32);
    96     det->chi2 = psVectorAllocEmpty(num, PS_TYPE_F32);
    97     det->dof = psVectorAllocEmpty(num, PS_TYPE_S32);
    98     det->cr = psVectorAllocEmpty(num, PS_TYPE_F32);
    99     det->extended = psVectorAllocEmpty(num, PS_TYPE_F32);
    100     det->psfMajor = psVectorAllocEmpty(num, PS_TYPE_F32);
    101     det->psfMinor = psVectorAllocEmpty(num, PS_TYPE_F32);
    102     det->psfTheta = psVectorAllocEmpty(num, PS_TYPE_F32);
    103     det->quality = psVectorAllocEmpty(num, PS_TYPE_F32);
    104     det->numPix = psVectorAllocEmpty(num, PS_TYPE_S32);
    105     det->xxMoment = psVectorAllocEmpty(num, PS_TYPE_F32);
    106     det->xyMoment = psVectorAllocEmpty(num, PS_TYPE_F32);
    107     det->yyMoment = psVectorAllocEmpty(num, PS_TYPE_F32);
    108     det->flags = psVectorAllocEmpty(num, PS_TYPE_U32);
    109     det->diffSkyfileId = psVectorAllocEmpty(num, PS_TYPE_S64);
    110     det->naxis1 = psVectorAllocEmpty(num, PS_TYPE_S32);
    111     det->naxis2 = psVectorAllocEmpty(num, PS_TYPE_S32);
    112     det->mask = psVectorAllocEmpty(num, PS_TYPE_U8);
    113     det->nPos = psVectorAllocEmpty(num, PS_TYPE_S32);
    114     det->fPos = psVectorAllocEmpty(num, PS_TYPE_F32);
    115     det->nRatioBad = psVectorAllocEmpty(num, PS_TYPE_F32);
    116     det->nRatioMask = psVectorAllocEmpty(num, PS_TYPE_F32);
    117     det->nRatioAll = psVectorAllocEmpty(num, PS_TYPE_F32);
    118     det->psfInstFlux = psVectorAllocEmpty(num, PS_TYPE_F32);
    119     det->psfInstFluxSig = psVectorAllocEmpty(num, PS_TYPE_F32);
    120     det->apMag = psVectorAllocEmpty(num, PS_TYPE_F32);
    121     det->apMagRadius  = psVectorAllocEmpty(num, PS_TYPE_F32);
    122     det->apMagRaw = psVectorAllocEmpty(num, PS_TYPE_F32);
    123     det->apFlux = psVectorAllocEmpty(num, PS_TYPE_F32);
    124     det->apFluxSig = psVectorAllocEmpty(num, PS_TYPE_F32);
    125     det->peakFluxAsMag = psVectorAllocEmpty(num, PS_TYPE_F32);
    126     det->calPsfMag = psVectorAllocEmpty(num, PS_TYPE_F32);
    127     det->calPsfMagSig = psVectorAllocEmpty(num, PS_TYPE_F32);
    128     det->sky = psVectorAllocEmpty(num, PS_TYPE_F32);
    129     det->skySig = psVectorAllocEmpty(num, PS_TYPE_F32);
    130     det->qualityPerfect = psVectorAllocEmpty(num, PS_TYPE_F32);
    131     det->momentsR1 = psVectorAllocEmpty(num, PS_TYPE_F32);
    132     det->momentsRH = psVectorAllocEmpty(num, PS_TYPE_F32);
    133     det->kronFlux = psVectorAllocEmpty(num, PS_TYPE_F32);
    134     det->kronFluxErr = psVectorAllocEmpty(num, PS_TYPE_F32);
    135     det->kronFluxInner = psVectorAllocEmpty(num, PS_TYPE_F32);
    136     det->kronFluxOuter = psVectorAllocEmpty(num, PS_TYPE_F32);
    137     det->diffRP = psVectorAllocEmpty(num, PS_TYPE_F32);
    138     det->diffSnP = psVectorAllocEmpty(num, PS_TYPE_F32);
    139     det->diffRM = psVectorAllocEmpty(num, PS_TYPE_F32);
    140     det->diffSnM = psVectorAllocEmpty(num, PS_TYPE_F32);
    141     det->flags2 = psVectorAllocEmpty(num, PS_TYPE_U32);
    142     det->ippIdet = psVectorAllocEmpty(num, PS_TYPE_U32);
    143     det->nFrames = psVectorAllocEmpty(num, PS_TYPE_U16);
    144     det->padding = psVectorAllocEmpty(num, PS_TYPE_S16);
     41    det->table = NULL;
     42    det->x = NULL;
     43    det->y = NULL;
     44    det->ra = NULL;
     45    det->dec = NULL;
     46    det->raErr = NULL;
     47    det->decErr = NULL;
     48    det->mask = NULL;
     49    det->diffSkyfileId = 0;
    14550    return det;
    14651}
    147 
    148 ppMopsDetections *ppMopsDetectionsRealloc(ppMopsDetections *det, long num)
    149 {
    150     det->x = psVectorRealloc(det->x, num);
    151     det->y = psVectorRealloc(det->y, num);
    152     det->ra = psVectorRealloc(det->ra, num);
    153     det->dec = psVectorRealloc(det->dec, num);
    154     det->raErr = psVectorRealloc(det->raErr, num);
    155     det->decErr = psVectorRealloc(det->decErr, num);
    156     det->mag = psVectorRealloc(det->mag, num);
    157     det->magErr = psVectorRealloc(det->magErr, num);
    158     det->chi2 = psVectorRealloc(det->chi2, num);
    159     det->dof = psVectorRealloc(det->dof, num);
    160     det->cr = psVectorRealloc(det->cr, num);
    161     det->extended = psVectorRealloc(det->extended, num);
    162     det->psfMajor = psVectorRealloc(det->psfMajor, num);
    163     det->psfMinor = psVectorRealloc(det->psfMinor, num);
    164     det->psfTheta = psVectorRealloc(det->psfTheta, num);
    165     det->quality = psVectorRealloc(det->quality, num);
    166     det->numPix = psVectorRealloc(det->numPix, num);
    167     det->xxMoment = psVectorRealloc(det->xxMoment, num);
    168     det->xyMoment = psVectorRealloc(det->xyMoment, num);
    169     det->yyMoment = psVectorRealloc(det->yyMoment, num);
    170     det->flags = psVectorRealloc(det->flags, num);
    171     det->diffSkyfileId = psVectorRealloc(det->diffSkyfileId, num);
    172     det->naxis1 = psVectorRealloc(det->naxis1, num);
    173     det->naxis2 = psVectorRealloc(det->naxis2, num);
    174     det->mask = psVectorRealloc(det->mask, num);
    175     det->nPos = psVectorRealloc(det->nPos, num);
    176     det->fPos = psVectorRealloc(det->fPos, num);
    177     det->nRatioBad = psVectorRealloc(det->nRatioBad, num);
    178     det->nRatioMask = psVectorRealloc(det->nRatioMask, num);
    179     det->nRatioAll = psVectorRealloc(det->nRatioAll, num);
    180     det->psfInstFlux = psVectorRealloc(det->psfInstFlux, num);
    181     det->psfInstFluxSig = psVectorRealloc(det->psfInstFluxSig, num);
    182     det->apMag = psVectorRealloc(det->apMag, num);
    183     det->apMagRadius = psVectorRealloc(det->apMagRadius, num);
    184     det->apMagRaw = psVectorRealloc(det->apMagRadius, num);
    185     det->apFlux = psVectorRealloc(det->apFlux, num);
    186     det->apFluxSig = psVectorRealloc(det->apFluxSig, num);
    187     det->peakFluxAsMag = psVectorRealloc(det->peakFluxAsMag, num);
    188     det->calPsfMag = psVectorRealloc(det->calPsfMag, num);
    189     det->calPsfMagSig = psVectorRealloc(det->calPsfMagSig, num);
    190     det->sky = psVectorRealloc(det->sky, num);
    191     det->skySig = psVectorRealloc(det->skySig, num);
    192     det->qualityPerfect = psVectorRealloc(det->qualityPerfect, num);
    193     det->momentsR1 = psVectorRealloc(det->momentsR1, num);
    194     det->momentsRH = psVectorRealloc(det->momentsRH, num);
    195     det->kronFlux = psVectorRealloc(det->kronFlux, num);
    196     det->kronFluxErr = psVectorRealloc(det->kronFluxErr, num);
    197     det->kronFluxInner = psVectorRealloc(det->kronFluxInner, num);
    198     det->kronFluxOuter = psVectorRealloc(det->kronFluxOuter, num);
    199     det->diffRP = psVectorRealloc(det->diffRP, num);
    200     det->diffSnP = psVectorRealloc(det->diffSnP, num);
    201     det->diffRM = psVectorRealloc(det->diffRM, num);
    202     det->diffSnM = psVectorRealloc(det->diffSnM, num);
    203     det->flags2 = psVectorRealloc(det->flags2, num);
    204     det->ippIdet = psVectorRealloc(det->ippIdet, num);
    205     det->nFrames = psVectorRealloc(det->nFrames, num);
    206     det->padding = psVectorRealloc(det->padding, num);
    207     return det;
    208 }
    209 
    210 bool ppMopsDetectionsAdd(ppMopsDetections *det, float x, float y, double ra, double dec,
    211                          double raErr, double decErr, float mag, float magErr,
    212                          float chi2, int dof, float cr, float extended, float psfMajor,
    213                          float psfMinor, float psfTheta, float quality, int numPix,
    214                          float xxMoment, float xyMoment, float yyMoment,
    215                          psU32 flags, psS64 diffSkyfileId, int naxis1, int naxis2,
    216                          int nPos, float fPos, float nRatioBad, float nRatioMask, float nRatioAll,
    217                          float psfInstFlux, float psfInstFluxSig,
    218                          float apMag, float apMagRadius, float apMagRaw, float apFlux, float apFluxSig,
    219                          float peakFluxAsMag, float calPsfMag, float calPsfMagSig,
    220                          float sky, float skySig, float qualityPerfect,
    221                          float momentsR1, float momentsRH,
    222                          float kronFlux, float kronFluxErr, float kronFluxInner, float kronFluxOuter,
    223                          float diffRP, float diffSnP, float diffRM, float diffSnM,
    224                          psU32 flags2, psU32 ippIdet, psU16 nFrames, psS16 padding)
    225 {
    226     psVectorAppend(det->x, x);
    227     psVectorAppend(det->y, y);
    228     psVectorAppend(det->ra, ra);
    229     psVectorAppend(det->dec, dec);
    230     psVectorAppend(det->raErr, raErr);
    231     psVectorAppend(det->decErr, decErr);
    232     psVectorAppend(det->mag, mag);
    233     psVectorAppend(det->magErr, magErr);
    234     psVectorAppend(det->chi2, chi2);
    235     psVectorAppend(det->dof, dof);
    236     psVectorAppend(det->cr, cr);
    237     psVectorAppend(det->extended, extended);
    238     psVectorAppend(det->psfMajor, psfMajor);
    239     psVectorAppend(det->psfMinor, psfMinor);
    240     psVectorAppend(det->psfTheta, psfTheta);
    241     psVectorAppend(det->quality, quality);
    242     psVectorAppend(det->numPix, numPix);
    243     psVectorAppend(det->xxMoment, xxMoment);
    244     psVectorAppend(det->xyMoment, xyMoment);
    245     psVectorAppend(det->yyMoment, yyMoment);
    246     psVectorAppend(det->flags, flags);
    247     psVectorAppend(det->diffSkyfileId, diffSkyfileId);
    248     psVectorAppend(det->naxis1, naxis1);
    249     psVectorAppend(det->naxis2, naxis2);
    250     psVectorAppend(det->mask, 0);
    251     psVectorAppend(det->nPos, nPos);
    252     psVectorAppend(det->fPos, fPos);
    253     psVectorAppend(det->nRatioBad, nRatioBad);
    254     psVectorAppend(det->nRatioMask, nRatioMask);
    255     psVectorAppend(det->nRatioAll, nRatioAll);
    256     psVectorAppend(det->psfInstFlux, psfInstFlux);
    257     psVectorAppend(det->psfInstFluxSig, psfInstFluxSig);
    258     psVectorAppend(det->apMag, apMag);
    259     psVectorAppend(det->apMagRadius, apMagRadius);
    260     psVectorAppend(det->apMagRaw, apMagRaw);
    261     psVectorAppend(det->apFlux, apFlux);
    262     psVectorAppend(det->apFluxSig, apFluxSig);
    263     psVectorAppend(det->peakFluxAsMag, peakFluxAsMag);
    264     psVectorAppend(det->calPsfMag, calPsfMag);
    265     psVectorAppend(det->calPsfMagSig, calPsfMagSig);
    266     psVectorAppend(det->sky, sky);
    267     psVectorAppend(det->skySig, skySig);
    268     psVectorAppend(det->qualityPerfect, qualityPerfect);
    269     psVectorAppend(det->momentsR1, momentsR1);
    270     psVectorAppend(det->momentsRH, momentsRH);
    271     psVectorAppend(det->kronFlux, kronFlux);
    272     psVectorAppend(det->kronFluxErr, kronFluxErr);
    273     psVectorAppend(det->kronFluxInner, kronFluxInner);
    274     psVectorAppend(det->kronFluxOuter, kronFluxOuter);
    275     psVectorAppend(det->diffRP, diffRP);
    276     psVectorAppend(det->diffSnP, diffSnP);
    277     psVectorAppend(det->diffRM, diffRM);
    278     psVectorAppend(det->diffSnM, diffSnM);
    279     psVectorAppend(det->flags2, flags2);
    280     psVectorAppend(det->ippIdet, ippIdet);
    281     psVectorAppend(det->nFrames, nFrames);
    282     psVectorAppend(det->padding, padding);
    283     return true;
    284 }
    285 
    286 bool ppMopsDetectionsCopySingle(ppMopsDetections *target, const ppMopsDetections *source, long index)
    287 {
    288     psVectorAppend(target->x, source->x->data.F32[index]);
    289     psVectorAppend(target->y, source->y->data.F32[index]);
    290     psVectorAppend(target->ra, source->ra->data.F64[index]);
    291     psVectorAppend(target->dec, source->dec->data.F64[index]);
    292     psVectorAppend(target->raErr, source->raErr->data.F64[index]);
    293     psVectorAppend(target->decErr, source->decErr->data.F64[index]);
    294     psVectorAppend(target->mag, source->mag->data.F32[index]);
    295     psVectorAppend(target->magErr, source->magErr->data.F32[index]);
    296     psVectorAppend(target->chi2, source->chi2->data.F32[index]);
    297     psVectorAppend(target->dof, source->dof->data.S32[index]);
    298     psVectorAppend(target->cr, source->cr->data.F32[index]);
    299     psVectorAppend(target->extended, source->extended->data.F32[index]);
    300     psVectorAppend(target->psfMajor, source->psfMajor->data.F32[index]);
    301     psVectorAppend(target->psfMinor, source->psfMinor->data.F32[index]);
    302     psVectorAppend(target->psfTheta, source->psfTheta->data.F32[index]);
    303     psVectorAppend(target->quality, source->quality->data.F32[index]);
    304     psVectorAppend(target->numPix, source->numPix->data.S32[index]);
    305     psVectorAppend(target->xxMoment, source->xxMoment->data.F32[index]);
    306     psVectorAppend(target->xyMoment, source->xyMoment->data.F32[index]);
    307     psVectorAppend(target->yyMoment, source->yyMoment->data.F32[index]);
    308     psVectorAppend(target->flags, source->flags->data.U32[index]);
    309     psVectorAppend(target->diffSkyfileId, source->diffSkyfileId->data.S64[index]);
    310     psVectorAppend(target->naxis1, source->naxis1->data.S32[index]);
    311     psVectorAppend(target->naxis2, source->naxis2->data.S32[index]);
    312     psVectorAppend(target->mask, 0);
    313     psVectorAppend(target->nPos, source->nPos->data.S32[index]);
    314     psVectorAppend(target->fPos, source->fPos->data.F32[index]);
    315     psVectorAppend(target->nRatioBad, source->nRatioBad->data.F32[index]);
    316     psVectorAppend(target->nRatioMask, source->nRatioMask->data.F32[index]);
    317     psVectorAppend(target->nRatioAll, source->nRatioAll->data.F32[index]);
    318     psVectorAppend(target->psfInstFlux, source->psfInstFlux->data.F32[index]);
    319     psVectorAppend(target->psfInstFluxSig, source->psfInstFluxSig->data.F32[index]);
    320     psVectorAppend(target->apMag, source->apMag->data.F32[index]);
    321     psVectorAppend(target->apMagRadius, source->apMagRadius->data.F32[index]);
    322     psVectorAppend(target->apMagRaw, source->apMagRaw->data.F32[index]);
    323     psVectorAppend(target->apFlux, source->apFlux->data.F32[index]);
    324     psVectorAppend(target->apFluxSig, source->apFluxSig->data.F32[index]);
    325     psVectorAppend(target->peakFluxAsMag, source->peakFluxAsMag->data.F32[index]);
    326     psVectorAppend(target->calPsfMag, source->calPsfMag->data.F32[index]);
    327     psVectorAppend(target->calPsfMagSig, source->calPsfMagSig->data.F32[index]);
    328     psVectorAppend(target->sky, source->sky->data.F32[index]);
    329     psVectorAppend(target->skySig, source->skySig->data.F32[index]);
    330     psVectorAppend(target->qualityPerfect, source->qualityPerfect->data.F32[index]);
    331     psVectorAppend(target->momentsR1, source->momentsR1->data.F32[index]);
    332     psVectorAppend(target->momentsRH, source->momentsRH->data.F32[index]);
    333     psVectorAppend(target->kronFlux, source->kronFlux->data.F32[index]);
    334     psVectorAppend(target->kronFluxErr, source->kronFluxErr->data.F32[index]);
    335     psVectorAppend(target->kronFluxInner, source->kronFluxInner->data.F32[index]);
    336     psVectorAppend(target->kronFluxOuter, source->kronFluxOuter->data.F32[index]);
    337     psVectorAppend(target->diffRP, source->diffRP->data.F32[index]);
    338     psVectorAppend(target->diffSnP, source->diffSnP->data.F32[index]);
    339     psVectorAppend(target->diffRM, source->diffRM->data.F32[index]);
    340     psVectorAppend(target->diffSnM, source->diffSnM->data.F32[index]);
    341     psVectorAppend(target->flags2, source->flags2->data.U32[index]);
    342     psVectorAppend(target->ippIdet, source->ippIdet->data.U32[index]);
    343     psVectorAppend(target->nFrames, source->nFrames->data.U16[index]);
    344     psVectorAppend(target->padding, source->padding->data.S16[index]);
    345 
    346     target->num++;
    347 
    348     return true;
    349 }
    350 
    351 
    352 bool ppMopsDetectionsPurge(ppMopsDetections *det)
    353 {
    354     long num = 0;
    355     for (long i = 0; i < det->num; i++) {
    356         if (!det->mask->data.U8[i]) {
    357             if (i == num) {
    358                 // No need to copy
    359                 num++;
    360                 continue;
    361             }
    362             det->x->data.F32[num] = det->x->data.F32[i];
    363             det->y->data.F32[num] = det->y->data.F32[i];
    364             det->ra->data.F64[num] = det->ra->data.F64[i];
    365             det->dec->data.F64[num] = det->dec->data.F64[i];
    366             det->raErr->data.F64[num] = det->raErr->data.F64[i];
    367             det->decErr->data.F64[num] = det->decErr->data.F64[i];
    368             det->mag->data.F32[num] = det->mag->data.F32[i];
    369             det->magErr->data.F32[num] = det->magErr->data.F32[i];
    370             det->chi2->data.F32[num] = det->chi2->data.F32[i];
    371             det->dof->data.S32[num] = det->dof->data.S32[i];
    372             det->cr->data.F32[num] = det->cr->data.F32[i];
    373             det->extended->data.F32[num] = det->extended->data.F32[i];
    374             det->psfMajor->data.F32[num] = det->psfMajor->data.F32[i];
    375             det->psfMinor->data.F32[num] = det->psfMinor->data.F32[i];
    376             det->psfTheta->data.F32[num] = det->psfTheta->data.F32[i];
    377             det->quality->data.F32[num] = det->quality->data.F32[i];
    378             det->numPix->data.S32[num] = det->numPix->data.S32[i];
    379             det->xxMoment->data.F32[num] = det->xxMoment->data.F32[i];
    380             det->xyMoment->data.F32[num] = det->xyMoment->data.F32[i];
    381             det->yyMoment->data.F32[num] = det->yyMoment->data.F32[i];
    382             det->flags->data.U32[num] = det->flags->data.U32[i];
    383             det->diffSkyfileId->data.S64[num] = det->diffSkyfileId->data.S64[i];
    384             det->naxis1->data.S32[num] = det->naxis1->data.S32[i];
    385             det->naxis2->data.S32[num] = det->naxis2->data.S32[i];
    386             det->mask->data.U8[num] = 0;
    387             det->nPos->data.S32[num] = det->nPos->data.S32[i];
    388             det->fPos->data.F32[num] = det->fPos->data.F32[i];
    389             det->nRatioBad->data.F32[num] = det->nRatioBad->data.F32[i];
    390             det->nRatioMask->data.F32[num] = det->nRatioMask->data.F32[i];
    391             det->nRatioAll->data.F32[num] = det->nRatioAll->data.F32[i];
    392             det->psfInstFlux->data.F32[num] = det->psfInstFlux->data.F32[i];
    393             det->psfInstFluxSig->data.F32[num] = det->psfInstFluxSig->data.F32[i];
    394             det->apMag->data.F32[num] = det->apMag->data.F32[i];
    395             det->apMagRadius->data.F32[num] = det->apMagRadius->data.F32[i];
    396             det->apMagRaw->data.F32[num] = det->apMagRaw->data.F32[i];
    397             det->apFlux->data.F32[num] = det->apFlux->data.F32[i];
    398             det->apFluxSig->data.F32[num] = det->apFluxSig->data.F32[i];
    399             det->peakFluxAsMag->data.F32[num] = det->peakFluxAsMag->data.F32[i];
    400             det->calPsfMag->data.F32[num] = det->calPsfMag->data.F32[i];
    401             det->calPsfMagSig->data.F32[num] = det->calPsfMagSig->data.F32[i];
    402             det->sky->data.F32[num] = det->sky->data.F32[i];
    403             det->skySig->data.F32[num] = det->skySig->data.F32[i];
    404             det->qualityPerfect->data.F32[num] = det->qualityPerfect->data.F32[i];
    405             det->momentsR1->data.F32[num] = det->momentsR1->data.F32[i];
    406             det->momentsRH->data.F32[num] = det->momentsRH->data.F32[i];
    407             det->kronFlux->data.F32[num] = det->kronFlux->data.F32[i];
    408             det->kronFluxErr->data.F32[num] = det->kronFluxErr->data.F32[i];
    409             det->kronFluxInner->data.F32[num] = det->kronFluxInner->data.F32[i];
    410             det->kronFluxOuter->data.F32[num] = det->kronFluxOuter->data.F32[i];
    411             det->diffRP->data.F32[num] = det->diffRP->data.F32[i];
    412             det->diffSnP->data.F32[num] = det->diffSnP->data.F32[i];
    413             det->diffRM->data.F32[num] = det->diffRM->data.F32[i];
    414             det->diffSnM->data.F32[num] = det->diffSnM->data.F32[i];
    415             det->flags2->data.U32[num] = det->flags2->data.U32[i];
    416             det->ippIdet->data.U32[num] = det->ippIdet->data.U32[i];
    417             det->nFrames->data.U16[num] = det->nFrames->data.U16[i];
    418             det->padding->data.S16[num] = det->padding->data.S16[i];
    419             num++;
    420         }
    421     }
    422     det->x->n = num;
    423     det->y->n = num;
    424     det->ra->n = num;
    425     det->dec->n = num;
    426     det->raErr->n = num;
    427     det->decErr->n = num;
    428     det->mag->n = num;
    429     det->magErr->n = num;
    430     det->chi2->n = num;
    431     det->dof->n = num;
    432     det->cr->n = num;
    433     det->extended->n = num;
    434     det->psfMajor->n = num;
    435     det->psfMinor->n = num;
    436     det->psfTheta->n = num;
    437     det->quality->n = num;
    438     det->numPix->n = num;
    439     det->xxMoment->n = num;
    440     det->xyMoment->n = num;
    441     det->yyMoment->n = num;
    442     det->flags->n = num;
    443     det->diffSkyfileId->n = num;
    444     det->naxis1->n = num;
    445     det->naxis2->n = num;
    446     det->mask->n = num;
    447     det->num = num;
    448     det->nPos->n = num;
    449     det->fPos->n = num;
    450     det->nRatioBad->n = num;
    451     det->nRatioMask->n = num;
    452     det->nRatioAll->n = num;
    453     det->psfInstFlux->n = num;
    454     det->psfInstFluxSig->n = num;
    455     det->apMag->n = num;
    456     det->apMagRadius->n = num;
    457     det->apMagRaw->n = num;
    458     det->apFlux->n = num;
    459     det->apFluxSig->n = num;
    460     det->peakFluxAsMag->n = num;
    461     det->calPsfMag->n = num;
    462     det->calPsfMagSig->n = num;
    463     det->sky->n = num;
    464     det->skySig->n = num;
    465     det->qualityPerfect->n = num;
    466     det->momentsR1->n = num;
    467     det->momentsRH->n = num;
    468     det->kronFlux->n = num;
    469     det->kronFluxErr->n = num;
    470     det->kronFluxInner->n = num;
    471     det->kronFluxOuter->n = num;
    472     det->diffRP->n = num;
    473     det->diffSnP->n = num;
    474     det->diffRM->n = num;
    475     det->diffSnM->n = num;
    476     det->flags2->n = num;
    477     det->ippIdet->n = num;
    478     det->nFrames->n = num;
    479     det->padding->n = num;
    480     return true;
    481 }
Note: See TracChangeset for help on using the changeset viewer.