Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -138,12 +138,16 @@ class GloFwdAssessment

std::unique_ptr<TEfficiency> mChargeMatchEff = nullptr;
std::unique_ptr<TH2D> mPairingEtaPt = nullptr;
std::unique_ptr<TH2D> mTruePairingEtaPt = nullptr;

std::vector<std::unique_ptr<TH2D>> mPurityPtInnerVecTH2;
std::vector<std::unique_ptr<TH2D>> mPurityPtOuterVecTH2;
std::vector<std::unique_ptr<TH1D>> mPairingPtInnerVecTH1;
std::vector<std::unique_ptr<TH1D>> mPairingPtOuterVecTH1;
std::vector<std::unique_ptr<TH1D>> mTruePairingPtInnerVecTH1;
std::vector<std::unique_ptr<TH1D>> mTruePairingPtOuterVecTH1;
std::vector<std::unique_ptr<TH2D>> mPairingEtaPtVec;
std::vector<std::unique_ptr<TH2D>> mTruePairingEtaPtVec;

enum TH3HistosCodes {
kTH3GMTrackDeltaXDeltaYEta,
Expand All @@ -162,6 +166,7 @@ class GloFwdAssessment
kTH3GMTrackPtEtaMatchScore,
kTH3GMTruePtEtaChi2,
kTH3GMTruePtEtaMatchScore,
kTH3GMTruePtEtaMatchScore_MC,
kTH3GMCloseMatchPtEtaChi2,
kTH3GMCloseMatchPtEtaMatchScore,
kTH3GMPairablePtEtaZ,
Expand All @@ -187,7 +192,8 @@ class GloFwdAssessment
{kTH3GMTrackPtEtaChi2, "TH3GMTrackPtEtaChi2"},
{kTH3GMTrackPtEtaMatchScore, "TH3GMTrackPtEtaMatchScore"},
{kTH3GMTruePtEtaChi2, "TH3GMTruePtEtaChi2"},
{kTH3GMTruePtEtaMatchScore, "TH3GMTruePtEtaMatchScore"}};
{kTH3GMTruePtEtaMatchScore, "TH3GMTruePtEtaMatchScore"},
{kTH3GMTruePtEtaMatchScore_MC, "TH3GMTruePtEtaMatchScore_MC"}};

std::map<int, const char*> TH3Titles{
{kTH3GMTrackDeltaXDeltaYEta, "TH3GMTrackDeltaXDeltaYEta"},
Expand All @@ -208,7 +214,8 @@ class GloFwdAssessment
{kTH3GMTrackPtEtaChi2, "TH3GMTrackPtEtaChi2"},
{kTH3GMTrackPtEtaMatchScore, "TH3GMTrackPtEtaMatchScore"},
{kTH3GMTruePtEtaChi2, "TH3GMTruePtEtaChi2"},
{kTH3GMTruePtEtaMatchScore, "TH3GMTruePtEtaMatchScore"}};
{kTH3GMTruePtEtaMatchScore, "TH3GMTruePtEtaMatchScore"},
{kTH3GMTruePtEtaMatchScore_MC, "TH3GMTruePtEtaMatchScore_MC"}};

std::map<int, std::array<double, 9>> TH3Binning{
{kTH3GMTrackDeltaXDeltaYEta, {16, 2.2, 3.8, 1000, -1000, 1000, 1000, -1000, 1000}},
Expand All @@ -229,7 +236,8 @@ class GloFwdAssessment
{kTH3GMTrackPtEtaChi2, {40, 0, 20, 16, 2.2, 3.8, 1000, 0, 100}},
{kTH3GMTrackPtEtaMatchScore, {40, 0, 20, 16, 2.2, 3.8, 2000, 0, 20.0}},
{kTH3GMTruePtEtaChi2, {40, 0, 20, 16, 2.2, 3.8, 1000, 0, 100}},
{kTH3GMTruePtEtaMatchScore, {40, 0, 20, 16, 2.2, 3.8, 2000, 0, 20.0}}};
{kTH3GMTruePtEtaMatchScore, {40, 0, 20, 16, 2.2, 3.8, 2000, 0, 20.0}},
{kTH3GMTruePtEtaMatchScore_MC, {40, 0, 20, 16, 2.2, 3.8, 2000, 0, 20.0}}};

