ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/IPHCalignment2/analysis/Layout.cpp
Revision: 1.10
Committed: Wed Dec 7 18:31:52 2011 UTC (13 years, 4 months ago) by cgoetzma
Branch: MAIN
CVS Tags: TBD2011, HEAD
Changes since 1.9: +5 -3 lines
Log Message:
chris mod

File Contents

# Content
1 #include "Layout.h"
2 #include <sstream>
3 #include <TPaveText.h>
4 #include <TLatex.h>
5 #include <iostream>
6 using namespace std;
7
8 void Layout::DrawInit()
9 {
10 gStyle->SetCanvasColor(0);
11 gStyle->SetCanvasBorderMode(0);
12 gStyle->SetCanvasBorderSize(3);
13
14 gStyle->SetPadLeftMargin(0.125);
15 gStyle->SetPadBottomMargin(0.12);
16 gStyle->SetPadColor(0);
17 gStyle->SetPadBorderMode(0);
18
19 gStyle->SetFrameBorderMode(0);
20 gStyle->SetFrameBorderSize(0);
21 gStyle->SetFrameFillColor(0);
22 // gStyle->SetOptStat(0);
23
24 gStyle->SetLabelOffset(0.005,"X");
25 gStyle->SetLabelSize(0.03,"X");
26 gStyle->SetLabelFont(22,"X");
27
28 gStyle->SetTitleOffset(1.1,"X");
29 gStyle->SetTitleSize(0.04,"X");
30 gStyle->SetTitleFont(22,"X");
31
32 gStyle->SetLabelOffset(0.005,"Y");
33 gStyle->SetLabelSize(0.03,"Y");
34 gStyle->SetLabelFont(22,"Y");
35
36 gStyle->SetTitleOffset(1.1,"Y");
37 gStyle->SetTitleSize(0.04,"Y");
38 gStyle->SetTitleFont(22,"Y");
39
40 gStyle->SetStatColor(0);
41 gStyle->SetStatBorderSize(0);
42
43 gStyle->SetTextFont(2);
44 gStyle->SetTextSize(.05);
45
46 gStyle->SetLegendBorderSize(1);
47
48 gStyle->SetHistLineWidth(2);
49
50 gStyle->SetTitleFillColor(0);
51 gStyle->SetTitleFontSize(0.05);
52 gStyle->SetTitleBorderSize(0);
53 gStyle->SetTitleAlign(13);
54 gStyle->SetTextAlign(22);
55
56 //Canvas declaration and configuration
57 // TCanvas *c1 = new TCanvas("c1", "plots",200,10,800,600);
58
59 //General ROOT style setup
60 gStyle->SetOptDate(0);
61 gStyle->SetStatColor(0);
62 gStyle->SetTitleColor(1);
63 gStyle->SetOptStat(0);
64 gStyle->SetPalette(1);
65
66 const Int_t NRGBs = 5;
67 const Int_t NCont = 255;
68
69 Double_t stops[NRGBs] = { 0.00, 0.34, 0.61, 0.84, 1.00 };
70 Double_t red[NRGBs] = { 0.00, 0.00, 0.87, 1.00, 0.51 };
71 Double_t green[NRGBs] = { 0.00, 0.81, 1.00, 0.20, 0.00 };
72 Double_t blue[NRGBs] = { 0.51, 1.00, 0.12, 0.00, 0.00 };
73 TColor::CreateGradientColorTable(NRGBs, stops, red, green, blue, NCont);
74 gStyle->SetNumberContours(NCont);
75
76
77 }
78
79
80 void Layout::Draw(const std::string title, const std::vector<HistoBlock>& histos,
81 const std::string& xlabel, bool fit, float K, float MU, float SIG)
82 {
83 std::cout << "----------------- Draw : " << histos[0].histo->GetName() << std::endl;
84
85 // safety
86 if (histos.empty()) return;
87
88 // Create a new canvas
89 TCanvas* mycanvas = new TCanvas((std::string(histos[0].histo->GetName())+
90 "_canvas").c_str(),
91 histos[0].histo->GetTitle());
92 // SetLineColor
93 for (unsigned int i=0;i<histos.size();i++)
94 {
95 histos[i].histo->SetLineColor( histos[i].linecolor );
96 }
97
98 // Stack
99 THStack *mystack = new THStack;
100 for (unsigned int i=0;i<histos.size();i++)
101 {
102 mystack->Add( histos[i].histo );
103 }
104 mystack->Draw("nostack");
105
106 // Axis
107 mystack->GetYaxis()->SetTitle("# events");
108 mystack->GetXaxis()->SetTitle(xlabel.c_str());
109 float xmin = mystack->GetXaxis()->GetXmin();
110 float xmax = mystack->GetXaxis()->GetXmin();
111
112 // Draw legend
113 TLegend* mylegend = new TLegend(0.55,0.90-(0.04*histos.size()),0.90,0.90);
114 mylegend->SetFillColor(0);
115 for (unsigned int i=0;i<histos.size();i++)
116 {
117 mylegend->AddEntry(histos[i].histo,
118 histos[i].algoName.c_str(),"l");
119 }
120 mylegend->Draw();
121
122
123 if (fit)
124 {
125 // To Fit
126 std::vector<double> sigmas;
127 std::vector<double> errors;
128 for (unsigned int i=0;i<histos.size();i++)
129 {
130 TF1* fitter = new TF1(dummy().c_str(),"gaus",-900,900); //or xmin, xmax...
131 fitter->SetParameter(0,K);
132 fitter->SetParameter(1,MU);
133 fitter->SetParameter(2,SIG);
134 histos[i].histo->Fit(fitter,"0");
135 sigmas.push_back(fitter->GetParameter(2));
136 errors.push_back(fitter->GetParError(2));
137 }
138
139 // Display sigmas
140 TPaveText* myblock = new TPaveText(0.65,0.65-(0.04*histos.size()),0.90,0.65,"NDC");
141 myblock->SetBorderSize(0);
142 myblock->SetFillColor(0);
143 for (unsigned int i=0;i<sigmas.size();i++)
144 {
145 std::stringstream str;
146 str << "#sigma_{" << histos[i].shortName <<"} = ";
147 str.precision(2); str.setf(ios_base::scientific); str << sigmas[i];
148 str << " #pm ";
149 str.precision(1); str.setf(ios_base::scientific); str << errors[i];
150 TText* mytext = myblock->AddText(str.str().c_str());
151 mytext->SetTextColor(histos[i].linecolor);
152 mytext->SetTextAlign(11);
153 }
154 myblock->Draw();
155 }
156
157 // Save
158 std::string filename = GetFileName(title);
159 mycanvas->SaveAs((filename+".gif").c_str());
160 mycanvas->SaveAs((filename+".root").c_str());
161
162 }
163