1 package org.lcsim.recon.tracking.trfxyp;
2
3 import java.util.List;
4 import java.util.ArrayList;
5
6 import org.lcsim.recon.tracking.trfutil.Assert;
7
8 import org.lcsim.recon.tracking.trfbase.McCluster;
9 import org.lcsim.recon.tracking.trfbase.ETrack;
10 import org.lcsim.recon.tracking.trfbase.Cluster;
11 import org.lcsim.recon.tracking.trfbase.Surface;
12 import org.lcsim.recon.tracking.trfbase.Hit;
13 import org.lcsim.recon.tracking.trfbase.TrackVector;
14 import org.lcsim.recon.tracking.trfbase.TrackError;
15
16
17
18
19
20
21
22
23
24
25 public class ClusXYPlane2 extends McCluster
26 {
27
28
29
30
31 public static String typeName()
32 { return "ClusXYPlane2"; }
33
34
35 public static String staticType()
36 { return typeName(); }
37
38
39
40 public static final int IV=0;
41 public static final int IZ=1;
42
43
44
45
46 private SurfXYPlane _sxyp;
47
48
49 private double _v,_z;
50
51
52 private double _dv2;
53 private double _dz2;
54 private double _dvdz;
55
56
57
58
59 public boolean equal( Cluster clus)
60 {
61 Assert.assertTrue( type().equals(clus.type()) );
62 ClusXYPlane2 ccp = (ClusXYPlane2) clus;
63 return ( _v == ccp._v ) &&
64 ( _z == ccp._z ) &&
65 ( _dv2 == ccp._dv2 ) &&
66 ( _dz2 == ccp._dz2 ) &&
67 ( _dvdz == ccp._dvdz ) &&
68 ( _sxyp.equals(ccp._sxyp) );
69 }
70
71
72 public List predict( ETrack tre)
73 {
74 List hits = new ArrayList();
75 TrackVector vec = tre.vector();
76 TrackError err = tre.error();
77
78 hits.add( new
79 HitXYPlane2( vec.get(SurfXYPlane.IV),vec.get(SurfXYPlane.IZ),
80 err.get(SurfXYPlane.IV,SurfXYPlane.IV),
81 err.get(SurfXYPlane.IZ,SurfXYPlane.IZ),
82 err.get(SurfXYPlane.IV,SurfXYPlane.IZ)
83 ) );
84 return hits;
85 }
86
87
88
89
90 public ClusXYPlane2(double dist,double phi, double v, double z,
91 double dv2, double dz2, double dvdz )
92 {
93 _sxyp = new SurfXYPlane(dist,phi);
94 _v = v;
95 _z= z;
96 _dv2 = dv2;
97 _dz2 = dz2;
98 _dvdz = dvdz;
99
100 Assert.assertTrue( _dv2 >= 0.0 && _dz2 >=0. );
101
102
103 Assert.assertTrue( _dv2*_dz2 - _dvdz*_dvdz >= 0.0);
104
105 }
106
107
108
109 public ClusXYPlane2(double dist,double phi, double v, double z,
110 double dv2, double dz2, double dvdz, int mcid )
111 {
112 super(mcid);
113 _sxyp = new SurfXYPlane(dist,phi);
114 _v = v;
115 _z= z;
116 _dv2 = dv2;
117 _dz2 = dz2;
118 _dvdz = dvdz;
119
120 Assert.assertTrue( _dv2 >= 0.0 && _dz2 >=0. );
121
122
123 Assert.assertTrue( _dv2*_dz2 - _dvdz*_dvdz >= 0.0);
124
125 }
126
127
128
129 public ClusXYPlane2(double dist,double phi, double v, double z,
130 double dv2, double dz2, double dvdz, List mcids )
131 {
132 super(mcids);
133 _sxyp = new SurfXYPlane(dist,phi);
134 _v = v;
135 _z= z;
136 _dv2 = dv2;
137 _dz2 = dz2;
138 _dvdz = dvdz;
139
140 Assert.assertTrue( _dv2 >= 0.0 && _dz2 >=0. );
141
142
143 Assert.assertTrue( _dv2*_dz2 - _dvdz*_dvdz >= 0.0);
144
145 }
146
147
148 public ClusXYPlane2( ClusXYPlane2 clus)
149 {
150 super(clus);
151 _sxyp = clus._sxyp;
152 _v = clus.
153 _v;_z = clus._z;
154 _dv2 = clus._dv2;
155 _dz2 = clus._dz2;
156 _dvdz = clus._dvdz;
157 }
158
159
160 public String type()
161 { return staticType(); };
162
163
164 public Surface surface()
165 { return _sxyp; };
166 public double v()
167 { return _v; }
168 public double z()
169 { return _z; }
170 public double dV2()
171 { return _dv2; }
172 public double dZ2()
173 { return _dz2; }
174 public double dVdZ()
175 { return _dvdz; }
176
177
178 public Hit newNextPrediction()
179 { return null; };
180
181 public String toString()
182 {
183 return " vz " + _sxyp
184 + ": vz = [" + _v + " , " + _z + " ] +/- " +
185 "[ " + _dv2 + " , " + _dz2 +" , " + _dvdz + " ] ";
186 }
187
188 }