]>
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$ | |
cd9c4f3a | 18 | Revision 1.14 2001/01/20 16:56:33 morsch |
19 | Put air in connecting tubes and flanges of vacuum pump. | |
20 | ||
14b75006 | 21 | Revision 1.13 2001/01/20 16:35:27 morsch |
22 | Increase mother volume for bellows. | |
23 | ||
1416b7f3 | 24 | Revision 1.12 2000/12/21 16:41:06 morsch |
25 | Coding convention clean-up (RS3) | |
26 | ||
13391c3e | 27 | Revision 1.11 2000/11/28 16:06:57 morsch |
28 | Undulated beam-pipe replaced by Al-Be (40,60) pipe 1.5 mm thick. | |
29 | ||
2196bc42 | 30 | Revision 1.10 2000/11/24 13:00:37 morsch |
31 | - Geometry and materials imported from euclid output | |
32 | - include comments | |
33 | - better struturing of volume tree | |
34 | - improved version of flange close to front absorber | |
35 | - more realistic pump materials | |
36 | - undulated beam pipe imported from v3. | |
37 | ||
7bd7faf8 | 38 | Revision 1.9 2000/10/02 21:28:15 fca |
39 | Removal of useless dependecies via forward declarations | |
40 | ||
94de3818 | 41 | Revision 1.8 2000/06/11 12:37:01 morsch |
42 | Coding rule violations corrected | |
43 | ||
b43eb0dc | 44 | Revision 1.7 2000/02/23 16:25:24 fca |
45 | AliVMC and AliGeant3 classes introduced | |
46 | ReadEuclid moved from AliRun to AliModule | |
47 | ||
b13db077 | 48 | Revision 1.6 1999/09/29 09:24:30 fca |
49 | Introduction of the Copyright and cvs Log | |
50 | ||
4c039060 | 51 | */ |
52 | ||
fe4da5cc | 53 | //////////////////////////////////////////////// |
54 | // Beam pipe class / | |
55 | //////////////////////////////////////////////// | |
56 | ||
fe4da5cc | 57 | #include "AliPIPEv0.h" |
58 | #include "AliRun.h" | |
7bd7faf8 | 59 | #include "AliConst.h" |
60 | #include "AliMagF.h" | |
94de3818 | 61 | #include "AliMC.h" |
fe4da5cc | 62 | #include "TSystem.h" |
63 | ||
64 | ClassImp(AliPIPEv0) | |
65 | ||
66 | //_____________________________________________________________________________ | |
b8032157 | 67 | AliPIPEv0::AliPIPEv0() |
fe4da5cc | 68 | { |
b43eb0dc | 69 | // Constructor |
fe4da5cc | 70 | } |
71 | ||
72 | //_____________________________________________________________________________ | |
73 | AliPIPEv0::AliPIPEv0(const char *name, const char *title) | |
74 | : AliPIPE(name,title) | |
75 | { | |
b43eb0dc | 76 | // Constructor |
fe4da5cc | 77 | } |
78 | ||
79 | ||
80 | //___________________________________________ | |
81 | void AliPIPEv0::CreateGeometry() | |
82 | { | |
fe4da5cc | 83 | //Begin_Html |
84 | /* | |
1439f98e | 85 | <img src="picts/pipe.gif"> |
fe4da5cc | 86 | */ |
87 | //End_Html | |
88 | ||
89 | ||
90 | //Begin_Html | |
91 | /* | |
1439f98e | 92 | <img src="picts/tree_pipe.gif"> |
fe4da5cc | 93 | */ |
94 | //End_Html | |
95 | ||
cd9c4f3a | 96 | printf("Create PIPEvTemp geometry \n"); |
fe4da5cc | 97 | |
fe4da5cc | 98 | |
7bd7faf8 | 99 | Int_t *idtmed = fIdtmed->GetArray(); |
cd9c4f3a | 100 | Float_t ppcon[48], ptube[3], pbox[3]; |
7bd7faf8 | 101 | Int_t i=0; |
102 | ||
2196bc42 | 103 | enum {kC=6, kAlu=9, kInox=19, kGetter=20, kBe=5, kVac=16, kAir=15, kAlBe=21}; |
7bd7faf8 | 104 | |
105 | Int_t idrotm[2099]; | |
106 | AliMatrix(idrotm[2001],90.,240., 0., 0., 90.,150.); | |
107 | AliMatrix(idrotm[2002],90., 0., 0., 0., 90.,270.); | |
108 | AliMatrix(idrotm[2003],90.,120., 0., 0., 90., 30.); | |
109 | AliMatrix(idrotm[2004],90.,315., 90., 45., 0., 0.); | |
110 | AliMatrix(idrotm[2005],90.,270., 90., 0., 0., 0.); | |
111 | AliMatrix(idrotm[2006],90.,225., 90.,315., 0., 0.); | |
112 | AliMatrix(idrotm[2007],90.,180., 90.,270., 0., 0.); | |
113 | AliMatrix(idrotm[2008],90.,135., 90.,225., 0., 0.); | |
114 | AliMatrix(idrotm[2009],90., 90., 90.,180., 0., 0.); | |
115 | AliMatrix(idrotm[2010],90., 45., 90.,135., 0., 0.); | |
116 | idrotm[2011] = 0; | |
117 | AliMatrix(idrotm[2012],90.,180., 90., 90.,180., 0.); | |
118 | AliMatrix(idrotm[2013],90., 0., 90., 90.,180., 0.); | |
119 | ||
7bd7faf8 | 120 | |
fe4da5cc | 121 | // |
122 | // The peam pipe up to the Front Absorber | |
fe4da5cc | 123 | // |
7bd7faf8 | 124 | // Mother Volume QBPM |
cd9c4f3a | 125 | const Float_t dbe1 = 15.; |
126 | const Float_t dbe2 = 15.; | |
7bd7faf8 | 127 | ppcon[0] = 0; |
128 | ppcon[1] = 360; | |
cd9c4f3a | 129 | ppcon[2] = 15; |
7bd7faf8 | 130 | // 1: |
131 | ppcon[3] = - 90; | |
132 | ppcon[4] = 0; | |
133 | ppcon[5] = 5.8; | |
134 | // 2 | |
135 | ppcon[6] = - 81.0; | |
136 | ppcon[7] = 0.; | |
137 | ppcon[8] = 5.8; | |
138 | // 3 | |
139 | ppcon[9] = - 81.; | |
140 | ppcon[10] = 0.; | |
141 | ppcon[11] = 4.22; | |
142 | // 4 | |
cd9c4f3a | 143 | ppcon[12] = - 28.00-dbe2; |
7bd7faf8 | 144 | ppcon[13] = 0; |
145 | ppcon[14] = 4.22; | |
146 | // 5 | |
cd9c4f3a | 147 | ppcon[15] = - 28.00-dbe2; |
7bd7faf8 | 148 | ppcon[16] = 0; |
149 | ppcon[17] = 3.2; | |
150 | // 6 | |
151 | ppcon[18] = 0; | |
152 | ppcon[19] = 0; | |
153 | ppcon[20] = 3.2; | |
154 | // 7 | |
cd9c4f3a | 155 | ppcon[21] = 28.+dbe1; |
7bd7faf8 | 156 | ppcon[22] = 0; |
157 | ppcon[23] = 3.2; | |
158 | // 8 | |
cd9c4f3a | 159 | ppcon[24] = 28.+dbe1; |
7bd7faf8 | 160 | ppcon[25] = 0; |
161 | ppcon[26] = 4.22; | |
162 | // 9 | |
163 | ppcon[27] = 250; | |
164 | ppcon[28] = 0; | |
165 | ppcon[29] = 4.22; | |
166 | // 10 | |
167 | ppcon[30] = 250; | |
168 | ppcon[31] = 0; | |
169 | ppcon[32] = 5; | |
170 | // 11 | |
cd9c4f3a | 171 | ppcon[33] = 365; |
7bd7faf8 | 172 | ppcon[34] = 0; |
173 | ppcon[35] = 5; | |
cd9c4f3a | 174 | // 12 |
175 | ppcon[36] = 365; | |
176 | ppcon[37] = 0; | |
177 | ppcon[38] = 56; | |
178 | // 13 | |
179 | ppcon[39] = 405; | |
180 | ppcon[40] = 0; | |
181 | ppcon[41] = 56; | |
182 | // 14 | |
183 | ppcon[42] = 405; | |
184 | ppcon[43] = 0; | |
185 | ppcon[44] = 5; | |
186 | // 15 | |
187 | ppcon[45] = 800; | |
188 | ppcon[46] = 0; | |
189 | ppcon[47] = 5; | |
190 | ||
191 | gMC->Gsvolu("QBPM", "PCON", idtmed[kAir], ppcon, 48); | |
7bd7faf8 | 192 | |
193 | // | |
194 | // The Vacuum | |
195 | ptube[0] = 0.0; | |
196 | ptube[1] = 2.9; | |
197 | ptube[2] = 445.0; | |
198 | ||
199 | gMC->Gsvolu("QBVA","TUBE", idtmed[kVac], ptube, 3); | |
cd9c4f3a | 200 | gMC->Gspos ("QBVA", 1, "QBPM", 0., 0., 355., 0, "ONLY"); |
7bd7faf8 | 201 | // |
cd9c4f3a | 202 | // volume definitions of various sections |
203 | // | |
204 | // distance between bellows | |
205 | const Float_t dzbb = 8.0; | |
206 | // size of bellow | |
207 | const Float_t dzb = 11.4; | |
208 | ||
209 | //half-lengths of various beam pipe sections | |
210 | Float_t hlenQbbe=43.3; | |
211 | Float_t hlenQbt1=5.5/2.; | |
212 | Float_t hlenQbab=286.6/2.; | |
213 | Float_t hlenQb10=286.6/2.; | |
214 | Float_t hlenQb29=4.4/2.; | |
215 | Float_t hlenQbe0=(2.* dzb + dzbb)/2.; | |
216 | Float_t hlenQb26=20./2.; | |
217 | Float_t hlenQb28=400.6/2.; | |
218 | ||
219 | // Be Pipe in central Alice : length 43.3 * 2 | |
7bd7faf8 | 220 | ptube[0] = 2.90; |
221 | ptube[1] = 3.00; | |
cd9c4f3a | 222 | ptube[2] = hlenQbbe; |
7bd7faf8 | 223 | |
224 | gMC->Gsvolu("QBBE","TUBE", idtmed[kBe], ptube, 3); | |
7bd7faf8 | 225 | |
226 | // | |
cd9c4f3a | 227 | // Metal-Metal Transitions : non-absorber side |
7bd7faf8 | 228 | // |
cd9c4f3a | 229 | // Be-Al (or Be to Be-Al alloy) |
7bd7faf8 | 230 | // Mother Volume |
231 | ptube[0] = 2.900; | |
232 | ptube[1] = 4.200; | |
cd9c4f3a | 233 | ptube[2] = hlenQbt1; |
7bd7faf8 | 234 | gMC->Gsvolu("QBT1","TUBE", idtmed[kAir], ptube, 3); |
7bd7faf8 | 235 | |
236 | ptube[0] = 2.900; | |
237 | ptube[1] = 3.150; | |
238 | ptube[2] = 0.375; | |
239 | // | |
240 | // Be-part | |
cd9c4f3a | 241 | gMC->Gsvolu("QB01","TUBE", idtmed[kAlu], ptube, 3); |
7bd7faf8 | 242 | |
243 | ptube[1] = 3.000; | |
244 | gMC->Gsvolu("QBA1","TUBE", idtmed[kBe], ptube, 3); | |
245 | ||
246 | gMC->Gspos("QBA1", 1, "QB01", 0., 0., 0, 0, "ONLY"); | |
247 | gMC->Gspos("QB01", 1, "QBT1", 0., 0.,-2.75+ptube[2], 0, "ONLY"); | |
248 | ||
cd9c4f3a | 249 | // Al-part |
7bd7faf8 | 250 | // |
251 | ptube[0] = 2.900; | |
252 | ptube[1] = 3.150; | |
253 | ptube[2] = 2.375; | |
254 | ||
cd9c4f3a | 255 | gMC->Gsvolu("QB03","TUBE", idtmed[kAlu], ptube, 3); |
7bd7faf8 | 256 | gMC->Gspos("QB03", 1, "QBT1", 0., 0.,-2.+ptube[2], 0, "ONLY"); |
257 | ||
258 | ||
259 | ptube[0] = 3.15; | |
260 | ptube[1] = 3.50; | |
261 | ptube[2] = 0.10; | |
262 | ||
cd9c4f3a | 263 | gMC->Gsvolu("QB05","TUBE", idtmed[kAlu], ptube, 3); |
7bd7faf8 | 264 | gMC->Gspos("QB05", 1, "QBT1", 0., 0., 2.55+ptube[2], 0, "ONLY"); |
265 | ||
266 | ||
267 | // Fixations | |
268 | ptube[0] = 0.0; | |
269 | ptube[1] = 0.1; | |
270 | ptube[2] = 0.5; | |
271 | ||
272 | gMC->Gsvolu("QB08","TUBE", idtmed[kInox], ptube, 3); | |
273 | gMC->Gspos("QB08", 1 ,"QBT1", 0.000, 3.650, -1.25, idrotm[2002], "ONLY"); | |
274 | gMC->Gspos("QB08", 2 ,"QBT1", 3.161, -1.825, -1.25, idrotm[2001], "ONLY"); | |
275 | gMC->Gspos("QB08", 3 ,"QBT1", -3.161, -1.825, -1.25, idrotm[2003], "ONLY"); | |
276 | ||
277 | // Carbon ring | |
278 | ptube[0] = 3.15; | |
279 | ptube[1] = 4.10; | |
280 | ptube[2] = 0.55; | |
281 | ||
282 | gMC->Gsvolu("QB07","TUBE", idtmed[kC], ptube, 3); | |
283 | ||
284 | ptube[0] = 3.15; | |
285 | ptube[1] = 3.50; | |
286 | ptube[2] = 0.10; | |
287 | gMC->Gsvolu("QBA7","TUBE", idtmed[kInox], ptube, 3); | |
288 | gMC->Gspos("QBA7", 1, "QB07", 0.0, 0.0, 0.55-0.2, 0, "ONLY"); | |
289 | gMC->Gspos("QB07", 1, "QBT1", 0.0, 0.0, 2., 0, "ONLY"); | |
290 | ||
7bd7faf8 | 291 | |
292 | // | |
293 | // 1st section Alu non-absorber side | |
294 | ptube[0] = 2.9; | |
295 | ptube[1] = 3.0; | |
cd9c4f3a | 296 | ptube[2] = hlenQb10; |
7bd7faf8 | 297 | |
298 | gMC->Gsvolu("QB10","TUBE", idtmed[kAlu], ptube, 3); | |
7bd7faf8 | 299 | // |
300 | // Support rollers: non absorber side | |
301 | // | |
302 | // Mother volume | |
303 | ptube[0] = 3.2; | |
304 | ptube[1] = 4.8; | |
305 | ptube[2] = 3.0; | |
306 | gMC->Gsvolu("QBRM","TUBE", idtmed[kAir], ptube, 3); | |
7bd7faf8 | 307 | |
308 | ptube[0] = 0.0; | |
309 | ptube[1] = 0.7; | |
310 | ptube[2] = 3.0; | |
311 | ||
312 | gMC->Gsvolu("QB30","TUBE", idtmed[kInox], ptube, 3); | |
313 | ||
314 | for (i=0; i<8; i++) { | |
315 | Float_t phi = 45.+i*45.*kDegrad; | |
316 | Float_t xpos = 4.*TMath::Sin(phi); | |
317 | Float_t ypos = 4.*TMath::Cos(phi); | |
318 | gMC->Gspos("QB30", i+1, "QBRM", xpos, ypos, 0, idrotm[2004+i], "ONLY"); | |
319 | } | |
320 | ||
321 | // | |
322 | // Flanges: non absorber side | |
323 | ptube[0] = 3.0; | |
324 | ptube[1] = 4.9; | |
cd9c4f3a | 325 | ptube[2] = hlenQb29; |
7bd7faf8 | 326 | |
327 | gMC->Gsvolu("QB29","TUBE", idtmed[kInox], ptube, 3); | |
cd9c4f3a | 328 | |
7bd7faf8 | 329 | // |
cd9c4f3a | 330 | // Inox beam pipe: final section on non-absorber side |
7bd7faf8 | 331 | |
332 | ptube[0] = 2.90; | |
333 | ptube[1] = 2.98; | |
cd9c4f3a | 334 | ptube[2] = hlenQb28; |
7bd7faf8 | 335 | |
336 | gMC->Gsvolu("QB28","TUBE", idtmed[kInox], ptube, 3); | |
7bd7faf8 | 337 | |
338 | // | |
339 | // Undulated beam pipe | |
340 | // | |
2196bc42 | 341 | /* |
7bd7faf8 | 342 | Float_t pitch=0.25; |
343 | Float_t thick=0.015; | |
344 | Float_t zundul=171; | |
345 | Float_t rundul=3.0; | |
346 | char cn48[][5]={"QN21","QN22","QN23","QN24","QN25","QN26","QN27","QN28"}; | |
347 | ||
348 | Undulation("QUND",pitch,thick,zundul,rundul,cn48); | |
349 | gMC->Gspos("QUND", 1, "QBPM", 0., 0., 335.+zundul, 0, "ONLY"); | |
2196bc42 | 350 | */ |
351 | ||
352 | // Al-Be (40-60 wgt%, rho=2.7 g/cm**3) beam pipe | |
353 | // | |
354 | ptube[0] = 2.90; | |
355 | ptube[1] = 3.05; | |
cd9c4f3a | 356 | ptube[2] = hlenQbab; |
2196bc42 | 357 | |
358 | gMC->Gsvolu("QBAB","TUBE", idtmed[kAlBe], ptube, 3); | |
2196bc42 | 359 | |
7bd7faf8 | 360 | |
361 | // | |
cd9c4f3a | 362 | // last piece : inox pipe from pump till end |
7bd7faf8 | 363 | // |
cd9c4f3a | 364 | //ptube[0] = 2.90; |
365 | //ptube[1] = 2.98; | |
366 | //ptube[2] = 61.55; | |
7bd7faf8 | 367 | |
cd9c4f3a | 368 | //gMC->Gsvolu("QB48","TUBE", idtmed[kInox], ptube, 3); |
7bd7faf8 | 369 | |
cd9c4f3a | 370 | /* |
7bd7faf8 | 371 | ptube[0] = 2.90; |
372 | ptube[1] = 2.98; | |
373 | ptube[2] = 1.0; | |
374 | ||
375 | gMC->Gsvolu("QB27","TUBE", idtmed[kInox], ptube, 3); | |
376 | gMC->Gspos("QB27", 1, "QBPM", 0.0, 0.0, 208.1, 0, "ONLY"); | |
cd9c4f3a | 377 | */ |
7bd7faf8 | 378 | // |
cd9c4f3a | 379 | // Aluminium collar for support rollers |
7bd7faf8 | 380 | |
cd9c4f3a | 381 | gMC->Gsvolu("QB25","TUBE", idtmed[kAlu], ptube, 0); |
7bd7faf8 | 382 | |
cd9c4f3a | 383 | |
384 | // 2.5 mm thick SS tube for hanging pump | |
385 | ptube[0] = 2.90; | |
7bd7faf8 | 386 | ptube[1] = 3.15; |
cd9c4f3a | 387 | ptube[2] = hlenQb26; |
7bd7faf8 | 388 | |
cd9c4f3a | 389 | gMC->Gsvolu("QB26","TUBE", idtmed[kInox], ptube, 3); |
7bd7faf8 | 390 | |
391 | // | |
392 | // Bellows | |
fe4da5cc | 393 | // |
7bd7faf8 | 394 | // Mother Volume |
395 | ptube[0] = 2.90; | |
396 | ptube[1] = 3.75; | |
cd9c4f3a | 397 | ptube[2] = (2.*dzb+dzbb)/2.; |
7bd7faf8 | 398 | gMC->Gsvolu("QBE0","TUBE", idtmed[kAir], ptube, 3); |
7bd7faf8 | 399 | |
cd9c4f3a | 400 | ptube[2] = dzb/2.; |
7bd7faf8 | 401 | |
402 | gMC->Gsvolu("QBEM","TUBE", idtmed[kAir], ptube, 3); | |
cd9c4f3a | 403 | Float_t dz = (dzb+dzbb)/2.; |
404 | gMC->Gspos("QBEM", 2 ,"QBE0", 0.0, 0.0, -dz, 0 , "ONLY"); | |
405 | gMC->Gspos("QBEM", 1 ,"QBE0", 0.0, 0.0, dz, idrotm[2012], "ONLY"); | |
7bd7faf8 | 406 | |
407 | ptube[0] = 2.90; | |
408 | ptube[1] = 3.25; | |
409 | ptube[2] = 3.70; | |
410 | ||
411 | gMC->Gsvolu("QB19","TUBE", idtmed[kVac], ptube, 3); | |
412 | gMC->Gspos("QB19", 1 ,"QBEM", 0.0, 0.0, 0.5, 0 , "ONLY"); | |
413 | ||
414 | ptube[0] = 3.25; | |
415 | ptube[1] = 3.74; | |
416 | ptube[2] = 0.095; | |
417 | ||
418 | gMC->Gsvolu("QB18","TUBE", idtmed[kVac], ptube, 3); | |
419 | for (i=0; i<15; i++) { | |
420 | gMC->Gspos("QB18", i+1, "QBEM", 0.0, 0.0, 3.3-i*0.4, 0, "ONLY"); | |
421 | } | |
422 | ||
423 | ptube[0] = 2.90; | |
424 | ptube[1] = 3.00; | |
425 | ptube[2] = 1.20; | |
426 | ||
427 | gMC->Gsvolu("QB21","TUBE", idtmed[kVac], ptube, 3); | |
428 | gMC->Gspos("QB21", 1 ,"QBEM", 0.0, 0.0, -4.5, 0 , "ONLY"); | |
429 | ||
430 | ptube[0] = 3.250; | |
431 | ptube[1] = 3.750; | |
432 | ptube[2] = 0.005; | |
433 | ||
434 | gMC->Gsvolu("QB15","TUBE", idtmed[kInox], ptube, 3); | |
435 | for (i=0; i<30; i++) { | |
436 | gMC->Gspos("QB15", i+1, "QBEM", 0.0, 0.0, 3.4-i*0.2, 0, "ONLY"); | |
437 | } | |
438 | ||
439 | ptube[0] = 3.740; | |
440 | ptube[1] = 3.750; | |
441 | ptube[2] = 0.095; | |
442 | ||
443 | gMC->Gsvolu("QB16","TUBE", idtmed[kInox], ptube, 3); | |
444 | for (i=0; i<15; i++) { | |
445 | gMC->Gspos("QB16", i+1, "QBEM", 0.0, 0.0, 3.3-i*0.4, 0, "ONLY"); | |
446 | } | |
447 | ||
448 | ptube[0] = 3.250; | |
449 | ptube[1] = 3.260; | |
450 | ptube[2] = 0.095; | |
451 | ||
452 | gMC->Gsvolu("QB17","TUBE", idtmed[kInox], ptube, 3); | |
453 | for (i=0; i<14; i++) { | |
454 | gMC->Gspos("QB17", i+1, "QBEM", 0.0, 0.0, 3.1-i*0.4, 0, "ONLY"); | |
455 | } | |
456 | ||
457 | ptube[0] = 3.250; | |
458 | ptube[1] = 3.260; | |
459 | ptube[2] = 0.3975; | |
460 | ||
461 | gMC->Gsvolu("QB14","TUBE", idtmed[kInox], ptube, 3); | |
462 | gMC->Gspos("QB14", 2 ,"QBEM", 0.0, 0.0, -2.8025, 0 , "ONLY"); | |
463 | gMC->Gspos("QB14", 1 ,"QBEM", 0.0, 0.0, 3.8025, 0 , "ONLY"); | |
464 | ||
465 | ptube[0] = 2.900; | |
466 | ptube[1] = 3.260; | |
467 | ptube[2] = 0.050; | |
468 | ||
469 | gMC->Gsvolu("QB13","TUBE", idtmed[kInox], ptube, 3); | |
470 | gMC->Gspos("QB13", 2 ,"QBEM", 0.0, 0.0, -3.25, 0 , "ONLY"); | |
471 | gMC->Gspos("QB13", 1 ,"QBEM", 0.0, 0.0, 4.25, 0 , "ONLY"); | |
472 | ||
473 | ptube[0] = 2.900; | |
474 | ptube[1] = 3.000; | |
475 | ptube[2] = 0.700; | |
476 | ||
477 | gMC->Gsvolu("QB12","TUBE", idtmed[kInox], ptube, 3); | |
478 | gMC->Gspos("QB12", 1 ,"QBEM", 0.0, 0.0, 5.0, 0, "ONLY"); | |
479 | ||
480 | ||
481 | // | |
482 | // pipe between Bellows | |
483 | ptube[0] = 2.9; | |
484 | ptube[1] = 3.0; | |
cd9c4f3a | 485 | ptube[2] = dzbb/2.; |
7bd7faf8 | 486 | gMC->Gsvolu("QB23","TUBE", idtmed[kInox], ptube, 3); |
487 | gMC->Gspos("QB23", 1 ,"QBE0", 0.0, 0.0, 0.0, 0, "ONLY"); | |
488 | ||
489 | // | |
490 | // End Bellow | |
cd9c4f3a | 491 | |
492 | // **** placement of various sections on non-absorber side **** | |
493 | // | |
494 | // first the beryllium section : 43.3 cm long on both sides of IP | |
495 | // zstart=0, zend=43.3, length=43.3 on one side | |
496 | Float_t zpos=0; | |
497 | gMC->Gspos("QBBE", 1, "QBPM", 0., 0., zpos, 0, "ONLY"); | |
498 | ||
499 | // next meta-metal transition QBT1 on on-absorber side | |
500 | // zstart=43.3, zend=48.8, length=5.5 | |
501 | zpos = zpos + hlenQbbe + hlenQbt1; | |
502 | gMC->Gspos("QBT1", 1, "QBPM", 0., 0., zpos, 0, "ONLY"); | |
503 | ||
504 | // Aluminium OR Al-be alloy section | |
505 | //zpos=zpos + hlenQbt1 + hlenQb10; | |
506 | //gMC->Gspos("QB10", 1, "QBPM", 0.0, 0.0, zpos, 0, "ONLY"); | |
507 | // zstart= 48.8, zend=335.4, length=286.6 | |
508 | zpos = zpos + hlenQbt1 + hlenQbab; | |
509 | gMC->Gspos("QBAB", 1, "QBPM", 0.0, 0.0, zpos, 0, "ONLY"); | |
510 | ||
511 | // inox flange at the start of bellow | |
512 | // zstart=335.4, zend=339.8, length=4.4 | |
513 | zpos = zpos + hlenQbab + hlenQb29; | |
514 | gMC->Gspos("QB29", 1, "QBPM", 0.0, 0.0, zpos, 0, "ONLY"); | |
515 | ||
516 | // bellow section | |
517 | // zstart=339.8, zend=370.6, length=30.9 | |
518 | zpos = zpos + hlenQb29 + hlenQbe0; | |
519 | gMC->Gspos("QBE0", 2 ,"QBPM", 0.0, 0.0, zpos, 0, "ONLY"); | |
520 | ||
521 | // inox flange at the end of bellow and start of thick inox for pump | |
522 | // zstart=370.6, zend=375.0, length=4.4 | |
523 | zpos = zpos + hlenQbe0 + hlenQb29; | |
524 | gMC->Gspos("QB29", 2, "QBPM", 0.0, 0.0, zpos, 0, "ONLY"); | |
525 | ||
526 | // 2.5mm thick inox section to hang the pump | |
527 | // zstart=375.0, zend=395.0, length=20.0 | |
528 | zpos = zpos + hlenQb29 + hlenQb26; | |
529 | gMC->Gspos("QB26", 1, "QBPM", 0.0, 0.0, zpos, 0, "ONLY"); | |
530 | ||
531 | //inox flange at the end of pump section to join to next pipe | |
532 | // zstart=395.0, zend=399.4, length=4.4 | |
533 | zpos = zpos + hlenQb26 + hlenQb29; | |
534 | gMC->Gspos("QB29", 3, "QBPM", 0.0, 0.0, zpos, 0, "ONLY"); | |
535 | ||
536 | //last inox section till 800 cm | |
537 | // zstart=399.4, zend=800., length=400.6 | |
538 | zpos = zpos + hlenQb29 + hlenQb28; | |
539 | gMC->Gspos("QB28", 1, "QBPM", 0.0, 0.0, zpos, 0, "ONLY"); | |
540 | ||
541 | ||
542 | // aluminium collars and support rollers at two places | |
543 | ||
544 | ptube[0] = 3.0; | |
545 | ptube[1] = 3.15; | |
546 | ptube[2] = 2.75; | |
547 | ||
548 | gMC->Gsposp("QB25", 1, "QBPM", 0., 0., 654.8, 0, "ONLY", ptube, 3); | |
549 | gMC->Gspos("QBRM", 1, "QBPM", 0., 0., 654.8, 0, "ONLY"); | |
550 | ||
551 | ptube[0] = 3.05; | |
552 | ptube[1] = 3.20; | |
553 | gMC->Gsposp("QB25", 2, "QBPM", 0., 0., 254.8, 0, "ONLY", ptube, 3); | |
554 | gMC->Gspos("QBRM", 2, "QBPM", 0., 0., 254.8, 0, "ONLY"); | |
555 | ||
556 | ||
557 | ||
558 | //******** end of placement on no-absorber side ********* | |
559 | ||
560 | // | |
561 | // **** Absorber side ***** | |
562 | // | |
563 | // | |
564 | // metal-metal transition : Be-Alu on absorber side | |
565 | // Mother Volume | |
566 | ptube[0] = 2.900; | |
567 | ptube[1] = 4.200; | |
568 | ptube[2] = 2.750; | |
569 | gMC->Gsvolu("QBT2","TUBE", idtmed[kAir], ptube, 3); | |
570 | // z = 43.3 - 48.8 | |
571 | gMC->Gspos("QBT2", 1, "QBPM", 0., 0., -hlenQbbe-ptube[2], idrotm[2012], "ONLY"); | |
572 | ||
573 | ptube[0] = 2.900; | |
574 | ptube[1] = 3.150; | |
575 | ptube[2] = 0.375; | |
576 | // | |
577 | // Be-part | |
578 | gMC->Gsvolu("QB02","TUBE", idtmed[kAlu], ptube, 3); | |
579 | ||
580 | ptube[1] = 3.000; | |
581 | gMC->Gsvolu("QBA2","TUBE", idtmed[kBe], ptube, 3); | |
582 | ||
583 | gMC->Gspos("QBA2", 1, "QB02", 0., 0., 0, 0, "ONLY"); | |
584 | // z = -2.75 -> -2.00 | |
585 | gMC->Gspos("QB02", 1, "QBT2", 0., 0.,-2.75+ptube[2], 0, "ONLY"); | |
586 | ||
587 | // Alu part | |
588 | ptube[0] = 2.900; | |
589 | ptube[1] = 3.150; | |
590 | ptube[2] = 2.375; | |
591 | // z = -2.00 -> 2.75 | |
592 | gMC->Gsvolu("QB04","TUBE", idtmed[kAlu], ptube, 3); | |
593 | gMC->Gspos("QB04", 1, "QBT2", 0., 0.,-2.+ptube[2], 0, "ONLY"); | |
594 | ||
595 | ||
596 | ptube[0] = 3.15; | |
597 | ptube[1] = 3.50; | |
598 | ptube[2] = 0.10; | |
599 | // z = 2.55 -> 2.75 | |
600 | gMC->Gsvolu("QB06","TUBE", idtmed[kAlu], ptube, 3); | |
601 | gMC->Gspos("QB06", 1, "QBT2", 0., 0., 2.55+ptube[2], 0, "ONLY"); | |
602 | ||
603 | ||
604 | // Fixation | |
605 | ptube[0] = 0.0; | |
606 | ptube[1] = 0.1; | |
607 | ptube[2] = 0.5; | |
608 | ||
609 | gMC->Gsvolu("QBA8","TUBE", idtmed[kInox], ptube, 3); | |
610 | gMC->Gspos("QBA8", 1 ,"QBT2", 0.000, 3.650, -1.25, idrotm[2002], "ONLY"); | |
611 | gMC->Gspos("QBA8", 2 ,"QBT2", 3.161, -1.825, -1.25, idrotm[2001], "ONLY"); | |
612 | gMC->Gspos("QBA8", 3 ,"QBT2", -3.161, -1.825, -1.25, idrotm[2003], "ONLY"); | |
613 | ||
614 | // Carbon ring | |
615 | ptube[0] = 3.15; | |
616 | ptube[1] = 4.10; | |
617 | ptube[2] = 0.55; | |
618 | ||
619 | gMC->Gsvolu("QB77","TUBE", idtmed[kC], ptube, 3); | |
620 | ||
621 | ptube[0] = 3.15; | |
622 | ptube[1] = 3.50; | |
623 | ptube[2] = 0.10; | |
624 | gMC->Gsvolu("QBB7","TUBE", idtmed[kInox], ptube, 3); | |
625 | gMC->Gspos("QBB7", 1, "QB77", 0.0, 0.0, 0.55-0.2, 0, "ONLY"); | |
626 | gMC->Gspos("QB77", 1, "QBT2", 0.0, 0.0, 2., 0, "ONLY"); | |
627 | ||
628 | ||
7bd7faf8 | 629 | // beam pipe between metal-metal transition and bellows |
630 | ptube[0] = 2.9; | |
631 | ptube[1] = 3.0; | |
cd9c4f3a | 632 | ptube[2] = (81.7-(2.*dzb+dzbb)-(hlenQbbe+5.5))/2.; |
7bd7faf8 | 633 | |
cd9c4f3a | 634 | |
7bd7faf8 | 635 | gMC->Gsvolu("QB24","TUBE", idtmed[kInox], ptube, 3); |
cd9c4f3a | 636 | // z = 48.8 - 50.9 |
637 | dz = (hlenQbbe+5.5)+ptube[2]; | |
638 | gMC->Gspos("QB24", 1 ,"QBPM", 0.0, 0.0, -dz, 0, "ONLY"); | |
7bd7faf8 | 639 | // |
640 | // beam pipe between flange and bellows | |
641 | ptube[0] = 2.90; | |
642 | ptube[1] = 3.00; | |
643 | ptube[2] = 0.45; | |
644 | ||
645 | gMC->Gsvolu("QB22","TUBE", idtmed[kInox], ptube, 3); | |
646 | gMC->Gspos("QB22", 1 ,"QBPM", 0.0, 0.0, -82.15, 0, "ONLY"); | |
647 | ||
648 | // | |
649 | // Flange | |
650 | // | |
651 | // Mother Volume | |
652 | ptube[0] = 2.900; | |
653 | ptube[1] = 4.300; | |
654 | ptube[2] = 1.400; | |
655 | ||
656 | gMC->Gsvolu("QFA0","TUBE", idtmed[kAlu], ptube, 3); | |
657 | gMC->Gspos("QFA0", 1 ,"QBPM", 0.0, 0.0, -84.0, 0, "ONLY"); | |
658 | // | |
659 | // inner Inox piece | |
660 | ptube[0] = 2.900; | |
661 | ptube[1] = 3.500; | |
662 | ptube[2] = 0.450; | |
663 | gMC->Gsvolu("QFA1","TUBE", idtmed[kInox], ptube, 3); | |
664 | gMC->Gspos("QFA1", 1 ,"QFA0", 0.0, 0.0, 0.225, 0, "ONLY"); | |
665 | // | |
666 | // 8 x M5 Inox | |
667 | ptube[0] = 0.000; | |
668 | ptube[1] = 0.250; | |
669 | ptube[2] = 1.400; | |
670 | gMC->Gsvolu("QFA2","TUBE", idtmed[kInox], ptube, 3); | |
671 | for (i=0; i<8; i++) { | |
672 | Float_t phi = i*45.*kDegrad; | |
673 | Float_t xpos = 3.9*TMath::Sin(phi); | |
674 | Float_t ypos = 3.9*TMath::Cos(phi); | |
675 | gMC->Gspos("QFA2", i+1, "QFA0", xpos, ypos, 0., 0, "ONLY"); | |
676 | } | |
677 | ||
678 | ||
679 | ptube[0] = 2.900; | |
680 | ptube[1] = 3.000; | |
681 | ptube[2] = 2.300; | |
682 | ||
683 | gMC->Gsvolu("QB32","TUBE", idtmed[kInox], ptube, 3); | |
684 | gMC->Gspos("QB32", 1 ,"QBPM", 0.0, 0.0, -90.+2.3, 0, "ONLY"); | |
685 | ||
cd9c4f3a | 686 | //bellow on absorber side |
687 | ptube[2] = (2.*dzb+dzbb)/2.; | |
688 | dz = (81.7-ptube[2]); | |
689 | gMC->Gspos("QBE0", 1 ,"QBPM", 0.0, 0.0, -dz, 0, "ONLY"); | |
690 | ||
691 | ||
fe4da5cc | 692 | // --- Place the PIPE ghost volume (QBPM) in its mother volume (ALIC) |
cd9c4f3a | 693 | // by rotating it to 180 deg. and make it invisible |
fe4da5cc | 694 | // |
7bd7faf8 | 695 | |
fe4da5cc | 696 | |
7bd7faf8 | 697 | gMC->Gspos("QBPM",1,"ALIC",0,0,0,idrotm[2013], "ONLY"); |
698 | ||
cd9c4f3a | 699 | |
7bd7faf8 | 700 | // |
cd9c4f3a | 701 | // ******** Ion Pump volume description starts here ****** |
7bd7faf8 | 702 | // |
7bd7faf8 | 703 | // |
704 | // Getters -> | |
705 | pbox[0] = 6.50; | |
706 | pbox[1] = 6.75; | |
707 | pbox[2] = 15.60; | |
708 | gMC->Gsvolu("QI32","BOX", idtmed[kInox], pbox, 3); | |
709 | ||
710 | pbox[0] = 5.90; | |
711 | pbox[1] = 6.15; | |
712 | pbox[2] = 15.00; | |
713 | gMC->Gsvolu("QI42","BOX", idtmed[kGetter], pbox, 3); | |
714 | gMC->Gspos("QI42", 1, "QI32", 0.0, 0.0, 0.0, 0, "ONLY"); | |
715 | // <- | |
716 | ||
717 | ptube[0] = 0.0; | |
718 | ptube[1] = 19.0; | |
719 | ptube[2] = 2.5; | |
720 | gMC->Gsvolu("QI33","TUBE", idtmed[kInox], ptube, 3); | |
721 | ||
722 | ||
723 | ptube[0] = 0.0; | |
724 | ptube[1] = 15.0; | |
725 | ptube[2] = 2.5; | |
14b75006 | 726 | gMC->Gsvolu("QI43","TUBE", idtmed[kAir], ptube, 3); |
7bd7faf8 | 727 | gMC->Gspos("QI43", 1, "QI33", 0.0, 0.0, 0.0, 0, "ONLY"); |
728 | // | |
729 | // Connecting tube -> | |
730 | ptube[0] = 0.0; | |
731 | ptube[1] = 5.4; | |
cd9c4f3a | 732 | //ptube[2] = 13.7; |
733 | ptube[2] = 14.6; | |
7bd7faf8 | 734 | gMC->Gsvolu("QI34","TUBE", idtmed[kInox], ptube, 3); |
735 | ||
736 | ptube[0] = 0.0; | |
737 | ptube[1] = 4.8; | |
cd9c4f3a | 738 | ptube[2] = 14.6; |
14b75006 | 739 | gMC->Gsvolu("QI44","TUBE", idtmed[kAir], ptube, 3); |
7bd7faf8 | 740 | gMC->Gspos("QI44", 1, "QI34", 0.0, 0.0, 0.0, 0, "ONLY"); |
741 | // <- | |
742 | ||
743 | // | |
744 | // Flange -> | |
cd9c4f3a | 745 | ptube[0] = 5.41; |
7bd7faf8 | 746 | ptube[1] = 7.30; |
747 | ptube[2] = 2.15; | |
748 | gMC->Gsvolu("QI35","TUBE", idtmed[kInox], ptube, 3); | |
7bd7faf8 | 749 | // <- |
cd9c4f3a | 750 | Float_t zPump = 385.; |
7bd7faf8 | 751 | |
cd9c4f3a | 752 | gMC->Gspos("QI32", 1, "QBPM", 0.0, -44.25, zPump, 0, "ONLY"); |
753 | gMC->Gspos("QI33", 1, "QBPM", 0.0, -35.00, zPump,idrotm[2002], "ONLY"); | |
754 | gMC->Gspos("QI34", 1, "QBPM", 0.0, -17.90, zPump,idrotm[2002], "ONLY"); | |
755 | gMC->Gspos("QI35", 1, "QBPM", 0.0, -24.35, zPump,idrotm[2002], "ONLY"); | |
fe4da5cc | 756 | |
7bd7faf8 | 757 | gMC->Gsatt("QBPM", "SEEN", 0); |
758 | gMC->Gsatt("QBEM", "SEEN", 0); | |
fe4da5cc | 759 | } |
760 | ||
cd9c4f3a | 761 | |
fe4da5cc | 762 | |
763 | //___________________________________________ | |
764 | void AliPIPEv0::CreateMaterials() | |
765 | { | |
7bd7faf8 | 766 | // |
13391c3e | 767 | // Define materials for beam pipe |
7bd7faf8 | 768 | // |
13391c3e | 769 | |
cd9c4f3a | 770 | printf("Create PIPEvTemp materials \n"); |
7bd7faf8 | 771 | Int_t isxfld = gAlice->Field()->Integ(); |
772 | Float_t sxmgmx = gAlice->Field()->Max(); | |
2196bc42 | 773 | // Steel (Inox) |
7bd7faf8 | 774 | Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 }; |
775 | Float_t zsteel[4] = { 26.,24.,28.,14. }; | |
776 | Float_t wsteel[4] = { .715,.18,.1,.005 }; | |
2196bc42 | 777 | // AlBe - alloy |
778 | Float_t aAlBe[2] = { 26.98, 9.01}; | |
779 | Float_t zAlBe[2] = { 13.00, 4.00}; | |
780 | Float_t wAlBe[2] = { 0.4, 0.6}; | |
781 | ||
7bd7faf8 | 782 | // |
783 | // Berillium | |
784 | AliMaterial(5, "BERILLIUM$", 9.01, 4., 1.848, 35.3, 36.7); | |
785 | // | |
786 | // Carbon | |
787 | AliMaterial(6, "CARBON$ ", 12.01, 6., 2.265, 18.8, 49.9); | |
788 | // | |
789 | // Aluminum | |
790 | AliMaterial(9, "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 37.2); | |
791 | // | |
792 | // Air | |
793 | AliMaterial(15, "AIR$ ", 14.61, 7.3, .001205, 30423.24, 67500.); | |
794 | // | |
795 | // Vacuum | |
796 | AliMaterial(16, "VACUUM$ ", 1e-16, 1e-16, 1e-16, 1e16, 1e16); | |
797 | // | |
798 | // stainless Steel | |
799 | AliMixture(19, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel); | |
800 | // | |
801 | // reduced density steel to approximate pump getter material | |
802 | AliMixture(20, "GETTER$", asteel, zsteel, 1.00, 4, wsteel); | |
2196bc42 | 803 | // Al-Be alloy |
804 | // | |
805 | AliMixture(21, "AlBe$", aAlBe, zAlBe, 2.07, 2, wAlBe); | |
7bd7faf8 | 806 | // |
807 | // **************** | |
808 | // Defines tracking media parameters. | |
809 | // | |
810 | Float_t epsil = .001; // Tracking precision, | |
811 | Float_t stemax = -0.01; // Maximum displacement for multiple scat | |
812 | Float_t tmaxfd = -20.; // Maximum angle due to field deflection | |
813 | Float_t deemax = -.3; // Maximum fractional energy loss, DLS | |
814 | Float_t stmin = -.8; | |
815 | // *************** | |
816 | // | |
817 | // Beryllium | |
818 | ||
819 | AliMedium(5, "BE", 5, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin); | |
820 | ||
821 | // Carbon | |
822 | AliMedium(6, "C", 6, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin); | |
823 | // | |
824 | // Aluminum | |
825 | AliMedium(9, "ALU", 9, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin); | |
826 | // | |
827 | // Air | |
828 | AliMedium(15, "AIR", 15, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin); | |
829 | // | |
830 | // Vacuum | |
831 | AliMedium(16, "VACUUM", 16, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin); | |
832 | // | |
833 | // Steel | |
834 | AliMedium(19, "INOX", 19, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin); | |
835 | // | |
836 | // Getter | |
837 | AliMedium(20, "GETTER", 20, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin); | |
2196bc42 | 838 | // |
839 | // AlBe - Aloy | |
840 | AliMedium(21, "AlBe" , 21, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin); | |
841 | ||
fe4da5cc | 842 | } |
843 | ||
844 | ||
fe4da5cc | 845 | |
846 | ||
847 | ||
848 | ||
849 | ||
850 | ||
851 | ||
852 |