- Timestamp:
- May 3, 2010, 8:45:22 AM (16 years ago)
- Location:
- branches/simmosaic_branches
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/simmosaic_branches
- Property svn:mergeinfo changed
-
branches/simmosaic_branches/psModules
-
Property svn:mergeinfo
set to (toggle deleted branches)
/trunk/psModules merged eligible /branches/eam_branches/stackphot.20100406/psModules 27623-27653 /branches/pap_delete/psModules 27530-27595
-
Property svn:mergeinfo
set to (toggle deleted branches)
-
branches/simmosaic_branches/psModules/src/detrend/pmFringeStats.c
r24836 r27839 11 11 #include "pmFPA.h" 12 12 #include "pmFringeStats.h" 13 14 #include "psPolynomialMD.h" 15 #include "psMinimizePolyFit.h" 16 #include "psVector.h" 17 13 18 14 19 // Future optimisations for speed: … … 331 336 dfPt[i] = 1.0 / medianSd->sampleStdev; 332 337 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); 335 340 } 336 341 psFree(sky); … … 840 845 } 841 846 } 842 B->data.F64[i] = vector;847 B->data.F64[i] = vector; 843 848 } 844 849 … … 855 860 // Solve the least-squares equation 856 861 if (!psMatrixGJSolve(A, B)) { 857 psError(PS_ERR_UNKNOWN, false, "Could not solve linear equations. Returning NULL.\n"); 862 psLogMsg("psModules.detrend", PS_LOG_INFO, "Could not solve linear equations. Returning NULL.\n"); 863 psFree(A); 864 psFree(B); 858 865 return false; 859 866 } … … 964 971 } 965 972 } 973 966 974 } 967 975 … … 986 994 psTrace("psModules.detrend", 9, "Masking region %d because not finite in fringe %d.\n", j, i); 987 995 } 988 } 989 } 990 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 991 1038 # if (0) 992 1039 // Write fringe data to file for a test … … 1017 1064 } 1018 1065 scale->coeff->data.F32[0] -= median->sampleMedian; 1019 scale->coeff->data.F32[i] = 0.0; 1066 if (i != 0) { 1067 scale->coeff->data.F32[i] = 0.0; 1068 } 1020 1069 } 1021 1070 psFree(median); … … 1049 1098 1050 1099 return scale; 1100 //# endif 1051 1101 } 1052 1102
Note:
See TracChangeset
for help on using the changeset viewer.
