]>
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$ | |
18 | */ | |
19 | ||
fe4da5cc | 20 | /////////////////////////////////////////////////////////////////////////////// |
21 | // // | |
22 | // Space frame class // | |
23 | // // | |
24 | //Begin_Html | |
25 | /* | |
1439f98e | 26 | <img src="picts/AliFRAMEClass.gif"> |
fe4da5cc | 27 | */ |
28 | //End_Html | |
29 | // // | |
30 | /////////////////////////////////////////////////////////////////////////////// | |
31 | ||
32 | #include "AliFRAMEv1.h" | |
33 | #include "AliRun.h" | |
fe4da5cc | 34 | |
35 | ClassImp(AliFRAMEv1) | |
36 | ||
37 | //_____________________________________________________________________________ | |
b8032157 | 38 | AliFRAMEv1::AliFRAMEv1() |
fe4da5cc | 39 | { |
40 | // | |
41 | // Default constructor for space frame | |
42 | // | |
43 | } | |
44 | ||
45 | //_____________________________________________________________________________ | |
46 | AliFRAMEv1::AliFRAMEv1(const char *name, const char *title) | |
47 | : AliFRAME(name,title) | |
48 | { | |
49 | // | |
50 | // Standard constructor for space frame | |
51 | // | |
52 | } | |
53 | ||
54 | //_____________________________________________________________________________ | |
55 | void AliFRAMEv1::CreateGeometry() | |
56 | { | |
57 | // | |
58 | // Create space frame geometry | |
59 | // | |
60 | //Begin_Html | |
61 | /* | |
1439f98e | 62 | <img src="picts/AliFRAME.gif"> |
fe4da5cc | 63 | */ |
64 | //End_Html | |
65 | //Begin_Html | |
66 | /* | |
1439f98e | 67 | <img src="picts/AliFRAMETree.gif"> |
fe4da5cc | 68 | */ |
69 | //End_Html | |
cfce8870 | 70 | |
ad51aeb0 | 71 | Int_t *idtmed = fIdtmed->GetArray()-1199; |
fe4da5cc | 72 | |
73 | Float_t dphi, dz_small, zpos, ddphi; | |
74 | Float_t tspar[5]; | |
75 | Float_t tsparl[5]; | |
76 | Float_t par[50], dz_long; | |
77 | ||
78 | // R_IN : INNER RADIUS | |
79 | // R_OU : OUTER RADIUS | |
80 | // DR : WALL THICKNESS | |
81 | // 2*Z_IN : FREE SPACE IN Z FOR PHOS | |
82 | // 2*Z_RI : FREE SPACE IN Z FOR RICH | |
83 | // 2*Z_OU : LENGTH | |
84 | // 2*DZ : WIDTH OF FRAME ELEMENTS | |
85 | Float_t r_in = 395; | |
86 | Float_t r_ou = 420; | |
87 | Float_t dr = 0.3; | |
88 | Float_t z_in = 130; | |
89 | Float_t z_ou = 350; | |
90 | Float_t z_ri = 236.25; | |
91 | Float_t dz = 8.75; | |
92 | ||
93 | ||
94 | // Space Frame | |
95 | ||
96 | par[0] = r_in; | |
97 | par[1] = r_ou; | |
98 | par[2] = z_ou; | |
cfce8870 | 99 | gMC->Gsvolu("BFMO", "TUBE", idtmed[1214], par, 3); |
fe4da5cc | 100 | |
101 | // Rings perpendicular to the beam | |
102 | ||
103 | // full rings at the ends | |
104 | ||
105 | par[0] = r_in; | |
106 | par[1] = r_ou; | |
107 | par[2] = dz; | |
cfce8870 | 108 | gMC->Gsvolu("BRO1", "TUBE", idtmed[1218], par, 3); |
fe4da5cc | 109 | par[0] = r_in +dr; |
110 | par[1] = r_ou -dr; | |
111 | par[2] = dz - dr; | |
cfce8870 | 112 | gMC->Gsvolu("BRI1", "TUBE", idtmed[1214], par, 3); |
113 | gMC->Gspos("BRI1", 1, "BRO1", 0., 0., 0., 0, "ONLY"); | |
fe4da5cc | 114 | zpos = z_ou - dz; |
cfce8870 | 115 | gMC->Gspos("BRO1", 1, "BFMO", 0., 0.,-zpos, 0, "ONLY"); |
116 | gMC->Gspos("BRO1", 2, "BFMO", 0., 0., zpos, 0, "ONLY"); | |
fe4da5cc | 117 | |
118 | // space for the HMPID | |
119 | ||
120 | tspar[0] = r_in; | |
121 | tspar[1] = r_ou; | |
122 | tspar[2] = dz; | |
123 | tspar[3] = -240.; | |
124 | tspar[4] = 60.; | |
cfce8870 | 125 | gMC->Gsvolu("BRO2", "TUBS", idtmed[1218], tspar, 5); |
fe4da5cc | 126 | tspar[0] = r_in + dr; |
127 | tspar[1] = r_ou - dr; | |
128 | tspar[2] = dz - dr; | |
cfce8870 | 129 | gMC->Gsvolu("BRI2", "TUBS", idtmed[1214], tspar, 5); |
130 | gMC->Gspos("BRI2", 1, "BRO2", 0., 0., 0., 0, "ONLY"); | |
fe4da5cc | 131 | zpos = z_in + dz; |
cfce8870 | 132 | gMC->Gspos("BRO2", 1, "BFMO", 0., 0.,-zpos, 0, "ONLY"); |
133 | gMC->Gspos("BRO2", 2, "BFMO", 0., 0., zpos, 0, "ONLY"); | |
fe4da5cc | 134 | |
135 | ||
136 | ||
137 | tspar[0] = r_in; | |
138 | tspar[1] = r_ou; | |
139 | tspar[2] = dz; | |
140 | tspar[3] = 60.; | |
141 | tspar[4] = 120.; | |
cfce8870 | 142 | gMC->Gsvolu("BRO3", "TUBS", idtmed[1218], tspar, 5); |
fe4da5cc | 143 | tspar[0] = r_in + dr; |
144 | tspar[1] = r_ou - dr; | |
145 | tspar[2] = dz - dr; | |
cfce8870 | 146 | gMC->Gsvolu("BRI3", "TUBS", idtmed[1214], tspar, 5); |
147 | gMC->Gspos("BRI3", 1, "BRO3", 0., 0., 0., 0, "ONLY"); | |
fe4da5cc | 148 | zpos = 245.; |
cfce8870 | 149 | gMC->Gspos("BRO3", 1, "BFMO", 0., 0.,-zpos, 0, "ONLY"); |
150 | gMC->Gspos("BRO3", 2, "BFMO", 0., 0., zpos, 0, "ONLY"); | |
fe4da5cc | 151 | |
152 | // longitudinal beams | |
153 | ||
154 | // outside phi=60-120 | |
155 | ||
156 | // virtual elements | |
157 | ||
158 | dz_small = (z_ou - z_in -4*dz)/2; | |
159 | dz_long = z_in; | |
160 | tsparl[0] = r_in; | |
161 | tsparl[1] = r_ou; | |
162 | tsparl[2] = dz_small; | |
163 | ||
164 | // left and right | |
165 | ||
166 | tsparl[3] = -240.; | |
167 | tsparl[4] = 60.; | |
cfce8870 | 168 | gMC->Gsvolu("BLO1", "TUBS", idtmed[1214], tsparl, 5); |
169 | gMC->Gsdvt("BLD1", "BLO1", 20., 2, idtmed[1214], 15); | |
fe4da5cc | 170 | |
171 | // central, leaving space for rich and phos | |
172 | ||
173 | tsparl[2] = dz_long; | |
174 | tsparl[3] = -20.; | |
175 | tsparl[4] = 60.; | |
cfce8870 | 176 | gMC->Gsvolu("BLO2", "TUBS", idtmed[1214], tsparl, 5); |
177 | gMC->Gsdvt("BLD2", "BLO2", 20., 2, idtmed[1214], 5); | |
fe4da5cc | 178 | tsparl[3] = 120.; |
179 | tsparl[4] = 200.; | |
cfce8870 | 180 | gMC->Gsvolu("BLO3", "TUBS", idtmed[1214], tsparl, 5); |
181 | gMC->Gsdvt("BLD3", "BLO3", 20., 2, idtmed[1214], 5); | |
fe4da5cc | 182 | |
183 | // real elements | |
184 | ||
185 | dphi = dz/(TMath::Pi()*(r_in + r_ou))*360; | |
186 | ddphi = dphi * dr/dz; | |
187 | tspar[0] = tsparl[0]; | |
188 | tspar[1] = tsparl[1]; | |
189 | tspar[2] = dz_small; | |
190 | tspar[3] = 10. - dphi; | |
191 | tspar[4] = 10.; | |
cfce8870 | 192 | gMC->Gsvolu("BL01", "TUBS", idtmed[1218], tspar, 5); |
fe4da5cc | 193 | |
194 | tspar[0] = tsparl[0] + dr; | |
195 | tspar[1] = tsparl[1] - dr; | |
196 | tspar[3] = 10. - dphi + ddphi; | |
197 | tspar[4] = 10. - ddphi; | |
cfce8870 | 198 | gMC->Gsvolu("BL02", "TUBS", idtmed[1214], tspar, 5); |
199 | gMC->Gspos("BL02", 1, "BL01", 0., 0., 0., 0, "ONLY"); | |
fe4da5cc | 200 | |
201 | ||
202 | tspar[0] = tsparl[0]; | |
203 | tspar[1] = tsparl[1]; | |
204 | tspar[2] = dz_long; | |
205 | tspar[3] = 10. - dphi; | |
206 | tspar[4] = 10.; | |
cfce8870 | 207 | gMC->Gsvolu("BL11", "TUBS", idtmed[1218], tspar, 5); |
fe4da5cc | 208 | |
209 | tspar[0] = tsparl[0] + dr; | |
210 | tspar[1] = tsparl[1] - dr; | |
211 | tspar[3] = 10. - dphi + ddphi; | |
212 | tspar[4] = 10. - ddphi; | |
cfce8870 | 213 | gMC->Gsvolu("BL12", "TUBS", idtmed[1214], tspar, 5); |
214 | gMC->Gspos("BL12", 1, "BL11", 0., 0., 0., 0, "ONLY"); | |
fe4da5cc | 215 | |
cfce8870 | 216 | gMC->Gspos("BL01", 1, "BLD1", 0., 0., 0., 0, "ONLY"); |
217 | gMC->Gspos("BL11", 1, "BLD2", 0., 0., 0., 0, "ONLY"); | |
218 | gMC->Gspos("BL11", 2, "BLD3", 0., 0., 0., 0, "ONLY"); | |
fe4da5cc | 219 | |
220 | zpos = z_in +2*dz + dz_small; | |
cfce8870 | 221 | gMC->Gspos("BLO1", 1, "BFMO", 0., 0.,-zpos, 0, "ONLY"); |
222 | gMC->Gspos("BLO1", 2, "BFMO", 0., 0., zpos, 0, "ONLY"); | |
223 | gMC->Gspos("BLO2", 1, "BFMO", 0., 0., 0., 0, "ONLY"); | |
224 | gMC->Gspos("BLO3", 1, "BFMO", 0., 0., 0., 0, "ONLY"); | |
fe4da5cc | 225 | |
226 | // PHI=60-120 (RICH) | |
227 | ||
228 | tsparl[0] = r_in; | |
229 | tsparl[1] = r_ou; | |
230 | tsparl[2] = (z_ou - z_ri -4*dz)/2; | |
231 | tsparl[3] = 60.; | |
232 | tsparl[4] = 120.; | |
cfce8870 | 233 | gMC->Gsvolu("BLO4", "TUBS", idtmed[1214], tsparl, 5); |
234 | gMC->Gsdvt("BLD4", "BLO4", 20., 2, idtmed[1214], 3); | |
fe4da5cc | 235 | tspar[0] = tsparl[0]; |
236 | tspar[1] = tsparl[1]; | |
237 | tspar[2] = tsparl[2]; | |
238 | tspar[3] = 10. - dphi; | |
239 | tspar[4] = 10.; | |
cfce8870 | 240 | gMC->Gsvolu("BL03", "TUBS", idtmed[1218], tspar, 5); |
fe4da5cc | 241 | |
242 | tspar[0] = tsparl[0] + dr; | |
243 | tspar[1] = tsparl[1] - dr; | |
244 | tspar[2] = tsparl[2]; | |
245 | tspar[3] = 10. - dphi + ddphi; | |
246 | tspar[4] = 10. - ddphi; | |
cfce8870 | 247 | gMC->Gsvolu("BL04", "TUBS", idtmed[1214], tspar, 5); |
248 | gMC->Gspos("BL04", 1, "BL03", 0., 0., 0., 0, "ONLY"); | |
fe4da5cc | 249 | |
cfce8870 | 250 | gMC->Gspos("BL03", 1, "BLD4", 0., 0., 0., 0, "ONLY"); |
fe4da5cc | 251 | |
cfce8870 | 252 | gMC->Gspos("BLO4", 1, "BFMO", 0., 0., 293.125, 0, "ONLY"); |
253 | gMC->Gspos("BLO4", 2, "BFMO", 0., 0.,-293.125, 0, "ONLY"); | |
fe4da5cc | 254 | |
cfce8870 | 255 | gMC->Gspos("BFMO", 1, "ALIC", 0., 0., 0., 0, "ONLY"); |
256 | gMC->Gsatt("BFMO", "SEEN", 0); | |
fe4da5cc | 257 | } |
258 | ||
259 | //_____________________________________________________________________________ | |
b8032157 | 260 | void AliFRAMEv1::DrawModule() |
fe4da5cc | 261 | { |
262 | // | |
263 | // Draw a shaded view of the space frame | |
264 | // | |
265 | ||
fe4da5cc | 266 | // Set everything unseen |
cfce8870 | 267 | gMC->Gsatt("*", "seen", -1); |
fe4da5cc | 268 | // |
269 | // Set ALIC mother transparent | |
cfce8870 | 270 | gMC->Gsatt("ALIC","SEEN",0); |
fe4da5cc | 271 | // |
272 | // Set the volumes visible | |
cfce8870 | 273 | gMC->Gsatt("BFMO","seen",0); |
274 | gMC->Gsatt("BRO1","seen",1); | |
275 | gMC->Gsatt("BRI1","seen",0); | |
276 | gMC->Gsatt("BRO2","seen",1); | |
277 | gMC->Gsatt("BRI2","seen",0); | |
278 | gMC->Gsatt("BRO3","seen",1); | |
279 | gMC->Gsatt("BRI3","seen",0); | |
280 | gMC->Gsatt("BLO1","seen",0); | |
281 | gMC->Gsatt("BLD1","seen",0); | |
282 | gMC->Gsatt("BLO2","seen",0); | |
283 | gMC->Gsatt("BLD2","seen",0); | |
284 | gMC->Gsatt("BLO3","seen",0); | |
285 | gMC->Gsatt("BLD3","seen",0); | |
286 | gMC->Gsatt("BL01","seen",1); | |
287 | gMC->Gsatt("BL02","seen",1); | |
288 | gMC->Gsatt("BL11","seen",1); | |
289 | gMC->Gsatt("BL12","seen",1); | |
290 | gMC->Gsatt("BLO4","seen",0); | |
291 | gMC->Gsatt("BLD4","seen",0); | |
292 | gMC->Gsatt("BL03","seen",1); | |
293 | gMC->Gsatt("BL04","seen",1); | |
fe4da5cc | 294 | // |
cfce8870 | 295 | gMC->Gdopt("hide", "on"); |
296 | gMC->Gdopt("shad", "on"); | |
297 | gMC->Gsatt("*", "fill", 7); | |
298 | gMC->SetClipBox("."); | |
299 | gMC->DefaultRange(); | |
300 | gMC->Gdraw("alic", 40, 30, 0, 10, 10, .015, .015); | |
301 | gMC->Gdhead(1111, "Space Frame"); | |
302 | gMC->Gdman(18, 4, "MAN"); | |
fe4da5cc | 303 | } |
304 | ||
305 | //_____________________________________________________________________________ | |
306 | void AliFRAMEv1::CreateMaterials() | |
307 | { | |
308 | ||
309 | // | |
310 | // Create materials for the space frame | |
311 | // | |
312 | ||
313 | Int_t ISXFLD = gAlice->Field()->Integ(); | |
314 | Float_t SXMGMX = gAlice->Field()->Max(); | |
315 | ||
316 | Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 }; | |
317 | Float_t zsteel[4] = { 26.,24.,28.,14. }; | |
318 | Float_t wsteel[4] = { .715,.18,.1,.005 }; | |
319 | ||
320 | Float_t epsil, stmin, deemax, tmaxfd, stemax; | |
321 | ||
322 | // STEEL | |
323 | ||
324 | ||
325 | // --- Define the various materials for GEANT --- | |
326 | AliMaterial(15, "AIR$ ", 14.61, 7.3, .001205, 30423.24, 67500); | |
327 | AliMixture(19, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel); | |
328 | ||
329 | // **************** | |
330 | // Defines tracking media parameters. | |
331 | // Les valeurs sont commentees pour laisser le defaut | |
332 | // a GEANT (version 3-21, page CONS200), f.m. | |
333 | epsil = .001; // Tracking precision, | |
334 | stemax = -1.; // Maximum displacement for multiple scat | |
335 | tmaxfd = -20.; // Maximum angle due to field deflection | |
336 | deemax = -.3; // Maximum fractional energy loss, DLS | |
337 | stmin = -.8; | |
338 | // *************** | |
339 | //ifield0 = 0; // Field off | |
340 | //ifield1 = 2; // 1.0 T. FIELD (DIPOLE) | |
341 | //ifield3 = 3; | |
342 | ||
343 | // Air | |
344 | ||
345 | // 0.2 T. FIELD (L3) | |
ad51aeb0 | 346 | AliMedium(15, "AIR_L3_US ", 15, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin); |
fe4da5cc | 347 | |
348 | // Steel | |
349 | ||
ad51aeb0 | 350 | AliMedium(19, "ST_L3_US ", 19, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin); |
fe4da5cc | 351 | } |
352 | ||
353 | ||
354 | ||
355 | ||
356 | ||
357 | ||
358 | ||
359 | ||
360 | ||
361 | ||
362 |