1 | { |
---|
2 | TFile *f = TFile::Open("res.root"); |
---|
3 | TH1F *hl = (TH1F*)f->Get("sv0L"); |
---|
4 | TH1F *hb = (TH1F*)f->Get("sv0B"); |
---|
5 | |
---|
6 | TH1F *hipl = (TH1F*)f->Get("ip3dsv1L"); |
---|
7 | TH1F *hipb = (TH1F*)f->Get("ip3dsv1B"); |
---|
8 | |
---|
9 | int nb = hl->GetNbinsX(); |
---|
10 | int bi50 = hl->FindBin(5.85); |
---|
11 | cout << "Cut Bin " << bi50 << endl; |
---|
12 | cout << "epsilon_b = " << hb->Integral(bi50,nb+1)/hb->Integral(0,nb+1) << endl; |
---|
13 | cout << "R_light = " << hl->Integral(0,nb+1)/hl->Integral(bi50,nb+1) << endl; |
---|
14 | double effsv[nb],eeffsv[nb]; |
---|
15 | double R_lightsv[nb], eRsv[nb]; |
---|
16 | double nblabelsv = hb->Integral(0,nb+1); |
---|
17 | double nllabelsv = hl->Integral(0,nb+1); |
---|
18 | |
---|
19 | for (int i = 1; i <= nb; i++) { |
---|
20 | effsv[i-1] = hb->Integral(i,nb+1)/nblabelsv; |
---|
21 | eeffsv[i-1] = 0; |
---|
22 | double intl = hl->Integral(i,nb+1); |
---|
23 | if (intl != 0) { |
---|
24 | R_lightsv[i-1] = nllabelsv/intl; |
---|
25 | eRsv[i-1] = R_lightsv[i-1]*sqrt((R_lightsv[i-1]-1)/nllabelsv); |
---|
26 | } |
---|
27 | else { |
---|
28 | R_lightsv[i-1] = 60000.; |
---|
29 | eRsv[i-1] = 0; |
---|
30 | } |
---|
31 | } |
---|
32 | |
---|
33 | TGraphErrors *heffbsv = new TGraphErrors(nb, effsv, R_lightsv, eeffsv, eRsv); |
---|
34 | |
---|
35 | int nbip = hipl->GetNbinsX(); |
---|
36 | double nblabel = hipb->Integral(0,nbip+1); |
---|
37 | double nllabel = hipl->Integral(0,nbip+1); |
---|
38 | |
---|
39 | double eff[nbip],eeff[nbip]; |
---|
40 | double R_light[nbip], eR[nbip]; |
---|
41 | int bi50 = 0, bi57 = 0, bi60 = 0, bi70 = 0, bi01 = 0; |
---|
42 | for (int i = 1; i <= nbip; i++) { |
---|
43 | eff[i-1] = hipb->Integral(i,nbip+1)/nblabel; |
---|
44 | eeff[i-1] = 0; |
---|
45 | double intl = hipl->Integral(i,nbip+1); |
---|
46 | if (intl != 0) { |
---|
47 | R_light[i-1] = nllabel/intl; |
---|
48 | eR[i-1] = R_light[i-1]*sqrt((R_light[i-1]-1)/nllabel); |
---|
49 | } |
---|
50 | else { |
---|
51 | R_light[i-1] = 60000.; |
---|
52 | eR[i-1] = 0; |
---|
53 | } |
---|
54 | if (i > 1) { |
---|
55 | if (eff[i-1] <= 0.5 && eff[i-2] >= 0.5) {bi50 = i-1;} |
---|
56 | if (eff[i-1] <= 0.57 && eff[i-2] >= 0.57) {bi57 = i-1;} |
---|
57 | if (eff[i-1] <= 0.6 && eff[i-2] >= 0.6) {bi60 = i-1;} |
---|
58 | if (eff[i-1] <= 0.7 && eff[i-2] >= 0.7) {bi70 = i-1;} |
---|
59 | if (1/R_light[i-1] <= 0.01 && 1/R_light[i-2] >= 0.01) {bi01 = i-1;} |
---|
60 | } |
---|
61 | } |
---|
62 | |
---|
63 | double ru50 = (R_light[bi50]*(eff[bi50-1]-0.5)+R_light[bi50-1]*(0.5-eff[bi50]))/(eff[bi50-1]-eff[bi50]); |
---|
64 | double ru57 = (R_light[bi57]*(eff[bi57-1]-0.57)+R_light[bi57-1]*(0.57-eff[bi57]))/(eff[bi57-1]-eff[bi57]); |
---|
65 | double ru60 = (R_light[bi60]*(eff[bi60-1]-0.6)+R_light[bi60-1]*(0.6-eff[bi60]))/(eff[bi60-1]-eff[bi60]); |
---|
66 | double ru70 = (R_light[bi70]*(eff[bi70-1]-0.7)+R_light[bi70-1]*(0.7-eff[bi70]))/(eff[bi70-1]-eff[bi70]); |
---|
67 | double eru50 = (eR[bi50]*(eff[bi50-1]-0.5)+eR[bi50-1]*(0.5-eff[bi50]))/(eff[bi50-1]-eff[bi50]); |
---|
68 | double eru57 = (eR[bi57]*(eff[bi57-1]-0.57)+eR[bi57-1]*(0.57-eff[bi57]))/(eff[bi57-1]-eff[bi57]); |
---|
69 | double eru60 = (eR[bi60]*(eff[bi60-1]-0.6)+eR[bi60-1]*(0.6-eff[bi60]))/(eff[bi60-1]-eff[bi60]); |
---|
70 | double eru70 = (eR[bi70]*(eff[bi70-1]-0.7)+eR[bi70-1]*(0.7-eff[bi70]))/(eff[bi70-1]-eff[bi70]); |
---|
71 | cout <<" Ru(50%) = "<<ru50<<" +- "<<eru50<<" cut at "<<hipb->GetXaxis()->GetBinCenter(bi50)<<" "<<bi50<<endl; |
---|
72 | cout <<" Ru(57%) = "<<ru57<<" +- "<<eru57<<" cut at "<<hipb->GetXaxis()->GetBinCenter(bi57)<<" "<<bi57<<endl; |
---|
73 | cout <<" Ru(60%) = "<<ru60<<" +- "<<eru60<<" cut at "<<hipb->GetXaxis()->GetBinCenter(bi60)<<" "<<bi60<<endl; |
---|
74 | cout <<" Ru(70%) = "<<ru70<<" +- "<<eru70<<" cut at "<<hipb->GetXaxis()->GetBinCenter(bi70)<<" "<<bi70<<endl; |
---|
75 | // |
---|
76 | double epsb01 = (eff[bi01]*(1./R_light[bi01-1]-0.01)+eff[bi01-1]*(0.01-1./R_light[bi01]))/(1./R_light[bi01-1]-1./R_light[bi01]); |
---|
77 | double eepsb01 = (eeff[bi01]*(1./R_light[bi01-1]-0.01)+eeff[bi01-1]*(0.01-1./R_light[bi01]))/(1./R_light[bi01-1]-1./R_light[bi01]); |
---|
78 | cout <<" epsilon_b(Ru=100) = "<<epsb01<<" +- "<<eepsb01<<" for a cut at (center) "<<hb->GetXaxis()->GetBinCenter(bi01)<<endl; |
---|
79 | |
---|
80 | |
---|
81 | TGraphErrors *heffb = new TGraphErrors(nbip, eff, R_light, eeff, eR); |
---|
82 | heffb->SetMarkerStyle(20); |
---|
83 | heffb->SetMarkerColor(2); |
---|
84 | heffb->SetMarkerSize(0.5); |
---|
85 | heffb->Draw("LAP"); |
---|
86 | |
---|
87 | heffbsv->Draw("LP"); |
---|
88 | } |
---|