mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-23 10:07:59 +02:00
clang format on gui
This commit is contained in:
258
slsDetectorGui/slsDetectorPlotting/include/SlsQt1DPlot.h
Executable file → Normal file
258
slsDetectorGui/slsDetectorPlotting/include/SlsQt1DPlot.h
Executable file → Normal file
@ -3,181 +3,179 @@
|
||||
* @author Ian Johnson
|
||||
* @version 1.0
|
||||
* Modifications:
|
||||
* 19.06.2012: {Some functions have been added by Dhanya to enable zooming in and out
|
||||
* without using mouse control:
|
||||
* DisableZoom,
|
||||
* SetXMinMax,SetYMinMax,
|
||||
* 19.06.2012: {Some functions have been added by Dhanya to enable zooming in
|
||||
* and out without using mouse control: DisableZoom, SetXMinMax,SetYMinMax,
|
||||
* GetXMinimum,GetXMaximum,GetYMinimum,GetYMaximum}
|
||||
* */
|
||||
|
||||
#ifndef SLSQT1DPLOT_H
|
||||
#define SLSQT1DPLOT_H
|
||||
|
||||
|
||||
typedef double double32_t;
|
||||
typedef float float32_t;
|
||||
typedef int int32_t;
|
||||
typedef double double32_t;
|
||||
typedef float float32_t;
|
||||
typedef int int32_t;
|
||||
|
||||
#include "ansi.h"
|
||||
|
||||
|
||||
#include "SlsQt1DZoomer.h"
|
||||
#include <iostream>
|
||||
#include <qwt_plot.h>
|
||||
#include <qwt_plot_curve.h>
|
||||
#include <qwt_plot_marker.h>
|
||||
#include <qwt_scale_div.h>
|
||||
#include "SlsQt1DZoomer.h"
|
||||
#include <iostream>
|
||||
|
||||
|
||||
class QPen;
|
||||
class SlsQt1DPlot;
|
||||
class QwtSymbol;
|
||||
|
||||
class SlsQtH1D:public QwtPlotCurve{
|
||||
class SlsQtH1D : public QwtPlotCurve {
|
||||
|
||||
public:
|
||||
SlsQtH1D(QString title, int n, double xmin, double xmax, double* data=0);
|
||||
SlsQtH1D(QString title, int n, double* data_x, double* data_y);
|
||||
~SlsQtH1D();
|
||||
public:
|
||||
SlsQtH1D(QString title, int n, double xmin, double xmax, double *data = 0);
|
||||
SlsQtH1D(QString title, int n, double *data_x, double *data_y);
|
||||
~SlsQtH1D();
|
||||
|
||||
void Attach(SlsQt1DPlot* p);
|
||||
void Detach(SlsQt1DPlot* p);
|
||||
void Attach(SlsQt1DPlot *p);
|
||||
void Detach(SlsQt1DPlot *p);
|
||||
|
||||
int SetLineColor(int c=-1);
|
||||
int SetLineWidth(int w=1);
|
||||
void SetLineStyle(int s=0);
|
||||
void setStyleLinesorDots(bool isLines);
|
||||
void setSymbolMarkers(bool isMarker);
|
||||
int SetLineColor(int c = -1);
|
||||
int SetLineWidth(int w = 1);
|
||||
void SetLineStyle(int s = 0);
|
||||
void setStyleLinesorDots(bool isLines);
|
||||
void setSymbolMarkers(bool isMarker);
|
||||
|
||||
void SetData(int n, double xmin, double xmax, double* d=0);
|
||||
void SetData(int n, double* dx, double* dy);
|
||||
void SetData(int n, double xmin, double xmax, double *d = 0);
|
||||
void SetData(int n, double *dx, double *dy);
|
||||
|
||||
double* GetX() {return x;}
|
||||
double* GetY() {return y;}
|
||||
int GetNBinsX() {return ndata;}
|
||||
double *GetX() { return x; }
|
||||
double *GetY() { return y; }
|
||||
int GetNBinsX() { return ndata; }
|
||||
|
||||
double FillBin(int bx, double v=1);
|
||||
double Fill(double x, double v=1);
|
||||
double SetBinContent(int bx,double v);
|
||||
double SetContent(double x,double v);
|
||||
int FindBinIndex(double px);
|
||||
double FillBin(int bx, double v = 1);
|
||||
double Fill(double x, double v = 1);
|
||||
double SetBinContent(int bx, double v);
|
||||
double SetContent(double x, double v);
|
||||
int FindBinIndex(double px);
|
||||
|
||||
double GetXMin() {return x[0];}
|
||||
double GetFirstXgtZero() {return firstXgt0;}
|
||||
double GetXMax() {return x[ndata-1];}
|
||||
double GetYMin() {return ymin;}
|
||||
double GetFirstYgtZero() {return firstYgt0;}
|
||||
double GetYMax() {return ymax;}
|
||||
double GetXMin() { return x[0]; }
|
||||
double GetFirstXgtZero() { return firstXgt0; }
|
||||
double GetXMax() { return x[ndata - 1]; }
|
||||
double GetYMin() { return ymin; }
|
||||
double GetFirstYgtZero() { return firstYgt0; }
|
||||
double GetYMax() { return ymax; }
|
||||
|
||||
SlsQtH1D* Add(double v);
|
||||
SlsQtH1D *Add(double v);
|
||||
|
||||
private:
|
||||
int ndata;
|
||||
int n_array;
|
||||
double dx;
|
||||
double *x{nullptr}, *y{nullptr};
|
||||
double ymin, ymax;
|
||||
double firstXgt0, firstYgt0;
|
||||
void Initailize();
|
||||
int SetUpArrays(int n);
|
||||
int CheckIndex(int bx);
|
||||
|
||||
|
||||
private:
|
||||
int ndata;
|
||||
int n_array;
|
||||
double dx;
|
||||
double *x{nullptr},*y{nullptr};
|
||||
double ymin,ymax;
|
||||
double firstXgt0,firstYgt0;
|
||||
void Initailize();
|
||||
int SetUpArrays(int n);
|
||||
int CheckIndex(int bx);
|
||||
|
||||
QPen* pen_ptr{nullptr};
|
||||
QPen *pen_ptr{nullptr};
|
||||
};
|
||||
|
||||
class SlsQtH1DList {
|
||||
public:
|
||||
SlsQtH1DList(SlsQtH1D *hist = 0);
|
||||
~SlsQtH1DList();
|
||||
|
||||
class SlsQtH1DList{
|
||||
public:
|
||||
SlsQtH1DList(SlsQtH1D* hist=0);
|
||||
~SlsQtH1DList();
|
||||
SlsQtH1D *Add(SlsQtH1D *h);
|
||||
void Remove(SlsQtH1D *h);
|
||||
void Print();
|
||||
|
||||
SlsQtH1D* Add(SlsQtH1D* h);
|
||||
void Remove(SlsQtH1D* h);
|
||||
void Print();
|
||||
SlsQtH1D *Hist() { return the_hist; } // if no hist returns 0
|
||||
SlsQtH1DList *Next() { return the_next; }
|
||||
|
||||
SlsQtH1D* Hist() {return the_hist;} //if no hist returns 0
|
||||
SlsQtH1DList* Next() {return the_next;}
|
||||
|
||||
|
||||
private:
|
||||
SlsQtH1DList* the_next;
|
||||
SlsQtH1D* the_hist;
|
||||
private:
|
||||
SlsQtH1DList *the_next;
|
||||
SlsQtH1D *the_hist;
|
||||
};
|
||||
|
||||
|
||||
class SlsQt1DPlot:public QwtPlot{
|
||||
Q_OBJECT
|
||||
class SlsQt1DPlot : public QwtPlot {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SlsQt1DPlot(QWidget* = NULL);
|
||||
~SlsQt1DPlot();
|
||||
|
||||
void SetTitle(QString title);
|
||||
void SetXTitle(QString title);
|
||||
void SetYTitle(QString title);
|
||||
void SetTitleFont(const QFont& f);
|
||||
void SetXFont(const QFont& f);
|
||||
void SetYFont(const QFont& f);
|
||||
|
||||
void InsertHLine(double y);
|
||||
void RemoveHLine();
|
||||
void InsertVLine(double v);
|
||||
void RemoveVLine();
|
||||
public:
|
||||
SlsQt1DPlot(QWidget * = NULL);
|
||||
~SlsQt1DPlot();
|
||||
|
||||
void SetTitle(QString title);
|
||||
void SetXTitle(QString title);
|
||||
void SetYTitle(QString title);
|
||||
void SetTitleFont(const QFont &f);
|
||||
void SetXFont(const QFont &f);
|
||||
void SetYFont(const QFont &f);
|
||||
|
||||
/** This group of functions have been added by Dhanya on 19.06.2012 to be able to
|
||||
use zooming functionality without mouse control*/
|
||||
void DisableZoom(bool disable);
|
||||
void EnableXAutoScaling() {setAxisAutoScale(QwtPlot::xBottom, true);Update();};
|
||||
void EnableYAutoScaling() {setAxisAutoScale(QwtPlot::yLeft, true);Update();};
|
||||
void SetYStep (int step) {ystep = step;};
|
||||
void SetXMinMax(double min,double max){setAxisScale(QwtPlot::xBottom,min,max);};
|
||||
void SetYMinMax(double min,double max){setAxisScale(QwtPlot::yLeft,min,max);};
|
||||
double GetXMinimum(){return hist_list->Hist()->GetXMin();};
|
||||
double GetXMaximum(){return hist_list->Hist()->GetXMax();};
|
||||
double GetYMinimum(){return hist_list->Hist()->GetYMin();};
|
||||
double GetYMaximum(){return hist_list->Hist()->GetYMax();};
|
||||
/**---*/
|
||||
void InsertHLine(double y);
|
||||
void RemoveHLine();
|
||||
void InsertVLine(double v);
|
||||
void RemoveVLine();
|
||||
|
||||
/** This group of functions have been added by Dhanya on 19.06.2012 to be
|
||||
able to use zooming functionality without mouse control*/
|
||||
void DisableZoom(bool disable);
|
||||
void EnableXAutoScaling() {
|
||||
setAxisAutoScale(QwtPlot::xBottom, true);
|
||||
Update();
|
||||
};
|
||||
void EnableYAutoScaling() {
|
||||
setAxisAutoScale(QwtPlot::yLeft, true);
|
||||
Update();
|
||||
};
|
||||
void SetYStep(int step) { ystep = step; };
|
||||
void SetXMinMax(double min, double max) {
|
||||
setAxisScale(QwtPlot::xBottom, min, max);
|
||||
};
|
||||
void SetYMinMax(double min, double max) {
|
||||
setAxisScale(QwtPlot::yLeft, min, max);
|
||||
};
|
||||
double GetXMinimum() { return hist_list->Hist()->GetXMin(); };
|
||||
double GetXMaximum() { return hist_list->Hist()->GetXMax(); };
|
||||
double GetYMinimum() { return hist_list->Hist()->GetYMin(); };
|
||||
double GetYMaximum() { return hist_list->Hist()->GetYMax(); };
|
||||
/**---*/
|
||||
|
||||
void SetZoom(double xmin,double ymin,double x_width,double y_width);
|
||||
void SetZoomBase(double xmin,double ymin,double x_width, double y_width){ zoomer->SetZoomBase(xmin,ymin,x_width,y_width);}
|
||||
void SetZoom(double xmin, double ymin, double x_width, double y_width);
|
||||
void SetZoomBase(double xmin, double ymin, double x_width, double y_width) {
|
||||
zoomer->SetZoomBase(xmin, ymin, x_width, y_width);
|
||||
}
|
||||
|
||||
void alignScales();
|
||||
void alignScales();
|
||||
|
||||
void SetLogX(bool yes=1);
|
||||
void SetLogY(bool yes=1);
|
||||
private:
|
||||
|
||||
SlsQtH1DList* hist_list{nullptr};
|
||||
SlsQt1DZoomer* zoomer{nullptr};
|
||||
QwtPlotPanner* panner{nullptr};
|
||||
void SetLogX(bool yes = 1);
|
||||
void SetLogY(bool yes = 1);
|
||||
|
||||
QwtPlotMarker *hline{nullptr};
|
||||
QwtPlotMarker *vline{nullptr};
|
||||
bool disableZoom{false};
|
||||
int ystep{0};
|
||||
|
||||
void SetupZoom();
|
||||
void UnknownStuff();
|
||||
//void alignScales();
|
||||
|
||||
void CalculateNResetZoomBase();
|
||||
void NewHistogramAttached(SlsQtH1D* h);
|
||||
void HistogramDetached(SlsQtH1D* h);
|
||||
private:
|
||||
SlsQtH1DList *hist_list{nullptr};
|
||||
SlsQt1DZoomer *zoomer{nullptr};
|
||||
QwtPlotPanner *panner{nullptr};
|
||||
|
||||
void SetLog(int axisId, bool yes);
|
||||
|
||||
friend void SlsQtH1D::Attach(SlsQt1DPlot* p);
|
||||
friend void SlsQtH1D::Detach(SlsQt1DPlot* p);
|
||||
|
||||
|
||||
public slots:
|
||||
void UnZoom();
|
||||
void Update();
|
||||
QwtPlotMarker *hline{nullptr};
|
||||
QwtPlotMarker *vline{nullptr};
|
||||
bool disableZoom{false};
|
||||
int ystep{0};
|
||||
|
||||
void SetupZoom();
|
||||
void UnknownStuff();
|
||||
// void alignScales();
|
||||
|
||||
void CalculateNResetZoomBase();
|
||||
void NewHistogramAttached(SlsQtH1D *h);
|
||||
void HistogramDetached(SlsQtH1D *h);
|
||||
|
||||
void SetLog(int axisId, bool yes);
|
||||
|
||||
friend void SlsQtH1D::Attach(SlsQt1DPlot *p);
|
||||
friend void SlsQtH1D::Detach(SlsQt1DPlot *p);
|
||||
|
||||
public slots:
|
||||
void UnZoom();
|
||||
void Update();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
71
slsDetectorGui/slsDetectorPlotting/include/SlsQt1DZoomer.h
Executable file → Normal file
71
slsDetectorGui/slsDetectorPlotting/include/SlsQt1DZoomer.h
Executable file → Normal file
@ -7,54 +7,51 @@
|
||||
#ifndef SLSQT1DZOOMER_H
|
||||
#define SLSQT1DZOOMER_H
|
||||
|
||||
#include <qwt_plot_zoomer.h>
|
||||
#include <qwt_plot_panner.h>
|
||||
#include <qwt_global.h>
|
||||
#include <qwt_plot_panner.h>
|
||||
#include <qwt_plot_zoomer.h>
|
||||
|
||||
class SlsQtH1D;
|
||||
|
||||
class SlsQt1DZoomer:public QwtPlotZoomer{
|
||||
private:
|
||||
double x0,x1,y0,y1;
|
||||
double firstXgt0,firstYgt0;
|
||||
bool xIsLog,yIsLog;
|
||||
class SlsQt1DZoomer : public QwtPlotZoomer {
|
||||
private:
|
||||
double x0, x1, y0, y1;
|
||||
double firstXgt0, firstYgt0;
|
||||
bool xIsLog, yIsLog;
|
||||
|
||||
public:
|
||||
SlsQt1DZoomer(QWidget *canvas):QwtPlotZoomer(canvas){
|
||||
setTrackerMode(AlwaysOn);
|
||||
xIsLog=yIsLog=0;
|
||||
}
|
||||
public:
|
||||
SlsQt1DZoomer(QWidget *canvas) : QwtPlotZoomer(canvas) {
|
||||
setTrackerMode(AlwaysOn);
|
||||
xIsLog = yIsLog = 0;
|
||||
}
|
||||
|
||||
double x() {return x0;}
|
||||
double x_firstGreaterThan0() {return firstXgt0;}
|
||||
double w() {return x1-x0;}
|
||||
double x() { return x0; }
|
||||
double x_firstGreaterThan0() { return firstXgt0; }
|
||||
double w() { return x1 - x0; }
|
||||
|
||||
double y() {return y0;}
|
||||
double y_firstGreaterThan0() {return firstYgt0;}
|
||||
double h() {return y1-y0;}
|
||||
double y() { return y0; }
|
||||
double y_firstGreaterThan0() { return firstYgt0; }
|
||||
double h() { return y1 - y0; }
|
||||
|
||||
void SetZoomBase(double xmin,double ymin,double x_width, double y_width);
|
||||
void SetZoomBase(SlsQtH1D* h);
|
||||
void ExtendZoomBase(SlsQtH1D* h);
|
||||
void ResetZoomBase();
|
||||
void SetZoomBase(double xmin, double ymin, double x_width, double y_width);
|
||||
void SetZoomBase(SlsQtH1D *h);
|
||||
void ExtendZoomBase(SlsQtH1D *h);
|
||||
void ResetZoomBase();
|
||||
|
||||
bool IsLogX(){ return xIsLog;}
|
||||
bool IsLogY(){ return yIsLog;}
|
||||
bool SetLogX(bool yes) { return xIsLog=yes;}
|
||||
bool SetLogY(bool yes) { return yIsLog=yes;}
|
||||
bool IsLogX() { return xIsLog; }
|
||||
bool IsLogY() { return yIsLog; }
|
||||
bool SetLogX(bool yes) { return xIsLog = yes; }
|
||||
bool SetLogY(bool yes) { return yIsLog = yes; }
|
||||
|
||||
|
||||
|
||||
using QwtPlotPicker::trackerText;
|
||||
virtual QwtText trackerText(const QPoint &pos) const{
|
||||
|
||||
QColor bg(Qt::white);
|
||||
bg.setAlpha(200);
|
||||
QwtText text = QwtPlotPicker::trackerText(pos);
|
||||
text.setBackgroundBrush( QBrush( bg ));
|
||||
return text;
|
||||
}
|
||||
using QwtPlotPicker::trackerText;
|
||||
virtual QwtText trackerText(const QPoint &pos) const {
|
||||
|
||||
QColor bg(Qt::white);
|
||||
bg.setAlpha(200);
|
||||
QwtText text = QwtPlotPicker::trackerText(pos);
|
||||
text.setBackgroundBrush(QBrush(bg));
|
||||
return text;
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
191
slsDetectorGui/slsDetectorPlotting/include/SlsQt2DHist.h
Executable file → Normal file
191
slsDetectorGui/slsDetectorPlotting/include/SlsQt2DHist.h
Executable file → Normal file
@ -4,132 +4,131 @@
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
|
||||
#ifndef SLSQT2DHIST_H
|
||||
#define SLSQT2DHIST_H
|
||||
|
||||
|
||||
#if QT_VERSION >= 0x040000
|
||||
#include <qprintdialog.h>
|
||||
#endif
|
||||
#include <qwt_color_map.h>
|
||||
#include <qwt_plot_spectrogram.h>
|
||||
#include <qwt_scale_widget.h>
|
||||
#include <qwt_scale_draw.h>
|
||||
#include <qwt_scale_widget.h>
|
||||
|
||||
class SlsQt2DHist : public QwtRasterData {
|
||||
|
||||
class SlsQt2DHist: public QwtRasterData{
|
||||
|
||||
private:
|
||||
private:
|
||||
double x_min, x_max, y_min, y_max;
|
||||
double x_width, y_width;
|
||||
|
||||
double x_min,x_max,y_min,y_max;
|
||||
double x_width,y_width;
|
||||
int nx, ny, nb;
|
||||
double *data{nullptr};
|
||||
double z_min, z_mean, z_max;
|
||||
bool z_mean_has_been_calculated;
|
||||
|
||||
int nx,ny,nb;
|
||||
double *data{nullptr};
|
||||
double z_min,z_mean,z_max;
|
||||
bool z_mean_has_been_calculated;
|
||||
|
||||
int nx_array,ny_array;
|
||||
int nx_array, ny_array;
|
||||
|
||||
bool interp;
|
||||
bool interp;
|
||||
|
||||
static double value_between_points(double p1,double v1,double p2,double v2,double p){ //linear extrap
|
||||
return (v2-v1)/(p2-p1)*(p-p1)+v1;
|
||||
}
|
||||
|
||||
public:
|
||||
SlsQt2DHist(int nbinsx=10, double xmin=0, double xmax=10, int nbinsy=10, double ymin=0, double ymax=10, double* d=0,double zmin=0,double zmax=-1);
|
||||
virtual ~SlsQt2DHist();
|
||||
static double value_between_points(double p1, double v1, double p2,
|
||||
double v2, double p) { // linear extrap
|
||||
return (v2 - v1) / (p2 - p1) * (p - p1) + v1;
|
||||
}
|
||||
|
||||
double GetXMin() {return x_min;}
|
||||
double GetXMax() {return x_max;}
|
||||
double GetXBinWidth() {return x_width;}
|
||||
double GetYMin() {return y_min;}
|
||||
double GetYMax() {return y_max;}
|
||||
double GetYBinWidth() {return y_width;}
|
||||
double GetMinimum() {return z_min;}
|
||||
double GetMaximum() {return z_max;}
|
||||
double GetMean();
|
||||
public:
|
||||
SlsQt2DHist(int nbinsx = 10, double xmin = 0, double xmax = 10,
|
||||
int nbinsy = 10, double ymin = 0, double ymax = 10,
|
||||
double *d = 0, double zmin = 0, double zmax = -1);
|
||||
virtual ~SlsQt2DHist();
|
||||
|
||||
int GetNBinsX(){return nx;}
|
||||
int GetNBinsY(){return ny;}
|
||||
double GetBinValue(int bx,int by);
|
||||
int GetBinIndex(int bx,int by);
|
||||
double* GetDataPtr(){return data;}
|
||||
double GetXMin() { return x_min; }
|
||||
double GetXMax() { return x_max; }
|
||||
double GetXBinWidth() { return x_width; }
|
||||
double GetYMin() { return y_min; }
|
||||
double GetYMax() { return y_max; }
|
||||
double GetYBinWidth() { return y_width; }
|
||||
double GetMinimum() { return z_min; }
|
||||
double GetMaximum() { return z_max; }
|
||||
double GetMean();
|
||||
|
||||
void Interpolate(bool on=1) {interp=on;}
|
||||
void SetBinValue(int bx,int by,double v);
|
||||
void SetData(int nbinsx, double xmin, double xmax, int nbinsy,double ymin, double ymax,double *d,double zmin=0, double zmax=-1);
|
||||
|
||||
double SetMinimumToFirstGreaterThanZero();
|
||||
void SetMinimum(double zmin) {z_min=zmin;}
|
||||
void SetMaximum(double zmax) {z_max=zmax;}
|
||||
void SetMinMax(double zmin=0,double zmax=-1);
|
||||
int GetNBinsX() { return nx; }
|
||||
int GetNBinsY() { return ny; }
|
||||
double GetBinValue(int bx, int by);
|
||||
int GetBinIndex(int bx, int by);
|
||||
double *GetDataPtr() { return data; }
|
||||
|
||||
int FindBinIndex(double x, double y);
|
||||
void Interpolate(bool on = 1) { interp = on; }
|
||||
void SetBinValue(int bx, int by, double v);
|
||||
void SetData(int nbinsx, double xmin, double xmax, int nbinsy, double ymin,
|
||||
double ymax, double *d, double zmin = 0, double zmax = -1);
|
||||
|
||||
double SetMinimumToFirstGreaterThanZero();
|
||||
void SetMinimum(double zmin) { z_min = zmin; }
|
||||
void SetMaximum(double zmax) { z_max = zmax; }
|
||||
void SetMinMax(double zmin = 0, double zmax = -1);
|
||||
|
||||
int FindBinIndex(double x, double y);
|
||||
|
||||
virtual QwtRasterData *copy() const{
|
||||
//this function does not create a new SlsQt2DHistData instance,
|
||||
//just passes a pointer so that data is common to both the copy and the original instance
|
||||
return (QwtRasterData*) this;
|
||||
}
|
||||
virtual QwtRasterData *copy() const {
|
||||
// this function does not create a new SlsQt2DHistData instance,
|
||||
// just passes a pointer so that data is common to both the copy and the
|
||||
// original instance
|
||||
return (QwtRasterData *)this;
|
||||
}
|
||||
|
||||
|
||||
virtual QwtInterval range() const{ return QwtInterval(z_min,z_max);}
|
||||
virtual QwtInterval interval(Qt::Axis axis) const {
|
||||
switch (axis){
|
||||
case Qt::ZAxis:
|
||||
return QwtInterval(z_min,z_max);
|
||||
case Qt::XAxis:
|
||||
return QwtInterval(x_min,x_max);
|
||||
case Qt::YAxis:
|
||||
return QwtInterval(y_min,y_max);
|
||||
default:
|
||||
return QwtInterval(z_min,z_max);
|
||||
virtual QwtInterval range() const { return QwtInterval(z_min, z_max); }
|
||||
virtual QwtInterval interval(Qt::Axis axis) const {
|
||||
switch (axis) {
|
||||
case Qt::ZAxis:
|
||||
return QwtInterval(z_min, z_max);
|
||||
case Qt::XAxis:
|
||||
return QwtInterval(x_min, x_max);
|
||||
case Qt::YAxis:
|
||||
return QwtInterval(y_min, y_max);
|
||||
default:
|
||||
return QwtInterval(z_min, z_max);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
virtual double value(double x, double y) const {
|
||||
// if(!interp){ //default is box like plot
|
||||
int index =
|
||||
int((x - x_min) / x_width) + int((y - y_min) / y_width) * nx;
|
||||
if (index < 0 || index > nb)
|
||||
index = nb;
|
||||
if (!interp)
|
||||
return data[index];
|
||||
//}
|
||||
|
||||
int x_int = int((x - x_min) / x_width - 0.5);
|
||||
if (x_int < 0)
|
||||
x_int = 0;
|
||||
else if (x_int > nx - 2)
|
||||
x_int = nx - 2;
|
||||
int y_int = int((y - y_min) / y_width - 0.5);
|
||||
if (y_int < 0)
|
||||
y_int = 0;
|
||||
else if (y_int > ny - 2)
|
||||
y_int = ny - 2;
|
||||
|
||||
int b00 = x_int * ny + y_int;
|
||||
int b01 = x_int * ny + y_int + 1;
|
||||
int b10 = (x_int + 1) * ny + y_int;
|
||||
int b11 = (x_int + 1) * ny + y_int + 1;
|
||||
|
||||
virtual double value(double x, double y) const{
|
||||
//if(!interp){ //default is box like plot
|
||||
int index = int((x-x_min)/x_width) + int((y-y_min)/y_width)*nx;
|
||||
if(index<0||index>nb) index = nb;
|
||||
if(!interp) return data[index];
|
||||
//}
|
||||
// vertical extrap
|
||||
double y0 = y_min + (y_int + 0.5) * y_width;
|
||||
double y1 = y_min + (y_int + 1.5) * y_width;
|
||||
double left_v = value_between_points(y0, data[b00], y1, data[b01], y);
|
||||
double right_v = value_between_points(y0, data[b10], y1, data[b11], y);
|
||||
// horazontal extrap
|
||||
|
||||
|
||||
int x_int = int((x-x_min)/x_width-0.5);
|
||||
if(x_int<0) x_int = 0; else if(x_int>nx-2) x_int = nx-2;
|
||||
int y_int = int((y-y_min)/y_width-0.5);
|
||||
if(y_int<0) y_int = 0; else if(y_int>ny-2) y_int = ny-2;
|
||||
return 0.5;
|
||||
|
||||
int b00 = x_int*ny + y_int;
|
||||
int b01 = x_int*ny + y_int+1;
|
||||
int b10 = (x_int+1)*ny + y_int;
|
||||
int b11 = (x_int+1)*ny + y_int+1;
|
||||
|
||||
//vertical extrap
|
||||
double y0 = y_min+(y_int+0.5)*y_width;
|
||||
double y1 = y_min+(y_int+1.5)*y_width;
|
||||
double left_v = value_between_points(y0,data[b00],y1,data[b01],y);
|
||||
double right_v = value_between_points(y0,data[b10],y1,data[b11],y);
|
||||
//horazontal extrap
|
||||
|
||||
|
||||
|
||||
return 0.5;
|
||||
|
||||
|
||||
return value_between_points(x_min+(x_int+0.5)*x_width,left_v,
|
||||
x_min+(x_int+1.5)*x_width,right_v,x);
|
||||
}
|
||||
|
||||
return value_between_points(x_min + (x_int + 0.5) * x_width, left_v,
|
||||
x_min + (x_int + 1.5) * x_width, right_v,
|
||||
x);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
105
slsDetectorGui/slsDetectorPlotting/include/SlsQt2DPlot.h
Executable file → Normal file
105
slsDetectorGui/slsDetectorPlotting/include/SlsQt2DPlot.h
Executable file → Normal file
@ -1,93 +1,92 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
|
||||
#include <qwt_plot.h>
|
||||
#include <qlist.h>
|
||||
#include <qwt_plot.h>
|
||||
#include <qwt_plot_spectrogram.h>
|
||||
|
||||
#include "SlsQt2DZoomer.h"
|
||||
#include "SlsQt2DHist.h"
|
||||
#include "SlsQt2DHist.h"
|
||||
#include "SlsQt2DZoomer.h"
|
||||
|
||||
class QwtPlotPanner;
|
||||
class QwtScaleWidget;
|
||||
class QwtLinearColorMap;
|
||||
|
||||
class QwtPlotPanner;
|
||||
class QwtScaleWidget;
|
||||
class QwtLinearColorMap;
|
||||
|
||||
|
||||
class SlsQt2DPlot: public QwtPlot{
|
||||
class SlsQt2DPlot : public QwtPlot {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
public:
|
||||
SlsQt2DPlot(QWidget * = NULL);
|
||||
~SlsQt2DPlot();
|
||||
void SetTitle(QString title);
|
||||
void SetXTitle(QString title);
|
||||
void SetYTitle(QString title);
|
||||
void SetZTitle(QString title);
|
||||
void SetTitleFont(const QFont& f);
|
||||
void SetXFont(const QFont& f);
|
||||
void SetYFont(const QFont& f);
|
||||
void SetZFont(const QFont& f);
|
||||
void SetTitleFont(const QFont &f);
|
||||
void SetXFont(const QFont &f);
|
||||
void SetYFont(const QFont &f);
|
||||
void SetZFont(const QFont &f);
|
||||
|
||||
void UnZoom(bool replot=true);
|
||||
void SetZoom(double xmin,double ymin,double x_width,double y_width);
|
||||
void UnZoom(bool replot = true);
|
||||
void SetZoom(double xmin, double ymin, double x_width, double y_width);
|
||||
void DisableZoom(bool disable);
|
||||
void EnableXAutoScaling() {setAxisAutoScale(QwtPlot::xBottom, true);};
|
||||
void EnableYAutoScaling() {setAxisAutoScale(QwtPlot::yLeft, true);};
|
||||
void SetXMinMax(double min,double max){setAxisScale(QwtPlot::xBottom,min,max);};
|
||||
void SetYMinMax(double min,double max){setAxisScale(QwtPlot::yLeft,min,max);};
|
||||
double GetXMinimum(){return hist->GetXMin();};
|
||||
double GetXMaximum(){return hist->GetXMax();};
|
||||
double GetYMinimum(){return hist->GetYMin();};
|
||||
double GetYMaximum(){return hist->GetYMax();};
|
||||
double GetZMinimum(){ return hist->GetMinimum();}
|
||||
double GetZMaximum(){ return hist->GetMaximum();}
|
||||
void SetZMinMax(double zmin=0,double zmax=-1);
|
||||
void SetZMinimumToFirstGreaterThanZero(){hist->SetMinimumToFirstGreaterThanZero();}
|
||||
double GetZMean() { return hist->GetMean();}
|
||||
void EnableXAutoScaling() { setAxisAutoScale(QwtPlot::xBottom, true); };
|
||||
void EnableYAutoScaling() { setAxisAutoScale(QwtPlot::yLeft, true); };
|
||||
void SetXMinMax(double min, double max) {
|
||||
setAxisScale(QwtPlot::xBottom, min, max);
|
||||
};
|
||||
void SetYMinMax(double min, double max) {
|
||||
setAxisScale(QwtPlot::yLeft, min, max);
|
||||
};
|
||||
double GetXMinimum() { return hist->GetXMin(); };
|
||||
double GetXMaximum() { return hist->GetXMax(); };
|
||||
double GetYMinimum() { return hist->GetYMin(); };
|
||||
double GetYMaximum() { return hist->GetYMax(); };
|
||||
double GetZMinimum() { return hist->GetMinimum(); }
|
||||
double GetZMaximum() { return hist->GetMaximum(); }
|
||||
void SetZMinMax(double zmin = 0, double zmax = -1);
|
||||
void SetZMinimumToFirstGreaterThanZero() {
|
||||
hist->SetMinimumToFirstGreaterThanZero();
|
||||
}
|
||||
double GetZMean() { return hist->GetMean(); }
|
||||
|
||||
void SetData(int nbinsx, double xmin, double xmax, int nbinsy,double ymin, double ymax,double *d,double zmin=0, double zmax=-1){
|
||||
hist->SetData(nbinsx,xmin,xmax,nbinsy,ymin,ymax,d,zmin,zmax);
|
||||
void SetData(int nbinsx, double xmin, double xmax, int nbinsy, double ymin,
|
||||
double ymax, double *d, double zmin = 0, double zmax = -1) {
|
||||
hist->SetData(nbinsx, xmin, xmax, nbinsy, ymin, ymax, d, zmin, zmax);
|
||||
}
|
||||
|
||||
double* GetDataPtr() {return hist->GetDataPtr();}
|
||||
int GetBinIndex(int bx,int by) {return hist->GetBinIndex(bx,by);}
|
||||
int FindBinIndex(double x,double y) {return hist->FindBinIndex(x,y);}
|
||||
void SetBinValue(int bx,int by,double v) { hist->SetBinValue(bx,by,v);}
|
||||
double GetBinValue(int bx,int by) {return hist->GetBinValue(bx,by);}
|
||||
void FillTestPlot(int i=0);
|
||||
double *GetDataPtr() { return hist->GetDataPtr(); }
|
||||
int GetBinIndex(int bx, int by) { return hist->GetBinIndex(bx, by); }
|
||||
int FindBinIndex(double x, double y) { return hist->FindBinIndex(x, y); }
|
||||
void SetBinValue(int bx, int by, double v) { hist->SetBinValue(bx, by, v); }
|
||||
double GetBinValue(int bx, int by) { return hist->GetBinValue(bx, by); }
|
||||
void FillTestPlot(int i = 0);
|
||||
void Update();
|
||||
|
||||
void SetInterpolate(bool enable);
|
||||
void SetContour(bool enable);
|
||||
void SetLogz(bool enable, bool isMin, bool isMax, double min, double max);
|
||||
void SetZRange(bool isMin, bool isMax, double min, double max);
|
||||
void LogZ(bool on=1);
|
||||
|
||||
|
||||
void LogZ(bool on = 1);
|
||||
|
||||
public slots:
|
||||
public slots:
|
||||
void showSpectrogram(bool on);
|
||||
|
||||
|
||||
private:
|
||||
private:
|
||||
void SetupZoom();
|
||||
void SetupColorMap();
|
||||
QwtLinearColorMap* myColourMap(QVector<double> colourStops);
|
||||
QwtLinearColorMap* myColourMap(int log=0);
|
||||
QwtLinearColorMap *myColourMap(QVector<double> colourStops);
|
||||
QwtLinearColorMap *myColourMap(int log = 0);
|
||||
|
||||
QwtPlotSpectrogram *d_spectrogram{nullptr};
|
||||
SlsQt2DHist* hist{nullptr};
|
||||
SlsQt2DZoomer* zoomer{nullptr};
|
||||
QwtPlotPanner* panner{nullptr};
|
||||
SlsQt2DHist *hist{nullptr};
|
||||
SlsQt2DZoomer *zoomer{nullptr};
|
||||
QwtPlotPanner *panner{nullptr};
|
||||
QwtScaleWidget *rightAxis{nullptr};
|
||||
|
||||
QwtLinearColorMap* colorMapLinearScale{nullptr};
|
||||
QwtLinearColorMap* colorMapLogScale{nullptr};
|
||||
QwtLinearColorMap *colorMapLinearScale{nullptr};
|
||||
QwtLinearColorMap *colorMapLogScale{nullptr};
|
||||
QList<double> contourLevelsLinear;
|
||||
QList<double> contourLevelsLog;
|
||||
bool disableZoom{false};
|
||||
int isLog;
|
||||
};
|
||||
|
||||
|
74
slsDetectorGui/slsDetectorPlotting/include/SlsQt2DZoomer.h
Executable file → Normal file
74
slsDetectorGui/slsDetectorPlotting/include/SlsQt2DZoomer.h
Executable file → Normal file
@ -5,60 +5,50 @@
|
||||
* Dhanya-05.12.2012- included an additional header
|
||||
*/
|
||||
|
||||
|
||||
#ifndef SLSQT2DZOOMER_H
|
||||
#define SLSQT2DZOOMER_H
|
||||
|
||||
|
||||
|
||||
/**included by Dhanya on 05.12.2012 to avoid compile time errors with the latest gcc*/
|
||||
/**included by Dhanya on 05.12.2012 to avoid compile time errors with the latest
|
||||
* gcc*/
|
||||
#include <cstdio>
|
||||
/**end of Change by Dhanya*/
|
||||
|
||||
#include <qwt_plot_zoomer.h>
|
||||
#include <qwt_plot_panner.h>
|
||||
#include <qwt_plot_zoomer.h>
|
||||
|
||||
#include "SlsQt2DHist.h"
|
||||
|
||||
class SlsQt2DZoomer:public QwtPlotZoomer{
|
||||
private:
|
||||
SlsQt2DHist* hist;
|
||||
|
||||
public:
|
||||
|
||||
SlsQt2DZoomer(QWidget *canvas):QwtPlotZoomer(canvas){
|
||||
setTrackerMode(AlwaysOn);
|
||||
}
|
||||
|
||||
void SetHist(SlsQt2DHist* h){
|
||||
hist=h;
|
||||
}
|
||||
|
||||
|
||||
|
||||
virtual QwtText trackerTextF(const QPointF &pos) const{
|
||||
QColor bg(Qt::white);
|
||||
bg.setAlpha(200);
|
||||
|
||||
|
||||
|
||||
//QwtText text = QwtPlotZoomer::trackerText(pos);
|
||||
|
||||
static QwtText text;
|
||||
if(hist){
|
||||
static char t[200];
|
||||
sprintf(t,"%3.2f, %3.2f, %3.2f",pos.x(),pos.y(),hist->value(pos.x(),pos.y()));
|
||||
text.setText(t);
|
||||
}else {
|
||||
|
||||
QPoint p=pos.toPoint();
|
||||
QwtText text = QwtPlotZoomer::trackerText(p);
|
||||
|
||||
class SlsQt2DZoomer : public QwtPlotZoomer {
|
||||
private:
|
||||
SlsQt2DHist *hist;
|
||||
|
||||
public:
|
||||
SlsQt2DZoomer(QWidget *canvas) : QwtPlotZoomer(canvas) {
|
||||
setTrackerMode(AlwaysOn);
|
||||
}
|
||||
|
||||
void SetHist(SlsQt2DHist *h) { hist = h; }
|
||||
|
||||
virtual QwtText trackerTextF(const QPointF &pos) const {
|
||||
QColor bg(Qt::white);
|
||||
bg.setAlpha(200);
|
||||
|
||||
// QwtText text = QwtPlotZoomer::trackerText(pos);
|
||||
|
||||
static QwtText text;
|
||||
if (hist) {
|
||||
static char t[200];
|
||||
sprintf(t, "%3.2f, %3.2f, %3.2f", pos.x(), pos.y(),
|
||||
hist->value(pos.x(), pos.y()));
|
||||
text.setText(t);
|
||||
} else {
|
||||
|
||||
QPoint p = pos.toPoint();
|
||||
QwtText text = QwtPlotZoomer::trackerText(p);
|
||||
}
|
||||
text.setBackgroundBrush(QBrush(bg));
|
||||
return text;
|
||||
}
|
||||
text.setBackgroundBrush( QBrush( bg ));
|
||||
return text;
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user