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