23 const UInt_t nNHitBins(100);
24 const UInt_t nQualBins(40);
25 const UInt_t nDcaBins(2000);
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.};
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");
85 for (
size_t iTrkVar = 0; iTrkVar <
NTrkVar; iTrkVar++) {
86 sTrkVarName[iTrkVar] =
"h";
87 sTrkVarName[iTrkVar].Append(sTrkVars[iTrkVar].
Data());
89 for (
size_t iPhysVar = 0; iPhysVar <
NPhysVar; iPhysVar++) {
90 sPhysVarName[iPhysVar] =
"h";
91 sPhysVarName[iPhysVar].Append(sPhysVars[iPhysVar].
Data());
95 TString sTypeSuffix[
NType];
96 for (
size_t iType = 0; iType <
NType; iType++) {
97 sTypeSuffix[iType] =
"_";
98 sTypeSuffix[iType].Append(sTrkNames[iType].
Data());
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());
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());
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};
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};
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]}};
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]}};
199 for (
int iType = 0; iType <
NType; iType++) {
202 if (isBeforeCuts[iType] || isPileup[iType]) {
203 if (isBeforeCuts[iType] && !doBeforeCuts)
continue;
204 if (isPileup[iType] && !doPileup)
continue;
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();
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();
248 cout <<
" Initialized output histograms." << endl;
257 for (
int iType = 0; iType <
NType; iType++) {
260 if (isBeforeCuts[iType] || isPileup[iType]) {
261 if (isBeforeCuts[iType] && !doBeforeCuts)
continue;
262 if (isPileup[iType] && !doPileup)
continue;
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);
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);
306 cout <<
" Normalized histograms." << endl;
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);
324 TString sCountToUse(
"");
326 sCountToUse =
"arbitrary units";
328 sCountToUse =
"counts";
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>");
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}");
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}");
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};
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};
412 for (Int_t iType = 0; iType <
NType; iType++) {
415 if (isBeforeCuts[iType] || isPileup[iType]) {
416 if (isBeforeCuts[iType] && !doBeforeCuts)
continue;
417 if (isPileup[iType] && !doPileup)
continue;
420 for (Int_t iTrkVar = 0; iTrkVar <
NTrkVar; iTrkVar++) {
423 hTrkVar[iType][iTrkVar] ->
SetLineColor(fTypeCol[iType]);
425 hTrkVar[iType][iTrkVar] ->
SetFillColor(fTypeCol[iType]);
427 hTrkVar[iType][iTrkVar] -> SetTitleFont(
FTxt);
429 hTrkVar[iType][iTrkVar] ->
GetXaxis() -> SetTitleFont(
FTxt);
430 hTrkVar[iType][iTrkVar] ->
GetXaxis() -> SetTitleOffset(fOffX);
432 hTrkVar[iType][iTrkVar] ->
GetYaxis() -> SetTitleFont(
FTxt);
433 hTrkVar[iType][iTrkVar] ->
GetYaxis() -> SetTitleOffset(fOffY);
436 hTrkVarDiff[iType][iTrkVar] ->
SetLineColor(fTypeCol[iType]);
438 hTrkVarDiff[iType][iTrkVar] ->
SetFillColor(fTypeCol[iType]);
440 hTrkVarDiff[iType][iTrkVar] -> SetTitleFont(
FTxt);
442 hTrkVarDiff[iType][iTrkVar] ->
GetXaxis() -> SetTitleFont(
FTxt);
443 hTrkVarDiff[iType][iTrkVar] ->
GetXaxis() -> SetTitleOffset(fOffX);
445 hTrkVarDiff[iType][iTrkVar] ->
GetYaxis() -> SetTitleFont(
FTxt);
446 hTrkVarDiff[iType][iTrkVar] ->
GetYaxis() -> SetTitleOffset(fOffY);
449 hTrkVarFrac[iType][iTrkVar] ->
SetLineColor(fTypeCol[iType]);
451 hTrkVarFrac[iType][iTrkVar] ->
SetFillColor(fTypeCol[iType]);
453 hTrkVarFrac[iType][iTrkVar] -> SetTitleFont(
FTxt);
455 hTrkVarFrac[iType][iTrkVar] ->
GetXaxis() -> SetTitleFont(
FTxt);
456 hTrkVarFrac[iType][iTrkVar] ->
GetXaxis() -> SetTitleOffset(fOffX);
458 hTrkVarFrac[iType][iTrkVar] ->
GetYaxis() -> SetTitleFont(
FTxt);
459 hTrkVarFrac[iType][iTrkVar] ->
GetYaxis() -> SetTitleOffset(fOffY);
462 hTrkVarVsNTpc[iType][iTrkVar] ->
SetLineColor(fTypeCol[iType]);
464 hTrkVarVsNTpc[iType][iTrkVar] ->
SetFillColor(fTypeCol[iType]);
466 hTrkVarVsNTpc[iType][iTrkVar] -> SetTitleFont(
FTxt);
468 hTrkVarVsNTpc[iType][iTrkVar] ->
GetXaxis() -> SetTitleFont(
FTxt);
469 hTrkVarVsNTpc[iType][iTrkVar] ->
GetXaxis() -> SetTitleOffset(fOffX);
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]);
478 hTrkVarVsDcaXY[iType][iTrkVar] ->
SetLineColor(fTypeCol[iType]);
480 hTrkVarVsDcaXY[iType][iTrkVar] ->
SetFillColor(fTypeCol[iType]);
482 hTrkVarVsDcaXY[iType][iTrkVar] -> SetTitleFont(
FTxt);
484 hTrkVarVsDcaXY[iType][iTrkVar] ->
GetXaxis() -> SetTitleFont(
FTxt);
485 hTrkVarVsDcaXY[iType][iTrkVar] ->
GetXaxis() -> SetTitleOffset(fOffX);
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);
494 hTrkVarVsDcaZ[iType][iTrkVar] ->
SetLineColor(fTypeCol[iType]);
496 hTrkVarVsDcaZ[iType][iTrkVar] ->
SetFillColor(fTypeCol[iType]);
498 hTrkVarVsDcaZ[iType][iTrkVar] -> SetTitleFont(
FTxt);
500 hTrkVarVsDcaZ[iType][iTrkVar] ->
GetXaxis() -> SetTitleFont(
FTxt);
501 hTrkVarVsDcaZ[iType][iTrkVar] ->
GetXaxis() -> SetTitleOffset(fOffX);
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]);
510 hTrkVarVsPtReco[iType][iTrkVar] ->
SetLineColor(fTypeCol[iType]);
512 hTrkVarVsPtReco[iType][iTrkVar] ->
SetFillColor(fTypeCol[iType]);
514 hTrkVarVsPtReco[iType][iTrkVar] -> SetTitleFont(
FTxt);
516 hTrkVarVsPtReco[iType][iTrkVar] ->
GetXaxis() -> SetTitleFont(
FTxt);
517 hTrkVarVsPtReco[iType][iTrkVar] ->
GetXaxis() -> SetTitleOffset(fOffX);
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]);
526 hTrkVarVsPtTrue[iType][iTrkVar] ->
SetLineColor(fTypeCol[iType]);
528 hTrkVarVsPtTrue[iType][iTrkVar] ->
SetFillColor(fTypeCol[iType]);
530 hTrkVarVsPtTrue[iType][iTrkVar] -> SetTitleFont(
FTxt);
532 hTrkVarVsPtTrue[iType][iTrkVar] ->
GetXaxis() -> SetTitleFont(
FTxt);
533 hTrkVarVsPtTrue[iType][iTrkVar] ->
GetXaxis() -> SetTitleOffset(fOffX);
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]);
542 hTrkVarVsPtFrac[iType][iTrkVar] ->
SetLineColor(fTypeCol[iType]);
544 hTrkVarVsPtFrac[iType][iTrkVar] ->
SetFillColor(fTypeCol[iType]);
546 hTrkVarVsPtFrac[iType][iTrkVar] -> SetTitleFont(
FTxt);
548 hTrkVarVsPtFrac[iType][iTrkVar] ->
GetXaxis() -> SetTitleFont(
FTxt);
549 hTrkVarVsPtFrac[iType][iTrkVar] ->
GetXaxis() -> SetTitleOffset(fOffX);
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);
557 for (Int_t iPhysVar = 0; iPhysVar <
NPhysVar; iPhysVar++) {
560 hPhysVar[iType][iPhysVar] ->
SetLineColor(fTypeCol[iType]);
562 hPhysVar[iType][iPhysVar] ->
SetFillColor(fTypeCol[iType]);
564 hPhysVar[iType][iPhysVar] -> SetTitleFont(
FTxt);
566 hPhysVar[iType][iPhysVar] ->
GetXaxis() -> SetTitleFont(
FTxt);
567 hPhysVar[iType][iPhysVar] ->
GetXaxis() -> SetTitleOffset(fOffX);
569 hPhysVar[iType][iPhysVar] ->
GetYaxis() -> SetTitleFont(
FTxt);
570 hPhysVar[iType][iPhysVar] ->
GetYaxis() -> SetTitleOffset(fOffY);
573 hPhysVarDiff[iType][iPhysVar] ->
SetLineColor(fTypeCol[iType]);
575 hPhysVarDiff[iType][iPhysVar] ->
SetFillColor(fTypeCol[iType]);
577 hPhysVarDiff[iType][iPhysVar] -> SetTitleFont(
FTxt);
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);
586 hPhysVarFrac[iType][iPhysVar] ->
SetLineColor(fTypeCol[iType]);
588 hPhysVarFrac[iType][iPhysVar] ->
SetFillColor(fTypeCol[iType]);
590 hPhysVarFrac[iType][iPhysVar] -> SetTitleFont(
FTxt);
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]);
599 hPhysVarVsNTpc[iType][iPhysVar] ->
SetLineColor(fTypeCol[iType]);
601 hPhysVarVsNTpc[iType][iPhysVar] ->
SetFillColor(fTypeCol[iType]);
603 hPhysVarVsNTpc[iType][iPhysVar] -> SetTitleFont(
FTxt);
605 hPhysVarVsNTpc[iType][iPhysVar] ->
GetXaxis() -> SetTitleFont(
FTxt);
606 hPhysVarVsNTpc[iType][iPhysVar] ->
GetXaxis() -> SetTitleOffset(fOffX);
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]);
615 hPhysVarVsDcaXY[iType][iPhysVar] ->
SetLineColor(fTypeCol[iType]);
617 hPhysVarVsDcaXY[iType][iPhysVar] ->
SetFillColor(fTypeCol[iType]);
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);
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]);
631 hPhysVarVsDcaZ[iType][iPhysVar] ->
SetLineColor(fTypeCol[iType]);
633 hPhysVarVsDcaZ[iType][iPhysVar] ->
SetFillColor(fTypeCol[iType]);
635 hPhysVarVsDcaZ[iType][iPhysVar] -> SetTitleFont(
FTxt);
637 hPhysVarVsDcaZ[iType][iPhysVar] ->
GetXaxis() -> SetTitleFont(
FTxt);
638 hPhysVarVsDcaZ[iType][iPhysVar] ->
GetXaxis() -> SetTitleOffset(fOffX);
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]);
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);
653 hPhysVarVsPtReco[iType][iPhysVar] ->
GetXaxis() -> SetTitleFont(
FTxt);
654 hPhysVarVsPtReco[iType][iPhysVar] ->
GetXaxis() -> SetTitleOffset(fOffX);
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]);
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);
669 hPhysVarVsPtTrue[iType][iPhysVar] ->
GetXaxis() -> SetTitleFont(
FTxt);
670 hPhysVarVsPtTrue[iType][iPhysVar] ->
GetXaxis() -> SetTitleOffset(fOffX);
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]);
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);
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);
695 cout <<
" Set histogram styles." << endl;
706 cerr <<
"PANIC: trying to fill truth histograms in non-truth style! Check what you wrote!\n" << endl;
711 const auto nTpc = recoTrkVars[TRKVAR::NTPC];
712 const auto dcaXY = recoTrkVars[TRKVAR::DCAXY];
713 const auto dcaZ = recoTrkVars[TRKVAR::DCAZ];
716 const auto ptFrac = ptRec / ptTrue;
719 for (
size_t iTrkVar = 0; iTrkVar <
NTrkVar; iTrkVar++) {
722 const auto trkVarDiff = recoTrkVars[iTrkVar] - trueTrkVars[iTrkVar];
723 const auto trkVarFrac = recoTrkVars[iTrkVar] / trueTrkVars[iTrkVar];
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]);
738 for (
size_t iPhysVar = 0; iPhysVar <
NPhysVar; iPhysVar++) {
741 const auto trkVarDiff = recoPhysVars[iPhysVar] - truePhysVars[iPhysVar];
742 const auto trkVarFrac = recoPhysVars[iPhysVar] / truePhysVars[iPhysVar];
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]);
764 if (!isTruth[type]) {
765 cerr <<
"PANIC: trying to fill non-truth histograms in truth style! Check what you wrote!\n" << endl;
770 const auto nTpc = recoTrkVars[TRKVAR::NTPC];
771 const auto dcaXY = recoTrkVars[TRKVAR::DCAXY];
772 const auto dcaZ = recoTrkVars[TRKVAR::DCAZ];
775 const auto ptFrac = ptRec / ptTrue;
778 for (
size_t iTrkVar = 0; iTrkVar <
NTrkVar; iTrkVar++) {
781 if (!trkVarHasTruVal[iTrkVar])
continue;
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]);
794 for (
size_t iPhysVar = 0; iPhysVar <
NPhysVar; iPhysVar++) {
797 if (!physVarHasTruVal[iPhysVar])
continue;
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]);