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