34 const string sOutput(
"oldEvalPlots_oneMatchPerParticle_embedScanOn_forZVtxCutComp_oddFrac05150.pt10n1evt500pim.d1m2y2024.root");
35 const string sTupleTrue(
"ntp_gtrack");
36 const string sTupleReco(
"ntp_track");
37 const vector<string> vecInTrue = {
38 "input/merged/sPhenixG4_oneMatchPerParticle_oldEval_forCrossCheck.pt10num1evt500pim.d25m1y2024.root"
40 const vector<string> vecInReco = {
41 "input/merged/sPhenixG4_oneMatchPerParticle_oldEval_forCrossCheck.pt10num1evt500pim.d25m1y2024.root"
45 const bool useOnlyPrimTrks(
true);
46 const bool doZVtxCut(
true);
47 const bool doPhiCut(
false);
50 const pair<float, float> oddPtFrac = {0.5, 1.5};
51 const pair<float, float> zVtxRange = {-1., 1.};
54 const float sigCutVal(0.75);
55 const array<pair<float, float>,
NSectors> phiSectors = {
56 make_pair(-2.92, 0.12),
57 make_pair(-2.38, 0.05),
58 make_pair(-1.93, 0.18),
59 make_pair(-1.33, 0.07),
60 make_pair(-0.90, 0.24),
61 make_pair(-0.29, 0.09),
62 make_pair(0.23, 0.11),
63 make_pair(0.73, 0.10),
64 make_pair(1.28, 0.10),
65 make_pair(1.81, 0.08),
66 make_pair(2.23, 0.18),
71 gErrorIgnoreLevel = kError;
72 cout <<
"\n Staring old evaluator plot script..." << endl;
75 TFile* fOutput =
new TFile(sOutput.data(),
"recreate");
77 cerr <<
"PANIC: couldn't open output file!\n"
78 <<
" fOutput = " << fOutput <<
"\n"
82 cout <<
" Opened files." << endl;
85 TChain* tInTrue =
new TChain(sTupleTrue.data());
86 TChain* tInReco =
new TChain(sTupleReco.data());
87 for (
const string sInTrue : vecInTrue) {
88 const int added = tInTrue -> Add(sInTrue.data());
90 cerr <<
"WARNING: was not able to add ntuple from file \'" << sInTrue <<
"\'!\n"
91 <<
" return value = " << added
95 for (
const string sInReco : vecInReco) {
96 const int added = tInReco -> Add(sInReco.data());
98 cerr <<
"WARNING: was not able to add ntuple from file \'" << sInReco <<
"\'!\n"
99 <<
" return value = " << added
103 cout <<
" Grabbed input trees." << endl;
108 Float_t tru_gntracks;
109 Float_t tru_gnchghad;
110 Float_t tru_gtrackID;
146 Float_t tru_gprimary;
155 Float_t tru_deltaeta;
156 Float_t tru_deltaphi;
185 Float_t tru_vertexID;
190 Float_t tru_dca2dsigma;
192 Float_t tru_dca3dxysigma;
194 Float_t tru_dca3dzsigma;
198 Float_t tru_nfromtruth;
200 Float_t tru_ntrumaps;
201 Float_t tru_nwrongmaps;
202 Float_t tru_ntruintt;
203 Float_t tru_nwrongintt;
205 Float_t tru_nwrongtpc;
207 Float_t tru_nwrongmms;
208 Float_t tru_ntrutpc1;
209 Float_t tru_nwrongtpc1;
210 Float_t tru_ntrutpc11;
211 Float_t tru_nwrongtpc11;
212 Float_t tru_ntrutpc2;
213 Float_t tru_nwrongtpc2;
214 Float_t tru_ntrutpc3;
215 Float_t tru_nwrongtpc3;
216 Float_t tru_layersfromtruth;
223 Float_t tru_nhittpcall;
224 Float_t tru_nhittpcin;
225 Float_t tru_nhittpcmid;
226 Float_t tru_nhittpcout;
227 Float_t tru_nclusall;
228 Float_t tru_nclustpc;
229 Float_t tru_nclusintt;
230 Float_t tru_nclusmaps;
231 Float_t tru_nclusmms;
236 Float_t rec_crossing;
244 Float_t rec_deltaeta;
245 Float_t rec_deltaphi;
274 Float_t rec_vertexID;
279 Float_t rec_dca2dsigma;
281 Float_t rec_dca3dxysigma;
283 Float_t rec_dca3dzsigma;
287 Float_t rec_gtrackID;
315 Float_t rec_gprimary;
316 Float_t rec_nfromtruth;
318 Float_t rec_ntrumaps;
319 Float_t rec_nwrongmaps;
320 Float_t rec_ntruintt;
321 Float_t rec_nwrongintt;
323 Float_t rec_nwrongtpc;
325 Float_t rec_nwrongmms;
326 Float_t rec_ntrutpc1;
327 Float_t rec_nwrongtpc1;
328 Float_t rec_ntrutpc11;
329 Float_t rec_nwrongtpc11;
330 Float_t rec_ntrutpc2;
331 Float_t rec_nwrongtpc2;
332 Float_t rec_ntrutpc3;
333 Float_t rec_nwrongtpc3;
334 Float_t rec_layersfromtruth;
341 Float_t rec_nhittpcall;
342 Float_t rec_nhittpcin;
343 Float_t rec_nhittpcmid;
344 Float_t rec_nhittpcout;
345 Float_t rec_nclusall;
346 Float_t rec_nclustpc;
347 Float_t rec_nclusintt;
348 Float_t rec_nclusmaps;
349 Float_t rec_nclusmms;
596 cout <<
" Set input branches." << endl;
625 const vector<vector<string>> vecHistBase = {
626 {
"hTruthNumTot",
"hTrackNumTot",
"hWeirdNumTot",
"hNormNumTot"},
627 {
"hTruthNumIntt",
"hTrackNumIntt",
"hWeirdNumIntt",
"hNormNumIntt"},
628 {
"hTruthNumMvtx",
"hTrackNumMvtx",
"hWeirdNumMvtx",
"hNormNumMvtx"},
629 {
"hTruthNumTpc",
"hTrackNumTpc",
"hWeirdNumTpc",
"hNormNumTpc"},
630 {
"hTruthRatTot",
"hTrackRatTot",
"hWeirdRatTot",
"hNormRatTot"},
631 {
"hTruthRatIntt",
"hTrackRatIntt",
"hWeirdRatIntt",
"hNormRatIntt"},
632 {
"hTruthRatMvtx",
"hTrackRatMvtx",
"hWeirdRatMvtx",
"hNormRatMvtx"},
633 {
"hTruthRatTpc",
"hTrackRatTpc",
"hWeirdRatTpc",
"hNormRatTpc"},
634 {
"hTruthPhi",
"hTrackPhi",
"hWeirdPhi",
"hNormPhi"},
635 {
"hTruthEta",
"hTrackEta",
"hWeirdEta",
"hNormEta"},
636 {
"hTruthPt",
"hTrackPt",
"hWeirdPt",
"hNormPt"},
637 {
"hTruthFrac",
"hTrackFrac",
"hWeirdFrac",
"hNormFrac"}
639 const size_t nHistRows = vecHistBase.size();
640 const size_t nHistTypes = vecHistBase[0].size();
643 const vector<string> vecVsHistModifiers = {
647 const size_t nVsHistMods = vecVsHistModifiers.size();
650 const string sCount(
"counts");
651 const vector<string> vecBaseAxisVars = {
652 "N^{tot} = N_{hit}^{mvtx} + N_{hit}^{intt} + N_{clust}^{tpc}",
656 "N_{reco}^{tot} / N_{true}^{tot}",
657 "N_{reco}^{intt} / N_{true}^{intt}",
658 "N_{reco}^{mvtx} / N_{true}^{mvtx}",
659 "N_{reco}^{tpc} / N_{true}^{tpc}",
663 "p_{T}^{reco} / p_{T}^{true}"
665 const vector<string> vecVsAxisVars = {
666 "p_{T}^{true} [GeV/c]",
671 const uint32_t nNumBins = 101;
672 const uint32_t nRatBins = 120;
674 const uint32_t nPhiBins = 360;
675 const uint32_t nPtBins = 101;
676 const uint32_t nFracBins = 110;
679 const pair<float, float> xNumBins = {-0.5, 100.5};
680 const pair<float, float> xRatBins = {-0.5, 5.5};
681 const pair<float, float> xEtaBins = {-2., 2.};
682 const pair<float, float> xPhiBins = {-3.15, 3.15};
683 const pair<float, float> xPtBins = {-1., 100.};
684 const pair<float, float> xFracBins = {-0.5, 10.5};
687 vector<tuple<uint32_t, pair<float, float>>> vecBaseHistBins = {
703 vector<tuple<uint32_t, pair<float, float>>> vecVsHistBins = {
709 vector<vector<TH1D*>> vecHist1D(nHistRows);
710 for (
size_t iHistRow = 0; iHistRow < nHistRows; iHistRow++) {
711 for (
const string sHistBase : vecHistBase[iHistRow]) {
712 vecHist1D[iHistRow].push_back(
716 get<0>(vecBaseHistBins[iHistRow]),
717 get<1>(vecBaseHistBins[iHistRow]).first,
718 get<1>(vecBaseHistBins[iHistRow]).second
725 vector<vector<vector<TH2D*>>> vecHist2D(nHistRows, vector<vector<TH2D*>>(nHistTypes));
726 for (
size_t iHistRow = 0; iHistRow < nHistRows; iHistRow++) {
727 for (
size_t iHistType = 0; iHistType < nHistTypes; iHistType++) {
728 for (
size_t iVsHistMod = 0; iVsHistMod < nVsHistMods; iVsHistMod++) {
729 const string sHistName2D = vecHistBase[iHistRow][iHistType] + vecVsHistModifiers[iVsHistMod];
730 vecHist2D[iHistRow][iHistType].push_back(
734 get<0>(vecVsHistBins[iVsHistMod]),
735 get<1>(vecVsHistBins[iVsHistMod]).first,
736 get<1>(vecVsHistBins[iVsHistMod]).second,
737 get<0>(vecBaseHistBins[iHistRow]),
738 get<1>(vecBaseHistBins[iHistRow]).first,
739 get<1>(vecBaseHistBins[iHistRow]).second
747 for (
auto histRow1D : vecHist1D) {
748 for (
auto hist1D : histRow1D) {
753 for (
auto histRow2D : vecHist2D) {
754 for (
auto histType2D : histRow2D) {
755 for (
auto hist2D: histType2D) {
762 const int64_t nTrueEntries = tInTrue -> GetEntries();
763 const int64_t nRecoEntries = tInReco -> GetEntries();
764 cout <<
" Beginning truth particle loop: " << nTrueEntries <<
" to process" << endl;
767 int64_t nTrueBytes = 0;
768 for (int64_t iTrueEntry = 0; iTrueEntry < nTrueEntries; iTrueEntry++) {
771 const int64_t trueBytes = tInTrue ->
GetEntry(iTrueEntry);
773 cerr <<
"PANIC: issue with entry " << iTrueEntry <<
"! Aborting loop!\n" << endl;
776 nTrueBytes += trueBytes;
779 const int64_t iTrueProg = iTrueEntry + 1;
780 if (iTrueProg == nTrueEntries) {
781 cout <<
" Processing entry " << iTrueProg <<
"/" << nTrueEntries <<
"..." << endl;
783 cout <<
" Processing entry " << iTrueProg <<
"/" << nTrueEntries <<
"...\r" <<
flush;
787 if (isnan(tru_trackID))
continue;
790 const double tru_gntot = tru_gnintt + tru_gnmaps + tru_gntpc;
793 bool isNearSector =
false;
795 for (
size_t iSector = 0; iSector <
NSectors; iSector++) {
796 const float cutVal = sigCutVal * phiSectors[iSector].second;
797 const float minPhi = phiSectors[iSector].first - cutVal;
798 const float maxPhi = phiSectors[iSector].first + cutVal;
799 const bool isNear = ((tru_gphi >=
minPhi) && (tru_gphi <= maxPhi));
808 const bool isPrimary = (tru_gprimary == 1);
809 const bool isInZVtxCut = ((tru_gvz > zVtxRange.first) && (tru_gvz < zVtxRange.second));
810 if (useOnlyPrimTrks && !isPrimary)
continue;
811 if (doZVtxCut && !isInZVtxCut)
continue;
812 if (doPhiCut && isNearSector)
continue;
815 vecHist1D[Var::NTot][Type::Truth] ->
Fill(tru_gntot);
816 vecHist1D[Var::NIntt][Type::Truth] ->
Fill(tru_gnintt);
817 vecHist1D[Var::NMvtx][Type::Truth] ->
Fill(tru_gnmaps);
818 vecHist1D[Var::NTpc][Type::Truth] ->
Fill(tru_gntpc);
819 vecHist1D[Var::RTot][Type::Truth] ->
Fill(1.);
820 vecHist1D[Var::RIntt][Type::Truth] ->
Fill(1.);
821 vecHist1D[Var::RMvtx][Type::Truth] ->
Fill(1.);
822 vecHist1D[Var::RTpc][Type::Truth] ->
Fill(1.);
823 vecHist1D[Var::Phi][Type::Truth] ->
Fill(tru_gphi);
826 vecHist1D[Var::Frac][Type::Truth] ->
Fill(1.);
829 vecHist2D[Var::NTot][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_gpt, tru_gntot);
830 vecHist2D[Var::NIntt][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_gpt, tru_gnintt);
831 vecHist2D[Var::NMvtx][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_gpt, tru_gnmaps);
832 vecHist2D[Var::NTpc][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_gpt, tru_gntpc);
833 vecHist2D[Var::RTot][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_gpt, 1.);
834 vecHist2D[Var::RIntt][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_gpt, 1.);
835 vecHist2D[Var::RMvtx][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_gpt, 1.);
836 vecHist2D[Var::RTpc][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_gpt, 1.);
837 vecHist2D[Var::Phi][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_gpt, tru_gphi);
838 vecHist2D[
Var::Eta][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_gpt, tru_geta);
839 vecHist2D[
Var::Pt][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_gpt, tru_gpt);
840 vecHist2D[Var::Frac][Type::Truth][Comp::VsTruthPt] ->
Fill(tru_gpt, 1.);
842 vecHist2D[Var::NTot][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_gntpc, tru_gntot);
843 vecHist2D[Var::NIntt][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_gntpc, tru_gnintt);
844 vecHist2D[Var::NMvtx][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_gntpc, tru_gnmaps);
845 vecHist2D[Var::NTpc][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_gntpc, tru_gntpc);
846 vecHist2D[Var::RTot][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_gntpc, 1.);
847 vecHist2D[Var::RIntt][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_gntpc, 1.);
848 vecHist2D[Var::RMvtx][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_gntpc, 1.);
849 vecHist2D[Var::RTpc][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_gntpc, 1.);
850 vecHist2D[Var::Phi][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_gntpc, tru_gphi);
851 vecHist2D[
Var::Eta][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_gntpc, tru_geta);
852 vecHist2D[
Var::Pt][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_gntpc, tru_gpt);
853 vecHist2D[Var::Frac][Type::Truth][Comp::VsNumTpc] ->
Fill(tru_gntpc, 1.);
857 cout <<
" Finished truth particle loop.\n"
858 <<
" Beginning reconstructed track loop: " << nRecoEntries <<
" to process"
862 int64_t nRecoBytes = 0;
863 for (int64_t iRecoEntry = 0; iRecoEntry < nRecoEntries; iRecoEntry++) {
866 const int64_t recoBytes = tInReco ->
GetEntry(iRecoEntry);
868 cerr <<
"PANIC: issue with entry " << iRecoEntry <<
"! Aborting loop!\n" << endl;
871 nRecoBytes += recoBytes;
874 const int64_t iRecoProg = iRecoEntry + 1;
875 if (iRecoProg == nRecoEntries) {
876 cout <<
" Processing entry " << iRecoProg <<
"/" << nRecoEntries <<
"..." << endl;
878 cout <<
" Processing entry " << iRecoProg <<
"/" << nRecoEntries <<
"...\r" <<
flush;
882 if (isnan(rec_gpt))
continue;
885 const double rec_ntot = rec_nintt + rec_nmaps + rec_ntpc;
886 const double rec_gntot = rec_gnintt + rec_gnmaps + rec_gntpc;
887 const double rec_rtot = rec_ntot / rec_gntot;
888 const double rec_rintt = rec_nintt / rec_gnintt;
889 const double rec_rmaps = rec_nmaps / rec_gnmaps;
890 const double rec_rtpc = rec_ntpc / rec_gntpc;
891 const double rec_ptfrac = rec_pt / rec_gpt;
894 bool isNearSector =
false;
896 for (
size_t iSector = 0; iSector <
NSectors; iSector++) {
897 const float cutVal = sigCutVal * phiSectors[iSector].second;
898 const float minPhi = phiSectors[iSector].first - cutVal;
899 const float maxPhi = phiSectors[iSector].first + cutVal;
900 const bool isNear = ((rec_phi >=
minPhi) && (rec_phi <= maxPhi));
909 const bool isPrimary = (rec_gprimary == 1);
910 const bool isInZVtxCut = ((rec_gvz > zVtxRange.first) && (rec_gvz < zVtxRange.second));
911 if (useOnlyPrimTrks && !isPrimary)
continue;
912 if (doZVtxCut && !isInZVtxCut)
continue;
913 if (doPhiCut && isNearSector)
continue;
930 vecHist2D[Var::NTot][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_ntot);
931 vecHist2D[Var::NIntt][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_nintt);
932 vecHist2D[Var::NMvtx][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_nmaps);
933 vecHist2D[Var::NTpc][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_ntpc);
934 vecHist2D[Var::RTot][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_rtot);
935 vecHist2D[Var::RIntt][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_rintt);
936 vecHist2D[Var::RMvtx][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_rmaps);
937 vecHist2D[Var::RTpc][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_rtpc);
938 vecHist2D[Var::Phi][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_phi);
941 vecHist2D[Var::Frac][
Type::Track][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_ptfrac);
943 vecHist2D[Var::NTot][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_ntot);
944 vecHist2D[Var::NIntt][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_nintt);
945 vecHist2D[Var::NMvtx][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_nmaps);
946 vecHist2D[Var::NTpc][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_ntpc);
947 vecHist2D[Var::RTot][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_rtpc);
948 vecHist2D[Var::RIntt][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_rintt);
949 vecHist2D[Var::RMvtx][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_rmaps);
950 vecHist2D[Var::RTpc][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_rtpc);
951 vecHist2D[Var::Phi][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_phi);
954 vecHist2D[Var::Frac][
Type::Track][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_ptfrac);
957 const bool isNormalTrack = ((rec_ptfrac >= oddPtFrac.first) && (rec_ptfrac <= oddPtFrac.second));
959 vecHist1D[Var::NTot][Type::Normal] ->
Fill(rec_ntot);
960 vecHist1D[Var::NIntt][Type::Normal] ->
Fill(rec_nintt);
961 vecHist1D[Var::NMvtx][Type::Normal] ->
Fill(rec_nmaps);
962 vecHist1D[Var::NTpc][Type::Normal] ->
Fill(rec_ntpc);
963 vecHist1D[Var::RTot][Type::Normal] ->
Fill(rec_rtot);
964 vecHist1D[Var::RIntt][Type::Normal] ->
Fill(rec_rintt);
965 vecHist1D[Var::RMvtx][Type::Normal] ->
Fill(rec_rmaps);
966 vecHist1D[Var::RTpc][Type::Normal] ->
Fill(rec_rtpc);
967 vecHist1D[Var::Phi][Type::Normal] ->
Fill(rec_phi);
970 vecHist1D[Var::Frac][Type::Normal] ->
Fill(rec_ptfrac);
972 vecHist2D[Var::NTot][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_ntot);
973 vecHist2D[Var::NIntt][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_nintt);
974 vecHist2D[Var::NMvtx][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_nmaps);
975 vecHist2D[Var::NTpc][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_ntpc);
976 vecHist2D[Var::RTot][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_rtot);
977 vecHist2D[Var::RIntt][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_rintt);
978 vecHist2D[Var::RMvtx][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_rmaps);
979 vecHist2D[Var::RTpc][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_rtpc);
980 vecHist2D[Var::Phi][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_phi);
981 vecHist2D[
Var::Eta][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_eta);
982 vecHist2D[
Var::Pt][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_pt);
983 vecHist2D[Var::Frac][Type::Normal][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_ptfrac);
985 vecHist2D[Var::NTot][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_ntot);
986 vecHist2D[Var::NIntt][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_nintt);
987 vecHist2D[Var::NMvtx][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_nmaps);
988 vecHist2D[Var::NTpc][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_ntpc);
989 vecHist2D[Var::RTot][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_rtot);
990 vecHist2D[Var::RIntt][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_rintt);
991 vecHist2D[Var::RMvtx][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_rmaps);
992 vecHist2D[Var::RTpc][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_rtpc);
993 vecHist2D[Var::Phi][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_phi);
994 vecHist2D[
Var::Eta][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_eta);
995 vecHist2D[
Var::Pt][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_pt);
996 vecHist2D[Var::Frac][Type::Normal][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_ptfrac);
998 vecHist1D[Var::NTot][Type::Weird] ->
Fill(rec_ntot);
999 vecHist1D[Var::NIntt][Type::Weird] ->
Fill(rec_nintt);
1000 vecHist1D[Var::NMvtx][Type::Weird] ->
Fill(rec_nmaps);
1001 vecHist1D[Var::NTpc][Type::Weird] ->
Fill(rec_ntpc);
1002 vecHist1D[Var::RTot][Type::Weird] ->
Fill(rec_rtot);
1003 vecHist1D[Var::RIntt][Type::Weird] ->
Fill(rec_rintt);
1004 vecHist1D[Var::RMvtx][Type::Weird] ->
Fill(rec_rmaps);
1005 vecHist1D[Var::RTpc][Type::Weird] ->
Fill(rec_rtpc);
1006 vecHist1D[Var::Phi][Type::Weird] ->
Fill(rec_phi);
1009 vecHist1D[Var::Frac][Type::Weird] ->
Fill(rec_ptfrac);
1011 vecHist2D[Var::NTot][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_ntot);
1012 vecHist2D[Var::NIntt][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_nintt);
1013 vecHist2D[Var::NMvtx][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_nmaps);
1014 vecHist2D[Var::NTpc][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_ntpc);
1015 vecHist2D[Var::RTot][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_rtot);
1016 vecHist2D[Var::RIntt][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_rintt);
1017 vecHist2D[Var::RMvtx][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_rmaps);
1018 vecHist2D[Var::RTpc][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_rtpc);
1019 vecHist2D[Var::Phi][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_phi);
1020 vecHist2D[
Var::Eta][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_eta);
1021 vecHist2D[
Var::Pt][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_pt);
1022 vecHist2D[Var::Frac][Type::Weird][Comp::VsTruthPt] ->
Fill(rec_gpt, rec_ptfrac);
1024 vecHist2D[Var::NTot][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_ntot);
1025 vecHist2D[Var::NIntt][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_nintt);
1026 vecHist2D[Var::NMvtx][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_nmaps);
1027 vecHist2D[Var::NTpc][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_ntpc);
1028 vecHist2D[Var::RTot][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_rtpc);
1029 vecHist2D[Var::RIntt][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_rintt);
1030 vecHist2D[Var::RMvtx][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_rmaps);
1031 vecHist2D[Var::RTpc][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_rtpc);
1032 vecHist2D[Var::Phi][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_phi);
1033 vecHist2D[
Var::Eta][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_eta);
1034 vecHist2D[
Var::Pt][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_pt);
1035 vecHist2D[Var::Frac][Type::Weird][Comp::VsNumTpc] ->
Fill(rec_gntpc, rec_ptfrac);
1038 cout <<
" Finished reconstructed track loop." << endl;
1042 for (
auto histRow1D : vecHist1D) {
1043 for (
auto hist1D : histRow1D) {
1052 for (
auto histRow2D : vecHist2D) {
1053 for (
auto histType2D : histRow2D) {
1055 for (
auto hist2D : histType2D) {
1064 cout <<
" Set axis titles." << endl;
1068 for (
auto histRow1D : vecHist1D) {
1069 for (
auto hist1D : histRow1D) {
1073 for (
auto histRow2D : vecHist2D) {
1074 for (
auto histType2D : histRow2D) {
1075 for (
auto hist2D: histType2D) {
1080 cout <<
" Saved histograms." << endl;
1087 cout <<
" Finished old evaluator plot script!\n" << endl;