]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STRUCT/AliPIPEv0.cxx
Write track references for particle entering frame mother volume from below.
[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 /* $Id$ */
17
18 //-------------------------------------------------------------------------
19 //  Beam pipe class
20 //  Default version
21 //  Author: A.Morsch
22 //-------------------------------------------------------------------------
23
24 #include "AliPIPEv0.h"
25 #include "AliRun.h"
26 #include "AliConst.h"
27 #include "AliMagF.h"
28 #include "TSystem.h"
29
30 #include <Riostream.h>
31  
32 ClassImp(AliPIPEv0)
33  
34 //_____________________________________________________________________________
35 AliPIPEv0::AliPIPEv0()
36 {
37 // Constructor
38     SetPipeMaterial();
39 }
40
41 //_____________________________________________________________________________
42 AliPIPEv0::AliPIPEv0(const char *name, const char *title)
43   : AliPIPE(name,title)
44 {
45 // Constructor
46     SetPipeMaterial();
47 }
48
49  
50 //___________________________________________
51 void AliPIPEv0::CreateGeometry()
52 {
53 //Begin_Html
54 /*
55 <img src="picts/pipe.gif">
56 */
57 //End_Html
58
59
60 //Begin_Html
61 /*
62 <img src="picts/tree_pipe.gif">
63 */
64 //End_Html
65
66     if(fDebug) printf("%s: Create PIPEv0 geometry \n",ClassName());
67   
68
69     Int_t *idtmed = fIdtmed->GetArray();
70     Float_t ppcon[90], ptube[3], pbox[3];
71     Int_t i=0;
72     
73     
74     Int_t   idrotm[2099];  
75     AliMatrix(idrotm[2001],90.,240.,  0.,  0., 90.,150.);
76     AliMatrix(idrotm[2002],90.,  0.,  0.,  0., 90.,270.);
77     AliMatrix(idrotm[2003],90.,120.,  0.,  0., 90., 30.);
78     AliMatrix(idrotm[2004],90.,315., 90., 45.,  0.,  0.);
79     AliMatrix(idrotm[2005],90.,270., 90.,  0.,  0.,  0.);
80     AliMatrix(idrotm[2006],90.,225., 90.,315.,  0.,  0.);
81     AliMatrix(idrotm[2007],90.,180., 90.,270.,  0.,  0.);
82     AliMatrix(idrotm[2008],90.,135., 90.,225.,  0.,  0.);
83     AliMatrix(idrotm[2009],90., 90., 90.,180.,  0.,  0.);
84     AliMatrix(idrotm[2010],90., 45., 90.,135.,  0.,  0.);
85     idrotm[2011] = 0;
86     AliMatrix(idrotm[2012],90.,180., 90., 90.,180.,  0.);
87     AliMatrix(idrotm[2013],90.,  0., 90., 90.,180.,  0.);
88 //
89 //  Bellow
90 //
91 //  distance between bellows
92     const Float_t kdzbb =  9.0;
93 //  total size of bellow section
94     const Float_t kdzb  = 15.0;
95 //  size of undulated region 
96     const Float_t kdzub =  2.0;
97
98 // half-lengths of various beam pipe sections
99 // central Be-Pipe
100     Float_t hlenQbbe1 = 40.;
101     Float_t hlenQbbe2 = 36.5;
102     Float_t hlenQbbe  = (hlenQbbe1+hlenQbbe2)/2.;
103 //
104 //
105 //    Float_t hlenQbt1 = 5.5/2.;
106 //
107 //  Pipe outside central region (non-absober side)
108     Float_t hlenQbab = 157.5;
109 //
110 //  Flange non-absorber side
111     Float_t hlenQb29 = 11.5/2.+1.75 + 5.0;
112 //
113 //  Bellow element 
114     Float_t hlenQbe0 = kdzb;
115 //
116 //  Inox pipe between Be and Bellow (absorber side)
117     Float_t hlenQb24[3] = {10.5/2., 1.8, 3.3};
118 //
119 //
120     Float_t hlenQb28 = (800.-hlenQbbe1-2.*hlenQbab-4.*hlenQb29-2.*hlenQbe0)/2.;
121 //
122 //  Position of the pump
123     Float_t zPump = hlenQbbe1+2.*hlenQbab+2.*hlenQb29+kdzb;
124 //
125 //  Inner beam pipe radius
126     const Float_t kRinBe = 2.9;
127     const Float_t kRinSt = 2.92;
128 //
129 //
130     const Float_t kRoutBe = 2.98;
131     const Float_t kRoutSt = 3.00;
132
133
134 //
135     Float_t dz;
136     
137 //
138 // The peam pipe up to the Front Absorber
139 //
140 // Mother Volume QBPM
141     ppcon[0]  =   0;
142     ppcon[1]  = 360;
143     ppcon[2]  =  20;
144 //  1 
145     ppcon[3]  = -90.;
146     ppcon[4]  =   0.;
147     ppcon[5]  =   3.1;
148 //  2
149     ppcon[6]  = -84.;
150     ppcon[7]  =   0.;
151     ppcon[8]  =   3.1;
152 //  3
153     ppcon[9]  = -84.;
154     ppcon[10] =   0.;
155     ppcon[11] =   4.4;
156 //  4
157     ppcon[12] = -90+2.*hlenQb24[2]+2.8+2.*hlenQb24[1];
158     ppcon[13] =   0.;
159     ppcon[14] =   4.4;
160 //  5
161     ppcon[15]  = ppcon[12];
162     ppcon[16] =   0.;
163     ppcon[17] =   4.1;
164 //  6 
165     ppcon[18] = ppcon[15] + 2. + 2.*kdzub+0.2; 
166     ppcon[19] =   0.;
167     ppcon[20] =   4.1;
168 //  7 
169     ppcon[21] = ppcon[18];
170     ppcon[22] =   0.;
171     ppcon[23] =   3.2;
172 //  8 
173     ppcon[24] = ppcon[21] + 2.* kdzbb-0.4; 
174     ppcon[25] =   0.;
175     ppcon[26] =   3.2;
176 //  9
177     ppcon[27] = ppcon[24]; 
178     ppcon[28] =   0.;
179     ppcon[29] =   4.1;
180 //  10
181     ppcon[30] = -44.;
182     ppcon[31] =   0.;
183     ppcon[32] =   4.1;
184 //  11
185     ppcon[33] = -44.;
186     ppcon[34] =    0;
187     ppcon[35] =    3.0;
188 //  12
189     ppcon[36] =  38.;
190     ppcon[37] =    0;
191     ppcon[38] =    3.0;
192 //  13
193     ppcon[39] =  38.;
194     ppcon[40] =    0;
195     ppcon[41] =    3.6;
196 //  14
197     ppcon[42] = hlenQbbe1+2.*hlenQbab-0.1;
198     ppcon[43] =    0.;
199     ppcon[44] =    3.6;
200 //  15
201     ppcon[45] = ppcon[42];
202     ppcon[46] =    0.;
203     ppcon[47] =    3.6;
204 //  16
205     ppcon[48] = ppcon[45]+2.*hlenQb29-5.;
206     ppcon[49] =    0.;
207     ppcon[50] =    3.6;
208 //  17
209     ppcon[51] = ppcon[48];
210     ppcon[52] =    0.;
211     ppcon[53] =   56.;
212 //  18
213     ppcon[54] = ppcon[51]+2.*kdzb+10.;
214     ppcon[55] =    0.;
215     ppcon[56] =   56.;
216 //  19
217     ppcon[57] =   ppcon[54];
218     ppcon[58] =    0.;
219     ppcon[59] =    3.6;
220 //  20
221     ppcon[60] =  800.;
222     ppcon[61] =    0.;
223     ppcon[62] =    3.6;
224     
225     gMC->Gsvolu("QBPM", "PCON", idtmed[kAir], ppcon,63);
226
227
228 //
229 // volume definitions of various sections
230 //
231
232 //
233 // The Vacuum 
234     gMC->Gsvolu("QBVA","TUBE", idtmed[kVac], ptube, 0);
235     ptube[0] =   0.0;
236     ptube[1] =   kRinSt;
237     ptube[2] =   (90.-hlenQbbe2)/2.;
238     dz = -90. + ptube[2];
239     gMC->Gsposp ("QBVA", 1, "QBPM", 0., 0., dz , 0, "ONLY", ptube, 3);
240     dz = dz + ptube[2];
241
242     ptube[1] =   kRinBe;
243     ptube[2] =   hlenQbbe+hlenQbab;
244     dz = dz + ptube[2];
245     gMC->Gsposp ("QBVA", 2, "QBPM", 0., 0., dz , 0, "ONLY", ptube, 3);
246     dz = dz + ptube[2];
247
248     ptube[1] =   kRinSt;
249     ptube[2] =   (800.-hlenQbbe1-2.*hlenQbab)/2.;
250     dz = dz + ptube[2];
251     gMC->Gsposp ("QBVA", 3, "QBPM", 0., 0., dz , 0, "ONLY", ptube, 3);
252
253 //
254 // Be Pipe in central Alice 
255     ptube[0] = kRinBe;
256     ptube[1] = kRoutBe;
257     ptube[2] = hlenQbbe;
258     
259     gMC->Gsvolu("QBBE","TUBE", idtmed[kBe], ptube, 3);
260     
261 //
262 //  Support Ring
263 //
264     //  Mother
265     ppcon[0]  =   0;
266     ppcon[1]  = 360;
267     ppcon[2]  =   6;
268 //  1: 
269     ppcon[3]  = -1.;
270     ppcon[4]  = 3.0;
271     ppcon[5]  = 3.4;
272 //  2
273     ppcon[6]  = -0.8;
274     ppcon[7]  = 3.0;
275     ppcon[8]  = 3.4;
276 //  3
277     ppcon[9]  = -0.8;
278     ppcon[10] = 3.0;
279     ppcon[11] = 3.2;
280 //  4 
281     ppcon[12] = 0.8;
282     ppcon[13] = 3.0;
283     ppcon[14] = 3.2;
284 //  5 
285     ppcon[15] = 0.8;
286     ppcon[16] = 3.0;
287     ppcon[17] = 3.4;
288 //  6 
289     ppcon[18] = 1.0;
290     ppcon[19] = 3.0;
291     ppcon[20] = 3.4;
292
293     
294     gMC->Gsvolu("QBSR", "PCON", idtmed[kC], ppcon,21);
295     gMC->Gspos("QBSR", 1, "QBPM", 0.0, 0.0,  40., 0, "ONLY");
296     gMC->Gspos("QBSR", 2, "QBPM", 0.0, 0.0, 150., 0, "ONLY");
297     gMC->Gspos("QBSR", 3, "QBPM", 0.0, 0.0, 260., 0, "ONLY");
298     gMC->Gspos("QBSR", 4, "QBPM", 0.0, 0.0,- 46., 0, "ONLY");
299 //
300 // Flange and Fixed Point: non absorber side
301 //
302 // ---------->
303 //
304 //  Mother
305     ppcon[0]  =   0;
306     ppcon[1]  = 360;
307     ppcon[2]  =   4;
308 //  1: 
309     ppcon[3]  = -hlenQb29;
310     ppcon[4]  = kRinSt;
311     ppcon[5]  = 5.8;
312 //  2
313     ppcon[6]  = ppcon[3]+3.6;
314     ppcon[7]  = kRinSt;
315     ppcon[8]  = 5.8;
316 //  3
317     ppcon[9]  = ppcon[6];
318     ppcon[10] = kRinSt;
319     ppcon[11] = 3.6;
320 //  4 
321     ppcon[12] = hlenQb29;
322     ppcon[13] = kRinSt;
323     ppcon[14] = 3.6;
324     
325     gMC->Gsvolu("QB29", "PCON", idtmed[kAir], ppcon,15);
326     
327
328 //    Flange
329     ptube[0] = kRinSt;
330     ptube[1] = 5.7;
331     ptube[2] = 1.75;
332     gMC->Gsvolu("QF29","TUBE", idtmed[kInox], ptube, 3);
333     gMC->Gspos("QF29", 1, "QB29", 0.0, 0.0, -hlenQb29+1.75, 0, "ONLY");
334 //    Pipe
335     ptube[0] = kRinSt;
336     ptube[1] = 3.0;
337     ptube[2] = hlenQb29;
338     gMC->Gsvolu("QS29","TUBE", idtmed[kInox], ptube, 3);
339     gMC->Gspos("QS29", 1, "QB29", 0.0, 0.0, 0., 0, "ONLY");
340 //    Fixed point
341     ptube[0] = kRinSt;
342     ptube[1] = 3.5;
343     ptube[2] = 0.3;
344     gMC->Gsvolu("QP29","TUBE", idtmed[kInox], ptube, 3);
345     gMC->Gspos("QP29", 1, "QB29", 0.0, 0.0, -hlenQb29+9.75+3., 0, "ONLY");
346     
347 //
348 //
349 // Inox beam pipe: final section on non-absorber side
350
351     ptube[0] =   kRinSt;
352     ptube[1] =   kRoutSt;
353     ptube[2] =   hlenQb28;    
354
355     gMC->Gsvolu("QB28","TUBE", idtmed[kInox], ptube, 3);
356
357
358 //  Al-Be (40-60 wgt%, rho=2.7 g/cm**3) beam pipe
359 //
360 //  This section is under study (A.M. 1/2/2002)
361 //
362
363     ptube[0] = kRinBe;
364     if (fPipeMaterial == kAlu) {
365         ptube[1] = 3.0;
366     } else if (fPipeMaterial == kBe) {
367         ptube[1] = kRoutBe;
368     } else if (fPipeMaterial == kInox){
369         ptube[1] = kRoutSt;
370     }
371     ptube[2] =   hlenQbab;    
372
373     gMC->Gsvolu("QBAB","TUBE", idtmed[fPipeMaterial], ptube, 3);
374
375 // 2.5 mm thick SS tube for hanging pump
376 /*
377     ptube[0] = Rin;
378     ptube[1] = 3.15;
379     ptube[2] = hlenQb26;
380     
381     gMC->Gsvolu("QB26","TUBE", idtmed[kInox], ptube, 3);
382 */
383 //
384 // Bellows
385 //
386 //
387 // Mother Volume
388     Float_t pconQBE0[33];
389     pconQBE0[ 0]= 0;
390     pconQBE0[ 1]= 360;
391     pconQBE0[ 2]= 10;
392 //  1
393     pconQBE0[ 3]= -kdzb;
394     pconQBE0[ 4]= kRinSt;
395     pconQBE0[ 5]= kRoutSt;
396 //  2    
397     pconQBE0[ 6]= -kdzb+2.;
398     pconQBE0[ 7]= kRinSt;
399     pconQBE0[ 8]= kRoutSt;
400 //  3
401     pconQBE0[ 9]= -kdzb+2.;
402     pconQBE0[10]= kRinSt;
403     pconQBE0[11]= 4.00;
404 //  4
405     pconQBE0[12]= -kdzb+2.+2.*kdzub;
406     pconQBE0[13]= kRinSt;
407     pconQBE0[14]= 4.00;
408 //  5
409     pconQBE0[15]= -kdzb+2.+2.*kdzub;
410     pconQBE0[16]= kRinSt;
411     pconQBE0[17]= kRoutSt;
412 //  6    
413     pconQBE0[18]= -kdzb+2.+2.*kdzub+2.*kdzbb;
414     pconQBE0[19]= kRinSt;
415     pconQBE0[20]= kRoutSt;
416 //  7    
417     pconQBE0[21]= -kdzb+2.+2.*kdzub+2.*kdzbb;
418     pconQBE0[22]= kRinSt;
419     pconQBE0[23]= 4.00;
420 //  8
421     pconQBE0[24]= -kdzb+2.+4.*kdzub+2.*kdzbb;
422     pconQBE0[25]= kRinSt;
423     pconQBE0[26]= 4.00;
424 //  9
425     pconQBE0[27]= -kdzb+2.+4.*kdzub+2.*kdzbb;
426     pconQBE0[28]= kRinSt;
427     pconQBE0[29]= kRoutSt;
428 //  10 
429     pconQBE0[30]= +kdzb;
430     pconQBE0[31]= kRinSt;
431     pconQBE0[32]= kRoutSt;
432     gMC->Gsvolu("QBE0", "PCON", idtmed[kAir], pconQBE0, 33);
433 //
434 //  Undulated piece mother
435     ptube[0] =  kRinSt;
436     ptube[1] =  4.00;
437     ptube[2] =  kdzub;
438     gMC->Gsvolu("QBEM","TUBE", idtmed[kAir], ptube, 3);
439     dz = -kdzb+2.+kdzub;
440     gMC->Gspos("QBEM", 2 ,"QBE0", 0.0, 0.0,   dz, 0 , "ONLY");
441     gMC->Gspos("QBEM", 1 ,"QBE0", 0.0, 0.0,  -dz, idrotm[2012], "ONLY");
442 //  
443     Float_t pund[30];
444     Float_t uw = 0.02;
445     Float_t ur = 2.*kdzub-12.*uw;
446     Float_t uz = ur/13.;
447     Float_t ut = uz+uw;
448     
449     pund[ 0] = 0;
450     pund[ 1] = 360;
451     pund[ 2] =  8;
452
453     pund[ 3] = -ut;
454     pund[ 4] = kRinSt;
455     pund[ 5] = kRinSt+uw;
456     
457     pund[ 6] = -ut+uz;
458     pund[ 7] = pund[4];
459     pund[ 8] = pund[5];
460     
461     pund[ 9] = pund[6];
462     pund[10] = pund[4];
463     pund[11] = 4.0;
464     
465     pund[12] = pund[9]+uw;
466     pund[13] = pund[10];
467     pund[14] = pund[11];
468     
469     pund[15] = pund[12];
470     pund[16] = 4.0-uw;
471     pund[17] = pund[14];
472     
473     pund[18] = pund[12]+uz;
474     pund[19] = pund[16];
475     pund[20] = pund[17];
476     
477     pund[21] = pund[18];
478     pund[22] = kRinSt;
479     pund[23] = pund[20];
480     
481     pund[24] = pund[21]+uw;
482     pund[25] = pund[22];
483     pund[26] = pund[23];
484
485     gMC->Gsvolu("QBEU", "PCON", idtmed[kInox], pund, 27);
486
487     for (i = 0; i < 6; i++)
488     {
489         dz = -kdzub+(1+2*i)*ut;
490         gMC->Gspos("QBEU", i+1 ,"QBEM", 0.0, 0.0,   dz, 0 , "ONLY");
491     }
492     ptube[0] =  kRinSt;
493     ptube[1] =  kRinSt+uw;
494     ptube[2] =  uz;
495     gMC->Gsvolu("QBEW","TUBE", idtmed[kInox], ptube, 3);
496     gMC->Gspos("QBEW", 1 ,"QBEM", 0.0, 0.0,   kdzub-uz, 0 , "ONLY");
497 //
498 //  BeamPipe
499     gMC->Gsvolu("QBEP","TUBE", idtmed[kInox], ptube, 0);
500     ptube[0] =  kRinSt;
501     ptube[1] =  kRoutSt;
502     ptube[2] =  1.;
503     gMC->Gsposp("QBEP", 1 ,"QBE0", 0.0, 0.0, -kdzb+1., 0 , "ONLY", ptube, 3);
504     gMC->Gsposp("QBEP", 2 ,"QBE0", 0.0, 0.0,  kdzb-1., 0 , "ONLY", ptube, 3);    
505     ptube[2] = kdzbb;
506     gMC->Gsposp("QBEP", 3 ,"QBE0", 0.0, 0.0,  0., 0 , "ONLY", ptube, 3);    
507 //  
508 //  End undulated part
509 //
510 //
511 //  ----> End Bellow
512 //
513 // **** Placement of various sections on non-absorber side ****
514 //
515     //
516     // first the beryllium section
517     Float_t zpos = -(hlenQbbe2-hlenQbbe1)/2;
518     gMC->Gspos("QBBE", 1, "QBPM", 0., 0., zpos, 0, "ONLY");
519
520     // next meta-metal transition QBT1 on on-absorber side
521 //    zpos = zpos + hlenQbbe + hlenQbt1;
522 //    gMC->Gspos("QBT1", 1, "QBPM", 0., 0.,  zpos, 0, "ONLY");
523     
524     // Aluminium OR Al-be alloy section
525     zpos = hlenQbbe1+hlenQbab;
526     gMC->Gspos("QBAB", 1, "QBPM", 0.0, 0.0, zpos, 0, "ONLY");
527     //
528     // inox flange at the start of bellow
529     zpos = zpos + hlenQbab + hlenQb29;
530     gMC->Gspos("QB29", 1, "QBPM", 0.0, 0.0, zpos, idrotm[2012], "ONLY");
531     //
532     // bellow section
533     zpos = zpos + hlenQb29 + hlenQbe0;
534     gMC->Gspos("QBE0", 2 ,"QBPM", 0.0, 0.0, zpos, 0, "ONLY");
535     // 
536     // inox flange at the end of bellow and start of thick inox for pump
537     zpos = zpos + hlenQbe0 + hlenQb29;
538     gMC->Gspos("QB29", 2, "QBPM", 0.0, 0.0, zpos, 0, "ONLY");
539     //   
540     //last inox section till 800 cm
541     zpos = zpos + hlenQb29 + hlenQb28;
542     gMC->Gspos("QB28", 1, "QBPM", 0.0, 0.0, zpos, 0, "ONLY"); 
543     
544 //******** end of placement on no-absorber side *********
545
546     //
547     // **** Absorber side *****   
548     //
549     //
550 /*
551     //  metal-metal transition :  Be-Alu on absorber side
552     //  Mother Volume
553     ptube[0] = 2.900;
554     ptube[1] = 4.200;
555     ptube[2] = 2.750;
556     gMC->Gsvolu("QBT2","TUBE", idtmed[kAir], ptube, 3);
557     // z  = 43.3 - 48.8
558     gMC->Gspos("QBT2", 1, "QBPM", 0., 0., -hlenQbbe-ptube[2], idrotm[2012], "ONLY");
559
560     ptube[0] = 2.900;
561     ptube[1] = 3.150;
562     ptube[2] = 0.375;
563     //
564     //  Be-part
565     gMC->Gsvolu("QB02","TUBE", idtmed[kAlu], ptube, 3);
566
567     ptube[1] = 3.000;
568     gMC->Gsvolu("QBA2","TUBE", idtmed[kBe], ptube, 3);
569
570     gMC->Gspos("QBA2", 1, "QB02", 0., 0., 0, 0, "ONLY");
571 //  z = -2.75 -> -2.00
572     gMC->Gspos("QB02", 1, "QBT2", 0., 0.,-2.75+ptube[2], 0, "ONLY");
573
574     // Alu part    
575     ptube[0] = 2.900;
576     ptube[1] = 3.150;
577     ptube[2] = 2.375;
578 // z = -2.00 -> 2.75
579     gMC->Gsvolu("QB04","TUBE", idtmed[kAlu], ptube, 3);
580     gMC->Gspos("QB04", 1, "QBT2", 0., 0.,-2.+ptube[2], 0, "ONLY");
581     
582     
583     ptube[0] = 3.15;
584     ptube[1] = 3.50;
585     ptube[2] = 0.10;
586 // z = 2.55 -> 2.75
587     gMC->Gsvolu("QB06","TUBE", idtmed[kAlu], ptube, 3);
588     gMC->Gspos("QB06", 1, "QBT2", 0., 0., 2.55+ptube[2], 0, "ONLY");
589     
590     
591     // Fixation
592     ptube[0] = 0.0;
593     ptube[1] = 0.1;
594     ptube[2] = 0.5;
595     
596     gMC->Gsvolu("QBA8","TUBE", idtmed[kInox], ptube, 3);
597     gMC->Gspos("QBA8", 1 ,"QBT2",  0.000,  3.650, -1.25, idrotm[2002], "ONLY");
598     gMC->Gspos("QBA8", 2 ,"QBT2",  3.161, -1.825, -1.25, idrotm[2001], "ONLY");
599     gMC->Gspos("QBA8", 3 ,"QBT2", -3.161, -1.825, -1.25, idrotm[2003], "ONLY");
600     
601     // Carbon ring
602     ptube[0] = 3.15;
603     ptube[1] = 4.10;
604     ptube[2] = 0.55;
605     
606     gMC->Gsvolu("QB77","TUBE", idtmed[kC], ptube, 3);
607
608     ptube[0] = 3.15;
609     ptube[1] = 3.50;
610     ptube[2] = 0.10;
611     gMC->Gsvolu("QBB7","TUBE", idtmed[kInox], ptube, 3);
612     gMC->Gspos("QBB7", 1, "QB77", 0.0, 0.0, 0.55-0.2, 0, "ONLY");
613     gMC->Gspos("QB77", 1, "QBT2", 0.0, 0.0, 2., 0, "ONLY");
614  */
615 //
616 // Beam pipes between elements
617 //
618
619     gMC->Gsvolu("QB24","TUBE", idtmed[kInox], ptube, 0);
620     ptube[0] = kRinSt;
621     ptube[1] = kRoutSt;
622     ptube[2] = hlenQb24[0];
623     dz = hlenQbbe2 + ptube[2];
624     gMC->Gsposp("QB24", 1 ,"QBPM", 0.0, 0.0, -dz, 0, "ONLY", ptube, 3);
625 //
626 // Bellow on absorber side
627     dz = dz+hlenQb24[0] + kdzb;
628     gMC->Gspos("QBE0", 1 ,"QBPM", 0.0, 0.0, -dz, 0, "ONLY");
629 //
630     ptube[2] = hlenQb24[1];
631     dz = dz + kdzb + ptube[2];
632     gMC->Gsposp("QB24", 2 ,"QBPM", 0.0, 0.0, -dz, 0, "ONLY", ptube, 3);
633     dz = dz + ptube[2];
634     
635 //
636 // Flange
637 // 
638 //  Mother Volume
639     ptube[0] = kRinSt;
640     ptube[1] = 4.300;
641     ptube[2] = 1.4;
642     
643     gMC->Gsvolu("QFA0","TUBE", idtmed[kInox], ptube, 3);
644     dz = dz + ptube[2];
645     gMC->Gspos("QFA0", 1 ,"QBPM", 0.0, 0.0, -dz, 0, "ONLY");
646     dz = dz + ptube[2];
647 //
648 //
649     ptube[0] = kRinSt;
650     ptube[1] = kRoutSt;
651     ptube[2] = hlenQb24[2];
652     dz = dz + ptube[2];
653     gMC->Gsposp("QB24", 3 ,"QBPM", 0.0, 0.0, -dz, 0, "ONLY", ptube, 3);
654
655
656 // --- Place the PIPE ghost volume (QBPM) in its mother volume (ALIC)
657 //    by rotating it to 180 deg. and make it invisible
658 // 
659     gMC->Gspos("QBPM",1,"ALIC",0,0,0,idrotm[2013], "ONLY");
660     gMC->Gsbool("QBPM", "L3DX");
661     gMC->Gsbool("QBPM", "L3O3");
662     gMC->Gsbool("QBPM", "L3O4");
663
664
665 //
666 // ******** Ion Pump volume description starts here ******
667 // 
668     //
669     // Getters ->
670     pbox[0] =  6.50;
671     pbox[1] =  6.75;
672     pbox[2] = 15.60;
673     gMC->Gsvolu("QI32","BOX", idtmed[kInox], pbox, 3);
674     
675     pbox[0] =  5.90;
676     pbox[1] =  6.15;
677     pbox[2] = 15.00;
678     gMC->Gsvolu("QI42","BOX", idtmed[kGetter], pbox, 3);
679     gMC->Gspos("QI42", 1, "QI32", 0.0, 0.0, 0.0, 0, "ONLY");
680 // <-
681
682     ptube[0] =  0.0;
683     ptube[1] = 19.0;
684     ptube[2] =  2.5;
685     gMC->Gsvolu("QI33","TUBE", idtmed[kInox], ptube, 3);
686
687
688     ptube[0] =  0.0;
689     ptube[1] = 15.0;
690     ptube[2] =  2.5;
691     gMC->Gsvolu("QI43","TUBE", idtmed[kAir], ptube, 3);
692     gMC->Gspos("QI43", 1, "QI33", 0.0, 0.0, 0.0, 0, "ONLY");
693 // 
694 // Connecting tube ->
695     ptube[0] =  0.0;
696     ptube[1] =  5.4;
697     ptube[2] = 14.6;
698     gMC->Gsvolu("QI34","TUBE", idtmed[kInox], ptube, 3);
699     
700     ptube[0] =  0.0;
701     ptube[1] =  4.8;
702     ptube[2] = 14.6;
703     gMC->Gsvolu("QI44","TUBE", idtmed[kAir], ptube, 3);
704     gMC->Gspos("QI44", 1, "QI34", 0.0, 0.0, 0.0, 0, "ONLY");
705 // <-
706
707   //
708   // Flange ->
709     ptube[0] =  5.41;
710     ptube[1] =  7.30;
711     ptube[2] =  2.15;
712     gMC->Gsvolu("QI35","TUBE", idtmed[kInox], ptube, 3);
713 // <-
714     gMC->Gspos("QI32", 1, "QBPM", 0.0, -44.25, zPump, 0, "ONLY");
715     gMC->Gspos("QI33", 1, "QBPM", 0.0, -35.00, zPump,idrotm[2002], "ONLY");
716     gMC->Gspos("QI34", 1, "QBPM", 0.0, -17.90, zPump,idrotm[2002], "ONLY");
717     gMC->Gspos("QI35", 1, "QBPM", 0.0, -24.35, zPump,idrotm[2002], "ONLY");
718
719     gMC->Gsatt("QBPM", "SEEN", 1);
720     gMC->Gsatt("QBEM", "SEEN", 1);
721 }
722
723
724
725 //___________________________________________
726 void AliPIPEv0::CreateMaterials()
727 {
728   //
729   // Define materials for beam pipe
730   //
731
732   if(fDebug) printf("%s: Create PIPEv0 materials \n",ClassName());
733   Int_t   isxfld = gAlice->Field()->Integ();
734   Float_t sxmgmx = gAlice->Field()->Max();
735   // Steel (Inox)  
736   Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
737   Float_t zsteel[4] = { 26.,24.,28.,14. };
738   Float_t wsteel[4] = { .715,.18,.1,.005 };
739   // AlBe - alloy 
740   Float_t aAlBe[2] = { 26.98, 9.01};
741   Float_t zAlBe[2] = { 13.00, 4.00};
742   Float_t wAlBe[2] = { 0.4, 0.6};
743
744   //
745   //     Berillium 
746   AliMaterial(5, "BERILLIUM$", 9.01, 4., 1.848, 35.3, 36.7);
747   //
748   //     Carbon 
749   AliMaterial(6,  "CARBON$   ", 12.01, 6., 2.265, 18.8, 49.9);
750   //
751   //     Aluminum 
752   AliMaterial(9,  "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 37.2);
753   //
754   //     Air 
755   AliMaterial(15, "AIR$      ", 14.61, 7.3, .001205, 30423.24, 67500.);
756   //
757   //     Vacuum 
758   AliMaterial(16, "VACUUM$ ", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
759   //
760   //     stainless Steel 
761   AliMixture(19, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
762   //
763   //     reduced density steel to approximate pump getter material
764   AliMixture(20, "GETTER$", asteel, zsteel, 1.00, 4, wsteel);
765   //     Al-Be alloy
766   //     
767   AliMixture(21, "AlBe$", aAlBe, zAlBe, 2.07, 2, wAlBe);
768   //
769   // **************** 
770   //     Defines tracking media parameters. 
771   //
772   Float_t epsil  = .001;    // Tracking precision, 
773   Float_t stemax = -0.01;   // Maximum displacement for multiple scat 
774   Float_t tmaxfd = -20.;    // Maximum angle due to field deflection 
775   Float_t deemax = -.3;     // Maximum fractional energy loss, DLS 
776   Float_t stmin  = -.8;
777   // *************** 
778   //
779   //    Beryllium 
780   
781   AliMedium(5, "BE",       5, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
782
783   //    Carbon 
784   AliMedium(6, "C",        6, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
785   //
786   //    Aluminum 
787   AliMedium(9, "ALU",      9, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
788   //
789   //    Air 
790   AliMedium(15, "AIR",    15, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
791   //
792   //    Vacuum 
793   AliMedium(16, "VACUUM", 16, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
794   //
795   //    Steel 
796   AliMedium(19, "INOX",   19, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
797   //
798   //    Getter 
799   AliMedium(20, "GETTER", 20, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
800   //
801   //   AlBe - Aloy 
802   AliMedium(21, "AlBe"  , 21, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
803
804 }
805
806
807
808
809
810
811
812
813
814