1
2
3
4
5
6
7
8 package org.lcsim.recon.tracking.seedtracker;
9
10 import java.util.Comparator;
11
12 import org.lcsim.fit.helicaltrack.HelicalTrackFit;
13 import org.lcsim.fit.helicaltrack.HelicalTrackHit;
14
15
16
17
18
19
20 public class SortHits implements Comparator<HelicalTrackHit> {
21 private double _xc;
22 private double _yc;
23 private double _R;
24 private double _R2;
25
26 public SortHits(HelicalTrackFit helix) {
27
28 _xc = helix.xc();
29 _yc = helix.yc();
30 _R = helix.R();
31 _R2 = _R*_R;
32 }
33
34 public int compare(HelicalTrackHit a, HelicalTrackHit b) {
35 double xa = a.x();
36 double xb = b.x();
37 double ya = a.y();
38 double yb = b.y();
39 double difa = (xa - _xc)*(xa - _xc) + (ya - _yc)*(ya - _yc) - _R2;
40 double difb = (xb - _xc)*(xb - _xc) + (yb - _yc)*(yb - _yc) - _R2;
41 if (difa * difa > difb * difb) return 1;
42 if (difa * difa < difb * difb) return -1;
43 return 0;
44 }
45 }