]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/totEt/macros/emEt/hadCorr/PlotTrackMatchFractions.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / totEt / macros / emEt / hadCorr / PlotTrackMatchFractions.C
CommitLineData
37017262 1void SetStyles(TH1 *histo,int marker, int color,char *xtitle, char *ytitle);
2TH1* bayneseffdiv(TH1* numerator, TH1* denominator,Char_t* name) ;
3void PlotTrackMatchFractions(TString filename="rootFiles/LHC11a10a_bis/Et.ESD.simPbPb.EMCal.LHC11a10a_bis.Run139465.root", TString det = "EMCal"){
4 gStyle->SetOptTitle(0);
5 gStyle->SetOptStat(0);
6 gStyle->SetOptFit(0);
7 TString outname = "/tmp/TrackMatchFractionsGammas"+det+".png";
8 TString outname2 = "/tmp/TrackMatchFractionsHadrons"+det+".png";
9 //TString outnamebin = Form("%iTo%i",bin,binLast);
10
11 TFile *f = TFile::Open(filename, "READ");
12
13 TList *l = (TList*)f->Get("out1");
14 TH1F *fHistGammasCut = l->FindObject("fHistGammasTracksCut");
15 TH1F *fHistGammasAccepted = l->FindObject("fHistGammasTracksAccepted");
16 TH1F *fHistChargedTracksCut = l->FindObject("fHistChargedTracksCut");
17 TH1F *fHistChargedTracksAccepted = l->FindObject("fHistChargedTracksAccepted");
18 TH1F *fHistGammasTotal = fHistGammasCut->Clone("fHistGammasTotal");
19 fHistGammasTotal->Add(fHistGammasAccepted);
20 TH1F *fHistGammasFracCut = bayneseffdiv(fHistGammasCut,fHistGammasTotal,"fHistGammasFracCut");
21 TH1F *fHistGammasFracAcc = bayneseffdiv(fHistGammasAccepted,fHistGammasTotal,"fHistGammasFracCut");
22 SetStyles(fHistGammasFracCut,20,2,"E_{T}","Fraction");
23 SetStyles(fHistGammasFracAcc,25,4,"E_{T}","Fraction");
24 TH1F *fHistChargedTracksTotal = fHistChargedTracksCut->Clone("fHistChargedTracksTotal");
25 fHistChargedTracksTotal->Add(fHistChargedTracksAccepted);
26 TH1F *fHistChargedTracksFracCut = bayneseffdiv(fHistChargedTracksCut,fHistChargedTracksTotal,"fHistChargedTracksFracCut");
27 TH1F *fHistChargedTracksFracAcc = bayneseffdiv(fHistChargedTracksAccepted,fHistChargedTracksTotal,"fHistChargedTracksFracCut");
28 SetStyles(fHistChargedTracksFracCut,20,2,"E_{T}","Fraction");
29 SetStyles(fHistChargedTracksFracAcc,25,4,"E_{T}","Fraction");
30 TLegend *leg = new TLegend(0.357383,0.47043,0.458054,0.75);
31 leg->SetFillStyle(0);
32 leg->SetFillColor(0);
33 leg->SetBorderSize(0);
34 leg->SetTextSize(0.03);
35 leg->AddEntry(fHistGammasFracCut,"Fraction of #gamma cut");
36 leg->AddEntry(fHistGammasFracAcc,"Fraction of #gamma accepted");
37 leg->SetTextSize(0.061828);
38 TCanvas *c1 = new TCanvas("c1","c1",600,400);
39 c1->SetTopMargin(0.02);
40 c1->SetRightMargin(0.02);
41 c1->SetBorderSize(0);
42 c1->SetFillColor(0);
43 c1->SetFillColor(0);
44 c1->SetBorderMode(0);
45 c1->SetFrameFillColor(0);
46 c1->SetFrameBorderMode(0);
47 fHistGammasFracCut->SetMaximum(1.0);
48 fHistGammasFracCut->SetMinimum(0.0);
49 fHistGammasFracCut->Draw();
50 fHistGammasFracAcc->Draw("same");
51 leg->Draw();
52 c1->SaveAs(outname.Data());
53
54 TLegend *leg2 = new TLegend(0.357383,0.47043,0.458054,0.75);
55 leg2->SetFillStyle(0);
56 leg2->SetFillColor(0);
57 leg2->SetBorderSize(0);
58 leg2->SetTextSize(0.03);
59 leg2->AddEntry(fHistGammasFracCut,"Fraction of hadrons cut");
60 leg2->AddEntry(fHistGammasFracAcc,"Fraction of hadrons accepted");
61 leg2->SetTextSize(0.061828);
62 TCanvas *c2 = new TCanvas("c2","c2",600,400);
63 c2->SetTopMargin(0.02);
64 c2->SetRightMargin(0.02);
65 c2->SetBorderSize(0);
66 c2->SetFillColor(0);
67 c2->SetFillColor(0);
68 c2->SetBorderMode(0);
69 c2->SetFrameFillColor(0);
70 c2->SetFrameBorderMode(0);
71 fHistChargedTracksFracCut->SetMaximum(1.0);
72 fHistChargedTracksFracCut->SetMinimum(0.0);
73 fHistChargedTracksFracCut->Draw();
74 fHistChargedTracksFracAcc->Draw("same");
75 leg2->Draw();
76
77 c2->SaveAs(outname2.Data());
78
79}
80void SetStyles(TH1 *histo,int marker, int color,char *xtitle, char *ytitle){
81 histo->SetMarkerStyle(marker);
82 histo->SetMarkerColor(color);
83 histo->SetLineColor(color);
84 histo->GetXaxis()->SetTitle(xtitle);
85 histo->GetYaxis()->SetTitle(ytitle);
86}
87
88
89TH1* bayneseffdiv(TH1* numerator, TH1* denominator,Char_t* name)
90{
91 if(!numerator){
92 cerr<<"Error: numerator does not exist!"<<endl;
93 return NULL;
94 }
95 if(!denominator){
96 cerr<<"Error: denominator does not exist!"<<endl;
97 return NULL;
98 }
99 TH1* result = (TH1*)numerator->Clone(name);
100 Int_t nbins = numerator->GetNbinsX();
101 for (Int_t ibin=0; ibin<= nbins+1; ++ibin) {
102 Double_t numeratorVal = numerator->GetBinContent(ibin);
103 Double_t denominatorVal = denominator->GetBinContent(ibin);
104 // Check if the errors are right or the thing is scaled
105 Double_t numeratorValErr = numerator->GetBinError(ibin);
106 if (!(numeratorValErr==0. || numeratorVal ==0.) ) {
107 Double_t rescale = numeratorValErr*numeratorValErr/numeratorVal;
108 numeratorVal /= rescale;
109 }
110 Double_t denominatorValErr = denominator->GetBinError(ibin);
111 if (!(denominatorValErr==0. || denominatorVal==0. )) {
112 Double_t rescale = denominatorValErr*denominatorValErr/denominatorVal;
113 denominatorVal /= rescale;
114 }
115 Double_t quotient = 0.;
116 if (denominatorVal!=0.) {
117 quotient = numeratorVal/denominatorVal;
118 }
119 Double_t quotientErr=0;
120 quotientErr = TMath::Sqrt(
121 (numeratorVal+1.0)/(denominatorVal+2.0)*
122 ((numeratorVal+2.0)/(denominatorVal+3.0)-(numeratorVal+1.0)/(denominatorVal+2.0)));
123 result->SetBinContent(ibin,quotient);
124 result->SetBinError(ibin,quotientErr);
125 //cout<<"Setting bin "<<ibin<<" to "<<quotient<<" "<<numeratorVal<<"/"<<denominatorVal<<endl;
126 }
127 return result;
128}