WIP: Global update of the Seeding XZ-track finding
This update revamps few things in the XZ part of the seeding, mainly:
- moved all geometry information initialisation to the initialisation of the algorithm (slightly faster, clearer);
- solve the parabola in XZ search directly using some pre-calculated factors (much faster, technically an approximation but quasi-transparent);
- improved the quasi-sorted nature of containers used in the Hough classification (slightly faster, prepares the ground for future improvements);
- explicitely call different methods for U/V collecting (should be templated for clarity; faster);
- use a new model for third-hit search which allows for faster search and starts actually doing some P-tuning of the algorithm (much faster, is responsible for efficiency/ghost rate changes, prepares the ground for future improvements [p-tuning])
Overall, these changes amount to ~9% fewer memory calls, and slightly lower efficiencies (which can be retuned away). Master on 5k events:
SeedTrackChecker INFO **** Seed 542817 tracks including 35063 ghosts [ 6.46 %], Event average 5.81 % ****
SeedTrackChecker INFO 01_hasT : 359217 from 432288 [ 83.10 %] 60 clones [ 0.02 %], purity: 99.50 %, hitEff: 97.93 %
SeedTrackChecker INFO 02_long : 263374 from 283125 [ 93.02 %] 26 clones [ 0.01 %], purity: 99.65 %, hitEff: 98.52 %
SeedTrackChecker INFO 03_long_P>5GeV : 188105 from 196161 [ 95.89 %] 12 clones [ 0.01 %], purity: 99.66 %, hitEff: 99.09 %
SeedTrackChecker INFO 04_long_fromB : 14479 from 15465 [ 93.62 %] 0 clones [ 0.00 %], purity: 99.72 %, hitEff: 98.82 %
SeedTrackChecker INFO 05_long_fromB_P>5GeV : 11244 from 11790 [ 95.37 %] 0 clones [ 0.00 %], purity: 99.72 %, hitEff: 99.22 %
SeedTrackChecker INFO 06_UT+T_strange : 27611 from 30045 [ 91.90 %] 4 clones [ 0.01 %], purity: 99.65 %, hitEff: 98.07 %
SeedTrackChecker INFO 07_UT+T_strange_P>5GeV : 15290 from 15841 [ 96.52 %] 1 clones [ 0.01 %], purity: 99.66 %, hitEff: 99.04 %
SeedTrackChecker INFO 08_noVelo+UT+T_strange : 14142 from 15374 [ 91.99 %] 1 clones [ 0.01 %], purity: 99.65 %, hitEff: 98.09 %
SeedTrackChecker INFO 09_noVelo+UT+T_strange_P>5GeV : 8362 from 8696 [ 96.16 %] 0 clones [ 0.00 %], purity: 99.66 %, hitEff: 98.97 %
SeedTrackChecker INFO 10_UT+T_SfromDB : 750 from 804 [ 93.28 %] 0 clones [ 0.00 %], purity: 99.81 %, hitEff: 98.53 %
SeedTrackChecker INFO 11_UT+T_SfromDB_P>5GeV : 457 from 470 [ 97.23 %] 0 clones [ 0.00 %], purity: 99.75 %, hitEff: 99.43 %
SeedTrackChecker INFO 12_noVelo+UT+T_SfromDB_P>5GeV : 267 from 276 [ 96.74 %] 0 clones [ 0.00 %], purity: 99.71 %, hitEff: 99.38 %
SeedTrackChecker INFO 13_electrons : 78267 from 142762 [ 54.82 %] 13 clones [ 0.02 %], purity: 99.58 %, hitEff: 97.31 %
SeedTrackChecker INFO 14_long_electrons : 26959 from 30942 [ 87.13 %] 3 clones [ 0.01 %], purity: 99.71 %, hitEff: 97.90 %
SeedTrackChecker INFO 15_long_electrons_P>5Gev : 17860 from 19757 [ 90.40 %] 3 clones [ 0.02 %], purity: 99.70 %, hitEff: 98.67 %
SeedTrackChecker INFO 16_long_fromB_electrons_P>5GeV : 6072 from 6631 [ 91.57 %] 0 clones [ 0.00 %], purity: 99.75 %, hitEff: 98.98 %
First version used in the MR:
SeedTrackChecker INFO **** Seed 532285 tracks including 29474 ghosts [ 5.54 %], Event average 4.85 % ****
SeedTrackChecker INFO 01_hasT : 356961 from 432288 [ 82.57 %] 64 clones [ 0.02 %], purity: 99.50 %, hitEff: 97.90 %
SeedTrackChecker INFO 02_long : 262611 from 283125 [ 92.75 %] 30 clones [ 0.01 %], purity: 99.65 %, hitEff: 98.52 %
SeedTrackChecker INFO 03_long_P>5GeV : 187860 from 196161 [ 95.77 %] 14 clones [ 0.01 %], purity: 99.65 %, hitEff: 99.08 %
SeedTrackChecker INFO 04_long_fromB : 14432 from 15465 [ 93.32 %] 1 clones [ 0.01 %], purity: 99.71 %, hitEff: 98.82 %
SeedTrackChecker INFO 05_long_fromB_P>5GeV : 11220 from 11790 [ 95.17 %] 0 clones [ 0.00 %], purity: 99.70 %, hitEff: 99.21 %
SeedTrackChecker INFO 06_UT+T_strange : 27550 from 30045 [ 91.70 %] 4 clones [ 0.01 %], purity: 99.64 %, hitEff: 98.06 %
SeedTrackChecker INFO 07_UT+T_strange_P>5GeV : 15278 from 15841 [ 96.45 %] 0 clones [ 0.00 %], purity: 99.64 %, hitEff: 99.03 %
SeedTrackChecker INFO 08_noVelo+UT+T_strange : 14102 from 15374 [ 91.73 %] 2 clones [ 0.01 %], purity: 99.64 %, hitEff: 98.07 %
SeedTrackChecker INFO 09_noVelo+UT+T_strange_P>5GeV : 8355 from 8696 [ 96.08 %] 0 clones [ 0.00 %], purity: 99.64 %, hitEff: 98.96 %
SeedTrackChecker INFO 10_UT+T_SfromDB : 748 from 804 [ 93.03 %] 0 clones [ 0.00 %], purity: 99.80 %, hitEff: 98.49 %
SeedTrackChecker INFO 11_UT+T_SfromDB_P>5GeV : 455 from 470 [ 96.81 %] 0 clones [ 0.00 %], purity: 99.73 %, hitEff: 99.40 %
SeedTrackChecker INFO 12_noVelo+UT+T_SfromDB_P>5GeV : 267 from 276 [ 96.74 %] 0 clones [ 0.00 %], purity: 99.68 %, hitEff: 99.35 %
SeedTrackChecker INFO 13_electrons : 77039 from 142762 [ 53.96 %] 15 clones [ 0.02 %], purity: 99.56 %, hitEff: 97.12 %
SeedTrackChecker INFO 14_long_electrons : 26756 from 30942 [ 86.47 %] 3 clones [ 0.01 %], purity: 99.69 %, hitEff: 97.80 %
SeedTrackChecker INFO 15_long_electrons_P>5Gev : 17746 from 19757 [ 89.82 %] 3 clones [ 0.02 %], purity: 99.68 %, hitEff: 98.61 %
SeedTrackChecker INFO 16_long_fromB_electrons_P>5GeV : 6050 from 6631 [ 91.24 %] 0 clones [ 0.00 %], purity: 99.73 %, hitEff: 98.91 %
To-do (mandatory):
-
template the Collect methods -> already done by another MR -
make the tuning of the two-hit window -> will be done later as it is more complicated
To-do (possible):
-
template the whole code to remove the "part" argument, which seems useless -> templating will be discussed later -
tune the U/V requirements in function of the momentum -> U/V segment finding has been overhauled in another MR -
study the clone removal algorithm to make it faster -> will be in another MR
Edited by Louis Henry