ROOT logo
//////////////////////////////////////////////////////////////////////////////////
// CheckMatchingEfficiency.C (called by AODQAChecks.C)                          //
//                                                                              //
// written by John Groh                                                         //
//////////////////////////////////////////////////////////////////////////////////

void CheckMatchingEfficiency(AliSpectraAODTrackCuts * tcuts,
			     TH1F*& MatchEffPos,
			     TH1F*& MatchEffNeg,
			     Float_t FixedPtMatchEff,
			     Int_t runs[],
                             Int_t irun,
			     Int_t nRuns,
			     Bool_t useMC)
{

  // get matching efficiency histograms
  TH1F * hMatchEffPos = (TH1F*)tcuts->GetHistoNMatchedPos();
  hMatchEffPos->Sumw2();
  hMatchEffPos->Divide(hMatchEffPos,(TH1F*)tcuts->GetHistoNSelectedPos()->Clone(),1,1,"B"); // binomial error!  
  TH1F * hMatchEffNeg = (TH1F*)tcuts->GetHistoNMatchedNeg();
  hMatchEffNeg->Sumw2();
  hMatchEffNeg->Divide(hMatchEffNeg,(TH1F*)tcuts->GetHistoNSelectedNeg()->Clone(),1,1,"B"); // binomial error!  

  // get values for a fixed pt
  Int_t nMatchedPos = hMatchEffPos->GetBinContent(hMatchEffPos->FindBin(FixedPtMatchEff));
  Int_t nSelectedPos = tcuts->GetHistoNSelectedPos()->GetBinContent(tcuts->GetHistoNSelectedPos()->FindBin(FixedPtMatchEff));
  Int_t nMatchedNeg = tcuts->GetHistoNMatchedNeg()->GetBinContent(tcuts->GetHistoNMatchedNeg()->FindBin(FixedPtMatchEff));
  Int_t nSelectedNeg = tcuts->GetHistoNSelectedNeg()->GetBinContent(tcuts->GetHistoNSelectedNeg()->FindBin(FixedPtMatchEff));

  // fill matching eff vs. run number histograms
  MatchEffPos->SetBinContent(irun+1, hMatchEffPos->GetBinContent(hMatchEffPos->FindBin(FixedPtMatchEff)));
  MatchEffPos->SetBinError(irun+1, hMatchEffPos->GetBinError(hMatchEffPos->FindBin(FixedPtMatchEff)));
  MatchEffNeg->SetBinContent(irun+1, hMatchEffNeg->GetBinContent(hMatchEffNeg->FindBin(FixedPtMatchEff)));
  MatchEffNeg->SetBinError(irun+1, hMatchEffNeg->GetBinError(hMatchEffNeg->FindBin(FixedPtMatchEff)));

  // plot individual runs temporarily before saving to a pdf
  TCanvas * cMatchEffIndiv = new TCanvas("cMatchEffIndiv","cMatchEffIndiv");
  TH2F * hAxesMatchEffIndiv = new TH2F("hAxesMatchEffIndiv","",100,0,5,100,0,1);
  hAxesMatchEffIndiv->GetXaxis()->SetTitle("p_{T} (GeV/c)");
  hAxesMatchEffIndiv->GetYaxis()->SetTitle("TOF Matching Efficiency");
  hAxesMatchEffIndiv->SetStats(kFALSE);
  hAxesMatchEffIndiv->DrawCopy();
  // Pos
  hMatchEffPos->SetStats(kFALSE);
  hMatchEffPos->SetLineColor(kBlue);
  hMatchEffPos->SetMarkerColor(kBlue);
  hMatchEffPos->SetMarkerStyle(20);
  hMatchEffPos->SetMarkerSize(0.2);
  hMatchEffPos->DrawCopy("E1PSame");
  // Neg
  hMatchEffNeg->SetStats(kFALSE);
  hMatchEffNeg->SetLineColor(kRed);
  hMatchEffNeg->SetMarkerColor(kRed);
  hMatchEffNeg->SetMarkerStyle(21);
  hMatchEffNeg->SetMarkerSize(0.2);
  hMatchEffNeg->DrawCopy("E1PSame");
  TLegend * lMatchEffIndiv = new TLegend(.65,.15,.85,.35);
  lMatchEffIndiv->AddEntry(hMatchEffPos,"Pos","pe");
  lMatchEffIndiv->AddEntry(hMatchEffNeg,"Neg","pe");
  lMatchEffIndiv->AddEntry(hMatchEffPos,Form("Run %i",runs[irun]),"");
  if (useMC) lMatchEffIndiv->AddEntry(hMatchEffPos,"MC","");
  else lMatchEffIndiv->AddEntry(hMatchEffPos,"DATA","");
  lMatchEffIndiv->SetFillColor(0);
  lMatchEffIndiv->DrawClone();

  // save to a pdf and close the temporary canvas
  if (useMC)
    {
      if (irun == 0) cMatchEffIndiv->SaveAs("Plots/MC/AODMatchingEfficiencies.pdf(","pdf");
      else if (irun < nRuns-1) cMatchEffIndiv->SaveAs("Plots/MC/AODMatchingEfficiencies.pdf","pdf");
      else if (irun == nRuns-1) cMatchEffIndiv->SaveAs("Plots/MC/AODMatchingEfficiencies.pdf)","pdf");
      cMatchEffIndiv->Close();
    }
  else
    {
      if (irun == 0) cMatchEffIndiv->SaveAs("Plots/DATA/AODMatchingEfficiencies.pdf(","pdf");
      else if (irun < nRuns-1) cMatchEffIndiv->SaveAs("Plots/DATA/AODMatchingEfficiencies.pdf","pdf");
      else if (irun == nRuns-1) cMatchEffIndiv->SaveAs("Plots/DATA/AODMatchingEfficiencies.pdf)","pdf");
      cMatchEffIndiv->Close();
    }
}





 CheckMatchingEfficiency.C:1
 CheckMatchingEfficiency.C:2
 CheckMatchingEfficiency.C:3
 CheckMatchingEfficiency.C:4
 CheckMatchingEfficiency.C:5
 CheckMatchingEfficiency.C:6
 CheckMatchingEfficiency.C:7
 CheckMatchingEfficiency.C:8
 CheckMatchingEfficiency.C:9
 CheckMatchingEfficiency.C:10
 CheckMatchingEfficiency.C:11
 CheckMatchingEfficiency.C:12
 CheckMatchingEfficiency.C:13
 CheckMatchingEfficiency.C:14
 CheckMatchingEfficiency.C:15
 CheckMatchingEfficiency.C:16
 CheckMatchingEfficiency.C:17
 CheckMatchingEfficiency.C:18
 CheckMatchingEfficiency.C:19
 CheckMatchingEfficiency.C:20
 CheckMatchingEfficiency.C:21
 CheckMatchingEfficiency.C:22
 CheckMatchingEfficiency.C:23
 CheckMatchingEfficiency.C:24
 CheckMatchingEfficiency.C:25
 CheckMatchingEfficiency.C:26
 CheckMatchingEfficiency.C:27
 CheckMatchingEfficiency.C:28
 CheckMatchingEfficiency.C:29
 CheckMatchingEfficiency.C:30
 CheckMatchingEfficiency.C:31
 CheckMatchingEfficiency.C:32
 CheckMatchingEfficiency.C:33
 CheckMatchingEfficiency.C:34
 CheckMatchingEfficiency.C:35
 CheckMatchingEfficiency.C:36
 CheckMatchingEfficiency.C:37
 CheckMatchingEfficiency.C:38
 CheckMatchingEfficiency.C:39
 CheckMatchingEfficiency.C:40
 CheckMatchingEfficiency.C:41
 CheckMatchingEfficiency.C:42
 CheckMatchingEfficiency.C:43
 CheckMatchingEfficiency.C:44
 CheckMatchingEfficiency.C:45
 CheckMatchingEfficiency.C:46
 CheckMatchingEfficiency.C:47
 CheckMatchingEfficiency.C:48
 CheckMatchingEfficiency.C:49
 CheckMatchingEfficiency.C:50
 CheckMatchingEfficiency.C:51
 CheckMatchingEfficiency.C:52
 CheckMatchingEfficiency.C:53
 CheckMatchingEfficiency.C:54
 CheckMatchingEfficiency.C:55
 CheckMatchingEfficiency.C:56
 CheckMatchingEfficiency.C:57
 CheckMatchingEfficiency.C:58
 CheckMatchingEfficiency.C:59
 CheckMatchingEfficiency.C:60
 CheckMatchingEfficiency.C:61
 CheckMatchingEfficiency.C:62
 CheckMatchingEfficiency.C:63
 CheckMatchingEfficiency.C:64
 CheckMatchingEfficiency.C:65
 CheckMatchingEfficiency.C:66
 CheckMatchingEfficiency.C:67
 CheckMatchingEfficiency.C:68
 CheckMatchingEfficiency.C:69
 CheckMatchingEfficiency.C:70
 CheckMatchingEfficiency.C:71
 CheckMatchingEfficiency.C:72
 CheckMatchingEfficiency.C:73
 CheckMatchingEfficiency.C:74
 CheckMatchingEfficiency.C:75
 CheckMatchingEfficiency.C:76
 CheckMatchingEfficiency.C:77
 CheckMatchingEfficiency.C:78
 CheckMatchingEfficiency.C:79
 CheckMatchingEfficiency.C:80
 CheckMatchingEfficiency.C:81
 CheckMatchingEfficiency.C:82
 CheckMatchingEfficiency.C:83
 CheckMatchingEfficiency.C:84
 CheckMatchingEfficiency.C:85
 CheckMatchingEfficiency.C:86
 CheckMatchingEfficiency.C:87
 CheckMatchingEfficiency.C:88