std::map<int, const char*> TH3XaxisTitles{
{kTH3GMTrackDeltaXDeltaYEta, R"(\\eta_{MC})"},
Expand All @@ -244,13 +252,14 @@ class GloFwdAssessment
{kTH3GMTrackTanlPullPtEta, R"(p_{t}_{MC})"},
{kTH3GMTrackInvQPtPullPtEta, R"(p_{t}_{MC})"},
{kTH3GMTrackReducedChi2PtEta, R"(p_{t}_{MC})"},
{kTH3GMCloseMatchPtEtaChi2, R"(p_{t}_{Fit}_{MC})"},
{kTH3GMCloseMatchPtEtaMatchScore, R"(p_{t}_{Fit}_{MC})"},
{kTH3GMPairablePtEtaZ, R"(p_{t}_{Fit}_{MC})"},
{kTH3GMTrackPtEtaChi2, R"(p_{t}_{Fit}_{MC})"},
{kTH3GMTrackPtEtaMatchScore, R"(p_{t}_{Fit}_{MC})"},
{kTH3GMTruePtEtaChi2, R"(p_{t}_{Fit}_{MC})"},
{kTH3GMTruePtEtaMatchScore, R"(p_{t}_{Fit}_{MC})"}};
{kTH3GMCloseMatchPtEtaChi2, R"(p_{t}_{Fit})"},
{kTH3GMCloseMatchPtEtaMatchScore, R"(p_{t}_{Fit})"},
{kTH3GMPairablePtEtaZ, R"(p_{t}_{MC})"},
{kTH3GMTrackPtEtaChi2, R"(p_{t}_{Fit})"},
{kTH3GMTrackPtEtaMatchScore, R"(p_{t}_{Fit})"},
{kTH3GMTruePtEtaChi2, R"(p_{t}_{Fit})"},
{kTH3GMTruePtEtaMatchScore, R"(p_{t}_{Fit})"},
{kTH3GMTruePtEtaMatchScore_MC, R"(p_{t}_{MC})"}};

std::map<int, const char*> TH3YaxisTitles{
{kTH3GMTrackDeltaXDeltaYEta, R"(X_{residual \rightarrow vtx} (\mu m))"},
Expand All @@ -271,7 +280,8 @@ class GloFwdAssessment
{kTH3GMTrackPtEtaChi2, R"(\eta_{Fit})"},
{kTH3GMTrackPtEtaMatchScore, R"(\eta_{Fit})"},
{kTH3GMTruePtEtaChi2, R"(\eta_{Fit})"},
{kTH3GMTruePtEtaMatchScore, R"(\eta_{Fit})"}};
{kTH3GMTruePtEtaMatchScore, R"(\eta_{Fit})"},
{kTH3GMTruePtEtaMatchScore_MC, R"(\eta_{MC})"}};

std::map<int, const char*> TH3ZaxisTitles{
{kTH3GMTrackDeltaXDeltaYEta, R"(Y_{residual \rightarrow vtx} (\mu m))"},
Expand All @@ -292,7 +302,8 @@ class GloFwdAssessment
{kTH3GMTrackPtEtaChi2, R"(Match \chi^2)"},
{kTH3GMTrackPtEtaMatchScore, R"(Matching Score)"},
{kTH3GMTruePtEtaChi2, R"(Match \chi^2)"},
{kTH3GMTruePtEtaMatchScore, R"(Matching Score)"}};
{kTH3GMTruePtEtaMatchScore, R"(Matching Score)"},
{kTH3GMTruePtEtaMatchScore_MC, R"(Matching Score)"}};

enum TH3SlicedCodes {
kDeltaXVertexVsEta,
Expand Down Expand Up @@ -368,6 +379,9 @@ class GloFwdAssessment
kPairingEffPtOuter,
kPairingEffPtInner,
kPurityVsEfficiency,
kTruePairingEffPtOuter,
kTruePairingEffPtInner,
kPurityVsTrueEfficiency,
kNGMAssesmentCanvases
};

Expand All @@ -376,7 +390,10 @@ class GloFwdAssessment
{kPurityPtInner, "PurityPtInner"},
{kPairingEffPtOuter, "PairingEffPtOuter"},
{kPairingEffPtInner, "PairingEffPtInner"},
{kPurityVsEfficiency, "PurityVsEfficiency"}};
{kTruePairingEffPtOuter, "TruePairingEffPtOuter"},
{kTruePairingEffPtInner, "TruePairingEffPtInner"},
{kPurityVsEfficiency, "PurityVsEfficiency"},
{kPurityVsTrueEfficiency, "PurityVsTrueEfficiency"}};

