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