File indexing completed on 2025-08-05 08:11:20
0001 std::vector<std::string> v_color{"#99cc99", "#6699cc", "#f2777a", "#7F167F"};
0002
0003 void drawAndSaveCanvas(std::pair<int, int> canvasSize,
0004 std::tuple<float, float, float, float> axisrange,
0005 std::vector<TScatter *> &vec_tscat,
0006 std::vector<TLine *> &tline,
0007 const std::vector<std::string> &v_leg,
0008 const std::string &xtitle,
0009 const std::string &ytitle,
0010 const std::string &plotname
0011
0012 )
0013 {
0014 TCanvas *c = new TCanvas("c", "c", canvasSize.first, canvasSize.second);
0015 gPad->SetRightMargin(0.05);
0016 gPad->SetTopMargin(0.05 * vec_tscat.size() + 0.03);
0017 c->cd();
0018 TH2F *h = new TH2F("h", "", 1, std::get<0>(axisrange), std::get<1>(axisrange), 1, std::get<2>(axisrange), std::get<3>(axisrange));
0019 h->GetXaxis()->SetTitle(xtitle.c_str());
0020 h->GetYaxis()->SetTitle(ytitle.c_str());
0021 h->Draw("axis");
0022 for (size_t i = 0; i < vec_tscat.size(); ++i)
0023 {
0024 vec_tscat[i]->SetMarkerSize(0.5);
0025
0026 vec_tscat[i]->Draw();
0027 }
0028
0029 gPad->Update();
0030 gPad->Modified();
0031
0032 for (auto &line : tline)
0033 {
0034 line->Draw("same");
0035 }
0036
0037
0038 auto it_evtvtx = std::find(v_leg.begin(), v_leg.end(), "Event vertex");
0039 if (it_evtvtx != v_leg.end())
0040 {
0041 int index = std::distance(v_leg.begin(), it_evtvtx);
0042 vec_tscat[index]->Draw();
0043 }
0044
0045 TLegend *leg = new TLegend(gPad->GetLeftMargin(),
0046 1 - gPad->GetTopMargin() + 0.01,
0047 gPad->GetLeftMargin() + 0.3,
0048 0.98
0049 );
0050 leg->SetBorderSize(0);
0051 leg->SetFillStyle(0);
0052 leg->SetTextSize(0.04);
0053 for (size_t i = 0; i < vec_tscat.size(); ++i)
0054 {
0055 leg->AddEntry(vec_tscat[i], v_leg[i].c_str(), "p");
0056 }
0057 leg->Draw();
0058
0059 c->SaveAs(Form("%s.pdf", plotname.c_str()));
0060 c->SaveAs(Form("%s.png", plotname.c_str()));
0061 }
0062
0063 void drawTGraph2D(std::pair<int, int> canvasSize,
0064 std::tuple<float, float, float, float, float, float> axisrange,
0065 std::vector<TGraph2D *> &vec_tg2D,
0066 std::vector<TPolyLine3D *> &tline,
0067 const std::vector<std::string> &v_leg,
0068 const std::string &xtitle,
0069 const std::string &ytitle,
0070 const std::string &ztitle,
0071 const std::string &plotname
0072 )
0073 {
0074 TCanvas *c = new TCanvas("c", "c", canvasSize.first, canvasSize.second);
0075 c->SetTheta(-30);
0076 c->SetPhi(-30);
0077 gPad->SetTopMargin(0.05 * vec_tg2D.size() + 0.03);
0078 c->cd();
0079
0080
0081 double xlow = std::get<0>(axisrange);
0082 double xhigh = std::get<1>(axisrange);
0083 double ylow = std::get<2>(axisrange);
0084 double yhigh = std::get<3>(axisrange);
0085 double zlow = std::get<4>(axisrange);
0086 double zhigh = std::get<5>(axisrange);
0087
0088
0089
0090 int nbinsX = 1, nbinsY = 1, nbinsZ = 1;
0091 TH3F *dummy = new TH3F("dummy", "", nbinsX, xlow, xhigh, nbinsY, ylow, yhigh, nbinsZ, zlow, zhigh);
0092
0093 dummy->SetFillStyle(0);
0094 dummy->SetStats(0);
0095
0096
0097 dummy->GetXaxis()->SetTitle(xtitle.c_str());
0098 dummy->GetYaxis()->SetTitle(ytitle.c_str());
0099 dummy->GetZaxis()->SetTitle(ztitle.c_str());
0100
0101
0102 dummy->Draw("HIST");
0103
0104
0105 for (size_t i = 0; i < vec_tg2D.size(); ++i)
0106 {
0107
0108 vec_tg2D[i]->SetMarkerSize(0.5);
0109
0110 vec_tg2D[i]->Draw("P SAME");
0111 }
0112
0113
0114 for (auto &line : tline)
0115 {
0116 line->Draw("SAME");
0117 }
0118
0119 auto it_evtvtx = std::find(v_leg.begin(), v_leg.end(), "Event vertex");
0120 if (it_evtvtx != v_leg.end())
0121 {
0122 int index = std::distance(v_leg.begin(), it_evtvtx);
0123 vec_tg2D[index]->Draw("P SAME");
0124 }
0125
0126 TLegend *leg = new TLegend(gPad->GetLeftMargin(),
0127 1 - gPad->GetTopMargin() + 0.01,
0128 gPad->GetLeftMargin() + 0.3,
0129 0.98
0130 );
0131 leg->SetBorderSize(0);
0132 leg->SetFillStyle(0);
0133 leg->SetTextSize(0.04);
0134 for (size_t i = 0; i < vec_tg2D.size(); ++i)
0135 {
0136 leg->AddEntry(vec_tg2D[i], v_leg[i].c_str(), "p");
0137 }
0138 leg->Draw();
0139
0140 c->SaveAs(Form("%s.pdf", plotname.c_str()));
0141 c->SaveAs(Form("%s.png", plotname.c_str()));
0142 }
0143
0144 void recotkl_matchdisplay()
0145 {
0146
0147 std::string plotdir = "./recotkl_matchEff/display";
0148 system(Form("mkdir -p %s", plotdir.c_str()));
0149
0150
0151
0152 TFile *f = new TFile("/sphenix/tg/tg01/hf/hjheng/ppg02/minitree/TrackletMinitree_Sim_SIMPLE_ana466_20250214/dRcut999p0_NominalVtxZ_RandomClusSet0_clusAdcCutSet0_clusPhiSizeCutSet0/minitree_00000.root", "READ");
0153 TTree *t = (TTree *)f->Get("minitree");
0154
0155
0156 int event;
0157 float PV_x, PV_y, PV_z;
0158 std::vector<float> *tklclus1x = 0, *tklclus1y = 0, *tklclus1z = 0, *tklclus2x = 0, *tklclus2y = 0, *tklclus2z = 0, *tklclus1phi = 0, *tklclus1eta = 0, *tklclus2phi = 0, *tklclus2eta = 0;
0159 std::vector<float> *PrimaryG4P_eta = 0, *PrimaryG4P_phi = 0, *GenHadron_eta = 0, *GenHadron_phi = 0;
0160 std::vector<int> *recotkl_clus1_matchedtrackID = 0, *recotkl_clus2_matchedtrackID = 0;
0161 std::vector<float> *recotkl_matchedPG4P_eta = 0, *recotkl_matchedPG4P_phi = 0;
0162 t->SetBranchAddress("event", &event);
0163 t->SetBranchAddress("PV_x", &PV_x);
0164 t->SetBranchAddress("PV_y", &PV_y);
0165 t->SetBranchAddress("PV_z", &PV_z);
0166 t->SetBranchAddress("tklclus1x", &tklclus1x);
0167 t->SetBranchAddress("tklclus1y", &tklclus1y);
0168 t->SetBranchAddress("tklclus1z", &tklclus1z);
0169 t->SetBranchAddress("tklclus2x", &tklclus2x);
0170 t->SetBranchAddress("tklclus2y", &tklclus2y);
0171 t->SetBranchAddress("tklclus2z", &tklclus2z);
0172 t->SetBranchAddress("tklclus1Phi", &tklclus1phi);
0173 t->SetBranchAddress("tklclus1Eta", &tklclus1eta);
0174 t->SetBranchAddress("tklclus2Phi", &tklclus2phi);
0175 t->SetBranchAddress("tklclus2Eta", &tklclus2eta);
0176 t->SetBranchAddress("PrimaryG4P_eta", &PrimaryG4P_eta);
0177 t->SetBranchAddress("PrimaryG4P_phi", &PrimaryG4P_phi);
0178 t->SetBranchAddress("GenHadron_eta", &GenHadron_eta);
0179 t->SetBranchAddress("GenHadron_phi", &GenHadron_phi);
0180 t->SetBranchAddress("recotkl_clus1_matchedtrackID", &recotkl_clus1_matchedtrackID);
0181 t->SetBranchAddress("recotkl_clus2_matchedtrackID", &recotkl_clus2_matchedtrackID);
0182 t->SetBranchAddress("recotkl_matchedPG4P_eta", &recotkl_matchedPG4P_eta);
0183 t->SetBranchAddress("recotkl_matchedPG4P_phi", &recotkl_matchedPG4P_phi);
0184
0185 for (int i = 0; i < 1; i++)
0186 {
0187 t->GetEntry(i);
0188
0189 int ntkl = tklclus1x->size();
0190 int ntkl_matchedtrack = 0, ntkl_unmatchedtrack = 0, ntkl_matchedtrack_positiveID = 0, ntkl_matchedtrack_negativeID = 0;
0191 std::vector<double> tkl_clusx_matched_posTrackID, tkl_clusy_matched_posTrackID, tkl_clusz_matched_posTrackID, tkl_clusrho_matched_posTrackID;
0192 std::vector<double> tkl_clusx_matched_negTrackID, tkl_clusy_matched_negTrackID, tkl_clusz_matched_negTrackID, tkl_clusrho_matched_negTrackID;
0193 std::vector<double> tkl_clusx_unmatched, tkl_clusy_unmatched, tkl_clusz_unmatched, tkl_clusrho_unmatched;
0194 std::vector<double> tkl_cluseta_matched_posTrackID, tkl_clusphi_matched_posTrackID, tkl_cluseta_matched_negTrackID, tkl_clusphi_matched_negTrackID, tkl_cluseta_unmatched, tkl_clusphi_unmatched;
0195 std::vector<double> pg4p_eta, pg4p_phi, gh_eta, gh_phi;
0196 std::vector<double> tklmatchedg4p_eta_posTrackID, tklmatchedg4p_phi_posTrackID, tklmatchedg4p_eta_negTrackID, tklmatchedg4p_phi_negTrackID;
0197
0198 std::vector<TLine *> tklline, tklline_zrho, tline_etaphi, tline_etaphi_matched_posTrackID, tline_etaphi_matched_negTrackID;
0199 std::vector<TPolyLine3D *> tkl3Dline;
0200
0201 for (size_t j = 0; j < tklclus1x->size(); j++)
0202 {
0203 std::cout << "(x1, y1, matched trackID)=(" << tklclus1x->at(j) << ", " << tklclus1y->at(j) << ", " << recotkl_clus1_matchedtrackID->at(j) << "); (x2, y2, matched trackID)=(" << tklclus2x->at(j) << ", " << tklclus2y->at(j) << ", " << recotkl_clus2_matchedtrackID->at(j) << ")" << std::endl;
0204
0205 float rho1 = ((tklclus1y->at(j) - PV_y) > 0) ? sqrt(pow(tklclus1x->at(j) - PV_x, 2) + pow(tklclus1y->at(j) - PV_y, 2)) : -sqrt(pow(tklclus1x->at(j) - PV_x, 2) + pow(tklclus1y->at(j) - PV_y, 2));
0206 float rho2 = ((tklclus2y->at(j) - PV_y) > 0) ? sqrt(pow(tklclus2x->at(j) - PV_x, 2) + pow(tklclus2y->at(j) - PV_y, 2)) : -sqrt(pow(tklclus2x->at(j) - PV_x, 2) + pow(tklclus2y->at(j) - PV_y, 2));
0207
0208 if (recotkl_clus1_matchedtrackID->at(j) == recotkl_clus2_matchedtrackID->at(j) && recotkl_clus1_matchedtrackID->at(j) > 0)
0209 {
0210 tkl_clusx_matched_posTrackID.push_back(tklclus1x->at(j));
0211 tkl_clusx_matched_posTrackID.push_back(tklclus2x->at(j));
0212 tkl_clusy_matched_posTrackID.push_back(tklclus1y->at(j));
0213 tkl_clusy_matched_posTrackID.push_back(tklclus2y->at(j));
0214 tkl_clusz_matched_posTrackID.push_back(tklclus1z->at(j));
0215 tkl_clusz_matched_posTrackID.push_back(tklclus2z->at(j));
0216 tkl_clusrho_matched_posTrackID.push_back(rho1);
0217 tkl_clusrho_matched_posTrackID.push_back(rho2);
0218 tkl_cluseta_matched_posTrackID.push_back(tklclus1eta->at(j));
0219 tkl_cluseta_matched_posTrackID.push_back(tklclus2eta->at(j));
0220 tkl_clusphi_matched_posTrackID.push_back(tklclus1phi->at(j));
0221 tkl_clusphi_matched_posTrackID.push_back(tklclus2phi->at(j));
0222
0223 tklmatchedg4p_eta_posTrackID.push_back(recotkl_matchedPG4P_eta->at(j));
0224 tklmatchedg4p_phi_posTrackID.push_back(recotkl_matchedPG4P_phi->at(j));
0225 }
0226 else if (recotkl_clus1_matchedtrackID->at(j) == recotkl_clus2_matchedtrackID->at(j) && recotkl_clus1_matchedtrackID->at(j) < 0)
0227 {
0228 tkl_clusx_matched_negTrackID.push_back(tklclus1x->at(j));
0229 tkl_clusx_matched_negTrackID.push_back(tklclus2x->at(j));
0230 tkl_clusy_matched_negTrackID.push_back(tklclus1y->at(j));
0231 tkl_clusy_matched_negTrackID.push_back(tklclus2y->at(j));
0232 tkl_clusz_matched_negTrackID.push_back(tklclus1z->at(j));
0233 tkl_clusz_matched_negTrackID.push_back(tklclus2z->at(j));
0234 tkl_clusrho_matched_negTrackID.push_back(rho1);
0235 tkl_clusrho_matched_negTrackID.push_back(rho2);
0236 tkl_cluseta_matched_negTrackID.push_back(tklclus1eta->at(j));
0237 tkl_cluseta_matched_negTrackID.push_back(tklclus2eta->at(j));
0238 tkl_clusphi_matched_negTrackID.push_back(tklclus1phi->at(j));
0239 tkl_clusphi_matched_negTrackID.push_back(tklclus2phi->at(j));
0240
0241 tklmatchedg4p_eta_negTrackID.push_back(recotkl_matchedPG4P_eta->at(j));
0242 tklmatchedg4p_phi_negTrackID.push_back(recotkl_matchedPG4P_phi->at(j));
0243 }
0244 else
0245 {
0246 tkl_clusx_unmatched.push_back(tklclus1x->at(j));
0247 tkl_clusx_unmatched.push_back(tklclus2x->at(j));
0248 tkl_clusy_unmatched.push_back(tklclus1y->at(j));
0249 tkl_clusy_unmatched.push_back(tklclus2y->at(j));
0250 tkl_clusz_unmatched.push_back(tklclus1z->at(j));
0251 tkl_clusz_unmatched.push_back(tklclus2z->at(j));
0252 tkl_clusrho_unmatched.push_back(rho1);
0253 tkl_clusrho_unmatched.push_back(rho2);
0254 tkl_cluseta_unmatched.push_back(tklclus1eta->at(j));
0255 tkl_cluseta_unmatched.push_back(tklclus2eta->at(j));
0256 tkl_clusphi_unmatched.push_back(tklclus1phi->at(j));
0257 tkl_clusphi_unmatched.push_back(tklclus2phi->at(j));
0258 }
0259
0260 TLine *tkl = new TLine(tklclus1x->at(j), tklclus1y->at(j), tklclus2x->at(j), tklclus2y->at(j));
0261 TLine *tkl_zrho = new TLine(tklclus1z->at(j), rho1, tklclus2z->at(j), rho2);
0262 TLine *tkl2vtx_xy = new TLine(tklclus1x->at(j), tklclus1y->at(j), PV_x, PV_y);
0263 TLine *tkl2vtx_zrho = new TLine(tklclus1z->at(j), rho1, PV_z, 0);
0264 TLine *tkl_etaphi = new TLine(tklclus1eta->at(j), tklclus1phi->at(j), tklclus2eta->at(j), tklclus2phi->at(j));
0265 TLine *assoc_tklclus1_g4p = new TLine(tklclus1eta->at(j), tklclus1phi->at(j), recotkl_matchedPG4P_eta->at(j), recotkl_matchedPG4P_phi->at(j));
0266 TLine *assoc_tklclus2_g4p = new TLine(tklclus2eta->at(j), tklclus2phi->at(j), recotkl_matchedPG4P_eta->at(j), recotkl_matchedPG4P_phi->at(j));
0267 if (recotkl_clus1_matchedtrackID->at(j) == recotkl_clus2_matchedtrackID->at(j))
0268 {
0269 ntkl_matchedtrack++;
0270 if (recotkl_clus1_matchedtrackID->at(j) > 0)
0271 {
0272 ntkl_matchedtrack_positiveID++;
0273 tkl->SetLineColor(TColor::GetColor("#99cc99"));
0274 tkl_zrho->SetLineColor(TColor::GetColor("#99cc99"));
0275 tkl_etaphi->SetLineColor(TColor::GetColor("#99cc99"));
0276 tline_etaphi_matched_posTrackID.push_back(tkl_etaphi);
0277 tkl2vtx_xy->SetLineColorAlpha(TColor::GetColor("#99cc99"), 0.4);
0278 tkl2vtx_xy->SetLineStyle(2);
0279 tkl2vtx_zrho->SetLineColorAlpha(TColor::GetColor("#99cc99"), 0.4);
0280 tkl2vtx_zrho->SetLineStyle(2);
0281 assoc_tklclus1_g4p->SetLineColorAlpha(TColor::GetColor("#5E8B7E"), 0.5);
0282 assoc_tklclus2_g4p->SetLineColorAlpha(TColor::GetColor("#5E8B7E"), 0.5);
0283 assoc_tklclus1_g4p->SetLineStyle(2);
0284 assoc_tklclus2_g4p->SetLineStyle(2);
0285 tline_etaphi_matched_posTrackID.push_back(assoc_tklclus1_g4p);
0286 tline_etaphi_matched_posTrackID.push_back(assoc_tklclus2_g4p);
0287 }
0288 else
0289 {
0290 ntkl_matchedtrack_negativeID++;
0291 tkl->SetLineColor(TColor::GetColor("#6699cc"));
0292 tkl_zrho->SetLineColor(TColor::GetColor("#6699cc"));
0293 tkl_etaphi->SetLineColor(TColor::GetColor("#6699cc"));
0294 tline_etaphi_matched_negTrackID.push_back(tkl_etaphi);
0295 tkl2vtx_xy->SetLineColorAlpha(TColor::GetColor("#6699cc"), 0.4);
0296 tkl2vtx_xy->SetLineStyle(2);
0297 tkl2vtx_zrho->SetLineColorAlpha(TColor::GetColor("#6699cc"), 0.4);
0298 tkl2vtx_zrho->SetLineStyle(2);
0299 assoc_tklclus1_g4p->SetLineColorAlpha(TColor::GetColor("#0F4C75"), 0.8);
0300 assoc_tklclus2_g4p->SetLineColorAlpha(TColor::GetColor("#0F4C75"), 0.8);
0301 assoc_tklclus1_g4p->SetLineStyle(2);
0302 assoc_tklclus2_g4p->SetLineStyle(2);
0303 tline_etaphi_matched_negTrackID.push_back(assoc_tklclus1_g4p);
0304 tline_etaphi_matched_negTrackID.push_back(assoc_tklclus2_g4p);
0305 }
0306 }
0307 else
0308 {
0309 ntkl_unmatchedtrack++;
0310 tkl->SetLineColor(TColor::GetColor("#f2777a"));
0311 tkl_zrho->SetLineColor(TColor::GetColor("#f2777a"));
0312 tkl_etaphi->SetLineColor(TColor::GetColor("#f2777a"));
0313
0314 tkl2vtx_xy->SetLineColorAlpha(TColor::GetColor("#f2777a"), 0.4);
0315 tkl2vtx_xy->SetLineStyle(2);
0316 tkl2vtx_zrho->SetLineColorAlpha(TColor::GetColor("#f2777a"), 0.4);
0317 tkl2vtx_zrho->SetLineStyle(2);
0318 }
0319 tklline.push_back(tkl);
0320 tklline.push_back(tkl2vtx_xy);
0321 tklline_zrho.push_back(tkl_zrho);
0322 tklline_zrho.push_back(tkl2vtx_zrho);
0323 tline_etaphi.push_back(tkl_etaphi);
0324
0325
0326
0327
0328 TPolyLine3D *tkl3D = new TPolyLine3D(2);
0329 tkl3D->SetPoint(0, tklclus1z->at(j), tklclus1y->at(j), tklclus1x->at(j));
0330 tkl3D->SetPoint(1, tklclus2z->at(j), tklclus2y->at(j), tklclus2x->at(j));
0331 TPolyLine3D *tkl2vtx3D = new TPolyLine3D(2);
0332 tkl2vtx3D->SetPoint(0, tklclus1z->at(j), tklclus1y->at(j), tklclus1x->at(j));
0333 tkl2vtx3D->SetPoint(1, PV_z, PV_y, PV_x);
0334 TPolyLine3D *vtxline = new TPolyLine3D(2);
0335 vtxline->SetPoint(0, -25, PV_y, PV_x);
0336 vtxline->SetPoint(1, 25, PV_y, PV_x);
0337 vtxline->SetLineColorAlpha(kBlack, 0.4);
0338 vtxline->SetLineStyle(1);
0339 if (recotkl_clus1_matchedtrackID->at(j) == recotkl_clus2_matchedtrackID->at(j) && recotkl_clus1_matchedtrackID->at(j) > 0)
0340 {
0341 tkl3D->SetLineColor(TColor::GetColor("#99cc99"));
0342 tkl2vtx3D->SetLineColorAlpha(TColor::GetColor("#99cc99"), 0.2);
0343 tkl2vtx3D->SetLineStyle(2);
0344 }
0345 else if (recotkl_clus1_matchedtrackID->at(j) == recotkl_clus2_matchedtrackID->at(j) && recotkl_clus1_matchedtrackID->at(j) < 0)
0346 {
0347 tkl3D->SetLineColor(TColor::GetColor("#6699cc"));
0348 tkl2vtx3D->SetLineColorAlpha(TColor::GetColor("#6699cc"), 0.2);
0349 tkl2vtx3D->SetLineStyle(2);
0350 }
0351 else
0352 {
0353 tkl3D->SetLineColor(TColor::GetColor("#f2777a"));
0354 tkl2vtx3D->SetLineColorAlpha(TColor::GetColor("#f2777a"), 0.2);
0355 tkl2vtx3D->SetLineStyle(2);
0356 }
0357 tkl3Dline.push_back(vtxline);
0358 tkl3Dline.push_back(tkl3D);
0359 tkl3Dline.push_back(tkl2vtx3D);
0360 }
0361
0362 for (size_t j = 0; j < PrimaryG4P_eta->size(); j++)
0363 {
0364 pg4p_eta.push_back(PrimaryG4P_eta->at(j));
0365 pg4p_phi.push_back(PrimaryG4P_phi->at(j));
0366 }
0367
0368 for (size_t j = 0; j < GenHadron_eta->size(); j++)
0369 {
0370 gh_eta.push_back(GenHadron_eta->at(j));
0371 gh_phi.push_back(GenHadron_phi->at(j));
0372 }
0373
0374 std::cout << "ntkl = " << ntkl << "; ntkl_matchedtrack = " << ntkl_matchedtrack << "; ntkl_unmatchedtrack = " << ntkl_unmatchedtrack << "; ntkl_matchedtrack_positiveID = " << ntkl_matchedtrack_positiveID << "; ntkl_matchedtrack_negativeID = " << ntkl_matchedtrack_negativeID << std::endl;
0375
0376
0377 vector<double> evtvtx_x = {PV_x};
0378 vector<double> evtvtx_y = {PV_y};
0379 vector<double> evtvtx_z = {PV_z};
0380 vector<double> evtvtx_rho = {sqrt(PV_x * PV_x + PV_y * PV_y)};
0381 TScatter *scat_evtvertex_xy = new TScatter(1, &evtvtx_x[0], &evtvtx_y[0]);
0382 TScatter *scat_evtvertex_zrho = new TScatter(1, &evtvtx_z[0], &evtvtx_rho[0]);
0383
0384 TScatter *scat_xy_matched_posTrackID = new TScatter(tkl_clusx_matched_posTrackID.size(), tkl_clusx_matched_posTrackID.data(), tkl_clusy_matched_posTrackID.data());
0385 TScatter *scat_xy_matched_negTrackID = new TScatter(tkl_clusx_matched_negTrackID.size(), tkl_clusx_matched_negTrackID.data(), tkl_clusy_matched_negTrackID.data());
0386 TScatter *scat_xy_unmatched = new TScatter(tkl_clusx_unmatched.size(), tkl_clusx_unmatched.data(), tkl_clusy_unmatched.data());
0387 TScatter *scat_zrho_matched_posTrackID = new TScatter(tkl_clusz_matched_posTrackID.size(), tkl_clusz_matched_posTrackID.data(), tkl_clusrho_matched_posTrackID.data());
0388 TScatter *scat_zrho_matched_negTrackID = new TScatter(tkl_clusz_matched_negTrackID.size(), tkl_clusz_matched_negTrackID.data(), tkl_clusrho_matched_negTrackID.data());
0389 TScatter *scat_zrho_unmatched = new TScatter(tkl_clusz_unmatched.size(), tkl_clusz_unmatched.data(), tkl_clusrho_unmatched.data());
0390
0391 TScatter *scat_recotkl_clusetaphi_matched_posTrackID = new TScatter(tkl_cluseta_matched_posTrackID.size(), tkl_cluseta_matched_posTrackID.data(), tkl_clusphi_matched_posTrackID.data());
0392 TScatter *scat_recotkl_clusetaphi_matched_negTrackID = new TScatter(tkl_cluseta_matched_negTrackID.size(), tkl_cluseta_matched_negTrackID.data(), tkl_clusphi_matched_negTrackID.data());
0393 TScatter *scat_recotkl_clusetaphi_unmatched = new TScatter(tkl_cluseta_unmatched.size(), tkl_cluseta_unmatched.data(), tkl_clusphi_unmatched.data());
0394 TScatter *scat_primaryG4P_etaphi = new TScatter(pg4p_eta.size(), pg4p_eta.data(), pg4p_phi.data());
0395 TScatter *scat_genHadron_etaphi = new TScatter(gh_eta.size(), gh_eta.data(), gh_phi.data());
0396 TScatter *scat_tklmatchedg4p_etaphi_posTrackID = new TScatter(tklmatchedg4p_eta_posTrackID.size(), tklmatchedg4p_eta_posTrackID.data(), tklmatchedg4p_phi_posTrackID.data());
0397 TScatter *scat_tklmatchedg4p_etaphi_negTrackID = new TScatter(tklmatchedg4p_eta_negTrackID.size(), tklmatchedg4p_eta_negTrackID.data(), tklmatchedg4p_phi_negTrackID.data());
0398
0399 TGraph2D *gr2D_evtvtx = new TGraph2D(evtvtx_x.size(), evtvtx_z.data(), evtvtx_y.data(), evtvtx_x.data());
0400 TGraph2D *gr2D_matched_posTrackID = new TGraph2D(tkl_clusx_matched_posTrackID.size(), tkl_clusz_matched_posTrackID.data(), tkl_clusy_matched_posTrackID.data(), tkl_clusx_matched_posTrackID.data());
0401 TGraph2D *gr2D_matched_negTrackID = new TGraph2D(tkl_clusx_matched_negTrackID.size(), tkl_clusz_matched_negTrackID.data(), tkl_clusy_matched_negTrackID.data(), tkl_clusx_matched_negTrackID.data());
0402 TGraph2D *gr2D_unmatched = new TGraph2D(tkl_clusx_unmatched.size(), tkl_clusz_unmatched.data(), tkl_clusy_unmatched.data(), tkl_clusx_unmatched.data());
0403
0404
0405 std::pair<int, int> canvasSize_xy{550, 700};
0406 scat_evtvertex_xy->SetMarkerColor(TColor::GetColor("#393E46"));
0407 scat_evtvertex_xy->SetMarkerStyle(34);
0408 scat_xy_matched_posTrackID->SetMarkerColor(TColor::GetColor("#99cc99"));
0409 scat_xy_matched_negTrackID->SetMarkerColor(TColor::GetColor("#6699cc"));
0410 scat_xy_unmatched->SetMarkerColor(TColor::GetColor("#f2777a"));
0411 std::vector<TScatter *> vec_tscat_xy{scat_evtvertex_xy, scat_xy_matched_posTrackID, scat_xy_matched_negTrackID, scat_xy_unmatched};
0412 std::tuple<float, float, float, float> axisrange_xy{-12, 12, -12, 12};
0413 drawAndSaveCanvas(canvasSize_xy, axisrange_xy, vec_tscat_xy, tklline, std::vector<std::string>{"Event vertex", "Tracklet - matched to G4P with trackID>0", "Tracklet - matched to G4P with trackID<0", "Tracklet - not matched to G4P"}, "x [cm]", "y [cm]", plotdir + "/tkl_xy_scatter");
0414
0415 std::pair<int, int> canvasSize_zrho{800, 500};
0416 scat_evtvertex_zrho->SetMarkerColor(TColor::GetColor("#393E46"));
0417 scat_evtvertex_zrho->SetMarkerStyle(34);
0418 scat_zrho_matched_posTrackID->SetMarkerColor(TColor::GetColor("#99cc99"));
0419 scat_zrho_matched_negTrackID->SetMarkerColor(TColor::GetColor("#6699cc"));
0420 scat_zrho_unmatched->SetMarkerColor(TColor::GetColor("#f2777a"));
0421 vector<TScatter *> vec_tscat_zrho{scat_evtvertex_zrho, scat_zrho_matched_posTrackID, scat_zrho_matched_negTrackID, scat_zrho_unmatched};
0422 std::tuple<float, float, float, float> axisrange_zrho{-24, 24, -12, 12};
0423 drawAndSaveCanvas(canvasSize_zrho, axisrange_zrho, vec_tscat_zrho, tklline_zrho, std::vector<std::string>{"Event vertex", "Tracklet - matched to G4P with trackID>0", "Tracklet - matched to G4P with trackID<0", "Tracklet - not matched to G4P"}, "z [cm]", "Radius [cm]", plotdir + "/tkl_zrho_scatter");
0424
0425 std::pair<int, int> canvasSize_etaphi{700, 500};
0426 scat_recotkl_clusetaphi_matched_posTrackID->SetMarkerColor(TColor::GetColor("#99cc99"));
0427 scat_recotkl_clusetaphi_matched_negTrackID->SetMarkerColor(TColor::GetColor("#6699cc"));
0428 scat_recotkl_clusetaphi_unmatched->SetMarkerColor(TColor::GetColor("#f2777a"));
0429 scat_primaryG4P_etaphi->SetMarkerColor(TColor::GetColor("#7F167F"));
0430 scat_primaryG4P_etaphi->SetMarkerStyle(21);
0431 std::vector<TScatter *> vec_tscat_etaphi_primaryG4P{scat_recotkl_clusetaphi_matched_posTrackID, scat_recotkl_clusetaphi_matched_negTrackID, scat_recotkl_clusetaphi_unmatched, scat_primaryG4P_etaphi};
0432 std::tuple<float, float, float, float> axisrange_etaphi{-2, 2, -3.5, 3.5};
0433 drawAndSaveCanvas(canvasSize_etaphi, axisrange_etaphi, vec_tscat_etaphi_primaryG4P, tline_etaphi, std::vector<std::string>{"Tracklet - matched to G4P with trackID>0", "Tracklet - matched to G4P with trackID<0", "Tracklet - not matched to G4P", "Primary PHG4Particle"}, "#eta", "#phi", plotdir + "/tkl_etaphi_scatter_primaryG4P");
0434
0435 scat_recotkl_clusetaphi_matched_posTrackID->SetMarkerColor(TColor::GetColor("#99cc99"));
0436 scat_recotkl_clusetaphi_matched_negTrackID->SetMarkerColor(TColor::GetColor("#6699cc"));
0437 scat_recotkl_clusetaphi_unmatched->SetMarkerColor(TColor::GetColor("#f2777a"));
0438 scat_genHadron_etaphi->SetMarkerColor(TColor::GetColor("#7F167F"));
0439 scat_genHadron_etaphi->SetMarkerStyle(21);
0440 std::vector<TScatter *> vec_tscat_etaphi_genhadron{scat_recotkl_clusetaphi_matched_posTrackID, scat_recotkl_clusetaphi_matched_negTrackID, scat_recotkl_clusetaphi_unmatched, scat_genHadron_etaphi};
0441 drawAndSaveCanvas(canvasSize_etaphi, axisrange_etaphi, vec_tscat_etaphi_genhadron, tline_etaphi, std::vector<std::string>{"Tracklet - matched to G4P with trackID>0", "Tracklet - matched to G4P with trackID<0", "Tracklet - not matched to G4P", "Generated charged hadron"}, "#eta", "#phi", plotdir + "/tkl_etaphi_scatter_genhadron");
0442
0443 scat_recotkl_clusetaphi_matched_posTrackID->SetMarkerColor(TColor::GetColor("#99cc99"));
0444 scat_tklmatchedg4p_etaphi_posTrackID->SetMarkerColor(TColor::GetColor("#5E8B7E"));
0445 scat_tklmatchedg4p_etaphi_posTrackID->SetMarkerStyle(21);
0446 std::vector<TScatter *> vec_tscat_etaphi_tklmatchedg4p_posTrackID{scat_recotkl_clusetaphi_matched_posTrackID, scat_tklmatchedg4p_etaphi_posTrackID};
0447 drawAndSaveCanvas(canvasSize_etaphi, axisrange_etaphi, vec_tscat_etaphi_tklmatchedg4p_posTrackID, tline_etaphi_matched_posTrackID, std::vector<std::string>{"Tracklet - matched to G4P with trackID>0", "Matched PHG4Particle with trackID>0"}, "#eta", "#phi", plotdir + "/tkl_etaphi_scatter_tklmatchedg4p_posTrackID");
0448
0449 scat_recotkl_clusetaphi_matched_negTrackID->SetMarkerColor(TColor::GetColor("#6699cc"));
0450 scat_tklmatchedg4p_etaphi_negTrackID->SetMarkerColor(TColor::GetColor("#0F4C75"));
0451 scat_tklmatchedg4p_etaphi_negTrackID->SetMarkerStyle(21);
0452 std::vector<TScatter *> vec_tscat_etaphi_tklmatchedg4p_negTrackID{scat_recotkl_clusetaphi_matched_negTrackID, scat_tklmatchedg4p_etaphi_negTrackID};
0453 drawAndSaveCanvas(canvasSize_etaphi, axisrange_etaphi, vec_tscat_etaphi_tklmatchedg4p_negTrackID, tline_etaphi_matched_negTrackID, std::vector<std::string>{"Tracklet - matched to G4P with trackID<0", "Matched PHG4Particle with trackID<0"}, "#eta", "#phi", plotdir + "/tkl_etaphi_scatter_tklmatchedg4p_negTrackID");
0454
0455 std::pair<int, int> canvasSize_3D{700, 350};
0456 gr2D_evtvtx->SetMarkerColor(TColor::GetColor("#393E46"));
0457 gr2D_evtvtx->SetMarkerStyle(34);
0458 gr2D_matched_posTrackID->SetMarkerColor(TColor::GetColor("#99cc99"));
0459 gr2D_matched_negTrackID->SetMarkerColor(TColor::GetColor("#6699cc"));
0460 gr2D_unmatched->SetMarkerColor(TColor::GetColor("#f2777a"));
0461 std::vector<TGraph2D *> vec_tg2D{gr2D_evtvtx, gr2D_matched_posTrackID, gr2D_matched_negTrackID, gr2D_unmatched};
0462 std::tuple<float, float, float, float, float, float> axisrange_3D{-25, 25, -12, 12, -12, 12};
0463 drawTGraph2D(canvasSize_3D, axisrange_3D, vec_tg2D, tkl3Dline, std::vector<std::string>{"Event vertex", "Tracklet - matched to G4P with trackID>0", "Tracklet - matched to G4P with trackID<0", "Tracklet - not matched to G4P"}, "z [cm]", "y [cm]", "x [cm]", plotdir + "/tkl_3D_scatter");
0464 }
0465
0466 f->Close();
0467 }