IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 22, 2009, 4:54:27 PM (17 years ago)
Author:
watersc1
Message:

Updated fringe fitting code.

Corrected Bool->S32 bug for BTOOLAPP header concept.

File:
1 edited

Legend:

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

    r24912 r25930  
    1111#include "pmFPA.h"
    1212#include "pmFringeStats.h"
     13
     14#include "psPolynomialMD.h"
     15#include "psMinimizePolyFit.h"
     16#include "psVector.h"
     17
    1318
    1419// Future optimisations for speed:
     
    331336        dfPt[i] = 1.0 / medianSd->sampleStdev;
    332337
    333         psTrace("psModules.detrend", 7, "[%d:%d,%d:%d]: %f %f\n", (int)region.x0, (int)region.x1,
    334                 (int)region.y0, (int)region.y1, fPt[i], dfPt[i]);
     338        psTrace("psModules.detrend", 7, "[%d:%d,%d:%d]: %f %f : %s\n", (int)region.x0, (int)region.x1,
     339                (int)region.y0, (int)region.y1, fPt[i], dfPt[i], readout->parent->hdu->extname);
    335340    }
    336341    psFree(sky);
     
    840845            }
    841846        }
    842         B->data.F64[i] = vector;
     847        B->data.F64[i] = vector;
    843848    }
    844849
     
    966971            }
    967972        }
     973       
    968974    }
    969975
     
    988994                psTrace("psModules.detrend", 9, "Masking region %d because not finite in fringe %d.\n", j, i);
    989995            }
    990         }
    991     }
    992 
     996            else if (fabs(fringe->f->data.F32[j]) > 0.1) {
     997              mask->data.PS_TYPE_VECTOR_MASK_DATA[j] = 1;
     998              psTrace("psModules.detrend", 9, "Masking region %d because too large fringe %d.\n", j, i);
     999            }
     1000            // Mask bad points in the science data as well.
     1001            if ((i == 0) && (!isfinite(science->f->data.F32[j]))) {
     1002                mask->data.PS_TYPE_VECTOR_MASK_DATA[j] = 1;
     1003                psTrace("psModules.detrend", 9, "Masking region %d because not finite in science fringe %d.\n", j, i);
     1004            }         
     1005            psTrace("psModules.detrend", 7, "F %f %f %f %d\n",
     1006                    fringe->f->data.F32[j], science->f->data.F32[j],
     1007                    1 / science->df->data.F32[j],(int) mask->data.PS_TYPE_VECTOR_MASK_DATA[j]);
     1008        }
     1009    }
     1010   
     1011/*     // Begin switch from old outlier removal and fitting code. */
     1012
     1013    psPolynomial1D *poly = psPolynomial1DAlloc(PS_POLYNOMIAL_ORD, 1);
     1014
     1015    pmFringeStats *fringe = fringes->data[0];
     1016    psVector *errors = psVectorAlloc(science->df->n,PS_TYPE_F32);
     1017    for (int j = 0; j < errors->n; j++) {
     1018      errors->data.F32[j] = 1 / science->df->data.F32[j];
     1019    }
     1020    psVectorFitPolynomial1D(poly,mask,0xff,science->f,errors,fringe->f);
     1021
     1022    for (int i = 0; i <= poly->nX; i++) {
     1023      scale->coeff->data.F32[i] = poly->coeff[i];
     1024      psTrace("psModules.detrend",7,"COEFFS: %d %g %g %g\n",i,scale->coeff->data.F32[i],poly->coeff[i],poly->coeffErr[i]);
     1025    }
     1026
     1027    psFree(poly);
     1028    //    psFree(fringe);
     1029    psFree(errors);
     1030
     1031    psFree(median);
     1032    psFree(diff);
     1033    return scale;
     1034    // End switch from old code.
     1035   
     1036
     1037   
    9931038# if (0)
    9941039    // Write fringe data to file for a test
     
    10191064        }
    10201065        scale->coeff->data.F32[0] -= median->sampleMedian;
    1021         scale->coeff->data.F32[i] = 0.0;
     1066        if (i != 0) {
     1067          scale->coeff->data.F32[i] = 0.0;
     1068        }
    10221069    }
    10231070    psFree(median);
     
    10511098
    10521099    return scale;
     1100    //# endif
    10531101}
    10541102
Note: See TracChangeset for help on using the changeset viewer.