178 std::vector<int> mnt_category;
182 std::vector<float> mnt_cat1_pt;
183 std::vector<float> mnt_cat1_z0;
184 std::vector<float> mnt_cat1_d0;
185 std::vector<float> mnt_cat1_iso01;
186 std::vector<float> mnt_cat1_iso0201;
187 std::vector<float> mnt_cat1_chi2ndof;
188 std::vector<float> mnt_cat1_chi2ndof_pix;
189 std::vector<float> mnt_cat1_refit_pt;
190 std::vector<int> mnt_cat1_n_pix;
191 std::vector<float> mnt_cat1_refit_ptratio;
192 std::vector<float> mnt_cat1_refit_chi2ndof;
193 std::vector<int> mnt_cat1_n_bl;
194 std::vector<float> mnt_cat1_bdtscore;
204 auto mon_cat1_refit_ptratio =
Monitored::Collection(
"pix4_sct0_refit_ptratio", mnt_cat1_refit_ptratio);
205 auto mon_cat1_refit_chi2ndof =
Monitored::Collection(
"pix4_sct0_refit_chi2ndof", mnt_cat1_refit_chi2ndof);
208 auto monDisTrkCat1 =
Monitored::Group(
m_monTool, mon_cat1_pt, mon_cat1_z0, mon_cat1_d0, mon_cat1_iso01, mon_cat1_iso0201, mon_cat1_chi2ndof,
209 mon_cat1_chi2ndof_pix, mon_cat1_refit_pt, mon_cat1_n_pix, mon_cat1_refit_ptratio,
210 mon_cat1_refit_chi2ndof, mon_cat1_n_bl, mon_cat1_bdtscore);
212 std::vector<float> mnt_cat2_pt;
213 std::vector<float> mnt_cat2_refit_pt;
214 std::vector<float> mnt_cat2_refit_z0;
215 std::vector<float> mnt_cat2_refit_d0;
216 std::vector<int> mnt_cat2_n_sct;
217 std::vector<float> mnt_cat2_refit_ptratio;
218 std::vector<float> mnt_cat2_refit_chi2ndof_ratio;
219 std::vector<float> mnt_cat2_iso01;
220 std::vector<float> mnt_cat2_iso0201;
221 std::vector<float> mnt_cat2_chi2ndof_pix;
222 std::vector<int> mnt_cat2_n_pix;
223 std::vector<float> mnt_cat2_bdtscore;
229 auto mon_cat2_refit_ptratio =
Monitored::Collection(
"pix4_sct1p_refit_ptratio", mnt_cat2_refit_ptratio);
230 auto mon_cat2_refit_chi2ndof_ratio =
Monitored::Collection(
"pix4_sct1p_refit_chi2ndof_ratio", mnt_cat2_refit_chi2ndof_ratio);
233 auto mon_cat2_chi2ndof_pix =
Monitored::Collection(
"pix4_sct1p_chi2ndof_pix", mnt_cat2_chi2ndof_pix);
236 auto monDisTrkCat2 =
Monitored::Group(
m_monTool, mon_cat2_pt, mon_cat2_refit_pt, mon_cat2_refit_z0, mon_cat2_refit_d0, mon_cat2_n_sct,
237 mon_cat2_refit_ptratio, mon_cat2_refit_chi2ndof_ratio, mon_cat2_iso01, mon_cat2_iso0201,
238 mon_cat2_chi2ndof_pix, mon_cat2_n_pix, mon_cat2_bdtscore);
240 std::vector<float> mnt_cat3_pt;
241 std::vector<float> mnt_cat3_z0;
242 std::vector<float> mnt_cat3_d0;
243 std::vector<float> mnt_cat3_chi2ndof;
244 std::vector<float> mnt_cat3_chi2ndof_pix;
245 std::vector<float> mnt_cat3_iso01;
246 std::vector<float> mnt_cat3_iso0201;
247 std::vector<float> mnt_cat3_refit_pt;
248 std::vector<float> mnt_cat3_refit_z0;
249 std::vector<float> mnt_cat3_refit_d0;
250 std::vector<int> mnt_cat3_n_pix;
251 std::vector<int> mnt_cat3_n_bl;
252 std::vector<float> mnt_cat3_bdtscore;
266 auto monDisTrkCat3 =
Monitored::Group(
m_monTool, mon_cat3_pt, mon_cat3_z0, mon_cat3_d0, mon_cat3_chi2ndof, mon_cat3_chi2ndof_pix,
267 mon_cat3_iso01, mon_cat3_iso0201, mon_cat3_refit_pt, mon_cat3_refit_z0, mon_cat3_refit_d0,
268 mon_cat3_n_pix, mon_cat3_n_bl, mon_cat3_bdtscore);
270 std::vector<float> mnt_cat4_pt;
271 std::vector<float> mnt_cat4_z0;
272 std::vector<float> mnt_cat4_d0;
273 std::vector<float> mnt_cat4_refit_pt;
274 std::vector<float> mnt_cat4_refit_z0;
275 std::vector<float> mnt_cat4_refit_d0;
276 std::vector<int> mnt_cat4_n_pix;
277 std::vector<int> mnt_cat4_n_sct;
278 std::vector<float> mnt_cat4_refit_ptratio;
279 std::vector<int> mnt_cat4_n_bl;
280 std::vector<float> mnt_cat4_chi2ndof;
281 std::vector<float> mnt_cat4_iso01;
282 std::vector<float> mnt_cat4_iso0201;
283 std::vector<float> mnt_cat4_refit_chi2ndof;
284 std::vector<float> mnt_cat4_bdtscore;
293 auto mon_cat4_refit_ptratio =
Monitored::Collection(
"pix3_sct1p_refit_ptratio", mnt_cat4_refit_ptratio);
298 auto mon_cat4_refit_chi2ndof =
Monitored::Collection(
"pix3_sct1p_refit_chi2ndof", mnt_cat4_refit_chi2ndof);
300 auto monDisTrkCat4 =
Monitored::Group(
m_monTool, mon_cat4_pt, mon_cat4_z0, mon_cat4_d0, mon_cat4_refit_pt, mon_cat4_refit_z0, mon_cat4_refit_d0,
301 mon_cat4_n_pix, mon_cat4_n_sct, mon_cat4_refit_ptratio, mon_cat4_n_bl, mon_cat4_chi2ndof,
302 mon_cat4_iso01, mon_cat4_iso0201, mon_cat4_refit_chi2ndof, mon_cat4_bdtscore);
306 const std::string prefixIn =
"disTrkCand";
307 const std::string prefixOut =
"disTrk";
309 unsigned int i_cand=0;
317 if( category<=0 || category>=5 ) {
324 float ptGeV = cand->getDetail<
float>(prefixIn+
"_pt");
325 float refit_ptGeV = cand->getDetail<
float>(prefixIn+
"_refit_pt");
328 int is_fail = (
int)cand->getDetail<
int16_t>(prefixIn+
"_is_fail");
329 float d0_wrtVtx = cand->getDetail<
float>(prefixIn+
"_d0_wrtVtx");
330 float z0_wrtVtx = cand->getDetail<
float>(prefixIn+
"_z0_wrtVtx");
331 float chi2 = cand->getDetail<
float>(prefixIn+
"_chi2");
332 float ndof = cand->getDetail<
float>(prefixIn+
"_ndof");
333 float chi2ndof = ( std::abs(
ndof) > 1
e-4 ) ?
chi2 /
ndof : 20;
334 int n_hits_pix = (
int)cand->getDetail<
int16_t>(prefixIn+
"_n_hits_pix");
335 int n_hits_sct = (
int)cand->getDetail<
int16_t>(prefixIn+
"_n_hits_sct");
336 int n_hits_bl = (
int)cand->getDetail<
int16_t>(prefixIn+
"_n_hits_innermost");
337 float iso3_dr01 = cand->getDetail<
float>(prefixIn+
"_iso3_dr01");
339 float iso3_dr02 = cand->getDetail<
float>(prefixIn+
"_iso3_dr02");
341 float refit_ptratio = ( std::abs(ptGeV) > 1
e-4 ) ? refit_ptGeV / ptGeV : 0;
342 float refit_d0_wrtVtx = cand->getDetail<
float>(prefixIn+
"_refit_d0_wrtVtx");
343 float refit_z0_wrtVtx = cand->getDetail<
float>(prefixIn+
"_refit_z0_wrtVtx");
344 float refit_chi2 = cand->getDetail<
float>(prefixIn+
"_refit_chi2");
345 float refit_ndof = cand->getDetail<
float>(prefixIn+
"_refit_ndof");
346 float refit_chi2ndof = ( std::abs(refit_ndof) > 1
e-4 ) ? refit_chi2 / refit_ndof : 20;
347 float refit_chi2ndof_ratio = (std::abs(chi2ndof) > 1
e-4 ) ? refit_chi2ndof / chi2ndof : 0;
348 float chi2_pix=0;
float ndof_pix=0;
349 chi2_pix += cand->getDetail<
float>(prefixIn+
"_chi2sum_br_ibl");
350 chi2_pix += cand->getDetail<
float>(prefixIn+
"_chi2sum_br_pix1");
351 chi2_pix += cand->getDetail<
float>(prefixIn+
"_chi2sum_br_pix2");
352 chi2_pix += cand->getDetail<
float>(prefixIn+
"_chi2sum_br_pix3");
353 ndof_pix += cand->getDetail<
float>(prefixIn+
"_ndofsum_br_ibl");
354 ndof_pix += cand->getDetail<
float>(prefixIn+
"_ndofsum_br_pix1");
355 ndof_pix += cand->getDetail<
float>(prefixIn+
"_ndofsum_br_pix2");
356 ndof_pix += cand->getDetail<
float>(prefixIn+
"_ndofsum_br_pix3");
357 float chi2ndof_pix = ( std::abs(ndof_pix) > 1
e-4 ) ? chi2_pix / ndof_pix : 0;
360 float bdt_score = 0.0;
362 bdt_score =
bdt_eval_pix4l_sct0(ptGeV, z0_wrtVtx, d0_wrtVtx, iso3_dr01, iso3_dr02-iso3_dr01, chi2ndof, chi2ndof_pix,
363 refit_ptGeV, n_hits_pix, refit_ptratio, refit_chi2ndof, n_hits_bl);
364 mnt_cat1_pt.push_back(ptGeV);
365 mnt_cat1_z0.push_back(z0_wrtVtx);
366 mnt_cat1_d0.push_back(d0_wrtVtx);
367 mnt_cat1_iso01.push_back(iso3_dr01);
368 mnt_cat1_iso0201.push_back(iso3_dr02-iso3_dr01);
369 mnt_cat1_chi2ndof.push_back(chi2ndof);
370 mnt_cat1_chi2ndof_pix.push_back(chi2ndof_pix);
371 mnt_cat1_refit_pt.push_back(refit_ptGeV);
372 mnt_cat1_n_pix.push_back(n_hits_pix);
373 mnt_cat1_refit_ptratio.push_back(refit_ptratio);
374 mnt_cat1_refit_chi2ndof.push_back(refit_chi2ndof);
375 mnt_cat1_n_bl.push_back(n_hits_bl);
376 mnt_cat1_bdtscore.push_back(bdt_score);
379 bdt_score =
bdt_eval_pix4l_sct1p(ptGeV, refit_ptGeV, refit_z0_wrtVtx, refit_d0_wrtVtx, n_hits_sct, refit_ptratio,
380 refit_chi2ndof_ratio, iso3_dr01, iso3_dr02-iso3_dr01, is_fail, chi2ndof_pix, n_hits_pix);
381 mnt_cat2_pt.push_back(ptGeV);
382 mnt_cat2_refit_pt.push_back(refit_ptGeV);
383 mnt_cat2_refit_z0.push_back(refit_z0_wrtVtx);
384 mnt_cat2_refit_d0.push_back(refit_d0_wrtVtx);
385 mnt_cat2_n_sct.push_back(n_hits_sct);
386 mnt_cat2_refit_ptratio.push_back(refit_ptratio);
387 mnt_cat2_refit_chi2ndof_ratio.push_back(refit_chi2ndof_ratio);
388 mnt_cat2_iso01.push_back(iso3_dr01);
389 mnt_cat2_iso0201.push_back(iso3_dr02-iso3_dr01);
390 mnt_cat2_chi2ndof_pix.push_back(chi2ndof_pix);
391 mnt_cat2_n_pix.push_back(n_hits_pix);
392 mnt_cat2_bdtscore.push_back(bdt_score);
395 bdt_score =
bdt_eval_pix3l_sct0(ptGeV, z0_wrtVtx, d0_wrtVtx, chi2ndof, chi2ndof_pix, iso3_dr01, iso3_dr02-iso3_dr01,
396 refit_ptGeV, refit_z0_wrtVtx, refit_d0_wrtVtx, n_hits_pix, n_hits_bl);
397 mnt_cat3_pt.push_back(ptGeV);
398 mnt_cat3_z0.push_back(z0_wrtVtx);
399 mnt_cat3_d0.push_back(d0_wrtVtx);
400 mnt_cat3_chi2ndof.push_back(chi2ndof);
401 mnt_cat3_chi2ndof_pix.push_back(chi2ndof_pix);
402 mnt_cat3_iso01.push_back(iso3_dr01);
403 mnt_cat3_iso0201.push_back(iso3_dr02-iso3_dr01);
404 mnt_cat3_refit_pt.push_back(refit_ptGeV);
405 mnt_cat3_refit_z0.push_back(refit_z0_wrtVtx);
406 mnt_cat3_refit_d0.push_back(refit_d0_wrtVtx);
407 mnt_cat3_n_pix.push_back(n_hits_pix);
408 mnt_cat3_n_bl.push_back(n_hits_bl);
409 mnt_cat3_bdtscore.push_back(bdt_score);
412 bdt_score =
bdt_eval_pix3l_sct1p(ptGeV, z0_wrtVtx, d0_wrtVtx, refit_ptGeV, refit_z0_wrtVtx, refit_d0_wrtVtx, n_hits_pix, n_hits_sct,
413 refit_ptratio, is_fail, n_hits_bl, chi2ndof, iso3_dr01, iso3_dr02-iso3_dr01, refit_chi2ndof);
414 mnt_cat4_pt.push_back(ptGeV);
415 mnt_cat4_z0.push_back(z0_wrtVtx);
416 mnt_cat4_d0.push_back(d0_wrtVtx);
417 mnt_cat4_refit_pt.push_back(refit_ptGeV);
418 mnt_cat4_refit_z0.push_back(refit_z0_wrtVtx);
419 mnt_cat4_refit_d0.push_back(refit_d0_wrtVtx);
420 mnt_cat4_n_pix.push_back(n_hits_pix);
421 mnt_cat4_n_sct.push_back(n_hits_sct);
422 mnt_cat4_refit_ptratio.push_back(refit_ptratio);
423 mnt_cat4_n_bl.push_back(n_hits_bl);
424 mnt_cat4_chi2ndof.push_back(chi2ndof);
425 mnt_cat4_iso01.push_back(iso3_dr01);
426 mnt_cat4_iso0201.push_back(iso3_dr02-iso3_dr01);
427 mnt_cat4_refit_chi2ndof.push_back(refit_chi2ndof);
428 mnt_cat4_bdtscore.push_back(bdt_score);
433 const float PRESEL_PT_GEV = 7.5;
434 const float PRESEL_BDT_SCORE_CAT3 = -0.4;
435 const float PRESEL_BDT_SCORE_CAT4 = -0.2;
436 if( ptGeV < PRESEL_PT_GEV && refit_ptGeV < PRESEL_PT_GEV )
continue;
437 if(
category==3 && bdt_score < PRESEL_BDT_SCORE_CAT3 )
continue;
438 if(
category==4 && bdt_score < PRESEL_BDT_SCORE_CAT4 )
continue;
443 disTrkBDTSelContainer->
push_back(distrk);
447 float eta = cand->getDetail<
float>(prefixIn+
"_eta");
448 float phi = cand->getDetail<
float>(prefixIn+
"_phi");
453 distrk->
setDetail<
float>(prefixOut+
"_d0_wrtVtx", d0_wrtVtx);
454 distrk->
setDetail<
float>(prefixOut+
"_z0_wrtVtx", z0_wrtVtx);
459 distrk->setDetail<
int16_t>(prefixOut+
"_n_hits_innermost", (
int16_t)n_hits_bl);
462 distrk->setDetail<
float>(prefixOut+
"_refit_d0_wrtVtx", refit_d0_wrtVtx);
463 distrk->setDetail<
float>(prefixOut+
"_refit_z0_wrtVtx", refit_z0_wrtVtx);
464 distrk->setDetail<
float>(prefixOut+
"_refit_chi2", refit_chi2);
465 distrk->setDetail<
float>(prefixOut+
"_refit_ndof", refit_ndof);
466 distrk->setDetail<
float>(prefixOut+
"_chi2ndof_pix", chi2ndof_pix);
467 distrk->setDetail<
float>(prefixOut+
"_bdtscore", bdt_score);
472 return StatusCode::SUCCESS;