ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/mschen/PlotUtilities_standalone.h
Revision: 1.1
Committed: Tue Sep 4 15:58:08 2012 UTC (12 years, 7 months ago) by mschen
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Log Message:

for plotting

File Contents

# User Rev Content
1 mschen 1.1 #ifndef PLOTUTILITIES_H
2     #define PLOTUTILITIES_H
3     #include <TString.h>
4     #include <string>
5     #include <TPaveText.h>
6     #include <TLegend.h>
7     #include <TGraph.h>
8     #include <TGraphErrors.h>
9     #include <TGraphAsymmErrors.h>
10     #include <TH1F.h>
11     #include <TF1.h>
12     #include <TFile.h>
13     #include <TSystem.h>
14     #include <TObject.h>
15     #include <TROOT.h>
16     #include <TCanvas.h>
17     #include <TArrow.h>
18     #include <TTree.h>
19    
20     using namespace std;
21    
22     void DrawCMS(string cms="CMS Preliminary", double x1=0.7, double y1=0.9, double x2=0.8, double y2=1.0, double txtsize=0.05); //FIXME: don't do this inside class
23     TPaveText* SetTPaveText (Double_t x1,
24     Double_t y1,
25     Double_t x2,
26     Double_t y2);
27     TLegend* DrawLegend (Float_t x1,
28     Float_t y1,
29     TH1F* hist,
30     TString label,
31     TString option,
32     Float_t tsize = 0.04,
33     Float_t xoffset = 0.25,
34     Float_t yoffset = 0.15);
35     TLegend* DrawLegend (Float_t x1,
36     Float_t y1,
37     TGraph* hist,
38     TString label,
39     TString option,
40     Float_t tsize = 0.04,
41     Float_t xoffset = 0.25,
42     Float_t yoffset = 0.15);
43     void MoveLegend(TLegend *leg, Float_t x1,
44     Float_t y1, Float_t xoffset=0.25, Float_t yoffset=0.15);
45     void Save(TCanvas *cCanvas, string _ssave);
46     void DrawText(double x1, double y1, double x2, double y2, TString text, double size = 0.045);
47     class PlotWithBelts{
48     public:
49     PlotWithBelts()
50     :cCanvas(NULL),legend(NULL),pt(NULL),gGreen(NULL),
51     gYellow(NULL),lineOne(NULL),gr(NULL),
52     grobs(NULL),ptCMSPreli(NULL)
53     {};
54     ~PlotWithBelts();
55     PlotWithBelts(
56     double *r1sigLt, double *r1sigHt,
57     double *r2sigLt, double *r2sigHt,
58     double *rmeant, int npointst,
59     double *xpointst, string ssavetmp, TPaveText *pttmp,
60     double xmintmp =100, double xmaxtmp =260, double ymintmp=0.5, double ymaxtmp=100, bool logYtmp=true,
61     string stitlet ="; Higgs mass, m_{H} (GeV/c^{2}); Exclusion Limit, r = #sigma_{95%}/#sigma_{SM}");
62     PlotWithBelts(
63     double *r1sigLt, double *r1sigHt,
64     double *r2sigLt, double *r2sigHt,
65     double *rmeant, double *robst, int npointst,
66     double *xpointst, string ssavetmp, TPaveText *pttmp,
67     double xmintmp =100, double xmaxtmp =260, double ymintmp=0.5, double ymaxtmp=100, bool logYtmp=true,
68     string stitlet ="; Higgs mass, m_{H} (GeV/c^{2}); Exclusion Limit, r = #sigma_{95%}/#sigma_{SM}");
69     TGraph *getGreenGraph(){return gGreen;};
70     TGraph *getYellowGraph(){return gYellow;};
71     TGraph *getMeanGraph(){return gr;};
72     TGraph *getObsGraph(){return grobs;};
73     TLine *getLine(){return lineOne;};
74     TPaveText *getTitlePT(){return pt;};
75     TPaveText *getCMSPT(){return ptCMSPreli;};
76    
77     TCanvas *getCanvas(){return cCanvas;};
78     TLegend *getLegend(){return legend;};
79     void setSavePath(string tmp){ssave=tmp;};
80     void drawLegend(string s_gr, string s_gGreen, string s_gYellow, string s_grobs="");
81     void plot();
82     void save();
83     void clear();
84    
85     TH1F * getFrame(){return hframe;};
86    
87     private:
88     TCanvas *cCanvas;
89     TLegend *legend;
90     bool logY;
91     string stitle;
92     string ssave;
93    
94     double xmin, xmax, ymin, ymax;
95     TPaveText *pt;
96     TGraph *gGreen;
97     TGraph *gYellow;
98     TLine *lineOne;
99     TGraph *gr;
100     TGraph *grobs;
101     TPaveText *ptCMSPreli;
102    
103     int bDrawGrobs;
104     double *r1sigL, *r1sigH, *r2sigL, *r2sigH, *rmean, *robs, *xpoints;
105     int npoints;
106    
107    
108     TH1F* hframe;
109    
110     };
111     class DrawSigBkgPdfs{
112     public:
113     DrawSigBkgPdfs(double (*pdfs)(double *, double *), double *pars, int npars,
114     double (*pdfb)(double *, double *), double *parb, int nparb, double Ns, double Nb,
115     double xstart, double xstop, bool logY, string ssave, string stitle, bool debug=0);
116     ~DrawSigBkgPdfs();
117     void draw();
118     void save();
119     TCanvas *getCanvas(){return cCanvas;};
120     TLegend *getLegend(){return legend;};
121     void setSavePath(string tmp){_ssave=tmp;};
122     void drawLegend(string s_tot, string s_s, string s_b);
123     void setLogY(bool b){_logY=b;};
124     void setDebug(bool b){_debug=b;};
125    
126     TH1F *getHistS(){return hs;};
127     TH1F *getHistB(){return hb;};
128     TH1F *getHistTot(){return htot;};
129     TF1 *getTf1S(){return fs;};
130     TF1 *getTf1B(){return fb;};
131     private:
132     TCanvas *cCanvas;
133     string _ssave;
134     string _stitle;
135     bool _logY;
136     TLegend *legend;
137     bool _debug;
138    
139     TF1 *fs;
140     TF1 *fb;
141     double (*_pdfs)(double *x, double *par); // normalized to unity
142     double (*_pdfb)(double *x, double *par); // normalized to unity
143     double *_pars;
144     double *_parb;
145     int _npars, _nparb;
146     double _Ns, _Nb;
147     double _xstart, _xstop;
148     TH1F *hs, *hb, *htot;
149     };
150     class DrawEvolution2D{
151     public:
152     DrawEvolution2D(vector<double> vx, vector<double> vy, string stitle, string ssave, TPaveText *pt, bool debug=0);
153     ~DrawEvolution2D();
154    
155     void draw();
156     void save();
157     TCanvas *getCanvas(){return cCanvas;};
158     TLegend *getLegend(){return legend;};
159     void setSavePath(string tmp){_ssave=tmp;};
160     //void drawLegend(string s_tot, string s_s, string s_b){};
161     void setLogY(bool b){_logY=b;};
162     void setDebug(bool b){_debug=b;};
163     TPaveText *getTitlePT(){return _pt;};
164     TGraph *getGraph(){return graph;};
165     TLine *getLine(){return lineOne;};
166     private:
167     TCanvas *cCanvas;
168     string _ssave;
169     string _stitle;
170     bool _logY;
171     TLegend *legend;
172     bool _debug;
173     TPaveText *_pt;
174    
175     vector<double> _vx, _vy;
176    
177     TLine *lineOne;
178     TGraph *graph;
179     };
180     class PlotXvsCummulativeProb{
181     public:
182     PlotXvsCummulativeProb(
183     double* vx_not_sorted, int nexps,
184     string ssave, string stitle,TPaveText *pt);
185     PlotXvsCummulativeProb(
186     vector<double> vx_not_sorted,
187     string ssave, string stitle,TPaveText *pt);
188     PlotXvsCummulativeProb(
189     vector<double> vx_sorted,
190     vector<double> vcumulaP_sorted,
191     double m1s, double p1s, double m2s, double p2s,
192     string ssave, string stitle,TPaveText *pt);
193     ~PlotXvsCummulativeProb();
194     void draw();
195     void save();
196     TCanvas *getCanvas(){return cCanvas;};
197     TLegend *getLegend(){return legend;};
198     void setSavePath(string tmp){_ssave=tmp;};
199     //void drawLegend(string s_tot, string s_s, string s_b){};
200     void setLogY(bool b){_logY=b;};
201     void setDebug(bool b){_debug=b;};
202     TPaveText *getTitlePT(){return _pt;};
203     TGraphErrors *getGraph(){return graph;};
204     TLine *getLine(){return lineOne;};
205     TH1F *getDifferencialHist(){return diffHist;};
206     void setGraphDrawOption(string so){_graphOption=so;};
207    
208     // --- to show the error bar of bins
209     void setTotalExps(int nexps){_nexps=nexps;};
210     void setShowErrorBar(bool b){bShowErrorBar=b;}
211    
212     void drawDifferencial(string stitle, string ssave);
213    
214     private:
215     TCanvas *cCanvas;
216     string _ssave;
217     string _stitle;
218     bool _logY;
219     TLegend *legend;
220     bool _debug;
221     TPaveText *_pt;
222    
223     vector<double> _vx, _vy;
224    
225     TLine *lineOne;
226     TGraphErrors *graph;
227     TH1F *diffHist;
228    
229     double _1SigmaLow, _1SigmaHigh, _2SigmaLow, _2SigmaHigh;
230    
231     bool bShowErrorBar;
232     int _nexps;
233    
234     string _graphOption;
235     };
236     class DrawPdfM2logQ{
237     public:
238     DrawPdfM2logQ(vector<double> vPdfM2logQ_sb, vector<double> vPdfM2logQ_b,
239     double m2lnQ_d, string sdata, string stitle, string ssave, TPaveText *pt); // show the famous -2lnQ with s, b, d
240     DrawPdfM2logQ(vector< pair<double,double> > vPdfM2logQ_sb, vector< pair<double,double> > vPdfM2logQ_b,
241     double m2lnQ_d, string sdata, string stitle, string ssave, TPaveText *pt); // show the famous -2lnQ with s, b, d
242     ~DrawPdfM2logQ();
243     void draw(); void draw2Hist(); void draw2Graph();
244     TCanvas *getCanvas(){return cCanvas;};
245     TLegend *getLegend(){return legend;};
246     void setSavePath(string tmp){_ssave=tmp;};
247     void drawLegend(string s_sb, string s_b, string s_d);
248     void setLogY(bool b){_logY=b;};
249     void setDebug(bool b){_debug=b;};
250     TPaveText *getTitlePT(){return _pt;};
251     TLine *getLine(){return lineOne;};
252     TGraph *getSignalGraph(){return gSB;};
253     TGraph *getBackgroundGraph(){return gB;};
254     TH1F *getSignalHist(){return hSB;};
255     TH1F *getBackgroundHist(){return hB;};
256     private:
257     TCanvas *cCanvas;
258     string _ssave;
259     string _stitle;
260     bool _logY;
261     TLegend *legend;
262     bool _debug;
263     TPaveText *_pt;
264     TLine *lineOne;
265    
266     TGraph *gSB, *gB;
267     TH1F *hSB, *hB;
268    
269     string _lineTitle;
270     double _m2lnQ_d;
271     vector<double> _vsb, _vb; //inputs from pseudo experiments
272     vector< pair<double,double> > _vpsb, _vpb; // inputs from analytic formula
273     // tag the inputs are _vsb or _vpsb
274     bool bFromPseudoExps;
275     };
276    
277     const int maxNumGraphs=10;
278     const int _glineStyle[maxNumGraphs]={2,2,8,8,1,1, 1,1,1,1};
279     const int _glineColor[maxNumGraphs]={4,2,6,1,5,3, 3, 3, 3, 3};
280     const int _gmarkerStyle[maxNumGraphs]={20,24,3,26,22,23, 23,23,23,23};
281     class DrawMultiGraph{
282     public:
283     DrawMultiGraph(double *x1, double *y1, int n1, string title1,
284     string stitle, string ssave, TPaveText *pt,
285     double xmin, double xmax, double ymin, double ymax, bool logY);
286     DrawMultiGraph(double *x1, double *y1, int n1, string title1,
287     double *x2, double *y2, int n2, string title2, string stitle, string ssave, TPaveText *pt,
288     double xmin, double xmax, double ymin, double ymax, bool logY);
289     ~DrawMultiGraph();
290     void add(double *x, double *y, int n, string title);
291     void draw();
292     TGraph* getGraph(int i){if(i<maxNumGraphs && i>=0) return _gr[i];else return 0;};
293    
294     TLegend *getLegend(){
295     //cout<<"delete me2 legendY2="<<legend->GetY2()<<endl;
296     return legend;};
297     void setSavePath(string tmp){_ssave=tmp;};
298     //void drawLegend(string s_sb, string s_b, string s_d);
299     void setLogY(bool b){_logY=b;};
300     void setDebug(bool b){_debug=b;};
301     TPaveText *getTitlePT(){return _pt;};
302     TLine *getLine(){return lineOne;};
303     TCanvas *getCanvas(){return cCanvas;};
304     void drawOption(int i, string op){if(i<maxNumGraphs && i>=0)_drawOptions[i]=op;};
305     void setLegendXY(double x, double y){legendX=x; legendY=y;};
306     //void save();
307     private:
308     TCanvas *cCanvas;
309     string _ssave;
310     string _stitle;
311     bool _logY;
312     TLegend *legend;
313     bool _debug;
314     TPaveText *_pt;
315     TLine *lineOne;
316    
317     TGraph *_gr[maxNumGraphs];//currenly limit to maxNumGraphs graphs..
318     int _numGraphAdded;
319     double *_x[maxNumGraphs], *_y[maxNumGraphs];
320     int _n[maxNumGraphs];
321     string _title[maxNumGraphs];
322     double _xmin,_xmax,_ymin,_ymax;
323     string _drawOptions[maxNumGraphs];
324     double legendX, legendY;
325     };
326     class DrawPdfRLikelihood{
327     public:
328     DrawPdfRLikelihood(double r95, double *par, int npar, string stitle, string ssave, TPaveText *pt);
329     ~DrawPdfRLikelihood();
330     void draw();
331     TH1F* getHist(){return hist;};
332    
333     TLegend *getLegend(){return legend;};
334     void setSavePath(string tmp){_ssave=tmp;};
335     //void drawLegend(string s_hist, string s_arrow){};
336     void setLogY(bool b){_logY=b;};
337     void setDebug(bool b){_debug=b;};
338     TPaveText *getTitlePT(){return _pt;};
339     TArrow *getArrow(){return arrow;};
340    
341     private:
342     TCanvas *cCanvas;
343     string _ssave;
344     string _stitle;
345     bool _logY;
346     TLegend *legend;
347     bool _debug;
348     TPaveText *_pt;
349     TArrow *arrow;
350     TH1F *hist;
351     bool _bUnbinned;
352     double _r95;
353     double *_par;
354     int _npar;
355     };
356     void GetMuHat(TTree *tree, vector<double>& inputMH, vector<double>& inputLimits );
357     void GetMuHat(TTree *tree, vector<double>& inputMH, vector<double>& inputLimits , vector<double> & inputLimitErrsUp, vector<double>& inputLimitErrsDn );
358     void GetLimits(TTree *tree, vector<double>& inputMH, vector<double>& inputLimits, vector<double> & inputLimitErrs );
359     void GetPValues(TTree *tree, vector<double>& inputMH, vector<double>& inputLimits, vector<double> & inputLimitErrs_m2s, vector<double> & inputLimitErrs_m1s, vector<double>&inputLimitErrs_p1s, vector<double>&inputLimitErrs_p2s );
360     void GetLimitBands(TTree *tree, vector<double>& inputMH, vector<double>& inputLimits, vector<double> & inputLimitsM2S, vector<double>& inputLimitsM1S,
361     vector<double>& inputLimitsMEDIAN, vector<double>& inputLimitsP1S, vector<double>& inputLimitsP2S);
362     TGraph* GetBeltGraph(const vector<double>& xpoints, const vector<double>& vup, const vector<double> & vdn);
363    
364     TGraph* GetMuHatGraph(TTree *tree );
365     TGraphAsymmErrors* GetMuHatGraphAsymm(TTree *tree );
366     TGraph* GetLimitsGraph(TTree *tree );
367     TGraph* GetPValuesGraph(TTree *tree );
368     TObject* GetTObject(string filename, string objname);
369     #endif /* ----- #ifndef PLOTUTILITIES_H ----- */