QIGUIPlot.hh
00001 #ifndef _QIGUI_PLOT__H_
00002 #define _QIGUI_PLOT__H_
00003
00004 #include <QObject>
00005 #include <QString>
00006 #include <vector>
00007 #include <map>
00008 #include <TCanvas.h>
00009
00010 class QIGUIPlotData;
00011 class QIGUICoSessionHandler;
00012
00013 class QIGUIPlot: public QObject
00014 {
00015
00016 public:
00017 QIGUIPlot (QObject * parent = 0);
00018 QIGUIPlot (QString name, QObject * parent = 0);
00019 QIGUIPlot (QIGUIPlotData * data, QObject * parent = 0);
00020 virtual ~QIGUIPlot();
00021
00022 protected:
00023 QIGUIPlotData * fPlotData;
00024 bool fNeedsRegeneration;
00025 QString fXVariable;
00026 QString fYVariable;
00027 QString fZVariable;
00028 std::map <QString, QString> fLimits;
00029 int fNEvents;
00030 Double_t fXMax, fXMin, fYMax, fYMin;
00031 int fNBins;
00032
00033
00034 QIGUICoSessionHandler * fCoSessionHandler;
00035 bool fCoAnalysis;
00036 bool fCoBased;
00037 bool fCoXVar;
00038 bool fCoYVar;
00039
00040 public:
00041
00042 QIGUIPlotData * GetPlotData() {return fPlotData;}
00043 void SetPlotData(QIGUIPlotData * d) {fPlotData = d;}
00044 void SetRegenerate(bool flag = true) {fNeedsRegeneration = flag;}
00045 bool NeedsRegeneration () {return fNeedsRegeneration;}
00046 void SetVariables (QString xvar, QString yvar = "", QString zvar = "");
00047 void SetXVariable (QString var);
00048 void SetYVariable (QString var);
00049 void SetZVariable (QString var);
00050 QString GetXVariable () {return fXVariable;}
00051 QString GetYVariable () {return fYVariable;}
00052 QString GetZVariable () {return fZVariable;}
00053 int GetNEvents() {return fNEvents;}
00054 Double_t GetXMax() {return fXMax;}
00055 Double_t GetXMin() {return fXMin;}
00056 Double_t GetYMax() {return fYMax;}
00057 Double_t GetYMin() {return fYMin;}
00058 int GetNBins() {return fNBins;}
00059 Double_t GetBinWidth() {return (fXMax-fXMin)/fNBins;}
00060
00061 void SetLimit(QString limitName, QString limit) {fLimits[limitName]=limit;}
00062 virtual void ResetLimits(){};
00063 void ResetLimit(QString key) { fLimits[key] = ""; }
00064 QString GetLimit(QString limitName) {return fLimits[limitName];}
00065
00066 void SetCoSessionHandler(QIGUICoSessionHandler * handler) {fCoSessionHandler = handler;}
00067 QIGUICoSessionHandler * GetCoSessionHandler() { return fCoSessionHandler;}
00068
00069
00070 void Init();
00071
00072
00073 virtual int Generate()=0;
00074 virtual int Display(bool superimpose, Color_t color=1, TPad *pad = 0)=0;
00075
00076
00077
00078 virtual QString ChangeLimit(QString limitName, QString limit)=0;
00079
00080 virtual void UnZoom()=0;
00081
00082
00083 void ToggleCoAnalysis (bool);
00084 void ToggleCoBased (bool);
00085 void ToggleCoXVar (bool);
00086 void ToggleCoYVar (bool);
00087
00088
00089 protected:
00090
00091 TObject * fClone;
00092
00093 };
00094
00095 #endif