Fork me on GitHub

source: svn/trunk/interface/FuncDef.h@ 1063

Last change on this file since 1063 was 488, checked in by Xavier Rouby, 15 years ago

slight changes for ATLAS resolution

File size: 7.7 KB
Line 
1#ifndef __FuncDef__
2#define __FuncDef__
3
4#include "TStyle.h"
5#include "TCanvas.h"
6#include "TH1F.h"
7#include "TLegend.h"
8#include "TPad.h"
9#include "TTree.h"
10#include "TFile.h"
11#include "THStack.h"
12#include "TLine.h"
13#include "TArrow.h"
14#include "TMarker.h"
15#include "TStyle.h"
16#include "TROOT.h"
17
18#include <iomanip>
19#include <vector>
20#include <iostream>
21#include <string>
22#include "TPaveText.h"
23#include "TProfile.h"
24#include "TF1.h"
25#include "TGraph.h"
26#include "TGraphErrors.h"
27
28#include "interface/TdrStyle.h"
29
30using namespace std;
31
32TPaveText * MakeTPave(Float_t xmin,Float_t ymin,Float_t xmax,Float_t ymax,string text)
33{
34
35 TPaveText *leg1 = new TPaveText(xmin,ymin,xmax,ymax,"NDC");
36 leg1->AddText(text.c_str());
37 leg1->SetFillColor(10);
38 leg1->SetBorderSize(0);
39 leg1->SetTextFont(42);
40 leg1->SetTextSize(0.03791469);
41 return leg1;
42
43
44}
45
46
47TLegend * MakeLegend(Int_t FilledColor,Int_t BorderSize,Float_t TextSize,Double_t x1 = 0.60, Double_t y1 = 0.71, Double_t x2= 0.92, Double_t y2 = 0.92)
48{
49 TLegend *leg = new TLegend(x1,y1,x2,y2,NULL,"NDC");
50 leg->SetFillColor(FilledColor);
51 leg->SetBorderSize(BorderSize);
52 leg->SetTextSize(TextSize);
53 leg->SetTextFont(42);
54
55 return leg;
56}
57
58TH1F * MakeNormTH1F(Int_t numBin,Float_t minX,Float_t maxX, TTree * Analyze,string histo, Int_t Lcolor, Int_t Fcolor, Int_t Lstyle,Int_t width=2,bool Log=false)
59{
60 string temp = histo;
61 string nom = histo.erase(0,histo.find(">>")+2);
62 TH1F *h = new TH1F(nom.c_str(),"pt_lept ",numBin,minX,maxX);
63 //Analyze->Draw(temp.c_str(),"(JetPTResol.NonSmearePT >0 && JetPTResol.NonSmearePT < 20)");
64 Analyze->Draw(temp.c_str());
65 h->SetLineColor(Lcolor);
66 h->SetFillColor(Fcolor);
67 h->SetLineStyle(Lstyle);
68 h->SetLineWidth(width);
69 if(Log)gPad->SetLogy();
70 if(h->Integral()!=0)h->Scale(1./h->Integral());
71 return h;
72}
73
74void GaussValues(TTree * Analyze,string histo,double &rms, double &mean, string min,string max)
75{
76 string temp = histo;
77 string mintemp = min;
78 string maxtemp = max;
79
80 string nom = histo.erase(0,histo.find(">>")+2);
81 TH1F *h = new TH1F(nom.c_str(),"",100,0,3);
82 string all = min + " && " + max;
83 Analyze->Draw(temp.c_str(),all.c_str());
84 h->SetMarkerSize(0.6);
85 //double MeanFix = h->GetMean();
86 double RangMin = (h->GetMean()-1.5*h->GetRMS());
87 double RangMax = (h->GetMean()+1.5*h->GetRMS());
88 TF1 *Gauss = new TF1("Gauss","gaus",RangMin,RangMax);
89// Gauss->FixParameter(1,MeanFix);
90 h->Fit("Gauss","QR");
91 h->Fit("Gauss","QRI");
92 h->Fit("Gauss","QRI");
93 Double_t* params = Gauss->GetParameters();
94 rms=params[2];
95 //mean= MeanFix;
96 mean=params[1];
97 h->Draw("P");
98 h->GetXaxis()->SetTitle("E_{T}^{rec}/E_{T}^{MC} [GeV]");
99Gauss->Delete();
100}
101
102
103void GaussValuesAsymmetry(TTree * Analyze,string histo, double &mean, string min,string max,string cut="1==1")
104{
105 string temp = histo;
106 string mintemp = min;
107 string maxtemp = max;
108
109 string nom = histo.erase(0,histo.find(">>")+2);
110 TH1F *h = new TH1F(nom.c_str(),nom.c_str(),50,-3,3);
111 //string all = min + " && " + max + " && abs(JetPTResol.Eta) < 0.5";
112 string all = min + " && " + max + " && " + cut;
113 Analyze->Draw(temp.c_str(),all.c_str());
114 h->SetMarkerSize(0.6);
115// mean = h->GetMean();
116 TF1 *Gauss = new TF1("Gauss","gaus",-0.4,0.4);
117 //Gauss->FixParameter(1,MeanFix);
118 h->Fit("Gauss","QR");
119 h->Fit("Gauss","QRI");
120 h->Fit("Gauss","QRI");
121 Double_t* params = Gauss->GetParameters();
122 mean=params[1];
123 h->Draw("P");
124 h->GetXaxis()->SetTitle("E_{T}^{rec}/E_{T}^{MC} [GeV]");
125 Gauss->Delete();
126// double RangMin = (h->GetMean()-2*h->GetRMS());
127// double RangMax = (h->GetMean()+2*h->GetRMS());
128}
129
130void GaussValuesAsymmetry2(TTree * Analyze,string histo, double &mean, string min,string max,string cut="1==1")
131{
132 string temp = histo;
133 string mintemp = min;
134 string maxtemp = max;
135
136 string nom = histo.erase(0,histo.find(">>")+2);
137 TH1F *h = new TH1F(nom.c_str(),nom.c_str(),50,-3,3);
138 string all = min + " && " + max + " && " + cut;
139 Analyze->Draw(temp.c_str(),all.c_str());
140 h->SetMarkerSize(0.6);
141 mean = h->GetMean();
142}
143
144
145
146void GaussValuesElec(TTree * Analyze,string histo,double &rms, double &mean, string min,string max)
147{
148 string temp = histo;
149 string mintemp = min;
150 string maxtemp = max;
151
152 string nom = histo.erase(0,histo.find(">>")+2);
153 TH1F *h = new TH1F(nom.c_str(),"",20,-1,3);
154 string all = min + " && " + max;
155 Analyze->Draw(temp.c_str(),all.c_str());
156 h->SetMarkerSize(0.6);
157 double MeanFix = h->GetMean();
158 TF1 *Gauss = new TF1("Gauss","gaus",-0.5,1.5);
159 Gauss->FixParameter(1,MeanFix);
160 h->Fit("Gauss","QR");
161 h->Fit("Gauss","QRI");
162 h->Fit("Gauss","QRI");
163 Double_t* params = Gauss->GetParameters();
164 rms=params[2];
165 //mean= MeanFix;
166 mean=params[1];
167 h->Draw("P");
168 h->GetXaxis()->SetTitle("E_{T}^{rec}/E_{T}^{MC} [GeV]");
169 Gauss->Delete();
170}
171
172
173
174void GaussValuesETmis(TTree * Analyze,string histo,double &rms, string min,string max)
175{
176 string temp = histo;
177 string mintemp = min;
178 string maxtemp = max;
179
180 string nom = histo.erase(0,histo.find(">>")+2);
181 TH1F *h = new TH1F(nom.c_str(),"",80,-80,80);
182
183 string all = min + " && " + max;
184 Analyze->Draw(temp.c_str(),all.c_str());
185 h->SetMarkerSize(0.6);
186 double RangMin = (h->GetMean()-3*h->GetRMS());
187 double RangMax = (h->GetMean()+3*h->GetRMS());
188 TF1 *Gauss = new TF1("Gauss","gaus",RangMin,RangMax);
189 //Gauss->FixParameter(1,0);
190 h->Fit("Gauss","QR");
191 h->Fit("Gauss","QR");
192 h->Fit("Gauss","QR");
193 h->Fit("Gauss","QRI");
194 h->Fit("Gauss","QRI");
195 Double_t* params = Gauss->GetParameters();
196 rms=params[2];
197 //rms=h->GetRMS();
198 //mean=params[1];
199 h->Draw("P");
200 h->GetXaxis()->SetTitle("E_{T}^{rec}-E_{T}^{MC} [GeV]");
201}
202
203
204TH1F * HiggsMakeNormTH1F(Float_t Scale, Int_t numBin,Float_t minX,Float_t maxX, TTree * Analyze,string histo, Int_t Lcolor, Int_t Fcolor, Int_t Lstyle,Int_t width=2,bool Log=false)
205{
206 string temp = histo;
207 string nom = histo.erase(0,histo.find(">>")+2);
208 TH1F *h = new TH1F(nom.c_str(),"pt_lept ",numBin,minX,maxX);
209 Analyze->Draw(temp.c_str());
210 h->SetLineColor(Lcolor);
211 h->SetFillColor(Fcolor);
212 h->SetLineStyle(Lstyle);
213 h->SetLineWidth(width);
214 if(Log)gPad->SetLogy();
215 if(h->Integral()!=0)h->Scale(1*Scale);
216 return h;
217}
218
219
220TH1F * MakeNormTH1FSum(Int_t numBin,Float_t minX,Float_t maxX,TTree * analyze1,TTree * analyze2,TTree * analyze3,
221string * histo,float * weight, Int_t Lcolor, Int_t Fcolor, Int_t Lstyle,Int_t width=2,bool Log=false)
222{
223
224 TTree *analyse[3]={analyze1,analyze2,analyze3};
225 TH1F *hq = new TH1F("hq","pt_lept ",numBin,minX,maxX);
226
227 for(unsigned int i=0; i<3; i++)
228 {
229 string temp = histo[i];
230 string nom = histo[i].erase(0,histo[i].find(">>")+2);
231 TH1F *h = new TH1F(nom.c_str(),"pt_lept ",numBin,minX,maxX);
232 analyse[i]->Draw(temp.c_str());
233 h->Scale(weight[i]);
234 hq->Add(h);
235 }
236
237 hq->SetLineColor(Lcolor);
238 hq->SetFillColor(Fcolor);
239 hq->SetLineStyle(Lstyle);
240 hq->SetLineWidth(width);
241 if(Log)gPad->SetLogy();
242 if(hq->Integral()!=0)hq->Scale(1./hq->Integral());
243
244 return hq;
245}
246
247TH1F * HiggsMakeNormTH1FSum(Int_t numBin,Float_t minX,Float_t maxX,TTree * analyze1,TTree * analyze2,TTree * analyze3,
248string * histo,float * weight, Int_t Lcolor, Int_t Fcolor, Int_t Lstyle,Int_t width=2,bool Log=false)
249{
250
251 TTree *analyse[3]={analyze1,analyze2,analyze3};
252 TH1F *hq = new TH1F("hq","pt_lept ",numBin,minX,maxX);
253
254 for(unsigned int i=0; i<3; i++)
255 {
256 string temp = histo[i];
257 string nom = histo[i].erase(0,histo[i].find(">>")+2);
258 TH1F *h = new TH1F(nom.c_str(),"pt_lept ",numBin,minX,maxX);
259 analyse[i]->Draw(temp.c_str());
260 h->Scale(weight[i]);
261 hq->Add(h);
262 }
263
264 hq->SetLineColor(Lcolor);
265 hq->SetFillColor(Fcolor);
266 hq->SetLineStyle(Lstyle);
267 hq->SetLineWidth(width);
268 if(Log)gPad->SetLogy();
269 if(hq->Integral()!=0)hq->Scale(1./hq->Integral());
270
271 return hq;
272}
273
274
275#endif
Note: See TracBrowser for help on using the repository browser.