27 const string sOutput(
"newMatcherPlots_oneMatchPerParticle_oddFrac02120.pt10n1evt500pim.d18m1y2024.root");
28 const string sInTrue(
"input/merged/sPhenixG4_oneMatchPerParticle_newMatcher.pt10num1evt500pim.d4m1y2024.root");
29 const string sInReco(
"input/merged/sPhenixG4_oneMatchPerParticle_newMatcher.pt10num1evt500pim.d4m1y2024.root");
30 const string sTreeTrue(
"T");
31 const string sTreeReco(
"T");
34 const pair<float, float> oddPtFrac = {0.2, 1.2};
37 gErrorIgnoreLevel = kError;
38 cout <<
"\n Staring new matcher plot script..." << endl;
41 TFile* fOutput =
new TFile(sOutput.data(),
"recreate");
42 TFile* fInTrue =
new TFile(sInTrue.data(),
"read");
43 TFile* fInReco =
new TFile(sInReco.data(),
"read");
44 if (!fOutput || !fInTrue || !fInReco) {
45 cerr <<
"PANIC: couldn't open a file!\n"
46 <<
" fOutput = " << fOutput <<
"fInTrue = " << fInTrue <<
", fInReco = " << fInReco <<
"\n"
50 cout <<
" Opened files." << endl;
53 TTree* tInTrue = (TTree*) fInTrue ->
Get(sTreeTrue.data());
54 TTree* tInReco = (TTree*) fInReco ->
Get(sTreeReco.data());
55 if (!tInTrue || !tInReco) {
56 cerr <<
"PANIC: couldn't grab input tree!\n"
57 <<
" sTreeTrue = " << sTreeTrue <<
", tInTrue = " << tInTrue <<
"\n"
58 <<
" sTreeReco = " << sTreeReco <<
", tInReco = " << tInReco <<
"\n"
62 cout <<
" Grabbed input trees." << endl;
67 Float_t tru_centrality;
68 Int_t tru_ntrackmatches;
72 Bool_t tru_is_G4track;
73 Bool_t tru_is_Svtrack;
74 Bool_t tru_is_matched;
83 Float_t tru_matchrat_intt;
84 Float_t tru_matchrat_mvtx;
85 Float_t tru_matchrat_tpc;
89 Float_t rec_centrality;
90 Int_t rec_ntrackmatches;
94 Bool_t rec_is_G4track;
95 Bool_t rec_is_Svtrack;
96 Bool_t rec_is_matched;
104 Float_t rec_matchrat;
105 Float_t rec_matchrat_intt;
106 Float_t rec_matchrat_mvtx;
107 Float_t rec_matchrat_tpc;
153 cout <<
" Set input branches." << endl;
189 const vector<vector<string>> vecHistBase = {
190 {
"hTruthNumTot",
"hTrackNumTot",
"hWeirdNumTot",
"hNormNumTot"},
191 {
"hTruthNumIntt",
"hTrackNumIntt",
"hWeirdNumIntt",
"hNormNumIntt"},
192 {
"hTruthNumMvtx",
"hTrackNumMvtx",
"hWeirdNumMvtx",
"hNormNumMvtx"},
193 {
"hTruthNumTpc",
"hTrackNumTpc",
"hWeirdNumTpc",
"hNormNumTpc"},
194 {
"hTruthRatTot",
"hTrackRatTot",
"hWeirdRatTot",
"hNormRatTot"},
195 {
"hTruthRatIntt",
"hTrackRatIntt",
"hWeirdRatIntt",
"hNormRatIntt"},
196 {
"hTruthRatMvtx",
"hTrackRatMvtx",
"hWeirdRatMvtx",
"hNormRatMvtx"},
197 {
"hTruthRatTpc",
"hTrackRatTpc",
"hWeirdRatTpc",
"hNormRatTpc"},
198 {
"hTruthPhi",
"hTrackPhi",
"hWeirdPhi",
"hNormPhi"},
199 {
"hTruthEta",
"hTrackEta",
"hWeirdEta",
"hNormEta"},
200 {
"hTruthPt",
"hTrackPt",
"hWeirdPt",
"hNormPt"},
201 {
"hTruthFrac",
"hTrackFrac",
"hWeirdFrac",
"hNormFrac"},
202 {
"hTruthQual",
"hTrackQual",
"hWeirdQual",
"hNormQual"},
203 {
"hTruthPtErr",
"hTrackPtErr",
"hWeirdPtErr",
"hNormPtErr"},
204 {
"hTruthEtaErr",
"hTrackEtaErr",
"hWeirdEtaErr",
"hNormEtaErr"},
205 {
"hTruthPhiErr",
"hTrackPhiErr",
"hWeirdPhiErr",
"hNormPhiErr"},
206 {
"hTruthPtRes",
"hTrackPtRes",
"hWeirdPtRes",
"hNormPtRes"},
207 {
"hTruthEtaRes",
"hTrackEtaRes",
"hWeirdEtaRes",
"hNormEtaRes"},
208 {
"hTruthPhiRes",
"hTrackPhiRes",
"hWeirdPhiRes",
"hNormPhiRes"}
210 const size_t nHistRows = vecHistBase.size();
211 const size_t nHistTypes = vecHistBase[0].size();
214 const vector<string> vecVsHistModifiers = {
218 const size_t nVsHistMods = vecVsHistModifiers.size();
221 const string sCount(
"counts");
222 const vector<string> vecBaseAxisVars = {
223 "N^{tot} = N_{hit}^{mvtx} + N_{hit}^{intt} + N_{clust}^{tpc}",
227 "N_{reco}^{tot} / N_{true}^{tot}",
228 "N_{reco}^{intt} / N_{true}^{intt}",
229 "N_{reco}^{mvtx} / N_{true}^{mvtx}",
230 "N_{reco}^{tpc} / N_{true}^{tpc}",
234 "p_{T}^{reco} / p_{T}^{true}"
236 const vector<string> vecVsAxisVars = {
237 "p_{T}^{true} [GeV/c]",
242 const uint32_t nNumBins = 101;
243 const uint32_t nRatBins = 120;
245 const uint32_t nPhiBins = 360;
246 const uint32_t nPtBins = 202;
247 const uint32_t nFracBins = 220;
248 const uint32_t nQualBins = ;
249 const uint32_t nResBins = ;
252 const pair<float, float> xNumBins = {-0.5, 100.5};
253 const pair<float, float> xRatBins = {-0.5, 5.5};
254 const pair<float, float> xEtaBins = {-2., 2.};
255 const pair<float, float> xPhiBins = {-3.15, 3.15};
256 const pair<float, float> xPtBins = {-1., 100.};
257 const pair<float, float> xFracBins = {-0.5, 10.5};
258 const pair<float, float> xQualBins = {};
259 const pair<float, float> xResBins = {};
262 vector<tuple<uint32_t, pair<float, float>>> vecBaseHistBins = {
279 vector<tuple<uint32_t, pair<float, float>>> vecVsHistBins = {
285 vector<vector<TH1D*>> vecHist1D(nHistRows);
286 for (
size_t iHistRow = 0; iHistRow < nHistRows; iHistRow++) {
287 for (
const string sHistBase : vecHistBase[iHistRow]) {
288 vecHist1D[iHistRow].push_back(
292 get<0>(vecBaseHistBins[iHistRow]),
293 get<1>(vecBaseHistBins[iHistRow]).first,
294 get<1>(vecBaseHistBins[iHistRow]).second
301 vector<vector<vector<TH2D*>>> vecHist2D(nHistRows, vector<vector<TH2D*>>(nHistTypes));
302 for (
size_t iHistRow = 0; iHistRow < nHistRows; iHistRow++) {
303 for (
size_t iHistType = 0; iHistType < nHistTypes; iHistType++) {
304 for (
size_t iVsHistMod = 0; iVsHistMod < nVsHistMods; iVsHistMod++) {
305 const string sHistName2D = vecHistBase[iHistRow][iHistType] + vecVsHistModifiers[iVsHistMod];
306 vecHist2D[iHistRow][iHistType].push_back(
310 get<0>(vecVsHistBins[iVsHistMod]),
311 get<1>(vecVsHistBins[iVsHistMod]).first,
312 get<1>(vecVsHistBins[iVsHistMod]).second,
313 get<0>(vecBaseHistBins[iHistRow]),
314 get<1>(vecBaseHistBins[iHistRow]).first,
315 get<1>(vecBaseHistBins[iHistRow]).second
323 for (
auto histRow1D : vecHist1D) {
324 for (
auto hist1D : histRow1D) {
329 for (
auto histRow2D : vecHist2D) {
330 for (
auto histType2D : histRow2D) {
331 for (
auto hist2D: histType2D) {
338 const int64_t nTrueEntries = tInTrue -> GetEntries();
339 const int64_t nRecoEntries = tInReco -> GetEntries();
340 cout <<
" Beginning truth particle loop: " << nTrueEntries <<
" to process" << endl;
343 int64_t nTrueBytes = 0;
344 for (int64_t iTrueEntry = 0; iTrueEntry < nTrueEntries; iTrueEntry++) {
347 const int64_t trueBytes = tInTrue ->
GetEntry(iTrueEntry);
349 cerr <<
"PANIC: issue with entry " << iTrueEntry <<
"! Aborting loop!\n" << endl;
352 nTrueBytes += trueBytes;
355 const int64_t iTrueProg = iTrueEntry + 1;
356 if (iTrueProg == nTrueEntries) {
357 cout <<
" Processing entry " << iTrueProg <<
"/" << nTrueEntries <<
"..." << endl;
359 cout <<
" Processing entry " << iTrueProg <<
"/" << nTrueEntries <<
"...\r" <<
flush;
363 if (!tru_is_G4track)
continue;
366 vecHist1D[Var::NTot][Type::Truth] ->
Fill(tru_nclus);
367 vecHist1D[Var::NIntt][Type::Truth] ->
Fill(tru_nclusintt);
368 vecHist1D[Var::NMvtx][Type::Truth] ->
Fill(tru_nclusmvtx);
369 vecHist1D[Var::NTpc][Type::Truth] ->
Fill(tru_nclustpc);
370 vecHist1D[Var::RTot][Type::Truth] ->
Fill(1.);
371 vecHist1D[Var::RIntt][Type::Truth] ->
Fill(1.);
372 vecHist1D[Var::RMvtx][Type::Truth] ->
Fill(1.);
373 vecHist1D[Var::RTpc][Type::Truth] ->
Fill(1.);
374 vecHist1D[Var::Phi][Type::Truth] ->
Fill(tru_trkphi);
376 vecHist1D[
Var::Pt][Type::Truth] ->
Fill(tru_trkpt);
377 vecHist1D[Var::Frac][Type::Truth] ->
Fill(1.);
380 vecHist2D[Var::NTot][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_trkpt, tru_nclus);
381 vecHist2D[Var::NIntt][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_trkpt, tru_nclusintt);
382 vecHist2D[Var::NMvtx][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_trkpt, tru_nclusmvtx);
383 vecHist2D[Var::NTpc][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_trkpt, tru_nclustpc);
384 vecHist2D[Var::RTot][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_trkpt, 1.);
385 vecHist2D[Var::RIntt][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_trkpt, 1.);
386 vecHist2D[Var::RMvtx][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_trkpt, 1.);
387 vecHist2D[Var::RTpc][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_trkpt, 1.);
388 vecHist2D[Var::Phi][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_trkpt, tru_trkphi);
389 vecHist2D[
Var::Eta][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_trkpt, tru_trketa);
390 vecHist2D[
Var::Pt][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_trkpt, tru_trkpt);
391 vecHist2D[Var::Frac][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_trkpt, 1.);
393 vecHist2D[Var::NTot][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_nclustpc, tru_nclus);
394 vecHist2D[Var::NIntt][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_nclustpc, tru_nclusintt);
395 vecHist2D[Var::NMvtx][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_nclustpc, tru_nclusmvtx);
396 vecHist2D[Var::NTpc][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_nclustpc, tru_nclustpc);
397 vecHist2D[Var::RTot][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_nclustpc, 1.);
398 vecHist2D[Var::RIntt][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_nclustpc, 1.);
399 vecHist2D[Var::RMvtx][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_nclustpc, 1.);
400 vecHist2D[Var::RTpc][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_nclustpc, 1.);
401 vecHist2D[Var::Phi][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_nclustpc, tru_trkphi);
402 vecHist2D[
Var::Eta][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_nclustpc, tru_trketa);
403 vecHist2D[
Var::Pt][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_nclustpc, tru_trkpt);
404 vecHist2D[Var::Frac][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_nclustpc, 1.);
408 cout <<
" Finished truth particle loop.\n"
409 <<
" Beginning reconstructed track loop: " << nRecoEntries <<
" to process"
414 int64_t nRecoBytes = 0;
415 for (int64_t iRecoEntry = 0; iRecoEntry < nRecoEntries; iRecoEntry++) {
418 const int64_t recoBytes = tInReco ->
GetEntry(iRecoEntry);
420 cerr <<
"PANIC: issue with entry " << iRecoEntry <<
"! Aborting loop!\n" << endl;
423 nRecoBytes += recoBytes;
426 const int64_t iRecoProg = iRecoEntry + 1;
427 if (iRecoProg == nRecoEntries) {
428 cout <<
" Processing entry " << iRecoProg <<
"/" << nRecoEntries <<
"..." << endl;
430 cout <<
" Processing entry " << iRecoProg <<
"/" << nRecoEntries <<
"...\r" <<
flush;
434 if (!rec_is_matched || !rec_is_Svtrack)
continue;
453 vecHist2D[Var::NTot][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_nclus);
454 vecHist2D[Var::NIntt][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_nclusintt);
455 vecHist2D[Var::NMvtx][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_nclusmvtx);
456 vecHist2D[Var::NTpc][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_nclustpc);
457 vecHist2D[Var::RTot][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_matchrat);
458 vecHist2D[Var::RIntt][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_matchrat_intt);
459 vecHist2D[Var::RMvtx][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_matchrat_mvtx);
460 vecHist2D[Var::RTpc][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_matchrat_tpc);
461 vecHist2D[Var::Phi][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_trkphi);
464 vecHist2D[Var::Frac][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_trkpt, 1.);
466 vecHist2D[Var::NTot][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_nclus);
467 vecHist2D[Var::NIntt][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_nclusintt);
468 vecHist2D[Var::NMvtx][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_nclusmvtx);
469 vecHist2D[Var::NTpc][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_nclustpc);
470 vecHist2D[Var::RTot][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_matchrat);
471 vecHist2D[Var::RIntt][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_matchrat_intt);
472 vecHist2D[Var::RMvtx][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_matchrat_mvtx);
473 vecHist2D[Var::RTpc][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_matchrat_tpc);
474 vecHist2D[Var::Phi][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_trkphi);
477 vecHist2D[Var::Frac][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_nclustpc, 1.);
481 const bool isWeirdTrack =
true;
483 vecHist1D[Var::NTot][Type::Weird] ->
Fill(rec_nclus);
484 vecHist1D[Var::NIntt][Type::Weird] ->
Fill(rec_nclusintt);
485 vecHist1D[Var::NMvtx][Type::Weird] ->
Fill(rec_nclusmvtx);
486 vecHist1D[Var::NTpc][Type::Weird] ->
Fill(rec_nclustpc);
487 vecHist1D[Var::RTot][Type::Weird] ->
Fill(rec_matchrat);
488 vecHist1D[Var::RIntt][Type::Weird] ->
Fill(rec_matchrat_intt);
489 vecHist1D[Var::RMvtx][Type::Weird] ->
Fill(rec_matchrat_mvtx);
490 vecHist1D[Var::RTpc][Type::Weird] ->
Fill(rec_matchrat_tpc);
491 vecHist1D[Var::Phi][Type::Weird] ->
Fill(rec_trkphi);
493 vecHist1D[
Var::Pt][Type::Weird] ->
Fill(rec_trkpt);
494 vecHist1D[Var::Frac][Type::Weird] ->
Fill(1.);
496 vecHist2D[Var::NTot][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_nclus);
497 vecHist2D[Var::NIntt][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_nclusintt);
498 vecHist2D[Var::NMvtx][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_nclusmvtx);
499 vecHist2D[Var::NTpc][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_nclustpc);
500 vecHist2D[Var::RTot][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_matchrat);
501 vecHist2D[Var::RIntt][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_matchrat_intt);
502 vecHist2D[Var::RMvtx][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_matchrat_mvtx);
503 vecHist2D[Var::RTpc][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_matchrat_tpc);
504 vecHist2D[Var::Phi][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_trkphi);
505 vecHist2D[
Var::Eta][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_trketa);
506 vecHist2D[
Var::Pt][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_trkpt);
507 vecHist2D[Var::Frac][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_trkpt, 1.);
509 vecHist2D[Var::NTot][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_nclus);
510 vecHist2D[Var::NIntt][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_nclusintt);
511 vecHist2D[Var::NMvtx][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_nclusmvtx);
512 vecHist2D[Var::NTpc][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_nclustpc);
513 vecHist2D[Var::RTot][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_matchrat);
514 vecHist2D[Var::RIntt][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_matchrat_intt);
515 vecHist2D[Var::RMvtx][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_matchrat_mvtx);
516 vecHist2D[Var::RTpc][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_matchrat_tpc);
517 vecHist2D[Var::Phi][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_trkphi);
518 vecHist2D[
Var::Eta][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_trketa);
519 vecHist2D[
Var::Pt][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_trkpt);
520 vecHist2D[Var::Frac][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_nclustpc, 1.);
522 vecHist1D[Var::NTot][Type::Normal] ->
Fill(rec_nclus);
523 vecHist1D[Var::NIntt][Type::Normal] ->
Fill(rec_nclusintt);
524 vecHist1D[Var::NMvtx][Type::Normal] ->
Fill(rec_nclusmvtx);
525 vecHist1D[Var::NTpc][Type::Normal] ->
Fill(rec_nclustpc);
526 vecHist1D[Var::RTot][Type::Normal] ->
Fill(rec_matchrat);
527 vecHist1D[Var::RIntt][Type::Normal] ->
Fill(rec_matchrat_intt);
528 vecHist1D[Var::RMvtx][Type::Normal] ->
Fill(rec_matchrat_mvtx);
529 vecHist1D[Var::RTpc][Type::Normal] ->
Fill(rec_matchrat_tpc);
530 vecHist1D[Var::Phi][Type::Normal] ->
Fill(rec_trkphi);
532 vecHist1D[
Var::Pt][Type::Normal] ->
Fill(rec_trkpt);
533 vecHist1D[Var::Frac][Type::Normal] ->
Fill(1.);
535 vecHist2D[Var::NTot][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_nclus);
536 vecHist2D[Var::NIntt][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_nclusintt);
537 vecHist2D[Var::NMvtx][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_nclusmvtx);
538 vecHist2D[Var::NTpc][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_nclustpc);
539 vecHist2D[Var::RTot][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_matchrat);
540 vecHist2D[Var::RIntt][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_matchrat_intt);
541 vecHist2D[Var::RMvtx][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_matchrat_mvtx);
542 vecHist2D[Var::RTpc][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_matchrat_tpc);
543 vecHist2D[Var::Phi][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_trkphi);
544 vecHist2D[
Var::Eta][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_trketa);
545 vecHist2D[
Var::Pt][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_trkpt, rec_trkpt);
546 vecHist2D[Var::Frac][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_trkpt, 1.);
548 vecHist2D[Var::NTot][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_nclus);
549 vecHist2D[Var::NIntt][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_nclusintt);
550 vecHist2D[Var::NMvtx][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_nclusmvtx);
551 vecHist2D[Var::NTpc][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_nclustpc);
552 vecHist2D[Var::RTot][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_matchrat);
553 vecHist2D[Var::RIntt][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_matchrat_intt);
554 vecHist2D[Var::RMvtx][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_matchrat_mvtx);
555 vecHist2D[Var::RTpc][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_matchrat_tpc);
556 vecHist2D[Var::Phi][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_trkphi);
557 vecHist2D[
Var::Eta][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_trketa);
558 vecHist2D[
Var::Pt][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_nclustpc, rec_trkpt);
559 vecHist2D[Var::Frac][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_nclustpc, 1.);
562 cout <<
" Finished reconstructed track loop." << endl;
566 for (
auto histRow1D : vecHist1D) {
567 for (
auto hist1D : histRow1D) {
576 for (
auto histRow2D : vecHist2D) {
577 for (
auto histType2D : histRow2D) {
579 for (
auto hist2D : histType2D) {
588 cout <<
" Set axis titles." << endl;
592 for (
auto histRow1D : vecHist1D) {
593 for (
auto hist1D : histRow1D) {
597 for (
auto histRow2D : vecHist2D) {
598 for (
auto histType2D : histRow2D) {
599 for (
auto hist2D: histType2D) {
604 cout <<
" Saved histograms." << endl;
615 cout <<
" Finished new matcher plot script!\n" << endl;