IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 19083


Ignore:
Timestamp:
Aug 15, 2008, 12:03:08 PM (18 years ago)
Author:
eugene
Message:

psPolynomialMD *poly now carries tmp vectors: pass orders via output->analysis and allocate on poly per thread

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/detrend/pmDark.c

    r18960 r19083  
    9999}
    100100
    101 // this creates and saves: values, roMask, norm, poly, counts, sigma, and saves the on output->analysis
     101// this creates and saves: values, roMask, norm, orders, counts, sigma, and saves the on output->analysis
    102102bool pmDarkCombinePrepare(pmCell *output, const psArray *inputs, psArray *ordinates, const char *normConcept)
    103103{
     
    183183        }
    184184    }
    185     psPolynomialMD *poly = psPolynomialMDAlloc(orders); // Polynomial for fitting
    186     psFree(orders);
    187 
    188     int numTerms = poly->coeff->n;      // Number of terms in polynomial
     185
     186    int numTerms = 1;                   // Number of terms in polynomial
     187    for (int i = 0; i < orders->n; i++) {
     188        numTerms += orders->data.U8[i];
     189    }
     190
    189191    if (numTerms > inputs->n - numBadInputs) {
    190192        psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Insufficient inputs (%ld) to fit polynomial terms (%d).",
     
    232234    psMetadataAddStr(output->analysis, PS_LIST_TAIL, PM_DARK_ANALYSIS_NORM, PS_META_REPLACE, "Dark normalisation", normConcept);
    233235
    234     psMetadataAddPtr(output->analysis, PS_LIST_TAIL, "DARK.VALUES",  PS_DATA_ARRAY | PS_META_REPLACE, "Dark values", values);
     236    psMetadataAddPtr(output->analysis, PS_LIST_TAIL, "DARK.VALUES",  PS_DATA_ARRAY  | PS_META_REPLACE, "Dark values", values);
    235237    psMetadataAddPtr(output->analysis, PS_LIST_TAIL, "DARK.RO.MASK", PS_DATA_VECTOR | PS_META_REPLACE, "Dark Readout Mask", roMask);
    236238    psMetadataAddPtr(output->analysis, PS_LIST_TAIL, "DARK.NORM",    PS_DATA_VECTOR | PS_META_REPLACE, "Dark norm", norm);
    237     psMetadataAddPtr(output->analysis, PS_LIST_TAIL, "DARK.POLY",   PS_DATA_UNKNOWN | PS_META_REPLACE, "Dark poly", poly);
     239    psMetadataAddPtr(output->analysis, PS_LIST_TAIL, "DARK.ORDERS",  PS_DATA_VECTOR | PS_META_REPLACE, "Dark orders", orders);
    238240
    239241    for (int i = 0; i < numTerms; i++) {
     
    246248    psFree(norm);
    247249    psFree(roMask);
    248     psFree(poly);
     250    psFree(orders);
    249251    psFree(values);
    250252
     
    270272
    271273    // retrieve the required parameter vectors
    272     psArray *values      = psMetadataLookupPtr(&mdok, output->analysis, "DARK.VALUES");  psAssert (values, "values not supplied");
    273     psVector *roMask     = psMetadataLookupPtr(&mdok, output->analysis, "DARK.RO.MASK"); psAssert (roMask, "roMask not supplied");
    274     psPolynomialMD *poly = psMetadataLookupPtr(&mdok, output->analysis, "DARK.POLY");    psAssert (poly, "orders not supplied");
     274    psArray *values  = psMetadataLookupPtr(&mdok, output->analysis, "DARK.VALUES");  psAssert (values, "values not supplied");
     275    psVector *roMask = psMetadataLookupPtr(&mdok, output->analysis, "DARK.RO.MASK"); psAssert (roMask, "roMask not supplied");
     276    psVector *orders = psMetadataLookupPtr(&mdok, output->analysis, "DARK.ORDERS");  psAssert (orders, "orders not supplied");
     277
     278    psPolynomialMD *poly = psPolynomialMDAlloc(orders); // Polynomial for fitting
    275279
    276280    // retrieve the norm vector, if supplied
Note: See TracChangeset for help on using the changeset viewer.