00001
00002
00004 #ifndef __GwollumPlot__
00005 #define __GwollumPlot__
00006
00007 #include "CUtils.h"
00008 #include "TStyle.h"
00009 #include "TLine.h"
00010 #include "TMultiGraph.h"
00011 #include "TGraph.h"
00012 #include "TGraph2D.h"
00013 #include "TF1.h"
00014 #include "TH1.h"
00015 #include "TH2.h"
00016 #include "TPad.h"
00017 #include "TCanvas.h"
00018 #include "TLegend.h"
00019 #include "TText.h"
00020
00021 using namespace std;
00022
00035 class GwollumPlot{
00036
00037 public:
00038
00056 GwollumPlot(const string aName, const string aStyleName="GWOLLUM");
00057
00061 virtual ~GwollumPlot(void);
00062
00077 void AddText(const string aText, const double aX, const double aY, const double aSize, const int aPadIndex=0);
00078
00084 void UpdateText(const string aText);
00085
00092 void AddLegendEntry(const TObject *aObj, const string aLabel, const string aStyle="LPF");
00093
00098 void AddLegendHeader(const string aLabel);
00099
00103 void DrawLegend(void);
00104
00108 void ResetLegend(void){ Wleg->Clear(); Wpad->SetPad(0,0,1,1); Wpad->Modified(1); Wpad->Update();};
00109
00116 inline void Draw(TObject *aObj, const string aOptions="", const int aPadIndex=0){ Wpad->cd(aPadIndex); aObj->Draw(aOptions.c_str()); gPad->Modified(); gPad->Update();};
00117
00122 inline void Print(const string aFileName){ Wcan->cd(); Wcan->Print(aFileName.c_str()); };
00123
00132 void Print(const string aFileName, const double aScaleFactor);
00133
00142 inline void SetLogx(const int aValue, const int aPadIndex=0){ Wpad->cd(aPadIndex); gPad->SetLogx(aValue); gPad->Modified(); gPad->Update(); };
00143
00152 inline void SetLogy(const int aValue, const int aPadIndex=0){ Wpad->cd(aPadIndex); gPad->SetLogy(aValue); gPad->Modified(); gPad->Update(); };
00153
00162 inline void SetLogz(const int aValue, const int aPadIndex=0){ Wpad->cd(aPadIndex); gPad->SetLogz(aValue); gPad->Modified(); gPad->Update(); };
00163
00169 inline void SetGridx(const int aValue=1, const int aPadIndex=0){ Wpad->cd(aPadIndex); gPad->SetGridx(aValue); gPad->Modified(); gPad->Update(); };
00170
00176 inline void SetGridy(const int aValue=1, const int aPadIndex=0){ Wpad->cd(aPadIndex); gPad->SetGridy(aValue); gPad->Modified(); gPad->Update(); };
00177
00182 inline void RedrawAxis(Option_t* option="", int aPadIndex=0){ Wpad->cd(aPadIndex); gPad->RedrawAxis(option); gPad->Modified(); gPad->Update(); };
00183
00192 inline void ResizePlot(const int aWidth, const int aHeight){ Wcan->SetCanvasSize(aWidth,aHeight); Wcan->Modified(); Wcan->Update(); };
00193
00198 inline void DivideCanvas(const int aNpads){ Wpad->DivideSquare(aNpads); };
00199
00205 inline void DivideCanvas(const int aNx, const int aNy){ Wpad->Divide(aNx,aNy); };
00206
00210 inline string GetCurrentStyle(void){ return stylename; };
00211
00212
00213 protected:
00214
00215 int randid;
00216 string srandid;
00217
00218
00219 TStyle *Wstyle;
00220 string stylename;
00221
00222
00223 TCanvas *Wcan;
00224 TPad *Wpad;
00225
00226
00227 TLegend *Wleg;
00228 TText *Wtext;
00229
00230 private:
00231
00232 void SetGwollumStyle(void);
00233 void SetFireStyle(void);
00234 void SetStandardStyle(void);
00235
00236
00237
00238 ClassDef(GwollumPlot,0)
00239 };
00240
00241 #endif
00242
00243