2 TFile*
f =
new TFile( filename );
3 TTree* pid_kal = (TTree*)
f->Get(
"pid_kal" );
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 );
15 Int_t nevent = pid_kal->GetEntries();
17 Double_t x[10] = { .1, .2, .3, .4, .5, .6, .7, .8, .9, 1.0 };
18 Double_t ex[10] = { 0 };
20 Int_t kal[10] = { 0 };
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 };
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 };
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 };
49 for ( Int_t i = 0; i < nevent; i++ )
51 pid_kal->GetEntry( i );
53 for ( Int_t j = 0; j < 10; j++ )
55 if ( kal_p > 0.05 + 0.1 * j && kal_p < 0.15 + 0.1 * 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]++;
70 for ( Int_t i = 0; i < 10; i++ )
72 eff1[i] = ( pid1[i] * .1 ) / ( kal[i] * .1 );
73 err1[i] = sqrt( eff1[i] * ( 1 - eff1[i] ) / kal[i] );
75 eff2[i] = ( pid2[i] * .1 ) / ( kal[i] * .1 );
76 err2[i] = sqrt( eff2[i] * ( 1 - eff2[i] ) / kal[i] );
78 eff3[i] = ( pid3[i] * .1 ) / ( kal[i] * .1 );
79 err3[i] = sqrt( eff3[i] * ( 1 - eff3[i] ) / kal[i] );
81 eff4[i] = ( pid4[i] * .1 ) / ( kal[i] * .1 );
82 err4[i] = sqrt( eff4[i] * ( 1 - eff4[i] ) / kal[i] );
84 eff5[i] = ( pid5[i] * .1 ) / ( kal[i] * .1 );
85 err5[i] = sqrt( eff5[i] * ( 1 - eff5[i] ) / kal[i] );
87 eff6[i] = ( pid6[i] * .1 ) / ( kal[i] * .1 );
88 err6[i] = sqrt( eff6[i] * ( 1 - eff6[i] ) / kal[i] );
90 eff7[i] = ( pid7[i] * .1 ) / ( kal[i] * .1 );
91 err7[i] = sqrt( eff7[i] * ( 1 - eff7[i] ) / kal[i] );
93 eff8[i] = ( pid8[i] * .1 ) / ( kal[i] * .1 );
94 err8[i] = sqrt( eff8[i] * ( 1 - eff8[i] ) / kal[i] );
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 );
106 TCanvas* c1 =
new TCanvas(
"c1",
"pion_eff_pid", 100, 10, 600, 400 );
107 TMultiGraph* mg =
new TMultiGraph();
111 mg->SetTitle(
"pion_eff_pid" );
114 gr2->SetLineColor( 1 );
116 gr4->SetLineColor( 2 );
120 gr8->SetLineColor( 3 );
132 mg->GetYaxis()->SetRangeUser( 0.9, 1.0 );
133 mg->GetXaxis()->SetTitle(
"Pt/GeV" );
134 mg->GetYaxis()->SetTitle(
"Eff" );
136 TLegend*
legend =
new TLegend( 0.55, 0.15, 0.85, 0.35 );
138 legend->AddEntry( gr2,
"prob(\\pi)>0.001",
"l" );
140 legend->AddEntry( gr4,
"prob(\\pi)>prob(K)&&prob(\\pi)>prob(p)",
"l" );
144 legend->AddEntry( gr8,
"prob(\\pi)>0.001&&prob(\\pi)>prob(K)&&prob(\\pi)>prob(p)",
"l" );