Install macros
[u/mrichter/AliRoot.git] / TPC / TPCupgrade / macros / AnaEpsScan.C
1 /*
2
3 .L $ALICE_ROOT/TPC/Upgrade/macros/AnaEpsScan.C
4 AnaEpsScan();
5
6 */
7
8 void AnaEpsScan(TString dir=".",TString baseFile="0.0_1_2_130_10", Float_t nSigmas=3.)
9 {
10   gStyle->SetOptTitle(0);
11   gStyle->SetOptStat(0);
12   gStyle->SetPadGridX(0);
13   gStyle->SetPadGridY(0);
14   gStyle->SetPadTopMargin(0.05);
15   gStyle->SetPadRightMargin(0.025);
16   gStyle->SetPadTickX(1);
17   gStyle->SetPadTickY(1);
18   
19   TString files=gSystem->GetFromPipe( Form("ls %s/eps*/*%s*.root", dir.Data(), baseFile.Data() ) );
20   TObjArray *arr=files.Tokenize("\n");
21
22   TGraph *grFrac01=new TGraph;
23   TGraph *grFrac05=new TGraph;
24   TGraph *grFrac10=new TGraph;
25
26   grFrac01->SetNameTitle("grFrac01",";#varepsilon;fraction of tracks");
27   grFrac01->SetMarkerStyle(20);
28   grFrac01->SetMarkerSize(1);
29
30 //   grFrac05->SetNameTitle("grFrac05",";#varepsilon;fraction of tracks");
31   grFrac05->SetLineColor(kBlue);
32   grFrac05->SetMarkerColor(kBlue);
33   grFrac05->SetMarkerStyle(21);
34   grFrac05->SetMarkerSize(1);
35   
36   grFrac10->SetLineColor(kRed);
37   grFrac10->SetMarkerColor(kRed);
38   grFrac10->SetMarkerStyle(22);
39   grFrac10->SetMarkerSize(1);
40   
41   Int_t colors[7]={kBlack, kRed, kBlue, kGreen, kMagenta, kCyan, kYellow};
42   Int_t markers[7]={20,21,22,23,24,25,26};
43   
44   TObjArray arrHists;
45   for (Int_t ifile=0; ifile<arr->GetEntriesFast(); ++ifile) {
46     TString file=arr->At(ifile)->GetName();
47     TString epsilon=gSystem->GetFromPipe(Form("echo %s | sed 's|.*/eps\\([0-9][0-9]\\)/.*|\\1|'",file.Data()));
48
49     printf("%s: %s\n", file.Data(), epsilon.Data());
50     TH1F *h=new TH1F(Form("hResY%.0f_%s",10*nSigmas, epsilon.Data()), Form("#varepsilon %d;fraction of clusters more than %.1f#sigma from track;#tracks", nSigmas, epsilon.Atoi()),200,0,1);
51     h->SetLineColor(colors[ifile]);
52     h->SetMarkerColor(colors[ifile]);
53     h->SetMarkerStyle(colors[ifile]);
54
55     arrHists.Add(h);
56
57     TFile f(file);
58     gROOT->cd();
59     TTree *t=(TTree*)f.Get("Tracks");
60 //     Float_t clFracY30=0.;
61
62 //     t->SetBranchStatus("*",0);
63 //     t->SetBranchStatus("clFracY30",1);
64 //     t->SetBranchAddress("clFracY30",&clFracY30);
65
66     t->Draw(Form("clFracY%.0f>>hResY%.0f_%s",10*nSigmas,10*nSigmas,epsilon.Data()),"","goff");
67
68     printf("entries: %d %d %d\n", grFrac05->GetN(), h->GetEntries(), t->GetEntries());
69
70     Double_t frac01 = h->Integral(h->FindBin(.02),h->GetNbinsX())/h->GetEntries();
71     Double_t frac05 = h->Integral(h->FindBin(.05),h->GetNbinsX())/h->GetEntries();
72     Double_t frac10 = h->Integral(h->FindBin(.10),h->GetNbinsX())/h->GetEntries();
73
74     grFrac01->SetPoint(grFrac01->GetN(), epsilon.Atoi(), frac01);
75     grFrac05->SetPoint(grFrac05->GetN(), epsilon.Atoi(), frac05);
76     grFrac10->SetPoint(grFrac10->GetN(), epsilon.Atoi(), frac10);
77
78     delete t;
79     f.Close();
80   }
81
82   TCanvas *c1=new TCanvas("c1");
83   c1->cd();
84   gPad->SetLogy();
85
86   TLegend *leg = new TLegend(.7,.3,.9,.9);
87   leg->SetBorderSize(1);
88   leg->SetFillColor(10);
89   
90   for (Int_t ihist=0; ihist<arrHists.GetEntriesFast();++ihist) {
91     TH1F *h=(TH1F*)arrHists.At(ihist);
92     h->Draw((ihist==0)?"":"same");
93     leg->AddEntry(h,h->GetTitle(),"lp");
94   }
95   leg->Draw("same");
96
97   c1->SaveAs(Form("~/tmp/epsScan_clFrac_%.0fsigma.png",10*nSigmas));
98   c1->SaveAs(Form("~/tmp/epsScan_clFrac_%.0fsigma.eps",10*nSigmas));
99   
100   TCanvas *c2=new TCanvas("c2");
101   c2->cd();
102   
103   TLegend *leg2 = new TLegend(.1,.75,.6,.95);
104   leg2->SetBorderSize(1);
105   leg2->SetFillColor(10);
106
107   TH1F *hDummy = new TH1F("hDummy",";#varepsilon;fraction of tracks",100,0,42.5);
108   hDummy->SetMinimum(0);
109   hDummy->SetMaximum(.21);
110   hDummy->GetYaxis()->SetTitleOffset(1.2);
111   hDummy->Draw();
112   grFrac01->Draw("lp");
113   grFrac05->Draw("lp");
114   grFrac10->Draw("lp");
115
116   //leg2->AddEntry(grFrac01,Form("%.1f#sigma deviation >2%%",nSigmas),"lp");
117   //leg2->AddEntry(grFrac05,Form("%.1f#sigma deviation >5%%",nSigmas),"lp");
118   //leg2->AddEntry(grFrac10,Form("%.1f#sigma deviation >10%%",nSigmas),"lp");
119   leg2->AddEntry(grFrac01,"fraction of deviating clusters >2%","lp");
120   leg2->AddEntry(grFrac05,"fraction of deviating clusters >5%","lp");
121   leg2->AddEntry(grFrac10,"fraction of deviating clusters >10%","lp");
122   TLatex l;
123   l.DrawLatex(3,.14,Form("cluster deviation > %.1f#sigma",nSigmas));
124   leg2->Draw("same");
125   c2->SaveAs(Form("~/tmp/epsScan_trFrac_eps_%.0fsigma.png",10*nSigmas));
126   c2->SaveAs(Form("~/tmp/epsScan_trFrac_eps_%.0fsigma.eps",10*nSigmas));
127 }
128