IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 13, 2009, 1:53:56 PM (17 years ago)
Author:
Paul Price
Message:

Using covariance factor to set the correct variance level for the combination. Adding additional recipe parameter to provide the fraction of values to discard when performing a 'olympic weighted mean'.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppStack/src/ppStackLoop.c

    r21376 r21477  
    480480            psMetadataAddF32(stats, PS_LIST_TAIL, "STAMP.NUM", PS_META_DUPLICATE_OK,
    481481                             "Number of stamps", kernels->numStamps);
    482 
     482            psMetadataAddF32(stats, PS_LIST_TAIL, "PPSTACK.WEIGHTING", PS_META_DUPLICATE_OK,
     483                             "Weighting for image", weightings->data.F32[i]);
    483484        }
    484485        psLogMsg("ppStack", PS_LOG_INFO, "Time to match image %d: %f sec", i, psTimerClear("PPSTACK_MATCH"));
     
    495496        writeImage(maskNames->data[i], maskHeader, readout->mask, config);
    496497        psFree(maskHeader);
     498        psImageCovarianceTransfer(readout->variance, readout->covariance);
    497499        writeImage(varianceNames->data[i], hdu->header, readout->variance, config);
     500#ifdef TESTING
     501        {
     502            psString name = NULL;
     503            psStringAppend(&name, "covariance_%d.fits", i);
     504            writeImage(name, hdu->header, readout->covariance->image, config);
     505            psFree(name);
     506        }
     507#endif
    498508
    499509        pmCell *inCell = readout->parent; // Input cell
     
    605615                             i, matchChi2->data.F32[i]);
    606616                } else {
     617                    psLogMsg("ppStack", PS_LOG_INFO, "Image %d has matching chi^2: %f",
     618                             i, matchChi2->data.F32[i]);
    607619                    numGood++;
    608620                }
     
    630642    // Start threading
    631643    ppStackThreadInit();
    632     ppStackThreadData *stack = ppStackThreadDataSetup(cells, imageNames, maskNames, varianceNames, config);
     644    ppStackThreadData *stack = ppStackThreadDataSetup(cells, imageNames, maskNames, varianceNames,
     645                                                      covariances, config);
    633646    if (!stack) {
    634647        psError(PS_ERR_IO, false, "Unable to initialise stack threads.");
     
    729742            psArrayAdd(job->args, 1, config);
    730743            psArrayAdd(job->args, 1, outRO);
    731             psArrayAdd(job->args, 1, subRegions);
    732             psArrayAdd(job->args, 1, subKernels);
     744            psArrayAdd(job->args, 1, inputMask);
    733745            psArrayAdd(job->args, 1, weightings);
    734746            psArrayAdd(job->args, 1, matchChi2);
     
    761773            return false;
    762774        }
    763         psFree(matchChi2);
    764775
    765776        // Harvest the jobs, gathering the inspection lists
     
    787798        memDump("initial");
    788799    }
     800
     801#ifdef TESTING
     802    writeImage("combined_initial.fits", NULL, outRO->image, config);
     803#endif
    789804
    790805    if (stats) {
     
    828843                psFree(rejected);
    829844                psFree(covariances);
     845                psFree(matchChi2);
    830846                return false;
    831847            }
     
    844860            psFree(rejected);
    845861            psFree(covariances);
     862            psFree(matchChi2);
    846863            return false;
    847864        }
     
    939956            psFree(outRO);
    940957            psFree(covariances);
     958            psFree(matchChi2);
    941959            return false;
    942960        }
     
    969987                psFree(outRO);
    970988                psFree(covariances);
     989                psFree(matchChi2);
    971990                return false;
    972991            }
     
    9811000            psArrayAdd(job->args, 1, config);
    9821001            psArrayAdd(job->args, 1, outRO);
     1002            psArrayAdd(job->args, 1, inputMask);
    9831003            psArrayAdd(job->args, 1, rejected);
    9841004            psArrayAdd(job->args, 1, weightings);
     1005            psArrayAdd(job->args, 1, matchChi2);
    9851006            if (!psThreadJobAddPending(job)) {
    9861007                psFree(job);
     
    9911012                psFree(outRO);
    9921013                psFree(covariances);
     1014                psFree(matchChi2);
    9931015                return false;
    9941016            }
     
    10041026            psFree(outRO);
    10051027            psFree(covariances);
     1028            psFree(matchChi2);
    10061029            return false;
    10071030        }
     
    10091032
    10101033    memDump("final");
     1034
     1035#ifdef TESTING
     1036    writeImage("combined_final.fits", NULL, outRO->image, config);
     1037#endif
    10111038
    10121039    // Sum covariance matrices
     
    10191046    outRO->covariance = psImageCovarianceSum(covariances);
    10201047    psFree(covariances);
     1048    psFree(matchChi2);
    10211049
    10221050    if (stats) {
Note: See TracChangeset for help on using the changeset viewer.