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
18 public class HitCylPhiGenerator extends HitGenerator
19 {
20
21
22
23
24 private Surface _srf;
25
26
27 private double _dphi;
28
29
30 private boolean debug;
31
32
33
34
35
36
37
38
39 public HitCylPhiGenerator( SurfCylinder srf, double dphi)
40 {
41 super();
42 _srf = srf.newSurface();
43
44 _dphi =dphi;
45 Assert.assertTrue( _dphi >= 0.0 );
46 }
47
48
49
50
51
52
53
54
55
56
57
58
59 public HitCylPhiGenerator( SurfCylinder srf, double dphi, long seed)
60 {
61 super(seed);
62 _srf = srf.newSurface();
63
64 _dphi =dphi;
65 Assert.assertTrue( _dphi >= 0.0 );
66
67 }
68
69
70
71
72
73
74
75
76 public HitCylPhiGenerator( HitCylPhiGenerator hgen)
77 {
78 super(hgen);
79 _srf = hgen._srf;
80 _dphi = hgen._dphi;
81 Assert.assertTrue( _dphi >= 0.0 );
82
83 }
84
85
86
87
88
89
90
91
92 public Surface surface()
93 { return _srf; }
94
95
96
97
98
99
100
101
102
103
104
105 public Cluster newCluster( VTrack trv )
106 {
107 return newCluster( trv, 0 );
108 }
109
110
111
112
113
114
115
116
117
118
119 public Cluster newCluster( VTrack trv, int mcid )
120 {
121
122
123 Cluster clu = null;
124
125
126 Assert.assertTrue( _srf.pureEqual( trv.surface() ) );
127 if ( ! _srf.pureEqual( trv.surface() ) ) return clu;
128
129
130 CrossStat xstat =_srf.status(trv);
131 if(debug) System.out.println("Surface: "+_srf + "\n Status: "+xstat);
132 if ( (! _srf.isPure()) && (! xstat.inBounds()) ) return clu;
133
134
135 double phi = trv.vector().get(0) + _dphi*gauss();
136
137
138 double radius = _srf.parameter(SurfCylinder.RADIUS);
139 clu = new ClusCylPhi( radius, phi, _dphi, mcid );
140 return clu;
141
142 }
143
144
145
146
147
148
149
150 public String toString()
151 {
152 StringBuffer sb = new StringBuffer("HitCylPhi Generator at \n" + surface()
153 + "\nMeasurement error (dphi): " + _dphi);
154 sb.append(super.toString());
155 return sb.toString();
156
157 }
158 }