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