Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
STrackCutStudy.hist.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file STrackCutStudy.hist.h
1 // ----------------------------------------------------------------------------
2 // 'STrackCutStudy.hist.h'
3 // Derek Anderson
4 // 03.14.2022
5 //
6 // Reads in the 'ntp_track' Ntuple
7 // generated by the SVtxEvaluator
8 // class and studies the impact
9 // of cutting on various quantities.
10 // ----------------------------------------------------------------------------
11 
12 #pragma once
13 
14 using namespace std;
15 
16 
17 
18 // histogram methods ----------------------------------------------------------
19 
21 
22  // histogram binning
23  const UInt_t nNHitBins(100);
24  const UInt_t nQualBins(40);
25  const UInt_t nDcaBins(2000);
26  const UInt_t nEtaBins(400);
27  const UInt_t nPhiBins(60);
28  const UInt_t nPtBins(100);
29  const UInt_t nFracBins(100);
30  const UInt_t nPtFracBins(500);
31  const UInt_t nDiffBins(2000);
32  const UInt_t nErrBins(5000);
33  const UInt_t nXYVtxBins(1000);
34  const UInt_t nZVtxBins(1200);
35  const UInt_t nDVtxBins(2400);
36  const Float_t rNHitBins[NRange] = {0, 100};
37  const Float_t rQualBins[NRange] = {0., 20.};
38  const Float_t rDcaBins[NRange] = {-100., 100.};
39  const Float_t rEtaBins[NRange] = {-2., 2.};
40  const Float_t rPhiBins[NRange] = {-3.15, 3.15};
41  const Float_t rPtBins[NRange] = {0., 100.};
42  const Float_t rFracBins[NRange] = {0., 5.};
43  const Float_t rPtFracBins[NRange] = {0., 5.};
44  const Float_t rDiffBins[NRange] = {-100., 100.};
45  const Float_t rErrBins[NRange] = {0., 100.};
46  const Float_t rXYVtxBins[NRange] = {-1., 1.};
47  const Float_t rZVtxBins[NRange] = {-300., 300.};
48  const Float_t rDVtxBins[NRange] = {-600., 600.};
49 
50  // for track-variable histogram names
51  TString sTrkVar[NType][NTrkVar];
52  TString sTrkVarDiff[NType][NTrkVar];
53  TString sTrkVarFrac[NType][NTrkVar];
54  TString sTrkVarVsNTpc[NType][NTrkVar];
55  TString sTrkVarVsDcaXY[NType][NTrkVar];
56  TString sTrkVarVsDcaZ[NType][NTrkVar];
57  TString sTrkVarVsPtReco[NType][NTrkVar];
58  TString sTrkVarVsPtTrue[NType][NTrkVar];
59  TString sTrkVarVsPtFrac[NType][NTrkVar];
60 
61  // for physics-variable histogram names
62  TString sPhysVar[NType][NPhysVar];
63  TString sPhysVarDiff[NType][NPhysVar];
64  TString sPhysVarFrac[NType][NPhysVar];
65  TString sPhysVarVsNTpc[NType][NPhysVar];
66  TString sPhysVarVsDcaXY[NType][NPhysVar];
67  TString sPhysVarVsDcaZ[NType][NPhysVar];
68  TString sPhysVarVsPtReco[NType][NPhysVar];
69  TString sPhysVarVsPtTrue[NType][NPhysVar];
70  TString sPhysVarVsPtFrac[NType][NPhysVar];
71 
72  // form histogram names
73  const TString sDiffSuffix("Diff");
74  const TString sFracSuffix("Frac");
75  const TString sVsNTpcSuffix("VsNTpc");
76  const TString sVsDcaXySuffix("VsDcaXY");
77  const TString sVsDcaZSuffix("VsDcaZ");
78  const TString sVsPtRecoSuffix("VsPtReco");
79  const TString sVsPtTrueSuffix("VsPtTrue");
80  const TString sVsPtFracSuffix("VsPtFrac");
81 
82  // construct variable prefixes
83  TString sTrkVarName[NTrkVar];
84  TString sPhysVarName[NPhysVar];
85  for (size_t iTrkVar = 0; iTrkVar < NTrkVar; iTrkVar++) {
86  sTrkVarName[iTrkVar] = "h";
87  sTrkVarName[iTrkVar].Append(sTrkVars[iTrkVar].Data());
88  }
89  for (size_t iPhysVar = 0; iPhysVar < NPhysVar; iPhysVar++) {
90  sPhysVarName[iPhysVar] = "h";
91  sPhysVarName[iPhysVar].Append(sPhysVars[iPhysVar].Data());
92  }
93 
94  // construct type suffixes
95  TString sTypeSuffix[NType];
96  for (size_t iType = 0; iType < NType; iType++) {
97  sTypeSuffix[iType] = "_";
98  sTypeSuffix[iType].Append(sTrkNames[iType].Data());
99  }
100 
101  for (size_t iType = 0; iType < NType; iType++) {
102  for (size_t iTrkVar = 0; iTrkVar < NTrkVar; iTrkVar++) {
103  sTrkVar[iType][iTrkVar] = sTrkVarName[iTrkVar].Data();
104  sTrkVarDiff[iType][iTrkVar] = sTrkVarName[iTrkVar].Data();
105  sTrkVarFrac[iType][iTrkVar] = sTrkVarName[iTrkVar].Data();
106  sTrkVarVsNTpc[iType][iTrkVar] = sTrkVarName[iTrkVar].Data();
107  sTrkVarVsDcaXY[iType][iTrkVar] = sTrkVarName[iTrkVar].Data();
108  sTrkVarVsDcaZ[iType][iTrkVar] = sTrkVarName[iTrkVar].Data();
109  sTrkVarVsPtReco[iType][iTrkVar] = sTrkVarName[iTrkVar].Data();
110  sTrkVarVsPtTrue[iType][iTrkVar] = sTrkVarName[iTrkVar].Data();
111  sTrkVarVsPtFrac[iType][iTrkVar] = sTrkVarName[iTrkVar].Data();
112  sTrkVarDiff[iType][iTrkVar].Append(sDiffSuffix.Data());
113  sTrkVarFrac[iType][iTrkVar].Append(sFracSuffix.Data());
114  sTrkVarVsNTpc[iType][iTrkVar].Append(sVsNTpcSuffix.Data());
115  sTrkVarVsDcaXY[iType][iTrkVar].Append(sVsDcaXySuffix.Data());
116  sTrkVarVsDcaZ[iType][iTrkVar].Append(sVsDcaZSuffix.Data());
117  sTrkVarVsPtReco[iType][iTrkVar].Append(sVsPtRecoSuffix.Data());
118  sTrkVarVsPtTrue[iType][iTrkVar].Append(sVsPtTrueSuffix.Data());
119  sTrkVarVsPtFrac[iType][iTrkVar].Append(sVsPtFracSuffix.Data());
120  sTrkVar[iType][iTrkVar].Append(sTypeSuffix[iType].Data());
121  sTrkVarDiff[iType][iTrkVar].Append(sTypeSuffix[iType].Data());
122  sTrkVarFrac[iType][iTrkVar].Append(sTypeSuffix[iType].Data());
123  sTrkVarVsNTpc[iType][iTrkVar].Append(sTypeSuffix[iType].Data());
124  sTrkVarVsDcaXY[iType][iTrkVar].Append(sTypeSuffix[iType].Data());
125  sTrkVarVsDcaZ[iType][iTrkVar].Append(sTypeSuffix[iType].Data());
126  sTrkVarVsPtReco[iType][iTrkVar].Append(sTypeSuffix[iType].Data());
127  sTrkVarVsPtTrue[iType][iTrkVar].Append(sTypeSuffix[iType].Data());
128  sTrkVarVsPtFrac[iType][iTrkVar].Append(sTypeSuffix[iType].Data());
129  }
130  for (size_t iPhysVar = 0; iPhysVar < NPhysVar; iPhysVar++) {
131  sPhysVar[iType][iPhysVar] = sPhysVarName[iPhysVar].Data();
132  sPhysVarDiff[iType][iPhysVar] = sPhysVarName[iPhysVar].Data();
133  sPhysVarFrac[iType][iPhysVar] = sPhysVarName[iPhysVar].Data();
134  sPhysVarVsNTpc[iType][iPhysVar] = sPhysVarName[iPhysVar].Data();
135  sPhysVarVsDcaXY[iType][iPhysVar] = sPhysVarName[iPhysVar].Data();
136  sPhysVarVsDcaZ[iType][iPhysVar] = sPhysVarName[iPhysVar].Data();
137  sPhysVarVsPtReco[iType][iPhysVar] = sPhysVarName[iPhysVar].Data();
138  sPhysVarVsPtTrue[iType][iPhysVar] = sPhysVarName[iPhysVar].Data();
139  sPhysVarVsPtFrac[iType][iPhysVar] = sPhysVarName[iPhysVar].Data();
140  sPhysVarDiff[iType][iPhysVar].Append(sDiffSuffix.Data());
141  sPhysVarFrac[iType][iPhysVar].Append(sFracSuffix.Data());
142  sPhysVarVsNTpc[iType][iPhysVar].Append(sVsNTpcSuffix.Data());
143  sPhysVarVsDcaXY[iType][iPhysVar].Append(sVsDcaXySuffix.Data());
144  sPhysVarVsDcaZ[iType][iPhysVar].Append(sVsDcaZSuffix.Data());
145  sPhysVarVsPtReco[iType][iPhysVar].Append(sVsPtRecoSuffix.Data());
146  sPhysVarVsPtTrue[iType][iPhysVar].Append(sVsPtTrueSuffix.Data());
147  sPhysVarVsPtFrac[iType][iPhysVar].Append(sVsPtFracSuffix.Data());
148  sPhysVar[iType][iPhysVar].Append(sTypeSuffix[iType].Data());
149  sPhysVarDiff[iType][iPhysVar].Append(sTypeSuffix[iType].Data());
150  sPhysVarFrac[iType][iPhysVar].Append(sTypeSuffix[iType].Data());
151  sPhysVarVsNTpc[iType][iPhysVar].Append(sTypeSuffix[iType].Data());
152  sPhysVarVsDcaXY[iType][iPhysVar].Append(sTypeSuffix[iType].Data());
153  sPhysVarVsDcaZ[iType][iPhysVar].Append(sTypeSuffix[iType].Data());
154  sPhysVarVsPtReco[iType][iPhysVar].Append(sTypeSuffix[iType].Data());
155  sPhysVarVsPtTrue[iType][iPhysVar].Append(sTypeSuffix[iType].Data());
156  sPhysVarVsPtFrac[iType][iPhysVar].Append(sTypeSuffix[iType].Data());
157  }
158  } // end type loop
159 
160  // no. of track bins
161  const UInt_t nTrkBins[NTrkVar] = {nXYVtxBins, nXYVtxBins, nZVtxBins, nNHitBins, nNHitBins, nNHitBins, nNHitBins, nQualBins, nDcaBins, nDcaBins,
162  nErrBins, nErrBins, nNHitBins, nNHitBins};
163  const UInt_t nTrkDiffBins[NTrkVar] = {nDVtxBins, nDVtxBins, nDVtxBins, nDiffBins, nDiffBins, nDiffBins, nDiffBins, nDiffBins, nDiffBins, nDiffBins,
164  nDiffBins, nDiffBins, nDiffBins, nDiffBins};
165  const UInt_t nTrkFracBins[NTrkVar] = {nFracBins, nFracBins, nFracBins, nFracBins, nFracBins, nFracBins, nFracBins, nFracBins, nFracBins, nFracBins,
166  nFracBins, nFracBins, nFracBins, nFracBins};
167 
168  // no. of physics bins
169  const UInt_t nPhysBins[NPhysVar] = {nPhiBins, nEtaBins, nPtBins, nErrBins, nErrBins, nErrBins};
170  const UInt_t nPhysDiffBins[NPhysVar] = {nDiffBins, nDiffBins, nDiffBins, nDiffBins, nDiffBins, nDiffBins};
171  const UInt_t nPhysFracBins[NPhysVar] = {nFracBins, nFracBins, nPtFracBins, nFracBins, nFracBins, nFracBins};
172 
173  // track axis ranges
174  const Float_t rTrkBins[NTrkVar][NRange] = {{rXYVtxBins[0], rXYVtxBins[1]}, {rXYVtxBins[0], rXYVtxBins[1]}, {rZVtxBins[0], rZVtxBins[1]},
175  {rNHitBins[0], rNHitBins[1]}, {rNHitBins[0], rNHitBins[1]}, {rNHitBins[0], rNHitBins[1]},
176  {rNHitBins[0], rNHitBins[1]}, {rQualBins[0], rQualBins[1]}, {rDcaBins[0], rDcaBins[1]},
177  {rDcaBins[0], rDcaBins[1]}, {rErrBins[0], rErrBins[1]}, {rErrBins[0], rErrBins[1]},
178  {rNHitBins[0], rNHitBins[1]}, {rNHitBins[0], rNHitBins[1]}};
179  const Float_t rTrkDiffBins[NTrkVar][NRange] = {{rDVtxBins[0], rDVtxBins[1]}, {rDVtxBins[0], rDVtxBins[1]}, {rDiffBins[0], rDiffBins[1]},
180  {rDiffBins[0], rDiffBins[1]}, {rDiffBins[0], rDiffBins[1]}, {rDiffBins[0], rDiffBins[1]},
181  {rDiffBins[0], rDiffBins[1]}, {rDiffBins[0], rDiffBins[1]}, {rDiffBins[0], rDiffBins[1]},
182  {rDiffBins[0], rDiffBins[1]}, {rDiffBins[0], rDiffBins[1]}, {rDiffBins[0], rDiffBins[1]},
183  {rDiffBins[0], rDiffBins[1]}, {rDiffBins[0], rDiffBins[1]}};
184  const Float_t rTrkFracBins[NTrkVar][NRange] = {{rFracBins[0], rFracBins[1]}, {rFracBins[0], rFracBins[1]}, {rFracBins[0], rFracBins[1]},
185  {rFracBins[0], rFracBins[1]}, {rFracBins[0], rFracBins[1]}, {rFracBins[0], rFracBins[1]},
186  {rFracBins[0], rFracBins[1]}, {rFracBins[0], rFracBins[1]}, {rFracBins[0], rFracBins[1]},
187  {rFracBins[0], rFracBins[1]}, {rFracBins[0], rFracBins[1]}, {rFracBins[0], rFracBins[1]},
188  {rFracBins[0], rFracBins[1]}, {rFracBins[0], rFracBins[1]}};
189 
190  // physics axis ranges
191  const Float_t rPhysBins[NPhysVar][NRange] = {{rPhiBins[0], rPhiBins[1]}, {rEtaBins[0], rEtaBins[1]}, {rPtBins[0], rPtBins[1]},
192  {rErrBins[0], rErrBins[1]}, {rErrBins[0], rErrBins[1]}, {rErrBins[0], rErrBins[1]}};
193  const Float_t rPhysDiffBins[NPhysVar][NRange] = {{rDiffBins[0], rDiffBins[1]}, {rDiffBins[0], rDiffBins[1]}, {rDiffBins[0], rDiffBins[1]},
194  {rDiffBins[0], rDiffBins[1]}, {rDiffBins[0], rDiffBins[1]}, {rDiffBins[0], rDiffBins[1]}};
195  const Float_t rPhysFracBins[NPhysVar][NRange] = {{rFracBins[0], rFracBins[1]}, {rFracBins[0], rFracBins[1]}, {rPtFracBins[0], rPtFracBins[1]},
196  {rFracBins[0], rFracBins[1]}, {rFracBins[0], rFracBins[1]}, {rPtFracBins[0], rPtFracBins[1]}};
197 
198  // initialize histograms
199  for (int iType = 0; iType < NType; iType++) {
200 
201  // check if histograms should be initialized
202  if (isBeforeCuts[iType] || isPileup[iType]) {
203  if (isBeforeCuts[iType] && !doBeforeCuts) continue;
204  if (isPileup[iType] && !doPileup) continue;
205  }
206 
207  for (size_t iTrkVar = 0; iTrkVar < NTrkVar; iTrkVar++) {
208  hTrkVar[iType][iTrkVar] = new TH1D(sTrkVar[iType][iTrkVar].Data(), "", nTrkBins[iTrkVar], rTrkBins[iTrkVar][0], rTrkBins[iTrkVar][1]);
209  hTrkVarDiff[iType][iTrkVar] = new TH1D(sTrkVarDiff[iType][iTrkVar].Data(), "", nTrkDiffBins[iTrkVar], rTrkDiffBins[iTrkVar][0], rTrkDiffBins[iTrkVar][1]);
210  hTrkVarFrac[iType][iTrkVar] = new TH1D(sTrkVarFrac[iType][iTrkVar].Data(), "", nTrkFracBins[iTrkVar], rTrkFracBins[iTrkVar][0], rTrkFracBins[iTrkVar][1]);
211  hTrkVarVsNTpc[iType][iTrkVar] = new TH2D(sTrkVarVsNTpc[iType][iTrkVar].Data(), "", nNHitBins, rNHitBins[0], rNHitBins[1], nTrkBins[iTrkVar], rTrkBins[iTrkVar][0], rTrkBins[iTrkVar][1]);
212  hTrkVarVsDcaXY[iType][iTrkVar] = new TH2D(sTrkVarVsDcaXY[iType][iTrkVar].Data(), "", nDcaBins, rDcaBins[0], rDcaBins[1], nTrkBins[iTrkVar], rTrkBins[iTrkVar][0], rTrkBins[iTrkVar][1]);
213  hTrkVarVsDcaZ[iType][iTrkVar] = new TH2D(sTrkVarVsDcaZ[iType][iTrkVar].Data(), "", nDcaBins, rDcaBins[0], rDcaBins[1], nTrkBins[iTrkVar], rTrkBins[iTrkVar][0], rTrkBins[iTrkVar][1]);
214  hTrkVarVsPtReco[iType][iTrkVar] = new TH2D(sTrkVarVsPtReco[iType][iTrkVar].Data(), "", nPtBins, rPtBins[0], rPtBins[1], nTrkBins[iTrkVar], rTrkBins[iTrkVar][0], rTrkBins[iTrkVar][1]);
215  hTrkVarVsPtTrue[iType][iTrkVar] = new TH2D(sTrkVarVsPtTrue[iType][iTrkVar].Data(), "", nPtBins, rPtBins[0], rPtBins[1], nTrkBins[iTrkVar], rTrkBins[iTrkVar][0], rTrkBins[iTrkVar][1]);
216  hTrkVarVsPtFrac[iType][iTrkVar] = new TH2D(sTrkVarVsPtFrac[iType][iTrkVar].Data(), "", nPtFracBins, rPtFracBins[0], rPtFracBins[1], nTrkBins[iTrkVar], rTrkBins[iTrkVar][0], rTrkBins[iTrkVar][1]);
217  hTrkVar[iType][iTrkVar] -> Sumw2();
218  hTrkVarDiff[iType][iTrkVar] -> Sumw2();
219  hTrkVarFrac[iType][iTrkVar] -> Sumw2();
220  hTrkVarVsNTpc[iType][iTrkVar] -> Sumw2();
221  hTrkVarVsDcaXY[iType][iTrkVar] -> Sumw2();
222  hTrkVarVsDcaZ[iType][iTrkVar] -> Sumw2();
223  hTrkVarVsPtReco[iType][iTrkVar] -> Sumw2();
224  hTrkVarVsPtTrue[iType][iTrkVar] -> Sumw2();
225  hTrkVarVsPtFrac[iType][iTrkVar] -> Sumw2();
226  }
227  for (size_t iPhysVar = 0; iPhysVar < NPhysVar; iPhysVar++) {
228  hPhysVar[iType][iPhysVar] = new TH1D(sPhysVar[iType][iPhysVar].Data(), "", nPhysBins[iPhysVar], rPhysBins[iPhysVar][0], rPhysBins[iPhysVar][1]);
229  hPhysVarDiff[iType][iPhysVar] = new TH1D(sPhysVarDiff[iType][iPhysVar].Data(), "", nPhysDiffBins[iPhysVar], rPhysDiffBins[iPhysVar][0], rPhysDiffBins[iPhysVar][1]);
230  hPhysVarFrac[iType][iPhysVar] = new TH1D(sPhysVarFrac[iType][iPhysVar].Data(), "", nPhysFracBins[iPhysVar], rPhysFracBins[iPhysVar][0], rPhysFracBins[iPhysVar][1]);
231  hPhysVarVsNTpc[iType][iPhysVar] = new TH2D(sPhysVarVsNTpc[iType][iPhysVar].Data(), "", nNHitBins, rNHitBins[0], rNHitBins[1], nPhysBins[iPhysVar], rPhysBins[iPhysVar][0], rPhysBins[iPhysVar][1]);
232  hPhysVarVsDcaXY[iType][iPhysVar] = new TH2D(sPhysVarVsDcaXY[iType][iPhysVar].Data(), "", nDcaBins, rDcaBins[0], rDcaBins[1], nPhysBins[iPhysVar], rPhysBins[iPhysVar][0], rPhysBins[iPhysVar][1]);
233  hPhysVarVsDcaZ[iType][iPhysVar] = new TH2D(sPhysVarVsDcaZ[iType][iPhysVar].Data(), "", nDcaBins, rDcaBins[0], rDcaBins[1], nPhysBins[iPhysVar], rPhysBins[iPhysVar][0], rPhysBins[iPhysVar][1]);
234  hPhysVarVsPtReco[iType][iPhysVar] = new TH2D(sPhysVarVsPtReco[iType][iPhysVar].Data(), "", nPtBins, rPtBins[0], rPtBins[1], nPhysBins[iPhysVar], rPhysBins[iPhysVar][0], rPhysBins[iPhysVar][1]);
235  hPhysVarVsPtTrue[iType][iPhysVar] = new TH2D(sPhysVarVsPtTrue[iType][iPhysVar].Data(), "", nPtBins, rPtBins[0], rPtBins[1], nPhysBins[iPhysVar], rPhysBins[iPhysVar][0], rPhysBins[iPhysVar][1]);
236  hPhysVarVsPtFrac[iType][iPhysVar] = new TH2D(sPhysVarVsPtFrac[iType][iPhysVar].Data(), "", nPtFracBins, rPtFracBins[0], rPtFracBins[1], nPhysBins[iPhysVar], rPhysBins[iPhysVar][0], rPhysBins[iPhysVar][1]);
237  hPhysVar[iType][iPhysVar] -> Sumw2();
238  hPhysVarDiff[iType][iPhysVar] -> Sumw2();
239  hPhysVarFrac[iType][iPhysVar] -> Sumw2();
240  hPhysVarVsNTpc[iType][iPhysVar] -> Sumw2();
241  hPhysVarVsDcaXY[iType][iPhysVar] -> Sumw2();
242  hPhysVarVsDcaZ[iType][iPhysVar] -> Sumw2();
243  hPhysVarVsPtReco[iType][iPhysVar] -> Sumw2();
244  hPhysVarVsPtTrue[iType][iPhysVar] -> Sumw2();
245  hPhysVarVsPtFrac[iType][iPhysVar] -> Sumw2();
246  }
247  }
248  cout << " Initialized output histograms." << endl;
249  return;
250 
251 } // end 'InitHits()'
252 
253 
254 
256 
257  for (int iType = 0; iType < NType; iType++) {
258 
259  // check if histograms should be normalized
260  if (isBeforeCuts[iType] || isPileup[iType]) {
261  if (isBeforeCuts[iType] && !doBeforeCuts) continue;
262  if (isPileup[iType] && !doPileup) continue;
263  }
264 
265  for (size_t iTrkVar = 0; iTrkVar < NTrkVar; iTrkVar++) {
266  const Double_t intTrkVar = hTrkVar[iType][iTrkVar] -> Integral();
267  const Double_t intTrkVarDiff = hTrkVarDiff[iType][iTrkVar] -> Integral();
268  const Double_t intTrkVarFrac = hTrkVarFrac[iType][iTrkVar] -> Integral();
269  const Double_t intTrkVarVsNTpc = hTrkVarVsNTpc[iType][iTrkVar] -> Integral();
270  const Double_t intTrkVarVsDcaXY = hTrkVarVsDcaXY[iType][iTrkVar] -> Integral();
271  const Double_t intTrkVarVsDcaZ = hTrkVarVsDcaZ[iType][iTrkVar] -> Integral();
272  const Double_t intTrkVarVsPtReco = hTrkVarVsPtReco[iType][iTrkVar] -> Integral();
273  const Double_t intTrkVarVsPtTrue = hTrkVarVsPtTrue[iType][iTrkVar] -> Integral();
274  const Double_t intTrkVarVsPtFrac = hTrkVarVsPtFrac[iType][iTrkVar] -> Integral();
275  if (intTrkVar > 0.) hTrkVar[iType][iTrkVar] -> Scale(1. / intTrkVar);
276  if (intTrkVarDiff > 0.) hTrkVarDiff[iType][iTrkVar] -> Scale(1. / intTrkVarDiff);
277  if (intTrkVarFrac > 0.) hTrkVarFrac[iType][iTrkVar] -> Scale(1. / intTrkVarFrac);
278  if (intTrkVarVsNTpc > 0.) hTrkVarVsNTpc[iType][iTrkVar] -> Scale(1. / intTrkVarVsNTpc);
279  if (intTrkVarVsDcaXY > 0.) hTrkVarVsDcaXY[iType][iTrkVar] -> Scale(1. / intTrkVarVsDcaXY);
280  if (intTrkVarVsDcaZ > 0.) hTrkVarVsDcaZ[iType][iTrkVar] -> Scale(1. / intTrkVarVsDcaZ);
281  if (intTrkVarVsPtReco > 0.) hTrkVarVsPtReco[iType][iTrkVar] -> Scale(1. / intTrkVarVsPtReco);
282  if (intTrkVarVsPtTrue > 0.) hTrkVarVsPtTrue[iType][iTrkVar] -> Scale(1. / intTrkVarVsPtTrue);
283  if (intTrkVarVsPtFrac > 0.) hTrkVarVsPtFrac[iType][iTrkVar] -> Scale(1. / intTrkVarVsPtFrac);
284  }
285  for (size_t iPhysVar = 0; iPhysVar < NPhysVar; iPhysVar++) {
286  const Double_t intPhysVar = hPhysVar[iType][iPhysVar] -> Integral();
287  const Double_t intPhysVarDiff = hPhysVarDiff[iType][iPhysVar] -> Integral();
288  const Double_t intPhysVarFrac = hPhysVarFrac[iType][iPhysVar] -> Integral();
289  const Double_t intPhysVarVsNTpc = hPhysVarVsNTpc[iType][iPhysVar] -> Integral();
290  const Double_t intPhysVarVsDcaXY = hPhysVarVsDcaXY[iType][iPhysVar] -> Integral();
291  const Double_t intPhysVarVsDcaZ = hPhysVarVsDcaZ[iType][iPhysVar] -> Integral();
292  const Double_t intPhysVarVsPtReco = hPhysVarVsPtReco[iType][iPhysVar] -> Integral();
293  const Double_t intPhysVarVsPtTrue = hPhysVarVsPtTrue[iType][iPhysVar] -> Integral();
294  const Double_t intPhysVarVsPtFrac = hPhysVarVsPtFrac[iType][iPhysVar] -> Integral();
295  if (intPhysVar > 0.) hPhysVar[iType][iPhysVar] -> Scale(1. / intPhysVar);
296  if (intPhysVarDiff > 0.) hPhysVarDiff[iType][iPhysVar] -> Scale(1. / intPhysVarDiff);
297  if (intPhysVarFrac > 0.) hPhysVarFrac[iType][iPhysVar] -> Scale(1. / intPhysVarFrac);
298  if (intPhysVarVsNTpc > 0.) hPhysVarVsNTpc[iType][iPhysVar] -> Scale(1. / intPhysVarVsNTpc);
299  if (intPhysVarVsDcaXY > 0.) hPhysVarVsDcaXY[iType][iPhysVar] -> Scale(1. / intPhysVarVsDcaXY);
300  if (intPhysVarVsDcaZ > 0.) hPhysVarVsDcaZ[iType][iPhysVar] -> Scale(1. / intPhysVarVsDcaZ);
301  if (intPhysVarVsPtReco > 0.) hPhysVarVsPtReco[iType][iPhysVar] -> Scale(1. / intPhysVarVsPtReco);
302  if (intPhysVarVsPtTrue > 0.) hPhysVarVsPtTrue[iType][iPhysVar] -> Scale(1. / intPhysVarVsPtTrue);
303  if (intPhysVarVsPtFrac > 0.) hPhysVarVsPtFrac[iType][iPhysVar] -> Scale(1. / intPhysVarVsPtFrac);
304  }
305  }
306  cout << " Normalized histograms." << endl;
307  return;
308 
309 } // end 'NormalizeHists()'
310 
311 
312 
314 
315  // plot parameters
316  const UInt_t fFil(0);
317  const UInt_t fLin(1);
318  const UInt_t fMar2D(1);
319  const Float_t fOffX(1.0);
320  const Float_t fOffY(1.2);
321  const Float_t fOffZ(1.0);
322 
323  // select count label to use
324  TString sCountToUse("");
325  if (doIntNorm) {
326  sCountToUse = "arbitrary units";
327  } else {
328  sCountToUse = "counts";
329  }
330 
331  // track axis titles
332  const TString sTrkNMms("N_{layer}^{MMS}");
333  const TString sTrkNMap("N_{layer}^{MAPS}");
334  const TString sTrkNInt("N_{layer}^{INTT}");
335  const TString sTrkNTpc("N_{layer}^{TPC}");
336  const TString sTrkQuality("#chi^{2}/ndf");
337  const TString sTrkDCAxy("DCA_{xy} [#mum]");
338  const TString sTrkDCAz("DCA_{z} [#mum]");
339  const TString sDeltaDCAxy("#DeltaDCA_{xy} / DCA_{xy}");
340  const TString sDeltaDCAz("#DeltaDCA_{z} / DCA_{z}");
341  const TString sTrkVx("v_{x} [cm]");
342  const TString sTrkVy("v_{y} [cm]");
343  const TString sTrkVz("v_{z} [cm]");
344  const TString sTrkPhi("#phi");
345  const TString sTrkEta("#eta");
346  const TString sTrkPt("p_{T} [GeV/c]");
347  const TString sTruPt("p_{T}^{truth} [GeV/c]");
348  const TString sDeltaEta("#Delta#eta^{trk} / #eta^{trk}");
349  const TString sDeltaPhi("#Delta#phi^{trk} / #phi^{trk}");
350  const TString sDeltaPt("#Deltap_{T}^{trk} / p_{T}^{trk}");
351  const TString sTrkNClust("N_{clust}");
352  const TString sTrkAvgClust("<cluster size>");
353 
354  // difference axis titles
355  const TString sDiffVx("v_{x}^{reco} - v_{x}^{truth}");
356  const TString sDiffVy("v_{y}^{reco} - v_{y}^{truth}");
357  const TString sDiffVz("v_{z}^{reco} - v_{z}^{truth}");
358  const TString sDiffNMms("N_{layer/reco}^{MMS} - N_{layer/truth}^{MMS}");
359  const TString sDiffNMap("N_{layer/reco}^{MAP} - N_{layer/truth}^{MAP}");
360  const TString sDiffNInt("N_{layer/reco}^{INTT} - N_{layer/truth}^{INTT}");
361  const TString sDiffNTpc("N_{layer/reco}^{TPC} - N_{layer/truth}^{TPC}");
362  const TString sDiffQual("IRRELEVANT");
363  const TString sDiffDCAxy("DCA_{xy}^{reco} - DCA_{xy}^{truth} [#mum]");
364  const TString sDiffDCAz("DCA_{z}^{reco} - DCA_{z}^{truth} [#mum]");
365  const TString sDiffDeltaDCAxy("IRRELEVANT");
366  const TString sDiffDeltaDCAz("IRRELEVANT");
367  const TString sDiffPhi("#phi^{reco} - #phi^{truth}");
368  const TString sDiffEta("#eta^{reco} - #eta^{truth}");
369  const TString sDiffPt("p_{T}^{reco} - p_{T}^{truth}");
370  const TString sDiffDeltaPhi("IRRELEVANT");
371  const TString sDiffDeltaEta("IRRELEVANT");
372  const TString sDiffDeltaPt("IRRELEVANT");
373  const TString sDiffNClust("N_{clust}^{reco} - N_{clust}^{truth}");
374  const TString sDiffAvgClust("<cluster size>_{reco} - <cluster size>_{truth}");
375 
376  // fraction axis titles
377  const TString sFracVx("v_{x}^{reco} / v_{x}^{truth}");
378  const TString sFracVy("v_{y}^{reco} / v_{y}^{truth}");
379  const TString sFracVz("v_{z}^{reco} / v_{z}^{truth}");
380  const TString sFracMms("N_{layer/reco}^{MMS} / N_{layer/truth}^{MMS}");
381  const TString sFracMap("N_{layer/reco}^{MAPS} / N_{layer/truth}^{MAPS}");
382  const TString sFracInt("N_{layer/reco}^{INTT} / N_{layer/truth}^{INTT}");
383  const TString sFracTpc("N_{layer/reco}^{TPC} / N_{layer/truth}^{TPC}");
384  const TString sFracTot("N_{layer/reco}^{tot} / N_{layer/truth}^{tot}");
385  const TString sFracQual("IRRELEVANT");
386  const TString sFracDCAxy("DCA_{xy}^{reco} / DCA_{xy}^{truth}");
387  const TString sFracDCAz("DCA_{z}^{reco} / DCA_{z}^{truth}");
388  const TString sFracDeltaDCAxy("IRRELEVANT");
389  const TString sFracDeltaDCAz("IRRELEVANT");
390  const TString sFracPhi("#delta#phi^{trk} = #phi^{trk} / #phi^{truth}");
391  const TString sFracEta("#delta#eta^{trk} = #eta^{trk} / #eta^{truth}");
392  const TString sFracPt("#deltap_{T}^{trk} = p_{T}^{trk} / p_{T}^{truth}");
393  const TString sFracDeltaPhi("IRRELEVANT");
394  const TString sFracDeltaEta("IRRELEVANT");
395  const TString sFracDeltaPt("IRRELEVANT");
396  const TString sFracNClust("N_{clust}^{reco} / N_{clust}^{truth}");
397  const TString sFracAvgClust("<cluster size>_{reco} / <cluster size>_{truth}");
398 
399  // track axis titles
400  const TString sTrkTitles[NTrkVar] = {sTrkVx, sTrkVy, sTrkVz, sTrkNMms, sTrkNMap, sTrkNInt, sTrkNTpc, sTrkQuality, sTrkDCAxy, sTrkDCAz,
401  sDeltaDCAxy, sDeltaDCAz, sTrkNClust, sTrkAvgClust};
402  const TString sTrkDiffTitles[NTrkVar] = {sDiffVx, sDiffVy, sDiffVz, sDiffNMms, sDiffNMap, sDiffNInt, sDiffNTpc, sDiffQual, sDiffDCAxy, sDiffDCAz,
403  sDiffDeltaDCAxy, sDiffDeltaDCAz, sDiffNClust, sDiffAvgClust};
404  const TString sTrkFracTitles[NTrkVar] = {sFracVx, sFracVy, sFracVz, sFracMms, sFracMap, sFracInt, sFracTpc, sFracQual, sTrkDCAxy, sTrkDCAz,
405  sFracDeltaDCAxy, sFracDeltaDCAz, sFracNClust, sFracAvgClust};
406 
407  // physics axis titles
408  const TString sPhysTitles[NPhysVar] = {sTrkPhi, sTrkEta, sTrkPt, sDeltaPhi, sDeltaEta, sDeltaPt};
409  const TString sPhysDiffTitles[NPhysVar] = {sDiffPhi, sDiffEta, sDiffPt, sDiffDeltaPhi, sDiffDeltaEta, sDiffDeltaPt};
410  const TString sPhysFracTitles[NPhysVar] = {sFracPhi, sFracEta, sFracPt, sFracDeltaPhi, sFracDeltaEta, sFracDeltaPt};
411 
412  for (Int_t iType = 0; iType < NType; iType++) {
413 
414  // check if histograms should be styled
415  if (isBeforeCuts[iType] || isPileup[iType]) {
416  if (isBeforeCuts[iType] && !doBeforeCuts) continue;
417  if (isPileup[iType] && !doPileup) continue;
418  }
419 
420  for (Int_t iTrkVar = 0; iTrkVar < NTrkVar; iTrkVar++) {
421  hTrkVar[iType][iTrkVar] -> SetMarkerColor(fTypeCol[iType]);
422  hTrkVar[iType][iTrkVar] -> SetMarkerStyle(fTypeMar[iType]);
423  hTrkVar[iType][iTrkVar] -> SetLineColor(fTypeCol[iType]);
424  hTrkVar[iType][iTrkVar] -> SetLineStyle(fLin);
425  hTrkVar[iType][iTrkVar] -> SetFillColor(fTypeCol[iType]);
426  hTrkVar[iType][iTrkVar] -> SetFillStyle(fFil);
427  hTrkVar[iType][iTrkVar] -> SetTitleFont(FTxt);
428  hTrkVar[iType][iTrkVar] -> GetXaxis() -> SetTitle(sTrkTitles[iTrkVar].Data());
429  hTrkVar[iType][iTrkVar] -> GetXaxis() -> SetTitleFont(FTxt);
430  hTrkVar[iType][iTrkVar] -> GetXaxis() -> SetTitleOffset(fOffX);
431  hTrkVar[iType][iTrkVar] -> GetYaxis() -> SetTitle(sCountToUse.Data());
432  hTrkVar[iType][iTrkVar] -> GetYaxis() -> SetTitleFont(FTxt);
433  hTrkVar[iType][iTrkVar] -> GetYaxis() -> SetTitleOffset(fOffY);
434  hTrkVarDiff[iType][iTrkVar] -> SetMarkerColor(fTypeCol[iType]);
435  hTrkVarDiff[iType][iTrkVar] -> SetMarkerStyle(fTypeMar[iType]);
436  hTrkVarDiff[iType][iTrkVar] -> SetLineColor(fTypeCol[iType]);
437  hTrkVarDiff[iType][iTrkVar] -> SetLineStyle(fLin);
438  hTrkVarDiff[iType][iTrkVar] -> SetFillColor(fTypeCol[iType]);
439  hTrkVarDiff[iType][iTrkVar] -> SetFillStyle(fFil);
440  hTrkVarDiff[iType][iTrkVar] -> SetTitleFont(FTxt);
441  hTrkVarDiff[iType][iTrkVar] -> GetXaxis() -> SetTitle(sTrkDiffTitles[iTrkVar].Data());
442  hTrkVarDiff[iType][iTrkVar] -> GetXaxis() -> SetTitleFont(FTxt);
443  hTrkVarDiff[iType][iTrkVar] -> GetXaxis() -> SetTitleOffset(fOffX);
444  hTrkVarDiff[iType][iTrkVar] -> GetYaxis() -> SetTitle(sCountToUse.Data());
445  hTrkVarDiff[iType][iTrkVar] -> GetYaxis() -> SetTitleFont(FTxt);
446  hTrkVarDiff[iType][iTrkVar] -> GetYaxis() -> SetTitleOffset(fOffY);
447  hTrkVarFrac[iType][iTrkVar] -> SetMarkerColor(fTypeCol[iType]);
448  hTrkVarFrac[iType][iTrkVar] -> SetMarkerStyle(fTypeMar[iType]);
449  hTrkVarFrac[iType][iTrkVar] -> SetLineColor(fTypeCol[iType]);
450  hTrkVarFrac[iType][iTrkVar] -> SetLineStyle(fLin);
451  hTrkVarFrac[iType][iTrkVar] -> SetFillColor(fTypeCol[iType]);
452  hTrkVarFrac[iType][iTrkVar] -> SetFillStyle(fFil);
453  hTrkVarFrac[iType][iTrkVar] -> SetTitleFont(FTxt);
454  hTrkVarFrac[iType][iTrkVar] -> GetXaxis() -> SetTitle(sTrkFracTitles[iTrkVar].Data());
455  hTrkVarFrac[iType][iTrkVar] -> GetXaxis() -> SetTitleFont(FTxt);
456  hTrkVarFrac[iType][iTrkVar] -> GetXaxis() -> SetTitleOffset(fOffX);
457  hTrkVarFrac[iType][iTrkVar] -> GetYaxis() -> SetTitle(sCountToUse.Data());
458  hTrkVarFrac[iType][iTrkVar] -> GetYaxis() -> SetTitleFont(FTxt);
459  hTrkVarFrac[iType][iTrkVar] -> GetYaxis() -> SetTitleOffset(fOffY);
460  hTrkVarVsNTpc[iType][iTrkVar] -> SetMarkerColor(fTypeCol[iType]);
461  hTrkVarVsNTpc[iType][iTrkVar] -> SetMarkerStyle(fMar2D);
462  hTrkVarVsNTpc[iType][iTrkVar] -> SetLineColor(fTypeCol[iType]);
463  hTrkVarVsNTpc[iType][iTrkVar] -> SetLineStyle(fLin);
464  hTrkVarVsNTpc[iType][iTrkVar] -> SetFillColor(fTypeCol[iType]);
465  hTrkVarVsNTpc[iType][iTrkVar] -> SetFillStyle(fFil);
466  hTrkVarVsNTpc[iType][iTrkVar] -> SetTitleFont(FTxt);
467  hTrkVarVsNTpc[iType][iTrkVar] -> GetXaxis() -> SetTitle(sTrkNTpc.Data());
468  hTrkVarVsNTpc[iType][iTrkVar] -> GetXaxis() -> SetTitleFont(FTxt);
469  hTrkVarVsNTpc[iType][iTrkVar] -> GetXaxis() -> SetTitleOffset(fOffX);
470  hTrkVarVsNTpc[iType][iTrkVar] -> GetYaxis() -> SetTitle(sTrkTitles[iTrkVar].Data());
471  hTrkVarVsNTpc[iType][iTrkVar] -> GetYaxis() -> SetTitleFont(FTxt);
472  hTrkVarVsNTpc[iType][iTrkVar] -> GetYaxis() -> SetTitleOffset(fOffY);
473  hTrkVarVsNTpc[iType][iTrkVar] -> GetZaxis() -> SetTitle(sCountToUse.Data());
474  hTrkVarVsNTpc[iType][iTrkVar] -> GetZaxis() -> SetTitleFont(FTxt);
475  hTrkVarVsNTpc[iType][iTrkVar] -> GetZaxis() -> SetTitleOffset(fOffZ);
476  hTrkVarVsDcaXY[iType][iTrkVar] -> SetMarkerColor(fTypeCol[iType]);
477  hTrkVarVsDcaXY[iType][iTrkVar] -> SetMarkerStyle(fMar2D);
478  hTrkVarVsDcaXY[iType][iTrkVar] -> SetLineColor(fTypeCol[iType]);
479  hTrkVarVsDcaXY[iType][iTrkVar] -> SetLineStyle(fLin);
480  hTrkVarVsDcaXY[iType][iTrkVar] -> SetFillColor(fTypeCol[iType]);
481  hTrkVarVsDcaXY[iType][iTrkVar] -> SetFillStyle(fFil);
482  hTrkVarVsDcaXY[iType][iTrkVar] -> SetTitleFont(FTxt);
483  hTrkVarVsDcaXY[iType][iTrkVar] -> GetXaxis() -> SetTitle(sTrkDCAxy.Data());
484  hTrkVarVsDcaXY[iType][iTrkVar] -> GetXaxis() -> SetTitleFont(FTxt);
485  hTrkVarVsDcaXY[iType][iTrkVar] -> GetXaxis() -> SetTitleOffset(fOffX);
486  hTrkVarVsDcaXY[iType][iTrkVar] -> GetYaxis() -> SetTitle(sTrkTitles[iTrkVar].Data());
487  hTrkVarVsDcaXY[iType][iTrkVar] -> GetYaxis() -> SetTitleFont(FTxt);
488  hTrkVarVsDcaXY[iType][iTrkVar] -> GetYaxis() -> SetTitleOffset(fOffY);
489  hTrkVarVsDcaXY[iType][iTrkVar] -> GetZaxis() -> SetTitle(sCountToUse.Data());
490  hTrkVarVsDcaXY[iType][iTrkVar] -> GetZaxis() -> SetTitleFont(FTxt);
491  hTrkVarVsDcaXY[iType][iTrkVar] -> GetZaxis() -> SetTitleOffset(fOffZ);
492  hTrkVarVsDcaZ[iType][iTrkVar] -> SetMarkerColor(fTypeCol[iType]);
493  hTrkVarVsDcaZ[iType][iTrkVar] -> SetMarkerStyle(fMar2D);
494  hTrkVarVsDcaZ[iType][iTrkVar] -> SetLineColor(fTypeCol[iType]);
495  hTrkVarVsDcaZ[iType][iTrkVar] -> SetLineStyle(fLin);
496  hTrkVarVsDcaZ[iType][iTrkVar] -> SetFillColor(fTypeCol[iType]);
497  hTrkVarVsDcaZ[iType][iTrkVar] -> SetFillStyle(fFil);
498  hTrkVarVsDcaZ[iType][iTrkVar] -> SetTitleFont(FTxt);
499  hTrkVarVsDcaZ[iType][iTrkVar] -> GetXaxis() -> SetTitle(sTrkDCAz.Data());
500  hTrkVarVsDcaZ[iType][iTrkVar] -> GetXaxis() -> SetTitleFont(FTxt);
501  hTrkVarVsDcaZ[iType][iTrkVar] -> GetXaxis() -> SetTitleOffset(fOffX);
502  hTrkVarVsDcaZ[iType][iTrkVar] -> GetYaxis() -> SetTitle(sTrkTitles[iTrkVar].Data());
503  hTrkVarVsDcaZ[iType][iTrkVar] -> GetYaxis() -> SetTitleFont(FTxt);
504  hTrkVarVsDcaZ[iType][iTrkVar] -> GetYaxis() -> SetTitleOffset(fOffY);
505  hTrkVarVsDcaZ[iType][iTrkVar] -> GetZaxis() -> SetTitle(sCountToUse.Data());
506  hTrkVarVsDcaZ[iType][iTrkVar] -> GetZaxis() -> SetTitleFont(FTxt);
507  hTrkVarVsDcaZ[iType][iTrkVar] -> GetZaxis() -> SetTitleOffset(fOffZ);
508  hTrkVarVsPtReco[iType][iTrkVar] -> SetMarkerColor(fTypeCol[iType]);
509  hTrkVarVsPtReco[iType][iTrkVar] -> SetMarkerStyle(fMar2D);
510  hTrkVarVsPtReco[iType][iTrkVar] -> SetLineColor(fTypeCol[iType]);
511  hTrkVarVsPtReco[iType][iTrkVar] -> SetLineStyle(fLin);
512  hTrkVarVsPtReco[iType][iTrkVar] -> SetFillColor(fTypeCol[iType]);
513  hTrkVarVsPtReco[iType][iTrkVar] -> SetFillStyle(fFil);
514  hTrkVarVsPtReco[iType][iTrkVar] -> SetTitleFont(FTxt);
515  hTrkVarVsPtReco[iType][iTrkVar] -> GetXaxis() -> SetTitle(sTrkPt.Data());
516  hTrkVarVsPtReco[iType][iTrkVar] -> GetXaxis() -> SetTitleFont(FTxt);
517  hTrkVarVsPtReco[iType][iTrkVar] -> GetXaxis() -> SetTitleOffset(fOffX);
518  hTrkVarVsPtReco[iType][iTrkVar] -> GetYaxis() -> SetTitle(sTrkTitles[iTrkVar].Data());
519  hTrkVarVsPtReco[iType][iTrkVar] -> GetYaxis() -> SetTitleFont(FTxt);
520  hTrkVarVsPtReco[iType][iTrkVar] -> GetYaxis() -> SetTitleOffset(fOffY);
521  hTrkVarVsPtReco[iType][iTrkVar] -> GetZaxis() -> SetTitle(sCountToUse.Data());
522  hTrkVarVsPtReco[iType][iTrkVar] -> GetZaxis() -> SetTitleFont(FTxt);
523  hTrkVarVsPtReco[iType][iTrkVar] -> GetZaxis() -> SetTitleOffset(fOffZ);
524  hTrkVarVsPtTrue[iType][iTrkVar] -> SetMarkerColor(fTypeCol[iType]);
525  hTrkVarVsPtTrue[iType][iTrkVar] -> SetMarkerStyle(fMar2D);
526  hTrkVarVsPtTrue[iType][iTrkVar] -> SetLineColor(fTypeCol[iType]);
527  hTrkVarVsPtTrue[iType][iTrkVar] -> SetLineStyle(fLin);
528  hTrkVarVsPtTrue[iType][iTrkVar] -> SetFillColor(fTypeCol[iType]);
529  hTrkVarVsPtTrue[iType][iTrkVar] -> SetFillStyle(fFil);
530  hTrkVarVsPtTrue[iType][iTrkVar] -> SetTitleFont(FTxt);
531  hTrkVarVsPtTrue[iType][iTrkVar] -> GetXaxis() -> SetTitle(sTruPt.Data());
532  hTrkVarVsPtTrue[iType][iTrkVar] -> GetXaxis() -> SetTitleFont(FTxt);
533  hTrkVarVsPtTrue[iType][iTrkVar] -> GetXaxis() -> SetTitleOffset(fOffX);
534  hTrkVarVsPtTrue[iType][iTrkVar] -> GetYaxis() -> SetTitle(sTrkTitles[iTrkVar].Data());
535  hTrkVarVsPtTrue[iType][iTrkVar] -> GetYaxis() -> SetTitleFont(FTxt);
536  hTrkVarVsPtTrue[iType][iTrkVar] -> GetYaxis() -> SetTitleOffset(fOffY);
537  hTrkVarVsPtTrue[iType][iTrkVar] -> GetZaxis() -> SetTitle(sCountToUse.Data());
538  hTrkVarVsPtTrue[iType][iTrkVar] -> GetZaxis() -> SetTitleFont(FTxt);
539  hTrkVarVsPtTrue[iType][iTrkVar] -> GetZaxis() -> SetTitleOffset(fOffZ);
540  hTrkVarVsPtFrac[iType][iTrkVar] -> SetMarkerColor(fTypeCol[iType]);
541  hTrkVarVsPtFrac[iType][iTrkVar] -> SetMarkerStyle(fMar2D);
542  hTrkVarVsPtFrac[iType][iTrkVar] -> SetLineColor(fTypeCol[iType]);
543  hTrkVarVsPtFrac[iType][iTrkVar] -> SetLineStyle(fLin);
544  hTrkVarVsPtFrac[iType][iTrkVar] -> SetFillColor(fTypeCol[iType]);
545  hTrkVarVsPtFrac[iType][iTrkVar] -> SetFillStyle(fFil);
546  hTrkVarVsPtFrac[iType][iTrkVar] -> SetTitleFont(FTxt);
547  hTrkVarVsPtFrac[iType][iTrkVar] -> GetXaxis() -> SetTitle(sFracPt.Data());
548  hTrkVarVsPtFrac[iType][iTrkVar] -> GetXaxis() -> SetTitleFont(FTxt);
549  hTrkVarVsPtFrac[iType][iTrkVar] -> GetXaxis() -> SetTitleOffset(fOffX);
550  hTrkVarVsPtFrac[iType][iTrkVar] -> GetYaxis() -> SetTitle(sTrkTitles[iTrkVar].Data());
551  hTrkVarVsPtFrac[iType][iTrkVar] -> GetYaxis() -> SetTitleFont(FTxt);
552  hTrkVarVsPtFrac[iType][iTrkVar] -> GetYaxis() -> SetTitleOffset(fOffY);
553  hTrkVarVsPtFrac[iType][iTrkVar] -> GetZaxis() -> SetTitle(sCountToUse.Data());
554  hTrkVarVsPtFrac[iType][iTrkVar] -> GetZaxis() -> SetTitleFont(FTxt);
555  hTrkVarVsPtFrac[iType][iTrkVar] -> GetZaxis() -> SetTitleOffset(fOffZ);
556  }
557  for (Int_t iPhysVar = 0; iPhysVar < NPhysVar; iPhysVar++) {
558  hPhysVar[iType][iPhysVar] -> SetMarkerColor(fTypeCol[iType]);
559  hPhysVar[iType][iPhysVar] -> SetMarkerStyle(fTypeMar[iType]);
560  hPhysVar[iType][iPhysVar] -> SetLineColor(fTypeCol[iType]);
561  hPhysVar[iType][iPhysVar] -> SetLineStyle(fLin);
562  hPhysVar[iType][iPhysVar] -> SetFillColor(fTypeCol[iType]);
563  hPhysVar[iType][iPhysVar] -> SetFillStyle(fFil);
564  hPhysVar[iType][iPhysVar] -> SetTitleFont(FTxt);
565  hPhysVar[iType][iPhysVar] -> GetXaxis() -> SetTitle(sPhysTitles[iPhysVar].Data());
566  hPhysVar[iType][iPhysVar] -> GetXaxis() -> SetTitleFont(FTxt);
567  hPhysVar[iType][iPhysVar] -> GetXaxis() -> SetTitleOffset(fOffX);
568  hPhysVar[iType][iPhysVar] -> GetYaxis() -> SetTitle(sCountToUse.Data());
569  hPhysVar[iType][iPhysVar] -> GetYaxis() -> SetTitleFont(FTxt);
570  hPhysVar[iType][iPhysVar] -> GetYaxis() -> SetTitleOffset(fOffY);
571  hPhysVarDiff[iType][iPhysVar] -> SetMarkerColor(fTypeCol[iType]);
572  hPhysVarDiff[iType][iPhysVar] -> SetMarkerStyle(fTypeMar[iType]);
573  hPhysVarDiff[iType][iPhysVar] -> SetLineColor(fTypeCol[iType]);
574  hPhysVarDiff[iType][iPhysVar] -> SetLineStyle(fLin);
575  hPhysVarDiff[iType][iPhysVar] -> SetFillColor(fTypeCol[iType]);
576  hPhysVarDiff[iType][iPhysVar] -> SetFillStyle(fFil);
577  hPhysVarDiff[iType][iPhysVar] -> SetTitleFont(FTxt);
578  hPhysVarDiff[iType][iPhysVar] -> GetXaxis() -> SetTitle(sPhysDiffTitles[iPhysVar].Data());
579  hPhysVarDiff[iType][iPhysVar] -> GetXaxis() -> SetTitleFont(FTxt);
580  hPhysVarDiff[iType][iPhysVar] -> GetXaxis() -> SetTitleOffset(fOffX);
581  hPhysVarDiff[iType][iPhysVar] -> GetYaxis() -> SetTitle(sCountToUse.Data());
582  hPhysVarDiff[iType][iPhysVar] -> GetYaxis() -> SetTitleFont(FTxt);
583  hPhysVarDiff[iType][iPhysVar] -> GetYaxis() -> SetTitleOffset(fOffY);
584  hPhysVarFrac[iType][iPhysVar] -> SetMarkerColor(fTypeCol[iType]);
585  hPhysVarFrac[iType][iPhysVar] -> SetMarkerStyle(fTypeMar[iType]);
586  hPhysVarFrac[iType][iPhysVar] -> SetLineColor(fTypeCol[iType]);
587  hPhysVarFrac[iType][iPhysVar] -> SetLineStyle(fLin);
588  hPhysVarFrac[iType][iPhysVar] -> SetFillColor(fTypeCol[iType]);
589  hPhysVarFrac[iType][iPhysVar] -> SetFillStyle(fFil);
590  hPhysVarFrac[iType][iPhysVar] -> SetTitleFont(FTxt);
591  hPhysVarFrac[iType][iPhysVar] -> GetXaxis() -> SetTitle(sPhysFracTitles[iPhysVar].Data());
592  hPhysVarFrac[iType][iPhysVar] -> GetXaxis() -> SetTitleFont(FTxt);
593  hPhysVarFrac[iType][iPhysVar] -> GetXaxis() -> SetTitleOffset(fOffX);
594  hPhysVarFrac[iType][iPhysVar] -> GetYaxis() -> SetTitle(sCountToUse.Data());
595  hPhysVarFrac[iType][iPhysVar] -> GetYaxis() -> SetTitleFont(FTxt);
596  hPhysVarFrac[iType][iPhysVar] -> GetYaxis() -> SetTitleOffset(fOffY);
597  hPhysVarVsNTpc[iType][iPhysVar] -> SetMarkerColor(fTypeCol[iType]);
598  hPhysVarVsNTpc[iType][iPhysVar] -> SetMarkerStyle(fMar2D);
599  hPhysVarVsNTpc[iType][iPhysVar] -> SetLineColor(fTypeCol[iType]);
600  hPhysVarVsNTpc[iType][iPhysVar] -> SetLineStyle(fLin);
601  hPhysVarVsNTpc[iType][iPhysVar] -> SetFillColor(fTypeCol[iType]);
602  hPhysVarVsNTpc[iType][iPhysVar] -> SetFillStyle(fFil);
603  hPhysVarVsNTpc[iType][iPhysVar] -> SetTitleFont(FTxt);
604  hPhysVarVsNTpc[iType][iPhysVar] -> GetXaxis() -> SetTitle(sTrkNTpc.Data());
605  hPhysVarVsNTpc[iType][iPhysVar] -> GetXaxis() -> SetTitleFont(FTxt);
606  hPhysVarVsNTpc[iType][iPhysVar] -> GetXaxis() -> SetTitleOffset(fOffX);
607  hPhysVarVsNTpc[iType][iPhysVar] -> GetYaxis() -> SetTitle(sPhysTitles[iPhysVar].Data());
608  hPhysVarVsNTpc[iType][iPhysVar] -> GetYaxis() -> SetTitleFont(FTxt);
609  hPhysVarVsNTpc[iType][iPhysVar] -> GetYaxis() -> SetTitleOffset(fOffY);
610  hPhysVarVsNTpc[iType][iPhysVar] -> GetZaxis() -> SetTitle(sCountToUse.Data());
611  hPhysVarVsNTpc[iType][iPhysVar] -> GetZaxis() -> SetTitleFont(FTxt);
612  hPhysVarVsNTpc[iType][iPhysVar] -> GetZaxis() -> SetTitleOffset(fOffZ);
613  hPhysVarVsDcaXY[iType][iPhysVar] -> SetMarkerColor(fTypeCol[iType]);
614  hPhysVarVsDcaXY[iType][iPhysVar] -> SetMarkerStyle(fMar2D);
615  hPhysVarVsDcaXY[iType][iPhysVar] -> SetLineColor(fTypeCol[iType]);
616  hPhysVarVsDcaXY[iType][iPhysVar] -> SetLineStyle(fLin);
617  hPhysVarVsDcaXY[iType][iPhysVar] -> SetFillColor(fTypeCol[iType]);
618  hPhysVarVsDcaXY[iType][iPhysVar] -> SetFillStyle(fFil);
619  hPhysVarVsDcaXY[iType][iPhysVar] -> SetTitleFont(FTxt);
620  hPhysVarVsDcaXY[iType][iPhysVar] -> GetXaxis() -> SetTitle(sTrkDCAxy.Data());
621  hPhysVarVsDcaXY[iType][iPhysVar] -> GetXaxis() -> SetTitleFont(FTxt);
622  hPhysVarVsDcaXY[iType][iPhysVar] -> GetXaxis() -> SetTitleOffset(fOffX);
623  hPhysVarVsDcaXY[iType][iPhysVar] -> GetYaxis() -> SetTitle(sPhysTitles[iPhysVar].Data());
624  hPhysVarVsDcaXY[iType][iPhysVar] -> GetYaxis() -> SetTitleFont(FTxt);
625  hPhysVarVsDcaXY[iType][iPhysVar] -> GetYaxis() -> SetTitleOffset(fOffY);
626  hPhysVarVsDcaXY[iType][iPhysVar] -> GetZaxis() -> SetTitle(sCountToUse.Data());
627  hPhysVarVsDcaXY[iType][iPhysVar] -> GetZaxis() -> SetTitleFont(FTxt);
628  hPhysVarVsDcaXY[iType][iPhysVar] -> GetZaxis() -> SetTitleOffset(fOffZ);
629  hPhysVarVsDcaZ[iType][iPhysVar] -> SetMarkerColor(fTypeCol[iType]);
630  hPhysVarVsDcaZ[iType][iPhysVar] -> SetMarkerStyle(fMar2D);
631  hPhysVarVsDcaZ[iType][iPhysVar] -> SetLineColor(fTypeCol[iType]);
632  hPhysVarVsDcaZ[iType][iPhysVar] -> SetLineStyle(fLin);
633  hPhysVarVsDcaZ[iType][iPhysVar] -> SetFillColor(fTypeCol[iType]);
634  hPhysVarVsDcaZ[iType][iPhysVar] -> SetFillStyle(fFil);
635  hPhysVarVsDcaZ[iType][iPhysVar] -> SetTitleFont(FTxt);
636  hPhysVarVsDcaZ[iType][iPhysVar] -> GetXaxis() -> SetTitle(sTrkDCAz.Data());
637  hPhysVarVsDcaZ[iType][iPhysVar] -> GetXaxis() -> SetTitleFont(FTxt);
638  hPhysVarVsDcaZ[iType][iPhysVar] -> GetXaxis() -> SetTitleOffset(fOffX);
639  hPhysVarVsDcaZ[iType][iPhysVar] -> GetYaxis() -> SetTitle(sPhysTitles[iPhysVar].Data());
640  hPhysVarVsDcaZ[iType][iPhysVar] -> GetYaxis() -> SetTitleFont(FTxt);
641  hPhysVarVsDcaZ[iType][iPhysVar] -> GetYaxis() -> SetTitleOffset(fOffY);
642  hPhysVarVsDcaZ[iType][iPhysVar] -> GetZaxis() -> SetTitle(sCountToUse.Data());
643  hPhysVarVsDcaZ[iType][iPhysVar] -> GetZaxis() -> SetTitleFont(FTxt);
644  hPhysVarVsDcaZ[iType][iPhysVar] -> GetZaxis() -> SetTitleOffset(fOffZ);
645  hPhysVarVsPtReco[iType][iPhysVar] -> SetMarkerColor(fTypeCol[iType]);
646  hPhysVarVsPtReco[iType][iPhysVar] -> SetMarkerStyle(fMar2D);
647  hPhysVarVsPtReco[iType][iPhysVar] -> SetLineColor(fTypeCol[iType]);
648  hPhysVarVsPtReco[iType][iPhysVar] -> SetLineStyle(fLin);
649  hPhysVarVsPtReco[iType][iPhysVar] -> SetFillColor(fTypeCol[iType]);
650  hPhysVarVsPtReco[iType][iPhysVar] -> SetFillStyle(fFil);
651  hPhysVarVsPtReco[iType][iPhysVar] -> SetTitleFont(FTxt);
652  hPhysVarVsPtReco[iType][iPhysVar] -> GetXaxis() -> SetTitle(sTrkPt.Data());
653  hPhysVarVsPtReco[iType][iPhysVar] -> GetXaxis() -> SetTitleFont(FTxt);
654  hPhysVarVsPtReco[iType][iPhysVar] -> GetXaxis() -> SetTitleOffset(fOffX);
655  hPhysVarVsPtReco[iType][iPhysVar] -> GetYaxis() -> SetTitle(sPhysTitles[iPhysVar].Data());
656  hPhysVarVsPtReco[iType][iPhysVar] -> GetYaxis() -> SetTitleFont(FTxt);
657  hPhysVarVsPtReco[iType][iPhysVar] -> GetYaxis() -> SetTitleOffset(fOffY);
658  hPhysVarVsPtReco[iType][iPhysVar] -> GetZaxis() -> SetTitle(sCountToUse.Data());
659  hPhysVarVsPtReco[iType][iPhysVar] -> GetZaxis() -> SetTitleFont(FTxt);
660  hPhysVarVsPtReco[iType][iPhysVar] -> GetZaxis() -> SetTitleOffset(fOffZ);
661  hPhysVarVsPtTrue[iType][iPhysVar] -> SetMarkerColor(fTypeCol[iType]);
662  hPhysVarVsPtTrue[iType][iPhysVar] -> SetMarkerStyle(fMar2D);
663  hPhysVarVsPtTrue[iType][iPhysVar] -> SetLineColor(fTypeCol[iType]);
664  hPhysVarVsPtTrue[iType][iPhysVar] -> SetLineStyle(fLin);
665  hPhysVarVsPtTrue[iType][iPhysVar] -> SetFillColor(fTypeCol[iType]);
666  hPhysVarVsPtTrue[iType][iPhysVar] -> SetFillStyle(fFil);
667  hPhysVarVsPtTrue[iType][iPhysVar] -> SetTitleFont(FTxt);
668  hPhysVarVsPtTrue[iType][iPhysVar] -> GetXaxis() -> SetTitle(sTruPt.Data());
669  hPhysVarVsPtTrue[iType][iPhysVar] -> GetXaxis() -> SetTitleFont(FTxt);
670  hPhysVarVsPtTrue[iType][iPhysVar] -> GetXaxis() -> SetTitleOffset(fOffX);
671  hPhysVarVsPtTrue[iType][iPhysVar] -> GetYaxis() -> SetTitle(sPhysTitles[iPhysVar].Data());
672  hPhysVarVsPtTrue[iType][iPhysVar] -> GetYaxis() -> SetTitleFont(FTxt);
673  hPhysVarVsPtTrue[iType][iPhysVar] -> GetYaxis() -> SetTitleOffset(fOffY);
674  hPhysVarVsPtTrue[iType][iPhysVar] -> GetZaxis() -> SetTitle(sCountToUse.Data());
675  hPhysVarVsPtTrue[iType][iPhysVar] -> GetZaxis() -> SetTitleFont(FTxt);
676  hPhysVarVsPtTrue[iType][iPhysVar] -> GetZaxis() -> SetTitleOffset(fOffZ);
677  hPhysVarVsPtFrac[iType][iPhysVar] -> SetMarkerColor(fTypeCol[iType]);
678  hPhysVarVsPtFrac[iType][iPhysVar] -> SetMarkerStyle(fMar2D);
679  hPhysVarVsPtFrac[iType][iPhysVar] -> SetLineColor(fTypeCol[iType]);
680  hPhysVarVsPtFrac[iType][iPhysVar] -> SetLineStyle(fLin);
681  hPhysVarVsPtFrac[iType][iPhysVar] -> SetFillColor(fTypeCol[iType]);
682  hPhysVarVsPtFrac[iType][iPhysVar] -> SetFillStyle(fFil);
683  hPhysVarVsPtFrac[iType][iPhysVar] -> SetTitleFont(FTxt);
684  hPhysVarVsPtFrac[iType][iPhysVar] -> GetXaxis() -> SetTitle(sFracPt.Data());
685  hPhysVarVsPtFrac[iType][iPhysVar] -> GetXaxis() -> SetTitleFont(FTxt);
686  hPhysVarVsPtFrac[iType][iPhysVar] -> GetXaxis() -> SetTitleOffset(fOffX);
687  hPhysVarVsPtFrac[iType][iPhysVar] -> GetYaxis() -> SetTitle(sPhysTitles[iPhysVar].Data());
688  hPhysVarVsPtFrac[iType][iPhysVar] -> GetYaxis() -> SetTitleFont(FTxt);
689  hPhysVarVsPtFrac[iType][iPhysVar] -> GetYaxis() -> SetTitleOffset(fOffY);
690  hPhysVarVsPtFrac[iType][iPhysVar] -> GetZaxis() -> SetTitle(sCountToUse.Data());
691  hPhysVarVsPtFrac[iType][iPhysVar] -> GetZaxis() -> SetTitleFont(FTxt);
692  hPhysVarVsPtFrac[iType][iPhysVar] -> GetZaxis() -> SetTitleOffset(fOffZ);
693  }
694  }
695  cout << " Set histogram styles." << endl;
696  return;
697 
698 } // end 'SetHistStyles()'
699 
700 
701 
702 void STrackCutStudy::FillTrackHistograms(const Int_t type, const Double_t recoTrkVars[], const Double_t trueTrkVars[], const Double_t recoPhysVars[], const Double_t truePhysVars[]) {
703 
704  // make sure you're filling a non-truth-type histogram
705  if (isTruth[type]) {
706  cerr << "PANIC: trying to fill truth histograms in non-truth style! Check what you wrote!\n" << endl;
707  assert(!isTruth[type]);
708  }
709 
710  // grab 2d x-axes
711  const auto nTpc = recoTrkVars[TRKVAR::NTPC];
712  const auto dcaXY = recoTrkVars[TRKVAR::DCAXY];
713  const auto dcaZ = recoTrkVars[TRKVAR::DCAZ];
714  const auto ptRec = recoPhysVars[PHYSVAR::PT];
715  const auto ptTrue = truePhysVars[PHYSVAR::PT];
716  const auto ptFrac = ptRec / ptTrue;
717 
718  // fill track variable hists
719  for (size_t iTrkVar = 0; iTrkVar < NTrkVar; iTrkVar++) {
720 
721  // calculate difference and fraction
722  const auto trkVarDiff = recoTrkVars[iTrkVar] - trueTrkVars[iTrkVar];
723  const auto trkVarFrac = recoTrkVars[iTrkVar] / trueTrkVars[iTrkVar];
724 
725  // fill hists
726  hTrkVar[type][iTrkVar] -> Fill(recoTrkVars[iTrkVar]);
727  hTrkVarDiff[type][iTrkVar] -> Fill(trkVarDiff);
728  hTrkVarFrac[type][iTrkVar] -> Fill(trkVarFrac);
729  hTrkVarVsNTpc[type][iTrkVar] -> Fill(nTpc, recoTrkVars[iTrkVar]);
730  hTrkVarVsDcaXY[type][iTrkVar] -> Fill(dcaXY, recoTrkVars[iTrkVar]);
731  hTrkVarVsDcaZ[type][iTrkVar] -> Fill(dcaZ, recoTrkVars[iTrkVar]);
732  hTrkVarVsPtReco[type][iTrkVar] -> Fill(ptRec, recoTrkVars[iTrkVar]);
733  hTrkVarVsPtTrue[type][iTrkVar] -> Fill(ptTrue, recoTrkVars[iTrkVar]);
734  hTrkVarVsPtFrac[type][iTrkVar] -> Fill(ptFrac, recoTrkVars[iTrkVar]);
735  }
736 
737  // fill track variable hists
738  for (size_t iPhysVar = 0; iPhysVar < NPhysVar; iPhysVar++) {
739 
740  // calculate difference and fraction
741  const auto trkVarDiff = recoPhysVars[iPhysVar] - truePhysVars[iPhysVar];
742  const auto trkVarFrac = recoPhysVars[iPhysVar] / truePhysVars[iPhysVar];
743 
744  // fill hists
745  hPhysVar[type][iPhysVar] -> Fill(recoPhysVars[iPhysVar]);
746  hPhysVarDiff[type][iPhysVar] -> Fill(trkVarDiff);
747  hPhysVarFrac[type][iPhysVar] -> Fill(trkVarFrac);
748  hPhysVarVsNTpc[type][iPhysVar] -> Fill(nTpc, recoPhysVars[iPhysVar]);
749  hPhysVarVsDcaXY[type][iPhysVar] -> Fill(dcaXY, recoPhysVars[iPhysVar]);
750  hPhysVarVsDcaZ[type][iPhysVar] -> Fill(dcaZ, recoPhysVars[iPhysVar]);
751  hPhysVarVsPtReco[type][iPhysVar] -> Fill(ptRec, recoPhysVars[iPhysVar]);
752  hPhysVarVsPtTrue[type][iPhysVar] -> Fill(ptTrue, recoPhysVars[iPhysVar]);
753  hPhysVarVsPtFrac[type][iPhysVar] -> Fill(ptFrac, recoPhysVars[iPhysVar]);
754  }
755  return;
756 
757 } // end 'FillTrackHistograms(Int_t, Double_t[], Double_t[], Double_t[], Double_t[])'
758 
759 
760 
761 void STrackCutStudy::FillTruthHistograms(const Int_t type, const Double_t recoTrkVars[], const Double_t trueTrkVars[], const Double_t recoPhysVars[], const Double_t truePhysVars[]) {
762 
763  // make sure you're filling a truth-type histogram
764  if (!isTruth[type]) {
765  cerr << "PANIC: trying to fill non-truth histograms in truth style! Check what you wrote!\n" << endl;
766  assert(isTruth[type]);
767  }
768 
769  // grab 2d x-axes
770  const auto nTpc = recoTrkVars[TRKVAR::NTPC];
771  const auto dcaXY = recoTrkVars[TRKVAR::DCAXY];
772  const auto dcaZ = recoTrkVars[TRKVAR::DCAZ];
773  const auto ptRec = recoPhysVars[PHYSVAR::PT];
774  const auto ptTrue = truePhysVars[PHYSVAR::PT];
775  const auto ptFrac = ptRec / ptTrue;
776 
777  // fill track variable hists
778  for (size_t iTrkVar = 0; iTrkVar < NTrkVar; iTrkVar++) {
779 
780  // make sure variable has truth value
781  if (!trkVarHasTruVal[iTrkVar]) continue;
782 
783  // fill hists
784  hTrkVar[type][iTrkVar] -> Fill(trueTrkVars[iTrkVar]);
785  hTrkVarVsNTpc[type][iTrkVar] -> Fill(nTpc, trueTrkVars[iTrkVar]);
786  hTrkVarVsDcaXY[type][iTrkVar] -> Fill(dcaXY, trueTrkVars[iTrkVar]);
787  hTrkVarVsDcaZ[type][iTrkVar] -> Fill(dcaZ, trueTrkVars[iTrkVar]);
788  hTrkVarVsPtReco[type][iTrkVar] -> Fill(ptRec, trueTrkVars[iTrkVar]);
789  hTrkVarVsPtTrue[type][iTrkVar] -> Fill(ptTrue, trueTrkVars[iTrkVar]);
790  hTrkVarVsPtFrac[type][iTrkVar] -> Fill(ptFrac, trueTrkVars[iTrkVar]);
791  }
792 
793  // fill track variable hists
794  for (size_t iPhysVar = 0; iPhysVar < NPhysVar; iPhysVar++) {
795 
796  // make sure variable has truth value
797  if (!physVarHasTruVal[iPhysVar]) continue;
798 
799  // fill hists
800  hPhysVar[type][iPhysVar] -> Fill(truePhysVars[iPhysVar]);
801  hPhysVarVsNTpc[type][iPhysVar] -> Fill(nTpc, truePhysVars[iPhysVar]);
802  hPhysVarVsDcaXY[type][iPhysVar] -> Fill(dcaXY, truePhysVars[iPhysVar]);
803  hPhysVarVsDcaZ[type][iPhysVar] -> Fill(dcaZ, truePhysVars[iPhysVar]);
804  hPhysVarVsPtReco[type][iPhysVar] -> Fill(ptRec, truePhysVars[iPhysVar]);
805  hPhysVarVsPtTrue[type][iPhysVar] -> Fill(ptTrue, truePhysVars[iPhysVar]);
806  hPhysVarVsPtFrac[type][iPhysVar] -> Fill(ptFrac, truePhysVars[iPhysVar]);
807  }
808  return;
809 
810 } // end 'FillTruthHistograms(Int_t, Double_t[], Double_t[], Double_t[], Double_t[])'
811 
812 // end ------------------------------------------------------------------------