std::array<TCanvas*, kNGMAssesmentCanvases> mAssessmentCanvas;

Expand Down
147 changes: 147 additions & 0 deletions Detectors/GlobalTracking/src/MatchGlobalFwdAssessment.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ void GloFwdAssessment::reset()
mChargeMatchEff->SetPassedHistogram(*hC, "");

mPairingEtaPt->Reset();
mTruePairingEtaPt->Reset();
for (auto& h : mTH3Histos) {
h->Reset();
}
Expand Down Expand Up @@ -389,6 +390,7 @@ void GloFwdAssessment::processRecoAndTrueTracks()
mTH3Histos[kTH3GMTrackReducedChi2PtEta]->Fill(ptGen, etaGen, Chi2_Rec / (2 * nMFTClusters - 5));
mTH3Histos[kTH3GMTruePtEtaChi2]->Fill(pt_Rec, eta_Rec, matchChi2);
mTH3Histos[kTH3GMTruePtEtaMatchScore]->Fill(pt_Rec, eta_Rec, matchMatchScore);
mTH3Histos[kTH3GMTruePtEtaMatchScore_MC]->Fill(ptGen, etaGen, matchMatchScore);
}
trkId++;
}
Expand Down Expand Up @@ -458,6 +460,7 @@ void GloFwdAssessment::getHistos(TObjArray& objar)

objar.Add(mChargeMatchEff.get());
objar.Add(mPairingEtaPt.get());
objar.Add(mTruePairingEtaPt.get());

if (mFinalizeAnalysis) {
for (int slicedCanvas = 0; slicedCanvas < kNSlicedTH3; slicedCanvas++) {
Expand Down Expand Up @@ -576,15 +579,22 @@ void GloFwdAssessment::finalizeRecoAndPairables()

auto& Reco = mTH3Histos[kTH3GMTrackPtEtaMatchScore];
auto& hTrue = mTH3Histos[kTH3GMTruePtEtaMatchScore];
auto& hTrue_MC = mTH3Histos[kTH3GMTruePtEtaMatchScore_MC];
auto& hPairable = mTH3Histos[kTH3GMPairablePtEtaZ];

auto RecoEtaPt = (TH2D*)Reco->Project3D("xy COLZ");
auto TrueEtaPt_MC = (TH2D*)hTrue_MC->Project3D("xy COLZ");
auto PairableEtaPt = (TH2D*)hPairable->Project3D("xy COLZ");

mPairingEtaPt = (std::unique_ptr<TH2D>)static_cast<TH2D*>(RecoEtaPt->Clone());
mPairingEtaPt->Divide(PairableEtaPt);
mPairingEtaPt->SetNameTitle("GMTrackPairingEffEtaPt", "PairingEffEtaPt");
mPairingEtaPt->SetOption("COLZ");

mTruePairingEtaPt = (std::unique_ptr<TH2D>)static_cast<TH2D*>(TrueEtaPt_MC->Clone());
mTruePairingEtaPt->Divide(PairableEtaPt);
mTruePairingEtaPt->SetNameTitle("GMTrackTruePairingEffEtaPt", "TruePairingEffEtaPt");
mTruePairingEtaPt->SetOption("COLZ");
}
}

Expand All @@ -599,6 +609,7 @@ void GloFwdAssessment::finalizePurityAndEff()

auto& Reco = mTH3Histos[kTH3GMTrackPtEtaMatchScore];
auto& hTrue = mTH3Histos[kTH3GMTruePtEtaMatchScore];
auto& hTrue_MC = mTH3Histos[kTH3GMTruePtEtaMatchScore_MC];
auto& hPairable = mTH3Histos[kTH3GMPairablePtEtaZ];

// Inner pseudorapidity
Expand All @@ -609,6 +620,8 @@ void GloFwdAssessment::finalizePurityAndEff()
auto PairablePtProjOuter = (TH1*)hPairable->ProjectionX("PairableOuter", minBin, midBin);

auto RecoEtaPt = (TH2D*)Reco->Project3D("xy COLZ");
auto TrueEtaPt = (TH2D*)hTrue->Project3D("xy COLZ");
auto TrueEtaPt_MC = (TH2D*)hTrue_MC->Project3D("xy COLZ");
auto PairableEtaPt = (TH2D*)hPairable->Project3D("xy COLZ");
auto PairablePt = (TH1D*)hPairable->Project3D("x");

