ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/auterman/SusyScan/PlotScript/GlobalFunctions.h
Revision: 1.13
Committed: Thu Mar 10 20:59:52 2011 UTC (14 years, 2 months ago) by auterman
Content type: text/plain
Branch: MAIN
Changes since 1.12: +397 -552 lines
Log Message:
commiting style changes

File Contents

# User Rev Content
1 auterman 1.1 #include "SusyScan.h"
2     #include "GeneratorMasses.h"
3 auterman 1.13 #include "ExclusionPlot.h"
4 auterman 1.1
5 auterman 1.5 #include "TGraph.h"
6 auterman 1.10 #include "TLatex.h"
7     #include "TF1.h"
8 auterman 1.13 #include "TH1F.h"
9 auterman 1.5 #include "TGraphErrors.h"
10     #include "TSpline.h"
11 auterman 1.10 #include "TStyle.h"
12     #include "TMath.h"
13 auterman 1.13 #include "TRint.h"
14     #include "TROOT.h"
15     #include "TPad.h"
16 auterman 1.5
17 auterman 1.1 #include <cmath>
18 auterman 1.8 #include <iostream>
19 auterman 1.1
20    
21 auterman 1.3 double Luminosity = 36.3; //[pb^-1]
22 auterman 1.1 double Mzero(const SusyScan* p){ return p->Mzero; }
23     double Mhalf(const SusyScan* p){ return p->Mhalf; }
24     double MGluino(const SusyScan* p){ return p->MGL; }
25     double MSquarkL(const SusyScan* p){ return p->MUL; }
26     double MSquarkR(const SusyScan* p){ return p->MUR; }
27     double MChi1(const SusyScan* p){ return p->MZ1; }
28     double MChi2(const SusyScan* p){ return p->MZ2; }
29     double MChi3(const SusyScan* p){ return p->MZ3; }
30     double MChi4(const SusyScan* p){ return p->MZ4; }
31     double MCha1(const SusyScan* p){ return p->MW1; }
32     double MCha2(const SusyScan* p){ return p->MW2; }
33 auterman 1.13 double MTAU1(const SusyScan* p){ return p->MTAU1; }
34 auterman 1.11 double SignalUncertKfactor(const SusyScan* p){return fabs(p->signal_kfactor_UP-p->signal_kfactor_DN)/(2.0*p->signal_kfactor); }
35     double SignalUncertJEC(const SusyScan* p){ return (fabs(p->signal_JEC_UP)+fabs(p->signal_JEC_DN))/(2.0*p->signal); }
36     double SignalUncertMuIso(const SusyScan* p){ return (fabs(p->signal_MuIso_UP)+fabs(p->signal_MuIso_DN))/(2.0*p->signal); }
37 auterman 1.12 double SignalKfactor(const SusyScan* p){return p->signal_kfactor; }
38 auterman 1.13 double ChargedLSP(const SusyScan* p){ return (fabs(p->MTAU1) < fabs(p->MZ1) ? 0.01 : 1); }
39 auterman 1.11
40 auterman 1.1 double Xsection(const SusyScan* p){ return p->Xsection; }
41     double ExpXsecLimit(const SusyScan* p){ return p->ExpXsecLimit; }
42     double ObsXsecLimit(const SusyScan* p){ return p->ObsXsecLimit; }
43 auterman 1.5 double Signal(const SusyScan* p){ return p->signal; }
44     double SignalUncertainty(const SusyScan* p){ return p->signal_uncertainty; }
45     double SignalRelUncertainty(const SusyScan* p){ return p->signal_uncertainty/p->signal; }
46 auterman 1.4 double ExpExclusion(const SusyScan* p){ return (ExpXsecLimit(p)<Xsection(p)&&ExpXsecLimit(p)>0.01?1:0.01); }
47     double ObsExclusion(const SusyScan* p){ return (ObsXsecLimit(p)<Xsection(p)&&ObsXsecLimit(p)>0.01?1:0.01); }
48 auterman 1.6 double ExpExclCL(const SusyScan* p){ return (p->CLs_b_xsec<=0.05 ? 1:0.01); }
49 auterman 1.7 double ExpExclCLm2sigma(const SusyScan* p){ return (p->CLs_b_n2_xsec<=0.05 ? 1:0.01); }
50     double ExpExclCLm1sigma(const SusyScan* p){ return (p->CLs_b_n1_xsec<=0.05 ? 1:0.01); }
51     double ExpExclCLp1sigma(const SusyScan* p){ return (p->CLs_b_p1_xsec<=0.05 ? 1:0.01); }
52     double ExpExclCLp2sigma(const SusyScan* p){ return (p->CLs_b_p2_xsec<=0.05 ? 1:0.01); }
53 auterman 1.6 double ObsExclCL(const SusyScan* p){ return (p->CLs_xsec<=0.05 ? 1:0.01); }
54 auterman 1.1 double SoverSqrtB(const SusyScan* p){ return p->signal/(sqrt(p->background)+p->background_uncertainty+p->signal_uncertainty); }
55     double XsecOverObserved(const SusyScan* p){ return (ObsXsecLimit(p)==0 ? 9999. : Xsection(p)/ObsXsecLimit(p)); }
56 auterman 1.3 double XsecOverExpected(const SusyScan* p){ return (ExpXsecLimit(p)==0 ? 9999. : Xsection(p)/ExpXsecLimit(p)); }
57 auterman 1.1 double SignalAcceptance(const SusyScan* p){ return p->signal / (Luminosity*Xsection(p)); }
58 auterman 1.5 double ExpNSignLimit(const SusyScan* p){ return p->ExpNsigLimit; }
59     double ObsNSignLimit(const SusyScan* p){ return p->ObsNsigLimit; }
60 auterman 1.3 double PLExpNSignLimit(const SusyScan* p){ return p->PLExpNsigLimit; }
61 auterman 1.5 double PLObsNSignLimit(const SusyScan* p){ return p->PLObsNsigLimit; }
62 auterman 1.3 double PLExpXsecLimit(const SusyScan* p){ return p->PLExpXsecLimit; }
63     double PLObsXsecLimit(const SusyScan* p){ return p->PLObsXsecLimit; }
64 auterman 1.4 double PLExpExclusion(const SusyScan* p){ return (PLExpXsecLimit(p)<Xsection(p)&&PLExpXsecLimit(p)>0.01?1:0.01); }
65     double PLObsExclusion(const SusyScan* p){ return (PLObsXsecLimit(p)<Xsection(p)&&PLObsXsecLimit(p)>0.01?1:0.01); }
66 auterman 1.5 double FCExpNSignLimit(const SusyScan* p){ return p->FCExpNsigLimit; }
67     double FCObsNSignLimit(const SusyScan* p){ return p->FCObsNsigLimit; }
68     double FCExpXsecLimit(const SusyScan* p){ return p->FCExpXsecLimit; }
69     double FCObsXsecLimit(const SusyScan* p){ return p->FCObsXsecLimit; }
70     double FCExpExclusion(const SusyScan* p){ return (FCExpXsecLimit(p)<Xsection(p)&&FCExpXsecLimit(p)>0.01?1:0.01); }
71     double FCObsExclusion(const SusyScan* p){ return (FCObsXsecLimit(p)<Xsection(p)&&FCObsXsecLimit(p)>0.01?1:0.01); }
72     double MCMCExpNSignLimit(const SusyScan* p){ return p->MCMCExpNsigLimit; }
73     double MCMCObsNSignLimit(const SusyScan* p){ return p->MCMCObsNsigLimit; }
74     double MCMCExpXsecLimit(const SusyScan* p){ return p->MCMCExpXsecLimit; }
75     double MCMCObsXsecLimit(const SusyScan* p){ return p->MCMCObsXsecLimit; }
76     double MCMCExpExclusion(const SusyScan* p){ return (MCMCExpXsecLimit(p)<Xsection(p)&&MCMCExpXsecLimit(p)>0.01?1:0.01); }
77     double MCMCObsExclusion(const SusyScan* p){ return (MCMCObsXsecLimit(p)<Xsection(p)&&MCMCObsXsecLimit(p)>0.01?1:0.01); }
78 auterman 1.8 double SignalContamination(const SusyScan* p){return p->signal_contamination; }
79 auterman 1.1
80 auterman 1.11 double NLOXsection(const SusyScan* p){ return p->Xsection * p->signal_kfactor; }
81     double NLOExpXsecLimit(const SusyScan* p){ return p->NLO_ExpXsecLimit; }
82     double NLOObsXsecLimit(const SusyScan* p){ return p->NLO_ObsXsecLimit; }
83     double NLOSignal(const SusyScan* p){ return p->NLO_signal; }
84     double NLOSignalUncertainty(const SusyScan* p){ return p->NLO_signal_uncertainty; }
85     double NLOSignalRelUncertainty(const SusyScan* p){ return p->NLO_signal_uncertainty/p->NLO_signal; }
86     double NLOExpExclusion(const SusyScan* p){ return (NLOExpXsecLimit(p)<NLOXsection(p)&&NLOExpXsecLimit(p)>0.01?1:0.01); }
87     double NLOObsExclusion(const SusyScan* p){ return (NLOObsXsecLimit(p)<NLOXsection(p)&&NLOObsXsecLimit(p)>0.01?1:0.01); }
88 auterman 1.13
89     double NLOExpCL(const SusyScan* p){ return (p->NLO_CLs_b_xsec); }
90    
91 auterman 1.11 double NLOExpExclCL(const SusyScan* p){ return (p->NLO_CLs_b_xsec<=0.05 ? 1:0.01); }
92     double NLOExpExclCLm2sigma(const SusyScan* p){ return (p->NLO_CLs_b_n2_xsec<=0.05 ? 1:0.01); }
93     double NLOExpExclCLm1sigma(const SusyScan* p){ return (p->NLO_CLs_b_n1_xsec<=0.05 ? 1:0.01); }
94     double NLOExpExclCLp1sigma(const SusyScan* p){ return (p->NLO_CLs_b_p1_xsec<=0.05 ? 1:0.01); }
95     double NLOExpExclCLp2sigma(const SusyScan* p){ return (p->NLO_CLs_b_p2_xsec<=0.05 ? 1:0.01); }
96     double NLOObsExclCL(const SusyScan* p){ return (p->NLO_CLs_xsec<=0.05 ? 1:0.01); }
97 auterman 1.13
98 auterman 1.11 double NLOSoverSqrtB(const SusyScan* p){ return p->NLO_signal/(sqrt(p->background)+p->background_uncertainty+p->NLO_signal_uncertainty); }
99     double NLOXsecOverObserved(const SusyScan* p){ return (NLOObsXsecLimit(p)==0 ? 9999. : NLOXsection(p)/NLOObsXsecLimit(p)); }
100     double NLOXsecOverExpected(const SusyScan* p){ return (NLOExpXsecLimit(p)==0 ? 9999. : NLOXsection(p)/NLOExpXsecLimit(p)); }
101     double NLOSignalAcceptance(const SusyScan* p){ return p->NLO_signal / (Luminosity*NLOXsection(p)); }
102     double NLOExpNSignLimit(const SusyScan* p){ return p->NLO_ExpNsigLimit; }
103     double NLOObsNSignLimit(const SusyScan* p){ return p->NLO_ObsNsigLimit; }
104     double NLOPLExpNSignLimit(const SusyScan* p){ return p->NLO_PLExpNsigLimit; }
105     double NLOPLObsNSignLimit(const SusyScan* p){ return p->NLO_PLObsNsigLimit; }
106     double NLOPLExpXsecLimit(const SusyScan* p){ return p->NLO_PLExpXsecLimit; }
107     double NLOPLObsXsecLimit(const SusyScan* p){ return p->NLO_PLObsXsecLimit; }
108     double NLOPLExpExclusion(const SusyScan* p){ return (NLOPLExpXsecLimit(p)<NLOXsection(p)&&NLOPLExpXsecLimit(p)>0.01?1:0.01); }
109     double NLOPLObsExclusion(const SusyScan* p){ return (NLOPLObsXsecLimit(p)<NLOXsection(p)&&NLOPLObsXsecLimit(p)>0.01?1:0.01); }
110     double NLOFCExpNSignLimit(const SusyScan* p){ return p->NLO_FCExpNsigLimit; }
111     double NLOFCObsNSignLimit(const SusyScan* p){ return p->NLO_FCObsNsigLimit; }
112     double NLOFCExpXsecLimit(const SusyScan* p){ return p->NLO_FCExpXsecLimit; }
113     double NLOFCObsXsecLimit(const SusyScan* p){ return p->NLO_FCObsXsecLimit; }
114     double NLOFCExpExclusion(const SusyScan* p){ return (NLOFCExpXsecLimit(p)<NLOXsection(p)&&NLOFCExpXsecLimit(p)>0.01?1:0.01); }
115     double NLOFCObsExclusion(const SusyScan* p){ return (NLOFCObsXsecLimit(p)<NLOXsection(p)&&NLOFCObsXsecLimit(p)>0.01?1:0.01); }
116     double NLOMCMCExpNSignLimit(const SusyScan* p){ return p->NLO_MCMCExpNsigLimit; }
117     double NLOMCMCObsNSignLimit(const SusyScan* p){ return p->NLO_MCMCObsNsigLimit; }
118     double NLOMCMCExpXsecLimit(const SusyScan* p){ return p->NLO_MCMCExpXsecLimit; }
119     double NLOMCMCObsXsecLimit(const SusyScan* p){ return p->NLO_MCMCObsXsecLimit; }
120     double NLOMCMCExpExclusion(const SusyScan* p){ return (NLOMCMCExpXsecLimit(p)<NLOXsection(p)&&NLOMCMCExpXsecLimit(p)>0.01?1:0.01); }
121     double NLOMCMCObsExclusion(const SusyScan* p){ return (NLOMCMCObsXsecLimit(p)<NLOXsection(p)&&NLOMCMCObsXsecLimit(p)>0.01?1:0.01); }
122     double NLOSignalContamination(const SusyScan* p){return p->NLO_signal_contamination; }
123    
124 auterman 1.1 double Mzero(const GeneratorMasses* p){ return p->Mzero; }
125     double Mhalf(const GeneratorMasses* p){ return p->Mhalf; }
126     double MGluino(const GeneratorMasses* p){ return p->MGL; }
127     double MSquarkL(const GeneratorMasses* p){ return p->MUL; }
128     double MSquarkR(const GeneratorMasses* p){ return p->MUR; }
129     double MChi1(const GeneratorMasses* p){ return p->MZ1; }
130     double MChi2(const GeneratorMasses* p){ return p->MZ2; }
131     double MChi3(const GeneratorMasses* p){ return p->MZ3; }
132     double MChi4(const GeneratorMasses* p){ return p->MZ4; }
133     double MCha1(const GeneratorMasses* p){ return p->MW1; }
134     double MCha2(const GeneratorMasses* p){ return p->MW2; }
135 auterman 1.5
136 auterman 1.13
137    
138     void setPlottingStyle(TH1F& hsig){
139    
140     hsig.SetStats(kFALSE);
141    
142     hsig.SetAxisRange(80,500,"Y");
143     hsig.SetAxisRange(0,520,"X");
144     hsig.SetAxisRange(200,520,"X");
145    
146     hsig.GetXaxis()->SetTitle("m_{0} (GeV)");
147     hsig.GetYaxis()->SetTitle("m_{1/2} (GeV)");
148     hsig.GetYaxis()->SetTitleOffset(0.8);
149     hsig.GetYaxis()->SetTitleSize(0.06);
150     hsig.GetYaxis()->SetLabelSize(0.06);
151     hsig.GetXaxis()->SetTitleOffset(0.9);
152     hsig.GetXaxis()->SetTitleSize(0.06);
153     hsig.GetXaxis()->SetLabelSize(0.06);
154    
155     hsig.SetLineWidth(1);
156     hsig.SetLineColor(kBlue);
157    
158     }
159    
160    
161    
162    
163 auterman 1.10 TGraph* set_sneutrino_d0_1(Int_t tanBeta){
164     double sn_m0[14]= {0, 0, 48, 55, 80, 90,100,105,109,105,100, 72, 55,0};
165     double sn_m12[14]={0,140,210,220,237,241,242,241,230,220,210,170,150,0};
166 auterman 1.5
167 auterman 1.10 TGraph* sn_d0_gr = new TGraph(14,sn_m0,sn_m12);
168 auterman 1.5
169     sn_d0_gr->SetFillColor(kGreen+3);
170 auterman 1.13 sn_d0_gr->SetFillStyle(3001);
171 auterman 1.5
172     return sn_d0_gr;
173     }
174    
175 auterman 1.10 TGraph* set_sneutrino_d0_2(Int_t tanBeta){
176     double sn_m0[9]= {0, 45, 75,115,130,150,163,185,0};
177     double sn_m12[9]={0,140,170,213,202,183,168,140,0};
178 auterman 1.5
179 auterman 1.10 TGraph* sn_d0_gr_2 = new TGraph(9,sn_m0,sn_m12);
180 auterman 1.5
181     sn_d0_gr_2->SetFillColor(kGreen+3);
182 auterman 1.13 sn_d0_gr_2->SetFillStyle(3001);
183 auterman 1.5
184 auterman 1.10 return sn_d0_gr_2;
185     }
186    
187 auterman 1.13 TGraph* set_lep_ch(Int_t tanBeta){
188     if(tanBeta == 3) return set_lep_ch_tanBeta3();
189     if(tanBeta == 10) return set_lep_ch_tanBeta10();
190     if(tanBeta == 50) return set_lep_ch_tanBeta50();
191     }
192 auterman 1.10
193     TGraph* set_lep_ch_tanBeta10(){
194    
195 auterman 1.12 double ch_m0[12];
196     double ch_m12[12];
197 auterman 1.10
198     ch_m0[0] = 0;
199     ch_m0[1] = 100;
200     ch_m0[2] = 200;
201     ch_m0[3] = 300;
202     ch_m0[4] = 400;
203     ch_m0[5] = 500;
204     ch_m0[6] = 600;
205     ch_m0[7] = 700;
206     ch_m0[8] = 800;
207 auterman 1.12 ch_m0[9] = 1000;
208     ch_m0[10] = 1000;
209     ch_m0[11] = 0;
210 auterman 1.10
211     ch_m12[0] = 163;
212     ch_m12[1] = 162;
213     ch_m12[2] = 161;
214     ch_m12[3] = 160;
215     ch_m12[4] = 159;
216     ch_m12[5] = 158;
217     ch_m12[6] = 157;
218     ch_m12[7] = 156;
219     ch_m12[8] = 155.4;
220 auterman 1.13 ch_m12[9] = 155.05;
221 auterman 1.10 ch_m12[10] = 0;
222 auterman 1.12 ch_m12[11] = 0;
223 auterman 1.10
224    
225 auterman 1.12 TGraph* ch_gr = new TGraph(12,ch_m0,ch_m12);
226 auterman 1.10
227     ch_gr->SetFillColor(3);
228     ch_gr->SetLineColor(3);
229     // ch_gr->SetLineWidth(3);
230 auterman 1.13 ch_gr->SetFillStyle(3001);
231 auterman 1.10
232     return ch_gr;
233 auterman 1.5
234     }
235    
236    
237    
238 auterman 1.10 TGraph* set_lep_ch_tanBeta3(){
239    
240     double ch_m0[17];
241     double ch_m12[17];
242    
243     ch_m0[0] = 0;
244     ch_m0[1] = 100;
245     ch_m0[2] = 150;
246     ch_m0[3] = 200;
247     ch_m0[4] = 250;
248     ch_m0[5] = 300;
249     ch_m0[6] = 350;
250     ch_m0[7] = 400;
251     ch_m0[8] = 450;
252     ch_m0[9] = 500;
253     ch_m0[10] = 550;
254     ch_m0[11] = 600;
255     ch_m0[12] = 650;
256     ch_m0[13] = 700;
257     ch_m0[14] = 750;
258     ch_m0[15] = 750;
259     ch_m0[16] = 0;
260    
261     ch_m12[0] = 170;
262     ch_m12[1] = 168;
263     ch_m12[2] = 167;
264     ch_m12[3] = 165;
265     ch_m12[4] = 163;
266     ch_m12[5] = 161;
267     ch_m12[6] = 158;
268     ch_m12[7] = 156;
269     ch_m12[8] = 154;
270     ch_m12[9] = 152;
271     ch_m12[10] = 150;
272     ch_m12[11] = 148;
273     ch_m12[12] = 147;
274     ch_m12[13] = 145;
275     ch_m12[14] = 144;
276     ch_m12[15] = 0;
277     ch_m12[16] = 0;
278    
279     TGraph* ch_gr = new TGraph(17,ch_m0,ch_m12);
280    
281     ch_gr->SetFillColor(3);
282     ch_gr->SetLineColor(3);
283     // ch_gr->SetLineWidth(3);
284 auterman 1.13 ch_gr->SetFillStyle(3001);
285 auterman 1.10
286     return ch_gr;
287    
288     }
289    
290 auterman 1.5
291 auterman 1.10 TGraph* set_lep_ch_tanBeta50(){
292 auterman 1.5
293 auterman 1.10 double ch_m0[21];
294     double ch_m12[21];
295    
296     ch_m0[0] = 200;
297     ch_m0[1] = 250;
298     ch_m0[2] = 300;
299     ch_m0[3] = 350;
300     ch_m0[4] = 400;
301     ch_m0[5] = 450;
302     ch_m0[6] = 500;
303     ch_m0[7] = 550;
304     ch_m0[8] = 600;
305     ch_m0[9] = 650;
306     ch_m0[10] = 700;
307     ch_m0[11] = 750;
308     ch_m0[12] = 800;
309     ch_m0[13] =850;
310     ch_m0[14] = 900;
311     ch_m0[15] = 950;
312     ch_m0[16] = 1000;
313     ch_m0[17] = 1050;
314     ch_m0[18] = 1100;
315     ch_m0[19] = 1100;
316     ch_m0[20] = 200;
317 auterman 1.5
318 auterman 1.10 ch_m12[0] = 157;
319     ch_m12[1] = 156;
320     ch_m12[2] = 156;
321     ch_m12[3] = 155;
322     ch_m12[4] = 155;
323     ch_m12[5] = 154;
324     ch_m12[6] = 154;
325     ch_m12[7] = 153;
326     ch_m12[8] = 153;
327     ch_m12[9] = 152;
328     ch_m12[10] = 152;
329     ch_m12[11] = 152;
330     ch_m12[12] = 152;
331     ch_m12[13] = 152;
332     ch_m12[14] = 152;
333     ch_m12[15] = 153;
334     ch_m12[16] = 153;
335     ch_m12[17] = 153;
336     ch_m12[18] = 154;
337     ch_m12[19] = 0;
338     ch_m12[20] = 0;
339    
340 auterman 1.5
341 auterman 1.10 TGraph* ch_gr = new TGraph(21,ch_m0,ch_m12);
342 auterman 1.5
343     ch_gr->SetFillColor(3);
344 auterman 1.10 ch_gr->SetLineColor(3);
345 auterman 1.13 ch_gr->SetFillStyle(3001);
346 auterman 1.5
347     return ch_gr;
348    
349     }
350    
351    
352    
353    
354 auterman 1.10 TGraph* set_lep_sl(Int_t tanBeta){
355    
356     // CMS SUSY Summer2010 implementation
357     // double sl_m0[] = {0, 0, 30, 50, 60, 75, 80,90,100};
358     // double sl_m12[] = {0,245,240,220,200,150,100,50,0};
359    
360     //contour from D0 trilepton paper (PLB 680 (2009) 34-43)
361 auterman 1.13 TGraph* lep_sl = 0;
362 auterman 1.10 if (tanBeta==3){
363 auterman 1.13 double sl_m0[] ={0, 0, 10, 20, 30, 40, 50, 60, 70, 77,88,95};
364     double sl_m12[]={0,245,242,239,232,222,209,189,165,140,60,0};
365     int n = 12;
366     lep_sl = new TGraph(n,sl_m0,sl_m12);
367 auterman 1.10 }
368     //CMS PTDR-II
369     //* Selectron_R line mass=99, ISASUGRA7.69, A0=0, m_top=175, tan(beta]=10
370     if (tanBeta==10 || tanBeta==50){
371 auterman 1.13 double sl_m0[]={ 0, 0, 11, 20, 24, 49, 70, 82,88,90};
372     double sl_m12[]={0,240,237,233,230,200,150,100,50,0};
373     int n = 10;
374     lep_sl = new TGraph(n,sl_m0,sl_m12);
375 auterman 1.10 }
376 auterman 1.5
377    
378     lep_sl->SetFillColor(5);
379 auterman 1.10 lep_sl->SetLineColor(5);
380 auterman 1.13 lep_sl->SetFillStyle(3001);
381 auterman 1.5
382     return lep_sl;
383     }
384    
385    
386 auterman 1.10 TGraph* set_tev_sg_cdf(Int_t tanBeta){
387    
388     // double sg_m0[] = {0, 0, 20, 50,100,150,200,250,300,350,400,450,500,550,600,600};
389     // double sg_m12[] = {0,160,169,170,160,155,150,122,116,112,110,106,105,100, 98, 0};
390     // int np=16;
391     //New CHF from CDF plot in ICHEP2010 talk (E. Halkiadakis)
392     double sg_m0[]= {0, 0, 30, 75,150,185,225,310,360,400,430,500,600,600};
393     double sg_m12[]={0,162,168,170,160,150,130,120,109,108,100, 96, 95, 0};
394     int np=14;
395    
396     TGraph* sg_gr = new TGraph(np,sg_m0,sg_m12);
397    
398     // gStyle->SetHatchesLineWidth(3);
399 auterman 1.5
400     sg_gr->SetFillColor(2);
401 auterman 1.10 sg_gr->SetLineColor(2);
402     // sg_gr->SetLineWidth(3);
403 auterman 1.13 sg_gr->SetFillStyle(3001);
404 auterman 1.5
405     return sg_gr;
406    
407     }
408    
409 auterman 1.10 TGraph* set_tev_sg_d0(Int_t tanBeta){
410 auterman 1.5
411 auterman 1.13 //official D0 contour from P. Verdier
412     double sgd_m0[]= {0, 0., 25., 80.,100.,150.,192.,250.,300. ,350.,400.,450. ,500.,600.,600.,0.};
413     double sgd_m12[]={0,167.,167.,163.,162.,157.,149.,136.,125.5,116.,109.,106.5,105.,105., 0.,0.};
414     int npd=16;
415 auterman 1.10
416     TGraph* sgd_gr = new TGraph(npd,sgd_m0,sgd_m12);
417    
418     gStyle->SetHatchesLineWidth(3);
419    
420 auterman 1.13 sgd_gr->SetFillColor(kMagenta+1);
421     sgd_gr->SetLineColor(kMagenta+1);
422 auterman 1.10 sgd_gr->SetLineWidth(3);
423     sgd_gr->SetFillStyle(3335);
424 auterman 1.13 //sgd_gr->SetFillStyle(3001);
425 auterman 1.5
426     return sgd_gr;
427    
428     }
429    
430 auterman 1.10 // TGraph* set_tev_tlp_cdf(Int_t tanBeta){
431     // double tlp1_m0[] = { 0, 20, 40, 60, 70, 80, 90, 80, 70, 60};
432     // double tlp1_m12[] = {170,185,200,215,220,215,210,190,175,160};
433     // TGraph* tlp1_gr = new TGraph(10,tlp1_m0,tlp1_m12);
434    
435     // tlp1_gr->SetFillColor(4);
436     // tlp1_gr->SetLineColor(4);
437     // tlp1_gr->SetFillStyle(1001);
438    
439     // return tlp1_gr;
440     // }
441    
442     // TGraph* set_tev_tlp_d0(Int_t tanBeta){
443     // double tlp2_m0[] = { 70, 80, 90,100,105,110,120,130,140};
444     // double tlp2_m12[] = {160,172,184,196,205,195,185,173,160};
445     // TGraph* tlp2_gr = new TGraph(9,tlp2_m0,tlp2_m12);
446    
447     // tlp2_gr->SetFillColor(4);
448     // tlp2_gr->SetFillStyle(1001);
449    
450     // return tlp2_gr;
451    
452     // }
453    
454    
455    
456    
457    
458     TGraph* set_tev_stau(Int_t tanBeta){
459    
460     double st_m0_tanBeta3[] = {0,10,20,30,40,50,60,70,80,90,100,0};
461     double st_m12_tanBeta3[] = {337,341,356,378,406,439,473,510,548,587,626,626};
462    
463     double st_m0_tanBeta10[] = {0,10,20,30,40,50,60,70,80,90,100,0};
464     double st_m12_tanBeta10[] = {213,220,240,275,312,351,393,435,476,518,559,559};
465    
466     double st_m0_tanBeta50[] = {200,210,220,230,240,250,260,270,280,290,310,325,200,200};
467     double st_m12_tanBeta50[] = {206,226,246,267,288,310,332,354,376,399,450,500,500,206};
468    
469    
470     TGraph* st_gr_tanBeta3 = new TGraph(12,st_m0_tanBeta3,st_m12_tanBeta3);
471     TGraph* st_gr_tanBeta10 = new TGraph(12,st_m0_tanBeta10,st_m12_tanBeta10);
472     TGraph* st_gr_tanBeta50 = new TGraph(14,st_m0_tanBeta50,st_m12_tanBeta50);
473    
474     st_gr_tanBeta3->SetFillColor(40);
475     st_gr_tanBeta3->SetFillStyle(1001);
476    
477     st_gr_tanBeta50->SetFillColor(40);
478     st_gr_tanBeta50->SetFillStyle(1001);
479    
480     st_gr_tanBeta10->SetFillColor(40);
481     st_gr_tanBeta10->SetFillStyle(1001);
482    
483    
484     if(tanBeta == 3)return st_gr_tanBeta3;
485     if(tanBeta == 10)return st_gr_tanBeta10;
486     if(tanBeta == 50)return st_gr_tanBeta50;
487    
488     }
489    
490    
491    
492    
493     TF1* constant_squark(int tanBeta,int i){
494     //---lines of constant gluino/squark
495     double coef1 = 0.35;
496     double coef2[] = {5,5,4.6,4.1};
497    
498     char hname[200];
499    
500     sprintf(hname,"lnsq_%i",i);
501 auterman 1.5
502 auterman 1.10
503     TF1* lnsq = new TF1(hname,"sqrt([0]-x*x*[1]-[2])",0,1000);
504     lnsq->SetParameter(0,(500+150*(i-1))*(500+150*(i-1))/coef2[i]);
505     lnsq->SetParameter(1,1./coef2[i]);
506     lnsq->SetParameter(2,-coef1*91*91*(2*TMath::Cos(TMath::ATan(tanBeta)))/coef2[i]);//--tanbeta=10 --> cos2beta = -99/101
507     lnsq->SetLineWidth(1);
508    
509    
510     lnsq->SetLineColor(kGray);
511 auterman 1.5
512 auterman 1.10 return lnsq;
513 auterman 1.5 }
514    
515    
516 auterman 1.10 TF1* constant_gluino(int tanBeta,int i){
517     //---lines of constant gluino/squark
518     double coef1 = 0.35;
519     double coef2[] = {5,5,4.6,4.1};
520 auterman 1.5
521 auterman 1.10 char hname[200];
522 auterman 1.5
523 auterman 1.10 sprintf(hname,"lngl_%i",i);
524    
525     TF1* lngl = new TF1(hname,"[0]+x*[1]",0,1000);
526     lngl->SetParameter(0,(500+150.*(i-1))/2.4);
527     lngl->SetParameter(1,-40./1400);
528     lngl->SetLineWidth(1);
529     lngl->SetLineColor(kGray);
530    
531     return lngl;
532 auterman 1.5 }
533    
534    
535 auterman 1.10 TLatex* constant_squark_text(Int_t it,TF1& lnsq,Int_t tanBeta_){
536     char legnm[200];
537    
538     sprintf(legnm,"#font[92]{#tilde{q}(%i)GeV}",500+150*(it-1));
539     Double_t place_x = 170;
540     if(tanBeta_ == 50)place_x = 290;
541     TLatex* t3 = new TLatex(place_x+10*(it-1),lnsq.Eval(place_x+10*(it-1))+5,legnm);
542 auterman 1.13 t3->SetTextSize(0.02);
543 auterman 1.10 t3->SetTextAngle(-8);
544     t3->SetTextColor(kGray+2);
545    
546    
547    
548     return t3;
549     }
550 auterman 1.5
551 auterman 1.10 TLatex* constant_gluino_text(Int_t it,TF1& lngl){
552     char legnm[200];
553 auterman 1.5
554 auterman 1.10 sprintf(legnm,"#font[12]{#tilde{g}}#font[92]{(%i)GeV}",500+150*(it-1));
555     TLatex* t4 = new TLatex(423,18+lngl.Eval(480),legnm);
556 auterman 1.13 t4->SetTextSize(0.02);
557 auterman 1.10 t4->SetTextAlign(13);
558     t4->SetTextColor(kGray+2);
559 auterman 1.5
560 auterman 1.10 return t4;
561 auterman 1.5 }
562    
563    
564    
565 auterman 1.13 TLegend* makeStauLegend(Double_t txtsz,Int_t tanBeta_){
566     Double_t ypos_1 = 0.86;
567     Double_t ypos_2 = 0.88;
568     Double_t xpos_1 = 0.16;
569     Double_t xpos_2 = 0.17;
570     if(tanBeta_ == 50){
571     xpos_1 = 0.17;
572     xpos_2 = 0.18;
573     ypos_1 = 0.76;
574     ypos_2 = 0.78;
575    
576     }
577     TLegend* legst = new TLegend(xpos_1,ypos_1,xpos_2,ypos_2);
578     legst->SetHeader("#tilde{#tau} = LSP");
579     legst->SetFillStyle(0);
580     legst->SetBorderSize(0);
581     legst->SetTextSize(0.03);
582    
583     return legst;
584     }
585 auterman 1.5
586    
587 auterman 1.13 TLegend* makeExpLegend(TGraph& sg_gr, TGraph& sgd_gr,TGraph& ch_gr,TGraph& sl_gr,TGraph& tev_sn,Double_t txtsz,Int_t tanbeta){
588     TLegend* legexp = new TLegend(0.64,0.65,0.99,0.9,NULL,"brNDC");
589     legexp->SetFillColor(0);
590     legexp->SetShadowColor(0);
591     legexp->SetTextSize(txtsz);
592     legexp->SetBorderSize(0);
593    
594     sg_gr.SetLineColor(1);
595     legexp->AddEntry(&sg_gr,"CDF #tilde{#font[12]{g}}, #tilde{#font[12]{q}}, #scale[0.8]{tan#beta=5, #mu<0}","f");
596     // sgd_gr.SetLineColor(1);
597     // sgd_gr.SetLineWidth(1);
598    
599     legexp->AddEntry(&sgd_gr,"D0 #tilde{#font[12]{g}}, #tilde{#font[12]{q}}, #scale[0.8]{tan#beta=3, #mu<0}","f");
600     ch_gr.SetLineColor(1);
601     legexp->AddEntry(&ch_gr,"LEP2 #tilde{#chi}_{1}^{#pm}","f");
602    
603     sl_gr.SetLineColor(1);
604     if(tanbeta != 50) legexp->AddEntry(&sl_gr,"LEP2 #tilde{#font[12]{l}}^{#pm}","f");
605     if(tanbeta == 3) legexp->AddEntry(&tev_sn,"D0 #chi^{#pm}_{1}, #chi^{0}_{2}","f");
606 auterman 1.9
607 auterman 1.5
608 auterman 1.13 return legexp;
609 auterman 1.9
610 auterman 1.13 }
611 auterman 1.9
612    
613 auterman 1.13 TGraph* getGraph(TH2F* h1, double level){
614 auterman 1.9
615 auterman 1.13 h1->SetContour(1);
616     h1->SetContourLevel(0,level);
617     h1->Draw("CONT LIST");
618     gPad->Update();
619    
620     TObjArray* contours = (TObjArray*)gROOT->GetListOfSpecials()->FindObject("contours");
621    
622     std::cout << "contours: " << contours << std::endl;
623     // Draw contours
624     TList* graphList = (TList*)(contours->At(0));
625     std::cout << "number of graphs: " << graphList->GetSize() << std::endl;
626     TGraph* myGraph = 0;
627     for (int igraph = 0; igraph<graphList->GetSize();++igraph) {
628     myGraph = (TGraph*)graphList->At(igraph);
629    
630     std::cout << " - graph " << igraph << " has " << myGraph->GetN() << " points" << std::endl;
631     if (myGraph->GetN() > 50){
632     std::cout << "Drawing " << myGraph->GetN() <<" points" << std::endl;
633     // myGraph->Print("all");
634     // myGraph->SetLineColor(9);
635     // myGraph->SetLineColor(46);
636     //myGraph->SetLineWidth(3);
637     // myGraph->SetLineStyle(2);
638     // myGraph->SetMarkerStyle(20);
639     // myGraph->SetMarkerColor(9);
640    
641     // myGraph->Draw("C");
642     // cvsSys->Update();
643    
644     // TString graphName("graph"+name+"_");
645     // graphName += igraph;
646     // myGraph->SetName(graphName);
647     break;
648     }
649     }
650     return myGraph;
651 auterman 1.9 }
652    
653 auterman 1.13 TH2F* fillHoles(TH2F* h2){
654 auterman 1.9
655 auterman 1.13 int nx = h2->GetNbinsX();
656     int ny = h2->GetNbinsY();
657     std::cout << "Nbins: " << nx << " " << ny << std::endl;
658    
659     for (int i=1;i<nx+1;i++){
660     for (int j=ny;j>0;j--){
661     int pos = j;
662     int count =0;
663     if (h2->GetBinContent(i,j)==0 && h2->GetBinContent(i-1,j)==-1 && h2->GetBinContent(i+1,j)==-1) h2->SetBinContent(i,j,-1.);
664    
665     if (h2->GetBinContent(i,j)==1
666     && h2->GetBinContent(i-1,j)==-1
667     && h2->GetBinContent(i+1,j)==-1
668     && h2->GetBinContent(i,j+1)==-1
669     && h2->GetBinContent(i,j-1)==-1)
670     h2->SetBinContent(i,j,-1.);
671    
672     // if (h2->GetBinContent(i,j)<0){
673     if (h2->GetBinContent(i,j)<0 && h2->GetBinContent(i,j-1)<0){
674     // cout <<" bin content " << i <<" " << j<< " " << pos << " " << h2->GetBinContent(i,j) <<endl;
675     for (int k=pos;k>0;k--){
676     h2->SetBinContent(i,k,-1.);
677     }
678     break;
679     }
680    
681    
682     }
683     }
684     return h2;
685     }
686 auterman 1.9
687    
688    
689    
690    
691    
692    
693    
694    
695 auterman 1.5
696 auterman 1.9
697    
698 auterman 1.13 //old------------------------------------------------------------------------
699 auterman 1.5
700 auterman 1.13 TGraph* sq_LEP(){//sq-gl
701     double sq[] = {0,0,100,100};
702     double gl[] = {0,2000,2000,0};
703     TGraph* res = new TGraph(4,sq,gl);
704     res->SetFillColor(kBlue);
705     return res;
706     }
707     TGraph* gl_TEV(){//sq-gl
708     double sq[] = {0,2000,2000,0};
709     double gl[] = {0,0,190,190};
710     TGraph* res = new TGraph(4,sq,gl);
711     res->SetFillColor(kGreen+2);
712     return res;
713     }
714 auterman 1.5
715 auterman 1.13 TGraph* gl_CDF(){//sq-gl
716     double sq[] = {0,2000,2000,0};
717     double gl[] = {190,190,230,230};
718     TGraph* res = new TGraph(4,sq,gl);
719     res->SetFillColor(kOrange+5);
720     return res;
721     }
722 auterman 1.5
723 auterman 1.13 TGraph* gl_DEZ(){//sq-gl
724     double sq[] = {0,2000,2000,0};
725     double gl[] = {230,230,255,255};
726     TGraph* res = new TGraph(4,sq,gl);
727     res->SetFillColor(kYellow-5);
728     return res;
729     }
730 auterman 1.5
731 auterman 1.13 TGraph* gl_WHT(){//sq-gl
732     double sq[] = {101,2000,2000,101};
733     double gl[] = {256,256,400,400};
734     TGraph* res = new TGraph(4,sq,gl);
735     res->SetFillColor(kWhite);
736     return res;
737 auterman 1.5 }
738    
739    
740 auterman 1.13 ////////////////////////////////////////////
741     TGraph* gl_LEP(){//gl-sq
742     double sq[] = {0,0,100,100};
743     double gl[] = {0,2000,2000,0};
744     TGraph* res = new TGraph(4,gl,sq);
745     res->SetFillColor(kBlue);
746     return res;
747 auterman 1.9 }
748    
749 auterman 1.13 TGraph* sq_TEV(){//gl-sq
750     double sq[] = {0,2000,2000,330,250,300,200,150,100,0};
751     double gl[] = {0,0,190,190,260,300,500,560,500,500};
752 auterman 1.9
753 auterman 1.13 TGraph* res = new TGraph(10,gl,sq);
754     res->SetFillColor(kGreen+2);
755     return res;
756 auterman 1.9 }
757    
758 auterman 1.13 TGraph* sq_CDF(){//gl-sq
759     double sq[] = {0,2000,2000,480,460,420,410,380,390,290,0};
760     double gl[] = {0,0,280,280,300,310,330,340,440,320,320};
761     TGraph* res = new TGraph(11,gl,sq);
762     res->SetFillColor(kOrange+5);
763     return res;
764 auterman 1.5 }
765 auterman 1.13 TGraph* sq_DEZ(){//gl-sq
766     double sq[] = {0,2000,2000,460,430,400,390,290,0};
767     double gl[] = {0,0,305,305,320,350,440,320,320};
768     TGraph* res = new TGraph(9,gl,sq);
769     res->SetFillColor(kYellow-5);
770     return res;
771 auterman 1.9 }
772    
773 auterman 1.13 TGraph* glsq_NoSol(){//sq-gl
774     gStyle->SetHatchesSpacing(2.0);
775     gStyle->SetHatchesLineWidth(1);
776     double sq[] = {83,83,110,1297.6,0, 0};
777     double gl[] = { 0,63,120,1466, 1466,0};
778     TGraph* res = new TGraph(6,gl,sq);
779     res->SetLineColor(1);
780     res->SetLineWidth(2);
781     res->SetFillStyle(3354);
782     return res;
783 auterman 1.9 }
784    
785    
786 auterman 1.5
787    
788    
789 auterman 1.13 TGraph * Atlas_m0_m12_tb3_obs()
790     {
791     TGraph *graph = new TGraph(71);
792     graph->SetLineWidth(2);
793     graph->SetPoint(0,54,357.341);
794     graph->SetPoint(1,82,358.4171);
795     graph->SetPoint(2,110,359.8179);
796     graph->SetPoint(3,110.934,359.875);
797     graph->SetPoint(4,138,361.5302);
798     graph->SetPoint(5,166,362.5696);
799     graph->SetPoint(6,189.0676,359.875);
800     graph->SetPoint(7,194,359.1415);
801     graph->SetPoint(8,222,354.5211);
802     graph->SetPoint(9,248.1714,351.625);
803     graph->SetPoint(10,250,351.4583);
804     graph->SetPoint(11,278,349.4991);
805     graph->SetPoint(12,306,343.4051);
806     graph->SetPoint(13,306.1313,343.375);
807     graph->SetPoint(14,334,335.3855);
808     graph->SetPoint(15,334.7966,335.125);
809     graph->SetPoint(16,350.8793,326.875);
810     graph->SetPoint(17,362,319.7823);
811     graph->SetPoint(18,364.6568,318.625);
812     graph->SetPoint(19,383.5969,310.375);
813     graph->SetPoint(20,390,308.6978);
814     graph->SetPoint(21,415.0931,302.125);
815     graph->SetPoint(22,418,300.2992);
816     graph->SetPoint(23,423.9359,293.875);
817     graph->SetPoint(24,431.0348,285.625);
818     graph->SetPoint(25,441.6066,277.375);
819     graph->SetPoint(26,446,275.3629);
820     graph->SetPoint(27,468.0485,269.125);
821     graph->SetPoint(28,474,267.2393);
822     graph->SetPoint(29,486.3632,260.875);
823     graph->SetPoint(30,495.8534,252.625);
824     graph->SetPoint(31,502,244.7684);
825     graph->SetPoint(32,502.3699,244.375);
826     graph->SetPoint(33,508.424,236.125);
827     graph->SetPoint(34,514.4781,227.875);
828     graph->SetPoint(35,518.8059,219.625);
829     graph->SetPoint(36,521.5056,211.375);
830     graph->SetPoint(37,524.324,203.125);
831     graph->SetPoint(38,527.1424,194.875);
832     graph->SetPoint(39,530,193.5052);
833     graph->SetPoint(40,552.5782,186.625);
834     graph->SetPoint(41,558,185.8767);
835     graph->SetPoint(42,586,180.1476);
836     graph->SetPoint(43,592.2836,178.375);
837     graph->SetPoint(44,614,171.422);
838     graph->SetPoint(45,617.5927,170.125);
839     graph->SetPoint(46,627.5396,161.875);
840     graph->SetPoint(47,642,157.9876);
841     graph->SetPoint(48,658.2277,153.625);
842     graph->SetPoint(49,670,151.1225);
843     graph->SetPoint(50,698,146.9886);
844     graph->SetPoint(51,711.5425,145.375);
845     graph->SetPoint(52,726,143.6935);
846     graph->SetPoint(53,754,140.0648);
847     graph->SetPoint(54,782,137.4563);
848     graph->SetPoint(55,783.0426,137.125);
849     graph->SetPoint(56,796.0326,128.875);
850     graph->SetPoint(57,810,125.0328);
851     graph->SetPoint(58,826.0235,120.625);
852     graph->SetPoint(59,838,117.3305);
853     graph->SetPoint(60,866,116.7462);
854     graph->SetPoint(61,894,116.1044);
855     graph->SetPoint(62,922,114.6645);
856     graph->SetPoint(63,950,116.937);
857     graph->SetPoint(64,978,117.6956);
858     graph->SetPoint(65,1006,115.198);
859     graph->SetPoint(66,1034,113.1166);
860     graph->SetPoint(67,1038.967,112.375);
861     graph->SetPoint(68,1062,108.0997);
862     graph->SetPoint(69,1090,104.373);
863     graph->SetPoint(70,1096.429,104.125);
864     graph->SetFillColor(0);
865     return graph;
866     }
867     TGraph * Atlas_mGl_mSq_obs()
868     {
869     //x:gluino mass, y:squark mass
870     TGraph *graph = new TGraph(64);
871     graph->SetLineWidth(2);
872     graph->SetPoint(0,511.2569,1976.25);
873     graph->SetPoint(1,513.125,1936.181);
874     graph->SetPoint(2,513.4714,1928.75);
875     graph->SetPoint(3,515.6859,1881.25);
876     graph->SetPoint(4,517.9004,1833.75);
877     graph->SetPoint(5,520.1148,1786.25);
878     graph->SetPoint(6,522.3293,1738.75);
879     graph->SetPoint(7,524.5438,1691.25);
880     graph->SetPoint(8,526.1095,1643.75);
881     graph->SetPoint(9,526.5267,1596.25);
882     graph->SetPoint(10,526.9924,1548.75);
883     graph->SetPoint(11,527.2745,1501.25);
884     graph->SetPoint(12,526.9487,1453.75);
885     graph->SetPoint(13,526.6228,1406.25);
886     graph->SetPoint(14,532.902,1358.75);
887     graph->SetPoint(15,540.182,1311.25);
888     graph->SetPoint(16,547.4619,1263.75);
889     graph->SetPoint(17,558.0438,1216.25);
890     graph->SetPoint(18,561.875,1203.002);
891     graph->SetPoint(19,579.4475,1168.75);
892     graph->SetPoint(20,603.8166,1121.25);
893     graph->SetPoint(21,610.625,1107.979);
894     graph->SetPoint(22,630.8311,1073.75);
895     graph->SetPoint(23,658.8712,1026.25);
896     graph->SetPoint(24,659.375,1025.691);
897     graph->SetPoint(25,703.8609,978.75);
898     graph->SetPoint(26,708.125,975.5966);
899     graph->SetPoint(27,756.875,945.0332);
900     graph->SetPoint(28,778.5082,931.25);
901     graph->SetPoint(29,805.625,916.3566);
902     graph->SetPoint(30,847.5791,883.75);
903     graph->SetPoint(31,854.375,879.4212);
904     graph->SetPoint(32,903.125,848.0476);
905     graph->SetPoint(33,927.7959,836.25);
906     graph->SetPoint(34,951.875,823.2943);
907     graph->SetPoint(35,1000.625,790.1523);
908     graph->SetPoint(36,1004.488,788.75);
909     graph->SetPoint(37,1049.375,774.2142);
910     graph->SetPoint(38,1098.125,755.1404);
911     graph->SetPoint(39,1130.904,741.25);
912     graph->SetPoint(40,1146.875,736.2226);
913     graph->SetPoint(41,1195.625,720.3208);
914     graph->SetPoint(42,1244.375,701.1234);
915     graph->SetPoint(43,1266.694,693.75);
916     graph->SetPoint(44,1293.125,685.9941);
917     graph->SetPoint(45,1341.875,668.9126);
918     graph->SetPoint(46,1390.625,652.8072);
919     graph->SetPoint(47,1439.375,647.4204);
920     graph->SetPoint(48,1448.107,646.25);
921     graph->SetPoint(49,1488.125,638.5908);
922     graph->SetPoint(50,1536.875,620.8084);
923     graph->SetPoint(51,1585.625,603.026);
924     graph->SetPoint(52,1597.347,598.75);
925     graph->SetPoint(53,1634.375,581.9133);
926     graph->SetPoint(54,1683.125,559.7463);
927     graph->SetPoint(55,1701.81,551.25);
928     graph->SetPoint(56,1731.875,537.5793);
929     graph->SetPoint(57,1780.625,515.4123);
930     graph->SetPoint(58,1806.273,503.75);
931     graph->SetPoint(59,1829.375,493.2101);
932     graph->SetPoint(60,1878.125,471.0784);
933     graph->SetPoint(61,1910.736,456.25);
934     graph->SetPoint(62,1926.875,448.241);
935     graph->SetPoint(63,1975.625,426.7444);
936     return graph;
937 auterman 1.5 }