1 {
2 TFile*
f =
new TFile( filename );
3 TTree* pid_kal = (TTree*)
f->Get(
"pid_kal" );
4
5 Double_t kal_p;
6 Double_t prob_pion;
7 Double_t prob_kaon;
8 Double_t prob_proton;
9
10 pid_kal->SetBranchAddress( "kal_p", &kal_p );
11 pid_kal->SetBranchAddress( "prob_pion", &prob_pion );
12 pid_kal->SetBranchAddress( "prob_kaon", &prob_kaon );
13 pid_kal->SetBranchAddress( "prob_proton", &prob_proton );
14
15 Int_t nevent = pid_kal->GetEntries();
16
17 Double_t x[10] = { .1, .2, .3, .4, .5, .6, .7, .8, .9, 1.0 };
18 Double_t ex[10] = { 0 };
19
20 Int_t kal[10] = { 0 };
21
22 Int_t pid1[10] = { 0 };
23 Int_t pid2[10] = { 0 };
24 Int_t pid3[10] = { 0 };
25 Int_t pid4[10] = { 0 };
26 Int_t pid5[10] = { 0 };
27 Int_t pid6[10] = { 0 };
28 Int_t pid7[10] = { 0 };
29 Int_t pid8[10] = { 0 };
30
31 Double_t eff1[10] = { 0 };
32 Double_t eff2[10] = { 0 };
33 Double_t eff3[10] = { 0 };
34 Double_t eff4[10] = { 0 };
35 Double_t eff5[10] = { 0 };
36 Double_t eff6[10] = { 0 };
37 Double_t eff7[10] = { 0 };
38 Double_t eff8[10] = { 0 };
39
40 Double_t err1[10] = { 0 };
41 Double_t err2[10] = { 0 };
42 Double_t err3[10] = { 0 };
43 Double_t err4[10] = { 0 };
44 Double_t err5[10] = { 0 };
45 Double_t err6[10] = { 0 };
46 Double_t err7[10] = { 0 };
47 Double_t err8[10] = { 0 };
48
49 for ( Int_t i = 0; i < nevent; i++ )
50 {
51 pid_kal->GetEntry( i );
52
53 for ( Int_t j = 0; j < 10; j++ )
54 {
55 if ( kal_p > 0.05 + 0.1 * j && kal_p < 0.15 + 0.1 * j )
56 {
57 kal[j]++;
58 if ( prob_pion > 0 ) pid1[j]++;
59 if ( prob_pion > 0.001 ) pid2[j]++;
60 if ( prob_pion > prob_kaon ) pid3[j]++;
61 if ( prob_pion > prob_kaon && prob_pion > prob_proton ) pid4[j]++;
62 if ( prob_pion > 0 && prob_pion > prob_kaon ) pid5[j]++;
63 if ( prob_pion > 0 && prob_pion > prob_kaon && prob_pion > prob_proton ) pid6[j]++;
64 if ( prob_pion > 0.001 && prob_pion > prob_kaon ) pid7[j]++;
65 if ( prob_pion > 0.001 && prob_pion > prob_kaon && prob_pion > prob_proton ) pid8[j]++;
66 }
67 }
68 }
69
70 for ( Int_t i = 0; i < 10; i++ )
71 {
72 eff1[i] = ( pid1[i] * .1 ) / ( kal[i] * .1 );
73 err1[i] = sqrt( eff1[i] * ( 1 - eff1[i] ) / kal[i] );
74
75 eff2[i] = ( pid2[i] * .1 ) / ( kal[i] * .1 );
76 err2[i] = sqrt( eff2[i] * ( 1 - eff2[i] ) / kal[i] );
77
78 eff3[i] = ( pid3[i] * .1 ) / ( kal[i] * .1 );
79 err3[i] = sqrt( eff3[i] * ( 1 - eff3[i] ) / kal[i] );
80
81 eff4[i] = ( pid4[i] * .1 ) / ( kal[i] * .1 );
82 err4[i] = sqrt( eff4[i] * ( 1 - eff4[i] ) / kal[i] );
83
84 eff5[i] = ( pid5[i] * .1 ) / ( kal[i] * .1 );
85 err5[i] = sqrt( eff5[i] * ( 1 - eff5[i] ) / kal[i] );
86
87 eff6[i] = ( pid6[i] * .1 ) / ( kal[i] * .1 );
88 err6[i] = sqrt( eff6[i] * ( 1 - eff6[i] ) / kal[i] );
89
90 eff7[i] = ( pid7[i] * .1 ) / ( kal[i] * .1 );
91 err7[i] = sqrt( eff7[i] * ( 1 - eff7[i] ) / kal[i] );
92
93 eff8[i] = ( pid8[i] * .1 ) / ( kal[i] * .1 );
94 err8[i] = sqrt( eff8[i] * ( 1 - eff8[i] ) / kal[i] );
95 }
96
97 TGraph* gr1 = new TGraphErrors( 10, x, eff1, ex, err1 );
98 TGraph* gr2 = new TGraphErrors( 10, x, eff2, ex, err2 );
99 TGraph* gr3 = new TGraphErrors( 10, x, eff3, ex, err3 );
100 TGraph* gr4 = new TGraphErrors( 10, x, eff4, ex, err4 );
101 TGraph* gr5 = new TGraphErrors( 10, x, eff5, ex, err5 );
102 TGraph* gr6 = new TGraphErrors( 10, x, eff6, ex, err6 );
103 TGraph* gr7 = new TGraphErrors( 10, x, eff7, ex, err7 );
104 TGraph* gr8 = new TGraphErrors( 10, x, eff8, ex, err8 );
105
106 TCanvas* c1 = new TCanvas( "c1", "pion_eff_pid", 100, 10, 600, 400 );
107 TMultiGraph* mg = new TMultiGraph();
108
109 c1->SetGrid();
110
111 mg->SetTitle( "pion_eff_pid" );
112
113
114 gr2->SetLineColor( 1 );
115
116 gr4->SetLineColor( 2 );
117
118
119
120 gr8->SetLineColor( 3 );
121
122
123 mg->Add( gr2 );
124
125 mg->Add( gr4 );
126
127
128
129 mg->Add( gr8 );
130
131 mg->Draw( "ALP" );
132 mg->GetYaxis()->SetRangeUser( 0.9, 1.0 );
133 mg->GetXaxis()->SetTitle( "Pt/GeV" );
134 mg->GetYaxis()->SetTitle( "Eff" );
135
136 TLegend*
legend =
new TLegend( 0.55, 0.15, 0.85, 0.35 );
137
138 legend->AddEntry( gr2,
"prob(\\pi)>0.001",
"l" );
139
140 legend->AddEntry( gr4,
"prob(\\pi)>prob(K)&&prob(\\pi)>prob(p)",
"l" );
141
142
143
144 legend->AddEntry( gr8,
"prob(\\pi)>0.001&&prob(\\pi)>prob(K)&&prob(\\pi)>prob(p)",
"l" );
145
147}
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")