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