]>
Commit | Line | Data |
---|---|---|
4c039060 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
16 | /* | |
17 | $Log$ | |
94de3818 | 18 | Revision 1.9 2000/05/10 21:56:07 fca |
19 | Avoid clashes with ITS and add supports | |
20 | ||
0d630091 | 21 | Revision 1.7 1999/09/29 09:24:14 fca |
22 | Introduction of the Copyright and cvs Log | |
23 | ||
4c039060 | 24 | */ |
25 | ||
fe4da5cc | 26 | /////////////////////////////////////////////////////////////////////////////// |
27 | // // | |
0d630091 | 28 | // Forward Multiplicity Detector version 1 // |
fe4da5cc | 29 | // // |
30 | //Begin_Html | |
31 | /* | |
1439f98e | 32 | <img src="picts/AliFMDv1Class.gif"> |
fe4da5cc | 33 | </pre> |
34 | <br clear=left> | |
35 | <font size=+2 color=red> | |
36 | <p>The responsible person for this module is | |
37 | <a href="mailto:Valeri.Kondratiev@cern.ch">Valeri Kondratiev</a>. | |
38 | </font> | |
39 | <pre> | |
40 | */ | |
41 | //End_Html | |
42 | // // | |
43 | /////////////////////////////////////////////////////////////////////////////// | |
44 | ||
45 | #include "AliRun.h" | |
46 | #include "AliFMDv1.h" | |
47 | #include "AliMC.h" | |
94de3818 | 48 | #include "AliMagF.h" |
0d630091 | 49 | #include "stdlib.h" |
fe4da5cc | 50 | |
51 | ClassImp(AliFMDv1) | |
52 | ||
53 | //_____________________________________________________________________________ | |
99560b47 | 54 | AliFMDv1::AliFMDv1() |
fe4da5cc | 55 | { |
56 | // | |
0d630091 | 57 | // Default constructor for FMD version 1 |
fe4da5cc | 58 | // |
59 | } | |
60 | ||
61 | //_____________________________________________________________________________ | |
62 | AliFMDv1::AliFMDv1(const char *name, const char *title) | |
63 | : AliFMD(name,title) | |
64 | { | |
65 | // | |
66 | // Standard constructor for FMD version 1 | |
67 | // | |
99560b47 | 68 | AliModule *start = gAlice->GetModule("START"); |
69 | if(start) { | |
70 | Error("ctor","This version of FMD is incompatible with START\n"); | |
71 | exit(1); | |
72 | } | |
fe4da5cc | 73 | } |
74 | ||
0d630091 | 75 | //___________________________________________ |
fe4da5cc | 76 | void AliFMDv1::CreateGeometry() |
77 | { | |
78 | // | |
79 | // Creation of the geometry of the FMD version 1 | |
80 | // | |
81 | //Begin_Html | |
82 | /* | |
1439f98e | 83 | <img src="picts/AliFMDv1Tree.gif"> |
fe4da5cc | 84 | */ |
85 | //End_Html | |
86 | //Begin_Html | |
87 | /* | |
1439f98e | 88 | <img src="picts/AliFMDv1.gif"> |
fe4da5cc | 89 | */ |
90 | //End_Html | |
91 | ||
fe4da5cc | 92 | |
0d630091 | 93 | Float_t rout, z; |
fe4da5cc | 94 | Float_t par[3], rin; |
0d630091 | 95 | |
96 | Int_t irotm[100]; | |
fe4da5cc | 97 | |
0d630091 | 98 | TArrayI &idtmed = *fIdtmed; |
fe4da5cc | 99 | |
100 | // ******************************************************** | |
0d630091 | 101 | // DEFINE DISK#3 OF FMD |
fe4da5cc | 102 | // ******************************************************** |
103 | ||
0d630091 | 104 | gMC->Gsvolu("BR3_", "BOX ", idtmed[4], par, 0); |
105 | gMC->Gsvolu("CB3_", "BOX ", idtmed[5], par, 0); | |
106 | gMC->Gsvolu("BR5_", "BOX ", idtmed[4], par, 0); | |
107 | gMC->Gsvolu("CB5_", "BOX ", idtmed[5], par, 0); | |
108 | ||
109 | // Define parameters for the right disk | |
fe4da5cc | 110 | |
111 | rin = 4.5; | |
112 | rout = 10.5; | |
0d630091 | 113 | z = 77.; |
114 | ||
115 | // Ring #1 | |
116 | ||
fe4da5cc | 117 | par[0] = rin; |
118 | par[1] = rout; | |
0d630091 | 119 | par[2] = 1.5; |
120 | gMC->Gsvolu("R1R3", "TUBE", idtmed[1], par, 3); | |
121 | gMC->Gspos("R1R3", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY"); | |
122 | ||
123 | // Ring #2 | |
124 | ||
fe4da5cc | 125 | par[0] = rout; |
0d630091 | 126 | par[1] = rout + .65; |
127 | par[2] = 1.5; | |
128 | gMC->Gsvolu("R2R3", "TUBE", idtmed[2], par, 3); | |
129 | gMC->Gspos("R2R3", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY"); | |
130 | ||
131 | // Ring #3 | |
132 | ||
133 | par[0] = rout + .65; | |
134 | par[1] = rout + 5.65; | |
fe4da5cc | 135 | par[2] = .025; |
0d630091 | 136 | gMC->Gsvolu("R3R3", "TUBE", idtmed[3], par, 3); |
137 | gMC->Gspos("R3R3", 1, "ALIC", 0., 0., z + 1.525, 0, "ONLY"); | |
138 | ||
139 | // Bracket #1 | |
140 | ||
141 | par[0] = 1.5; | |
142 | par[1] = 0.1; | |
143 | par[2] = 15.35; | |
144 | gMC->Matrix(irotm[11], 90., 0., 161.2, 90., 71.2, 90.); | |
145 | gMC->Gsposp("BR3_",1,"ALIC", 0., 25.25, 85.0, irotm[11],"ONLY",par,3); | |
146 | par[1] = 0.5; | |
147 | gMC->Gsposp("CB3_",1,"ALIC", 0., 25.41, 84.53,irotm[11],"ONLY",par,3); | |
148 | ||
149 | ||
150 | // Bracket #2 | |
151 | ||
152 | par[0] = 1.5; | |
153 | par[1] = 0.1; | |
154 | par[2] = 15.35; | |
155 | gMC->Matrix(irotm[12], 90., 180., 161.2, 270., 71.2, 270.); | |
156 | gMC->Gsposp("BR3_",2,"ALIC", 0.,-25.25, 85.0, irotm[12],"ONLY",par,3); | |
157 | par[1] = 0.5; | |
158 | gMC->Gsposp("CB3_",2,"ALIC", 0.,-25.41, 84.53,irotm[12],"ONLY",par,3); | |
159 | ||
160 | ||
161 | // Bracket #3 | |
162 | ||
163 | par[0] = 1.5; | |
164 | par[1] = 0.1; | |
165 | par[2] = 15.35; | |
166 | gMC->Matrix(irotm[13], 90., 270., 161.2, 0., 71.2, 0.); | |
167 | gMC->Gsposp("BR3_",3,"ALIC", 25.25, 0., 85.0, irotm[13],"ONLY",par,3); | |
168 | par[1] = 0.5; | |
169 | gMC->Gsposp("CB3_",3,"ALIC", 25.41, 0., 84.53,irotm[13],"ONLY",par,3); | |
170 | ||
171 | ||
172 | // Bracket #4 | |
173 | ||
174 | par[0] = 1.5; | |
175 | par[1] = 0.1; | |
176 | par[2] = 15.35; | |
177 | gMC->Matrix(irotm[14], 90., 90., 161.2, 180., 71.2, 180.); | |
178 | gMC->Gsposp("BR3_",4,"ALIC", -25.25, 0., 85.0, irotm[14],"ONLY",par,3); | |
179 | par[1] = 0.5; | |
180 | gMC->Gsposp("CB3_",4,"ALIC", -25.41, 0., 84.53,irotm[14],"ONLY",par,3); | |
181 | ||
182 | // Right support ring | |
183 | ||
184 | par[0] = 39.; | |
185 | par[1] = 41.; | |
186 | par[2] = .5; | |
187 | gMC->Gsvolu("R1SP", "TUBE", idtmed[4], par, 3); | |
188 | gMC->Gspos("R1SP", 1, "ALIC", 0., 0., 89.5, 0, "ONLY"); | |
189 | ||
190 | // Define parameters for the left disk | |
fe4da5cc | 191 | |
192 | rin = 4.5; | |
193 | rout = 10.5; | |
0d630091 | 194 | z = -77.; |
195 | ||
196 | // Ring #1 | |
197 | ||
fe4da5cc | 198 | par[0] = rin; |
199 | par[1] = rout; | |
0d630091 | 200 | par[2] = 1.5; |
201 | gMC->Gsvolu("R1L3", "TUBE", idtmed[1], par, 3); | |
202 | gMC->Gspos("R1L3", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY"); | |
203 | ||
204 | // Ring #2 | |
205 | ||
fe4da5cc | 206 | par[0] = rout; |
0d630091 | 207 | par[1] = rout + .65; |
208 | par[2] = 1.5; | |
209 | gMC->Gsvolu("R2L3", "TUBE", idtmed[2], par, 3); | |
210 | gMC->Gspos("R2L3", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY"); | |
211 | ||
212 | // Ring #3 | |
213 | ||
214 | par[0] = rout + .65; | |
215 | par[1] = rout + 5.65; | |
fe4da5cc | 216 | par[2] = .025; |
0d630091 | 217 | gMC->Gsvolu("R3L3", "TUBE", idtmed[3], par, 3); |
218 | gMC->Gspos("R3L3", 1, "ALIC", 0., 0., z - 1.525, 0, "ONLY"); | |
219 | ||
220 | // Bracket #1 | |
221 | ||
222 | par[0] = 1.5; | |
223 | par[1] = 0.1; | |
224 | par[2] = 15.35; | |
225 | gMC->Matrix(irotm[61], 90., 0., 180.-161.2, 90., 180.-71.2, 90.); | |
226 | gMC->Gsposp("BR3_",5,"ALIC", 0., 25.25, -85.0, irotm[61],"ONLY",par,3); | |
227 | par[1] = 0.5; | |
228 | gMC->Gsposp("CB3_",5,"ALIC", 0., 25.41, -84.53,irotm[61],"ONLY",par,3); | |
229 | ||
230 | gMC->Matrix(irotm[91], 90., 0., 90.-10.6, 90., 180.-10.6, 90.); | |
231 | par[1] = 0.1; | |
232 | par[2] = 81.4; | |
233 | gMC->Gsposp("BR5_",1,"ALIC", 0., 55.0, -170.0,irotm[91],"ONLY",par,3); | |
234 | par[1] = 0.5; | |
235 | gMC->Gsposp("CB5_",1,"ALIC", 0., 55.5, -169.5,irotm[91],"ONLY",par,3); | |
236 | ||
237 | // Bracket #2 | |
238 | ||
239 | par[0] = 1.5; | |
240 | par[1] = 0.1; | |
241 | par[2] = 15.35; | |
242 | gMC->Matrix(irotm[62], 90., 180., 180.-161.2, 270., 180.-71.2, 270.); | |
243 | gMC->Gsposp("BR3_",6,"ALIC", 0.,-25.25, -85.0,irotm[62],"ONLY",par,3); | |
244 | par[1] = 0.5; | |
245 | gMC->Gsposp("CB3_",6,"ALIC", 0.,-25.41, -84.53,irotm[62],"ONLY",par,3); | |
246 | ||
247 | gMC->Matrix(irotm[92], 90., 180., 90.-10.6, 270., 180.-10.6, 270.); | |
248 | par[1] = 0.1; | |
249 | par[2] = 81.4; | |
250 | gMC->Gsposp("BR5_",2,"ALIC", 0., -55.0, -170.0,irotm[92],"ONLY",par,3); | |
251 | par[1] = 0.5; | |
252 | gMC->Gsposp("CB5_",2,"ALIC", 0., -55.5, -169.5,irotm[92],"ONLY",par,3); | |
253 | ||
254 | // Bracket #3 | |
255 | ||
256 | par[0] = 1.5; | |
257 | par[1] = 0.1; | |
258 | par[2] = 15.35; | |
259 | gMC->Matrix(irotm[63], 90., 270., 180.-161.2, 0., 180.-71.2, 0.); | |
260 | gMC->Gsposp("BR3_",7,"ALIC", 25.25, 0., -85.0, irotm[63],"ONLY",par,3); | |
261 | par[1] = 0.5; | |
262 | gMC->Gsposp("CB3_",7,"ALIC", 25.41, 0., -84.53,irotm[63],"ONLY",par,3); | |
263 | ||
264 | gMC->Matrix(irotm[93], 90., 270., 90.-10.6, 0., 180.-10.6, 0.); | |
265 | par[1] = 0.1; | |
266 | par[2] = 81.4; | |
267 | gMC->Gsposp("BR5_",3,"ALIC", 55., 0., -170.,irotm[93],"ONLY",par,3); | |
268 | par[1] = 0.5; | |
269 | gMC->Gsposp("CB5_",3,"ALIC", 55.5, 0., -169.5,irotm[93],"ONLY",par,3); | |
270 | ||
271 | // Bracket #4 | |
272 | ||
273 | par[0] = 1.5; | |
274 | par[1] = 0.1; | |
275 | par[2] = 15.35; | |
276 | gMC->Matrix(irotm[64], 90., 90., 180.-161.2, 180., 180.-71.2, 180.); | |
277 | gMC->Gsposp("BR3_",8,"ALIC", -25.25, 0., -85., irotm[64],"ONLY",par,3); | |
278 | par[1] = 0.5; | |
279 | gMC->Gsposp("CB3_",8,"ALIC", -25.41, 0., -84.53,irotm[64],"ONLY",par,3); | |
280 | ||
281 | gMC->Matrix(irotm[94], 90., 90., 90.-10.6, 180., 180.-10.6, 180.); | |
282 | par[1] = 0.1; | |
283 | par[2] = 81.4; | |
284 | gMC->Gsposp("BR5_",4,"ALIC", -55., 0., -170.,irotm[94],"ONLY",par,3); | |
285 | par[1] = 0.5; | |
286 | gMC->Gsposp("CB5_",4,"ALIC", -55.5, 0., -169.5,irotm[94],"ONLY",par,3); | |
287 | ||
288 | // Central support ring | |
289 | ||
290 | par[0] = 39.; | |
291 | par[1] = 41.; | |
292 | par[2] = .5; | |
293 | gMC->Gsvolu("R2SP", "TUBE", idtmed[4], par, 3); | |
294 | gMC->Gspos("R2SP", 1, "ALIC", 0., 0., -89.5, 0, "ONLY"); | |
295 | ||
296 | // Left support ring | |
297 | ||
298 | par[0] = 69.; | |
299 | par[1] = 71.; | |
300 | par[2] = .5; | |
301 | gMC->Gsvolu("R3SP", "TUBE", idtmed[4], par, 3); | |
302 | gMC->Gspos("R3SP", 1, "ALIC", 0., 0., -249.5, 0, "ONLY"); | |
303 | ||
fe4da5cc | 304 | // ******************************************************** |
0d630091 | 305 | // DEFINE DISK#2 OF FMD |
fe4da5cc | 306 | // ******************************************************** |
307 | ||
0d630091 | 308 | gMC->Gsvolu("BR2_", "BOX ", idtmed[4], par, 0); |
309 | gMC->Gsvolu("CB2_", "BOX ", idtmed[5], par, 0); | |
310 | ||
311 | // Define parameters for right disk #2 | |
fe4da5cc | 312 | |
0d630091 | 313 | rin = 7.7; |
314 | rout = 13.7; | |
315 | z = 64.4; | |
316 | ||
317 | // Ring #1 | |
318 | ||
fe4da5cc | 319 | par[0] = rin; |
320 | par[1] = rout; | |
0d630091 | 321 | par[2] = 1.5; |
322 | gMC->Gsvolu("R1R2", "TUBE", idtmed[1], par, 3); | |
323 | gMC->Gspos("R1R2", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY"); | |
324 | ||
325 | // Ring #2 | |
326 | ||
fe4da5cc | 327 | par[0] = rout; |
0d630091 | 328 | par[1] = rout + .65; |
329 | par[2] = 1.5; | |
330 | gMC->Gsvolu("R2R2", "TUBE", idtmed[2], par, 3); | |
331 | gMC->Gspos("R2R2", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY"); | |
332 | ||
333 | // Ring #3 | |
334 | ||
335 | par[0] = rout + .65; | |
336 | par[1] = rout + 5.65; | |
fe4da5cc | 337 | par[2] = .025; |
0d630091 | 338 | gMC->Gsvolu("R3R2", "TUBE", idtmed[3], par, 3); |
339 | gMC->Gspos("R3R2", 1, "ALIC", 0., 0., z + 1.525, 0, "ONLY"); | |
340 | ||
341 | // Bracket #1 | |
342 | ||
343 | par[0] = 1.5; | |
344 | par[1] = 0.1; | |
345 | par[2] = 17.35; | |
346 | gMC->Matrix(irotm[21], 90., 30., 139.3, 120., 49.3, 120.); | |
347 | gMC->Gsposp("BR2_",1,"ALIC", -13.4, 23.3, 78.7, irotm[21],"ONLY",par,3); | |
348 | par[1] = 0.5; | |
349 | gMC->Gsposp("CB2_",1,"ALIC", -13.56, 23.6, 78.4, irotm[21],"ONLY",par,3); | |
350 | ||
351 | // Bracket #2 | |
352 | ||
353 | par[0] = 1.5; | |
354 | par[1] = 0.1; | |
355 | par[2] = 17.35; | |
356 | gMC->Matrix(irotm[22], 90., 210., 139.3, 300., 49.3, 300.); | |
357 | gMC->Gsposp("BR2_",2,"ALIC", 13.4,-23.3, 78.7, irotm[22],"ONLY",par,3); | |
358 | par[1] = 0.5; | |
359 | gMC->Gsposp("CB2_",2,"ALIC", 13.5,-23.6, 78.4,irotm[22],"ONLY",par,3); | |
360 | ||
361 | ||
362 | // Bracket #3 | |
363 | ||
364 | par[0] = 1.5; | |
365 | par[1] = 0.1; | |
366 | par[2] = 17.35; | |
367 | gMC->Matrix(irotm[23], 90., 300., 139.3, 30., 49.3, 30.); | |
368 | gMC->Gsposp("BR2_",3,"ALIC", 23.3, 13.4, 78.7, irotm[23],"ONLY",par,3); | |
369 | par[1] = 0.5; | |
370 | gMC->Gsposp("CB2_",3,"ALIC", 23.6, 13.56, 78.4,irotm[23],"ONLY",par,3); | |
371 | ||
372 | // Bracket #4 | |
373 | ||
374 | par[0] = 1.5; | |
375 | par[1] = 0.1; | |
376 | par[2] = 17.35; | |
377 | gMC->Matrix(irotm[24], 90., 120., 139.3, 210., 49.3, 210.); | |
378 | gMC->Gsposp("BR2_",4,"ALIC", -23.3, -13.4, 78.7,irotm[24],"ONLY",par,3); | |
379 | par[1] = 0.5; | |
380 | gMC->Gsposp("CB2_",4,"ALIC", -23.6, -13.56, 78.4,irotm[24],"ONLY",par,3); | |
381 | ||
382 | // Define parameters for left disk | |
fe4da5cc | 383 | |
0d630091 | 384 | rin = 7.7; |
385 | rout = 13.7; | |
386 | z = -64.4; | |
387 | ||
388 | // Ring #1 | |
389 | ||
fe4da5cc | 390 | par[0] = rin; |
391 | par[1] = rout; | |
0d630091 | 392 | par[2] = 1.5; |
393 | gMC->Gsvolu("R1L2", "TUBE", idtmed[1], par, 3); | |
394 | gMC->Gspos("R1L2", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY"); | |
395 | ||
396 | // Ring #2 | |
397 | ||
fe4da5cc | 398 | par[0] = rout; |
0d630091 | 399 | par[1] = rout + .65; |
400 | par[2] = 1.5; | |
401 | gMC->Gsvolu("R2L2", "TUBE", idtmed[2], par, 3); | |
402 | gMC->Gspos("R2L2", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY"); | |
403 | ||
404 | // Ring #3 | |
405 | ||
406 | par[0] = rout + .65; | |
407 | par[1] = rout + 5.65; | |
fe4da5cc | 408 | par[2] = .025; |
0d630091 | 409 | gMC->Gsvolu("R3L2", "TUBE", idtmed[3], par, 3); |
410 | gMC->Gspos("R3L2", 1, "ALIC", 0., 0., z - 1.525, 0, "ONLY"); | |
411 | ||
412 | // Bracket #1 | |
413 | ||
414 | par[0] = 1.5; | |
415 | par[1] = 0.1; | |
416 | par[2] = 17.35; | |
417 | gMC->Matrix(irotm[51], 90., 30., 180.-139.3, 120., 180.-49.3, 120.); | |
418 | gMC->Gsposp("BR2_",5,"ALIC", -13.4, 23.3, -78.7, irotm[51],"ONLY",par,3); | |
419 | par[1] = 0.5; | |
420 | gMC->Gsposp("CB2_",5,"ALIC", -13.56, 23.6, -78.4,irotm[51],"ONLY",par,3); | |
421 | ||
422 | gMC->Matrix(irotm[81], 90., 30., 90.-10.6, 120., 180.-10.6, 120.); | |
423 | par[1] = 0.1; | |
424 | par[2] = 81.4; | |
425 | gMC->Gsposp("BR5_",5,"ALIC", -27.5, 47.6, -170.0,irotm[81],"ONLY",par,3); | |
426 | par[1] = 0.5; | |
427 | gMC->Gsposp("CB5_",5,"ALIC", -27.85, 48., -169.5,irotm[81],"ONLY",par,3); | |
428 | ||
429 | // Bracket #2 | |
430 | ||
431 | par[0] = 1.5; | |
432 | par[1] = 0.1; | |
433 | par[2] = 17.35; | |
434 | gMC->Matrix(irotm[52], 90., 210., 180.-139.3, 300., 180.-49.3, 300.); | |
435 | gMC->Gsposp("BR2_",6,"ALIC", 13.4, -23.3, -78.7,irotm[52],"ONLY",par,3); | |
436 | par[1] = 0.5; | |
437 | gMC->Gsposp("CB2_",6,"ALIC", 13.56, -23.6, -78.4,irotm[52],"ONLY",par,3); | |
438 | ||
439 | gMC->Matrix(irotm[82], 90., 210., 90.-10.6, 300., 180.-10.6, 300.); | |
440 | par[1] = 0.1; | |
441 | par[2] = 81.4; | |
442 | gMC->Gsposp("BR5_",6,"ALIC", 27.5, -47.6, -170.0,irotm[82],"ONLY",par,3); | |
443 | par[1] = 0.5; | |
444 | gMC->Gsposp("CB5_",6,"ALIC", 27.85, -48., -169.5,irotm[82],"ONLY",par,3); | |
445 | ||
446 | // Bracket #3 | |
447 | ||
448 | par[0] = 1.5; | |
449 | par[1] = 0.1; | |
450 | par[2] = 17.35; | |
451 | gMC->Matrix(irotm[53], 90., 300., 180.-139.3, 30., 180.-49.3, 30.); | |
452 | gMC->Gsposp("BR2_",7,"ALIC", 23.3, 13.4, -78.7, irotm[53],"ONLY",par,3); | |
453 | par[1] = 0.5; | |
454 | gMC->Gsposp("CB2_",7,"ALIC", 23.6, 13.56, -78.4,irotm[53],"ONLY",par,3); | |
455 | ||
456 | gMC->Matrix(irotm[83], 90., 300., 90.-10.6, 30., 180.-10.6, 30.); | |
457 | par[1] = 0.1; | |
458 | par[2] = 81.4; | |
459 | gMC->Gsposp("BR5_",7,"ALIC", 47.6, 27.5, -170.,irotm[83],"ONLY",par,3); | |
460 | par[1] = 0.5; | |
461 | gMC->Gsposp("CB5_",7,"ALIC", 48., 27.85, -169.5,irotm[83],"ONLY",par,3); | |
462 | ||
463 | // Bracket #4 | |
464 | ||
465 | par[0] = 1.5; | |
466 | par[1] = 0.1; | |
467 | par[2] = 17.35; | |
468 | gMC->Matrix(irotm[54], 90., 120., 180.-139.3, 210., 180.-49.3, 210.); | |
469 | gMC->Gsposp("BR2_",8,"ALIC", -23.3, -13.4, -78.7, irotm[54],"ONLY",par,3); | |
470 | par[1] = 0.5; | |
471 | gMC->Gsposp("CB2_",8,"ALIC", -23.6, -13.56, -78.4,irotm[54],"ONLY",par,3); | |
472 | ||
473 | gMC->Matrix(irotm[84], 90., 120., 90.-10.6, 210., 180.-10.6, 210.); | |
474 | par[1] = 0.1; | |
475 | par[2] = 81.4; | |
476 | gMC->Gsposp("BR5_",8,"ALIC", -47.6, -27.5, -170.,irotm[84],"ONLY",par,3); | |
477 | par[1] = 0.5; | |
478 | gMC->Gsposp("CB5_",8,"ALIC", -48., -27.85, -169.5,irotm[84],"ONLY",par,3); | |
479 | ||
fe4da5cc | 480 | // ******************************************************** |
0d630091 | 481 | // DEFINE DISK#1 OF FMD |
fe4da5cc | 482 | // ******************************************************** |
483 | ||
0d630091 | 484 | gMC->Gsvolu("BR1_", "BOX ", idtmed[4], par, 0); |
485 | gMC->Gsvolu("CB1_", "BOX ", idtmed[5], par, 0); | |
fe4da5cc | 486 | |
0d630091 | 487 | // Define parameters for right disk #1 |
488 | ||
489 | rin = 12.4; | |
490 | rout = 18.4; | |
491 | z = 59.4; | |
492 | ||
493 | // Ring #1 | |
494 | ||
fe4da5cc | 495 | par[0] = rin; |
496 | par[1] = rout; | |
0d630091 | 497 | par[2] = 1.5; |
498 | gMC->Gsvolu("R1R1", "TUBE", idtmed[1], par, 3); | |
499 | gMC->Gspos("R1R1", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY"); | |
500 | ||
501 | // Ring #2 | |
502 | ||
fe4da5cc | 503 | par[0] = rout; |
0d630091 | 504 | par[1] = rout + .65; |
505 | par[2] = 1.5; | |
506 | gMC->Gsvolu("R2R1", "TUBE", idtmed[2], par, 3); | |
507 | gMC->Gspos("R2R1", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY"); | |
508 | ||
509 | // Ring #3 | |
510 | ||
511 | par[0] = rout + .65; | |
512 | par[1] = rout + 5.65; | |
fe4da5cc | 513 | par[2] = .025; |
0d630091 | 514 | gMC->Gsvolu("R3R1", "TUBE", idtmed[3], par, 3); |
515 | gMC->Gspos("R3R1", 1, "ALIC", 0., 0., z + 1.525, 0, "ONLY"); | |
516 | ||
517 | // Bracket #1 | |
518 | ||
519 | par[0] = 1.5; | |
520 | par[1] = 0.1; | |
521 | par[2] = 17.5; | |
522 | gMC->Matrix(irotm[31], 90., 60., 128., 150., 38., 150.); | |
523 | gMC->Gsposp("BR1_",1,"ALIC", -25.3, 14.6, 76.2, irotm[31],"ONLY",par,3); | |
524 | par[1] = 0.5; | |
525 | gMC->Gsposp("CB1_",1,"ALIC", -25.35, 14.8, 75.9, irotm[31],"ONLY",par,3); | |
526 | ||
527 | // Bracket #2 | |
528 | ||
529 | par[0] = 1.5; | |
530 | par[1] = 0.1; | |
531 | par[2] = 17.5; | |
532 | gMC->Matrix(irotm[32], 90., 240., 128., 330., 38., 330.); | |
533 | gMC->Gsposp("BR1_",2,"ALIC", 25.3, -14.6, 76.2, irotm[32],"ONLY",par,3); | |
534 | par[1] = 0.5; | |
535 | gMC->Gsposp("CB1_",2,"ALIC", 25.35, -14.8, 75.9,irotm[32],"ONLY",par,3); | |
536 | ||
537 | // Bracket #3 | |
538 | ||
539 | par[0] = 1.5; | |
540 | par[1] = 0.1; | |
541 | par[2] = 17.5; | |
542 | gMC->Matrix(irotm[33], 90., 330., 128., 60., 38., 60.); | |
543 | gMC->Gsposp("BR1_",3,"ALIC", 14.6, 25.3, 76.2, irotm[33],"ONLY",par,3); | |
544 | par[1] = 0.5; | |
545 | gMC->Gsposp("CB1_",3,"ALIC", 14.8, 25.35, 75.9,irotm[33],"ONLY",par,3); | |
546 | ||
547 | // Bracket #4 | |
548 | ||
549 | par[0] = 1.5; | |
550 | par[1] = 0.1; | |
551 | par[2] = 17.5; | |
552 | gMC->Matrix(irotm[34], 90., 150., 128., 240., 38., 240.); | |
553 | gMC->Gsposp("BR1_",4,"ALIC", -14.6, -25.3, 76.2,irotm[34],"ONLY",par,3); | |
554 | par[1] = 0.5; | |
555 | gMC->Gsposp("CB1_",4,"ALIC", -14.8, -25.35, 75.9,irotm[34],"ONLY",par,3); | |
556 | ||
557 | // Define parameters for left disk #1 | |
fe4da5cc | 558 | |
0d630091 | 559 | rin = 12.4; |
560 | rout = 18.4; | |
561 | z = -59.4; | |
562 | ||
563 | // Ring #1 | |
564 | ||
fe4da5cc | 565 | par[0] = rin; |
566 | par[1] = rout; | |
0d630091 | 567 | par[2] = 1.5; |
568 | gMC->Gsvolu("R1L1", "TUBE", idtmed[1], par, 3); | |
569 | gMC->Gspos("R1L1", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY"); | |
570 | ||
571 | // Ring #2 | |
572 | ||
fe4da5cc | 573 | par[0] = rout; |
0d630091 | 574 | par[1] = rout + .65; |
575 | par[2] = 1.5; | |
576 | gMC->Gsvolu("R2L1", "TUBE", idtmed[2], par, 3); | |
577 | gMC->Gspos("R2L1", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY"); | |
578 | ||
579 | // Ring #3 | |
580 | ||
581 | par[0] = rout + .65; | |
582 | par[1] = rout + 5.65; | |
fe4da5cc | 583 | par[2] = .025; |
0d630091 | 584 | gMC->Gsvolu("R3L1", "TUBE", idtmed[3], par, 3); |
585 | gMC->Gspos("R3L1", 1, "ALIC", 0., 0., z - 1.525, 0, "ONLY"); | |
586 | ||
587 | // Bracket #1 | |
588 | ||
589 | par[0] = 1.5; | |
590 | par[1] = 0.1; | |
591 | par[2] = 17.5; | |
592 | gMC->Matrix(irotm[41], 90., 60., 180.-128., 150., 180.-38.0, 150.); | |
593 | gMC->Gsposp("BR1_",5,"ALIC", -25.3, 14.6, -76.2, irotm[41],"ONLY",par,3); | |
594 | par[1] = 0.5; | |
595 | gMC->Gsposp("CB1_",5,"ALIC", -25.35, 14.8, -75.9,irotm[41],"ONLY",par,3); | |
596 | ||
597 | gMC->Matrix(irotm[1], 90., 60., 90.-10.6, 150., 180.-10.6, 150.); | |
598 | par[1] = 0.1; | |
599 | par[2] = 81.4; | |
600 | gMC->Gsposp("BR5_",9,"ALIC", -47.6, 27.5, -170.,irotm[1],"ONLY",par,3); | |
601 | par[1] = 0.5; | |
602 | gMC->Gsposp("CB5_",9,"ALIC", -48., 27.85, -169.5,irotm[1],"ONLY",par,3); | |
603 | ||
604 | // Bracket #2 | |
605 | ||
606 | par[0] = 1.5; | |
607 | par[1] = 0.1; | |
608 | par[2] = 17.5; | |
609 | gMC->Matrix(irotm[42], 90., 240., 180.-128., 330., 180.-38., 330.); | |
610 | gMC->Gsposp("BR1_",6,"ALIC", 25.3,-14.6, -76.2,irotm[42],"ONLY",par,3); | |
611 | par[1] = 0.5; | |
612 | gMC->Gsposp("CB1_",6,"ALIC", 25.35,-14.8, -75.9,irotm[42],"ONLY",par,3); | |
613 | ||
614 | gMC->Matrix(irotm[2], 90., 240., 90.-10.6, 330., 180.-10.6, 330.); | |
615 | par[1] = 0.1; | |
616 | par[2] = 81.4; | |
617 | gMC->Gsposp("BR5_",10,"ALIC", 47.6, -27.5, -170.0,irotm[2],"ONLY",par,3); | |
618 | par[1] = 0.5; | |
619 | gMC->Gsposp("CB5_",10,"ALIC", 48., -27.85, -169.5,irotm[2],"ONLY",par,3); | |
620 | ||
621 | // Bracket #3 | |
622 | ||
623 | par[0] = 1.5; | |
624 | par[1] = 0.1; | |
625 | par[2] = 17.5; | |
626 | gMC->Matrix(irotm[43], 90., 330., 180.-128., 60., 180.-38., 60.); | |
627 | gMC->Gsposp("BR1_",7,"ALIC", 14.6, 25.3, -76.2, irotm[43],"ONLY",par,3); | |
628 | par[1] = 0.5; | |
629 | gMC->Gsposp("CB1_",7,"ALIC", 14.8, 25.35, -75.9,irotm[43],"ONLY",par,3); | |
630 | ||
631 | gMC->Matrix(irotm[3], 90., 330., 90.-10.6, 60., 180.-10.6, 60.); | |
632 | par[1] = 0.1; | |
633 | par[2] = 81.4; | |
634 | gMC->Gsposp("BR5_",11,"ALIC", 27.5, 47.6, -170.,irotm[3],"ONLY",par,3); | |
635 | par[1] = 0.5; | |
636 | gMC->Gsposp("CB5_",11,"ALIC", 27.85, 48., -169.5,irotm[3],"ONLY",par,3); | |
637 | ||
638 | // Bracket #4 | |
639 | ||
640 | par[0] = 1.5; | |
641 | par[1] = 0.1; | |
642 | par[2] = 17.5; | |
643 | gMC->Matrix(irotm[44], 90., 150., 180.-128., 240., 180.-38., 240.); | |
644 | gMC->Gsposp("BR1_",8,"ALIC", -14.6, -25.3, -76.2, irotm[44],"ONLY",par,3); | |
645 | par[1] = 0.5; | |
646 | gMC->Gsposp("CB1_",8,"ALIC", -14.8, -25.35, -75.9,irotm[44],"ONLY",par,3); | |
647 | ||
648 | gMC->Matrix(irotm[4], 90., 150., 90.-10.6, 240., 180.-10.6, 240.); | |
649 | par[1] = 0.1; | |
650 | par[2] = 81.4; | |
651 | gMC->Gsposp("BR5_",12,"ALIC", -27.5, -47.6, -170.,irotm[4],"ONLY",par,3); | |
652 | par[1] = 0.5; | |
653 | gMC->Gsposp("CB5_",12,"ALIC", -27.85, -48., -169.5,irotm[4],"ONLY",par,3); | |
654 | ||
fe4da5cc | 655 | // *********************************************************** |
0d630091 | 656 | // DEFINE LEFT DISK#4 OF FMD |
fe4da5cc | 657 | // *********************************************************** |
0d630091 | 658 | |
659 | gMC->Gsvolu("BR4_", "BOX ", idtmed[4], par, 0); | |
660 | gMC->Gsvolu("CB4_", "BOX ", idtmed[5], par, 0); | |
661 | ||
662 | // Define parameters | |
663 | ||
664 | rin = 4.5; | |
665 | rout = 10.5; | |
fe4da5cc | 666 | z = -229.5; |
0d630091 | 667 | |
668 | // Ring #1 | |
669 | ||
fe4da5cc | 670 | par[0] = rin; |
671 | par[1] = rout; | |
0d630091 | 672 | par[2] = 1.5; |
673 | gMC->Gsvolu("R1L4", "TUBE", idtmed[1], par, 3); | |
674 | gMC->Gspos("R1L4", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY"); | |
675 | ||
676 | // Ring #2 | |
677 | ||
fe4da5cc | 678 | par[0] = rout; |
0d630091 | 679 | par[1] = rout + .65; |
680 | par[2] = 1.5; | |
681 | gMC->Gsvolu("R2L4", "TUBE", idtmed[2], par, 3); | |
682 | gMC->Gspos("R2L4", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY"); | |
683 | ||
684 | // Ring #3 | |
685 | ||
686 | par[0] = rout + .65; | |
687 | par[1] = rout + 5.65; | |
fe4da5cc | 688 | par[2] = .025; |
0d630091 | 689 | gMC->Gsvolu("R3L4", "TUBE", idtmed[3], par, 3); |
690 | gMC->Gspos("R3L4", 1, "ALIC", 0., 0., z - 1.525, 0, "ONLY"); | |
691 | ||
692 | // Bracket #1 | |
693 | ||
694 | par[0] = 1.5; | |
695 | par[1] = 0.1; | |
696 | par[2] = 31.25; | |
697 | gMC->Matrix(irotm[71], 90., 0., 90.-71., 90., 180.-71., 90.); | |
698 | gMC->Gsposp("BR4_",1,"ALIC", 0., 40.25, -240., irotm[71],"ONLY",par,3); | |
699 | par[1] = 0.5; | |
700 | gMC->Gsposp("CB4_",1,"ALIC", 0., 40.75, -239.5, irotm[71],"ONLY",par,3); | |
701 | ||
702 | // Bracket #2 | |
703 | ||
704 | par[0] = 1.5; | |
705 | par[1] = 0.1; | |
706 | par[2] = 31.25; | |
707 | gMC->Matrix(irotm[72], 90., 180., 90.-71., 270., 180.-71., 270.); | |
708 | gMC->Gsposp("BR4_",2,"ALIC", 0., -40.25, -240., irotm[72],"ONLY",par,3); | |
709 | par[1] = 0.5; | |
710 | gMC->Gsposp("CB4_",2,"ALIC", 0., -40.75, -239.5,irotm[72],"ONLY",par,3); | |
711 | ||
712 | // Bracket #3 | |
713 | ||
714 | par[0] = 1.5; | |
715 | par[1] = 0.1; | |
716 | par[2] = 31.25; | |
717 | gMC->Matrix(irotm[73], 90., 270., 90.-71., 0., 180.-71., 0.); | |
718 | gMC->Gsposp("BR4_",3,"ALIC", 40.25, 0., -240., irotm[73],"ONLY",par,3); | |
719 | par[1] = 0.5; | |
720 | gMC->Gsposp("CB4_",3,"ALIC", 40.75, 0., -239.5,irotm[73],"ONLY",par,3); | |
721 | ||
722 | // Bracket #4 | |
723 | ||
724 | par[0] = 1.5; | |
725 | par[1] = 0.1; | |
726 | par[2] = 31.25; | |
727 | gMC->Matrix(irotm[74], 90., 90., 90.-71., 180., 180.-71., 180.); | |
728 | gMC->Gsposp("BR4_",4,"ALIC", -40.25, 0., -240.,irotm[74],"ONLY",par,3); | |
729 | par[1] = 0.5; | |
730 | gMC->Gsposp("CB4_",4,"ALIC", -40.75, 0., -239.5,irotm[74],"ONLY",par,3); | |
fe4da5cc | 731 | } |
0d630091 | 732 | |
fe4da5cc | 733 | //_____________________________________________________________________________ |
b316044f | 734 | void AliFMDv1::DrawModule() |
fe4da5cc | 735 | { |
736 | // | |
737 | // Draw a shaded view of the FMD version 1 | |
738 | // | |
739 | ||
fe4da5cc | 740 | // Set everything unseen |
cfce8870 | 741 | gMC->Gsatt("*", "seen", -1); |
fe4da5cc | 742 | // |
743 | // Set ALIC mother transparent | |
cfce8870 | 744 | gMC->Gsatt("ALIC","SEEN",0); |
fe4da5cc | 745 | // |
746 | // Set the volumes visible | |
0d630091 | 747 | gMC->Gsatt("R1R3","SEEN",1); |
748 | gMC->Gsatt("R2R3","SEEN",1); | |
749 | gMC->Gsatt("R3R3","SEEN",1); | |
750 | gMC->Gsatt("R1L3","SEEN",1); | |
751 | gMC->Gsatt("R2L3","SEEN",1); | |
752 | gMC->Gsatt("R3L3","SEEN",1); | |
753 | gMC->Gsatt("R1R2","SEEN",1); | |
754 | gMC->Gsatt("R2R2","SEEN",1); | |
755 | gMC->Gsatt("R3R2","SEEN",1); | |
756 | gMC->Gsatt("R1L2","SEEN",1); | |
757 | gMC->Gsatt("R2L2","SEEN",1); | |
758 | gMC->Gsatt("R3L2","SEEN",1); | |
759 | gMC->Gsatt("R1R1","SEEN",1); | |
760 | gMC->Gsatt("R2R1","SEEN",1); | |
761 | gMC->Gsatt("R3R1","SEEN",1); | |
762 | gMC->Gsatt("R1L1","SEEN",1); | |
763 | gMC->Gsatt("R2L1","SEEN",1); | |
764 | gMC->Gsatt("R3L1","SEEN",1); | |
765 | gMC->Gsatt("R1L4","SEEN",1); | |
766 | gMC->Gsatt("R2L4","SEEN",1); | |
767 | gMC->Gsatt("R3L4","SEEN",1); | |
768 | gMC->Gsatt("BR1_","SEEN",1); | |
769 | gMC->Gsatt("BR2_","SEEN",1); | |
770 | gMC->Gsatt("BR3_","SEEN",1); | |
771 | gMC->Gsatt("BR4_","SEEN",1); | |
772 | gMC->Gsatt("BR5_","SEEN",1); | |
773 | gMC->Gsatt("CB1_","SEEN",1); | |
774 | gMC->Gsatt("CB2_","SEEN",1); | |
775 | gMC->Gsatt("CB3_","SEEN",1); | |
776 | gMC->Gsatt("CB4_","SEEN",1); | |
777 | gMC->Gsatt("CB5_","SEEN",1); | |
778 | gMC->Gsatt("R1SP","SEEN",1); | |
779 | gMC->Gsatt("R2SP","SEEN",1); | |
780 | gMC->Gsatt("R3SP","SEEN",1); | |
fe4da5cc | 781 | // |
cfce8870 | 782 | gMC->Gdopt("hide", "on"); |
783 | gMC->Gdopt("shad", "on"); | |
784 | gMC->Gsatt("*", "fill", 7); | |
785 | gMC->SetClipBox("."); | |
786 | gMC->SetClipBox("*", 0, 1000, -1000, 1000, -1000, 1000); | |
787 | gMC->DefaultRange(); | |
788 | gMC->Gdraw("alic", 40, 30, 0, 6, 9, .08, .08); | |
789 | gMC->Gdhead(1111, "Forward Multiplicity Detector version 1"); | |
790 | gMC->Gdman(13, 9, "MAN"); | |
fe4da5cc | 791 | } |
792 | ||
793 | //_____________________________________________________________________________ | |
794 | void AliFMDv1::CreateMaterials() | |
795 | { | |
796 | // | |
0d630091 | 797 | // Create Materials for version 1 of FMD |
fe4da5cc | 798 | // |
799 | ||
0d630091 | 800 | // Material for ring #1 |
801 | Float_t ar1[8] = { 55.8,58.7,52.,47.9,16.,28.,207.2,27. }; | |
802 | Float_t zr1[8] = { 26.,28.,24.,22.,8.,14.,82.,13. }; | |
803 | Float_t wr1[8] = { .27,.081,.054,.045,.18,.25,.06,.06 }; | |
804 | // Material for ring #2 | |
805 | Float_t ar2[3] = { 55.8,27.,16. }; | |
806 | Float_t zr2[3] = { 26.,13.,8. }; | |
807 | Float_t wr2[3] = { .35,.34,.31 }; | |
808 | // Material for ring #3 | |
809 | Float_t ar3[3] = { 28.,27.,16. }; | |
810 | Float_t zr3[3] = { 14.,13.,8. }; | |
811 | Float_t wr3[3] = { .37,.33,.3 }; | |
812 | // Material for brackets | |
813 | Float_t abr[2] = { 1.,12. }; | |
814 | Float_t zbr[2] = { 1.,6. }; | |
815 | Float_t wbr[2] = { .1,.9 }; | |
816 | // Material for cables | |
817 | Float_t acb[4] = { 1.,12.,37.,63.54 }; | |
818 | Float_t zcb[4] = { 1.,6.,17.,2.9 }; | |
819 | Float_t wcb[4] = { .02,.14,.12,.72 }; | |
fe4da5cc | 820 | |
821 | Float_t epsil, stmin, deemax, tmaxfd, stemax; | |
822 | ||
823 | Int_t ISXFLD = gAlice->Field()->Integ(); | |
824 | Float_t SXMGMX = gAlice->Field()->Max(); | |
825 | ||
0d630091 | 826 | // Ring #1 |
fe4da5cc | 827 | |
0d630091 | 828 | AliMixture(1, "FMD_R1$", ar1, zr1, 2.69, 8, wr1); |
fe4da5cc | 829 | |
0d630091 | 830 | // Ring #2 |
fe4da5cc | 831 | |
0d630091 | 832 | AliMixture(2, "FMD_R2$", ar2, zr2, 2.63, 3, wr2); |
fe4da5cc | 833 | |
0d630091 | 834 | // Ring #3 |
fe4da5cc | 835 | |
0d630091 | 836 | AliMixture(3, "FMD_R3$", ar3, zr3, 3.15, 3, wr3); |
837 | ||
838 | // Brackets | |
fe4da5cc | 839 | |
0d630091 | 840 | AliMixture(4, "FMD_BR$", abr, zbr, 1.8, 2, wbr); |
841 | ||
842 | // Cables | |
fe4da5cc | 843 | |
0d630091 | 844 | AliMixture(5, "FMD_CB$", acb, zcb, 3.11, 4, wcb); |
845 | ||
fe4da5cc | 846 | // ******************************************************* |
847 | // Defines tracking media parameters. | |
848 | // ******************************************************* | |
849 | epsil = .001; // Tracking precision, DLS | |
850 | stemax = -1.; // Maximum displacement for multiple scattering | |
851 | tmaxfd = -20.; // Maximum angle due to field deflection | |
852 | deemax = -.3; // Maximum fractional energy loss, DLS | |
853 | stmin = -.8; | |
854 | // ******************************************************** | |
0d630091 | 855 | AliMedium(1, "FMD_R1_L3 ", 1, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin); |
856 | AliMedium(2, "FMD_R2_L3 ", 2, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin); | |
857 | AliMedium(3, "FMD_R3_L3 ", 3, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin); | |
858 | AliMedium(4, "FMD_BR_L3 ", 4, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin); | |
859 | AliMedium(5, "FMD_CB_L3 ", 5, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin); | |
fe4da5cc | 860 | } |
861 | ||
0d630091 | 862 | |
863 |