1 package org.lcsim.recon.tracking.trfxyp;
2
3
4 import org.lcsim.recon.tracking.trfutil.Assert;
5
6 import org.lcsim.recon.tracking.trfbase.HitGenerator;
7 import org.lcsim.recon.tracking.trfbase.VTrack;
8 import org.lcsim.recon.tracking.trfbase.Surface;
9 import org.lcsim.recon.tracking.trfbase.Cluster;
10
11
12
13
14
15
16
17
18 public class HitXYPlane1Generator extends HitGenerator
19 {
20
21
22
23
24 private SurfXYPlane _sxyp;
25
26
27 private double _wv;
28
29
30 private double _wz;
31
32
33 private double _davz;
34
35
36
37
38
39
40
41
42
43
44
45 public HitXYPlane1Generator(double dist, double phi,
46 double wv, double wz,
47 double davz)
48 {
49 super();
50 _sxyp = new SurfXYPlane(dist,phi);
51 _wv = wv;
52 _wz = wz;
53 _davz = davz;
54 Assert.assertTrue( _davz >= 0.0 );
55 }
56
57
58
59
60
61
62
63
64
65
66
67
68 public HitXYPlane1Generator(double dist, double phi,
69 double wv, double wz,
70 double davz, long iseed)
71 {
72 super(iseed);
73 _sxyp = new SurfXYPlane(dist,phi);
74 _wv = wv;
75 _wz = wz;
76 _davz = davz;
77 Assert.assertTrue( _davz >= 0.0 );
78 }
79
80
81
82
83
84
85 public HitXYPlane1Generator( HitXYPlane1Generator gen)
86 {
87 super(gen);
88 _sxyp = new SurfXYPlane(gen._sxyp);
89 _wv = gen._wv;
90 _wz = gen._wz;
91 _davz = gen._davz;
92 Assert.assertTrue( _davz >= 0.0 );
93 }
94
95
96
97
98
99
100 public Surface surface()
101 { return _sxyp; }
102
103
104
105
106
107
108
109
110 public Cluster newCluster( VTrack trv)
111 {
112 return newCluster(trv, 0);
113 }
114
115
116
117
118
119
120
121
122
123 public Cluster newCluster( VTrack trv, int mcid)
124 {
125
126 Assert.assertTrue( _sxyp.pureEqual( trv.surface() ) );
127 if ( ! _sxyp.pureEqual( trv.surface() ) ) return null;
128
129
130 double v_track = trv.vector().get(SurfXYPlane.IV);
131 double z_track = trv.vector().get(SurfXYPlane.IZ);
132 double avz = _wv*v_track + _wz*z_track
133 + _davz*gauss();
134
135
136 double dist = _sxyp.parameter(SurfXYPlane.DISTNORM);
137 double phi = _sxyp.parameter(SurfXYPlane.NORMPHI);
138 return new ClusXYPlane1(dist, phi, _wv, _wz, avz, _davz, mcid );
139
140 }
141
142
143
144
145
146
147 public String toString()
148 {
149 return "Surface: " + _sxyp +
150 "\n V slope: " + _wv +
151 "\n Z slope: " + _wz+
152 "\n Measurement error (davz): " + _davz;
153 }
154
155 }
156