Expand All @@ -618,11 +631,13 @@ void GloFwdAssessment::finalizePurityAndEff()

auto RecoPtProj = (TH1*)Reco->ProjectionX(Form("_RecoPtProj%.2f", scoreCut));
auto TruePtProj = (TH1*)hTrue->ProjectionX(Form("_TruePtProj%.2f", scoreCut));
auto TruePtProj_MC = (TH1*)hTrue_MC->ProjectionX(Form("_TruePtProj_MC%.2f", scoreCut));

// Inner pseudorapidity
auto maxScoreBin = Reco->GetZaxis()->FindBin(scoreCut);
auto RecoPtProjInner = (TH1*)Reco->ProjectionX(Form("_InnerRecoCut_%.2f", scoreCut), midBin, maxBin, 0, maxScoreBin);
auto TruePtProjInner = (TH1*)hTrue->ProjectionX(Form("_InnerTrueCut_%.2f", scoreCut), midBin, maxBin, 0, maxScoreBin);
auto TruePtProjInner_MC = (TH1*)hTrue_MC->ProjectionX(Form("_InnerTrueCut_MC_%.2f", scoreCut), midBin, maxBin, 0, maxScoreBin);

auto& hPurityInner = mPurityPtInnerVecTH2.emplace_back((std::unique_ptr<TH2D>)static_cast<TH2D*>(TruePtProjInner->Clone()));
hPurityInner->Divide(RecoPtProjInner); // Global Pairing Purity = N_true / N_reco
Expand All @@ -642,9 +657,19 @@ void GloFwdAssessment::finalizePurityAndEff()
hPairingEffInner->SetMinimum(0.0);
hPairingEffInner->SetMaximum(1.8);

auto& hTruePairingEffInner = mTruePairingPtInnerVecTH1.emplace_back((std::unique_ptr<TH1D>)static_cast<TH1D*>(TruePtProjInner_MC->Clone()));
hTruePairingEffInner->Divide(PairablePtProjInner);
hTruePairingEffInner->SetNameTitle(Form("GMTrackTruePairingEffInnerPtCut_%.2f", scoreCut), Form("%.2f cut", scoreCut));
hTruePairingEffInner->GetYaxis()->SetTitle("True Pairing Efficiency [ N_{True} / N_{pairable}]");
hTruePairingEffInner->SetOption("COLZ");
hTruePairingEffInner->SetMarkerStyle(kFullCircle);
hTruePairingEffInner->SetMinimum(0.0);
hTruePairingEffInner->SetMaximum(1.2);

// Outer pseudorapidity
auto RecoPtProjOuter = (TH1*)Reco->ProjectionX(Form("_OuterRecoCut_%.2f", scoreCut), minBin, midBin, 0, maxScoreBin);
auto TruePtProjOuter = (TH1*)hTrue->ProjectionX(Form("_OuterTrueCut_%.2f", scoreCut), minBin, midBin, 0, maxScoreBin);
auto TruePtProjOuter_MC = (TH1*)hTrue_MC->ProjectionX(Form("_OuterTrueCut_MC_%.2f", scoreCut), minBin, midBin, 0, maxScoreBin);

auto& hPurityOuter = mPurityPtOuterVecTH2.emplace_back((std::unique_ptr<TH2D>)static_cast<TH2D*>(TruePtProjOuter->Clone()));
hPurityOuter->Divide(RecoPtProjOuter); // Global Pairing Purity = N_true / N_reco
Expand All @@ -664,10 +689,24 @@ void GloFwdAssessment::finalizePurityAndEff()
hPairingEffOuter->SetMinimum(0.0);
hPairingEffOuter->SetMaximum(1.8);

auto& hTruePairingEffOuter = mTruePairingPtOuterVecTH1.emplace_back((std::unique_ptr<TH1D>)static_cast<TH1D*>(TruePtProjOuter_MC->Clone()));
hTruePairingEffOuter->Divide(PairablePtProjOuter);
hTruePairingEffOuter->SetNameTitle(Form("GMTrackTruePairingEffOuterPtCut_%.2f", scoreCut), Form("%.2f cut", scoreCut));
hTruePairingEffOuter->GetYaxis()->SetTitle("True Pairing Efficiency [ N_{True} / N_{pairable}]");
hTruePairingEffOuter->SetOption("COLZ");
hTruePairingEffOuter->SetMarkerStyle(kFullTriangleUp);
hTruePairingEffOuter->SetMinimum(0.0);
hTruePairingEffOuter->SetMaximum(1.2);

