1 package org.lcsim.recon.tracking.spacegeom;
2
3
4
5
6
7
8
9
10
11
12 public class TwoSpacePoint
13 {
14
15
16 protected double _x;
17 protected double _y;
18 protected double _xy;
19 protected double _phi;
20
21
22
23
24
25 private static boolean equal(double x1, double x2)
26 {
27
28 double maxdif = 5.0e-16;
29 double num = 2.0*(x2-x1);
30 double den = x2 + x1;
31 double dif = Math.abs(num/den);
32 return dif <= maxdif;
33 }
34
35
36
37
38
39
40 public TwoSpacePoint( )
41 {
42 _x = _y = 0.0;
43 _xy = 0.0;
44 _phi = 0.0;
45 }
46
47
48
49
50
51 public double x( )
52 {
53 return _x;
54 }
55
56
57
58
59
60 public double y( )
61 {
62 return _y;
63 }
64
65
66
67
68
69 public double rxy( )
70 {
71 return _xy;
72 }
73
74
75
76
77
78 public double phi( )
79 {
80 return _phi;
81 }
82
83
84
85
86
87 public double cosPhi( )
88 {
89 if ( _xy != 0. ) return _x/_xy;
90 return Math.cos(_phi);
91 }
92
93
94
95
96
97 public double sinPhi( )
98 {
99 if ( _xy != 0. ) return _y/_xy;
100 return Math.sin(_phi);
101 }
102
103
104
105
106 public String toString()
107 {
108 return "TwoSpacePoint: \n x: " + x() + " \n"
109 + " y: " + y() + "\n"
110 + " rxy: " + rxy() + "\n"
111 + " phi: " + phi();
112 }
113
114
115
116
117
118 public boolean equals( TwoSpacePoint tsp )
119 {
120 return ( equal(x(),tsp.x()) && equal(y(),tsp.y()) );
121 }
122
123
124
125
126
127 public boolean notEquals( TwoSpacePoint tsp )
128 {
129 return !equals(tsp);
130 }
131
132
133
134
135
136
137
138 public static double distance(TwoSpacePoint tsp1, TwoSpacePoint tsp2 )
139 {
140 double dx = tsp2.x() - tsp1.x();
141 double dy = tsp2.y() - tsp1.y();
142 return Math.sqrt( dx*dx + dy*dy );
143 }
144
145 }