ROOT logo
// plot macro for double ratio of reconstruction efficiencies of different particles
// Author: Eva Sicking

void doubleRatio(Int_t trackType=0, Int_t particle=3)
{

  //particle names
  TString partName[4]={"Deu", "Tri", "He3", "He4"};

  // track type names
  TString trackName[4]={"Global", "TPC", "ITS_SA", "ITS"};

  //open file and lists
  //output of AliAnalysisTaskEfficiency
  TFile *f = new TFile("AnalysisResults.root");
  TList *list = (TList *)f->Get(Form("QAHists/QAHists_%s",trackName[trackType].Data()));

  //style
  gROOT->SetStyle("Plain");
  gStyle->SetOptStat(0);
  const Int_t NRGBs = 5;
  const Int_t NCont = 500;
  Double_t stops[NRGBs] = { 0.00, 0.34, 0.61, 0.84, 1.00 };
  Double_t red[NRGBs]   = { 0.00, 0.00, 0.87, 1.00, 0.51 };
  Double_t green[NRGBs] = { 0.00, 0.81, 1.00, 0.20, 0.00 };
  Double_t blue[NRGBs]  = { 0.51, 1.00, 0.12, 0.00, 0.00 };
  TColor::CreateGradientColorTable(NRGBs, stops, red, green, blue, NCont);
  gStyle->SetNumberContours(NCont);
    
  // Pt     
  TH1F* fHistRECpt  =  (TH1F*) list->
    FindObject(Form("fHistRECptChargeAnti%s",partName[particle].Data()));
  TH1F* fHistMCpt   =  (TH1F*) list->
    FindObject(Form("fHistMCptChargeAnti%s",partName[particle].Data()));
  TH1F* fHistFAKEpt =  (TH1F*) list->
    FindObject(Form("fHistFAKEptChargeAnti%s",partName[particle].Data()));
  TH1F* fHistMCNRpt =  (TH1F*) list->
    FindObject(Form("fHistMCNRptChargeAnti%s",partName[particle].Data()));
  
    
  c1 = new TCanvas(Form("pT_antinuclei_%s",trackName[trackType].Data()),
		   Form("pT_antinuclei_%s",trackName[trackType].Data()),
		   100, 100, 1000,600 );
  c1->Divide(2,2);
  c1->cd(1);
  c1->GetPad(1)->SetLogy();
    
  fHistMCpt->SetXTitle("p_{T} [GeV]");
  fHistMCpt->SetMinimum(1);
  fHistMCpt->Draw();
  fHistMCpt->SetTitle("");
  fHistRECpt->SetLineColor(2);
  fHistRECpt->Draw("same");
  fHistFAKEpt->SetLineColor(4);
  fHistFAKEpt->Draw("same");
  fHistMCNRpt->SetLineColor(3);
  fHistMCNRpt->Draw("same");

  c1->cd(4);
  fHistPtInEff = (TH1F*) fHistMCNRpt->Clone();
  fHistPtInEff->Divide(fHistMCpt);
  fHistPtInEff->SetXTitle("p_{T} [GeV]");
  fHistPtInEff->SetTitle("Inefficiency from non-rec. MC tracks");
  fHistPtInEff->Draw();
  fHistPtInEff->SetMinimum(0);
  fHistPtInEff->SetMaximum(1);

  c1->cd(3);
  fHistPtEff = (TH1F*) fHistRECpt->Clone();
  fHistPtEff->Add(fHistFAKEpt, -1.);
  fHistPtEff->Divide(fHistMCpt);
  //fHistPtEff->Add(fHistPtInEff);
  fHistPtEff->SetXTitle("p_{T} [GeV]");
  fHistPtEff->SetTitle("Efficiency");
  fHistPtEff->Draw();
  fHistPtEff->SetMinimum(0);
  fHistPtEff->SetMaximum(1);

  c1->cd(2);
  TLine *line = new TLine(0.07, 0.75, 0.2, 0.75);
  line->SetLineWidth(2);
  line->Draw();
  tex = new TLatex(0.25, 0.73, "MC");
  tex->SetLineWidth(2);
  tex->Draw();

  line = new TLine(0.07, 0.55, 0.2, 0.55);
  line->SetLineColor(2);
  line->SetLineWidth(2);
  line->Draw();
  tex = new TLatex(0.25, 0.53, "Reconstructed");
  tex->SetLineWidth(2);
  tex->Draw();

  line = new TLine(0.07, 0.35, 0.2, 0.35);
  line->SetLineColor(4);
  line->SetLineWidth(2);
  line->Draw();
  tex = new TLatex(0.25, 0.33, "Fake Tracks");
  tex->SetLineWidth(2);
  tex->Draw();


  line = new TLine(0.07, 0.15, 0.2, 0.15);
  line->SetLineColor(3);
  line->SetLineWidth(2);
  line->Draw();
  tex = new TLatex(0.25, 0.13, "MC not reconstructed");
  tex->SetLineWidth(2);
  tex->Draw();



  // Pt     
  TH1F* fHistRECpt2  =  (TH1F*) list->
    FindObject(Form("fHistRECptCharge%s",partName[particle].Data()));
  TH1F* fHistMCpt2   =  (TH1F*) list->
    FindObject(Form("fHistMCptCharge%s",partName[particle].Data()));
  TH1F* fHistFAKEpt2 =  (TH1F*) list->
    FindObject(Form("fHistFAKEptCharge%s",partName[particle].Data()));
  TH1F* fHistMCNRpt2 =  (TH1F*) list->
    FindObject(Form("fHistMCNRptCharge%s",partName[particle].Data()));
    
  c2 = new TCanvas(Form("pT_nuclei_%s",trackName[trackType].Data()),
		   Form("pT_nuclei_%s",trackName[trackType].Data()),
		   100, 100, 1000,600 );
  c2->Divide(2,2);
  c2->cd(1);
  c2->GetPad(1)->SetLogy();
    
  fHistMCpt2->SetXTitle("p_{T} [GeV]");
  fHistMCpt2->SetMinimum(1);
  fHistMCpt2->Draw();
  fHistMCpt2->SetTitle("");
  fHistRECpt2->SetLineColor(2);
  fHistRECpt2->Draw("same");
  fHistFAKEpt2->SetLineColor(4);
  fHistFAKEpt2->Draw("same");
  fHistMCNRpt2->SetLineColor(3);
  fHistMCNRpt2->Draw("same");

  c2->cd(4);
  fHistPtInEff2 = (TH1F*) fHistMCNRpt2->Clone();
  fHistPtInEff2->Divide(fHistMCpt2);
  fHistPtInEff2->SetXTitle("p_{T} [GeV]");
  fHistPtInEff2->SetTitle("Inefficiency from non-rec. MC tracks");
  fHistPtInEff2->Draw();
  fHistPtInEff2->SetMinimum(0);
  fHistPtInEff2->SetMaximum(1);

  c2->cd(3);
  fHistPtEff2 = (TH1F*) fHistRECpt2->Clone();
  fHistPtEff2->Add(fHistFAKEpt2, -1.);
  fHistPtEff2->Divide(fHistMCpt2);
  //    fHistPtEff->Add(fHistPtInEff);
  fHistPtEff2->SetXTitle("p_{T} [GeV]");
  fHistPtEff2->SetTitle("Efficiency");
  fHistPtEff2->Draw();
  fHistPtEff2->SetMinimum(0);
  fHistPtEff2->SetMaximum(1);

  c2->cd(2);
  TLine *line = new TLine(0.07, 0.75, 0.2, 0.75);
  line->SetLineWidth(2);
  line->Draw();
  tex = new TLatex(0.25, 0.73, "MC");
  tex->SetLineWidth(2);
  tex->Draw();

  line = new TLine(0.07, 0.55, 0.2, 0.55);
  line->SetLineColor(2);
  line->SetLineWidth(2);
  line->Draw();
  tex = new TLatex(0.25, 0.53, "Reconstructed");
  tex->SetLineWidth(2);
  tex->Draw();

  line = new TLine(0.07, 0.35, 0.2, 0.35);
  line->SetLineColor(4);
  line->SetLineWidth(2);
  line->Draw();
  tex = new TLatex(0.25, 0.33, "Fake Tracks");
  tex->SetLineWidth(2);
  tex->Draw();


  line = new TLine(0.07, 0.15, 0.2, 0.15);
  line->SetLineColor(3);
  line->SetLineWidth(2);
  line->Draw();
  tex = new TLatex(0.25, 0.13, "MC not reconstructed");
  tex->SetLineWidth(2);
  tex->Draw();




  new TCanvas;
  
  fHistPtEffPosNeg = (TH1F*) fHistPtEff->Clone();
  fHistPtEffPosNeg->Divide(fHistPtEff2);
  fHistPtEffPosNeg->SetLineWidth(2);
  fHistPtEffPosNeg->Draw();
  fHistPtEffPosNeg->SetMinimum(0);
  fHistPtEffPosNeg->SetMaximum(1.2);
  fHistPtEff->Draw("same");//anti-particle
  fHistPtEff->SetLineColor(kRed);
  fHistPtEff->SetLineWidth(2);
  fHistPtEff2->Draw("same");
  fHistPtEff2->SetLineColor(kBlack);
  fHistPtEff2->SetLineWidth(2);
  TF1 *func = new TF1("func", "1",-5,20);
  func->SetLineWidth(1);
  func->Draw("same");






  TLegend *legp= new TLegend(0.65,0.78,0.9,0.98);
  legp->SetFillColor(kWhite);
  legp->SetBorderSize(0);
  Int_t number =4;
  TF1 *fun[2];
  for(Int_t i=0;i<2;i++){
    fun[i]= new TF1(Form("fun%d",i),"gaus",-5.0,5.0);
    fun[i]->SetLineColor(2**i);
    fun[i]->SetLineStyle(1);
  }
  legp->AddEntry(fun[0],Form("%s",partName[particle].Data() ),"l");   
  legp->AddEntry(fun[1],Form("Anti-%s",partName[particle].Data() ),"l");   



  
  gROOT->SetStyle("Plain");
  gStyle->SetOptStat(0);
  gStyle->SetPalette(1);


  TCanvas *c = new TCanvas("c","PtAll" , 100, 100, 880, 680);
  c->Draw();
  c ->cd();
  TPad *pad_spectrum = new TPad( "pad_spectrum","pad_spectrum", 0.0,0.39,1.0,0.95);
  c ->cd();
  TPad *pad_ratio = new TPad( "pad_ratio","pad_ratio", 0.0,0.03,1.0,0.39);  
  
  
  c ->cd();
  pad_spectrum->SetTopMargin(0.);
  pad_spectrum->SetBottomMargin(0.);
  pad_spectrum->SetLeftMargin(0.12);
  pad_spectrum->SetRightMargin(0.055);
  pad_spectrum->Draw();
  pad_spectrum->cd(); 
  TH1F * histo = new TH1F("histo", "",150, -0.5,149.5 );
  histo->GetXaxis()->SetRangeUser(0,11);
  //  histo->GetXaxis()->SetRangeUser(25,35);
  histo->GetYaxis()->SetRangeUser(0.01,1.3);
  histo->SetXTitle("N_{charged}");
  histo->SetTitle("");
  histo->SetYTitle("efficiency  ");
  histo->Draw();
  histo->GetYaxis()->SetNdivisions(10);
  histo->GetYaxis()->SetLabelSize(0.07);
  histo->GetYaxis()->SetTitleSize(0.08);
  histo->GetYaxis()->SetTitleOffset(0.6);
 
  fHistPtEff->Draw("same");
  fHistPtEff2->Draw("same");

  legp->Draw();
  
  

  c ->cd();
  pad_ratio->SetTopMargin(0.);
  pad_ratio->SetBottomMargin(0.36);
  pad_ratio->SetLeftMargin(0.12);
  pad_ratio->SetRightMargin(0.055);
  pad_ratio->Draw();
  pad_ratio->cd(); 
  TH1F * histo2 = new TH1F("histo2", "",150, -0.5,149.5 );
  histo2->GetXaxis()->SetRangeUser(0,90);
  //  histo->GetXaxis()->SetRangeUser(25,35);
  histo2->SetXTitle("p_{T} (GeV/c)");
  histo2->SetTitle("");
  histo2->SetYTitle("Ratio Neg / Pos");
  histo2->Draw();
  histo2->GetXaxis()->SetRangeUser(0.0,11);
  histo2->SetLabelSize(0.1,"X");
  histo2->SetLabelSize(0.1,"Y");
  histo2->SetTitleSize(0.09,"X");
  histo2->SetTitleSize(0.09,"Y");
  histo2->SetTitleOffset(0.3,"Y");
  histo2->GetYaxis()->SetRangeUser(0.59,1.16);
  histo2->GetYaxis()->SetNdivisions(4);
  histo2->GetYaxis()->SetLabelSize(0.12);
  histo2->GetXaxis()->SetLabelSize(0.12);
  histo2->GetXaxis()->SetTitleSize(0.15);
  histo2->GetYaxis()->SetTitleSize(0.11);

  fHistPtEffPosNeg->Draw("same");
  func->Draw("same");
  func->SetLineStyle(2);

  c->Print(Form("%s.png",partName[particle].Data()));

}
 doubleRatio.C:1
 doubleRatio.C:2
 doubleRatio.C:3
 doubleRatio.C:4
 doubleRatio.C:5
 doubleRatio.C:6
 doubleRatio.C:7
 doubleRatio.C:8
 doubleRatio.C:9
 doubleRatio.C:10
 doubleRatio.C:11
 doubleRatio.C:12
 doubleRatio.C:13
 doubleRatio.C:14
 doubleRatio.C:15
 doubleRatio.C:16
 doubleRatio.C:17
 doubleRatio.C:18
 doubleRatio.C:19
 doubleRatio.C:20
 doubleRatio.C:21
 doubleRatio.C:22
 doubleRatio.C:23
 doubleRatio.C:24
 doubleRatio.C:25
 doubleRatio.C:26
 doubleRatio.C:27
 doubleRatio.C:28
 doubleRatio.C:29
 doubleRatio.C:30
 doubleRatio.C:31
 doubleRatio.C:32
 doubleRatio.C:33
 doubleRatio.C:34
 doubleRatio.C:35
 doubleRatio.C:36
 doubleRatio.C:37
 doubleRatio.C:38
 doubleRatio.C:39
 doubleRatio.C:40
 doubleRatio.C:41
 doubleRatio.C:42
 doubleRatio.C:43
 doubleRatio.C:44
 doubleRatio.C:45
 doubleRatio.C:46
 doubleRatio.C:47
 doubleRatio.C:48
 doubleRatio.C:49
 doubleRatio.C:50
 doubleRatio.C:51
 doubleRatio.C:52
 doubleRatio.C:53
 doubleRatio.C:54
 doubleRatio.C:55
 doubleRatio.C:56
 doubleRatio.C:57
 doubleRatio.C:58
 doubleRatio.C:59
 doubleRatio.C:60
 doubleRatio.C:61
 doubleRatio.C:62
 doubleRatio.C:63
 doubleRatio.C:64
 doubleRatio.C:65
 doubleRatio.C:66
 doubleRatio.C:67
 doubleRatio.C:68
 doubleRatio.C:69
 doubleRatio.C:70
 doubleRatio.C:71
 doubleRatio.C:72
 doubleRatio.C:73
 doubleRatio.C:74
 doubleRatio.C:75
 doubleRatio.C:76
 doubleRatio.C:77
 doubleRatio.C:78
 doubleRatio.C:79
 doubleRatio.C:80
 doubleRatio.C:81
 doubleRatio.C:82
 doubleRatio.C:83
 doubleRatio.C:84
 doubleRatio.C:85
 doubleRatio.C:86
 doubleRatio.C:87
 doubleRatio.C:88
 doubleRatio.C:89
 doubleRatio.C:90
 doubleRatio.C:91
 doubleRatio.C:92
 doubleRatio.C:93
 doubleRatio.C:94
 doubleRatio.C:95
 doubleRatio.C:96
 doubleRatio.C:97
 doubleRatio.C:98
 doubleRatio.C:99
 doubleRatio.C:100
 doubleRatio.C:101
 doubleRatio.C:102
 doubleRatio.C:103
 doubleRatio.C:104
 doubleRatio.C:105
 doubleRatio.C:106
 doubleRatio.C:107
 doubleRatio.C:108
 doubleRatio.C:109
 doubleRatio.C:110
 doubleRatio.C:111
 doubleRatio.C:112
 doubleRatio.C:113
 doubleRatio.C:114
 doubleRatio.C:115
 doubleRatio.C:116
 doubleRatio.C:117
 doubleRatio.C:118
 doubleRatio.C:119
 doubleRatio.C:120
 doubleRatio.C:121
 doubleRatio.C:122
 doubleRatio.C:123
 doubleRatio.C:124
 doubleRatio.C:125
 doubleRatio.C:126
 doubleRatio.C:127
 doubleRatio.C:128
 doubleRatio.C:129
 doubleRatio.C:130
 doubleRatio.C:131
 doubleRatio.C:132
 doubleRatio.C:133
 doubleRatio.C:134
 doubleRatio.C:135
 doubleRatio.C:136
 doubleRatio.C:137
 doubleRatio.C:138
 doubleRatio.C:139
 doubleRatio.C:140
 doubleRatio.C:141
 doubleRatio.C:142
 doubleRatio.C:143
 doubleRatio.C:144
 doubleRatio.C:145
 doubleRatio.C:146
 doubleRatio.C:147
 doubleRatio.C:148
 doubleRatio.C:149
 doubleRatio.C:150
 doubleRatio.C:151
 doubleRatio.C:152
 doubleRatio.C:153
 doubleRatio.C:154
 doubleRatio.C:155
 doubleRatio.C:156
 doubleRatio.C:157
 doubleRatio.C:158
 doubleRatio.C:159
 doubleRatio.C:160
 doubleRatio.C:161
 doubleRatio.C:162
 doubleRatio.C:163
 doubleRatio.C:164
 doubleRatio.C:165
 doubleRatio.C:166
 doubleRatio.C:167
 doubleRatio.C:168
 doubleRatio.C:169
 doubleRatio.C:170
 doubleRatio.C:171
 doubleRatio.C:172
 doubleRatio.C:173
 doubleRatio.C:174
 doubleRatio.C:175
 doubleRatio.C:176
 doubleRatio.C:177
 doubleRatio.C:178
 doubleRatio.C:179
 doubleRatio.C:180
 doubleRatio.C:181
 doubleRatio.C:182
 doubleRatio.C:183
 doubleRatio.C:184
 doubleRatio.C:185
 doubleRatio.C:186
 doubleRatio.C:187
 doubleRatio.C:188
 doubleRatio.C:189
 doubleRatio.C:190
 doubleRatio.C:191
 doubleRatio.C:192
 doubleRatio.C:193
 doubleRatio.C:194
 doubleRatio.C:195
 doubleRatio.C:196
 doubleRatio.C:197
 doubleRatio.C:198
 doubleRatio.C:199
 doubleRatio.C:200
 doubleRatio.C:201
 doubleRatio.C:202
 doubleRatio.C:203
 doubleRatio.C:204
 doubleRatio.C:205
 doubleRatio.C:206
 doubleRatio.C:207
 doubleRatio.C:208
 doubleRatio.C:209
 doubleRatio.C:210
 doubleRatio.C:211
 doubleRatio.C:212
 doubleRatio.C:213
 doubleRatio.C:214
 doubleRatio.C:215
 doubleRatio.C:216
 doubleRatio.C:217
 doubleRatio.C:218
 doubleRatio.C:219
 doubleRatio.C:220
 doubleRatio.C:221
 doubleRatio.C:222
 doubleRatio.C:223
 doubleRatio.C:224
 doubleRatio.C:225
 doubleRatio.C:226
 doubleRatio.C:227
 doubleRatio.C:228
 doubleRatio.C:229
 doubleRatio.C:230
 doubleRatio.C:231
 doubleRatio.C:232
 doubleRatio.C:233
 doubleRatio.C:234
 doubleRatio.C:235
 doubleRatio.C:236
 doubleRatio.C:237
 doubleRatio.C:238
 doubleRatio.C:239
 doubleRatio.C:240
 doubleRatio.C:241
 doubleRatio.C:242
 doubleRatio.C:243
 doubleRatio.C:244
 doubleRatio.C:245
 doubleRatio.C:246
 doubleRatio.C:247
 doubleRatio.C:248
 doubleRatio.C:249
 doubleRatio.C:250
 doubleRatio.C:251
 doubleRatio.C:252
 doubleRatio.C:253
 doubleRatio.C:254
 doubleRatio.C:255
 doubleRatio.C:256
 doubleRatio.C:257
 doubleRatio.C:258
 doubleRatio.C:259
 doubleRatio.C:260
 doubleRatio.C:261
 doubleRatio.C:262
 doubleRatio.C:263
 doubleRatio.C:264
 doubleRatio.C:265
 doubleRatio.C:266
 doubleRatio.C:267
 doubleRatio.C:268
 doubleRatio.C:269
 doubleRatio.C:270
 doubleRatio.C:271
 doubleRatio.C:272
 doubleRatio.C:273
 doubleRatio.C:274
 doubleRatio.C:275
 doubleRatio.C:276
 doubleRatio.C:277
 doubleRatio.C:278
 doubleRatio.C:279
 doubleRatio.C:280
 doubleRatio.C:281
 doubleRatio.C:282
 doubleRatio.C:283
 doubleRatio.C:284
 doubleRatio.C:285
 doubleRatio.C:286
 doubleRatio.C:287
 doubleRatio.C:288
 doubleRatio.C:289
 doubleRatio.C:290
 doubleRatio.C:291
 doubleRatio.C:292
 doubleRatio.C:293
 doubleRatio.C:294
 doubleRatio.C:295
 doubleRatio.C:296
 doubleRatio.C:297
 doubleRatio.C:298
 doubleRatio.C:299
 doubleRatio.C:300
 doubleRatio.C:301
 doubleRatio.C:302
 doubleRatio.C:303
 doubleRatio.C:304
 doubleRatio.C:305
 doubleRatio.C:306
 doubleRatio.C:307
 doubleRatio.C:308
 doubleRatio.C:309
 doubleRatio.C:310
 doubleRatio.C:311