/** * @author Ian Johnson * @version 1.0 */ #include #include #include "SlsQt2DHist.h" using std::cout; using std::endl; SlsQt2DHist::SlsQt2DHist(int nbinsx, double xmin, double xmax, int nbinsy, double ymin, double ymax, double* d,double zmin,double zmax):QwtRasterData(){ x_min=0;x_max=0;y_min=0;y_max=0; interp=0; nx_array=ny_array=0;data=0; SetData(nbinsx,xmin,xmax,nbinsy,ymin,ymax,d,zmin,zmax); } SlsQt2DHist::~SlsQt2DHist(){if(data) delete [] data;} int SlsQt2DHist::GetBinIndex(int bx, int by){ int b = bx*ny+by; if(b<0 || b>=nb){ cout<<"GetBinIndex:: Incorrect indicies bx and by returning overflow bin;"<nx_array*ny_array){ if(data) delete [] data; data = new double [nbinsx*nbinsy+1]; //one for under/overflow bin nx_array = nbinsx; ny_array = nbinsy; } nx=nbinsx; ny=nbinsy; nb=nx*ny; data[nb]=0;//set over flow to zero if(d){ memcpy(data,d,nb*sizeof(double)); SetMinMax(zmin,zmax); } } void SlsQt2DHist::SetMinMax(double zmin,double zmax){ if(zminz_max) z_max=data[i]; z_mean+=data[i]; } z_mean/=nb; if(z_min>0) z_min/=1.02; else z_min*=1.02; if(z_max>0) z_max*=1.02; else z_max/=1.02; } #if QWT_VERSION<0x060000 ; #else setInterval( Qt::ZAxis,QwtInterval(z_min,z_max)); #endif } double SlsQt2DHist::GetMean(){ if(!z_mean_has_been_calculated){ z_mean_has_been_calculated = 1; z_mean=0; for(int i=0;i0 && data[i]