12 std::lock_guard<std::mutex> locker(glock_);
13 gROOT->ProcessLine(
"#include <vector>");
15 ntotallayers_fit_ = trk_info->n_layers();
22 TDirectory::TContext contextEraser;
23 f_ = std::unique_ptr<TFile>(TFile::Open(
fileName.c_str(),
"recreate"));
26 TTreeValidation::initializeEfficiencyTree();
27 TTreeValidation::initializeFakeRateTree();
30 TTreeValidation::initializeCMSSWEfficiencyTree();
31 TTreeValidation::initializeCMSSWFakeRateTree();
34 for (
int i = 0;
i < nfvs_; ++
i)
35 fvs_[
i].resize(ntotallayers_fit_);
36 TTreeValidation::initializeFitTree();
38 TTreeValidation::initializeConfigTree();
41 void TTreeValidation::initializeEfficiencyTree() {
43 efftree_ = std::make_unique<TTree>(
"efftree",
"efftree");
44 efftree_->SetDirectory(0);
46 efftree_->Branch(
"evtID", &evtID_eff_);
47 efftree_->Branch(
"mcID", &mcID_eff_);
49 efftree_->Branch(
"nHits_mc", &nHits_mc_eff_);
50 efftree_->Branch(
"nLayers_mc", &nLayers_mc_eff_);
51 efftree_->Branch(
"lastlyr_mc", &lastlyr_mc_eff_);
53 efftree_->Branch(
"seedID_seed", &seedID_seed_eff_);
54 efftree_->Branch(
"seedID_build", &seedID_build_eff_);
55 efftree_->Branch(
"seedID_fit", &seedID_fit_eff_);
57 efftree_->Branch(
"x_mc_gen", &x_mc_gen_eff_);
58 efftree_->Branch(
"y_mc_gen", &y_mc_gen_eff_);
59 efftree_->Branch(
"z_mc_gen", &z_mc_gen_eff_);
61 efftree_->Branch(
"pt_mc_gen", &pt_mc_gen_eff_);
62 efftree_->Branch(
"phi_mc_gen", &phi_mc_gen_eff_);
63 efftree_->Branch(
"eta_mc_gen", &eta_mc_gen_eff_);
65 efftree_->Branch(
"mcmask_seed", &mcmask_seed_eff_);
66 efftree_->Branch(
"mcmask_build", &mcmask_build_eff_);
67 efftree_->Branch(
"mcmask_fit", &mcmask_fit_eff_);
69 efftree_->Branch(
"mcTSmask_seed", &mcTSmask_seed_eff_);
70 efftree_->Branch(
"mcTSmask_build", &mcTSmask_build_eff_);
71 efftree_->Branch(
"mcTSmask_fit", &mcTSmask_fit_eff_);
73 efftree_->Branch(
"xhit_seed", &xhit_seed_eff_);
74 efftree_->Branch(
"xhit_build", &xhit_build_eff_);
75 efftree_->Branch(
"xhit_fit", &xhit_fit_eff_);
77 efftree_->Branch(
"yhit_seed", &yhit_seed_eff_);
78 efftree_->Branch(
"yhit_build", &yhit_build_eff_);
79 efftree_->Branch(
"yhit_fit", &yhit_fit_eff_);
81 efftree_->Branch(
"zhit_seed", &zhit_seed_eff_);
82 efftree_->Branch(
"zhit_build", &zhit_build_eff_);
83 efftree_->Branch(
"zhit_fit", &zhit_fit_eff_);
85 efftree_->Branch(
"pt_mc_seed", &pt_mc_seed_eff_);
86 efftree_->Branch(
"pt_seed", &pt_seed_eff_);
87 efftree_->Branch(
"ept_seed", &ept_seed_eff_);
88 efftree_->Branch(
"pt_mc_build", &pt_mc_build_eff_);
89 efftree_->Branch(
"pt_build", &pt_build_eff_);
90 efftree_->Branch(
"ept_build", &ept_build_eff_);
91 efftree_->Branch(
"pt_mc_fit", &pt_mc_fit_eff_);
92 efftree_->Branch(
"pt_fit", &pt_fit_eff_);
93 efftree_->Branch(
"ept_fit", &ept_fit_eff_);
95 efftree_->Branch(
"phi_mc_seed", &phi_mc_seed_eff_);
96 efftree_->Branch(
"phi_seed", &phi_seed_eff_);
97 efftree_->Branch(
"ephi_seed", &ephi_seed_eff_);
98 efftree_->Branch(
"phi_mc_build", &phi_mc_build_eff_);
99 efftree_->Branch(
"phi_build", &phi_build_eff_);
100 efftree_->Branch(
"ephi_build", &ephi_build_eff_);
101 efftree_->Branch(
"phi_mc_fit", &phi_mc_fit_eff_);
102 efftree_->Branch(
"phi_fit", &phi_fit_eff_);
103 efftree_->Branch(
"ephi_fit", &ephi_fit_eff_);
105 efftree_->Branch(
"eta_mc_seed", &eta_mc_seed_eff_);
106 efftree_->Branch(
"eta_seed", &eta_seed_eff_);
107 efftree_->Branch(
"eeta_seed", &eeta_seed_eff_);
108 efftree_->Branch(
"eta_mc_build", &eta_mc_build_eff_);
109 efftree_->Branch(
"eta_build", &eta_build_eff_);
110 efftree_->Branch(
"eeta_build", &eeta_build_eff_);
111 efftree_->Branch(
"eta_mc_fit", &eta_mc_fit_eff_);
112 efftree_->Branch(
"eta_fit", &eta_fit_eff_);
113 efftree_->Branch(
"eeta_fit", &eeta_fit_eff_);
115 efftree_->Branch(
"nHits_seed", &nHits_seed_eff_);
116 efftree_->Branch(
"nHits_build", &nHits_build_eff_);
117 efftree_->Branch(
"nHits_fit", &nHits_fit_eff_);
119 efftree_->Branch(
"nLayers_seed", &nLayers_seed_eff_);
120 efftree_->Branch(
"nLayers_build", &nLayers_build_eff_);
121 efftree_->Branch(
"nLayers_fit", &nLayers_fit_eff_);
123 efftree_->Branch(
"nHitsMatched_seed", &nHitsMatched_seed_eff_);
124 efftree_->Branch(
"nHitsMatched_build", &nHitsMatched_build_eff_);
125 efftree_->Branch(
"nHitsMatched_fit", &nHitsMatched_fit_eff_);
127 efftree_->Branch(
"fracHitsMatched_seed", &fracHitsMatched_seed_eff_);
128 efftree_->Branch(
"fracHitsMatched_build", &fracHitsMatched_build_eff_);
129 efftree_->Branch(
"fracHitsMatched_fit", &fracHitsMatched_fit_eff_);
131 efftree_->Branch(
"lastlyr_seed", &lastlyr_seed_eff_);
132 efftree_->Branch(
"lastlyr_build", &lastlyr_build_eff_);
133 efftree_->Branch(
"lastlyr_fit", &lastlyr_fit_eff_);
135 efftree_->Branch(
"dphi_seed", &dphi_seed_eff_);
136 efftree_->Branch(
"dphi_build", &dphi_build_eff_);
137 efftree_->Branch(
"dphi_fit", &dphi_fit_eff_);
139 efftree_->Branch(
"hitchi2_seed", &hitchi2_seed_eff_);
140 efftree_->Branch(
"hitchi2_build", &hitchi2_build_eff_);
141 efftree_->Branch(
"hitchi2_fit", &hitchi2_fit_eff_);
143 efftree_->Branch(
"score_seed", &score_seed_eff_);
144 efftree_->Branch(
"score_build", &score_build_eff_);
145 efftree_->Branch(
"score_fit", &score_fit_eff_);
147 efftree_->Branch(
"helixchi2_seed", &helixchi2_seed_eff_);
148 efftree_->Branch(
"helixchi2_build", &helixchi2_build_eff_);
149 efftree_->Branch(
"helixchi2_fit", &helixchi2_fit_eff_);
151 efftree_->Branch(
"duplmask_seed", &duplmask_seed_eff_);
152 efftree_->Branch(
"duplmask_build", &duplmask_build_eff_);
153 efftree_->Branch(
"duplmask_fit", &duplmask_fit_eff_);
155 efftree_->Branch(
"nTkMatches_seed", &nTkMatches_seed_eff_);
156 efftree_->Branch(
"nTkMatches_build", &nTkMatches_build_eff_);
157 efftree_->Branch(
"nTkMatches_fit", &nTkMatches_fit_eff_);
159 efftree_->Branch(
"itermask_seed", &itermask_seed_eff_);
160 efftree_->Branch(
"itermask_build", &itermask_build_eff_);
161 efftree_->Branch(
"itermask_fit", &itermask_fit_eff_);
162 efftree_->Branch(
"iterduplmask_seed", &iterduplmask_seed_eff_);
163 efftree_->Branch(
"iterduplmask_build", &iterduplmask_build_eff_);
164 efftree_->Branch(
"iterduplmask_fit", &iterduplmask_fit_eff_);
165 efftree_->Branch(
"algo_seed", &algo_seed_eff_);
168 efftree_->Branch(
"hitlyrs_mc", &hitlyrs_mc_eff_);
169 efftree_->Branch(
"hitlyrs_seed", &hitlyrs_seed_eff_);
170 efftree_->Branch(
"hitlyrs_build", &hitlyrs_build_eff_);
171 efftree_->Branch(
"hitlyrs_fit", &hitlyrs_fit_eff_);
173 efftree_->Branch(
"hitidxs_mc", &hitidxs_mc_eff_);
174 efftree_->Branch(
"hitidxs_seed", &hitidxs_seed_eff_);
175 efftree_->Branch(
"hitidxs_build", &hitidxs_build_eff_);
176 efftree_->Branch(
"hitidxs_fit", &hitidxs_fit_eff_);
178 efftree_->Branch(
"hitmcTkIDs_mc", &hitmcTkIDs_mc_eff_);
179 efftree_->Branch(
"hitmcTkIDs_seed", &hitmcTkIDs_seed_eff_);
180 efftree_->Branch(
"hitmcTkIDs_build", &hitmcTkIDs_build_eff_);
181 efftree_->Branch(
"hitmcTkIDs_fit", &hitmcTkIDs_fit_eff_);
183 efftree_->Branch(
"hitxs_mc", &hitxs_mc_eff_);
184 efftree_->Branch(
"hitxs_seed", &hitxs_seed_eff_);
185 efftree_->Branch(
"hitxs_build", &hitxs_build_eff_);
186 efftree_->Branch(
"hitxs_fit", &hitxs_fit_eff_);
188 efftree_->Branch(
"hitys_mc", &hitys_mc_eff_);
189 efftree_->Branch(
"hitys_seed", &hitys_seed_eff_);
190 efftree_->Branch(
"hitys_build", &hitys_build_eff_);
191 efftree_->Branch(
"hitys_fit", &hitys_fit_eff_);
193 efftree_->Branch(
"hitzs_mc", &hitzs_mc_eff_);
194 efftree_->Branch(
"hitzs_seed", &hitzs_seed_eff_);
195 efftree_->Branch(
"hitzs_build", &hitzs_build_eff_);
196 efftree_->Branch(
"hitzs_fit", &hitzs_fit_eff_);
200 void TTreeValidation::initializeFakeRateTree() {
202 frtree_ = std::make_unique<TTree>(
"frtree",
"frtree");
203 frtree_->SetDirectory(0);
205 frtree_->Branch(
"evtID", &evtID_FR_);
206 frtree_->Branch(
"seedID", &seedID_FR_);
208 frtree_->Branch(
"seedmask_seed", &seedmask_seed_FR_);
209 frtree_->Branch(
"seedmask_build", &seedmask_build_FR_);
210 frtree_->Branch(
"seedmask_fit", &seedmask_fit_FR_);
212 frtree_->Branch(
"xhit_seed", &xhit_seed_FR_);
213 frtree_->Branch(
"xhit_build", &xhit_build_FR_);
214 frtree_->Branch(
"xhit_fit", &xhit_fit_FR_);
216 frtree_->Branch(
"yhit_seed", &yhit_seed_FR_);
217 frtree_->Branch(
"yhit_build", &yhit_build_FR_);
218 frtree_->Branch(
"yhit_fit", &yhit_fit_FR_);
220 frtree_->Branch(
"zhit_seed", &zhit_seed_FR_);
221 frtree_->Branch(
"zhit_build", &zhit_build_FR_);
222 frtree_->Branch(
"zhit_fit", &zhit_fit_FR_);
224 frtree_->Branch(
"pt_seed", &pt_seed_FR_);
225 frtree_->Branch(
"ept_seed", &ept_seed_FR_);
226 frtree_->Branch(
"pt_build", &pt_build_FR_);
227 frtree_->Branch(
"ept_build", &ept_build_FR_);
228 frtree_->Branch(
"pt_fit", &pt_fit_FR_);
229 frtree_->Branch(
"ept_fit", &ept_fit_FR_);
231 frtree_->Branch(
"phi_seed", &phi_seed_FR_);
232 frtree_->Branch(
"ephi_seed", &ephi_seed_FR_);
233 frtree_->Branch(
"phi_build", &phi_build_FR_);
234 frtree_->Branch(
"ephi_build", &ephi_build_FR_);
235 frtree_->Branch(
"phi_fit", &phi_fit_FR_);
236 frtree_->Branch(
"ephi_fit", &ephi_fit_FR_);
238 frtree_->Branch(
"eta_seed", &eta_seed_FR_);
239 frtree_->Branch(
"eeta_seed", &eeta_seed_FR_);
240 frtree_->Branch(
"eta_build", &eta_build_FR_);
241 frtree_->Branch(
"eeta_build", &eeta_build_FR_);
242 frtree_->Branch(
"eta_fit", &eta_fit_FR_);
243 frtree_->Branch(
"eeta_fit", &eeta_fit_FR_);
245 frtree_->Branch(
"nHits_seed", &nHits_seed_FR_);
246 frtree_->Branch(
"nHits_build", &nHits_build_FR_);
247 frtree_->Branch(
"nHits_fit", &nHits_fit_FR_);
249 frtree_->Branch(
"nLayers_seed", &nLayers_seed_FR_);
250 frtree_->Branch(
"nLayers_build", &nLayers_build_FR_);
251 frtree_->Branch(
"nLayers_fit", &nLayers_fit_FR_);
253 frtree_->Branch(
"nHitsMatched_seed", &nHitsMatched_seed_FR_);
254 frtree_->Branch(
"nHitsMatched_build", &nHitsMatched_build_FR_);
255 frtree_->Branch(
"nHitsMatched_fit", &nHitsMatched_fit_FR_);
257 frtree_->Branch(
"fracHitsMatched_seed", &fracHitsMatched_seed_FR_);
258 frtree_->Branch(
"fracHitsMatched_build", &fracHitsMatched_build_FR_);
259 frtree_->Branch(
"fracHitsMatched_fit", &fracHitsMatched_fit_FR_);
261 frtree_->Branch(
"lastlyr_seed", &lastlyr_seed_FR_);
262 frtree_->Branch(
"lastlyr_build", &lastlyr_build_FR_);
263 frtree_->Branch(
"lastlyr_fit", &lastlyr_fit_FR_);
265 frtree_->Branch(
"dphi_seed", &dphi_seed_FR_);
266 frtree_->Branch(
"dphi_build", &dphi_build_FR_);
267 frtree_->Branch(
"dphi_fit", &dphi_fit_FR_);
269 frtree_->Branch(
"hitchi2_seed", &hitchi2_seed_FR_);
270 frtree_->Branch(
"hitchi2_build", &hitchi2_build_FR_);
271 frtree_->Branch(
"hitchi2_fit", &hitchi2_fit_FR_);
273 frtree_->Branch(
"score_seed", &score_seed_FR_);
274 frtree_->Branch(
"score_build", &score_build_FR_);
275 frtree_->Branch(
"score_fit", &score_fit_FR_);
278 frtree_->Branch(
"mcID_seed", &mcID_seed_FR_);
279 frtree_->Branch(
"mcID_build", &mcID_build_FR_);
280 frtree_->Branch(
"mcID_fit", &mcID_fit_FR_);
282 frtree_->Branch(
"mcmask_seed", &mcmask_seed_FR_);
283 frtree_->Branch(
"mcmask_build", &mcmask_build_FR_);
284 frtree_->Branch(
"mcmask_fit", &mcmask_fit_FR_);
286 frtree_->Branch(
"mcTSmask_seed", &mcTSmask_seed_FR_);
287 frtree_->Branch(
"mcTSmask_build", &mcTSmask_build_FR_);
288 frtree_->Branch(
"mcTSmask_fit", &mcTSmask_fit_FR_);
290 frtree_->Branch(
"pt_mc_seed", &pt_mc_seed_FR_);
291 frtree_->Branch(
"pt_mc_build", &pt_mc_build_FR_);
292 frtree_->Branch(
"pt_mc_fit", &pt_mc_fit_FR_);
294 frtree_->Branch(
"phi_mc_seed", &phi_mc_seed_FR_);
295 frtree_->Branch(
"phi_mc_build", &phi_mc_build_FR_);
296 frtree_->Branch(
"phi_mc_fit", &phi_mc_fit_FR_);
298 frtree_->Branch(
"eta_mc_seed", &eta_mc_seed_FR_);
299 frtree_->Branch(
"eta_mc_build", &eta_mc_build_FR_);
300 frtree_->Branch(
"eta_mc_fit", &eta_mc_fit_FR_);
302 frtree_->Branch(
"nHits_mc_seed", &nHits_mc_seed_FR_);
303 frtree_->Branch(
"nHits_mc_build", &nHits_mc_build_FR_);
304 frtree_->Branch(
"nHits_mc_fit", &nHits_mc_fit_FR_);
306 frtree_->Branch(
"nLayers_mc_seed", &nLayers_mc_seed_FR_);
307 frtree_->Branch(
"nLayers_mc_build", &nLayers_mc_build_FR_);
308 frtree_->Branch(
"nLayers_mc_fit", &nLayers_mc_fit_FR_);
310 frtree_->Branch(
"lastlyr_mc_seed", &lastlyr_mc_seed_FR_);
311 frtree_->Branch(
"lastlyr_mc_build", &lastlyr_mc_build_FR_);
312 frtree_->Branch(
"lastlyr_mc_fit", &lastlyr_mc_fit_FR_);
314 frtree_->Branch(
"helixchi2_seed", &helixchi2_seed_FR_);
315 frtree_->Branch(
"helixchi2_build", &helixchi2_build_FR_);
316 frtree_->Branch(
"helixchi2_fit", &helixchi2_fit_FR_);
318 frtree_->Branch(
"duplmask_seed", &duplmask_seed_FR_);
319 frtree_->Branch(
"duplmask_build", &duplmask_build_FR_);
320 frtree_->Branch(
"duplmask_fit", &duplmask_fit_FR_);
322 frtree_->Branch(
"iTkMatches_seed", &iTkMatches_seed_FR_);
323 frtree_->Branch(
"iTkMatches_build", &iTkMatches_build_FR_);
324 frtree_->Branch(
"iTkMatches_fit", &iTkMatches_fit_FR_);
326 frtree_->Branch(
"algorithm", &algorithm_FR_);
329 frtree_->Branch(
"hitlyrs_seed", &hitlyrs_seed_FR_);
330 frtree_->Branch(
"hitlyrs_mc_seed", &hitlyrs_mc_seed_FR_);
331 frtree_->Branch(
"hitlyrs_build", &hitlyrs_build_FR_);
332 frtree_->Branch(
"hitlyrs_mc_build", &hitlyrs_mc_build_FR_);
333 frtree_->Branch(
"hitlyrs_fit", &hitlyrs_fit_FR_);
334 frtree_->Branch(
"hitlyrs_mc_fit", &hitlyrs_mc_fit_FR_);
336 frtree_->Branch(
"hitidxs_seed", &hitidxs_seed_FR_);
337 frtree_->Branch(
"hitidxs_mc_seed", &hitidxs_mc_seed_FR_);
338 frtree_->Branch(
"hitidxs_build", &hitidxs_build_FR_);
339 frtree_->Branch(
"hitidxs_mc_build", &hitidxs_mc_build_FR_);
340 frtree_->Branch(
"hitidxs_fit", &hitidxs_fit_FR_);
341 frtree_->Branch(
"hitidxs_mc_fit", &hitidxs_mc_fit_FR_);
343 frtree_->Branch(
"hitmcTkIDs_seed", &hitmcTkIDs_seed_FR_);
344 frtree_->Branch(
"hitmcTkIDs_mc_seed", &hitmcTkIDs_mc_seed_FR_);
345 frtree_->Branch(
"hitmcTkIDs_build", &hitmcTkIDs_build_FR_);
346 frtree_->Branch(
"hitmcTkIDs_mc_build", &hitmcTkIDs_mc_build_FR_);
347 frtree_->Branch(
"hitmcTkIDs_fit", &hitmcTkIDs_fit_FR_);
348 frtree_->Branch(
"hitmcTkIDs_mc_fit", &hitmcTkIDs_mc_fit_FR_);
350 frtree_->Branch(
"hitxs_seed", &hitxs_seed_FR_);
351 frtree_->Branch(
"hitxs_mc_seed", &hitxs_mc_seed_FR_);
352 frtree_->Branch(
"hitxs_build", &hitxs_build_FR_);
353 frtree_->Branch(
"hitxs_mc_build", &hitxs_mc_build_FR_);
354 frtree_->Branch(
"hitxs_fit", &hitxs_fit_FR_);
355 frtree_->Branch(
"hitxs_mc_fit", &hitxs_mc_fit_FR_);
357 frtree_->Branch(
"hitys_seed", &hitys_seed_FR_);
358 frtree_->Branch(
"hitys_mc_seed", &hitys_mc_seed_FR_);
359 frtree_->Branch(
"hitys_build", &hitys_build_FR_);
360 frtree_->Branch(
"hitys_mc_build", &hitys_mc_build_FR_);
361 frtree_->Branch(
"hitys_fit", &hitys_fit_FR_);
362 frtree_->Branch(
"hitys_mc_fit", &hitys_mc_fit_FR_);
364 frtree_->Branch(
"hitzs_seed", &hitzs_seed_FR_);
365 frtree_->Branch(
"hitzs_mc_seed", &hitzs_mc_seed_FR_);
366 frtree_->Branch(
"hitzs_build", &hitzs_build_FR_);
367 frtree_->Branch(
"hitzs_mc_build", &hitzs_mc_build_FR_);
368 frtree_->Branch(
"hitzs_fit", &hitzs_fit_FR_);
369 frtree_->Branch(
"hitzs_mc_fit", &hitzs_mc_fit_FR_);
373 void TTreeValidation::initializeConfigTree() {
375 configtree_ = std::make_unique<TTree>(
"configtree",
"configtree");
376 configtree_->SetDirectory(0);
378 configtree_->Branch(
"Ntracks", &Ntracks_);
379 configtree_->Branch(
"Nevents", &Nevents_);
381 configtree_->Branch(
"nLayers", &nLayers_);
383 configtree_->Branch(
"nlayers_per_seed", &nlayers_per_seed_);
384 configtree_->Branch(
"maxCand", &maxCand_);
385 configtree_->Branch(
"chi2Cut_min", &chi2Cut_min_);
386 configtree_->Branch(
"nSigma", &nSigma_);
387 configtree_->Branch(
"minDPhi", &minDPhi_);
388 configtree_->Branch(
"maxDPhi", &maxDPhi_);
389 configtree_->Branch(
"minDEta", &minDEta_);
390 configtree_->Branch(
"maxDEta", &maxDEta_);
392 configtree_->Branch(
"beamspotX", &beamspotX_);
393 configtree_->Branch(
"beamspotY", &beamspotY_);
394 configtree_->Branch(
"beamspotZ", &beamspotZ_);
396 configtree_->Branch(
"minSimPt", &minSimPt_);
397 configtree_->Branch(
"maxSimPt", &maxSimPt_);
399 configtree_->Branch(
"hitposerrXY", &hitposerrXY_);
400 configtree_->Branch(
"hitposerrZ", &hitposerrZ_);
401 configtree_->Branch(
"hitposerrR", &hitposerrR_);
403 configtree_->Branch(
"varXY", &varXY_);
404 configtree_->Branch(
"varZ", &varZ_);
406 configtree_->Branch(
"ptinverr049", &ptinverr049_);
407 configtree_->Branch(
"phierr049", &phierr049_);
408 configtree_->Branch(
"thetaerr049", &thetaerr049_);
409 configtree_->Branch(
"ptinverr012", &ptinverr012_);
410 configtree_->Branch(
"phierr012", &phierr012_);
411 configtree_->Branch(
"thetaerr012", &thetaerr012_);
414 void TTreeValidation::initializeCMSSWEfficiencyTree() {
416 cmsswefftree_ = std::make_unique<TTree>(
"cmsswefftree",
"cmsswefftree");
417 cmsswefftree_->SetDirectory(0);
419 cmsswefftree_->Branch(
"evtID", &evtID_ceff_);
420 cmsswefftree_->Branch(
"cmsswID", &cmsswID_ceff_);
421 cmsswefftree_->Branch(
"seedID_cmssw", &seedID_cmssw_ceff_);
424 cmsswefftree_->Branch(
"x_cmssw", &x_cmssw_ceff_);
425 cmsswefftree_->Branch(
"y_cmssw", &y_cmssw_ceff_);
426 cmsswefftree_->Branch(
"z_cmssw", &z_cmssw_ceff_);
428 cmsswefftree_->Branch(
"pt_cmssw", &pt_cmssw_ceff_);
429 cmsswefftree_->Branch(
"phi_cmssw", &phi_cmssw_ceff_);
430 cmsswefftree_->Branch(
"eta_cmssw", &eta_cmssw_ceff_);
432 cmsswefftree_->Branch(
"nHits_cmssw", &nHits_cmssw_ceff_);
433 cmsswefftree_->Branch(
"nLayers_cmssw", &nLayers_cmssw_ceff_);
434 cmsswefftree_->Branch(
"lastlyr_cmssw", &lastlyr_cmssw_ceff_);
437 cmsswefftree_->Branch(
"cmsswmask_build", &cmsswmask_build_ceff_);
438 cmsswefftree_->Branch(
"seedID_build", &seedID_build_ceff_);
439 cmsswefftree_->Branch(
"mcTrackID_build", &mcTrackID_build_ceff_);
441 cmsswefftree_->Branch(
"pt_build", &pt_build_ceff_);
442 cmsswefftree_->Branch(
"ept_build", &ept_build_ceff_);
443 cmsswefftree_->Branch(
"phi_build", &phi_build_ceff_);
444 cmsswefftree_->Branch(
"ephi_build", &ephi_build_ceff_);
445 cmsswefftree_->Branch(
"eta_build", &eta_build_ceff_);
446 cmsswefftree_->Branch(
"eeta_build", &eeta_build_ceff_);
448 cmsswefftree_->Branch(
"x_mc_build", &x_mc_build_ceff_);
449 cmsswefftree_->Branch(
"y_mc_build", &y_mc_build_ceff_);
450 cmsswefftree_->Branch(
"z_mc_build", &z_mc_build_ceff_);
451 cmsswefftree_->Branch(
"pt_mc_build", &pt_mc_build_ceff_);
452 cmsswefftree_->Branch(
"phi_mc_build", &phi_mc_build_ceff_);
453 cmsswefftree_->Branch(
"eta_mc_build", &eta_mc_build_ceff_);
455 cmsswefftree_->Branch(
"nHits_build", &nHits_build_ceff_);
456 cmsswefftree_->Branch(
"nLayers_build", &nLayers_build_ceff_);
457 cmsswefftree_->Branch(
"nHitsMatched_build", &nHitsMatched_build_ceff_);
458 cmsswefftree_->Branch(
"fracHitsMatched_build", &fracHitsMatched_build_ceff_);
459 cmsswefftree_->Branch(
"lastlyr_build", &lastlyr_build_ceff_);
461 cmsswefftree_->Branch(
"xhit_build", &xhit_build_ceff_);
462 cmsswefftree_->Branch(
"yhit_build", &yhit_build_ceff_);
463 cmsswefftree_->Branch(
"zhit_build", &zhit_build_ceff_);
465 cmsswefftree_->Branch(
"hitchi2_build", &hitchi2_build_ceff_);
466 cmsswefftree_->Branch(
"helixchi2_build", &helixchi2_build_ceff_);
467 cmsswefftree_->Branch(
"score_build", &score_build_ceff_);
468 cmsswefftree_->Branch(
"dphi_build", &dphi_build_ceff_);
470 cmsswefftree_->Branch(
"duplmask_build", &duplmask_build_ceff_);
471 cmsswefftree_->Branch(
"nTkMatches_build", &nTkMatches_build_ceff_);
473 cmsswefftree_->Branch(
"itermask_build", &itermask_build_ceff_);
474 cmsswefftree_->Branch(
"iterduplmask_build", &iterduplmask_build_ceff_);
477 cmsswefftree_->Branch(
"cmsswmask_fit", &cmsswmask_fit_ceff_);
478 cmsswefftree_->Branch(
"seedID_fit", &seedID_fit_ceff_);
479 cmsswefftree_->Branch(
"mcTrackID_fit", &mcTrackID_fit_ceff_);
481 cmsswefftree_->Branch(
"pt_fit", &pt_fit_ceff_);
482 cmsswefftree_->Branch(
"ept_fit", &ept_fit_ceff_);
483 cmsswefftree_->Branch(
"phi_fit", &phi_fit_ceff_);
484 cmsswefftree_->Branch(
"ephi_fit", &ephi_fit_ceff_);
485 cmsswefftree_->Branch(
"eta_fit", &eta_fit_ceff_);
486 cmsswefftree_->Branch(
"eeta_fit", &eeta_fit_ceff_);
488 cmsswefftree_->Branch(
"x_mc_fit", &x_mc_fit_ceff_);
489 cmsswefftree_->Branch(
"y_mc_fit", &y_mc_fit_ceff_);
490 cmsswefftree_->Branch(
"z_mc_fit", &z_mc_fit_ceff_);
491 cmsswefftree_->Branch(
"pt_mc_fit", &pt_mc_fit_ceff_);
492 cmsswefftree_->Branch(
"phi_mc_fit", &phi_mc_fit_ceff_);
493 cmsswefftree_->Branch(
"eta_mc_fit", &eta_mc_fit_ceff_);
495 cmsswefftree_->Branch(
"nHits_fit", &nHits_fit_ceff_);
496 cmsswefftree_->Branch(
"nLayers_fit", &nLayers_fit_ceff_);
497 cmsswefftree_->Branch(
"nHitsMatched_fit", &nHitsMatched_fit_ceff_);
498 cmsswefftree_->Branch(
"fracHitsMatched_fit", &fracHitsMatched_fit_ceff_);
499 cmsswefftree_->Branch(
"lastlyr_fit", &lastlyr_fit_ceff_);
501 cmsswefftree_->Branch(
"xhit_fit", &xhit_fit_ceff_);
502 cmsswefftree_->Branch(
"yhit_fit", &yhit_fit_ceff_);
503 cmsswefftree_->Branch(
"zhit_fit", &zhit_fit_ceff_);
505 cmsswefftree_->Branch(
"hitchi2_fit", &hitchi2_fit_ceff_);
506 cmsswefftree_->Branch(
"helixchi2_fit", &helixchi2_fit_ceff_);
507 cmsswefftree_->Branch(
"score_fit", &score_fit_ceff_);
508 cmsswefftree_->Branch(
"dphi_fit", &dphi_fit_ceff_);
510 cmsswefftree_->Branch(
"duplmask_fit", &duplmask_fit_ceff_);
511 cmsswefftree_->Branch(
"nTkMatches_fit", &nTkMatches_fit_ceff_);
513 cmsswefftree_->Branch(
"itermask_fit", &itermask_fit_ceff_);
514 cmsswefftree_->Branch(
"iterduplmask_fit", &iterduplmask_fit_ceff_);
516 cmsswefftree_->Branch(
"algo_seed", &algo_seed_ceff_);
519 cmsswefftree_->Branch(
"hitlyrs_cmssw", &hitlyrs_cmssw_ceff_);
520 cmsswefftree_->Branch(
"hitlyrs_build", &hitlyrs_build_ceff_);
521 cmsswefftree_->Branch(
"hitlyrs_mc_build", &hitlyrs_mc_build_ceff_);
522 cmsswefftree_->Branch(
"hitlyrs_fit", &hitlyrs_fit_ceff_);
523 cmsswefftree_->Branch(
"hitlyrs_mc_fit", &hitlyrs_mc_fit_ceff_);
525 cmsswefftree_->Branch(
"hitidxs_cmssw", &hitidxs_cmssw_ceff_);
526 cmsswefftree_->Branch(
"hitidxs_build", &hitidxs_build_ceff_);
527 cmsswefftree_->Branch(
"hitidxs_mc_build", &hitidxs_mc_build_ceff_);
528 cmsswefftree_->Branch(
"hitidxs_fit", &hitidxs_fit_ceff_);
529 cmsswefftree_->Branch(
"hitidxs_mc_fit", &hitidxs_mc_fit_ceff_);
533 void TTreeValidation::initializeCMSSWFakeRateTree() {
535 cmsswfrtree_ = std::make_unique<TTree>(
"cmsswfrtree",
"cmsswfrtree");
536 cmsswfrtree_->SetDirectory(0);
538 cmsswfrtree_->Branch(
"evtID", &evtID_cFR_);
539 cmsswfrtree_->Branch(
"seedID", &seedID_cFR_);
540 cmsswfrtree_->Branch(
"mcTrackID", &mcTrackID_cFR_);
543 cmsswfrtree_->Branch(
"x_mc", &x_mc_cFR_);
544 cmsswfrtree_->Branch(
"y_mc", &y_mc_cFR_);
545 cmsswfrtree_->Branch(
"z_mc", &z_mc_cFR_);
546 cmsswfrtree_->Branch(
"pt_mc", &pt_mc_cFR_);
547 cmsswfrtree_->Branch(
"phi_mc", &phi_mc_cFR_);
548 cmsswfrtree_->Branch(
"eta_mc", &eta_mc_cFR_);
551 cmsswfrtree_->Branch(
"cmsswID_build", &cmsswID_build_cFR_);
552 cmsswfrtree_->Branch(
"cmsswmask_build", &cmsswmask_build_cFR_);
554 cmsswfrtree_->Branch(
"pt_build", &pt_build_cFR_);
555 cmsswfrtree_->Branch(
"ept_build", &ept_build_cFR_);
556 cmsswfrtree_->Branch(
"phi_build", &phi_build_cFR_);
557 cmsswfrtree_->Branch(
"ephi_build", &ephi_build_cFR_);
558 cmsswfrtree_->Branch(
"eta_build", &eta_build_cFR_);
559 cmsswfrtree_->Branch(
"eeta_build", &eeta_build_cFR_);
561 cmsswfrtree_->Branch(
"nHits_build", &nHits_build_cFR_);
562 cmsswfrtree_->Branch(
"nLayers_build", &nLayers_build_cFR_);
563 cmsswfrtree_->Branch(
"nHitsMatched_build", &nHitsMatched_build_cFR_);
564 cmsswfrtree_->Branch(
"fracHitsMatched_build", &fracHitsMatched_build_cFR_);
565 cmsswfrtree_->Branch(
"lastlyr_build", &lastlyr_build_cFR_);
567 cmsswfrtree_->Branch(
"xhit_build", &xhit_build_cFR_);
568 cmsswfrtree_->Branch(
"yhit_build", &yhit_build_cFR_);
569 cmsswfrtree_->Branch(
"zhit_build", &zhit_build_cFR_);
571 cmsswfrtree_->Branch(
"hitchi2_build", &hitchi2_build_cFR_);
572 cmsswfrtree_->Branch(
"helixchi2_build", &helixchi2_build_cFR_);
573 cmsswfrtree_->Branch(
"score_build", &score_build_cFR_);
574 cmsswfrtree_->Branch(
"dphi_build", &dphi_build_cFR_);
576 cmsswfrtree_->Branch(
"duplmask_build", &duplmask_build_cFR_);
577 cmsswfrtree_->Branch(
"iTkMatches_build", &iTkMatches_build_cFR_);
579 cmsswfrtree_->Branch(
"seedID_cmssw_build", &seedID_cmssw_build_cFR_);
581 cmsswfrtree_->Branch(
"x_cmssw_build", &x_cmssw_build_cFR_);
582 cmsswfrtree_->Branch(
"y_cmssw_build", &y_cmssw_build_cFR_);
583 cmsswfrtree_->Branch(
"z_cmssw_build", &z_cmssw_build_cFR_);
585 cmsswfrtree_->Branch(
"pt_cmssw_build", &pt_cmssw_build_cFR_);
586 cmsswfrtree_->Branch(
"phi_cmssw_build", &phi_cmssw_build_cFR_);
587 cmsswfrtree_->Branch(
"eta_cmssw_build", &eta_cmssw_build_cFR_);
589 cmsswfrtree_->Branch(
"nHits_cmssw_build", &nHits_cmssw_build_cFR_);
590 cmsswfrtree_->Branch(
"nLayers_cmssw_build", &nLayers_cmssw_build_cFR_);
591 cmsswfrtree_->Branch(
"lastlyr_cmssw_build", &lastlyr_cmssw_build_cFR_);
594 cmsswfrtree_->Branch(
"cmsswID_fit", &cmsswID_fit_cFR_);
595 cmsswfrtree_->Branch(
"cmsswmask_fit", &cmsswmask_fit_cFR_);
597 cmsswfrtree_->Branch(
"pt_fit", &pt_fit_cFR_);
598 cmsswfrtree_->Branch(
"ept_fit", &ept_fit_cFR_);
599 cmsswfrtree_->Branch(
"phi_fit", &phi_fit_cFR_);
600 cmsswfrtree_->Branch(
"ephi_fit", &ephi_fit_cFR_);
601 cmsswfrtree_->Branch(
"eta_fit", &eta_fit_cFR_);
602 cmsswfrtree_->Branch(
"eeta_fit", &eeta_fit_cFR_);
604 cmsswfrtree_->Branch(
"nHits_fit", &nHits_fit_cFR_);
605 cmsswfrtree_->Branch(
"nLayers_fit", &nLayers_fit_cFR_);
606 cmsswfrtree_->Branch(
"nHitsMatched_fit", &nHitsMatched_fit_cFR_);
607 cmsswfrtree_->Branch(
"fracHitsMatched_fit", &fracHitsMatched_fit_cFR_);
608 cmsswfrtree_->Branch(
"lastlyr_fit", &lastlyr_fit_cFR_);
610 cmsswfrtree_->Branch(
"xhit_fit", &xhit_fit_cFR_);
611 cmsswfrtree_->Branch(
"yhit_fit", &yhit_fit_cFR_);
612 cmsswfrtree_->Branch(
"zhit_fit", &zhit_fit_cFR_);
614 cmsswfrtree_->Branch(
"hitchi2_fit", &hitchi2_fit_cFR_);
615 cmsswfrtree_->Branch(
"helixchi2_fit", &helixchi2_fit_cFR_);
616 cmsswfrtree_->Branch(
"score_fit", &score_fit_cFR_);
617 cmsswfrtree_->Branch(
"dphi_fit", &dphi_fit_cFR_);
619 cmsswfrtree_->Branch(
"duplmask_fit", &duplmask_fit_cFR_);
620 cmsswfrtree_->Branch(
"iTkMatches_fit", &iTkMatches_fit_cFR_);
622 cmsswfrtree_->Branch(
"seedID_cmssw_fit", &seedID_cmssw_fit_cFR_);
624 cmsswfrtree_->Branch(
"x_cmssw_fit", &x_cmssw_fit_cFR_);
625 cmsswfrtree_->Branch(
"y_cmssw_fit", &y_cmssw_fit_cFR_);
626 cmsswfrtree_->Branch(
"z_cmssw_fit", &z_cmssw_fit_cFR_);
628 cmsswfrtree_->Branch(
"pt_cmssw_fit", &pt_cmssw_fit_cFR_);
629 cmsswfrtree_->Branch(
"phi_cmssw_fit", &phi_cmssw_fit_cFR_);
630 cmsswfrtree_->Branch(
"eta_cmssw_fit", &eta_cmssw_fit_cFR_);
632 cmsswfrtree_->Branch(
"nHits_cmssw_fit", &nHits_cmssw_fit_cFR_);
633 cmsswfrtree_->Branch(
"nLayers_cmssw_fit", &nLayers_cmssw_fit_cFR_);
634 cmsswfrtree_->Branch(
"lastlyr_cmssw_fit", &lastlyr_cmssw_fit_cFR_);
636 cmsswfrtree_->Branch(
"algorithm", &algorithm_cFR_);
639 cmsswfrtree_->Branch(
"hitlyrs_mc", &hitlyrs_mc_cFR_);
640 cmsswfrtree_->Branch(
"hitlyrs_build", &hitlyrs_build_cFR_);
641 cmsswfrtree_->Branch(
"hitlyrs_cmssw_build", &hitlyrs_cmssw_build_cFR_);
642 cmsswfrtree_->Branch(
"hitlyrs_fit", &hitlyrs_fit_cFR_);
643 cmsswfrtree_->Branch(
"hitlyrs_cmssw_fit", &hitlyrs_cmssw_fit_cFR_);
645 cmsswfrtree_->Branch(
"hitidxs_mc", &hitidxs_mc_cFR_);
646 cmsswfrtree_->Branch(
"hitidxs_build", &hitidxs_build_cFR_);
647 cmsswfrtree_->Branch(
"hitidxs_cmssw_build", &hitidxs_cmssw_build_cFR_);
648 cmsswfrtree_->Branch(
"hitidxs_fit", &hitidxs_fit_cFR_);
649 cmsswfrtree_->Branch(
"hitidxs_cmssw_fit", &hitidxs_cmssw_fit_cFR_);
653 void TTreeValidation::initializeFitTree() {
654 fittree_ = std::make_unique<TTree>(
"fittree",
"fittree");
655 fittree_->SetDirectory(0);
657 fittree_->Branch(
"ntotallayers", &ntotallayers_fit_,
"ntotallayers_fit_/I");
658 fittree_->Branch(
"tkid", &tkid_fit_,
"tkid_fit_/I");
659 fittree_->Branch(
"evtid", &evtid_fit_,
"evtid_fit_/I");
661 fittree_->Branch(
"z_prop", &z_prop_fit_,
"z_prop_fit_[ntotallayers_fit_]/F");
662 fittree_->Branch(
"ez_prop", &ez_prop_fit_,
"ez_prop_fit_[ntotallayers_fit_]/F");
663 fittree_->Branch(
"z_hit", &z_hit_fit_,
"z_hit_fit_[ntotallayers_fit_]/F");
664 fittree_->Branch(
"ez_hit", &ez_hit_fit_,
"ez_hit_fit_[ntotallayers_fit_]/F");
665 fittree_->Branch(
"z_sim", &z_sim_fit_,
"z_sim_fit_[ntotallayers_fit_]/F");
666 fittree_->Branch(
"ez_sim", &ez_sim_fit_,
"ez_sim_fit_[ntotallayers_fit_]/F");
668 fittree_->Branch(
"pphi_prop", &pphi_prop_fit_,
"pphi_prop_fit_[ntotallayers_fit_]/F");
669 fittree_->Branch(
"epphi_prop", &epphi_prop_fit_,
"epphi_prop_fit_[ntotallayers_fit_]/F");
670 fittree_->Branch(
"pphi_hit", &pphi_hit_fit_,
"pphi_hit_fit_[ntotallayers_fit_]/F");
671 fittree_->Branch(
"epphi_hit", &epphi_hit_fit_,
"epphi_hit_fit_[ntotallayers_fit_]/F");
672 fittree_->Branch(
"pphi_sim", &pphi_sim_fit_,
"pphi_sim_fit_[ntotallayers_fit_]/F");
673 fittree_->Branch(
"epphi_sim", &epphi_sim_fit_,
"epphi_sim_fit_[ntotallayers_fit_]/F");
675 fittree_->Branch(
"pt_up", &pt_up_fit_,
"pt_up_fit_[ntotallayers_fit_]/F");
676 fittree_->Branch(
"ept_up", &ept_up_fit_,
"ept_up_fit_[ntotallayers_fit_]/F");
677 fittree_->Branch(
"pt_sim", &pt_sim_fit_,
"pt_sim_fit_[ntotallayers_fit_]/F");
678 fittree_->Branch(
"ept_sim", &ept_sim_fit_,
"ept_sim_fit_[ntotallayers_fit_]/F");
680 fittree_->Branch(
"mphi_up", &mphi_up_fit_,
"mphi_up_fit_[ntotallayers_fit_]/F");
681 fittree_->Branch(
"emphi_up", &emphi_up_fit_,
"emphi_up_fit_[ntotallayers_fit_]/F");
682 fittree_->Branch(
"mphi_sim", &mphi_sim_fit_,
"mphi_sim_fit_[ntotallayers_fit_]/F");
683 fittree_->Branch(
"emphi_sim", &emphi_sim_fit_,
"emphi_sim_fit_[ntotallayers_fit_]/F");
685 fittree_->Branch(
"meta_up", &meta_up_fit_,
"meta_up_fit_[ntotallayers_fit_]/F");
686 fittree_->Branch(
"emeta_up", &emeta_up_fit_,
"emeta_up_fit_[ntotallayers_fit_]/F");
687 fittree_->Branch(
"meta_sim", &meta_sim_fit_,
"meta_sim_fit_[ntotallayers_fit_]/F");
688 fittree_->Branch(
"emeta_sim", &emeta_sim_fit_,
"emeta_sim_fit_[ntotallayers_fit_]/F");
692 std::lock_guard<std::mutex> locker(glock_);
699 for (
int itrack = 0; itrack < (
int)evt_tracks.size(); itrack++) {
700 trackExtra_tmp[itrack] = evt_extras[evt_tracks[itrack].label()];
704 evt_extras = trackExtra_tmp;
708 for (
int itrack = 0; itrack < (
int)evt_tracks.size(); itrack++) {
709 evt_tracks[itrack].setLabel(itrack);
714 std::lock_guard<std::mutex> locker(glock_);
716 fitValTkMapMap_[tkid][
layer] = tmpfitval;
720 std::lock_guard<std::mutex> locker(glock_);
722 fitValTkMapMap_.clear();
725 simToSeedMap_.clear();
726 simToBuildMap_.clear();
727 simToFitMap_.clear();
730 seedToBuildMap_.clear();
731 seedToFitMap_.clear();
734 cmsswToBuildMap_.clear();
735 cmsswToFitMap_.clear();
738 seedToCmsswMap_.clear();
739 cmsswToSeedMap_.clear();
742 buildToCmsswMap_.clear();
745 buildToFitMap_.clear();
746 fitToBuildMap_.clear();
749 candToSeedMapDumbCMSSW_.clear();
750 fitToSeedMapDumbCMSSW_.clear();
754 std::lock_guard<std::mutex> locker(glock_);
756 const auto& layerhits =
ev.layerHits_;
760 const auto& simtracks =
ev.simTracks_;
761 const auto& seedtracks =
ev.seedTracks_;
762 auto& seedextras =
ev.seedTracksExtra_;
763 const auto& buildtracks =
ev.candidateTracks_;
764 auto& buildextras =
ev.candidateTracksExtra_;
765 const auto& fittracks =
ev.fitTracks_;
766 auto& fitextras =
ev.fitTracksExtra_;
769 for (
int itrack = 0; itrack < (
int)seedtracks.size(); itrack++) {
770 const auto&
track = seedtracks[itrack];
771 auto& extra = seedextras[itrack];
773 extra.findMatchingSeedHits(
track,
track, layerhits);
774 extra.setMCTrackIDInfo(
784 for (
int itrack = 0; itrack < (
int)buildtracks.size(); itrack++) {
785 const auto&
track = buildtracks[itrack];
786 auto& extra = buildextras[itrack];
789 extra.findMatchingSeedHits(
track, seedtracks[
track.label()], layerhits);
791 extra.findMatchingSeedHits(
track, seedtracks[candToSeedMapDumbCMSSW_[
track.label()]], layerhits);
798 for (
int itrack = 0; itrack < (
int)fittracks.size(); itrack++) {
799 const auto&
track = fittracks[itrack];
800 auto& extra = fitextras[itrack];
803 extra.findMatchingSeedHits(
track, seedtracks[
track.label()], layerhits);
805 extra.findMatchingSeedHits(
track, seedtracks[fitToSeedMapDumbCMSSW_[
track.label()]], layerhits);
814 storeSeedAndMCID(
ev);
816 const auto& cmsswtracks =
ev.cmsswTracks_;
817 const auto& cmsswextras =
ev.cmsswTracksExtra_;
818 const auto& seedtracks =
ev.seedTracks_;
819 const auto& buildtracks =
ev.candidateTracks_;
820 auto& buildextras =
ev.candidateTracksExtra_;
821 const auto& fittracks =
ev.fitTracks_;
822 auto& fitextras =
ev.fitTracksExtra_;
827 setupCMSSWMatching(
ev, reducedCMSSW, cmsswHitIDMap);
830 for (
int itrack = 0; itrack < (
int)buildtracks.size(); itrack++) {
831 const auto&
track = buildtracks[itrack];
832 auto& extra = buildextras[itrack];
835 extra.findMatchingSeedHits(
track,
836 seedtracks[
track.label()],
840 extra.setCMSSWTrackIDInfoByTrkParams(
track, layerhits, cmsswtracks, reducedCMSSW,
true);
842 extra.setCMSSWTrackIDInfoByHits(
track,
850 extra.setCMSSWTrackIDInfoByHits(
track,
855 reducedCMSSW[cmsswtracks[buildToCmsswMap_[
track.label()]].label()].label());
857 std::cerr <<
"Specified CMSSW validation, but using an incorrect matching option! Exiting..." << std::endl;
863 for (
int itrack = 0; itrack < (
int)fittracks.size(); itrack++) {
864 const auto&
track = fittracks[itrack];
865 auto& extra = fitextras[itrack];
868 extra.findMatchingSeedHits(
track,
869 seedtracks[
track.label()],
873 extra.setCMSSWTrackIDInfoByTrkParams(
track, layerhits, cmsswtracks, reducedCMSSW,
true);
875 extra.setCMSSWTrackIDInfoByHits(
track,
883 extra.setCMSSWTrackIDInfoByHits(
889 reducedCMSSW[cmsswtracks[buildToCmsswMap_[fitToBuildMap_[
track.label()]]].label()].label());
891 std::cerr <<
"Specified CMSSW validation, but using an incorrect matching option! Exiting..." << std::endl;
899 std::lock_guard<std::mutex> locker(glock_);
901 TTreeValidation::mapRefTkToRecoTks(
ev.seedTracks_,
ev.seedTracksExtra_, simToSeedMap_);
902 TTreeValidation::mapRefTkToRecoTks(
ev.candidateTracks_,
ev.candidateTracksExtra_, simToBuildMap_);
903 TTreeValidation::mapRefTkToRecoTks(
ev.fitTracks_,
ev.fitTracksExtra_, simToFitMap_);
906 void TTreeValidation::mapRefTkToRecoTks(
const TrackVec& evt_tracks,
909 for (
auto itrack = 0; itrack < (
int)evt_tracks.size(); ++itrack) {
910 auto&&
track(evt_tracks[itrack]);
911 auto&& extra(evt_extras[itrack]);
913 if (extra.mcTrackID() >= 0)
915 refTkMap[extra.mcTrackID()].push_back(
920 if (extra.cmsswTrackID() >= 0)
922 refTkMap[extra.cmsswTrackID()].push_back(
928 for (
auto&& refTkMatches : refTkMap) {
929 if (refTkMatches.second.size() < 2)
931 auto& extra(evt_extras[refTkMatches.second[0]]);
932 extra.setDuplicateInfo(0,
bool(
false));
941 tmpMatches.emplace_back(evt_tracks[
label]);
945 for (
auto itrack = 0; itrack < (
int)tmpMatches.size();
948 refTkMatches.second[itrack] = tmpMatches[itrack].label();
952 for (
auto&&
label : refTkMatches.second)
954 auto& extra(evt_extras[
label]);
955 extra.setDuplicateInfo(duplicateID,
bool(
true));
963 std::lock_guard<std::mutex> locker(glock_);
965 TTreeValidation::mapSeedTkToRecoTk(
ev.candidateTracks_,
ev.candidateTracksExtra_, seedToBuildMap_);
966 TTreeValidation::mapSeedTkToRecoTk(
ev.fitTracks_,
ev.fitTracksExtra_, seedToFitMap_);
969 void TTreeValidation::mapSeedTkToRecoTk(
const TrackVec& evt_tracks,
972 for (
auto&&
track : evt_tracks) {
973 seedTkMap[evt_extras[
track.label()].seedID()] =
track.label();
978 std::lock_guard<std::mutex> locker(glock_);
979 TTreeValidation::makeRecoTkToRecoTkMap(
980 buildToFitMap_,
ev.candidateTracks_,
ev.candidateTracksExtra_,
ev.fitTracks_,
ev.fitTracksExtra_);
981 TTreeValidation::makeRecoTkToRecoTkMap(
982 fitToBuildMap_,
ev.fitTracks_,
ev.fitTracksExtra_,
ev.candidateTracks_,
ev.candidateTracksExtra_);
985 void TTreeValidation::makeRecoTkToRecoTkMap(
TkIDToTkIDMap& refToPairMap,
992 for (
auto&& reftrack : reftracks) {
993 const auto& refextra = refextras[reftrack.label()];
994 for (
auto&& pairtrack : pairtracks) {
995 const auto& pairextra = pairextras[pairtrack.label()];
996 if (refextra.seedID() == pairextra.seedID()) {
997 refToPairMap[reftrack.label()] = pairtrack.label();
1005 std::lock_guard<std::mutex> locker(glock_);
1007 TTreeValidation::mapRefTkToRecoTks(
ev.candidateTracks_,
ev.candidateTracksExtra_, cmsswToBuildMap_);
1008 TTreeValidation::mapRefTkToRecoTks(
ev.fitTracks_,
ev.fitTracksExtra_, cmsswToFitMap_);
1012 const auto& seedtracks =
ev.seedTracks_;
1013 const auto& cmsswtracks =
ev.cmsswTracks_;
1014 for (
int itrack = 0; itrack < (
int)seedtracks.size(); itrack++) {
1015 for (
auto&& cmsswtrack : cmsswtracks) {
1016 if (cmsswtrack.label() == itrack) {
1017 seedToCmsswMap_[seedtracks[itrack].label()] = cmsswtrack.label();
1025 const auto& seedtracks =
ev.seedTracks_;
1027 for (
const auto& seedToCmsswPair : seedToCmsswMap_) {
1028 const auto seedlabel =
1031 const auto cmsswlabel = seedToCmsswPair.second;
1033 for (
int itrack = 0; itrack < (
int)seedtracks.size(); itrack++) {
1034 const auto& seedtrack = seedtracks[itrack];
1035 if (seedtrack.label() == seedlabel) {
1036 cmsswToSeedMap_[cmsswlabel] = itrack;
1044 std::lock_guard<std::mutex> locker(glock_);
1046 TTreeValidation::makeRecoTkToSeedTkMapDumbCMSSW(
1047 ev.candidateTracksExtra_,
ev.seedTracksExtra_, candToSeedMapDumbCMSSW_);
1048 TTreeValidation::makeRecoTkToSeedTkMapDumbCMSSW(
ev.fitTracksExtra_,
ev.seedTracksExtra_, fitToSeedMapDumbCMSSW_);
1051 void TTreeValidation::makeRecoTkToSeedTkMapDumbCMSSW(
const TrackExtraVec& recoextras,
1054 for (
int itrack = 0; itrack < (
int)recoextras.size(); itrack++) {
1055 const auto reco_seedID = recoextras[itrack].seedID();
1056 for (
int jtrack = 0; jtrack < (
int)seedextras.size(); jtrack++) {
1057 const auto seed_seedID = seedextras[jtrack].seedID();
1058 if (reco_seedID == seed_seedID) {
1059 recoToSeedMap[itrack] = jtrack;
1067 auto& seedtracks =
ev.seedTracks_;
1068 auto& candtracks =
ev.candidateTracks_;
1069 auto& fittracks =
ev.fitTracks_;
1073 for (
auto& seedtrack : seedtracks) {
1074 seedtrack.setScore(
getScoreCand(score_calc, seedtrack));
1078 for (
const auto& candToSeedPair : candToSeedMapDumbCMSSW_) {
1079 auto& candtrack = candtracks[candToSeedPair.first];
1081 candtrack.setScore(
getScoreCand(score_calc, candtrack));
1083 for (
const auto& fitToSeedPair : fitToSeedMapDumbCMSSW_) {
1084 auto& fittrack = fittracks[fitToSeedPair.first];
1090 void TTreeValidation::storeSeedAndMCID(
Event&
ev) {
1091 const auto& buildtracks =
ev.candidateTracks_;
1092 auto& buildextras =
ev.candidateTracksExtra_;
1094 const auto& fittracks =
ev.fitTracks_;
1095 auto& fitextras =
ev.fitTracksExtra_;
1097 const auto& cmsswtracks =
ev.cmsswTracks_;
1098 auto& cmsswextras =
ev.cmsswTracksExtra_;
1102 for (
int itrack = 0; itrack < (
int)buildtracks.size(); itrack++) {
1103 auto& extra = buildextras[itrack];
1104 const int seedID = extra.seedID();
1106 extra.setmcTrackID(seedID);
1108 if (seedToCmsswMap_.count(seedID)) {
1109 extra.setseedID(seedToCmsswMap_[seedID]);
1111 for (
int ctrack = 0; ctrack < (
int)cmsswextras.size(); ctrack++) {
1112 if (cmsswextras[ctrack].seedID() == extra.seedID()) {
1113 buildToCmsswMap_[itrack] = cmsswtracks[ctrack].label();
1119 extra.setseedID(--newlabel);
1124 for (
int itrack = 0; itrack < (
int)fittracks.size(); itrack++) {
1125 auto& extra = fitextras[itrack];
1127 extra.setmcTrackID(buildextras[fitToBuildMap_[itrack]].mcTrackID());
1128 extra.setseedID(buildextras[fitToBuildMap_[itrack]].seedID());
1132 void TTreeValidation::setupCMSSWMatching(
const Event&
ev,
1136 const auto& layerhits =
ev.layerHits_;
1137 const auto& cmsswtracks =
ev.cmsswTracks_;
1138 auto& cmsswextras =
ev.cmsswTracksExtra_;
1139 const auto& seedtracks =
ev.seedTracks_;
1142 reducedCMSSW.resize(cmsswtracks.size());
1144 for (
int itrack = 0; itrack < (
int)cmsswtracks.size(); itrack++) {
1146 auto& cmsswextra = cmsswextras[itrack];
1147 const auto& cmsswtrack = cmsswtracks[itrack];
1148 const auto& seedtrack = seedtracks[cmsswToSeedMap_[cmsswtrack.label()]];
1151 cmsswextra.findMatchingSeedHits(cmsswtrack, seedtrack, layerhits);
1154 const auto seedID = cmsswextra.seedID();
1155 const auto&
params = cmsswtrack.parameters();
1159 for (
int ihit = 0; ihit < cmsswtrack.nTotalHits(); ihit++) {
1160 const int lyr = cmsswtrack.getHitLyr(ihit);
1161 const int idx = cmsswtrack.getHitIdx(ihit);
1164 if (cmsswextra.isSeedHit(lyr,
idx))
1167 if (lyr >= 0 &&
idx >= 0) {
1168 tmpmap[lyr].push_back(
idx);
1169 cmsswHitIDMap[lyr][
idx].push_back(cmsswtrack.label());
1174 reducedCMSSW[itrack] = ReducedTrack(cmsswtrack.label(), seedID, tmpv, cmsswtrack.momPhi(), tmpmap);
1178 int TTreeValidation::getLastFoundHit(
const int trackMCHitID,
const int mcTrackID,
const Event&
ev) {
1180 if (
ev.simHitsInfo_[trackMCHitID].mcTrackID() == mcTrackID) {
1181 mcHitID = trackMCHitID;
1183 mcHitID =
ev.simTracks_[mcTrackID].getMCHitIDFromLayer(
ev.layerHits_,
ev.simHitsInfo_[trackMCHitID].layer());
1188 int TTreeValidation::getMaskAssignment(
const int refID) {
1195 }
else if (refID == -10) {
1200 if (refID == -1 || refID == -5 || refID == -8 || refID == -9) {
1202 }
else if (refID == -2) {
1210 if (refID == -1 || refID == -9) {
1224 void TTreeValidation::resetFitBranches() {
1225 for (
int ilayer = 0; ilayer < ntotallayers_fit_; ++ilayer) {
1226 z_prop_fit_[ilayer] = -1000.f;
1227 ez_prop_fit_[ilayer] = -1000.f;
1228 z_hit_fit_[ilayer] = -1000.f;
1229 ez_hit_fit_[ilayer] = -1000.f;
1230 z_sim_fit_[ilayer] = -1000.f;
1231 ez_sim_fit_[ilayer] = -1000.f;
1233 pphi_prop_fit_[ilayer] = -1000.f;
1234 epphi_prop_fit_[ilayer] = -1000.f;
1235 pphi_hit_fit_[ilayer] = -1000.f;
1236 epphi_hit_fit_[ilayer] = -1000.f;
1237 pphi_sim_fit_[ilayer] = -1000.f;
1238 epphi_sim_fit_[ilayer] = -1000.f;
1240 pt_up_fit_[ilayer] = -1000.f;
1241 ept_up_fit_[ilayer] = -1000.f;
1242 pt_sim_fit_[ilayer] = -1000.f;
1243 ept_sim_fit_[ilayer] = -1000.f;
1245 mphi_up_fit_[ilayer] = -1000.f;
1246 emphi_up_fit_[ilayer] = -1000.f;
1247 mphi_sim_fit_[ilayer] = -1000.f;
1248 emphi_sim_fit_[ilayer] = -1000.f;
1250 meta_up_fit_[ilayer] = -1000.f;
1251 emeta_up_fit_[ilayer] = -1000.f;
1252 meta_sim_fit_[ilayer] = -1000.f;
1253 emeta_sim_fit_[ilayer] = -1000.f;
1258 std::lock_guard<std::mutex> locker(glock_);
1260 evtid_fit_ =
ev.evtID();
1261 const auto& simtracks =
ev.simTracks_;
1262 const auto& layerhits =
ev.layerHits_;
1263 const auto& simtrackstates =
ev.simTrackStates_;
1265 for (
auto&& fitvalmapmap : fitValTkMapMap_) {
1266 TTreeValidation::resetFitBranches();
1268 tkid_fit_ = fitvalmapmap.first;
1270 const auto& simtrack = simtracks[tkid_fit_];
1271 const auto& fitvalmap = fitvalmapmap.second;
1272 for (
int ilayer = 0; ilayer < ntotallayers_fit_; ++ilayer) {
1273 if (fitvalmap.count(ilayer)) {
1274 const auto&
hit = layerhits[ilayer][simtrack.getHitIdx(ilayer)];
1275 const auto& initTS = simtrackstates.at(
hit.mcHitID());
1276 const auto& fitval = fitvalmap.at(ilayer);
1278 z_hit_fit_[ilayer] =
hit.
z();
1280 z_sim_fit_[ilayer] = initTS.z();
1281 ez_sim_fit_[ilayer] = initTS.ezz();
1282 z_prop_fit_[ilayer] = fitval.ppz;
1283 ez_prop_fit_[ilayer] = fitval.eppz;
1285 pphi_hit_fit_[ilayer] =
hit.phi();
1287 pphi_sim_fit_[ilayer] = initTS.posPhi();
1288 epphi_sim_fit_[ilayer] = initTS.eposPhi();
1289 pphi_prop_fit_[ilayer] = fitval.ppphi;
1290 epphi_prop_fit_[ilayer] = fitval.eppphi;
1292 pt_up_fit_[ilayer] = fitval.upt;
1293 ept_up_fit_[ilayer] = fitval.eupt;
1294 pt_sim_fit_[ilayer] = initTS.pT();
1295 ept_sim_fit_[ilayer] = initTS.epT();
1297 mphi_up_fit_[ilayer] = fitval.umphi;
1298 emphi_up_fit_[ilayer] = fitval.eumphi;
1299 mphi_sim_fit_[ilayer] = initTS.momPhi();
1300 emphi_sim_fit_[ilayer] = initTS.emomPhi();
1302 meta_up_fit_[ilayer] = fitval.umeta;
1303 emeta_up_fit_[ilayer] = fitval.eumeta;
1304 meta_sim_fit_[ilayer] = initTS.momEta();
1305 emeta_sim_fit_[ilayer] = initTS.emomEta();
1312 void TTreeValidation::fillFullHitInfo(
const Event&
ev,
1314 std::vector<int>& lyrs,
1315 std::vector<int>& idxs,
1316 std::vector<int>& mcTkIDs,
1317 std::vector<float>& xs,
1318 std::vector<float>& ys,
1319 std::vector<float>& zs) {
1321 const auto& layerHits =
ev.layerHits_;
1322 const auto& simHitsInfo =
ev.simHitsInfo_;
1325 const auto nTotalHits =
track.nTotalHits();
1326 lyrs.resize(nTotalHits);
1327 idxs.resize(nTotalHits);
1328 mcTkIDs.resize(nTotalHits, -99);
1329 xs.resize(nTotalHits, -9999.
f);
1330 ys.resize(nTotalHits, -9999.
f);
1331 zs.resize(nTotalHits, -9999.
f);
1334 for (
auto ihit = 0; ihit < nTotalHits; ihit++) {
1335 const auto lyr =
track.getHitLyr(ihit);
1336 const auto idx =
track.getHitIdx(ihit);
1346 const auto&
hit = layerHits[lyr][
idx];
1347 mcTkIDs[ihit] =
hit.mcTrackID(simHitsInfo);
1354 void TTreeValidation::fillMinHitInfo(
const Track&
track, std::vector<int>& lyrs, std::vector<int>& idxs) {
1355 for (
int ihit = 0; ihit <
track.nTotalHits(); ihit++) {
1356 lyrs.emplace_back(
track.getHitLyr(ihit));
1357 idxs.emplace_back(
track.getHitIdx(ihit));
1362 std::lock_guard<std::mutex> locker(glock_);
1364 const auto ievt =
ev.evtID();
1365 const auto& evt_sim_tracks =
ev.simTracks_;
1366 const auto& evt_seed_tracks =
ev.seedTracks_;
1367 const auto& evt_seed_extras =
ev.seedTracksExtra_;
1368 const auto& evt_build_tracks =
ev.candidateTracks_;
1369 const auto& evt_build_extras =
ev.candidateTracksExtra_;
1370 const auto& evt_fit_tracks =
ev.fitTracks_;
1371 const auto& evt_fit_extras =
ev.fitTracksExtra_;
1372 const auto& evt_layer_hits =
ev.layerHits_;
1373 const auto& evt_sim_trackstates =
ev.simTrackStates_;
1375 unsigned int count = 0;
1376 for (
const auto& simtrack : evt_sim_tracks) {
1379 hitlyrs_mc_eff_.clear();
1380 hitlyrs_seed_eff_.clear();
1381 hitlyrs_build_eff_.clear();
1382 hitlyrs_fit_eff_.clear();
1384 hitidxs_mc_eff_.clear();
1385 hitidxs_seed_eff_.clear();
1386 hitidxs_build_eff_.clear();
1387 hitidxs_fit_eff_.clear();
1389 hitmcTkIDs_mc_eff_.clear();
1390 hitmcTkIDs_seed_eff_.clear();
1391 hitmcTkIDs_build_eff_.clear();
1392 hitmcTkIDs_fit_eff_.clear();
1394 hitxs_mc_eff_.clear();
1395 hitxs_seed_eff_.clear();
1396 hitxs_build_eff_.clear();
1397 hitxs_fit_eff_.clear();
1399 hitys_mc_eff_.clear();
1400 hitys_seed_eff_.clear();
1401 hitys_build_eff_.clear();
1402 hitys_fit_eff_.clear();
1404 hitzs_mc_eff_.clear();
1405 hitzs_seed_eff_.clear();
1406 hitzs_build_eff_.clear();
1407 hitzs_fit_eff_.clear();
1411 mcID_eff_ = simtrack.label();
1414 x_mc_gen_eff_ = simtrack.x();
1415 y_mc_gen_eff_ = simtrack.y();
1416 z_mc_gen_eff_ = simtrack.z();
1418 pt_mc_gen_eff_ = simtrack.pT();
1419 phi_mc_gen_eff_ = simtrack.momPhi();
1420 eta_mc_gen_eff_ = simtrack.momEta();
1421 nHits_mc_eff_ = simtrack.nFoundHits();
1422 nLayers_mc_eff_ = simtrack.nUniqueLayers();
1423 lastlyr_mc_eff_ = simtrack.getLastFoundHitLyr();
1425 itermask_seed_eff_ = 0;
1426 itermask_build_eff_ = 0;
1427 itermask_fit_eff_ = 0;
1428 iterduplmask_seed_eff_ = 0;
1429 iterduplmask_build_eff_ = 0;
1430 iterduplmask_fit_eff_ = 0;
1434 for (
auto aa :
ev.simTracksExtra_[
count].seedAlgos()) {
1435 algo_seed_eff_ = (algo_seed_eff_ | (1 << aa));
1442 TTreeValidation::fillFullHitInfo(
ev,
1452 if (simToSeedMap_.count(mcID_eff_) &&
1456 for (
unsigned int ii = 0;
ii < simToSeedMap_[mcID_eff_].size();
ii++) {
1457 const int theAlgo = evt_seed_tracks[simToSeedMap_[mcID_eff_][
ii]].algoint();
1458 if ((itermask_seed_eff_ >> theAlgo) & 1)
1459 iterduplmask_seed_eff_ = (iterduplmask_seed_eff_ | (1 << theAlgo));
1460 itermask_seed_eff_ = (itermask_seed_eff_ | (1 << theAlgo));
1462 const auto& seedtrack =
1463 evt_seed_tracks[simToSeedMap_[mcID_eff_][0]];
1464 const auto& seedextra = evt_seed_extras[seedtrack.label()];
1465 mcmask_seed_eff_ = 1;
1467 seedID_seed_eff_ = seedextra.seedID();
1471 TTreeValidation::getLastFoundHit(seedtrack.getLastFoundMCHitID(evt_layer_hits), mcID_eff_,
ev);
1473 const TrackState& initLayTS = evt_sim_trackstates[mcHitID];
1475 pt_mc_seed_eff_ = initLayTS.pT();
1476 phi_mc_seed_eff_ = initLayTS.momPhi();
1477 eta_mc_seed_eff_ = initLayTS.momEta();
1478 helixchi2_seed_eff_ =
computeHelixChi2(initLayTS.parameters, seedtrack.parameters(), seedtrack.errors());
1480 mcTSmask_seed_eff_ = 1;
1484 pt_mc_seed_eff_ = pt_mc_gen_eff_;
1485 phi_mc_seed_eff_ = phi_mc_gen_eff_;
1486 eta_mc_seed_eff_ = eta_mc_gen_eff_;
1487 helixchi2_seed_eff_ =
computeHelixChi2(simtrack.parameters(), seedtrack.parameters(), seedtrack.errors());
1489 mcTSmask_seed_eff_ = 0;
1491 pt_mc_seed_eff_ = -101;
1492 phi_mc_seed_eff_ = -101;
1493 eta_mc_seed_eff_ = -101;
1494 helixchi2_seed_eff_ = -101;
1496 mcTSmask_seed_eff_ = -2;
1500 const Hit& lasthit = evt_layer_hits[seedtrack.getLastFoundHitLyr()][seedtrack.getLastFoundHitIdx()];
1501 xhit_seed_eff_ = lasthit.
x();
1502 yhit_seed_eff_ = lasthit.
y();
1503 zhit_seed_eff_ = lasthit.
z();
1505 pt_seed_eff_ = seedtrack.pT();
1506 ept_seed_eff_ = seedtrack.epT();
1507 phi_seed_eff_ = seedtrack.momPhi();
1508 ephi_seed_eff_ = seedtrack.emomPhi();
1509 eta_seed_eff_ = seedtrack.momEta();
1510 eeta_seed_eff_ = seedtrack.emomEta();
1513 nHits_seed_eff_ = seedtrack.nFoundHits();
1514 nLayers_seed_eff_ = seedtrack.nUniqueLayers();
1515 nHitsMatched_seed_eff_ = seedextra.nHitsMatched();
1516 fracHitsMatched_seed_eff_ = seedextra.fracHitsMatched();
1517 lastlyr_seed_eff_ = seedtrack.getLastFoundHitLyr();
1520 dphi_seed_eff_ = seedextra.dPhi();
1523 hitchi2_seed_eff_ = seedtrack.chi2();
1524 score_seed_eff_ = seedtrack.score();
1526 duplmask_seed_eff_ = seedextra.isDuplicate();
1527 nTkMatches_seed_eff_ = simToSeedMap_[mcID_eff_].size();
1531 TTreeValidation::fillFullHitInfo(
ev,
1535 hitmcTkIDs_seed_eff_,
1541 mcmask_seed_eff_ = (simtrack.isFindable() ? 0 : -1);
1543 seedID_seed_eff_ = -99;
1545 pt_mc_seed_eff_ = -99;
1546 phi_mc_seed_eff_ = -99;
1547 eta_mc_seed_eff_ = -99;
1548 helixchi2_seed_eff_ = -99;
1550 mcTSmask_seed_eff_ = -1;
1552 xhit_seed_eff_ = -2000;
1553 yhit_seed_eff_ = -2000;
1554 zhit_seed_eff_ = -2000;
1557 ept_seed_eff_ = -99;
1558 phi_seed_eff_ = -99;
1559 ephi_seed_eff_ = -99;
1560 eta_seed_eff_ = -99;
1561 eeta_seed_eff_ = -99;
1563 nHits_seed_eff_ = -99;
1564 nLayers_seed_eff_ = -99;
1565 nHitsMatched_seed_eff_ = -99;
1566 fracHitsMatched_seed_eff_ = -99;
1567 lastlyr_seed_eff_ = -99;
1569 dphi_seed_eff_ = -99;
1571 hitchi2_seed_eff_ = -99;
1572 score_seed_eff_ = -17000;
1574 duplmask_seed_eff_ = -1;
1575 nTkMatches_seed_eff_ = -99;
1579 if (simToBuildMap_.count(mcID_eff_) &&
1583 for (
unsigned int ii = 0;
ii < simToBuildMap_[mcID_eff_].size();
ii++) {
1584 const int theAlgo = evt_build_tracks[simToBuildMap_[mcID_eff_][
ii]].algoint();
1585 if ((itermask_build_eff_ >> theAlgo) & 1)
1586 iterduplmask_build_eff_ = (iterduplmask_build_eff_ | (1 << theAlgo));
1587 itermask_build_eff_ = (itermask_build_eff_ | (1 << theAlgo));
1589 const auto& buildtrack =
1590 evt_build_tracks[simToBuildMap_[mcID_eff_][0]];
1591 const auto& buildextra =
1592 evt_build_extras[buildtrack.label()];
1593 mcmask_build_eff_ = 1;
1595 seedID_build_eff_ = buildextra.seedID();
1599 TTreeValidation::getLastFoundHit(buildtrack.getLastFoundMCHitID(evt_layer_hits), mcID_eff_,
ev);
1601 const TrackState& initLayTS = evt_sim_trackstates[mcHitID];
1603 pt_mc_build_eff_ = initLayTS.pT();
1604 phi_mc_build_eff_ = initLayTS.momPhi();
1605 eta_mc_build_eff_ = initLayTS.momEta();
1606 helixchi2_build_eff_ =
computeHelixChi2(initLayTS.parameters, buildtrack.parameters(), buildtrack.errors());
1608 mcTSmask_build_eff_ = 1;
1612 pt_mc_build_eff_ = pt_mc_gen_eff_;
1613 phi_mc_build_eff_ = phi_mc_gen_eff_;
1614 eta_mc_build_eff_ = eta_mc_gen_eff_;
1615 helixchi2_build_eff_ =
computeHelixChi2(simtrack.parameters(), buildtrack.parameters(), buildtrack.errors());
1617 mcTSmask_build_eff_ = 0;
1619 pt_mc_build_eff_ = -101;
1620 phi_mc_build_eff_ = -101;
1621 eta_mc_build_eff_ = -101;
1622 helixchi2_build_eff_ = -101;
1624 mcTSmask_build_eff_ = -2;
1628 const Hit& lasthit = evt_layer_hits[buildtrack.getLastFoundHitLyr()][buildtrack.getLastFoundHitIdx()];
1629 xhit_build_eff_ = lasthit.
x();
1630 yhit_build_eff_ = lasthit.
y();
1631 zhit_build_eff_ = lasthit.
z();
1633 pt_build_eff_ = buildtrack.pT();
1634 ept_build_eff_ = buildtrack.epT();
1635 phi_build_eff_ = buildtrack.momPhi();
1636 ephi_build_eff_ = buildtrack.emomPhi();
1637 eta_build_eff_ = buildtrack.momEta();
1638 eeta_build_eff_ = buildtrack.emomEta();
1640 nHits_build_eff_ = buildtrack.nFoundHits();
1641 nLayers_build_eff_ = buildtrack.nUniqueLayers();
1642 nHitsMatched_build_eff_ = buildextra.nHitsMatched();
1643 fracHitsMatched_build_eff_ = buildextra.fracHitsMatched();
1644 lastlyr_build_eff_ = buildtrack.getLastFoundHitLyr();
1647 dphi_build_eff_ = buildextra.dPhi();
1650 hitchi2_build_eff_ = buildtrack.chi2();
1651 score_build_eff_ = buildtrack.score();
1653 duplmask_build_eff_ = buildextra.isDuplicate();
1654 nTkMatches_build_eff_ = simToBuildMap_[mcID_eff_].size();
1658 TTreeValidation::fillFullHitInfo(
ev,
1662 hitmcTkIDs_build_eff_,
1668 mcmask_build_eff_ = (simtrack.isFindable() ? 0 : -1);
1670 seedID_build_eff_ = -99;
1672 pt_mc_build_eff_ = -99;
1673 phi_mc_build_eff_ = -99;
1674 eta_mc_build_eff_ = -99;
1675 helixchi2_build_eff_ = -99;
1677 mcTSmask_build_eff_ = -1;
1679 xhit_build_eff_ = -2000;
1680 yhit_build_eff_ = -2000;
1681 zhit_build_eff_ = -2000;
1683 pt_build_eff_ = -99;
1684 ept_build_eff_ = -99;
1685 phi_build_eff_ = -99;
1686 ephi_build_eff_ = -99;
1687 eta_build_eff_ = -99;
1688 eeta_build_eff_ = -99;
1690 nHits_build_eff_ = -99;
1691 nLayers_build_eff_ = -99;
1692 nHitsMatched_build_eff_ = -99;
1693 fracHitsMatched_build_eff_ = -99;
1694 lastlyr_build_eff_ = -99;
1696 dphi_build_eff_ = -99;
1698 hitchi2_build_eff_ = -99;
1699 score_build_eff_ = -17000;
1701 duplmask_build_eff_ = -1;
1702 nTkMatches_build_eff_ = -99;
1706 if (simToFitMap_.count(mcID_eff_) &&
1710 for (
unsigned int ii = 0;
ii < simToFitMap_[mcID_eff_].size();
ii++) {
1711 const int theAlgo = evt_fit_tracks[simToFitMap_[mcID_eff_][
ii]].algoint();
1712 if ((itermask_fit_eff_ >> theAlgo) & 1)
1713 iterduplmask_fit_eff_ = (iterduplmask_fit_eff_ | (1 << theAlgo));
1714 itermask_fit_eff_ = (itermask_fit_eff_ | (1 << theAlgo));
1716 const auto& fittrack =
1717 evt_fit_tracks[simToFitMap_[mcID_eff_][0]];
1718 const auto& fitextra = evt_fit_extras[fittrack.label()];
1719 mcmask_fit_eff_ = 1;
1721 seedID_fit_eff_ = fitextra.seedID();
1725 TTreeValidation::getLastFoundHit(fittrack.getLastFoundMCHitID(evt_layer_hits), mcID_eff_,
ev);
1727 const TrackState& initLayTS = evt_sim_trackstates[mcHitID];
1729 pt_mc_fit_eff_ = initLayTS.pT();
1730 phi_mc_fit_eff_ = initLayTS.momPhi();
1731 eta_mc_fit_eff_ = initLayTS.momEta();
1732 helixchi2_fit_eff_ =
computeHelixChi2(initLayTS.parameters, fittrack.parameters(), fittrack.errors());
1734 mcTSmask_fit_eff_ = 1;
1738 pt_mc_fit_eff_ = pt_mc_gen_eff_;
1739 phi_mc_fit_eff_ = phi_mc_gen_eff_;
1740 eta_mc_fit_eff_ = eta_mc_gen_eff_;
1741 helixchi2_fit_eff_ =
computeHelixChi2(simtrack.parameters(), fittrack.parameters(), fittrack.errors());
1743 mcTSmask_fit_eff_ = 0;
1745 pt_mc_fit_eff_ = -101;
1746 phi_mc_fit_eff_ = -101;
1747 eta_mc_fit_eff_ = -101;
1748 helixchi2_fit_eff_ = -101;
1750 mcTSmask_fit_eff_ = -2;
1754 const Hit& lasthit = evt_layer_hits[fittrack.getLastFoundHitLyr()][fittrack.getLastFoundHitIdx()];
1755 xhit_fit_eff_ = lasthit.
x();
1756 yhit_fit_eff_ = lasthit.
y();
1757 zhit_fit_eff_ = lasthit.
z();
1759 pt_fit_eff_ = fittrack.pT();
1760 ept_fit_eff_ = fittrack.epT();
1761 phi_fit_eff_ = fittrack.momPhi();
1762 ephi_fit_eff_ = fittrack.emomPhi();
1763 eta_fit_eff_ = fittrack.momEta();
1764 eeta_fit_eff_ = fittrack.emomEta();
1767 nHits_fit_eff_ = fittrack.nFoundHits();
1768 nLayers_fit_eff_ = fittrack.nUniqueLayers();
1769 nHitsMatched_fit_eff_ = fitextra.nHitsMatched();
1770 fracHitsMatched_fit_eff_ = fitextra.fracHitsMatched();
1771 lastlyr_fit_eff_ = fittrack.getLastFoundHitLyr();
1774 dphi_fit_eff_ = fitextra.dPhi();
1777 hitchi2_fit_eff_ = fittrack.chi2();
1778 score_fit_eff_ = fittrack.score();
1780 duplmask_fit_eff_ = fitextra.isDuplicate();
1781 nTkMatches_fit_eff_ = simToFitMap_[mcID_eff_].size();
1785 TTreeValidation::fillFullHitInfo(
ev,
1789 hitmcTkIDs_fit_eff_,
1795 mcmask_fit_eff_ = (simtrack.isFindable() ? 0 : -1);
1797 seedID_fit_eff_ = -99;
1799 pt_mc_fit_eff_ = -99;
1800 phi_mc_fit_eff_ = -99;
1801 eta_mc_fit_eff_ = -99;
1802 helixchi2_fit_eff_ = -99;
1804 mcTSmask_fit_eff_ = -1;
1806 xhit_fit_eff_ = -2000;
1807 yhit_fit_eff_ = -2000;
1808 zhit_fit_eff_ = -2000;
1813 ephi_fit_eff_ = -99;
1815 eeta_fit_eff_ = -99;
1817 nHits_fit_eff_ = -99;
1818 nLayers_fit_eff_ = -99;
1819 nHitsMatched_fit_eff_ = -99;
1820 fracHitsMatched_fit_eff_ = -99;
1821 lastlyr_fit_eff_ = -99;
1823 dphi_fit_eff_ = -99;
1825 hitchi2_fit_eff_ = -99;
1826 score_fit_eff_ = -17000;
1828 duplmask_fit_eff_ = -1;
1829 nTkMatches_fit_eff_ = -99;
1837 std::lock_guard<std::mutex> locker(glock_);
1839 const auto ievt =
ev.evtID();
1840 const auto& evt_sim_tracks =
1842 const auto& evt_seed_tracks =
ev.seedTracks_;
1843 const auto& evt_seed_extras =
ev.seedTracksExtra_;
1844 const auto& evt_build_tracks =
ev.candidateTracks_;
1845 const auto& evt_build_extras =
ev.candidateTracksExtra_;
1846 const auto& evt_fit_tracks =
ev.fitTracks_;
1847 const auto& evt_fit_extras =
ev.fitTracksExtra_;
1848 const auto& evt_layer_hits =
ev.layerHits_;
1849 const auto& evt_sim_trackstates =
ev.simTrackStates_;
1851 for (
const auto& seedtrack : evt_seed_tracks) {
1853 hitlyrs_seed_FR_.clear();
1854 hitlyrs_mc_seed_FR_.clear();
1855 hitlyrs_build_FR_.clear();
1856 hitlyrs_mc_build_FR_.clear();
1857 hitlyrs_fit_FR_.clear();
1858 hitlyrs_mc_fit_FR_.clear();
1860 hitidxs_seed_FR_.clear();
1861 hitidxs_mc_seed_FR_.clear();
1862 hitidxs_build_FR_.clear();
1863 hitidxs_mc_build_FR_.clear();
1864 hitidxs_fit_FR_.clear();
1865 hitidxs_mc_fit_FR_.clear();
1867 hitmcTkIDs_seed_FR_.clear();
1868 hitmcTkIDs_mc_seed_FR_.clear();
1869 hitmcTkIDs_build_FR_.clear();
1870 hitmcTkIDs_mc_build_FR_.clear();
1871 hitmcTkIDs_fit_FR_.clear();
1872 hitmcTkIDs_mc_fit_FR_.clear();
1874 hitxs_seed_FR_.clear();
1875 hitxs_mc_seed_FR_.clear();
1876 hitxs_build_FR_.clear();
1877 hitxs_mc_build_FR_.clear();
1878 hitxs_fit_FR_.clear();
1879 hitxs_mc_fit_FR_.clear();
1881 hitys_seed_FR_.clear();
1882 hitys_mc_seed_FR_.clear();
1883 hitys_build_FR_.clear();
1884 hitys_mc_build_FR_.clear();
1885 hitys_fit_FR_.clear();
1886 hitys_mc_fit_FR_.clear();
1888 hitzs_seed_FR_.clear();
1889 hitzs_mc_seed_FR_.clear();
1890 hitzs_build_FR_.clear();
1891 hitzs_mc_build_FR_.clear();
1892 hitzs_fit_FR_.clear();
1893 hitzs_mc_fit_FR_.clear();
1899 const auto& seedextra = evt_seed_extras[seedtrack.label()];
1900 seedID_FR_ = seedextra.seedID();
1910 pt_seed_FR_ = seedtrack.pT();
1911 ept_seed_FR_ = seedtrack.epT();
1912 phi_seed_FR_ = seedtrack.momPhi();
1913 ephi_seed_FR_ = seedtrack.emomPhi();
1914 eta_seed_FR_ = seedtrack.momEta();
1915 eeta_seed_FR_ = seedtrack.emomEta();
1917 nHits_seed_FR_ = seedtrack.nFoundHits();
1918 nLayers_seed_FR_ = seedtrack.nUniqueLayers();
1919 nHitsMatched_seed_FR_ = seedextra.nHitsMatched();
1920 fracHitsMatched_seed_FR_ = seedextra.fracHitsMatched();
1921 lastlyr_seed_FR_ = seedtrack.getLastFoundHitLyr();
1923 algorithm_FR_ = seedtrack.algoint();
1926 dphi_seed_FR_ = seedextra.dPhi();
1929 hitchi2_seed_FR_ = seedtrack.chi2();
1930 score_seed_FR_ = seedtrack.score();
1933 TTreeValidation::fillFullHitInfo(
ev,
1937 hitmcTkIDs_seed_FR_,
1943 mcID_seed_FR_ = seedextra.mcTrackID();
1944 mcmask_seed_FR_ = TTreeValidation::getMaskAssignment(mcID_seed_FR_);
1946 if (mcmask_seed_FR_ == 1)
1948 const auto& simtrack = evt_sim_tracks[mcID_seed_FR_];
1951 TTreeValidation::getLastFoundHit(seedtrack.getLastFoundMCHitID(evt_layer_hits), mcID_seed_FR_,
ev);
1953 const TrackState& initLayTS = evt_sim_trackstates[mcHitID];
1954 pt_mc_seed_FR_ = initLayTS.pT();
1955 phi_mc_seed_FR_ = initLayTS.momPhi();
1956 eta_mc_seed_FR_ = initLayTS.momEta();
1957 helixchi2_seed_FR_ =
computeHelixChi2(initLayTS.parameters, seedtrack.parameters(), seedtrack.errors());
1959 mcTSmask_seed_FR_ = 1;
1961 pt_mc_seed_FR_ = simtrack.pT();
1962 phi_mc_seed_FR_ = simtrack.momPhi();
1963 eta_mc_seed_FR_ = simtrack.momEta();
1964 helixchi2_seed_FR_ =
computeHelixChi2(simtrack.parameters(), seedtrack.parameters(), seedtrack.errors());
1966 mcTSmask_seed_FR_ = 0;
1968 pt_mc_seed_FR_ = -101;
1969 phi_mc_seed_FR_ = -101;
1970 eta_mc_seed_FR_ = -101;
1971 helixchi2_seed_FR_ = -101;
1973 mcTSmask_seed_FR_ = -2;
1976 nHits_mc_seed_FR_ = simtrack.nFoundHits();
1977 nLayers_mc_seed_FR_ = simtrack.nUniqueLayers();
1978 lastlyr_mc_seed_FR_ = simtrack.getLastFoundHitLyr();
1980 duplmask_seed_FR_ = seedextra.isDuplicate();
1981 iTkMatches_seed_FR_ =
1986 TTreeValidation::fillFullHitInfo(
ev,
1988 hitlyrs_mc_seed_FR_,
1989 hitidxs_mc_seed_FR_,
1990 hitmcTkIDs_mc_seed_FR_,
1996 pt_mc_seed_FR_ = -99;
1997 phi_mc_seed_FR_ = -99;
1998 eta_mc_seed_FR_ = -99;
1999 helixchi2_seed_FR_ = -99;
2001 mcTSmask_seed_FR_ = -1;
2003 nHits_mc_seed_FR_ = -99;
2004 nLayers_mc_seed_FR_ = -99;
2005 lastlyr_mc_seed_FR_ = -99;
2007 duplmask_seed_FR_ = -1;
2008 iTkMatches_seed_FR_ = -99;
2014 if (seedToBuildMap_.count(seedID_FR_)) {
2015 seedmask_build_FR_ = 1;
2017 const auto& buildtrack = evt_build_tracks[seedToBuildMap_[seedID_FR_]];
2018 const auto& buildextra = evt_build_extras[buildtrack.label()];
2021 const Hit& lasthit = evt_layer_hits[buildtrack.getLastFoundHitLyr()][buildtrack.getLastFoundHitIdx()];
2022 xhit_build_FR_ = lasthit.
x();
2023 yhit_build_FR_ = lasthit.
y();
2024 zhit_build_FR_ = lasthit.
z();
2026 pt_build_FR_ = buildtrack.pT();
2027 ept_build_FR_ = buildtrack.epT();
2028 phi_build_FR_ = buildtrack.momPhi();
2029 ephi_build_FR_ = buildtrack.emomPhi();
2030 eta_build_FR_ = buildtrack.momEta();
2031 eeta_build_FR_ = buildtrack.emomEta();
2033 nHits_build_FR_ = buildtrack.nFoundHits();
2034 nLayers_build_FR_ = buildtrack.nUniqueLayers();
2035 nHitsMatched_build_FR_ = buildextra.nHitsMatched();
2036 fracHitsMatched_build_FR_ = buildextra.fracHitsMatched();
2037 lastlyr_build_FR_ = buildtrack.getLastFoundHitLyr();
2040 dphi_build_FR_ = buildextra.dPhi();
2043 hitchi2_build_FR_ = buildtrack.chi2();
2044 score_build_FR_ = buildtrack.score();
2047 TTreeValidation::fillFullHitInfo(
ev,
2051 hitmcTkIDs_build_FR_,
2057 mcID_build_FR_ = buildextra.mcTrackID();
2058 mcmask_build_FR_ = TTreeValidation::getMaskAssignment(mcID_build_FR_);
2060 if (mcmask_build_FR_ == 1)
2062 const auto& simtrack = evt_sim_tracks[mcID_build_FR_];
2065 TTreeValidation::getLastFoundHit(buildtrack.getLastFoundMCHitID(evt_layer_hits), mcID_build_FR_,
ev);
2067 const TrackState& initLayTS = evt_sim_trackstates[mcHitID];
2068 pt_mc_build_FR_ = initLayTS.pT();
2069 phi_mc_build_FR_ = initLayTS.momPhi();
2070 eta_mc_build_FR_ = initLayTS.momEta();
2071 helixchi2_build_FR_ =
computeHelixChi2(initLayTS.parameters, buildtrack.parameters(), buildtrack.errors());
2073 mcTSmask_build_FR_ = 1;
2075 pt_mc_build_FR_ = simtrack.pT();
2076 phi_mc_build_FR_ = simtrack.momPhi();
2077 eta_mc_build_FR_ = simtrack.momEta();
2078 helixchi2_build_FR_ =
computeHelixChi2(simtrack.parameters(), buildtrack.parameters(), buildtrack.errors());
2080 mcTSmask_build_FR_ = 0;
2082 pt_mc_build_FR_ = -101;
2083 phi_mc_build_FR_ = -101;
2084 eta_mc_build_FR_ = -101;
2085 helixchi2_build_FR_ = -101;
2087 mcTSmask_build_FR_ = -2;
2090 nHits_mc_build_FR_ = simtrack.nFoundHits();
2091 nLayers_mc_build_FR_ = simtrack.nUniqueLayers();
2092 lastlyr_mc_build_FR_ = simtrack.getLastFoundHitLyr();
2094 duplmask_build_FR_ = buildextra.isDuplicate();
2095 iTkMatches_build_FR_ =
2100 TTreeValidation::fillFullHitInfo(
ev,
2102 hitlyrs_mc_build_FR_,
2103 hitidxs_mc_build_FR_,
2104 hitmcTkIDs_mc_build_FR_,
2107 hitzs_mc_build_FR_);
2111 pt_mc_build_FR_ = -99;
2112 phi_mc_build_FR_ = -99;
2113 eta_mc_build_FR_ = -99;
2114 helixchi2_build_FR_ = -99;
2116 mcTSmask_build_FR_ = -1;
2118 nHits_mc_build_FR_ = -99;
2119 nLayers_mc_build_FR_ = -99;
2120 lastlyr_mc_build_FR_ = -99;
2122 duplmask_build_FR_ = -1;
2123 iTkMatches_build_FR_ = -99;
2129 seedmask_build_FR_ = 0;
2132 xhit_build_FR_ = -3000;
2133 yhit_build_FR_ = -3000;
2134 zhit_build_FR_ = -3000;
2137 pt_build_FR_ = -100;
2138 ept_build_FR_ = -100;
2139 phi_build_FR_ = -100;
2140 ephi_build_FR_ = -100;
2141 eta_build_FR_ = -100;
2142 eeta_build_FR_ = -100;
2144 nHits_build_FR_ = -100;
2145 nLayers_build_FR_ = -100;
2146 nHitsMatched_build_FR_ = -100;
2147 fracHitsMatched_build_FR_ = -100;
2148 lastlyr_build_FR_ = -100;
2150 dphi_build_FR_ = -100;
2152 hitchi2_build_FR_ = -100;
2153 score_build_FR_ = -5001;
2156 mcmask_build_FR_ = -2;
2157 mcID_build_FR_ = -100;
2159 pt_mc_build_FR_ = -100;
2160 phi_mc_build_FR_ = -100;
2161 eta_mc_build_FR_ = -100;
2162 helixchi2_build_FR_ = -100;
2164 mcTSmask_build_FR_ = -3;
2166 nHits_mc_build_FR_ = -100;
2167 nLayers_mc_build_FR_ = -100;
2168 lastlyr_mc_build_FR_ = -100;
2170 duplmask_build_FR_ = -2;
2171 iTkMatches_build_FR_ = -100;
2175 if (seedToFitMap_.count(seedID_FR_)) {
2176 seedmask_fit_FR_ = 1;
2178 const auto& fittrack = evt_fit_tracks[seedToFitMap_[seedID_FR_]];
2179 const auto& fitextra = evt_fit_extras[fittrack.label()];
2182 const Hit& lasthit = evt_layer_hits[fittrack.getLastFoundHitLyr()][fittrack.getLastFoundHitIdx()];
2183 xhit_fit_FR_ = lasthit.
x();
2184 yhit_fit_FR_ = lasthit.
y();
2185 zhit_fit_FR_ = lasthit.
z();
2187 pt_fit_FR_ = fittrack.pT();
2188 ept_fit_FR_ = fittrack.epT();
2189 phi_fit_FR_ = fittrack.momPhi();
2190 ephi_fit_FR_ = fittrack.emomPhi();
2191 eta_fit_FR_ = fittrack.momEta();
2192 eeta_fit_FR_ = fittrack.emomEta();
2194 nHits_fit_FR_ = fittrack.nFoundHits();
2195 nLayers_fit_FR_ = fittrack.nUniqueLayers();
2196 nHitsMatched_fit_FR_ = fitextra.nHitsMatched();
2197 fracHitsMatched_fit_FR_ = fitextra.fracHitsMatched();
2198 lastlyr_fit_FR_ = fittrack.getLastFoundHitLyr();
2201 dphi_fit_FR_ = fitextra.dPhi();
2204 hitchi2_fit_FR_ = fittrack.chi2();
2205 score_fit_FR_ = fittrack.score();
2208 TTreeValidation::fillFullHitInfo(
ev,
2218 mcID_fit_FR_ = fitextra.mcTrackID();
2219 mcmask_fit_FR_ = TTreeValidation::getMaskAssignment(mcID_fit_FR_);
2221 if (mcmask_fit_FR_ == 1)
2223 const auto& simtrack = evt_sim_tracks[mcID_fit_FR_];
2225 const int mcHitID = TTreeValidation::getLastFoundHit(
2226 fittrack.getLastFoundMCHitID(evt_layer_hits), mcID_fit_FR_,
ev);
2228 const TrackState& initLayTS = evt_sim_trackstates[mcHitID];
2229 pt_mc_fit_FR_ = initLayTS.pT();
2230 phi_mc_fit_FR_ = initLayTS.momPhi();
2231 eta_mc_fit_FR_ = initLayTS.momEta();
2232 helixchi2_fit_FR_ =
computeHelixChi2(initLayTS.parameters, fittrack.parameters(), fittrack.errors());
2234 mcTSmask_fit_FR_ = 1;
2236 pt_mc_fit_FR_ = simtrack.pT();
2237 phi_mc_fit_FR_ = simtrack.momPhi();
2238 eta_mc_fit_FR_ = simtrack.momEta();
2239 helixchi2_fit_FR_ =
computeHelixChi2(simtrack.parameters(), fittrack.parameters(), fittrack.errors());
2241 mcTSmask_fit_FR_ = 0;
2243 pt_mc_fit_FR_ = -101;
2244 phi_mc_fit_FR_ = -101;
2245 eta_mc_fit_FR_ = -101;
2246 helixchi2_fit_FR_ = -101;
2248 mcTSmask_fit_FR_ = -2;
2251 nHits_mc_fit_FR_ = simtrack.nFoundHits();
2252 nLayers_mc_fit_FR_ = simtrack.nUniqueLayers();
2253 lastlyr_mc_fit_FR_ = simtrack.getLastFoundHitLyr();
2255 duplmask_fit_FR_ = fitextra.isDuplicate();
2256 iTkMatches_fit_FR_ =
2261 TTreeValidation::fillFullHitInfo(
ev,
2265 hitmcTkIDs_mc_fit_FR_,
2272 pt_mc_fit_FR_ = -99;
2273 phi_mc_fit_FR_ = -99;
2274 eta_mc_fit_FR_ = -99;
2275 helixchi2_fit_FR_ = -99;
2277 mcTSmask_fit_FR_ = -1;
2279 nHits_mc_fit_FR_ = -99;
2280 nLayers_mc_fit_FR_ = -99;
2281 lastlyr_mc_fit_FR_ = -99;
2283 duplmask_fit_FR_ = -1;
2284 iTkMatches_fit_FR_ = -99;
2290 seedmask_fit_FR_ = 0;
2293 xhit_fit_FR_ = -3000;
2294 yhit_fit_FR_ = -3000;
2295 zhit_fit_FR_ = -3000;
2301 ephi_fit_FR_ = -100;
2303 eeta_fit_FR_ = -100;
2305 nHits_fit_FR_ = -100;
2306 nLayers_fit_FR_ = -100;
2307 nHitsMatched_fit_FR_ = -100;
2308 fracHitsMatched_fit_FR_ = -100;
2309 lastlyr_fit_FR_ = -100;
2311 dphi_fit_FR_ = -100;
2313 hitchi2_fit_FR_ = -100;
2314 score_fit_FR_ = -5001;
2317 mcmask_fit_FR_ = -2;
2318 mcID_fit_FR_ = -100;
2320 pt_mc_fit_FR_ = -100;
2321 phi_mc_fit_FR_ = -100;
2322 eta_mc_fit_FR_ = -100;
2323 helixchi2_fit_FR_ = -100;
2325 mcTSmask_fit_FR_ = -3;
2327 nHits_mc_fit_FR_ = -100;
2328 nLayers_mc_fit_FR_ = -100;
2329 lastlyr_mc_fit_FR_ = -100;
2331 duplmask_fit_FR_ = -2;
2332 iTkMatches_fit_FR_ = -100;
2340 std::lock_guard<std::mutex> locker(glock_);
2376 configtree_->Fill();
2380 std::lock_guard<std::mutex> locker(glock_);
2382 const auto ievt =
ev.evtID();
2383 const auto& evt_sim_tracks =
ev.simTracks_;
2384 const auto& evt_cmssw_tracks =
ev.cmsswTracks_;
2385 const auto& evt_cmssw_extras =
ev.cmsswTracksExtra_;
2386 const auto& evt_build_tracks =
ev.candidateTracks_;
2387 const auto& evt_build_extras =
ev.candidateTracksExtra_;
2388 const auto& evt_fit_tracks =
ev.fitTracks_;
2389 const auto& evt_fit_extras =
ev.fitTracksExtra_;
2390 const auto& evt_layer_hits =
ev.layerHits_;
2392 for (
const auto& cmsswtrack : evt_cmssw_tracks) {
2395 hitlyrs_cmssw_ceff_.clear();
2396 hitlyrs_build_ceff_.clear();
2397 hitlyrs_mc_build_ceff_.clear();
2398 hitlyrs_fit_ceff_.clear();
2399 hitlyrs_mc_fit_ceff_.clear();
2401 hitidxs_cmssw_ceff_.clear();
2402 hitidxs_build_ceff_.clear();
2403 hitidxs_mc_build_ceff_.clear();
2404 hitidxs_fit_ceff_.clear();
2405 hitidxs_mc_fit_ceff_.clear();
2408 const auto& cmsswextra = evt_cmssw_extras[cmsswtrack.label()];
2411 cmsswID_ceff_ = cmsswtrack.label();
2412 seedID_cmssw_ceff_ = cmsswextra.seedID();
2415 x_cmssw_ceff_ = cmsswtrack.x();
2416 y_cmssw_ceff_ = cmsswtrack.y();
2417 z_cmssw_ceff_ = cmsswtrack.z();
2419 pt_cmssw_ceff_ = cmsswtrack.pT();
2420 phi_cmssw_ceff_ = cmsswtrack.momPhi();
2421 eta_cmssw_ceff_ = cmsswtrack.momEta();
2423 nHits_cmssw_ceff_ = cmsswtrack.nFoundHits();
2424 nLayers_cmssw_ceff_ = cmsswtrack.nUniqueLayers();
2425 lastlyr_cmssw_ceff_ = cmsswtrack.getLastFoundHitLyr();
2427 itermask_build_ceff_ = 0;
2428 itermask_fit_ceff_ = 0;
2429 iterduplmask_build_ceff_ = 0;
2430 iterduplmask_fit_ceff_ = 0;
2431 algo_seed_ceff_ = 0;
2433 for (
auto aa : cmsswextra.seedAlgos())
2434 algo_seed_ceff_ = (algo_seed_ceff_ | (1 << aa));
2437 TTreeValidation::fillMinHitInfo(cmsswtrack, hitlyrs_cmssw_ceff_, hitidxs_cmssw_ceff_);
2440 if (cmsswToBuildMap_.count(cmsswID_ceff_) &&
2444 for (
unsigned int ii = 0;
ii < cmsswToBuildMap_[cmsswID_ceff_].size();
ii++) {
2445 const int theAlgo = evt_build_tracks[cmsswToBuildMap_[cmsswID_ceff_][
ii]].algoint();
2446 if ((itermask_build_ceff_ >> theAlgo) & 1)
2447 iterduplmask_build_ceff_ = (iterduplmask_build_ceff_ | (1 << theAlgo));
2448 itermask_build_ceff_ = (itermask_build_ceff_ | (1 << theAlgo));
2451 const auto& buildtrack =
2452 evt_build_tracks[cmsswToBuildMap_[cmsswID_ceff_][0]];
2453 const auto& buildextra =
2454 evt_build_extras[buildtrack.label()];
2455 cmsswmask_build_ceff_ = 1;
2457 seedID_build_ceff_ = buildextra.seedID();
2458 mcTrackID_build_ceff_ = buildextra.mcTrackID();
2461 pt_build_ceff_ = buildtrack.pT();
2462 ept_build_ceff_ = buildtrack.epT();
2463 phi_build_ceff_ = buildtrack.momPhi();
2464 ephi_build_ceff_ = buildtrack.emomPhi();
2465 eta_build_ceff_ = buildtrack.momEta();
2466 eeta_build_ceff_ = buildtrack.emomEta();
2469 if (mcTrackID_build_ceff_ >= 0) {
2470 const auto& simtrack = evt_sim_tracks[mcTrackID_build_ceff_];
2471 x_mc_build_ceff_ = simtrack.x();
2472 y_mc_build_ceff_ = simtrack.y();
2473 z_mc_build_ceff_ = simtrack.z();
2474 pt_mc_build_ceff_ = simtrack.pT();
2475 phi_mc_build_ceff_ = simtrack.momPhi();
2476 eta_mc_build_ceff_ = simtrack.momEta();
2479 TTreeValidation::fillMinHitInfo(simtrack, hitlyrs_mc_build_ceff_, hitidxs_mc_build_ceff_);
2481 x_mc_build_ceff_ = -1000;
2482 y_mc_build_ceff_ = -1000;
2483 z_mc_build_ceff_ = -1000;
2484 pt_mc_build_ceff_ = -99;
2485 phi_mc_build_ceff_ = -99;
2486 eta_mc_build_ceff_ = -99;
2490 nHits_build_ceff_ = buildtrack.nFoundHits();
2491 nLayers_build_ceff_ = buildtrack.nUniqueLayers();
2492 nHitsMatched_build_ceff_ = buildextra.nHitsMatched();
2493 fracHitsMatched_build_ceff_ = buildextra.fracHitsMatched();
2494 lastlyr_build_ceff_ = buildtrack.getLastFoundHitLyr();
2497 const Hit& lasthit = evt_layer_hits[buildtrack.getLastFoundHitLyr()][buildtrack.getLastFoundHitIdx()];
2498 xhit_build_ceff_ = lasthit.
x();
2499 yhit_build_ceff_ = lasthit.
y();
2500 zhit_build_ceff_ = lasthit.
z();
2503 hitchi2_build_ceff_ = buildtrack.chi2();
2504 helixchi2_build_ceff_ = buildextra.helixChi2();
2505 score_build_ceff_ = buildtrack.score();
2508 dphi_build_ceff_ = buildextra.dPhi();
2511 duplmask_build_ceff_ = buildextra.isDuplicate();
2512 nTkMatches_build_ceff_ = cmsswToBuildMap_[cmsswID_ceff_].size();
2515 TTreeValidation::fillMinHitInfo(buildtrack, hitlyrs_build_ceff_, hitidxs_build_ceff_);
2518 cmsswmask_build_ceff_ = (cmsswtrack.isFindable() ? 0 : -1);
2520 seedID_build_ceff_ = -99;
2521 mcTrackID_build_ceff_ = -99;
2523 pt_build_ceff_ = -99;
2524 ept_build_ceff_ = -99;
2525 phi_build_ceff_ = -99;
2526 ephi_build_ceff_ = -99;
2527 eta_build_ceff_ = -99;
2528 eeta_build_ceff_ = -99;
2530 x_mc_build_ceff_ = -2000;
2531 y_mc_build_ceff_ = -2000;
2532 z_mc_build_ceff_ = -2000;
2533 pt_mc_build_ceff_ = -99;
2534 phi_mc_build_ceff_ = -99;
2535 eta_mc_build_ceff_ = -99;
2537 nHits_build_ceff_ = -99;
2538 nLayers_build_ceff_ = -99;
2539 nHitsMatched_build_ceff_ = -99;
2540 fracHitsMatched_build_ceff_ = -99;
2541 lastlyr_build_ceff_ = -99;
2543 xhit_build_ceff_ = -2000;
2544 yhit_build_ceff_ = -2000;
2545 zhit_build_ceff_ = -2000;
2547 hitchi2_build_ceff_ = -99;
2548 helixchi2_build_ceff_ = -99;
2549 score_build_ceff_ = -17000;
2551 dphi_build_ceff_ = -99;
2553 duplmask_build_ceff_ = -1;
2554 nTkMatches_build_ceff_ = -99;
2558 if (cmsswToFitMap_.count(cmsswID_ceff_) &&
2562 for (
unsigned int ii = 0;
ii < cmsswToFitMap_[cmsswID_ceff_].size();
ii++) {
2563 const int theAlgo = evt_build_tracks[cmsswToFitMap_[cmsswID_ceff_][
ii]].algoint();
2564 if ((itermask_fit_ceff_ >> theAlgo) & 1)
2565 iterduplmask_fit_ceff_ = (iterduplmask_fit_ceff_ | (1 << theAlgo));
2566 itermask_fit_ceff_ = (itermask_fit_ceff_ | (1 << theAlgo));
2569 const auto& fittrack =
2570 evt_fit_tracks[cmsswToFitMap_[cmsswID_ceff_][0]];
2571 const auto& fitextra = evt_fit_extras[fittrack.label()];
2572 cmsswmask_fit_ceff_ = 1;
2574 seedID_fit_ceff_ = fitextra.seedID();
2575 mcTrackID_fit_ceff_ = fitextra.mcTrackID();
2578 pt_fit_ceff_ = fittrack.pT();
2579 ept_fit_ceff_ = fittrack.epT();
2580 phi_fit_ceff_ = fittrack.momPhi();
2581 ephi_fit_ceff_ = fittrack.emomPhi();
2582 eta_fit_ceff_ = fittrack.momEta();
2583 eeta_fit_ceff_ = fittrack.emomEta();
2586 if (mcTrackID_fit_ceff_ >= 0) {
2587 const auto& simtrack = evt_sim_tracks[mcTrackID_fit_ceff_];
2588 x_mc_fit_ceff_ = simtrack.x();
2589 y_mc_fit_ceff_ = simtrack.y();
2590 z_mc_fit_ceff_ = simtrack.z();
2591 pt_mc_fit_ceff_ = simtrack.pT();
2592 phi_mc_fit_ceff_ = simtrack.momPhi();
2593 eta_mc_fit_ceff_ = simtrack.momEta();
2596 TTreeValidation::fillMinHitInfo(simtrack, hitlyrs_mc_fit_ceff_, hitidxs_mc_fit_ceff_);
2598 x_mc_fit_ceff_ = -1000;
2599 y_mc_fit_ceff_ = -1000;
2600 z_mc_fit_ceff_ = -1000;
2601 pt_mc_fit_ceff_ = -99;
2602 phi_mc_fit_ceff_ = -99;
2603 eta_mc_fit_ceff_ = -99;
2607 nHits_fit_ceff_ = fittrack.nFoundHits();
2608 nLayers_fit_ceff_ = fittrack.nUniqueLayers();
2609 nHitsMatched_fit_ceff_ = fitextra.nHitsMatched();
2610 fracHitsMatched_fit_ceff_ = fitextra.fracHitsMatched();
2611 lastlyr_fit_ceff_ = fittrack.getLastFoundHitLyr();
2614 const Hit& lasthit = evt_layer_hits[fittrack.getLastFoundHitLyr()][fittrack.getLastFoundHitIdx()];
2615 xhit_fit_ceff_ = lasthit.
x();
2616 yhit_fit_ceff_ = lasthit.
y();
2617 zhit_fit_ceff_ = lasthit.
z();
2620 hitchi2_fit_ceff_ = fittrack.chi2();
2621 helixchi2_fit_ceff_ = fitextra.helixChi2();
2622 score_fit_ceff_ = fittrack.score();
2625 dphi_fit_ceff_ = fitextra.dPhi();
2628 duplmask_fit_ceff_ = fitextra.isDuplicate();
2629 nTkMatches_fit_ceff_ = cmsswToFitMap_[cmsswID_ceff_].size();
2632 TTreeValidation::fillMinHitInfo(fittrack, hitlyrs_fit_ceff_, hitidxs_fit_ceff_);
2635 cmsswmask_fit_ceff_ = (cmsswtrack.isFindable() ? 0 : -1);
2637 seedID_fit_ceff_ = -99;
2638 mcTrackID_fit_ceff_ = -99;
2641 ept_fit_ceff_ = -99;
2642 phi_fit_ceff_ = -99;
2643 ephi_fit_ceff_ = -99;
2644 eta_fit_ceff_ = -99;
2645 eeta_fit_ceff_ = -99;
2647 x_mc_fit_ceff_ = -2000;
2648 y_mc_fit_ceff_ = -2000;
2649 z_mc_fit_ceff_ = -2000;
2650 pt_mc_fit_ceff_ = -99;
2651 phi_mc_fit_ceff_ = -99;
2652 eta_mc_fit_ceff_ = -99;
2654 nHits_fit_ceff_ = -99;
2655 nLayers_fit_ceff_ = -99;
2656 nHitsMatched_fit_ceff_ = -99;
2657 fracHitsMatched_fit_ceff_ = -99;
2658 lastlyr_fit_ceff_ = -99;
2660 xhit_fit_ceff_ = -2000;
2661 yhit_fit_ceff_ = -2000;
2662 zhit_fit_ceff_ = -2000;
2664 hitchi2_fit_ceff_ = -99;
2665 helixchi2_fit_ceff_ = -99;
2666 score_fit_ceff_ = -17000;
2668 dphi_fit_ceff_ = -99;
2670 duplmask_fit_ceff_ = -1;
2671 nTkMatches_fit_ceff_ = -99;
2674 cmsswefftree_->Fill();
2679 std::lock_guard<std::mutex> locker(glock_);
2681 auto ievt =
ev.evtID();
2682 const auto& evt_sim_tracks =
ev.simTracks_;
2683 const auto& evt_cmssw_tracks =
ev.cmsswTracks_;
2684 const auto& evt_cmssw_extras =
ev.cmsswTracksExtra_;
2685 const auto& evt_build_tracks =
ev.candidateTracks_;
2686 const auto& evt_build_extras =
ev.candidateTracksExtra_;
2687 const auto& evt_fit_tracks =
ev.fitTracks_;
2688 const auto& evt_fit_extras =
ev.fitTracksExtra_;
2689 const auto& evt_layer_hits =
ev.layerHits_;
2691 for (
const auto& buildtrack : evt_build_tracks) {
2693 hitlyrs_mc_cFR_.clear();
2694 hitlyrs_build_cFR_.clear();
2695 hitlyrs_cmssw_build_cFR_.clear();
2696 hitlyrs_fit_cFR_.clear();
2697 hitlyrs_cmssw_fit_cFR_.clear();
2699 hitidxs_mc_cFR_.clear();
2700 hitidxs_build_cFR_.clear();
2701 hitidxs_cmssw_build_cFR_.clear();
2702 hitidxs_fit_cFR_.clear();
2703 hitidxs_cmssw_fit_cFR_.clear();
2706 algorithm_cFR_ = buildtrack.algoint();
2708 const auto& buildextra = evt_build_extras[buildtrack.label()];
2712 seedID_cFR_ = buildextra.seedID();
2713 mcTrackID_cFR_ = buildextra.mcTrackID();
2716 pt_build_cFR_ = buildtrack.pT();
2717 ept_build_cFR_ = buildtrack.epT();
2718 phi_build_cFR_ = buildtrack.momPhi();
2719 ephi_build_cFR_ = buildtrack.emomPhi();
2720 eta_build_cFR_ = buildtrack.momEta();
2721 eeta_build_cFR_ = buildtrack.emomEta();
2724 if (mcTrackID_cFR_ >= 0) {
2725 const auto& simtrack = evt_sim_tracks[mcTrackID_cFR_];
2726 x_mc_cFR_ = simtrack.x();
2727 y_mc_cFR_ = simtrack.y();
2728 z_mc_cFR_ = simtrack.z();
2729 pt_mc_cFR_ = simtrack.pT();
2730 phi_mc_cFR_ = simtrack.momPhi();
2731 eta_mc_cFR_ = simtrack.momEta();
2734 TTreeValidation::fillMinHitInfo(simtrack, hitlyrs_mc_cFR_, hitidxs_mc_cFR_);
2745 nHits_build_cFR_ = buildtrack.nFoundHits();
2746 nLayers_build_cFR_ = buildtrack.nUniqueLayers();
2747 nHitsMatched_build_cFR_ = buildextra.nHitsMatched();
2748 fracHitsMatched_build_cFR_ = buildextra.fracHitsMatched();
2749 lastlyr_build_cFR_ = buildtrack.getLastFoundHitLyr();
2752 const Hit& lasthit = evt_layer_hits[buildtrack.getLastFoundHitLyr()][buildtrack.getLastFoundHitIdx()];
2753 xhit_build_cFR_ = lasthit.
x();
2754 yhit_build_cFR_ = lasthit.
y();
2755 zhit_build_cFR_ = lasthit.
z();
2758 hitchi2_build_cFR_ = buildtrack.chi2();
2759 helixchi2_build_cFR_ = buildextra.helixChi2();
2760 score_build_cFR_ = buildtrack.score();
2763 dphi_build_cFR_ = buildextra.dPhi();
2766 TTreeValidation::fillMinHitInfo(buildtrack, hitlyrs_build_cFR_, hitidxs_build_cFR_);
2769 cmsswID_build_cFR_ = buildextra.cmsswTrackID();
2770 cmsswmask_build_cFR_ = TTreeValidation::getMaskAssignment(cmsswID_build_cFR_);
2772 if (cmsswmask_build_cFR_ == 1)
2774 const auto& cmsswtrack = evt_cmssw_tracks[cmsswID_build_cFR_];
2775 const auto& cmsswextra = evt_cmssw_extras[cmsswtrack.label()];
2777 seedID_cmssw_build_cFR_ = cmsswextra.seedID();
2779 x_cmssw_build_cFR_ = cmsswtrack.x();
2780 y_cmssw_build_cFR_ = cmsswtrack.y();
2781 z_cmssw_build_cFR_ = cmsswtrack.z();
2783 pt_cmssw_build_cFR_ = cmsswtrack.pT();
2784 phi_cmssw_build_cFR_ = cmsswtrack.momPhi();
2785 eta_cmssw_build_cFR_ = cmsswtrack.momEta();
2787 nHits_cmssw_build_cFR_ = cmsswtrack.nFoundHits();
2788 nLayers_cmssw_build_cFR_ = cmsswtrack.nUniqueLayers();
2789 lastlyr_cmssw_build_cFR_ = cmsswtrack.getLastFoundHitLyr();
2792 duplmask_build_cFR_ = buildextra.isDuplicate();
2793 iTkMatches_build_cFR_ = buildextra.duplicateID();
2796 TTreeValidation::fillMinHitInfo(cmsswtrack, hitlyrs_cmssw_build_cFR_, hitidxs_cmssw_build_cFR_);
2799 seedID_cmssw_build_cFR_ = -99;
2801 x_cmssw_build_cFR_ = -2000;
2802 y_cmssw_build_cFR_ = -2000;
2803 z_cmssw_build_cFR_ = -2000;
2805 pt_cmssw_build_cFR_ = -99;
2806 phi_cmssw_build_cFR_ = -99;
2807 eta_cmssw_build_cFR_ = -99;
2809 nHits_cmssw_build_cFR_ = -99;
2810 nLayers_cmssw_build_cFR_ = -99;
2811 lastlyr_cmssw_build_cFR_ = -99;
2813 duplmask_build_cFR_ = -1;
2814 iTkMatches_build_cFR_ = -99;
2818 if (buildToFitMap_.count(buildtrack.label())) {
2819 const auto& fittrack = evt_fit_tracks[buildToFitMap_[buildtrack.label()]];
2820 const auto& fitextra = evt_fit_extras[fittrack.label()];
2823 pt_fit_cFR_ = fittrack.pT();
2824 ept_fit_cFR_ = fittrack.epT();
2825 phi_fit_cFR_ = fittrack.momPhi();
2826 ephi_fit_cFR_ = fittrack.emomPhi();
2827 eta_fit_cFR_ = fittrack.momEta();
2828 eeta_fit_cFR_ = fittrack.emomEta();
2831 nHits_fit_cFR_ = fittrack.nFoundHits();
2832 nLayers_fit_cFR_ = fittrack.nUniqueLayers();
2833 nHitsMatched_fit_cFR_ = fitextra.nHitsMatched();
2834 fracHitsMatched_fit_cFR_ = fitextra.fracHitsMatched();
2835 lastlyr_fit_cFR_ = fittrack.getLastFoundHitLyr();
2838 const Hit& lasthit = evt_layer_hits[fittrack.getLastFoundHitLyr()][fittrack.getLastFoundHitIdx()];
2839 xhit_fit_cFR_ = lasthit.
x();
2840 yhit_fit_cFR_ = lasthit.
y();
2841 zhit_fit_cFR_ = lasthit.
z();
2844 hitchi2_fit_cFR_ = fittrack.chi2();
2845 helixchi2_fit_cFR_ = fitextra.helixChi2();
2846 score_fit_cFR_ = fittrack.score();
2849 dphi_fit_cFR_ = fitextra.dPhi();
2852 TTreeValidation::fillMinHitInfo(buildtrack, hitlyrs_fit_cFR_, hitidxs_fit_cFR_);
2855 cmsswID_fit_cFR_ = fitextra.cmsswTrackID();
2856 cmsswmask_fit_cFR_ = TTreeValidation::getMaskAssignment(cmsswID_fit_cFR_);
2858 if (cmsswmask_fit_cFR_ == 1)
2860 const auto& cmsswtrack = evt_cmssw_tracks[cmsswID_fit_cFR_];
2861 const auto& cmsswextra = evt_cmssw_extras[cmsswtrack.label()];
2863 seedID_cmssw_fit_cFR_ = cmsswextra.seedID();
2865 x_cmssw_fit_cFR_ = cmsswtrack.x();
2866 y_cmssw_fit_cFR_ = cmsswtrack.y();
2867 z_cmssw_fit_cFR_ = cmsswtrack.z();
2869 pt_cmssw_fit_cFR_ = cmsswtrack.pT();
2870 phi_cmssw_fit_cFR_ = cmsswtrack.momPhi();
2871 eta_cmssw_fit_cFR_ = cmsswtrack.momEta();
2873 nHits_cmssw_fit_cFR_ = cmsswtrack.nFoundHits();
2874 nLayers_cmssw_fit_cFR_ = cmsswtrack.nUniqueLayers();
2875 lastlyr_cmssw_fit_cFR_ = cmsswtrack.getLastFoundHitLyr();
2878 duplmask_fit_cFR_ = fitextra.isDuplicate();
2879 iTkMatches_fit_cFR_ = fitextra.duplicateID();
2882 TTreeValidation::fillMinHitInfo(fittrack, hitlyrs_cmssw_fit_cFR_, hitidxs_cmssw_fit_cFR_);
2885 seedID_cmssw_fit_cFR_ = -99;
2887 x_cmssw_fit_cFR_ = -2000;
2888 y_cmssw_fit_cFR_ = -2000;
2889 z_cmssw_fit_cFR_ = -2000;
2891 pt_cmssw_fit_cFR_ = -99;
2892 phi_cmssw_fit_cFR_ = -99;
2893 eta_cmssw_fit_cFR_ = -99;
2895 nHits_cmssw_fit_cFR_ = -99;
2896 nLayers_cmssw_fit_cFR_ = -99;
2897 lastlyr_cmssw_fit_cFR_ = -99;
2899 duplmask_fit_cFR_ = -1;
2900 iTkMatches_fit_cFR_ = -99;
2905 ept_fit_cFR_ = -100;
2906 phi_fit_cFR_ = -100;
2907 ephi_fit_cFR_ = -100;
2908 eta_fit_cFR_ = -100;
2909 eeta_fit_cFR_ = -100;
2911 nHits_fit_cFR_ = -100;
2912 nLayers_fit_cFR_ = -100;
2913 nHitsMatched_fit_cFR_ = -100;
2914 fracHitsMatched_fit_cFR_ = -100;
2915 lastlyr_fit_cFR_ = -100;
2917 xhit_fit_cFR_ = -3000;
2918 yhit_fit_cFR_ = -3000;
2919 zhit_fit_cFR_ = -3000;
2921 hitchi2_fit_cFR_ = -100;
2922 helixchi2_fit_cFR_ = -100;
2923 score_fit_cFR_ = -5001;
2924 dphi_fit_cFR_ = -100;
2926 cmsswID_fit_cFR_ = -100;
2927 cmsswmask_fit_cFR_ = -2;
2929 seedID_cmssw_fit_cFR_ = -100;
2931 x_cmssw_fit_cFR_ = -3000;
2932 y_cmssw_fit_cFR_ = -3000;
2933 z_cmssw_fit_cFR_ = -3000;
2935 pt_cmssw_fit_cFR_ = -100;
2936 phi_cmssw_fit_cFR_ = -100;
2937 eta_cmssw_fit_cFR_ = -100;
2939 nHits_cmssw_fit_cFR_ = -100;
2940 nLayers_cmssw_fit_cFR_ = -100;
2941 lastlyr_cmssw_fit_cFR_ = -100;
2943 duplmask_fit_cFR_ = -2;
2944 iTkMatches_fit_cFR_ = -100;
2947 cmsswfrtree_->Fill();
2952 std::lock_guard<std::mutex> locker(glock_);
2956 efftree_->SetDirectory(f_.get());
2959 frtree_->SetDirectory(f_.get());
2963 cmsswefftree_->SetDirectory(f_.get());
2964 cmsswefftree_->Write();
2966 cmsswfrtree_->SetDirectory(f_.get());
2967 cmsswfrtree_->Write();
2970 fittree_->SetDirectory(f_.get());
2974 configtree_->SetDirectory(f_.get());
2975 configtree_->Write();
float getScoreCand(const track_score_func &score_func, const Track &cand1, bool penalizeTailMissHits=false, bool inFindCandidates=false)
std::vector< TrackExtra > TrackExtraVec
double z
global z - AlignmentGeometry::z0, mm
float computeHelixChi2(const Vector &simV, const Vector &recoV, const Matrix &recoM, const bool diagOnly=false)
virtual void resetValidationMaps()
virtual void fillEfficiencyTree(const Event &)
constexpr float hitposerrXY
virtual void setTrackScoresDumbCMSSW(Event &)
ROOT::Math::SVector< float, 2 > SVector2
TTreeValidation(std::string)
virtual void saveTTrees()
virtual void makeSimTkToRecoTksMaps(Event &)
std::map< int, std::vector< int > > HitLayerMap
virtual void setTrackExtras(Event &ev)
std::unordered_map< int, std::vector< int > > TkIDToTkIDVecMap
constexpr float phierr012
constexpr float thetaerr049
virtual void alignTracks(TrackVec &, TrackExtraVec &, bool)
matchOpts cmsswMatchingFW
matchOpts cmsswMatchingBK
virtual void fillCMSSWFakeRateTree(const Event &)
std::unordered_map< int, int > TkIDToTkIDMap
std::vector< ReducedTrack > RedTrackVec
bool sortByScoreCand(const Track &cand1, const Track &cand2)
virtual void makeSeedTkToCMSSWTkMap(Event &)
constexpr float ptinverr049
constexpr float beamspotX
virtual void makeCMSSWTkToRecoTksMaps(Event &)
constexpr float hitposerrR
constexpr float hitposerrZ
constexpr float thetaerr012
virtual void makeSeedTkToRecoTkMaps(Event &)
virtual void makeRecoTkToSeedTkMapsDumbCMSSW(Event &)
std::vector< Track > TrackVec
constexpr float beamspotY
static track_score_func get_track_scorer(const std::string &name)
virtual void makeCMSSWTkToSeedTkMap(Event &)
virtual void makeRecoTkToRecoTkMaps(Event &)
constexpr float phierr049
virtual void collectFitInfo(const FitVal &, int, int)
constexpr float beamspotZ
constexpr float ptinverr012
virtual void fillFakeRateTree(const Event &)
virtual void fillCMSSWEfficiencyTree(const Event &)
std::map< int, std::map< int, std::vector< int > > > LayIdxIDVecMapMap
virtual void fillConfigTree()
virtual void fillFitTree(const Event &)