1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public class DetectorSimulator extends RandomSimulator
35 {
36
37
38
39
40 private Detector _det;
41
42
43 private Map _lsims;
44
45
46
47
48 protected DetectorSimulator( Detector det)
49 {
50
51 _lsims = new TreeMap();
52 _det = det;
53 }
54
55
56
57
58
59
60 protected DetSimReturnStatus
61 addLayerSimulator(String name, LayerSimulator lsim)
62 {
63
64 if ( ! _det.isAssigned(name) ) return DetSimReturnStatus.UNKNOWN_NAME;
65
66
67 Layer detlyr = _det.layer(name);
68 if(detlyr instanceof InteractingLayer) detlyr = ((InteractingLayer)detlyr).layer();
69 Layer simlyr = lsim.layer();
70
71 if ( !detlyr.equals(simlyr) ) return DetSimReturnStatus.LAYER_MISMATCH;
72
73 _lsims.put(name, lsim);
74
75 return DetSimReturnStatus.OK;
76
77 }
78
79
80
81
82
83
84 protected DetSimReturnStatus
85 addDetectorSimulator( DetectorSimulator dsim)
86 {
87
88 for(Iterator i=dsim._lsims.entrySet().iterator(); i.hasNext(); )
89 {
90 Map.Entry e = (Map.Entry) i.next();
91 String name = (String) e.getKey();
92 LayerSimulator lsim = (LayerSimulator) e.getValue();
93 DetSimReturnStatus stat = addLayerSimulator(name,lsim);
94 if ( stat != DetSimReturnStatus.OK ) return stat;
95 }
96
97 return DetSimReturnStatus.OK;
98
99 }
100
101
102
103
104
105
106
107
108
109
110 public Detector detector()
111 {
112 return _det;
113 }
114
115
116
117
118
119
120
121
122 public List generators()
123 {
124 List gens = new ArrayList();
125
126 for(Iterator i=_lsims.entrySet().iterator(); i.hasNext(); )
127 {
128 Map.Entry e = (Map.Entry) i.next();
129
130 LayerSimulator lsim = (LayerSimulator) e.getValue();
131 List newgens = lsim.generators();
132 for ( Iterator igen=newgens.iterator(); igen.hasNext(); )
133 {
134 gens.add(igen.next());
135 }
136 }
137 return gens;
138 }
139
140
141
142
143
144
145
146
147 public void addClusters( VTrack trv )
148 {
149 addClusters(trv, 0);
150 }
151
152
153
154
155
156
157
158
159 public void addClusters( VTrack trv, int mcid )
160 {
161
162
163 for (Iterator i=_lsims.entrySet().iterator(); i.hasNext(); )
164 {
165 Map.Entry e = (Map.Entry) i.next();
166 LayerSimulator lsim = (LayerSimulator) e.getValue();
167 lsim.addClusters(trv, mcid);
168 }
169
170 }
171
172
173
174
175
176
177
178 public void dropClusters()
179 {
180
181 for (Iterator i=_lsims.entrySet().iterator(); i.hasNext(); )
182 {
183 Map.Entry e = (Map.Entry) i.next();
184 LayerSimulator lsim = (LayerSimulator) e.getValue();
185 lsim.dropClusters();
186 }
187
188 }
189
190
191
192
193
194
195
196 public void printGenerators()
197 {
198
199 }
200
201
202
203
204
205
206
207 public String toString()
208 {
209 int size = _lsims.size();
210 StringBuffer sb = new StringBuffer(getClass().getName()+" with " + size + " layer generator");
211 if ( size != 1 ) sb.append("s");
212 if ( size == 0 )
213 {
214 sb.append(".");
215 }
216 else
217 {
218 sb.append(":\n");
219 if ( _lsims.size() == 0 )
220 {
221 sb.append("There are no generators.");
222 return sb.toString();
223 }
224 for (Iterator i=_lsims.entrySet().iterator(); i.hasNext(); )
225 {
226 Map.Entry e = (Map.Entry) i.next();
227
228 sb.append( "\n" + e.getKey()+": "+e.getValue() + "\n");
229 }
230 }
231 return sb.toString();
232 }
233 }
234