mPairingEtaPtVec.emplace_back((std::unique_ptr<TH2D>)static_cast<TH2D*>(RecoEtaPt->Clone()));
mPairingEtaPtVec.back()->Divide(PairableEtaPt); // Pairing Efficiency = N_reco / N_Pairable
mPairingEtaPtVec.back()->SetNameTitle(Form("GMTrackPairingEffEtaPtCut_%.2f", scoreCut), Form("%.2f", scoreCut));
mPairingEtaPtVec.back()->SetOption("COLZ");

mTruePairingEtaPtVec.emplace_back((std::unique_ptr<TH2D>)static_cast<TH2D*>(TrueEtaPt_MC->Clone()));
mTruePairingEtaPtVec.back()->Divide(PairableEtaPt);
mTruePairingEtaPtVec.back()->SetNameTitle(Form("GMTrackTruePairingEffEtaPtCut_%.2f", scoreCut), Form("%.2f", scoreCut));
mTruePairingEtaPtVec.back()->SetOption("COLZ");
}

auto nCanvas = kPurityPtOuter;
Expand All @@ -682,14 +721,20 @@ void GloFwdAssessment::finalizePurityAndEff()
std::vector<float> verylowPtInnerPurity;
std::vector<float> verylowPtOuterEff;
std::vector<float> verylowPtInnerEff;
std::vector<float> veryLowPtOuterTrueEff;
std::vector<float> veryLowPtInnerTrueEff;
std::vector<float> lowPtOuterPurity;
std::vector<float> lowPtInnerPurity;
std::vector<float> lowPtOuterEff;
std::vector<float> lowPtInnerEff;
std::vector<float> lowPtOuterTrueEff;
std::vector<float> lowPtInnerTrueEff;
std::vector<float> highPtOuterPurity;
std::vector<float> highPtInnerPurity;
std::vector<float> highPtOuterEff;
std::vector<float> highPtInnerEff;
std::vector<float> highPtOuterTrueEff;
std::vector<float> highPtInnerTrueEff;

auto veryLowptBin = mPurityPtOuterVecTH2.front()->GetXaxis()->FindBin(0.25);
auto lowptBin = mPurityPtOuterVecTH2.front()->GetXaxis()->FindBin(0.75);
Expand Down Expand Up @@ -806,6 +851,64 @@ void GloFwdAssessment::finalizePurityAndEff()
mAssessmentCanvas[nCanvas]->SetTicky();
mAssessmentCanvas[nCanvas]->SetGridy();

nCanvas = kTruePairingEffPtOuter;
canvasName = GMAssesmentNames[nCanvas];
mAssessmentCanvas[nCanvas] = new TCanvas(canvasName, canvasName, 1080, 800);
mAssessmentCanvas[nCanvas]->UseCurrentStyle();
mAssessmentCanvas[nCanvas]->cd();
first = true;

for (auto& th2 : mTruePairingPtOuterVecTH1) {
if (first) {
option = "hist P PMC";
} else {
option = "hist SAME P PMC";
}
first = false;
veryLowPtOuterTrueEff.push_back(th2->GetBinContent(veryLowptBin));
lowPtOuterTrueEff.push_back(th2->GetBinContent(lowptBin));
highPtOuterTrueEff.push_back(th2->GetBinContent(highptBin));
th2->Draw(option.c_str());
}
t = new TPaveText(0.2223748, 0.9069355, 0.7776252, 0.965, "brNDC");
t->SetBorderSize(0);
t->SetFillColor(gStyle->GetTitleFillColor());
t->AddText("Global Muon Track True Pairing Efficiency (2.4 < #eta < 3.0)");
t->Draw();

mAssessmentCanvas[nCanvas]->BuildLegend(.8, .15, .96, .87);
mAssessmentCanvas[nCanvas]->SetTicky();
mAssessmentCanvas[nCanvas]->SetGridy();

nCanvas = kTruePairingEffPtInner;
canvasName = GMAssesmentNames[nCanvas];
mAssessmentCanvas[nCanvas] = new TCanvas(canvasName, canvasName, 1080, 800);
mAssessmentCanvas[nCanvas]->UseCurrentStyle();
mAssessmentCanvas[nCanvas]->cd();
first = true;

