ROOT logo
/*

.L $ALICE_ROOT/TPC/Upgrade/macros/AnaEpsScan.C
AnaEpsScan();

*/

void AnaEpsScan(TString dir=".",TString baseFile="0.0_1_2_130_10", Float_t nSigmas=3.)
{
  gStyle->SetOptTitle(0);
  gStyle->SetOptStat(0);
  gStyle->SetPadGridX(0);
  gStyle->SetPadGridY(0);
  gStyle->SetPadTopMargin(0.05);
  gStyle->SetPadRightMargin(0.025);
  gStyle->SetPadTickX(1);
  gStyle->SetPadTickY(1);
  
  TString files=gSystem->GetFromPipe( Form("ls %s/eps*/*%s*.root", dir.Data(), baseFile.Data() ) );
  TObjArray *arr=files.Tokenize("\n");

  TGraph *grFrac01=new TGraph;
  TGraph *grFrac05=new TGraph;
  TGraph *grFrac10=new TGraph;

  grFrac01->SetNameTitle("grFrac01",";#varepsilon;fraction of tracks");
  grFrac01->SetMarkerStyle(20);
  grFrac01->SetMarkerSize(1);

//   grFrac05->SetNameTitle("grFrac05",";#varepsilon;fraction of tracks");
  grFrac05->SetLineColor(kBlue);
  grFrac05->SetMarkerColor(kBlue);
  grFrac05->SetMarkerStyle(21);
  grFrac05->SetMarkerSize(1);
  
  grFrac10->SetLineColor(kRed);
  grFrac10->SetMarkerColor(kRed);
  grFrac10->SetMarkerStyle(22);
  grFrac10->SetMarkerSize(1);
  
  Int_t colors[7]={kBlack, kRed, kBlue, kGreen, kMagenta, kCyan, kYellow};
  Int_t markers[7]={20,21,22,23,24,25,26};
  
  TObjArray arrHists;
  for (Int_t ifile=0; ifile<arr->GetEntriesFast(); ++ifile) {
    TString file=arr->At(ifile)->GetName();
    TString epsilon=gSystem->GetFromPipe(Form("echo %s | sed 's|.*/eps\\([0-9][0-9]\\)/.*|\\1|'",file.Data()));

    printf("%s: %s\n", file.Data(), epsilon.Data());
    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);
    h->SetLineColor(colors[ifile]);
    h->SetMarkerColor(colors[ifile]);
    h->SetMarkerStyle(colors[ifile]);

    arrHists.Add(h);

    TFile f(file);
    gROOT->cd();
    TTree *t=(TTree*)f.Get("Tracks");
//     Float_t clFracY30=0.;

//     t->SetBranchStatus("*",0);
//     t->SetBranchStatus("clFracY30",1);
//     t->SetBranchAddress("clFracY30",&clFracY30);

    t->Draw(Form("clFracY%.0f>>hResY%.0f_%s",10*nSigmas,10*nSigmas,epsilon.Data()),"","goff");

    printf("entries: %d %d %d\n", grFrac05->GetN(), h->GetEntries(), t->GetEntries());

    Double_t frac01 = h->Integral(h->FindBin(.02),h->GetNbinsX())/h->GetEntries();
    Double_t frac05 = h->Integral(h->FindBin(.05),h->GetNbinsX())/h->GetEntries();
    Double_t frac10 = h->Integral(h->FindBin(.10),h->GetNbinsX())/h->GetEntries();

    grFrac01->SetPoint(grFrac01->GetN(), epsilon.Atoi(), frac01);
    grFrac05->SetPoint(grFrac05->GetN(), epsilon.Atoi(), frac05);
    grFrac10->SetPoint(grFrac10->GetN(), epsilon.Atoi(), frac10);

    delete t;
    f.Close();
  }

  TCanvas *c1=new TCanvas("c1");
  c1->cd();
  gPad->SetLogy();

  TLegend *leg = new TLegend(.7,.3,.9,.9);
  leg->SetBorderSize(1);
  leg->SetFillColor(10);
  
  for (Int_t ihist=0; ihist<arrHists.GetEntriesFast();++ihist) {
    TH1F *h=(TH1F*)arrHists.At(ihist);
    h->Draw((ihist==0)?"":"same");
    leg->AddEntry(h,h->GetTitle(),"lp");
  }
  leg->Draw("same");

  c1->SaveAs(Form("~/tmp/epsScan_clFrac_%.0fsigma.png",10*nSigmas));
  c1->SaveAs(Form("~/tmp/epsScan_clFrac_%.0fsigma.eps",10*nSigmas));
  
  TCanvas *c2=new TCanvas("c2");
  c2->cd();
  
  TLegend *leg2 = new TLegend(.1,.75,.6,.95);
  leg2->SetBorderSize(1);
  leg2->SetFillColor(10);

  TH1F *hDummy = new TH1F("hDummy",";#varepsilon;fraction of tracks",100,0,42.5);
  hDummy->SetMinimum(0);
  hDummy->SetMaximum(.21);
  hDummy->GetYaxis()->SetTitleOffset(1.2);
  hDummy->Draw();
  grFrac01->Draw("lp");
  grFrac05->Draw("lp");
  grFrac10->Draw("lp");

  //leg2->AddEntry(grFrac01,Form("%.1f#sigma deviation >2%%",nSigmas),"lp");
  //leg2->AddEntry(grFrac05,Form("%.1f#sigma deviation >5%%",nSigmas),"lp");
  //leg2->AddEntry(grFrac10,Form("%.1f#sigma deviation >10%%",nSigmas),"lp");
  leg2->AddEntry(grFrac01,"fraction of deviating clusters >2%","lp");
  leg2->AddEntry(grFrac05,"fraction of deviating clusters >5%","lp");
  leg2->AddEntry(grFrac10,"fraction of deviating clusters >10%","lp");
  TLatex l;
  l.DrawLatex(3,.14,Form("cluster deviation > %.1f#sigma",nSigmas));
  leg2->Draw("same");
  c2->SaveAs(Form("~/tmp/epsScan_trFrac_eps_%.0fsigma.png",10*nSigmas));
  c2->SaveAs(Form("~/tmp/epsScan_trFrac_eps_%.0fsigma.eps",10*nSigmas));
}

 AnaEpsScan.C:1
 AnaEpsScan.C:2
 AnaEpsScan.C:3
 AnaEpsScan.C:4
 AnaEpsScan.C:5
 AnaEpsScan.C:6
 AnaEpsScan.C:7
 AnaEpsScan.C:8
 AnaEpsScan.C:9
 AnaEpsScan.C:10
 AnaEpsScan.C:11
 AnaEpsScan.C:12
 AnaEpsScan.C:13
 AnaEpsScan.C:14
 AnaEpsScan.C:15
 AnaEpsScan.C:16
 AnaEpsScan.C:17
 AnaEpsScan.C:18
 AnaEpsScan.C:19
 AnaEpsScan.C:20
 AnaEpsScan.C:21
 AnaEpsScan.C:22
 AnaEpsScan.C:23
 AnaEpsScan.C:24
 AnaEpsScan.C:25
 AnaEpsScan.C:26
 AnaEpsScan.C:27
 AnaEpsScan.C:28
 AnaEpsScan.C:29
 AnaEpsScan.C:30
 AnaEpsScan.C:31
 AnaEpsScan.C:32
 AnaEpsScan.C:33
 AnaEpsScan.C:34
 AnaEpsScan.C:35
 AnaEpsScan.C:36
 AnaEpsScan.C:37
 AnaEpsScan.C:38
 AnaEpsScan.C:39
 AnaEpsScan.C:40
 AnaEpsScan.C:41
 AnaEpsScan.C:42
 AnaEpsScan.C:43
 AnaEpsScan.C:44
 AnaEpsScan.C:45
 AnaEpsScan.C:46
 AnaEpsScan.C:47
 AnaEpsScan.C:48
 AnaEpsScan.C:49
 AnaEpsScan.C:50
 AnaEpsScan.C:51
 AnaEpsScan.C:52
 AnaEpsScan.C:53
 AnaEpsScan.C:54
 AnaEpsScan.C:55
 AnaEpsScan.C:56
 AnaEpsScan.C:57
 AnaEpsScan.C:58
 AnaEpsScan.C:59
 AnaEpsScan.C:60
 AnaEpsScan.C:61
 AnaEpsScan.C:62
 AnaEpsScan.C:63
 AnaEpsScan.C:64
 AnaEpsScan.C:65
 AnaEpsScan.C:66
 AnaEpsScan.C:67
 AnaEpsScan.C:68
 AnaEpsScan.C:69
 AnaEpsScan.C:70
 AnaEpsScan.C:71
 AnaEpsScan.C:72
 AnaEpsScan.C:73
 AnaEpsScan.C:74
 AnaEpsScan.C:75
 AnaEpsScan.C:76
 AnaEpsScan.C:77
 AnaEpsScan.C:78
 AnaEpsScan.C:79
 AnaEpsScan.C:80
 AnaEpsScan.C:81
 AnaEpsScan.C:82
 AnaEpsScan.C:83
 AnaEpsScan.C:84
 AnaEpsScan.C:85
 AnaEpsScan.C:86
 AnaEpsScan.C:87
 AnaEpsScan.C:88
 AnaEpsScan.C:89
 AnaEpsScan.C:90
 AnaEpsScan.C:91
 AnaEpsScan.C:92
 AnaEpsScan.C:93
 AnaEpsScan.C:94
 AnaEpsScan.C:95
 AnaEpsScan.C:96
 AnaEpsScan.C:97
 AnaEpsScan.C:98
 AnaEpsScan.C:99
 AnaEpsScan.C:100
 AnaEpsScan.C:101
 AnaEpsScan.C:102
 AnaEpsScan.C:103
 AnaEpsScan.C:104
 AnaEpsScan.C:105
 AnaEpsScan.C:106
 AnaEpsScan.C:107
 AnaEpsScan.C:108
 AnaEpsScan.C:109
 AnaEpsScan.C:110
 AnaEpsScan.C:111
 AnaEpsScan.C:112
 AnaEpsScan.C:113
 AnaEpsScan.C:114
 AnaEpsScan.C:115
 AnaEpsScan.C:116
 AnaEpsScan.C:117
 AnaEpsScan.C:118
 AnaEpsScan.C:119
 AnaEpsScan.C:120
 AnaEpsScan.C:121
 AnaEpsScan.C:122
 AnaEpsScan.C:123
 AnaEpsScan.C:124
 AnaEpsScan.C:125
 AnaEpsScan.C:126
 AnaEpsScan.C:127
 AnaEpsScan.C:128
 AnaEpsScan.C:129