CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ExclusionBandPlot.cc
Go to the documentation of this file.
1 // @(#)root/hist:$Id: ExclusionBandPlot.cc,v 1.4 2009/05/15 09:55:59 dpiparo Exp $
2 // Author: Danilo.Piparo@cern.ch 01/06/2008
3 
4 #include "assert.h"
5 #include "math.h"
6 
7 #if (defined (STANDALONE) or defined (__CINT__) )
8  #include "ExclusionBandPlot.h"
9 #else
11 #endif
12 #include "TGraphAsymmErrors.h"
13 #include "TStyle.h"
14 #include "TAxis.h"
15 
16 
17 //For Cint
18 #if (defined (STANDALONE) or defined (__CINT__) )
19 ClassImp(ExclusionBandPlot)
20 #endif
21 /*----------------------------------------------------------------------------*/
23  const char* title,
24  const int n_points,
25  double* x_vals,
26  double* y_vals,
27  double* y_up_points1,
28  double* y_down_points1,
29  double* y_up_points2,
30  double* y_down_points2):
31  StatisticalPlot(name,title,false){
32 
33  // Prepare errorbars
34  double* y_down_bars2 = new double[n_points];
35  double* y_down_bars1 = new double[n_points];
36  double* y_up_bars1 = new double[n_points];
37  double* y_up_bars2 = new double[n_points];
38 
39  for (int i=0;i<n_points;++i){
40  y_down_bars2[i]=y_vals[i]-y_down_points2[i];
41  y_down_bars1[i]=y_vals[i]-y_down_points1[i];
42  y_up_bars2[i]=y_up_points2[i]-y_vals[i];
43  y_up_bars1[i]=y_up_points1[i]-y_vals[i];
44  }
45 
46  // bline
47  m_y_line_graph = new TGraph(n_points, x_vals, y_vals);
48  m_y_line_graph->SetLineWidth(2);
49  m_y_line_graph->SetLineStyle(2);
50  m_y_line_graph->SetFillColor(kWhite);
51 
52 
53 
54  // y band 1 sigma
55  m_y_band_graph_1sigma = new TGraphAsymmErrors(n_points,
56  x_vals,
57  y_vals,
58  0,
59  0,
60  y_down_bars1,
61  y_up_bars1);
62  m_y_band_graph_1sigma->SetFillColor(kGreen);
63  m_y_band_graph_1sigma->SetLineColor(kGreen);
64  m_y_band_graph_1sigma->SetMarkerColor(kGreen);
65 
66  // y band 2 sigma
67  m_y_band_graph_2sigma = new TGraphAsymmErrors(n_points,
68  x_vals,
69  y_vals,
70  0,
71  0,
72  y_down_bars2,
73  y_up_bars2);
74  m_y_band_graph_2sigma->SetFillColor(kYellow);
75  m_y_band_graph_2sigma->SetFillColor(kYellow);
76  m_y_band_graph_2sigma->SetLineColor(kYellow);
77  m_y_band_graph_2sigma->SetMarkerColor(kYellow);
78  m_y_band_graph_2sigma->GetYaxis()->SetTitle("#sigma/#sigma_{SM}");
79 
80  // Line for 1
81  m_one_line = new TLine(m_y_line_graph->GetXaxis()->GetXmin(),1,
82  m_y_line_graph->GetXaxis()->GetXmax(),1);
83 
84  // The legend
85 
86  m_legend = new TLegend(0.60,0.78,0.98,0.98);
87  m_legend->SetName("SM exclusion");
88  m_legend->AddEntry(m_y_band_graph_1sigma,"#pm 1#sigma");
89  m_legend->AddEntry(m_y_band_graph_2sigma,"#pm 2#sigma");
90  m_legend->AddEntry(m_y_line_graph,title);
91 
92  m_legend->SetFillColor(0);
93 
94  delete[] y_down_bars2;
95  delete[] y_down_bars1;
96  delete[] y_up_bars2;
97  delete[] y_up_bars1;
98 
99  }
100 
101 /*----------------------------------------------------------------------------*/
102 
104 
105  delete m_y_line_graph;
106 
107  delete m_y_band_graph_1sigma;
108  delete m_y_band_graph_2sigma;
109 
110  delete m_one_line;
111 
112  delete m_legend;
113 
114  }
115 
116 /*----------------------------------------------------------------------------*/
117 
123  m_y_band_graph_2sigma->GetXaxis()->SetTitle(title);
124  }
125 
126 /*----------------------------------------------------------------------------*/
127 
133  m_y_band_graph_2sigma->GetYaxis()->SetTitle(title);
134  }
135 
136 /*----------------------------------------------------------------------------*/
137 
143  m_y_band_graph_2sigma->SetTitle(title);
144  }
145 
146 /*----------------------------------------------------------------------------*/
147 
148 void ExclusionBandPlot::draw (const char* options){
149 
150  setCanvas(new TCanvas(GetName(),GetTitle()));
151  getCanvas()->cd();
152 
153  getCanvas()->SetGridx();
154  getCanvas()->SetGridy();
155 
156  TString opt(options);
157  // Bands
158  if (opt.Contains("4")==0){
159  m_y_band_graph_2sigma->Draw("A3");
160  m_y_band_graph_1sigma->Draw("3");
161  }
162  else{
163  m_y_band_graph_2sigma->Draw("A4");
164  m_y_band_graph_1sigma->Draw("4");
165  }
166 
167  // Lines
168  if (opt.Contains("4")==0){
169  m_y_line_graph->Draw("L");
170  }
171  else{
172  m_y_line_graph->Draw("C");
173  }
174 
175  m_one_line->Draw("Same");
176 
177  // Legend
178  m_legend->Draw("Same");
179 
180  }
181 
182 /*----------------------------------------------------------------------------*/
183 
184 void ExclusionBandPlot::dumpToFile (const char* RootFileName, const char* options){
185 
186  TFile ofile(RootFileName,options);
187  ofile.cd();
188 
189  // Bands
190  m_y_band_graph_2sigma->Write("band_2sigma");
191  m_y_band_graph_1sigma->Draw("band_1sigma");
192 
193  // Lines
194  m_y_line_graph->Draw("line");
195 
196  // Legend
197  m_legend->Draw("IamTheLegend");
198 
199  ofile.Close();
200 
201  }
202 
203 /*----------------------------------------------------------------------------*/
204 
206  std::cout << "\nExclusionBandPlot object " << GetName() << ":\n";
207  }
208 
209 /*----------------------------------------------------------------------------*/
210 // Automatically converted from the standalone version Wed Apr 15 11:36:34 2009
int i
Definition: DBlmapReader.cc:9
TGraph * m_y_band_graph_1sigma
The band 1 sigma.
TGraph * m_y_band_graph_2sigma
The band 2 sigma.
TGraph * m_y_line_graph
The line.
void setCanvas(TCanvas *new_canvas)
Set the canvas.
void setTitle(const char *title)
Set the title of the plot.
void dumpToFile(const char *RootFileName, const char *options)
All the objects are written to rootfile.
~ExclusionBandPlot()
Destructor.
ExclusionBandPlot(const char *name, const char *title, const int n_points, double *x_vals, double *y_vals, double *y_up_bars1, double *y_down_bars1, double *y_up_bars2, double *y_down_bars2)
Constructor.
void setXaxisTitle(const char *title)
Set the title of the x axis.
StatisticalPlot: the base class for the statistical plots.
TLegend * m_legend
The legend.
void setYaxisTitle(const char *title)
Set the title of the x axis.
void draw(const char *options="")
Draw on canvas.
ExclusionBandPlot: plot a la tevatron for SM eclusion in function of mass.
TLine * m_one_line
The line at 1.
TCanvas * getCanvas()
Get the canvas.
tuple cout
Definition: gather_cfg.py:121
void print(const char *options="")
Print the relevant information.