QuadVtx vertex reconstruction

22
QuadVtx vertex reconstruction larsoft coordination meeting 11 Feb, 2020 Chris Backhouse University College London 1 / 16

Transcript of QuadVtx vertex reconstruction

QuadVtx vertex reconstruction - larsoft coordination meeting 11 Feb, 2020Chris Backhouse University College London
1 / 16
Introduction
I Independent vertex can be useful as input to other algorithms
I Presenting a very simple hit-based approach
I Used DUNE MCC11 FD νµ files
/pnfs/dune/tape backed/dunepro/mcc11/protodune/mc/full-reconstructed/*/nu dune10kt 1x2x6*gen g4 detsim reco.root
(despite misleading directory name)
I Input is all hitfd RecoHits in the event (these are disambiguated with a real algorithm)
2 / 16
Algorithm I
I Inspired by two-point Hough Transform I Two points define a line, four can define the intersection of two lines
I Permutations give different valid “votes” for the vertex position I Combinations that cause a “track” to straddle the vertex are skipped
3 / 16
Algorithm I
I Inspired by two-point Hough Transform I Two points define a line, four can define the intersection of two lines
I Permutations give different valid “votes” for the vertex position I Combinations that cause a “track” to straddle the vertex are skipped
3 / 16
Algorithm I
I Inspired by two-point Hough Transform I Two points define a line, four can define the intersection of two lines I Permutations give different valid “votes” for the vertex position
I Combinations that cause a “track” to straddle the vertex are skipped
3 / 16
Algorithm I
I Inspired by two-point Hough Transform I Two points define a line, four can define the intersection of two lines I Permutations give different valid “votes” for the vertex position I Combinations that cause a “track” to straddle the vertex are skipped
3 / 16
Algorithm II I Computationally intractable to try all combinations of four points I Restrict to random subset of 10,000,000 quadruplets
I Fill map in each of the three views (dropped bins <5% of peak here) I Find 3D point with highest sum when projected into the three maps
I Zoom in to mm resolution and repeat
500 600 700 800 900 1000 1100 1200 0
50
100
150
200
250
300
4 / 16
Algorithm II I Computationally intractable to try all combinations of four points I Restrict to random subset of 10,000,000 quadruplets
I Fill map in each of the three views (dropped bins <5% of peak here) I Find 3D point with highest sum when projected into the three maps I Zoom in to mm resolution and repeat
604 604.5 605 605.5 606 606.5 607 607.5 608 608.5
178.5
179
179.5
180
180.5
181
181.5
182
182.5
183
FAQs Shouldn’t you do error propagation?
I Could take a ∼5mm error on each point, compute the error on the implied vertex, and fill a gaussian into the accumulation space
I That’s a lot more computation time per quadruplet I If the points really do jitter around I should get the same aggregate
smearing over my large ensemble
Shouldn’t you weight by the energy of the hits? I Has a nice property that splitting a hit into two smaller hits in the
same place leaves the map unchanged. Better way to treat showers? I I tried this and it didn’t work so well in practice, not sure why
Some quadruplet topologies are unlikely to point to a vertex I I didn’t want to introduce too much model dependence I Open to exploring simple cuts for this if they help
5 / 16
50
100
150
200
250
300
50
100
150
200
250
300
100 200 300 400 500 600 700 800 900 0
50
100
150
200
250
300
604 604.5 605 605.5 606 606.5 607 607.5 608 608.5
178.5
179
179.5
180
180.5
181
181.5
182
182.5
183
727.5 728 728.5 729 729.5 730 730.5 731 731.5 732
178.5
179
179.5
180
180.5
181
181.5
182
182.5
183
253 253.5 254 254.5 255 255.5 256 256.5 257 257.5
178.5
179
179.5
180
180.5
181
181.5
182
182.5
183
I Same event as earlier, but in all three views
6 / 16
150
200
250
300
350
150
200
250
300
350
150
200
250
300
350
160 160.5 161 161.5 162 162.5 163 163.5 164 164.5
373.5
374
374.5
375
375.5
376
376.5
377
377.5
378
374
374.5
375
375.5
376
376.5
377
377.5
378
276 276.5 277 277.5 278 278.5 279 279.5 280 280.5
373.5
374
374.5
375
375.5
376
376.5
377
377.5
378
7 / 16
40
60
80
100
120
140
160
40
60
80
100
120
140
160
40
60
80
100
120
140
160
1014 1014.5 1015 1015.5 1016 1016.5 1017 1017.5 1018 1018.5
65.5
66
66.5
67
67.5
68
68.5
69
69.5
70
1031 1031.5 1032 1032.5 1033 1033.5 1034 1034.5 1035 1035.5
65.5
66
66.5
67
67.5
68
68.5
69
69.5
70
614.5 615 615.5 616 616.5 617 617.5 618 618.5 619
65.5
66
66.5
67
67.5
68
68.5
69
69.5
70
I Longer track segments point here than to the true vertex :(
8 / 16
0
50
100
150
0
50
100
150
0
50
100
150
499 499.5 500 500.5 501 501.5 502 502.5 503 503.5 69
69.5
70
70.5
71
71.5
72
72.5
73
73.5
238.5 239 239.5 240 240.5 241 241.5 242 242.5 243 69
69.5
70
70.5
71
71.5
72
72.5
73
73.5
571.5 572 572.5 573 573.5 574 574.5 575 575.5 576 69
69.5
70
70.5
71
71.5
72
72.5
73
73.5
I Find a secondary vertex. I now require the vertex to be in the upstream 1/4 of the event. This is the only directional bias anywhere
9 / 16
200−
100−
0
100
200
300
200−
100−
0
100
200
300
200−
100−
0
100
200
300
41 41.5 42 42.5 43 43.5 44 44.5 45 45.5
222
222.5
223
223.5
224
224.5
225
225.5
226
226.5
119.5− 119− 118.5− 118− 117.5− 117− 116.5− 116− 115.5− 115−
222
222.5
223
223.5
224
224.5
225
225.5
226
226.5
185 185.5 186 186.5 187 187.5 188 188.5 189 189.5
222
222.5
223
223.5
224
224.5
225
225.5
226
226.5
10 / 16
50−
0
50
100
150
200
50−
0
50
100
150
200
50−
0
50
100
150
200
138 138.5 139 139.5 140 140.5 141 141.5 142 142.5
78
78.5
79
79.5
80
80.5
81
81.5
82
82.5
340 340.5 341 341.5 342 342.5 343 343.5 344 344.5
78
78.5
79
79.5
80
80.5
81
81.5
82
82.5
116.5− 116− 115.5− 115− 114.5− 114− 113.5− 113− 112.5− 112− 78
78.5
79
79.5
80
80.5
81
81.5
82
82.5
11 / 16
100−
0
100
200
300
100−
0
100
200
300
100−
0
100
200
300
302 302.5 303 303.5 304 304.5 305 305.5 306 306.5
218.5
219
219.5
220
220.5
221
221.5
222
222.5
223
431 431.5 432 432.5 433 433.5 434 434.5 435 435.5
218.5
219
219.5
220
220.5
221
221.5
222
222.5
223
58 58.5 59 59.5 60 60.5 61 61.5 62 62.5
218.5
219
219.5
220
220.5
221
221.5
222
222.5
223
12 / 16
300−
200−
100−
0
100
200
300
300−
200−
100−
0
100
200
300
300−
200−
100−
0
100
200
300
376.5 377 377.5 378 378.5 379 379.5 380 380.5 381
50.5−
50−
49.5−
49−
48.5−
48−
47.5−
47−
46.5−
46−
576 576.5 577 577.5 578 578.5 579 579.5 580 580.5
50.5−
50−
49.5−
49−
48.5−
48−
47.5−
47−
46.5−
46−
35 35.5 36 36.5 37 37.5 38 38.5 39 39.5
50.5−
50−
49.5−
49−
48.5−
48−
47.5−
47−
46.5−
46−
13 / 16
300−
200−
100−
0
100
200
300
300−
200−
100−
0
100
200
300
300−
200−
100−
0
100
200
300
521.5 522 522.5 523 523.5 524 524.5 525 525.5 526
88−
87.5−
87−
86.5−
86−
85.5−
85−
84.5−
84−
83.5−
413.5 414 414.5 415 415.5 416 416.5 417 417.5 418
88−
87.5−
87−
86.5−
86−
85.5−
85−
84.5−
84−
83.5−
432.5 433 433.5 434 434.5 435 435.5 436 436.5 437
88−
87.5−
87−
86.5−
86−
85.5−
85−
84.5−
84−
83.5−
I Very busy events can also work well – this one is a bit downstream
14 / 16
0
1000
2000
3000
4000
5000
true -y
reco y
0
500
1000
1500
2000
Pandora
QuadVtx
0 200 400 600 800 1000 Distance from true vertex (cm)
0
0.2
0.4
0.6
0.8
1
0
1000
2000
3000
4000
5000
true -y
reco y
0
500
1000
1500
2000
Pandora
QuadVtx
0 20 40 60 80 100 Distance from true vertex (cm)
0
0.2
0.4
0.6
0.8
1
0
1000
2000
3000
4000
5000
true -y
reco y
0
500
1000
1500
2000
Pandora
QuadVtx
1−10 1 10 210 310 Distance from true vertex (cm)
0
0.2
0.4
0.6
0.8
1
I But QuadVtx has fewer errors >2m. . .
I Achieved with a very simple and fast procedure
I Pull request https://github.com/LArSoft/larreco/pull/4