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     // CoAnalysis
00034     QIGUICoSessionHandler * fCoSessionHandler;
00035     bool fCoAnalysis;
00036     bool fCoBased;
00037     bool fCoXVar;
00038     bool fCoYVar;
00039  
00040   public:
00041     // setters and getters
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     // Initialization
00070     void Init();
00071 
00072     // Pure virtual methods
00073     virtual int Generate()=0;
00074     virtual int Display(bool superimpose, Color_t color=1, TPad *pad = 0)=0;
00075 
00076     // Change limit. if limit="", look for the correct value in the data
00077     // return the limit setted
00078     virtual QString ChangeLimit(QString limitName, QString limit)=0;
00079     // Unzoom
00080     virtual void UnZoom()=0;
00081 
00082     // CoAnalysis
00083     void ToggleCoAnalysis (bool);
00084     void ToggleCoBased (bool);
00085     void ToggleCoXVar (bool);
00086     void ToggleCoYVar (bool);
00087 
00088     // Auxiliar
00089     protected: 
00090     // Poiter to plotted oject
00091     TObject * fClone;
00092   
00093 };
00094 
00095 #endif

Generated on Tue Nov 16 10:49:59 2010 for CUORE Software by  doxygen 1.5.6