1 |
|
#include "SusyScan.h" |
2 |
|
#include "GeneratorMasses.h" |
3 |
|
|
4 |
+ |
#include "TGraph.h" |
5 |
+ |
#include "TGraphErrors.h" |
6 |
+ |
#include "TSpline.h" |
7 |
+ |
|
8 |
|
#include <cmath> |
9 |
|
|
10 |
|
|
23 |
|
double Xsection(const SusyScan* p){ return p->Xsection; } |
24 |
|
double ExpXsecLimit(const SusyScan* p){ return p->ExpXsecLimit; } |
25 |
|
double ObsXsecLimit(const SusyScan* p){ return p->ObsXsecLimit; } |
26 |
+ |
double Signal(const SusyScan* p){ return p->signal; } |
27 |
+ |
double SignalUncertainty(const SusyScan* p){ return p->signal_uncertainty; } |
28 |
+ |
double SignalRelUncertainty(const SusyScan* p){ return p->signal_uncertainty/p->signal; } |
29 |
|
double ExpExclusion(const SusyScan* p){ return (ExpXsecLimit(p)<Xsection(p)&&ExpXsecLimit(p)>0.01?1:0.01); } |
30 |
|
double ObsExclusion(const SusyScan* p){ return (ObsXsecLimit(p)<Xsection(p)&&ObsXsecLimit(p)>0.01?1:0.01); } |
31 |
|
double SoverSqrtB(const SusyScan* p){ return p->signal/(sqrt(p->background)+p->background_uncertainty+p->signal_uncertainty); } |
32 |
|
double XsecOverObserved(const SusyScan* p){ return (ObsXsecLimit(p)==0 ? 9999. : Xsection(p)/ObsXsecLimit(p)); } |
33 |
|
double XsecOverExpected(const SusyScan* p){ return (ExpXsecLimit(p)==0 ? 9999. : Xsection(p)/ExpXsecLimit(p)); } |
34 |
|
double SignalAcceptance(const SusyScan* p){ return p->signal / (Luminosity*Xsection(p)); } |
35 |
< |
double ExpNSignLimit(const SusyScan* p){ return p->signal * ExpXsecLimit(p)/Xsection(p); } |
36 |
< |
double ObsNSignLimit(const SusyScan* p){ return p->signal * ObsXsecLimit(p)/Xsection(p); } |
35 |
> |
double ExpNSignLimit(const SusyScan* p){ return p->ExpNsigLimit; } |
36 |
> |
double ObsNSignLimit(const SusyScan* p){ return p->ObsNsigLimit; } |
37 |
|
double PLExpNSignLimit(const SusyScan* p){ return p->PLExpNsigLimit; } |
38 |
< |
double PLObsNSignLimit(const SusyScan* p){ return p->PLExpNsigLimit; } |
38 |
> |
double PLObsNSignLimit(const SusyScan* p){ return p->PLObsNsigLimit; } |
39 |
|
double PLExpXsecLimit(const SusyScan* p){ return p->PLExpXsecLimit; } |
40 |
|
double PLObsXsecLimit(const SusyScan* p){ return p->PLObsXsecLimit; } |
41 |
|
double PLExpExclusion(const SusyScan* p){ return (PLExpXsecLimit(p)<Xsection(p)&&PLExpXsecLimit(p)>0.01?1:0.01); } |
42 |
|
double PLObsExclusion(const SusyScan* p){ return (PLObsXsecLimit(p)<Xsection(p)&&PLObsXsecLimit(p)>0.01?1:0.01); } |
43 |
< |
|
44 |
< |
|
43 |
> |
double FCExpNSignLimit(const SusyScan* p){ return p->FCExpNsigLimit; } |
44 |
> |
double FCObsNSignLimit(const SusyScan* p){ return p->FCObsNsigLimit; } |
45 |
> |
double FCExpXsecLimit(const SusyScan* p){ return p->FCExpXsecLimit; } |
46 |
> |
double FCObsXsecLimit(const SusyScan* p){ return p->FCObsXsecLimit; } |
47 |
> |
double FCExpExclusion(const SusyScan* p){ return (FCExpXsecLimit(p)<Xsection(p)&&FCExpXsecLimit(p)>0.01?1:0.01); } |
48 |
> |
double FCObsExclusion(const SusyScan* p){ return (FCObsXsecLimit(p)<Xsection(p)&&FCObsXsecLimit(p)>0.01?1:0.01); } |
49 |
> |
double MCMCExpNSignLimit(const SusyScan* p){ return p->MCMCExpNsigLimit; } |
50 |
> |
double MCMCObsNSignLimit(const SusyScan* p){ return p->MCMCObsNsigLimit; } |
51 |
> |
double MCMCExpXsecLimit(const SusyScan* p){ return p->MCMCExpXsecLimit; } |
52 |
> |
double MCMCObsXsecLimit(const SusyScan* p){ return p->MCMCObsXsecLimit; } |
53 |
> |
double MCMCExpExclusion(const SusyScan* p){ return (MCMCExpXsecLimit(p)<Xsection(p)&&MCMCExpXsecLimit(p)>0.01?1:0.01); } |
54 |
> |
double MCMCObsExclusion(const SusyScan* p){ return (MCMCObsXsecLimit(p)<Xsection(p)&&MCMCObsXsecLimit(p)>0.01?1:0.01); } |
55 |
|
|
56 |
|
double Mzero(const GeneratorMasses* p){ return p->Mzero; } |
57 |
|
double Mhalf(const GeneratorMasses* p){ return p->Mhalf; } |
64 |
|
double MChi4(const GeneratorMasses* p){ return p->MZ4; } |
65 |
|
double MCha1(const GeneratorMasses* p){ return p->MW1; } |
66 |
|
double MCha2(const GeneratorMasses* p){ return p->MW2; } |
67 |
+ |
|
68 |
+ |
|
69 |
+ |
//RA1 Contours |
70 |
+ |
TGraph* set_sneutrino_d0_1(){ |
71 |
+ |
double sn_m0[9]={0,0,55,90,100,110,100,55,0}; |
72 |
+ |
double sn_m12[9]={0,140,220,240,240,230,210,150,0}; |
73 |
+ |
|
74 |
+ |
TGraph* sn_d0_gr = new TGraph(9,sn_m0,sn_m12); |
75 |
+ |
|
76 |
+ |
sn_d0_gr->SetFillColor(kGreen+3); |
77 |
+ |
sn_d0_gr->SetFillStyle(1001); |
78 |
+ |
|
79 |
+ |
|
80 |
+ |
return sn_d0_gr; |
81 |
+ |
} |
82 |
+ |
|
83 |
+ |
TGraph* set_sneutrino_d0_2(){ |
84 |
+ |
double sn_m0[5]={0,50,105,190,0}; |
85 |
+ |
double sn_m12[5]={0,140,205,140,0}; |
86 |
+ |
|
87 |
+ |
TGraph* sn_d0_gr_2 = new TGraph(5,sn_m0,sn_m12); |
88 |
+ |
|
89 |
+ |
sn_d0_gr_2->SetFillColor(kGreen+3); |
90 |
+ |
sn_d0_gr_2->SetFillStyle(1001); |
91 |
+ |
|
92 |
+ |
|
93 |
+ |
return sn_d0_gr_2; |
94 |
+ |
} |
95 |
+ |
|
96 |
+ |
|
97 |
+ |
|
98 |
+ |
TGraph* set_lep_ch(){ |
99 |
+ |
|
100 |
+ |
double ch_m0[5]; |
101 |
+ |
double ch_m12[5]; |
102 |
+ |
|
103 |
+ |
|
104 |
+ |
ch_m0[0] = 0; |
105 |
+ |
ch_m0[1] = 0; |
106 |
+ |
ch_m0[2] = 600; |
107 |
+ |
ch_m0[3] = 1000; |
108 |
+ |
ch_m0[4] = 1000; |
109 |
+ |
|
110 |
+ |
ch_m12[0] = 0; |
111 |
+ |
ch_m12[1] = 130; |
112 |
+ |
ch_m12[2] = 120; |
113 |
+ |
ch_m12[3] = 113; |
114 |
+ |
ch_m12[4] = 0; |
115 |
+ |
|
116 |
+ |
|
117 |
+ |
TGraph* ch_gr = new TGraph(5,ch_m0,ch_m12); |
118 |
+ |
|
119 |
+ |
ch_gr->SetFillColor(3); |
120 |
+ |
ch_gr->SetFillStyle(1001); |
121 |
+ |
|
122 |
+ |
return ch_gr; |
123 |
+ |
|
124 |
+ |
} |
125 |
+ |
|
126 |
+ |
|
127 |
+ |
TGraph* set_lep_sl(){ |
128 |
+ |
|
129 |
+ |
|
130 |
+ |
|
131 |
+ |
double sl_m0[] = {0,0,30,50,60,75,80,90,100}; |
132 |
+ |
double sl_m12[] = {0,245,240,220,200,150,100,50,0}; |
133 |
+ |
|
134 |
+ |
TGraph* lep_sl = new TGraph(9,sl_m0,sl_m12); |
135 |
+ |
|
136 |
+ |
lep_sl->SetFillColor(5); |
137 |
+ |
lep_sl->SetFillStyle(1001); |
138 |
+ |
|
139 |
+ |
return lep_sl; |
140 |
+ |
} |
141 |
+ |
|
142 |
+ |
TGraph* set_tev_sg_cdf(){ |
143 |
+ |
|
144 |
+ |
double sg_m0[] = {0,50,100,150,200,250,300,350,400,450,500,550,600,600}; |
145 |
+ |
double sg_m12[] = {0,170,160,155,150,122,116,112,110,106,105,100,98,0}; |
146 |
+ |
TGraph* sg_gr = new TGraph(14,sg_m0,sg_m12); |
147 |
+ |
|
148 |
+ |
sg_gr->SetFillColor(2); |
149 |
+ |
sg_gr->SetFillStyle(1001); |
150 |
+ |
|
151 |
+ |
return sg_gr; |
152 |
+ |
|
153 |
+ |
} |
154 |
+ |
|
155 |
+ |
TGraph* set_tev_sg_d0(){ |
156 |
+ |
double sgd_m0[] = {0,50,100,150,200,250,300,350,400,450,500,550,600,600}; |
157 |
+ |
double sgd_m12[] = {0,173,170,168,160,150,140,130,125,120,120,120,120,0}; |
158 |
+ |
TGraph* sgd_gr = new TGraph(14,sgd_m0,sgd_m12); |
159 |
+ |
|
160 |
+ |
sgd_gr->SetFillColor(41); |
161 |
+ |
sgd_gr->SetFillStyle(1001); |
162 |
+ |
|
163 |
+ |
return sgd_gr; |
164 |
+ |
|
165 |
+ |
} |
166 |
+ |
|
167 |
+ |
TGraph* set_tev_tlp_cdf(){ |
168 |
+ |
double tlp1_m0[] = {0,20,40,60,70,80,90,80,70,60}; |
169 |
+ |
double tlp1_m12[] = {170,185,200,215,220,215,210,190,175,160}; |
170 |
+ |
TGraph* tlp1_gr = new TGraph(10,tlp1_m0,tlp1_m12); |
171 |
+ |
|
172 |
+ |
tlp1_gr->SetFillColor(4); |
173 |
+ |
tlp1_gr->SetFillStyle(1001); |
174 |
+ |
|
175 |
+ |
return tlp1_gr; |
176 |
+ |
} |
177 |
+ |
|
178 |
+ |
TGraph* set_tev_tlp_d0(){ |
179 |
+ |
double tlp2_m0[] = {70,80,90,100,105,110,120,130,140}; |
180 |
+ |
double tlp2_m12[] = {160,172,184,196,205,195,185,173,160}; |
181 |
+ |
TGraph* tlp2_gr = new TGraph(9,tlp2_m0,tlp2_m12); |
182 |
+ |
|
183 |
+ |
tlp2_gr->SetFillColor(4); |
184 |
+ |
tlp2_gr->SetFillStyle(1001); |
185 |
+ |
|
186 |
+ |
return tlp2_gr; |
187 |
+ |
|
188 |
+ |
} |
189 |
+ |
|
190 |
+ |
TGraph* set_tev_stau(){ |
191 |
+ |
double st_m0[] = {0,30,200,0,0}; |
192 |
+ |
double st_m12[] = {230,240,1000,1000,230}; |
193 |
+ |
TGraph* st_gr = new TGraph(5,st_m0,st_m12); |
194 |
+ |
|
195 |
+ |
st_gr->SetFillColor(40); |
196 |
+ |
st_gr->SetFillStyle(1001); |
197 |
+ |
|
198 |
+ |
|
199 |
+ |
return st_gr; |
200 |
+ |
|
201 |
+ |
} |
202 |
+ |
|
203 |
+ |
|
204 |
+ |
TGraphErrors* getLO_signalCont(){ |
205 |
+ |
|
206 |
+ |
|
207 |
+ |
|
208 |
+ |
Int_t nl = 9; |
209 |
+ |
Double_t xl[9]; |
210 |
+ |
Double_t yl[9]; |
211 |
+ |
Double_t exl[9]; |
212 |
+ |
Double_t eyl[9]; |
213 |
+ |
|
214 |
+ |
// cout << " n " << hist->GetXaxis()->GetNbins() << endl; |
215 |
+ |
|
216 |
+ |
for(int i = 0; i < nl; i++){ |
217 |
+ |
exl[i] = 5; |
218 |
+ |
eyl[i] = 5; |
219 |
+ |
|
220 |
+ |
} |
221 |
+ |
|
222 |
+ |
xl[0] = 0; |
223 |
+ |
yl[0] = 265; |
224 |
+ |
xl[1] = 100; |
225 |
+ |
yl[1] = 258; |
226 |
+ |
xl[2] = 200; |
227 |
+ |
yl[2] = 250; |
228 |
+ |
xl[3] = 250; |
229 |
+ |
yl[3] = 240; |
230 |
+ |
xl[4] = 300; |
231 |
+ |
yl[4] = 210; |
232 |
+ |
xl[5] = 340; |
233 |
+ |
yl[5] = 177; |
234 |
+ |
xl[6] = 400; |
235 |
+ |
yl[6] = 140; |
236 |
+ |
xl[7] = 460; |
237 |
+ |
yl[7] = 120; |
238 |
+ |
xl[8] = 490; |
239 |
+ |
yl[8] =100; |
240 |
+ |
|
241 |
+ |
|
242 |
+ |
|
243 |
+ |
|
244 |
+ |
|
245 |
+ |
|
246 |
+ |
TGraphErrors* gr1 = new TGraphErrors(nl,xl,yl,exl,eyl); |
247 |
+ |
gr1->SetMarkerColor(kGreen+2); |
248 |
+ |
gr1->SetMarkerStyle(21); |
249 |
+ |
|
250 |
+ |
|
251 |
+ |
//gr1->Draw("LP"); |
252 |
+ |
|
253 |
+ |
TSpline3 *s = new TSpline3("grs",gr1); |
254 |
+ |
s->SetLineColor(kGreen+2); |
255 |
+ |
s->SetLineStyle(4); |
256 |
+ |
s->SetLineWidth(3); |
257 |
+ |
|
258 |
+ |
|
259 |
+ |
return gr1; |
260 |
+ |
|
261 |
+ |
|
262 |
+ |
|
263 |
+ |
} |
264 |
+ |
|
265 |
+ |
|
266 |
+ |
TGraphErrors* getExpected_NLOunc(){ |
267 |
+ |
|
268 |
+ |
Int_t nl = 11; |
269 |
+ |
Double_t xl[11]; |
270 |
+ |
Double_t yl[11]; |
271 |
+ |
Double_t exl[11]; |
272 |
+ |
Double_t eyl[11]; |
273 |
+ |
|
274 |
+ |
// cout << " n " << hist->GetXaxis()->GetNbins() << endl; |
275 |
+ |
|
276 |
+ |
for(int i = 0; i < nl; i++){ |
277 |
+ |
exl[i] = 5; |
278 |
+ |
eyl[i] = 5; |
279 |
+ |
|
280 |
+ |
} |
281 |
+ |
|
282 |
+ |
xl[0] = 35; |
283 |
+ |
yl[0] = 283; |
284 |
+ |
xl[1] = 100; |
285 |
+ |
yl[1] = 280; |
286 |
+ |
xl[2] = 150; |
287 |
+ |
yl[2] = 279; |
288 |
+ |
xl[3] = 200; |
289 |
+ |
yl[3] = 275; |
290 |
+ |
xl[4] = 250; |
291 |
+ |
yl[4] = 270; |
292 |
+ |
xl[5] = 300; |
293 |
+ |
yl[5] = 255; |
294 |
+ |
xl[6] = 350; |
295 |
+ |
yl[6] = 225; |
296 |
+ |
xl[7] = 400; |
297 |
+ |
yl[7] = 195; |
298 |
+ |
xl[8] = 450; |
299 |
+ |
yl[8] = 175; |
300 |
+ |
xl[9] = 500; |
301 |
+ |
yl[9] = 155; |
302 |
+ |
xl[10] = 550; |
303 |
+ |
yl[10] = 50; |
304 |
+ |
|
305 |
+ |
|
306 |
+ |
|
307 |
+ |
TGraphErrors* gr1 = new TGraphErrors(nl,xl,yl,exl,eyl); |
308 |
+ |
gr1->SetMarkerColor(kWhite); |
309 |
+ |
|
310 |
+ |
|
311 |
+ |
return gr1; |
312 |
+ |
|
313 |
+ |
|
314 |
+ |
|
315 |
+ |
|
316 |
+ |
|
317 |
+ |
} |
318 |
+ |
|
319 |
+ |
|
320 |
+ |
TGraphErrors* getObserved_NLOunc(){ |
321 |
+ |
|
322 |
+ |
Int_t nl = 11; |
323 |
+ |
Double_t xl[11]; |
324 |
+ |
Double_t yl[11]; |
325 |
+ |
Double_t exl[11]; |
326 |
+ |
Double_t eyl[11]; |
327 |
+ |
|
328 |
+ |
// cout << " n " << hist->GetXaxis()->GetNbins() << endl; |
329 |
+ |
|
330 |
+ |
for(int i = 0; i < nl; i++){ |
331 |
+ |
exl[i] = 5; |
332 |
+ |
eyl[i] = 5; |
333 |
+ |
|
334 |
+ |
} |
335 |
+ |
|
336 |
+ |
xl[0] = 35; |
337 |
+ |
yl[0] = 272; |
338 |
+ |
xl[1] = 100; |
339 |
+ |
yl[1] = 270; |
340 |
+ |
xl[2] = 150; |
341 |
+ |
yl[2] = 268; |
342 |
+ |
xl[3] = 200; |
343 |
+ |
yl[3] = 265; |
344 |
+ |
xl[4] = 250; |
345 |
+ |
yl[4] = 255; |
346 |
+ |
xl[5] = 300; |
347 |
+ |
yl[5] = 236; |
348 |
+ |
xl[6] = 350; |
349 |
+ |
yl[6] = 198; |
350 |
+ |
xl[7] = 400; |
351 |
+ |
yl[7] = 168; |
352 |
+ |
xl[8] = 450; |
353 |
+ |
yl[8] = 150; |
354 |
+ |
xl[9] = 490; |
355 |
+ |
yl[9] = 135; |
356 |
+ |
xl[10] = 503; |
357 |
+ |
yl[10] = 120; |
358 |
+ |
|
359 |
+ |
|
360 |
+ |
|
361 |
+ |
TGraphErrors* gr1 = new TGraphErrors(nl,xl,yl,exl,eyl); |
362 |
+ |
gr1->SetMarkerColor(kWhite); |
363 |
+ |
gr1->SetLineColor(kWhite); |
364 |
+ |
// gr1->SetMarkerStyle(21); |
365 |
+ |
|
366 |
+ |
|
367 |
+ |
//gr1->Draw("LP"); |
368 |
+ |
|
369 |
+ |
TSpline3 *s = new TSpline3("grs",gr1); |
370 |
+ |
s->SetLineColor(kRed); |
371 |
+ |
// s->SetLineStyle(2); |
372 |
+ |
s->SetLineWidth(3); |
373 |
+ |
|
374 |
+ |
|
375 |
+ |
return gr1; |
376 |
+ |
|
377 |
+ |
|
378 |
+ |
|
379 |
+ |
|
380 |
+ |
|
381 |
+ |
} |
382 |
+ |
|