00001 #ifndef _QG_PLOT_HH_ 00002 #define _QG_PLOT_HH_ 00003 00011 #include <list> 00012 #include <string> 00013 #include <vector> 00014 #include "Rtypes.h" 00015 00016 class QChain; 00017 class QGCanvasWindow; 00018 class QGPlotEditWindow; 00019 class TCanvas; 00020 00021 class QGPlot { 00022 public: 00024 QGPlot(); 00025 00027 QGPlot(const QGPlot&); 00028 00030 virtual ~QGPlot(); 00031 00033 virtual void AddCut(const std::string& cut); 00034 00036 virtual void AutoSetStyle(); 00037 00039 virtual void Display(); 00040 00042 virtual void DisplayEditWindow(); 00043 00045 virtual void Duplicate(); 00046 00048 virtual void Erase(); 00049 00051 virtual void Generate(QChain *chain = 0); 00052 00054 virtual std::string GeneratePlotName(const std::string& baseName) const; 00055 00057 virtual TCanvas *GetCanvas(); 00058 00060 virtual QGCanvasWindow *GetCanvasWindow() const {return fCanvasWindow;} 00061 00063 virtual void GetCanvasWindowFromEditWindow(); 00064 00066 virtual const std::vector<std::string>& GetCuts() const {return fCuts;} 00067 00069 virtual void GetCutsFromEditWindow(); 00070 00072 virtual QGPlotEditWindow *GetEditWindow() {return fPlotEditWindow;} 00073 00075 virtual const char *GetName() const; 00076 00078 virtual void GetParametersFromEditWindow(); 00079 00081 static QGPlot *GetPlotByName(const std::string& name); 00082 00084 static const std::list<QGPlot*>& GetPlots() {return fPlots;} 00085 00087 virtual const std::string& GetXUnits() const {return fXUnits;} 00088 00090 virtual const std::string& GetXVariable() const {return fXVariable;} 00091 00093 virtual const std::string& GetYUnits() const {return fYUnits;} 00094 00096 virtual const std::string& GetYVariable() const {return fYVariable;} 00097 00099 virtual bool IsNameInUse(const std::string& name) const; 00100 00102 virtual bool IsSuperimposeSet() const {return fSuperimpose;} 00103 00105 virtual void MakeCutsString(); 00106 00108 virtual bool NeedsRegeneration() const {return fNeedsRegeneration;} 00109 00111 virtual void Plot(); 00112 00114 virtual void SetCanvasWindow(QGCanvasWindow *window); 00115 00117 virtual void SetCuts(const std::vector<std::string>& cuts); 00118 00120 virtual void SetName(const char *name = 0); 00121 00123 virtual void SetPlotEditWindow(QGPlotEditWindow *window) {fPlotEditWindow = window;} 00124 00126 virtual void SetProperty(const std::string& key, const std::string& value); 00127 00129 virtual void SetRegenerate(bool flag = true) {fNeedsRegeneration = flag;} 00130 00132 virtual void SetSuperimpose(bool flag = false) {fSuperimpose = flag;} 00133 00135 virtual void SetXVariable(const std::string& x); 00136 00138 virtual void SetXUnits(const std::string& units) {fXUnits = units;} 00139 00141 virtual void SetYVariable(const std::string& y); 00142 00144 virtual void SetYUnits(const std::string& units) {fYUnits = units;} 00145 00147 static void ShowPlotsList(); 00148 00149 protected: 00151 QGCanvasWindow *fCanvasWindow; 00152 00154 std::vector<std::string> fCuts; 00155 00157 std::string fCutsString; 00158 00160 bool fNeedsRegeneration; 00161 00163 QGPlotEditWindow *fPlotEditWindow; 00164 00166 static std::list<QGPlot*> fPlots; 00167 00169 bool fSuperimpose; 00170 00172 std::string fXVariable; 00173 00175 std::string fXUnits; 00176 00178 std::string fYVariable; 00179 00181 std::string fYUnits; 00182 00183 ClassDef(QGPlot, 0) 00184 }; 00185 00186 #endif