1 package org.lcsim.recon.tracking.trfcyl;
2
3 import org.lcsim.recon.tracking.trfutil.Assert;
4
5 import org.lcsim.recon.tracking.trfbase.HitGenerator;
6 import org.lcsim.recon.tracking.trfbase.Surface;
7 import org.lcsim.recon.tracking.trfbase.Cluster;
8 import org.lcsim.recon.tracking.trfbase.VTrack;
9 import org.lcsim.recon.tracking.trfbase.CrossStat;
10
11
12
13
14
15
16
17 public class HitCylPhiZGenerator extends HitGenerator
18 {
19
20
21
22
23 private Surface _srf;
24
25
26 private double _stereo;
27
28
29 private double _dphiz;
30
31
32
33
34
35
36
37
38
39
40
41 public HitCylPhiZGenerator( SurfCylinder srf, double stereo,
42 double dphiz)
43 {
44 super();
45
46 _srf = new SurfCylinder(srf);
47 _stereo = stereo;
48 _dphiz =dphiz;
49 Assert.assertTrue( _dphiz >= 0.0 );
50 }
51
52
53
54
55
56
57
58
59
60
61
62
63 public HitCylPhiZGenerator( SurfCylinder srf, double stereo,
64 double dphiz, long iseed)
65 {
66 super(iseed);
67 _srf = new SurfCylinder(srf);
68 _stereo = stereo;
69 _dphiz =dphiz;
70 Assert.assertTrue( _dphiz >= 0.0 );
71 }
72
73
74
75
76
77
78
79
80 public HitCylPhiZGenerator( HitCylPhiZGenerator hgen)
81 {
82 super(hgen);
83 _srf = hgen._srf;
84 _stereo = hgen._stereo;
85 _dphiz = hgen._dphiz;
86 Assert.assertTrue( _dphiz >= 0.0 );
87
88
89 }
90
91
92
93
94
95
96
97
98 public Surface surface()
99 { return _srf;
100 }
101
102
103
104
105
106
107
108
109
110
111 public Cluster newCluster( VTrack trv )
112 {
113 return newCluster(trv, 0);
114 }
115
116
117
118
119
120
121
122
123
124 public Cluster newCluster( VTrack trv, int mcid )
125 {
126 Cluster clu = null;
127
128 Assert.assertTrue( _srf.pureEqual( trv.surface() ) );
129 if ( ! _srf.pureEqual( trv.surface() ) ) return clu;
130
131
132 CrossStat xstat = _srf.status(trv);
133 if ( (! _srf.isPure()) && (! xstat.inBounds()) ) return clu;
134
135
136 double phiz = trv.vector().get(0) + _stereo*trv.vector().get(1)
137 + _dphiz*gauss();
138
139
140 double radius = _srf.parameter(SurfCylinder.RADIUS);
141 clu = new ClusCylPhiZ( radius, phiz, _dphiz, _stereo, mcid );
142
143 return clu;
144
145 }
146
147
148
149
150
151
152
153 public String toString()
154 {
155 StringBuffer sb = new StringBuffer("HitCylPhiZ Generator at \n" + surface()
156 + "\nStereo slope: " + _stereo );
157 sb.append("\nMeasurement error (dphiz): " + _dphiz);
158 sb.append(super.toString());
159 return sb.toString();
160
161 }
162
163 }
164