New layout of the non-absorber side provided by Y. Viyogi. Not the final design
[u/mrichter/AliRoot.git] / STRUCT / AliPIPEv0.cxx
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 Revision 1.14  2001/01/20 16:56:33  morsch
19 Put air in connecting tubes and flanges of vacuum pump.
20
21 Revision 1.13  2001/01/20 16:35:27  morsch
22 Increase mother volume for bellows.
23
24 Revision 1.12  2000/12/21 16:41:06  morsch
25 Coding convention clean-up (RS3)
26
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
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
38 Revision 1.9  2000/10/02 21:28:15  fca
39 Removal of useless dependecies via forward declarations
40
41 Revision 1.8  2000/06/11 12:37:01  morsch
42 Coding rule violations corrected
43
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
48 Revision 1.6  1999/09/29 09:24:30  fca
49 Introduction of the Copyright and cvs Log
50
51 */
52
53 ////////////////////////////////////////////////
54 //  Beam pipe class                            /
55 ////////////////////////////////////////////////
56
57 #include "AliPIPEv0.h"
58 #include "AliRun.h"
59 #include "AliConst.h"
60 #include "AliMagF.h"
61 #include "AliMC.h"
62 #include "TSystem.h"
63  
64 ClassImp(AliPIPEv0)
65  
66 //_____________________________________________________________________________
67 AliPIPEv0::AliPIPEv0()
68 {
69 // Constructor
70 }
71
72 //_____________________________________________________________________________
73 AliPIPEv0::AliPIPEv0(const char *name, const char *title)
74   : AliPIPE(name,title)
75 {
76 // Constructor
77 }
78
79  
80 //___________________________________________
81 void AliPIPEv0::CreateGeometry()
82 {
83 //Begin_Html
84 /*
85 <img src="picts/pipe.gif">
86 */
87 //End_Html
88
89
90 //Begin_Html
91 /*
92 <img src="picts/tree_pipe.gif">
93 */
94 //End_Html
95
96     printf("Create PIPEvTemp geometry \n");
97   
98
99     Int_t *idtmed = fIdtmed->GetArray();
100     Float_t ppcon[48], ptube[3], pbox[3];
101     Int_t i=0;
102     
103     enum {kC=6, kAlu=9, kInox=19, kGetter=20, kBe=5, kVac=16, kAir=15, kAlBe=21};
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
120     
121 //
122 // The peam pipe up to the Front Absorber
123 //
124 // Mother Volume QBPM
125     const Float_t dbe1 = 15.;
126     const Float_t dbe2 = 15.;
127     ppcon[0]  =    0;
128     ppcon[1]  =  360;
129     ppcon[2]  =   15;
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
143     ppcon[12] = - 28.00-dbe2;
144     ppcon[13] =    0;
145     ppcon[14] =    4.22;
146 //  5
147     ppcon[15] = - 28.00-dbe2;
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
155     ppcon[21] =    28.+dbe1;
156     ppcon[22] =    0;
157     ppcon[23] =    3.2;
158 //  8
159     ppcon[24] =   28.+dbe1;
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
171     ppcon[33] =  365;
172     ppcon[34] =    0;
173     ppcon[35] =    5;
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);
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);
200     gMC->Gspos ("QBVA", 1, "QBPM", 0., 0., 355., 0, "ONLY");
201 //
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
220     ptube[0] =  2.90;
221     ptube[1] =  3.00;
222     ptube[2] = hlenQbbe;
223     
224     gMC->Gsvolu("QBBE","TUBE", idtmed[kBe], ptube, 3);
225     
226 //
227 // Metal-Metal Transitions : non-absorber side
228 //
229 //  Be-Al (or Be to Be-Al alloy)
230 //  Mother Volume
231     ptube[0] = 2.900;
232     ptube[1] = 4.200;
233     ptube[2] = hlenQbt1;
234     gMC->Gsvolu("QBT1","TUBE", idtmed[kAir], ptube, 3);
235
236     ptube[0] = 2.900;
237     ptube[1] = 3.150;
238     ptube[2] = 0.375;
239     //
240     //  Be-part
241     gMC->Gsvolu("QB01","TUBE", idtmed[kAlu], ptube, 3);
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
249     //  Al-part
250     //
251     ptube[0] = 2.900;
252     ptube[1] = 3.150;
253     ptube[2] = 2.375;
254
255     gMC->Gsvolu("QB03","TUBE", idtmed[kAlu], ptube, 3);
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
263     gMC->Gsvolu("QB05","TUBE", idtmed[kAlu], ptube, 3);
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
291
292 //
293 // 1st section Alu non-absorber side
294     ptube[0] = 2.9;
295     ptube[1] = 3.0;
296     ptube[2] = hlenQb10;
297     
298     gMC->Gsvolu("QB10","TUBE", idtmed[kAlu], ptube, 3);
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);
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;
325     ptube[2] = hlenQb29;
326     
327     gMC->Gsvolu("QB29","TUBE", idtmed[kInox], ptube, 3);
328
329 //
330 // Inox beam pipe: final section on non-absorber side
331
332     ptube[0] =   2.90;
333     ptube[1] =   2.98;
334     ptube[2] =   hlenQb28;    
335
336     gMC->Gsvolu("QB28","TUBE", idtmed[kInox], ptube, 3);
337
338 //
339 //  Undulated beam pipe
340 // 
341 /*
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");
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;
356     ptube[2] =   hlenQbab;    
357
358     gMC->Gsvolu("QBAB","TUBE", idtmed[kAlBe], ptube, 3);
359
360     
361 //
362 //  last piece : inox pipe from pump till end 
363 //
364     //ptube[0] =   2.90;
365     //ptube[1] =   2.98;
366     //ptube[2] =  61.55;    
367
368     //gMC->Gsvolu("QB48","TUBE", idtmed[kInox], ptube, 3);
369
370 /*
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");
377 */
378 //
379 // Aluminium collar for support rollers
380     
381     gMC->Gsvolu("QB25","TUBE", idtmed[kAlu], ptube, 0);
382
383
384 // 2.5 mm thick SS tube for hanging pump
385     ptube[0] = 2.90;
386     ptube[1] = 3.15;
387     ptube[2] = hlenQb26;
388     
389     gMC->Gsvolu("QB26","TUBE", idtmed[kInox], ptube, 3);
390
391 //
392 // Bellows
393 //
394 // Mother Volume
395     ptube[0] =  2.90;
396     ptube[1] =  3.75;
397     ptube[2] = (2.*dzb+dzbb)/2.;
398     gMC->Gsvolu("QBE0","TUBE", idtmed[kAir], ptube, 3);
399
400     ptube[2] = dzb/2.;
401
402     gMC->Gsvolu("QBEM","TUBE", idtmed[kAir], ptube, 3);
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");
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;
485     ptube[2] = dzbb/2.;
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
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
629 // beam pipe between metal-metal transition and bellows
630     ptube[0] = 2.9;
631     ptube[1] = 3.0;
632     ptube[2] = (81.7-(2.*dzb+dzbb)-(hlenQbbe+5.5))/2.;
633     
634
635     gMC->Gsvolu("QB24","TUBE", idtmed[kInox], ptube, 3);
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");
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
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
692 // --- Place the PIPE ghost volume (QBPM) in its mother volume (ALIC)
693 //    by rotating it to 180 deg. and make it invisible
694 // 
695
696   
697     gMC->Gspos("QBPM",1,"ALIC",0,0,0,idrotm[2013], "ONLY");
698
699
700 //
701 // ******** Ion Pump volume description starts here ******
702 // 
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;
726     gMC->Gsvolu("QI43","TUBE", idtmed[kAir], ptube, 3);
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;
732     //ptube[2] = 13.7;
733     ptube[2] = 14.6;
734     gMC->Gsvolu("QI34","TUBE", idtmed[kInox], ptube, 3);
735     
736     ptube[0] =  0.0;
737     ptube[1] =  4.8;
738     ptube[2] = 14.6;
739     gMC->Gsvolu("QI44","TUBE", idtmed[kAir], ptube, 3);
740     gMC->Gspos("QI44", 1, "QI34", 0.0, 0.0, 0.0, 0, "ONLY");
741 // <-
742
743   //
744   // Flange ->
745     ptube[0] =  5.41;
746     ptube[1] =  7.30;
747     ptube[2] =  2.15;
748     gMC->Gsvolu("QI35","TUBE", idtmed[kInox], ptube, 3);
749 // <-
750     Float_t zPump = 385.;
751     
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");
756
757     gMC->Gsatt("QBPM", "SEEN", 0);
758     gMC->Gsatt("QBEM", "SEEN", 0);
759 }
760
761
762
763 //___________________________________________
764 void AliPIPEv0::CreateMaterials()
765 {
766   //
767   // Define materials for beam pipe
768   //
769
770   printf("Create PIPEvTemp materials \n");
771   Int_t   isxfld = gAlice->Field()->Integ();
772   Float_t sxmgmx = gAlice->Field()->Max();
773   // Steel (Inox)  
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 };
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
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);
803   //     Al-Be alloy
804   //     
805   AliMixture(21, "AlBe$", aAlBe, zAlBe, 2.07, 2, wAlBe);
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);
838   //
839   //   AlBe - Aloy 
840   AliMedium(21, "AlBe"  , 21, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
841
842 }
843
844
845
846
847
848
849
850
851
852