#include #include #include #include void findMinMax(const float *array, const int size, float &min, float &max) { min = max = array[0]; for(int i=1;imax) max=array[i]; } } float findMean(float *&array, int size) { float mean = array[0]; for(int i=1;i=0)&&(binnum[binmax]) binmax = i; for(int i=0; i=num[binmax]/2); float *newarray = new float[size]; int newsize = 0; for(int i=0; i" << newsize << std::endl; findNormalStats(newarray,newsize,tmean,tsigma); // cpgopen("tmp.ps/vps"); // cpghistlog(newsize,newarray,min,max,100,0); // cpghist(newsize,newarray,min,max,100,0); // cpgend(); delete [] num,keep,newarray; // tsigma *= trimToNormal; } void findTrimmedHistStats2(float *array, const int size, float &tmean, float &tsigma) { const int nbin = 200; float *num = new float[nbin]; bool *keep = new bool[nbin]; // HOW MANY VALUES IN EACH BIN? float min,max; findMinMax(array,size,min,max); for(int i=0; i=0)&&(binnum[binmax]) binmax = i; for(int i=0; i=num[binmax]/2); float *newarray = new float[size]; int newsize = 0; for(int i=0; i=size-width/2) end=size-1; else end=i+width/2; if(linear_regression(size,sorted,cumul,beg,end,slope,eSlope,inter,eInter,r)==0) angle[i] = atanf( fabs(slope) ) * 180. / M_PI; else angle[i] = 90.; } // int start = 0; // while(angle[start] < 45.) start++; // int finish = size-1; // while(angle[finish] < 45.) finish--; int maxpt = 0; for(int i = 1; iangle[maxpt]) maxpt=i; int start = maxpt; while((start>0)&&(angle[start]>45.)) start--; int finish = maxpt; while((finish < size-1)&&(angle[finish]>45.)) finish++; std::cerr << "npts = " << size << ", start = " << start << ", finish = " << finish << std::endl; int trimSize=0; float *newarray = new float[finish-start+1]; for(int i=0;i