for (auto& th2 : mTruePairingPtInnerVecTH1) {
if (first) {
option = "hist P PMC";
} else {
option = "hist SAME P PMC";
}
first = false;
veryLowPtInnerTrueEff.push_back(th2->GetBinContent(veryLowptBin));
lowPtInnerTrueEff.push_back(th2->GetBinContent(lowptBin));
highPtInnerTrueEff.push_back(th2->GetBinContent(highptBin));
th2->Draw(option.c_str());
}
t = new TPaveText(0.2223748, 0.9069355, 0.7776252, 0.965, "brNDC");
t->SetBorderSize(0);
t->SetFillColor(gStyle->GetTitleFillColor());
t->AddText("Global Muon Track True Pairing Efficiency (3.0 < #eta < 3.6 )");
t->Draw();

mAssessmentCanvas[nCanvas]->BuildLegend(.8, .15, .96, .87);
mAssessmentCanvas[nCanvas]->SetTicky();
mAssessmentCanvas[nCanvas]->SetGridy();

nCanvas = kPurityVsEfficiency;
canvasName = GMAssesmentNames[nCanvas];
mAssessmentCanvas[nCanvas] = new TCanvas(canvasName, canvasName, 1080, 800);
Expand Down Expand Up @@ -849,6 +952,50 @@ void GloFwdAssessment::finalizePurityAndEff()
mAssessmentCanvas[nCanvas]->BuildLegend();
mAssessmentCanvas[nCanvas]->SetTicky();
mAssessmentCanvas[nCanvas]->SetGridy();

nCanvas = kPurityVsTrueEfficiency;
canvasName = GMAssesmentNames[nCanvas];
mAssessmentCanvas[nCanvas] = new TCanvas(canvasName, canvasName, 1080, 800);

TGraph* gr2 = new TGraph(highPtInnerTrueEff.size(), &highPtInnerTrueEff[0], &highPtInnerPurity[0]);
gr2->SetMinimum(0);
gr2->SetMaximum(1.01);

gr2->SetMarkerStyle(kFullCircle);
gr2->Draw("A P PMC");
gr2->GetXaxis()->SetTitle("Global Muon True Pairing Efficiency [ N_{True} / N_{pairable}]");
gr2->GetXaxis()->SetLimits(0.f, 1.01);
gr2->GetYaxis()->SetTitle("Pairing Purity [ N_{True} / N_{Rec}]");
gr2->SetTitle("p_{t} = 2.25 || (3.0 < #eta < 3.6 )");

gr2 = new TGraph(highPtOuterTrueEff.size(), &highPtOuterTrueEff[0], &highPtOuterPurity[0]);
gr2->Draw("P PMC SAME");
gr2->SetMarkerStyle(kFullTriangleUp);

gr2->SetTitle("p_{t} = 2.25 || (2.4 < #eta < 3.0)");

gr2 = new TGraph(lowPtInnerTrueEff.size(), &lowPtInnerTrueEff[0], &lowPtInnerPurity[0]);
gr2->Draw("P PMC SAME");
gr2->SetTitle("p_{t} = 0.75 || (3.0 < #eta < 3.6 )");

gr2 = new TGraph(lowPtOuterTrueEff.size(), &lowPtOuterTrueEff[0], &lowPtOuterPurity[0]);
gr2->Draw("P PMC SAME");
gr2->SetMarkerStyle(kFullTriangleUp);
gr2->SetTitle("p_{t} = 0.75 || (2.4 < #eta < 3.0)");

gr2 = new TGraph(veryLowPtInnerTrueEff.size(), &veryLowPtInnerTrueEff[0], &verylowPtInnerPurity[0]);
gr2->Draw("P PMC SAME");
gr2->SetTitle("p_{t} = 0.25 || (3.0 < #eta < 3.6)");

gr2 = new TGraph(veryLowPtOuterTrueEff.size(), &veryLowPtOuterTrueEff[0], &verylowPtOuterPurity[0]);
gr2->Draw("P PMC SAME");
gr2->SetMarkerStyle(kFullTriangleUp);

gr2->SetTitle("p_{t} = 0.25 || (2.4 < #eta < 3.0)");

mAssessmentCanvas[nCanvas]->BuildLegend();
mAssessmentCanvas[nCanvas]->SetTicky();
mAssessmentCanvas[nCanvas]->SetGridy();
}

//__________________________________________________________
Expand Down