1 package org.lcsim.recon.tracking.gtrbase;
2
3
4 import org.lcsim.recon.tracking.trfbase.VTrack;
5 import org.lcsim.recon.tracking.trfbase.Surface;
6 import org.lcsim.recon.tracking.trfbase.TrackVector;
7
8
9
10
11
12
13
14
15
16
17
18 public class McTrackState implements Comparable
19 {
20
21
22 private double _s;
23
24
25 private VTrack _trv;
26
27
28
29 private int _id;
30
31
32
33
34
35
36 public McTrackState()
37 {
38 }
39
40
41
42
43
44
45
46 public McTrackState(double s, VTrack trv)
47 {
48 _s = s;
49 _trv = new VTrack(trv);
50 _id = 0;
51 }
52
53
54
55
56
57
58 public McTrackState( McTrackState ts)
59 {
60 _s = ts._s;
61 _trv = new VTrack(ts._trv);
62 _id = ts._id;
63 }
64
65
66
67
68
69
70
71
72 public McTrackState(double s, Surface srf, TrackVector vec)
73 {
74 _s = s;
75 _trv = new VTrack(srf,vec);
76 _id = 0;
77 }
78
79
80
81
82
83
84 public boolean isValid()
85 {
86 if(_trv==null) return false;
87 return _trv.isValid();
88 }
89
90
91
92
93
94
95 public double s()
96 {
97 return _s;
98 }
99
100
101
102
103
104
105 public VTrack track()
106 {
107 return new VTrack(_trv);
108 }
109
110
111
112
113
114
115 public DetectorID detectorId()
116 {
117 return new DetectorID(_id);
118 }
119
120
121
122
123
124
125 public void setDetectorId( DetectorID id)
126 {
127 _id=id.detectorId();
128 }
129
130
131
132
133
134
135
136
137 public boolean equals(McTrackState ts)
138 {
139 return (_s == ts._s) && (track().equals(ts.track()) );
140 }
141
142
143
144
145
146
147
148 public boolean equals(Object ts)
149 {
150 if(!(ts instanceof McTrackState)) return false;
151 return (_s == ((McTrackState)ts)._s) && (track().equals(((McTrackState)ts).track()) );
152 }
153
154
155
156
157
158
159
160 public boolean lessThan(McTrackState ts)
161 {
162 return _s<ts._s;
163 }
164
165
166
167
168
169
170
171
172 public String toString()
173 {
174 StringBuffer sb = new StringBuffer("McTrackState ");
175 if ( isValid() )
176 {
177 sb.append("Path distance is " +_s + ".\n");
178 sb.append("Detector Element Id is " + detectorId() +".\n");
179 sb.append(track());
180 sb.append("\n");
181 }
182 else
183 {
184 sb.append("Invalid state.");
185 }
186 return sb.toString();
187 }
188
189
190
191
192
193
194 public int compareTo(Object o)
195 {
196 double s = ( (McTrackState) o)._s;
197 return (_s < s ? -1 : (_s == s ? 0 : 1));
198 }
199
200 }