]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STRUCT/AliSHILvF.cxx
Correction for superposition of ZDC volumes with MUON arm one
[u/mrichter/AliRoot.git] / STRUCT / AliSHILvF.cxx
CommitLineData
5aba2f60 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$
3a685df6 18Revision 1.3 2001/01/30 12:28:27 morsch
19Recess station 1 changed do make space for chambers.
20
e2e83b79 21Revision 1.2 2000/12/04 16:30:02 morsch
22Update to geometry defined for the Muon Spectrometer Addendum to the TDR.
23
5aba2f60 24*/
25
26
27#include "AliSHILvF.h"
28#include "AliRun.h"
a0cb6c86 29#include "AliMC.h"
5aba2f60 30#include "AliConst.h"
31#include "AliALIFE.h"
32
33ClassImp(AliSHILvF)
34
35//_____________________________________________________________________________
36AliSHILvF::AliSHILvF()
37{
38 //
39 // Default constructor for muon shield
40 //
41}
42
43//_____________________________________________________________________________
44AliSHILvF::AliSHILvF(const char *name, const char *title)
45 : AliSHIL(name,title)
46{
47 //
48 // Standard constructor for muon shield
49 //
50 SetMarkerColor(7);
51 SetMarkerStyle(2);
52 SetMarkerSize(0.4);
53 // Pb cone not yet compatible with muon chamber inner radii
54 // Switched off by default
55 fPbCone=kFALSE;
56}
57
58//_____________________________________________________________________________
59void AliSHILvF::CreateGeometry()
60{
61 //
62 // Build muon shield geometry
63 //
64 //
65 //Begin_Html
66 /*
67 <img src="picts/AliSHILvF.gif">
68 */
69 //End_Html
70 //Begin_Html
71 /*
72 <img src="picts/AliSHILvFTree.gif">
73 */
74 //End_Html
75
76 Float_t cpar[5], cpar0[5], tpar[3], par1[39], par2[27], par3[27],
a0cb6c86 77 par4[21], par0[45];
5aba2f60 78 Float_t dz, dZ;
79
80 Int_t *idtmed = fIdtmed->GetArray()-1699;
81
82#include "ABSOSHILConst.h"
83#include "SHILConst.h"
84
85enum {kC=1705, kAl=1708, kFe=1709, kCu=1710, kW=1711, kPb=1712,
86 kNiCuW=1720, kVacuum=1714, kAir=1714, kConcrete=1716,
87 kPolyCH2=1717, kSteel=1709, kInsulation=1713};
88//
89// Material of the rear part of the shield
90 Int_t iHeavy=kNiCuW;
91 if (fPbCone) iHeavy=kPb;
92//
93//
94// begin Fluka
95 AliALIFE* flukaGeom = new AliALIFE("beamshield.alife", "beamshield_vol.inp");
3a685df6 96 Int_t i=0,ifl=0;
5aba2f60 97 Float_t posfluka[3]={0., 0., 0.};
98 Float_t zfluka[12], rfluka1[12], rfluka2[12], rfluka3[12] ;
99//
100// end Fluka
101
102
103//
104// Mother volume
105//
106 Float_t dRear1=dRear;
107
108 Float_t zstart=zRear-dRear1;
109
110 par0[0] = 0.;
111 par0[1] = 360.;
112 par0[2] = 13.;
113
114 Float_t dl=(zvac12-zstart)/2.;
115 dz=zstart+dl;
116//
117 par0[3] = -dl;
118 par0[4] = 0.;
119 par0[5] = zstart * TMath::Tan(accMin);
120
121 par0[6] = -dl+dRear1;
122 par0[7] = 0.;
123 par0[8] = zRear * TMath::Tan(accMin);
124
125 par0[9] = -dl+dRear1;
126 par0[10] = 0.;
127 par0[11] = R11;
128
129 par0[12] = -dz+zvac4;
130 par0[13] = 0.;
131 par0[14] = R11;
132
133 par0[15] = -dz+zvac4;
134 par0[16] = 0.;
135 par0[17] = R21;
136
137 par0[18] = -dz+zvac6;
138 par0[19] = 0.;
139 par0[20] = R21;
140
141 par0[21] = -dz+zvac6;
142 par0[22] = 0.;
143 par0[23] = zvac6 * TMath::Tan(accMin);
144
145 par0[24] = -dz+zConeE;
146 par0[25] = 0.;
147 par0[26] = 30.;
148
149 par0[27] = -dz+zvac10;
150 par0[28] = 0.;
151 par0[29] = 30.;
152
153 par0[30] = -dz+zvac10;
154 par0[31] = 0.;
155 par0[32] = R42;
156
157 par0[33] = -dz+zvac11;
158 par0[34] = 0.;
159 par0[35] = R42;
160
161 par0[36] = -dz+zvac11;
162 par0[37] = 0.;
163 par0[38] = R43;
164
165 par0[39] = -dz+zvac12;
166 par0[40] = 0.;
167 par0[41] = R43;
168
169 gMC->Gsvolu("YMOT", "PCON", idtmed[kVacuum], par0, 42);
170 dz=zstart+dl;
171 gMC->Gspos("YMOT", 1, "ALIC", 0., 0., dz, 0, "ONLY");
172//
173
174 dZ=-dl;
175
176//
177// First section: bellows below and behind front absorber
178//
179//
180 par1[0] = 0.;
181 par1[1] = 360.;
182 par1[2] = 12.;
183 dl=(zvac4-zstart)/2.;
184
185 par1[3] = -dl;
186 par1[4] = rAbs+(zstart-zOpen) * TMath::Tan(thetaOpen1);
187 par1[5] = zstart * TMath::Tan(accMin);
188
189 par1[6] = -dl+zvac1-zstart;
190 par1[7] = rAbs+ (zvac1-zOpen) * TMath::Tan(thetaOpen1);
191 par1[8] = zvac1 * TMath::Tan(accMin);
192
193 par1[9] = par1[6]+dr11;
194 par1[10] = par1[7]+dr11;
195 par1[11] = (zvac1+dr11) * TMath::Tan(accMin);
196
197 par1[12] = -dl+dRear1;
198 par1[13] = par1[10];
199 par1[14] = zRear * TMath::Tan(accMin);
200
201 par1[15] = -dl+dRear1;
202 par1[16] = par1[10];
203 par1[17] = R11;
204
205 par1[18] = -dl+(zvac1+dr11+dB1-zstart);
206 par1[19] = par1[16];
207 par1[20] = R11;
208
209 par1[21] = par1[18]+dr12;
210 par1[22] = par1[19]+dr12;
211 par1[23] = R11;
212
213 par1[24] = par1[21]+dF1;
214 par1[25] = par1[22];
215 par1[26] = R11;
216
217 par1[27] = par1[24]+dr12;
218 par1[28] = par1[25]-dr12;
219 par1[29] = R11;
220
221 par1[30] = par1[27]+dB1;
222 par1[31] = par1[28];
223 par1[32] = R11;
224
225 par1[33] = par1[30]+dr13;
a0cb6c86 226 par1[34] = par1[31];
5aba2f60 227 par1[35] = R11;
228
229 par1[36] = -dl+zvac4-zstart;
a0cb6c86 230 par1[37] = par1[34];
5aba2f60 231 par1[38] = R11;
232
a0cb6c86 233 Float_t r2 = par1[34];
234 Float_t rBox= par1[31]-0.1;
5aba2f60 235 Float_t rc1 = par1[7];
236
237 gMC->Gsvolu("YGO1", "PCON", idtmed[kNiCuW], par1, 39);
238
239//
240// begin Fluka
241 for (ifl=0; ifl<12; ifl++) {
242 zfluka[ifl]=par1[3+3*ifl]+dl+zRear-dRear;
243 rfluka1[ifl] = par1[4+3*ifl];
244 rfluka2[ifl] = par1[5+3*ifl];
245 if (ifl > 3) rfluka2[ifl]=rfluka2[ifl]-dRSteel1;
246 }
247
248
249 Float_t rfluka0[8]={rBox,rBox,rBox,rBox,rBox,rBox,rBox,rBox};
250
251 flukaGeom->Comment("1st part: Shield");
252// Use default for first three cones
253 flukaGeom->SetDefaultVolume("*ACR02");
254 rfluka2[0]=rfluka2[1]=rfluka2[2]=-1;
255//
256 flukaGeom->Comment("Shield");
257 flukaGeom->PolyCone(rfluka1, rfluka2, zfluka, 12, posfluka, "NIW", "MF", "$SHS");
258 flukaGeom->Comment("Vacuum");
a0cb6c86 259 flukaGeom->PolyCone(rfluka0, rfluka1+2, zfluka+2, 8, posfluka, "VACUUM", "MF", "$SHS");
5aba2f60 260//
261// end Fluka
262
263
3a685df6 264 for (i=4; i<38; i+=3) par1[i] = 0;
265
5aba2f60 266 gMC->Gsvolu("YMO1", "PCON", idtmed[kVacuum+40], par1, 39);
267 gMC->Gspos("YGO1", 1, "YMO1", 0., 0., 0., 0, "ONLY");
268 dZ+=dl;
269 gMC->Gspos("YMO1", 1, "YMOT", 0., 0., dZ, 0, "ONLY");
270 dZ+=dl;
271
272//
273// Steel envelope
274 tpar[0]=R11-dRSteel1;
275 tpar[1]=R11;
276 tpar[2]=dl-dRear1/2;
277 gMC->Gsvolu("YSE1", "TUBE", idtmed[kNiCuW], tpar, 3);
278 dz=dl-tpar[2];
279 gMC->Gspos("YSE1", 1, "YGO1", 0., 0., dz, 0, "ONLY");
280
281// begin Fluka
282 flukaGeom->Comment("1st part: Steel Envelope");
283 flukaGeom->Cylinder(tpar[0], tpar[1], zRear, zvac4, posfluka, "NIW", "MF", "$SHS");
284//
285// end Fluka
286
287//
288// 1st section: vacuum system
289//
290//
291// Bellow 1
292//
293 tpar[0]=rB1;
294 tpar[1]=rB1+hB1;
295 tpar[2]=eB1/2.;
296 gMC->Gsvolu("YB11", "TUBE", idtmed[kSteel+40], tpar, 3);
297 Float_t dl1=tpar[2];
298
299 tpar[0]=rB1+hB1-eB1;
300 tpar[1]=rB1+hB1;
301 tpar[2]=(lB1/2.-2.*eB1)/2.;
302 gMC->Gsvolu("YB12", "TUBE", idtmed[kSteel+40], tpar, 3);
303 Float_t dl2=tpar[2];
304
305 tpar[0]=rB1-eB1;
306 tpar[1]=rB1;
307 tpar[2]=lB1/8.;
308 gMC->Gsvolu("YB13", "TUBE", idtmed[kSteel+40], tpar, 3);
309 Float_t dl3=tpar[2];
310
311
312 tpar[0]=0;
313 tpar[1]=rB1+hB1;
314 tpar[2]=lB1/2.;
315 gMC->Gsvolu("YBU1", "TUBE", idtmed[kVacuum+40], tpar, 3);
316
317 dz=-tpar[2]+dl3;
318 gMC->Gspos("YB13", 1, "YBU1", 0., 0., dz, 0, "ONLY");
319 dz+=dl3;
320 dz+=dl1;
321 gMC->Gspos("YB11", 1, "YBU1", 0., 0., dz, 0, "ONLY");
322 dz+=dl1;
323 dz+=dl2;
324 gMC->Gspos("YB12", 1, "YBU1", 0., 0., dz, 0, "ONLY");
325 dz+=dl2;
326 dz+=dl1;
327 gMC->Gspos("YB11", 2, "YBU1", 0., 0., dz, 0, "ONLY");
328 dz+=dl1;
329 dz+=dl3;
330 gMC->Gspos("YB13", 2, "YBU1", 0., 0., dz, 0, "ONLY");
331
332
333 tpar[0]=0;
334 tpar[1]=rB1+hB1;
335 tpar[2]=10.*lB1/2.;
336 gMC->Gsvolu("YBM1", "TUBE", idtmed[kVacuum+40], tpar, 3);
337 dz=-tpar[2]+lB1/2.;
3a685df6 338
339 for (i=0; i<10; i++) {
340 gMC->Gspos("YBU1", i+1 , "YBM1", 0., 0., dz, 0, "ONLY");
341 dz+=lB1;
342 }
343
5aba2f60 344 dz=-dl+(zvac1-zstart)+dr11+tpar[2];
345 gMC->Gspos("YBM1", 1, "YMO1", 0., 0., dz, 0, "ONLY");
346
347 dz=dl-dr13-(zvac4-zvac3)-tpar[2];
348 gMC->Gspos("YBM1", 2, "YMO1", 0., 0., dz, 0, "ONLY");
349
350//
351// Flange
352
353 tpar[0]=0;
354 tpar[1]=rF1;
355 tpar[2]=dF1/2.;
356 gMC->Gsvolu("YFM1", "TUBE", idtmed[kVacuum+40], tpar, 3);
357
358 tpar[0]=rF1-2.;
359 tpar[1]=rF1;
360 tpar[2]=dF1/2.;
361 gMC->Gsvolu("YF11", "TUBE", idtmed[kSteel+40], tpar, 3);
362 gMC->Gspos("YF11", 1, "YFM1", 0., 0., 0., 0, "ONLY");
363
364 tpar[0]=rB1;
365 tpar[1]=rF1-2.;
366 tpar[2]=dFlange/2.;
367 gMC->Gsvolu("YF12", "TUBE", idtmed[kSteel+40], tpar, 3);
368 dz=-dF1/2.+tpar[2];
369 gMC->Gspos("YF12", 1, "YFM1", 0., 0., dz, 0, "ONLY");
370 dz= dF1/2.-tpar[2];
371 gMC->Gspos("YF12", 2, "YFM1", 0., 0., dz, 0, "ONLY");
372
373 dz=-dl+(zvac2-zstart);
374 gMC->Gspos("YFM1", 2, "YMO1", 0., 0., dz, 0, "ONLY");
375
376//
377// pipe between flange and bellows
378 tpar[0]=rB1-dTubeS;
379 tpar[1]=rB1;
380 tpar[2]=2.*(dB1+dr12-10.*lB1)/4.;
381 gMC->Gsvolu("YPF1", "TUBE", idtmed[kSteel+40], tpar, 3);
382
383 dz=-dl+(zvac2-zstart)-dF1/2.-tpar[2];
384 gMC->Gspos("YPF1", 1, "YMO1", 0., 0., dz, 0, "ONLY");
385 dz=-dl+(zvac2-zstart)+dF1/2.+tpar[2];
386 gMC->Gspos("YPF1", 2, "YMO1", 0., 0., dz, 0, "ONLY");
387
388//
389// begin Fluka
390 flukaGeom->Comment("First Bellow");
391 Float_t z1=zvac1+dr11;
392 Float_t z2;
393
3a685df6 394 for (i=0; i<10; i++) {
5aba2f60 395 z2=z1+eB1;
396 flukaGeom->Cylinder(0., rB1, z1, z2, posfluka, "VACUUM", "MF", "$SHH");
397 flukaGeom->Cylinder(rB1, rB1+hB1, z1, z2, posfluka, "STEEL", "MF", "$SHH");
398
399 z1=z2;
400 z2+=lB1/2.-eB1;
401 flukaGeom->Cylinder(0., rB1+hB1-eB1, z1, z2, posfluka, "VACUUM", "MF", "$SHH");
402 flukaGeom->Cylinder(rB1+hB1-eB1, rB1+hB1, z1, z2, posfluka, "STEEL", "MF", "$SHH");
403 z1=z2;
404 z2=z1+eB1;
405 flukaGeom->Cylinder(0., rB1, z1, z2, posfluka, "VACUUM", "MF", "$SHH");
406 flukaGeom->Cylinder(rB1, rB1+hB1, z1, z2, posfluka, "STEEL", "MF", "$SHH");
407 z1=z2;
408 z2+=lB1/2.-eB1;
409 flukaGeom->Cylinder(0., rB1, z1, z2, posfluka, "VACUUM", "MF", "$SHH");
410 flukaGeom->Cylinder(rB1, rB1+eB1, z1, z2, posfluka, "STEEL", "MF", "$SHH");
411 flukaGeom->Cylinder(rB1+eB1, rB1+hB1, z1, z2, posfluka, "AIR", "MF", "$SHH");
412 z1=z2;
413 }
414 flukaGeom->Cylinder(rB1+hB1, rB1+hB1+0.5, zvac1+dr11, z1, posfluka, "AIR", "MF", "$SHH");
415 flukaGeom->Cylinder(rB1+hB1+0.5, rBox, zvac1+dr11, z1, posfluka, "AIR", "MF", "$SHH");
416 Float_t zcy1=z1;
417
418
419 flukaGeom->Comment("Second Bellow");
420 z1=zvac3-dr13;
3a685df6 421 for (i=0; i<10; i++) {
5aba2f60 422 z2=z1-eB1;
423 flukaGeom->Cylinder(0., rB1, z2, z1, posfluka, "VACUUM", "MF", "$SHH");
424 flukaGeom->Cylinder(rB1, rB1+hB1, z2, z1, posfluka, "STEEL", "MF", "$SHH");
425 z1=z2;
426 z2-=lB1/2.-eB1;
427 flukaGeom->Cylinder(0., rB1+hB1-eB1, z2, z1, posfluka, "VACUUM", "MF", "$SHH");
428 flukaGeom->Cylinder(rB1+hB1-eB1, rB1+hB1, z2, z1, posfluka, "STEEL", "MF", "$SHH");
429 z1=z2;
430 z2=z1-eB1;
431 flukaGeom->Cylinder(0., rB1, z2, z1, posfluka, "VACUUM", "MF", "$SHH");
432 flukaGeom->Cylinder(rB1, rB1+hB1, z2, z1, posfluka, "STEEL", "MF", "$SHH");
433 z1=z2;
434 z2-=lB1/2.-eB1;
435 flukaGeom->Cylinder(0., rB1, z2, z1, posfluka, "VACUUM", "MF", "$SHH");
436 flukaGeom->Cylinder(rB1, rB1+eB1, z2, z1, posfluka, "STEEL", "MF", "$SHH");
437 flukaGeom->Cylinder(rB1+eB1, rB1+hB1, z2, z1, posfluka, "AIR", "MF", "$SHH");
438 z1=z2;
439 }
440 flukaGeom->Cylinder(rB1+hB1, rB1+hB1+0.5, z1, zvac3-dr13, posfluka, "AIR", "MF", "$SHH");
441 flukaGeom->Cylinder(rB1+hB1+0.5, rBox, z1, zvac3-dr13, posfluka, "AIR", "MF", "$SHH");
442
443 Float_t zcy2=z1;
444 flukaGeom->Comment("Flange");
445 Float_t zfl=(zcy1+zcy2)/2.;
446
447 z1=zfl-dF1/2.;
448 z2=zfl+dF1/2.;
449 flukaGeom->Cylinder(0.,rF1-2. , z1, z2, posfluka, "VACUUM", "MF", "$SHH");
450 flukaGeom->Cylinder(rF1-2., rF1 , z1, z2, posfluka, "STEEL", "MF", "$SHH");
a0cb6c86 451 flukaGeom->Cylinder(rF1, rF1+0.05 , z1, z2, posfluka, "AIR", "MF", "$SHH");
452 flukaGeom->Cylinder(rF1+0.05, rBox , z1, z2, posfluka, "AIR", "MF", "$SHH");
5aba2f60 453 z2=z1;
454 z1=z2-dFlange;
455 flukaGeom->Cylinder(0.,rB1 , z1, z2, posfluka, "VACUUM", "MF", "$SHH");
456 flukaGeom->Cylinder(rB1, rF1 , z1, z2, posfluka, "STEEL", "MF", "$SHH");
457 flukaGeom->Cylinder(rF1, rF1+0.5 , z1, z2, posfluka, "AIR", "MF", "$SHH");
458 flukaGeom->Cylinder(rF1+0.5, rBox , z1, z2, posfluka, "AIR", "MF", "$SHH");
459 z2=z1;
460 z1=zcy1;
461 flukaGeom->Cylinder(0.,rB1 , z1, z2, posfluka, "VACUUM", "MF", "$SHH");
462 flukaGeom->Cylinder(rB1, rB1+0.1 , z1, z2, posfluka, "STEEL", "MF", "$SHH");
463 flukaGeom->Cylinder(rB1+0.1, rB1+0.6 , z1, z2, posfluka, "AIR", "MF", "$SHH");
464 flukaGeom->Cylinder(rB1+0.6, rBox , z1, z2, posfluka, "AIR", "MF", "$SHH");
465
466 z1=zfl+dF1/2.;
467 z2=z1+dFlange;
468 flukaGeom->Cylinder(0.,rB1 , z1, z2, posfluka, "VACUUM", "MF", "$SHH");
469 flukaGeom->Cylinder(rB1, rF1 , z1, z2, posfluka, "STEEL", "MF", "$SHH");
470 flukaGeom->Cylinder(rF1, rF1+0.5 , z1, z2, posfluka, "AIR", "MF", "$SHH");
471 flukaGeom->Cylinder(rF1+0.5, rBox , z1, z2, posfluka, "AIR", "MF", "$SHH");
472 z1=z2;
473 z2=zcy2;
474 flukaGeom->Cylinder(0.,rB1 , z1, z2, posfluka, "VACUUM", "MF", "$SHH");
475 flukaGeom->Cylinder(rB1, rB1+0.1 , z1, z2, posfluka, "STEEL", "MF", "$SHH");
476 flukaGeom->Cylinder(rB1+0.1, rB1+0.6 , z1, z2, posfluka, "AIR", "MF", "$SHH");
477 flukaGeom->Cylinder(rB1+0.6, rBox , z1, z2, posfluka, "AIR", "MF", "$SHH");
478// end Fluka
479//
480
481// pipe and heating jackets outside bellows
482//
483// left side
484 cpar0[0]=(zvac1-zstart)/2;
485 cpar0[1]=rVacu+(zstart-zOpen)*TMath::Tan(thetaOpen1)-0.05;
486 cpar0[2]=rAbs +(zstart-zOpen)*TMath::Tan(thetaOpen1);
487 cpar0[3]=cpar0[1]+2.*cpar0[0]*TMath::Tan(thetaOpen1);
488 cpar0[4]=cpar0[2]+2.*cpar0[0]*TMath::Tan(thetaOpen1);
489 gMC->Gsvolu("YV11", "CONE", idtmed[kSteel+40], cpar0, 5);
490//
491// insulation
492 dTubeS=0.15;
493 cpar[0]=cpar0[0];
494 cpar[1]=cpar0[1]+0.15;
495 cpar[2]=cpar0[1]+0.65;
496 cpar[3]=cpar0[3]+0.15;
497 cpar[4]=cpar0[3]+0.65;
498 gMC->Gsvolu("YI11", "CONE", idtmed[kInsulation+40], cpar, 5);
499 gMC->Gspos("YI11", 1, "YV11", 0., 0., 0., 0, "ONLY");
500//
501// clearance
502 cpar[1]=cpar0[1]+0.75;
503 cpar[2]=cpar0[1]+1.25;
504 cpar[3]=cpar0[3]+0.75;
505 cpar[4]=cpar0[3]+1.25;
506 gMC->Gsvolu("YP11", "CONE", idtmed[kVacuum+40], cpar, 5);
507 gMC->Gspos("YP11", 1, "YV11", 0., 0., 0., 0, "ONLY");
508
509 dz=-dl+cpar0[0];
510 gMC->Gspos("YV11", 1, "YMO1", 0., 0., dz, 0, "ONLY");
511
512// begin Fluka
513//
514 Float_t rf1[10], rf2[10];
515 rf1[0]=0.; rf2[0]=0.;
516 rf1[1] = cpar0[1];
517 rf2[1] = cpar0[3];
518
519
520 rf1[2]=rf1[1]+0.15; rf1[3]=rf1[2]+0.5; rf1[4]=rf1[3]+0.1;
521 rf1[5]=rf1[4]+0.5;
522 rf2[2]=rf2[1]+0.15; rf2[3]=rf2[2]+0.5; rf2[4]=rf2[3]+0.1;
523 rf2[5]=rf2[4]+0.5;
524
525 char* materialsA[7]
526 = {"VACUUM", "STEEL", "PIPEINSU", "STEEL", "AIR", "AIR"};
527 char* fieldsA[7]
528 = {"MF", "MF", "MF", "MF", "MF", "MF"};
529 char* cutsA[7]
530 = {"$SHH","$SHH","$SHH","$SHH","$SHH","$SHH","$SHH"};
531
532 flukaGeom->Comment("1st part: Beam pipe lateral struture (left)");
533 flukaGeom->OnionCone(rf1, rf2, 6 , zstart, zvac1, posfluka, materialsA, fieldsA, cutsA);
3a685df6 534 for (i=0; i<7; i++) rf1[i]=rf2[i];
535 for (i=1; i<7; i++) rf2[i]=rf1[i]+dr11*TMath::Tan(thetaOpen1);
5aba2f60 536 flukaGeom->OnionCone(rf1, rf2, 6 , zvac1, zvac1+dr11, posfluka, materialsA, fieldsA, cutsA);
537 flukaGeom->Cone(rc1, rf2[5], rc1, rc1+dr11, zvac1 , zvac1+dr11, posfluka,"AIR", "MF", "$SHH");
538//
539// end Fluka
540
541
542// right side
543 dTubeS=0.35;
544 dVacuS+=0.25;
545
546 cpar0[0]=(zvac4-zvac3)/2;
547 cpar0[1]=rB1;
548 cpar0[2]=cpar0[1]+dVacuS;
549
550 cpar0[3]=cpar0[1]+2.*cpar0[0]*TMath::Tan(thetaOpenB);
551 cpar0[4]=cpar0[2]+2.*cpar0[0]*TMath::Tan(thetaOpenB);
552 gMC->Gsvolu("YV12", "CONE", idtmed[kSteel], cpar0, 5);
553 Float_t r2V=cpar0[3];
554//
555// insulation
556 cpar[0]=cpar0[0];
557 cpar[1]=cpar0[1]+dTubeS;
558 cpar[2]=cpar0[1]+dTubeS+dInsuS;
559 cpar[3]=cpar0[3]+dTubeS;
560 cpar[4]=cpar0[3]+dTubeS+dInsuS;
561 gMC->Gsvolu("YI12", "CONE", idtmed[kInsulation], cpar, 5);
562 gMC->Gspos("YI12", 1, "YV12", 0., 0., 0., 0, "ONLY");
563
564//
565// clearance
566 cpar[1]=cpar0[1]+dTubeS+dInsuS+dEnveS;
567 cpar[2]=cpar0[1]+dTubeS+dInsuS+dEnveS+dFreeS;
568 cpar[3]=cpar0[3]+dTubeS+dInsuS+dEnveS;
569 cpar[4]=cpar0[3]+dTubeS+dInsuS+dEnveS+dFreeS;
570 gMC->Gsvolu("YP12", "CONE", idtmed[kAir], cpar, 5);
571 gMC->Gspos("YP12", 1, "YV12", 0., 0., 0., 0, "ONLY");
572
573 dz=dl-cpar0[0];
574 gMC->Gspos("YV12", 1, "YMO1", 0., 0., dz, 0, "ONLY");
575
576//
577// begin Fluka
578 char* materialsB[8]
579 = {"VACUUM", "STEEL", "PIPEINSU", "STEEL", "AIR", "STEEL", "AIR"};
580
581 char* fieldsB[8]
582 = {"MF", "MF", "MF", "MF", "MF", "MF", "MF"};
583
584 char* cutsB[8]
585 = {"$SHH","$SHH","$SHH","$SHH","$SHH","$SHH","$SHH", "$SHH"};
586
587 rf1[0]=rf2[0]=0.;
588 rf1[1]=cpar0[1];
589 rf2[1]=cpar0[3];
590
591 rf1[2]=rf1[1]+dTubeS; rf1[3]=rf1[2]+dInsuS; rf1[4]=rf1[3]+dEnveS;
592 rf1[5]=rf1[4]+dFreeS; rf1[6]=rf1[5]+dProtS; rf1[7]=r2;
593
594 rf2[2]=rf2[1]+dTubeS; rf2[3]=rf2[2]+dInsuS; rf2[4]=rf2[3]+dEnveS;
595 rf2[5]=rf2[4]+dFreeS; rf2[6]=rf2[5]+dProtS;
a0cb6c86 596 rf2[7]=r2;
5aba2f60 597 flukaGeom->Comment("1st part: Beam pipe lateral structure (right)");
598 flukaGeom->OnionCone(rf1, rf2, 8 , zvac3, zvac4, posfluka, materialsB, fieldsB, cutsB);
3a685df6 599 for (i=0; i<8; i++) rf2[i]=rf1[i];
600 for (i=1; i<7; i++) rf1[i]=rf2[i];
a0cb6c86 601 rf1[7]=rf2[7];
5aba2f60 602 flukaGeom->OnionCone(rf1, rf2, 8 , zvac3-dr13, zvac3, posfluka, materialsB, fieldsB, cutsB);
603//
604// end Fluka
605
606//
607// Second Section
608// Between first and second bellow section
609//
610
611 par2[0] = 0.;
612 par2[1] = 360.;
613 par2[2] = 7.;
614 dl=(zvac7-zvac4)/2.;
a0cb6c86 615// recess station 2
5aba2f60 616 par2[3] = -dl;
a0cb6c86 617 par2[4] = r2;
618 par2[5] = R21;
619
620 par2[6] = -dl+10.;
621 par2[7] = r2;
5aba2f60 622 par2[8] = R21;
623
a0cb6c86 624 par2[9] = -dl+(zvac6-zvac4);
625 par2[10] = r2+(zvac6-zvac4-10.) * TMath::Tan(thetaOpen2);
5aba2f60 626 par2[11] = R21;
627
628 par2[12] = -dl+(zvac6-zvac4);
629 par2[13] = par2[10];
630 par2[14] = zvac6*TMath::Tan(accMin);
631
632// Start of Pb section
633 par2[15] = -dl+(zPb-zvac4);
a0cb6c86 634 par2[16] = r2+(zPb-zvac4-10.) * TMath::Tan(thetaOpen2);
5aba2f60 635 par2[17] = zPb*TMath::Tan(accMin);
636
637//
638// end of cone following 2 deg line
639 par2[18] = -dl+(zConeE-zvac4);
a0cb6c86 640 par2[19] = r2+(zConeE-zvac4-10.) * TMath::Tan(thetaOpen2);
5aba2f60 641 par2[20] = 30.;
642
643 par2[21] = -dl+(zvac7-zvac4);
a0cb6c86 644 par2[22] = r2+(zvac7-zvac4-10.) * TMath::Tan(thetaOpen2);
5aba2f60 645 par2[23] = 30.;
646
647
a0cb6c86 648 gMC->Gsvolu("YGO2", "PCON", idtmed[kNiCuW+40], par2, 24);
5aba2f60 649
650//
651// begin Fluka
652 Float_t rfvacu0[8], rfvacu1[8], rfvacu2[8], rfvacu3[8], rfvacu4[8], rfvacu5[8];
653
654 for (ifl=0; ifl<7; ifl++) {
655 rfluka1[ifl] = par2[4+3*ifl];
656 rfluka2[ifl] = par2[5+3*ifl]-dRSteel2;
657 rfluka3[ifl] = par2[5+3*ifl];
658 rfvacu5[ifl] = r2V;
659 rfvacu4[ifl]=rfvacu5[0]+dTubeS;
660 rfvacu3[ifl]=rfvacu4[0]+dInsuS;
661 rfvacu2[ifl]=rfvacu3[0]+dEnveS;
662 rfvacu1[ifl]=rfvacu2[0]+dFreeS;
663 rfvacu0[ifl]=rfvacu1[0]+dProtS;
664 }
665
666 char* materials1[11]
667 = {"VACUUM", "STEEL", "PIPEINSU", "STEEL", "AIR", "STEEL", "AIR", "NIW",
668 "NIW", "STEEL"};
669 char* fields1[11]
670 = {"MF", "MF", "MF", "MF", "MF", "MF", "MF", "MF", "MF", "MF", "MF"};
671 char* cuts1[11]
672 = {"$SHH","$SHH","$SHH","$SHH","$SHH","$SHH","$SHH", "$SHH","$SHH","$SHS", "$SHS"};
673
674
675 rf1[0]=0.; rf1[1]=rfvacu5[0]; rf1[2]=rfvacu4[0]; rf1[3]=rfvacu3[0];
676 rf1[4]=rfvacu2[0]; rf1[5]=rfvacu1[0]; rf1[6]=rfvacu0[0];
677 rf1[7]=rfluka1[0]; rf1[9]=R11-dRSteel1;
678 rf1[10]=R21;
3a685df6 679 for (i=1; i<7; i++) rf2[i]=rf1[i]+4.*TMath::Tan(thetaOpenB);
a0cb6c86 680 rf2[7]=rf1[7];
5aba2f60 681 rf2[9]=rf1[9]; rf2[10]=rf1[10];
682 rf1[8]=13.;
683 rf2[8]=rf1[8]+4.*TMath::Tan(thetaOpenPb);
684
a0cb6c86 685 flukaGeom->Comment("2nd part: Beam pipe lateral struture (0)");
5aba2f60 686 flukaGeom->OnionCone(rf1, rf2, 11 , zvac4, zvac4+4, posfluka, materials1, fields1, cuts1);
687
688
3a685df6 689 for (i=0; i<11; i++) rf1[i]=rf2[i];
690 for (i=1; i<7; i++)
a0cb6c86 691 rf2[i]=rf1[i]+20.*TMath::Tan(thetaOpenB);
692 rf2[7]=rf1[7];
693 rf2[8]=rf1[8]+20.*TMath::Tan(thetaOpenPb);
694 rf1[9]=R21-dRSteel2;
695 rf1[10]=R21;
696 rf2[9]=R21-dRSteel2;
697 rf2[10]=R21;
698 flukaGeom->Comment("2nd part: Beam pipe lateral struture (1)");
699 flukaGeom->OnionCone(rf1, rf2, 11 , zvac4+4, zvac4+24, posfluka, materials1, fields1, cuts1);
700
3a685df6 701 for (i=0; i<11; i++) rf1[i]=rf2[i];
702 for (i=1; i<7; i++)
a0cb6c86 703 rf2[i]=rf1[i]+(zvac6-zvac4-24.)*TMath::Tan(thetaOpenB);
704 rf2[7]=rf1[7]+(zvac6-zvac4-24.)*TMath::Tan(thetaOpen2);
705 rf2[8]=rf1[8]+(zvac6-zvac4-24.)*TMath::Tan(thetaOpenPb);
5aba2f60 706 rf1[9]=R21-dRSteel2;
707 rf1[10]=R21;
708 rf2[9]=R21-dRSteel2;
709 rf2[10]=R21;
710 flukaGeom->Comment("2nd part: Beam pipe lateral struture (2)");
a0cb6c86 711 flukaGeom->OnionCone(rf1, rf2, 11 , zvac4+24, zvac6, posfluka, materials1, fields1, cuts1);
5aba2f60 712
3a685df6 713 for (i=0; i<11; i++) rf1[i]=rf2[i];
714 for (i=1; i<7; i++)
5aba2f60 715 rf2[i]=rf1[i]+4.*TMath::Tan(thetaOpenB);
716 rf2[7]=rf1[7]+4.*TMath::Tan(thetaOpen2);
717
718 rf2[8]=rf1[8]+4.*TMath::Tan(thetaOpenPb);
719 rf1[9]=R21-dRSteel2;
720 rf2[9]=R21-dRSteel2;
721 rf1[10]=1;
722 rf2[10]=-1;
723 flukaGeom->Comment("2nd part: Beam pipe lateral struture (3)");
724 flukaGeom->OnionCone(rf1, rf2, 11 , zvac6, zvac6+4, posfluka, materials1, fields1, cuts1);
725
726
3a685df6 727 for (i=0; i<11; i++) rf1[i]=rf2[i];
728 for (i=1; i<7; i++)
5aba2f60 729 rf2[i]=rf1[i]+(zPb-(zvac6-4.))*TMath::Tan(thetaOpenB);
730 rf2[7]=rf1[7]+(zPb-(zvac6-4.))*TMath::Tan(thetaOpen2);
731
732 rf2[8]=rf1[8]+(zPb-(zvac6-4.))*TMath::Tan(thetaOpenPb);
733 rf1[9]=(zvac6+4)*TMath::Tan(accMin)-dRSteel2;
734 rf2[9]=zPb*TMath::Tan(accMin)-dRSteel2;
735 rf1[10]=1.;
736 rf2[10]=-1.;
737 flukaGeom->Comment("2nd part: Beam pipe lateral struture (4)");
738 flukaGeom->OnionCone(rf1, rf2, 11 , zvac6+4, zPb, posfluka, materials1, fields1, cuts1);
739
740
3a685df6 741 for (i=0; i<11; i++) rf1[i]=rf2[i];
742 for (i=1; i<7; i++)
5aba2f60 743 rf2[i]=rf1[i]+(zConeE-zPb)*TMath::Tan(thetaOpenB);
744 rf2[7]=rf1[7]+(zConeE-zPb)*TMath::Tan(thetaOpen2);
745 rf1[8]=rf2[8]+2.;
746 rf2[8]=rf1[8]+(zConeE-zPb)*TMath::Tan(thetaOpenPb);
747 rf1[9]=zPb*TMath::Tan(accMin)-dRSteel2;
748 rf2[9]=30.-dRSteel2;
749 rf1[10]=1.;
750 rf2[10]=-1.;
751 flukaGeom->Comment("2nd part: Beam pipe lateral struture (5)");
752 if (fPbCone) materials1[7] = "LEAD";
753 materials1[8]="LEAD";
754 flukaGeom->OnionCone(rf1, rf2, 11 , zPb, zConeE, posfluka, materials1, fields1, cuts1);
755
3a685df6 756 for (i=0; i<11; i++) rf1[i]=rf2[i];
757 for (i=1; i<7; i++)
5aba2f60 758 rf2[i]=rf1[i]+(zvac7-zConeE)*TMath::Tan(thetaOpenB);
759 rf2[7]=rf1[7]+(zvac7-zConeE)*TMath::Tan(thetaOpen2);
760
761 rf1[8]=rf2[8];
762 rf2[8]=rf1[8]+(zvac7-zConeE)*TMath::Tan(thetaOpenPb);
763 rf1[9]=30.-dRSteel2;
764 rf2[9]=30.-dRSteel2;
765 rf1[10]=30.;
766 rf2[10]=30.;
767 flukaGeom->Comment("2nd part: Beam pipe lateral struture (6)");
a0cb6c86 768 flukaGeom->OnionCone(rf1, rf2, 10 , zConeE, zvac7, posfluka, materials1, fields1, cuts1);
769// Steel envelope and recesses for station 3
770 flukaGeom->Comment("Steel envelope and recesses for station 3");
771 flukaGeom->Cylinder(rf1[9],rf1[10], zConeE, zch31, posfluka, materials1[9], fields1[9], cuts1[9]);
772 flukaGeom->Cylinder(rf1[9], rf1[10]-1, zch31, zch32, posfluka, materials1[9], fields1[9], cuts1[9]);
773 flukaGeom->Cylinder(rf1[10]-1, rf1[10], zch31, zch32, posfluka, "AIR", fields1[9], cuts1[9]);
774 flukaGeom->Cylinder(rf1[9], rf1[10], zch32, zvac7, posfluka, materials1[9], fields1[9], cuts1[9]);
5aba2f60 775
776 Float_t r3V = rf2[1];
777
778// end Fluka
779
780//
781// Lead cone option replacing Tungsten
782//
783 Float_t parPb[12];
784 parPb[0] = 0.;
785 parPb[1] = 360.;
786 parPb[2] = 3.;
787 Float_t dlPb=(zvac7-zPb)/2.;
788
789 parPb[3] = -dlPb;
790 parPb[4] = 17.657;
791 parPb[5] = zPb*TMath::Tan(accMin);
792
793 parPb[6] = -dlPb+(zConeE-zPb);
794 parPb[7] = parPb[4]+(zConeE-zPb)*TMath::Tan(thetaOpenPb);
795 parPb[8] = 30.;
796
797 parPb[9] = dlPb;
798 parPb[10] = parPb[7]+(zvac7-zConeE)*TMath::Tan(thetaOpenPb);
799 parPb[11] = 30.;
a0cb6c86 800
801 Float_t rPbLast=parPb[10];
802
803
5aba2f60 804 gMC->Gsvolu("YXO2", "PCON", idtmed[kPb], parPb, 12);
805 gMC->Gspos("YXO2", 1, "YGO2", 0., 0., (zPb-zvac4)/2., 0, "ONLY");
806
a0cb6c86 807
808 parPb[4] = r2+(zPb-zvac3) * TMath::Tan(thetaOpen2);
809 parPb[5] = 17.657;
810
811 parPb[7] = r2+(zConeE-zvac3) * TMath::Tan(thetaOpen2);
812 parPb[8] = parPb[5]+(zConeE-zPb)*TMath::Tan(thetaOpenPb);
813
814 parPb[10] = r2+(zvac7-zvac3) * TMath::Tan(thetaOpen2);
815 parPb[11] = parPb[8]+(zvac7-zConeE)*TMath::Tan(thetaOpenPb);
816
817 gMC->Gsvolu("YYO2", "PCON", idtmed[iHeavy+40], parPb, 12);
818 gMC->Gspos("YYO2", 1, "YGO2", 0., 0., (zPb-zvac4)/2., 0, "ONLY");
819
3a685df6 820 for (i=4; i<23; i+=3) par2[i] = 0;
5aba2f60 821
822 gMC->Gsvolu("YMO2", "PCON", idtmed[kVacuum+40], par2, 24);
823 gMC->Gspos("YGO2", 1, "YMO2", 0., 0., 0., 0, "ONLY");
824 dZ+=dl;
825 gMC->Gspos("YMO2", 1, "YMOT", 0., 0., dZ, 0, "ONLY");
826 dZ+=dl;
827//
828// Steel envelope
829//
a0cb6c86 830// (1)
5aba2f60 831 tpar[0]=R11-dRSteel1;
832 tpar[1]=R21;
833 tpar[2]=2;
834 gMC->Gsvolu("YS21", "TUBE", idtmed[kSteel], tpar, 3);
835 dz=-dl+tpar[2];
836 gMC->Gspos("YS21", 1, "YGO2", 0., 0., dz, 0, "ONLY");
837 dz+=tpar[2];
a0cb6c86 838// (2)
5aba2f60 839 tpar[0]=R21-dRSteel2;
840 tpar[1]=R21;
841 tpar[2]=(zvac6-zvac5)/2.;
842 gMC->Gsvolu("YS22", "TUBE", idtmed[kSteel], tpar, 3);
843 dz+=tpar[2];
844 gMC->Gspos("YS22", 1, "YGO2", 0., 0., dz, 0, "ONLY");
845 dz+=tpar[2];
a0cb6c86 846// (3)
5aba2f60 847 cpar[0]=2.;
848 cpar[1]=R21-dRSteel2;
849 cpar[2]=zvac6 * TMath::Tan(accMin);
850 cpar[3]=cpar[1];
851 cpar[4]=cpar[2]+4.*TMath::Tan(accMin);
5aba2f60 852 gMC->Gsvolu("YS23", "CONE", idtmed[kSteel], cpar, 5);
853 dz+=cpar[0];
854 gMC->Gspos("YS23", 1, "YGO2", 0., 0., dz, 0, "ONLY");
855 dz+=cpar[0];
a0cb6c86 856// (4)
5aba2f60 857 cpar[0]=(zPb-zvac6-4.)/2;
858 cpar[2]=cpar[4];
859 cpar[4]=cpar[2]+2.*cpar[0]*TMath::Tan(accMin);
860 cpar[1]=cpar[2]-dRSteel2;
861 cpar[3]=cpar[4]-dRSteel2;
862
863 gMC->Gsvolu("YS24", "CONE", idtmed[kSteel], cpar, 5);
864 dz+=cpar[0];
865 gMC->Gspos("YS24", 1, "YGO2", 0., 0., dz, 0, "ONLY");
866 dz+=cpar[0];
867
a0cb6c86 868// (5)
5aba2f60 869 cpar[0]=(zConeE-zPb)/2;
870 cpar[2]=cpar[4];
871 cpar[4]=cpar[2]+2.*cpar[0]*TMath::Tan(accMin);
872 cpar[1]=cpar[2]-dRSteel2;
873 cpar[3]=cpar[4]-dRSteel2;
874
875 gMC->Gsvolu("YS25", "CONE", idtmed[kSteel], cpar, 5);
876 dz=-dlPb+cpar[0];
877 gMC->Gspos("YS25", 1, "YXO2", 0., 0., dz, 0, "ONLY");
878 dz+=cpar[0];
a0cb6c86 879// (6)
5aba2f60 880 tpar[0]=26.;
881 tpar[1]=30.;
882 tpar[2]=(zvac7-zConeE)/2.;
883
884 gMC->Gsvolu("YS26", "TUBE", idtmed[kSteel], tpar, 3);
885 dz+=tpar[2];
886 gMC->Gspos("YS26", 1, "YXO2", 0., 0., dz, 0, "ONLY");
a0cb6c86 887 dz = -tpar[2];
888
889// Recess in steel for station 3
890//
891 tpar[0]=29.;
892 tpar[1]=30.;
893 tpar[2]=(zch32-zch31)/2.;
894 gMC->Gsvolu("YS27", "TUBE", idtmed[kAir], tpar, 3);
895 dz+=(tpar[2]+zch31-zConeE);
5aba2f60 896
a0cb6c86 897 gMC->Gspos("YS27", 1, "YS26", 0., 0., dz, 0, "ONLY");
898
899//
5aba2f60 900//
901// 2nd section: vacuum system
902//
903 cpar0[0]=(zvac7-zvac4)/2;
904 cpar0[1]=r2V;
905 cpar0[2]=r2V+dVacuS;
906 cpar0[3]=cpar0[1]+2.*cpar0[0]*TMath::Tan(thetaOpenB);
907 cpar0[4]=cpar0[2]+2.*cpar0[0]*TMath::Tan(thetaOpenB);
908 gMC->Gsvolu("YV21", "CONE", idtmed[kSteel+40], cpar0, 5);
909//
910// insulation
911 cpar[0]=cpar0[0];
912 cpar[1]=cpar0[1]+dTubeS;
913 cpar[2]=cpar0[1]+dTubeS+dInsuS;
914 cpar[3]=cpar0[3]+dTubeS;
915 cpar[4]=cpar0[3]+dTubeS+dInsuS;
916 gMC->Gsvolu("YI21", "CONE", idtmed[kInsulation+40], cpar, 5);
917 gMC->Gspos("YI21", 1, "YV21", 0., 0., 0., 0, "ONLY");
918//
919// clearance
920 cpar[1]=cpar0[1]+dTubeS+dInsuS+dEnveS;
921 cpar[2]=cpar0[1]+dTubeS+dInsuS+dEnveS+dFreeS;
922 cpar[3]=cpar0[3]+dTubeS+dInsuS+dEnveS;
923 cpar[4]=cpar0[3]+dTubeS+dInsuS+dEnveS+dFreeS;
924 gMC->Gsvolu("YP21", "CONE", idtmed[kAir+40], cpar, 5);
925 gMC->Gspos("YP21", 1, "YV21", 0., 0., 0., 0, "ONLY");
926
927 dz=0.;
928 gMC->Gspos("YV21", 1, "YMO2", 0., 0., dz, 0, "ONLY");
929
930
931//
932// Third Section: Bellows and Flange
933//
934 par3[0] = 0.;
935 par3[1] = 360.;
936 par3[2] = 8.;
937 dl=(zvac9-zvac7)/2.;
938
939 par3[3] = -dl;
940 par3[4] = r2+(zvac7-zvac3) * TMath::Tan(thetaOpen2);
941 par3[5] = 30.;
942
943 par3[6] = -dl+dr21;
944 par3[7] = par3[4]+dr21;
945 par3[8] = 30.;
946
947 par3[9] = par3[6]+dB2;
948 par3[10] = par3[7];
949 par3[11] = 30.;
950
951 par3[12] = par3[9]+dr22;
952 par3[13] = par3[10]+dr22;
953 par3[14] = 30.;
954
955 par3[15] = par3[12]+dF2;
956 par3[16] = par3[13];
957 par3[17] = 30.;
958
959 par3[18] = par3[15]+dr22;
960 par3[19] = par3[16]-dr22;
961 par3[20] = 30.;
962
963 par3[21] = par3[18]+dB2;
964 par3[22] = par3[19];
965 par3[23] = 30.;
966
967 par3[24] = par3[21]+dr23;
a0cb6c86 968 par3[25] = par3[22];
5aba2f60 969 par3[26] = 30.;
970//
971 rBox=par3[22]-0.1;
972 Float_t r3=par3[25];
973
974 gMC->Gsvolu("YGO3", "PCON", idtmed[iHeavy+40], par3, 27);
975
5aba2f60 976// begin Fluka
977 Float_t rflukaPb[8];
978 for (ifl=0; ifl<8; ifl++) {
979 zfluka[ifl]=par3[3+3*ifl]+dl+zvac7;
980 rflukaPb[ifl]= 15.+(zfluka[ifl]-zvac4)*TMath::Tan(thetaOpenPb);
981 rfluka1[ifl] = par3[4+3*ifl];
982 rfluka2[ifl] = par3[5+3*ifl]-4.;
983 rfluka3[ifl] = par3[5+3*ifl];
984 rfvacu0[ifl] = 0.;
985 }
3a685df6 986 for (i=0; i<8; i++) rfluka0[i]=rBox;
5aba2f60 987 rfluka0[0]=0.; rfluka0[7]=0.;
988
989 flukaGeom->Comment("3rd part: Shield");
990 flukaGeom->PolyCone(rflukaPb, rfluka2, zfluka, 8, posfluka, "LEAD", "MF", "$SHS");
991
992 if (fPbCone) {
993 flukaGeom->PolyCone(rfluka1, rflukaPb, zfluka, 8, posfluka, "LEAD", "MF", "$SHS");
994 } else {
995 flukaGeom->PolyCone(rfluka1, rflukaPb, zfluka, 8, posfluka, "NIW", "MF", "$SHS");
996 }
997
998 flukaGeom->Comment("3rd part: Steel envelope");
999 flukaGeom->PolyCone(rfluka2, rfluka3, zfluka, 8, posfluka, "STEEL", "MF", "$SHS");
1000 flukaGeom->Comment("3rd part: Vacuum");
1001 flukaGeom->PolyCone(rfluka0+1, rfluka1+1, zfluka+1, 6, posfluka, "AIR", "MF", "$SHH");
1002 flukaGeom->Comment("3rd part: Beam Pipe (left)");
1003
1004 rf1[0]=0.; rf2[0]=0.;
1005 rf1[1] = r3V;
1006 rf2[1] = rf1[1]+dr21*TMath::Tan(thetaOpenB);
1007 rf1[2]=rf1[1]+dTubeS; rf1[3]=rf1[2]+dInsuS; rf1[4]=rf1[3]+dEnveS;
1008 rf1[5]=rf1[4]+dFreeS; rf1[6]= rf1[5]+dProtS; rf1[7]=par3[4];
1009 rf2[2]=rf2[1]+dTubeS; rf2[3]=rf2[2]+dInsuS; rf2[4]=rf2[3]+dEnveS;
1010 rf2[5]=rf2[4]+dFreeS; rf2[6]=rf2[5]+dProtS; rf2[7]=rf1[7]+dr21;
1011 flukaGeom->OnionCone(rf1, rf2, 8 , zvac7, zvac7+dr21, posfluka, materialsB, fieldsB, cutsB);
1012
1013
1014 flukaGeom->Comment("3rd part: Beam Pipe (right)");
1015
a0cb6c86 1016 rf1[0]=0.;
1017 rf1[1] = par3[25]-dr23;
5aba2f60 1018 rf1[2]=rf1[1]+dTubeS; rf1[3]=rf1[2]+dInsuS; rf1[4]=rf1[3]+dEnveS;
a0cb6c86 1019 rf1[5]=rf1[4]+dFreeS; rf1[6]=par3[25];
1020 flukaGeom->OnionCylinder(rf1, 7 , zvac9-dr23, zvac9, posfluka, materialsA, fieldsA, cutsA);
5aba2f60 1021
1022//
1023 flukaGeom->Comment("First Bellow");
1024 z1=zvac7+dr21;
1025
3a685df6 1026 for (i=0; i<7; i++) {
5aba2f60 1027 z2=z1+eB2;
1028 flukaGeom->Cylinder(0., rB2, z1, z2, posfluka, "VACUUM", "MF", "$SHH");
1029 flukaGeom->Cylinder(rB2, rB2+hB2, z1, z2, posfluka, "STEEL", "MF", "$SHH");
1030
1031 z1=z2;
1032 z2+=lB2/2.-eB2;
1033 flukaGeom->Cylinder(0., rB2+hB2-eB2, z1, z2, posfluka, "VACUUM", "MF", "$SHH");
1034 flukaGeom->Cylinder(rB2+hB2-eB2, rB2+hB2, z1, z2, posfluka, "STEEL", "MF", "$SHH");
1035 z1=z2;
1036 z2=z1+eB2;
1037 flukaGeom->Cylinder(0., rB2, z1, z2, posfluka, "VACUUM", "MF", "$SHH");
1038 flukaGeom->Cylinder(rB2, rB2+hB2, z1, z2, posfluka, "STEEL", "MF", "$SHH");
1039 z1=z2;
1040 z2+=lB2/2.-eB2;
1041 flukaGeom->Cylinder(0., rB2, z1, z2, posfluka, "VACUUM", "MF", "$SHH");
1042 flukaGeom->Cylinder(rB2, rB2+eB2, z1, z2, posfluka, "STEEL", "MF", "$SHH");
1043 flukaGeom->Cylinder(rB2+eB2, rB2+hB2, z1, z2, posfluka, "AIR", "MF", "$SHH");
1044 z1=z2;
1045 }
1046 flukaGeom->Cylinder(rB2+hB2, rB2+hB2+0.2, zvac7+dr21, z1, posfluka, "AIR", "MF", "$SHH");
1047 flukaGeom->Cylinder(rB2+hB2+0.2, rBox, zvac7+dr21, z1, posfluka, "AIR", "MF", "$SHH");
1048 zcy1=z1;
1049
1050
1051 flukaGeom->Comment("Second Bellow");
1052 z1=zvac9-dr23;
3a685df6 1053 for (i=0; i<7; i++) {
5aba2f60 1054 z2=z1-eB2;
1055 flukaGeom->Cylinder(0., rB2, z2, z1, posfluka, "VACUUM", "MF", "$SHH");
1056 flukaGeom->Cylinder(rB2, rB2+hB2, z2, z1, posfluka, "STEEL", "MF", "$SHH");
1057 z1=z2;
1058 z2-=lB2/2.-eB2;
1059 flukaGeom->Cylinder(0., rB2+hB2-eB2, z2, z1, posfluka, "VACUUM", "MF", "$SHH");
1060 flukaGeom->Cylinder(rB2+hB2-eB2, rB2+hB2, z2, z1, posfluka, "STEEL", "MF", "$SHH");
1061 z1=z2;
1062 z2=z1-eB2;
1063 flukaGeom->Cylinder(0., rB2, z2, z1, posfluka, "VACUUM", "MF", "$SHH");
1064 flukaGeom->Cylinder(rB2, rB2+hB2, z2, z1, posfluka, "STEEL", "MF", "$SHH");
1065 z1=z2;
1066 z2-=lB2/2.-eB2;
1067 flukaGeom->Cylinder(0., rB2, z2, z1, posfluka, "VACUUM", "MF", "$SHH");
1068 flukaGeom->Cylinder(rB2, rB2+eB2, z2, z1, posfluka, "STEEL", "MF", "$SHH");
1069 flukaGeom->Cylinder(rB2+eB2, rB2+hB2, z2, z1, posfluka, "AIR", "MF", "$SHH");
1070 z1=z2;
1071 }
1072 flukaGeom->Cylinder(rB2+hB2, rB2+hB2+0.2, z1, zvac9-dr23, posfluka, "AIR", "MF", "$SHH");
1073 flukaGeom->Cylinder(rB2+hB2+0.2, rBox, z1, zvac9-dr23, posfluka, "AIR", "MF", "$SHH");
1074
1075 zcy2=z1;
1076 flukaGeom->Comment("Flange");
1077 zfl=(zcy1+zcy2)/2.;
1078
1079 z1=zfl-dF2/2.;
1080 z2=zfl+dF2/2.;
a0cb6c86 1081 flukaGeom->Cylinder(0.,rF2-2., z1, z2, posfluka, "VACUUM", "MF", "$SHH");
1082 flukaGeom->Cylinder(rF2-2., rF2, z1, z2, posfluka, "STEEL", "MF", "$SHH");
1083 flukaGeom->Cylinder(rF2, rF2+0.02 , z1, z2, posfluka, "AIR", "MF", "$SHH");
1084 flukaGeom->Cylinder(rF2+0.02, rBox , z1, z2, posfluka, "AIR", "MF", "$SHH");
5aba2f60 1085 z2=z1;
1086 z1=z2-dFlange;
1087 flukaGeom->Cylinder(0.,rB2 , z1, z2, posfluka, "VACUUM", "MF", "$SHH");
1088 flukaGeom->Cylinder(rB2, rF2 , z1, z2, posfluka, "STEEL", "MF", "$SHH");
1089 flukaGeom->Cylinder(rF2, rF2+0.2 , z1, z2, posfluka, "AIR", "MF", "$SHH");
1090 flukaGeom->Cylinder(rF2+0.2, rBox , z1, z2, posfluka, "AIR", "MF", "$SHH");
1091 z2=z1;
1092 z1=zcy1;
1093 flukaGeom->Cylinder(0.,rB2 , z1, z2, posfluka, "VACUUM", "MF", "$SHH");
1094 flukaGeom->Cylinder(rB2, rB2+0.1 , z1, z2, posfluka, "STEEL", "MF", "$SHH");
1095 flukaGeom->Cylinder(rB2+0.1, rB2+0.2 , z1, z2, posfluka, "AIR", "MF", "$SHH");
1096 flukaGeom->Cylinder(rB2+0.2, rBox , z1, z2, posfluka, "AIR", "MF", "$SHH");
1097
1098 z1=zfl+dF2/2.;
1099 z2=z1+dFlange;
1100 flukaGeom->Cylinder(0.,rB2 , z1, z2, posfluka, "VACUUM", "MF", "$SHH");
1101 flukaGeom->Cylinder(rB2, rF2 , z1, z2, posfluka, "STEEL", "MF", "$SHH");
1102 flukaGeom->Cylinder(rF2, rF2+0.2 , z1, z2, posfluka, "AIR", "MF", "$SHH");
1103 flukaGeom->Cylinder(rF2+0.2, rBox , z1, z2, posfluka, "AIR", "MF", "$SHH");
1104 z1=z2;
1105 z2=zcy2;
1106 flukaGeom->Cylinder(0.,rB2 , z1, z2, posfluka, "VACUUM", "MF", "$SHH");
1107 flukaGeom->Cylinder(rB2, rB2+0.1 , z1, z2, posfluka, "STEEL", "MF", "$SHH");
1108 flukaGeom->Cylinder(rB2+0.1, rB2+0.2 , z1, z2, posfluka, "AIR", "MF", "$SHH");
1109 flukaGeom->Cylinder(rB2+0.2, rBox , z1, z2, posfluka, "AIR", "MF", "$SHH");
1110//
1111// end Fluka
1112
1113 parPb[0] = dl;
a0cb6c86 1114 parPb[1] = rPbLast;
5aba2f60 1115 parPb[2] = 30;
1116 parPb[3] = parPb[1]+2.*dl*TMath::Tan(thetaOpenPb);
1117 parPb[4] = 30;
1118 gMC->Gsvolu("YXO3", "CONE", idtmed[kPb], parPb, 5);
1119 gMC->Gspos("YXO3", 1, "YGO3", 0., 0., 0., 0, "ONLY");
3a685df6 1120
1121 for (i=4; i<26; i+=3) par3[i] = 0;
1122
5aba2f60 1123 gMC->Gsvolu("YMO3", "PCON", idtmed[kVacuum+40], par3, 27);
1124 gMC->Gspos("YGO3", 1, "YMO3", 0., 0., 0., 0, "ONLY");
1125
1126//
1127// Steel envelope
1128 tpar[0]=26;
1129 tpar[1]=30;
1130 tpar[2]=dl;
1131 gMC->Gsvolu("YS31", "TUBE", idtmed[kSteel], tpar, 3);
1132 gMC->Gspos("YS31", 1, "YXO3", 0., 0., 0., 0, "ONLY");
1133 dZ+=dl;
1134 gMC->Gspos("YMO3", 1, "YMOT", 0., 0., dZ, 0, "ONLY");
1135 dZ+=dl;
1136
1137//
1138// 3rd section: vacuum system
1139//
1140//
1141// Bellow2
1142//
1143 tpar[0]=rB2;
1144 tpar[1]=rB2+hB2;
1145 tpar[2]=eB2/2.;
1146 gMC->Gsvolu("YB21", "TUBE", idtmed[kSteel+40], tpar, 3);
1147 dl1=tpar[2];
1148
1149 tpar[0]=rB2+hB2-eB2;
1150 tpar[1]=rB2+hB2;
1151 tpar[2]=(lB2/2.-2.*eB2)/2.;
1152 gMC->Gsvolu("YB22", "TUBE", idtmed[kSteel+40], tpar, 3);
1153 dl2=tpar[2];
1154
1155 tpar[0]=rB2-eB2;
1156 tpar[1]=rB2;
1157 tpar[2]=lB2/8.;
1158 gMC->Gsvolu("YB23", "TUBE", idtmed[kSteel+40], tpar, 3);
1159 dl3=tpar[2];
1160
1161
1162 tpar[0]=0;
1163 tpar[1]=rB2+hB2;
1164 tpar[2]=lB2/2.;
1165 gMC->Gsvolu("YBU2", "TUBE", idtmed[kVacuum+40], tpar, 3);
1166
1167 dz=-tpar[2]+dl3;
1168 gMC->Gspos("YB23", 1, "YBU2", 0., 0., dz, 0, "ONLY");
1169 dz+=dl3;
1170 dz+=dl1;
1171 gMC->Gspos("YB21", 1, "YBU2", 0., 0., dz, 0, "ONLY");
1172 dz+=dl1;
1173 dz+=dl2;
1174 gMC->Gspos("YB22", 1, "YBU2", 0., 0., dz, 0, "ONLY");
1175 dz+=dl2;
1176 dz+=dl1;
1177 gMC->Gspos("YB21", 2, "YBU2", 0., 0., dz, 0, "ONLY");
1178 dz+=dl1;
1179 dz+=dl3;
1180 gMC->Gspos("YB23", 2, "YBU2", 0., 0., dz, 0, "ONLY");
1181
1182
1183 tpar[0]=0;
1184 tpar[1]=rB2+hB2;
1185 tpar[2]=7.*lB2/2.;
1186 gMC->Gsvolu("YBM2", "TUBE", idtmed[kVacuum+40], tpar, 3);
1187 dz=-tpar[2]+lB2/2.;
3a685df6 1188
1189 for (i=0; i<7; i++) {
1190 gMC->Gspos("YBU2", i+1 , "YBM2", 0., 0.,dz , 0, "ONLY");
1191 dz+=lB2;
1192 }
1193
5aba2f60 1194 dz=-dl+dr21+tpar[2];
1195 gMC->Gspos("YBM2", 1, "YMO3", 0., 0., dz, 0, "ONLY");
1196
1197 dz=dl-dr23-tpar[2];
1198 gMC->Gspos("YBM2", 2, "YMO3", 0., 0., dz, 0, "ONLY");
1199
1200//
1201// Flange
1202
1203 tpar[0]=0;
1204 tpar[1]=rF2;
1205 tpar[2]=dF2/2.;
1206 gMC->Gsvolu("YFM2", "TUBE", idtmed[kVacuum+40], tpar, 3);
1207
a0cb6c86 1208 tpar[0]=rF2-2.;
5aba2f60 1209 tpar[1]=rF2;
1210 tpar[2]=dF2/2.;
1211 gMC->Gsvolu("YF21", "TUBE", idtmed[kSteel+40], tpar, 3);
1212 gMC->Gspos("YF21", 1, "YFM2", 0., 0., 0., 0, "ONLY");
1213
1214 tpar[0]=rB2;
a0cb6c86 1215 tpar[1]=rF2-2.;
5aba2f60 1216 tpar[2]=dFlange/2.;
1217 gMC->Gsvolu("YF22", "TUBE", idtmed[kSteel+40], tpar, 3);
1218 dz=-dF2/2.+tpar[2];
1219 gMC->Gspos("YF22", 1, "YFM2", 0., 0., dz, 0, "ONLY");
1220 dz= dF2/2.-tpar[2];
1221 gMC->Gspos("YF22", 2, "YFM2", 0., 0., dz, 0, "ONLY");
1222
1223 dz=dr21/2.-dr23/2.;
1224 gMC->Gspos("YFM2", 2, "YMO3", 0., 0., dz, 0, "ONLY");
1225
1226
1227//
1228// pipe between flange and bellows
1229 tpar[0]=rB2-dTubeS;
1230 tpar[1]=rB2;
1231 tpar[2]=2.*(dB2+dr22-7.*lB2)/4.;
1232 gMC->Gsvolu("YPF2", "TUBE", idtmed[kSteel+40], tpar, 3);
1233 dz=dr21/2.-dr23/2.-dF2/2.-tpar[2];
1234 gMC->Gspos("YPF2", 1, "YMO3", 0., 0., dz, 0, "ONLY");
1235 dz=dr21/2.-dr23/2.+dF2/2.+tpar[2];
1236 gMC->Gspos("YPF2", 2, "YMO3", 0., 0., dz, 0, "ONLY");
1237
a0cb6c86 1238 Float_t dHorZ=55.;
1239
5aba2f60 1240//
1241// 4th section: rear shield and closing cone
1242//
1243 par4[0] = 0.;
1244 par4[1] = 360.;
a0cb6c86 1245 par4[2] = 7.;
5aba2f60 1246 dl=(zvac12-zvac9)/2.;
1247
1248 par4[3] = -dl;
1249 par4[4] = r3;
1250 par4[5] = 30.;
1251
a0cb6c86 1252 par4[6] = -dl+dHorZ;
1253 par4[7] = r3;
5aba2f60 1254 par4[8] = 30.;
1255
a0cb6c86 1256 par4[9] = -dl+(zvac10-zvac9);
1257 par4[10] = r3+(zvac10-zvac9-dHorZ) * TMath::Tan(thetaOpen3);
1258 par4[11] = 30.;
5aba2f60 1259
a0cb6c86 1260 par4[12] = par4[9];
1261 par4[13] = par4[10];
5aba2f60 1262 par4[14] = R42;
1263
a0cb6c86 1264 par4[15] = -dl+(zvac11-zvac9);
1265 par4[16] = r3+(zvac11-zvac9-dHorZ) * TMath::Tan(thetaOpen3);
1266 par4[17] = R42;
5aba2f60 1267
a0cb6c86 1268 par4[18] = par4[15];
1269 par4[19] = par4[16];
5aba2f60 1270 par4[20] = R43;
1271
a0cb6c86 1272 par4[21] = -dl+(zvac12-zvac9);
1273 par4[22] = rAbs;
1274 par4[23] = R43;
1275
1276 gMC->Gsvolu("YGO4", "PCON", idtmed[iHeavy+40], par4, 24);
5aba2f60 1277
1278 parPb[0] = (zvac10-zvac9)/2.;
1279 parPb[1] = parPb[3];
1280 parPb[2] = 30;
1281 parPb[3] = parPb[1]+2.*parPb[0]*TMath::Tan(thetaOpenPb);
1282 parPb[4] = 30;
1283 gMC->Gsvolu("YXO4", "CONE", idtmed[kPb], parPb, 5);
1284 gMC->Gspos("YXO4", 1, "YGO4", 0., 0., -dl+parPb[0], 0, "ONLY");
1285
1286 parPb[0] = (zvac12-zvac10)/2.;
1287 parPb[1] = parPb[3];
1288 parPb[2] = 31.;
1289 parPb[3] = parPb[1]+2.*parPb[0]*TMath::Tan(thetaOpenPb);
1290 parPb[4] = 31.;
1291 gMC->Gsvolu("YXO5", "CONE", idtmed[kPb], parPb, 5);
1292 gMC->Gspos("YXO5", 1, "YGO4", 0., 0., -dl+(zvac10-zvac9)+parPb[0], 0, "ONLY");
3a685df6 1293
1294 for (i=4; i<23; i+=3) par4[i] = 0;
5aba2f60 1295
a0cb6c86 1296 gMC->Gsvolu("YMO4", "PCON", idtmed[kVacuum+40], par4, 24);
5aba2f60 1297 gMC->Gspos("YGO4", 1, "YMO4", 0., 0., 0., 0, "ONLY");
1298
1299
1300
1301 dZ+=dl;
1302 gMC->Gspos("YMO4", 1, "YMOT", 0., 0., dZ, 0, "ONLY");
1303 dZ+=dl;
1304//
1305// Closing concrete cone
1306//
1307 cpar[0]=(zvac12-zvac11)/2.;
a0cb6c86 1308 cpar[1] = r3+(zvac11-zvac9-dHorZ) * TMath::Tan(thetaOpen3);
5aba2f60 1309 cpar[2] = cpar[1]+0.001;
1310 cpar[3] = rAbs;
1311 cpar[4] = cpar[2];
1312 gMC->Gsvolu("YCC4", "CONE", idtmed[kConcrete+40], cpar, 5);
1313 dz=dl-cpar[0];
1314 gMC->Gspos("YCC4", 1, "YGO4", 0., 0., dz, 0, "ONLY");
1315
1316//
1317// begin Fluka
a0cb6c86 1318 Float_t r10=r3+(zvac10-zvac9-dHorZ) * TMath::Tan(thetaOpen3);
5aba2f60 1319 Float_t r11=cpar[1];
a0cb6c86 1320
1321 Float_t rPb0=15.+(zvac9-zvac4)* TMath::Tan(thetaOpenPb);
1322 Float_t rPb1=15.+(zvac9+dHorZ-zvac4)* TMath::Tan(thetaOpenPb);
5aba2f60 1323 Float_t rPb2=15.+(zvac10-zvac4)* TMath::Tan(thetaOpenPb);
1324 flukaGeom->Comment("4th part: Shield");
1325
a0cb6c86 1326 flukaGeom->Cone(rPb0, rPb1, 26.0, 26.0, zvac9, zvac9+dHorZ,
5aba2f60 1327 posfluka, "LEAD", "NF", "$SHH");
1328 if (fPbCone) {
a0cb6c86 1329 flukaGeom->Cone(r3, r3, rPb0, rPb1, zvac9, zvac9+dHorZ,
5aba2f60 1330 posfluka, "LEAD", "NF", "$SHS");
1331 } else {
a0cb6c86 1332 flukaGeom->Cone(r3, r3, rPb0, rPb1, zvac9, zvac9+dHorZ,
1333 posfluka, "NIW", "NF", "$SHS");
1334 }
1335
1336 flukaGeom->Cone(rPb1, rPb2, 26.0, 26.0, zvac9+dHorZ, zvac10,
1337 posfluka, "LEAD", "NF", "$SHH");
1338 if (fPbCone) {
1339 flukaGeom->Cone(r3, r10, rPb1, rPb2, zvac9+dHorZ, zvac10,
1340 posfluka, "LEAD", "NF", "$SHS");
1341 } else {
1342 flukaGeom->Cone(r3, r10, rPb1, rPb2, zvac9+dHorZ, zvac10,
5aba2f60 1343 posfluka, "NIW", "NF", "$SHS");
1344 }
1345
1346
1347 rPb1=rPb2;
1348 rPb2=15.+(zvac11-zvac4)* TMath::Tan(thetaOpenPb);
1349 flukaGeom->Cone(rPb1, rPb2, 30.0, 30.0, zvac10, zvac11,
1350 posfluka, "LEAD", "NF", "$SHH");
1351 if (fPbCone) {
1352 flukaGeom->Cone(r10, r11, rPb1, rPb2, zvac10, zvac11,
1353 posfluka, "LEAD", "NF", "$SHH");
1354 } else {
1355 flukaGeom->Cone(r10, r11, rPb1, rPb2, zvac10, zvac11,
1356 posfluka, "NIW", "NF", "$SHH");
1357 }
1358
1359 flukaGeom->Cylinder( rPb2, 30.0, zvac11, zvac12,
1360 posfluka, "LEAD", "NF", "$SHH");
1361 if (fPbCone) {
1362 flukaGeom->Cylinder( cpar[1], rPb2, zvac11, zvac12,
1363 posfluka, "LEAD", "NF", "$SHH");
1364 } else {
a0cb6c86 1365 flukaGeom->Cylinder( cpar[1], rPb2, zvac11, zvac12,
1366 posfluka, "NIW", "NF", "$SHH");
5aba2f60 1367 }
1368
1369 flukaGeom->Comment("4th part: Steel Envelope");
1370 flukaGeom->Cylinder(26.0, 30., zvac9, zvac10, posfluka, "STEEL", "NF", "$SHH");
1371 flukaGeom->Comment("4th part: Closing Cone");
1372 flukaGeom->Cone(cpar[1]-0.1, cpar[3], cpar[1], cpar[1], zvac11, zvac12,
1373 posfluka, "PORTLAND", "NF", "$SHH");
1374 flukaGeom->Comment("4th part: VACUUM");
1375 flukaGeom->Cone(0., 0., cpar[1]-0.1, cpar[3], zvac11, zvac12,
1376 posfluka, "VACUUM", "NF", "$SHH");
1377//
1378// end Fluka
1379
1380//
1381// Steel envelope
1382//
1383 dz=-dl;
1384 tpar[0]=26.;
1385 tpar[1]=30.;
1386 tpar[2]=(zvac10-zvac9)/2.;
1387 gMC->Gsvolu("YS41", "TUBE", idtmed[kSteel], tpar, 3);
1388 dz+=tpar[2];
1389 gMC->Gspos("YS41", 1, "YXO4", 0., 0., 0., 0, "ONLY");
1390 dz+=tpar[2];
1391/*
1392 tpar[0]=30.;
1393 tpar[1]=R41;
1394 tpar[2]=2.;
1395 gMC->Gsvolu("YS42", "TUBE", idtmed[kSteel], tpar, 3);
1396 dz+=tpar[2];
1397 gMC->Gspos("YS42", 1, "YGO4", 0., 0., dz, 0, "ONLY");
1398 dz+=tpar[2];
1399*/
1400 tpar[0]=R41-dRSteel2;
1401 tpar[1]=R41;
1402 tpar[2]=(zvac11-zvac10)/2.;
1403 gMC->Gsvolu("YS43", "TUBE", idtmed[kSteel], tpar, 3);
1404 dz+=tpar[2];
1405 gMC->Gspos("YS43", 1, "YGO4", 0., 0., dz, 0, "ONLY");
1406//
1407// rear lead shield
1408//
1409 tpar[0]=R41;
1410 tpar[1]=R42;
1411 tpar[2]=(zvac11-zvac10)/2.;
1412 gMC->Gsvolu("YPBI", "TUBE", idtmed[kPb+40], tpar, 3);
1413 dz-=0;
1414 gMC->Gspos("YPBI", 1, "YGO4", 0., 0., dz, 0, "ONLY");
1415
1416 tpar[0]=R42-5;
1417 tpar[1]=R42;
1418 tpar[2]=(zvac11-zvac10)/2.;
1419 gMC->Gsvolu("YPBO", "TUBE", idtmed[kPb], tpar, 3);
1420 gMC->Gspos("YPBO", 1, "YPBI", 0., 0., 0., 0, "ONLY");
1421
1422//
1423// rear Fe shield
1424//
1425
1426 tpar[0]=31.;
1427 tpar[1]=R43;
1428 tpar[2]=(zvac12-zvac11)/2.;
1429 gMC->Gsvolu("YFEI", "TUBE", idtmed[kFe+40], tpar, 3);
1430 dz=dl-tpar[2];
1431 gMC->Gspos("YFEI", 1, "YGO4", 0., 0., dz, 0, "ONLY");
1432
1433 tpar[0]=31.;
1434 tpar[1]=R43;
1435 tpar[2]=2.5;
1436 gMC->Gsvolu("YFEO", "TUBE", idtmed[kFe], tpar, 3);
1437 dz=-(zvac12-zvac11)/2.+tpar[2];
1438 gMC->Gspos("YFEO", 1, "YFEI", 0., 0., dz, 0, "ONLY");
1439//
1440// Magnet element
1441//
1442 tpar[0]=0.;
1443 tpar[1]=R43;
1444 tpar[2]=50.;
1445 gMC->Gsvolu("YAEM", "TUBE", idtmed[kAir], tpar, 3);
1446 tpar[0]=rAbs;
1447 tpar[1]=R43;
1448 tpar[2]=50.;
1449 gMC->Gsvolu("YFEM", "TUBE", idtmed[kFe], tpar, 3);
1450 gMC->Gspos("YFEM", 1, "YAEM", 0., 0., 0., 0, "ONLY");
1451
1452//
1453
1454 dz=zvac12+50.;
1455 gMC->Gspos("YAEM", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1456
1457
1458//
1459//
1460// 4th section: vacuum system
1461//
1462// up to closing cone
a0cb6c86 1463 r3V=r3-dr23+dVacuS;
1464
5aba2f60 1465 cpar0[0]=(zvac11-zvac9)/2;
a0cb6c86 1466 cpar0[1]=r3V-dVacuS;
1467 cpar0[2]=r3V;
5aba2f60 1468 cpar0[3]=cpar0[1]+2.*cpar0[0]*TMath::Tan(thetaOpen3);
1469 cpar0[4]=cpar0[2]+2.*cpar0[0]*TMath::Tan(thetaOpen3);
1470 gMC->Gsvolu("YV31", "CONE", idtmed[kSteel+40], cpar0, 5);
1471//
1472// insulation
1473 cpar[0]=cpar0[0];
1474 cpar[1]=cpar0[1]+dTubeS;
1475 cpar[2]=cpar0[1]+dTubeS+dInsuS;
1476 cpar[3]=cpar0[3]+dTubeS;
1477 cpar[4]=cpar0[3]+dTubeS+dInsuS;
1478 gMC->Gsvolu("YI31", "CONE", idtmed[kInsulation+40], cpar, 5);
1479 gMC->Gspos("YI31", 1, "YV31", 0., 0., 0., 0, "ONLY");
1480//
1481// clearance
1482 cpar[1]=cpar0[2]-dProtS-dFreeS;
1483 cpar[2]=cpar0[2]-dProtS;
1484 cpar[3]=cpar0[4]-dProtS-dFreeS;
1485 cpar[4]=cpar0[4]-dProtS;
1486 gMC->Gsvolu("YP31", "CONE", idtmed[kVacuum+40], cpar, 5);
1487 gMC->Gspos("YP31", 1, "YV31", 0., 0., 0., 0, "ONLY");
1488
1489 dz=-dl+cpar[0];
1490 gMC->Gspos("YV31", 1, "YMO4", 0., 0., dz, 0, "ONLY");
1491
1492//
1493// begin Fluka
a0cb6c86 1494 flukaGeom->Comment("4th part: Beam pipe lateral structure");
3a685df6 1495 for (i=0; i<7; i++) fieldsA[i] = "NF";
a0cb6c86 1496
1497 rf1[0]=0.; rf2[0]=0.;
1498
1499 rf1[1]=cpar0[1]; rf2[1]=rf1[1]+dHorZ*TMath::Tan(thetaOpen3);
1500
1501 rf1[2]=rf1[1]+dTubeS; rf1[3]=rf1[2]+dInsuS; rf1[4]=rf1[3]+dEnveS;
1502 rf1[5]=rf1[4]+dFreeS; rf1[6]=r3;
1503
1504 rf2[2]=rf2[1]+dTubeS; rf2[3]=rf2[2]+dInsuS; rf2[4]=rf2[3]+dEnveS;
1505 rf2[5]=rf2[4]+dFreeS; rf2[6]=r3;
1506
1507 flukaGeom->OnionCone(rf1, rf2, 7 , zvac9 , zvac9+dHorZ, posfluka, materialsA, fieldsA, cutsA);
1508
5aba2f60 1509 rf1[0]=0.; rf2[0]=0.;
5aba2f60 1510
a0cb6c86 1511 rf1[1]=rf2[1]; rf2[1]=rf1[1]+(zvac10-zvac9-dHorZ)*TMath::Tan(thetaOpen3);
1512
5aba2f60 1513 rf1[2]=rf1[1]+dTubeS; rf1[3]=rf1[2]+dInsuS; rf1[4]=rf1[3]+dEnveS;
1514 rf1[5]=rf1[4]+dFreeS; rf1[6]=r3;
a0cb6c86 1515
5aba2f60 1516 rf2[2]=rf2[1]+dTubeS; rf2[3]=rf2[2]+dInsuS; rf2[4]=rf2[3]+dEnveS;
1517 rf2[5]=rf2[4]+dFreeS; rf2[6]=r10;
1518
5aba2f60 1519
a0cb6c86 1520 flukaGeom->OnionCone(rf1, rf2, 7 , zvac9+dHorZ, zvac10, posfluka, materialsA, fieldsA, cutsA);
5aba2f60 1521
1522 rf1[0]=0.; rf2[0]=0.;
1523 rf1[1]=rf2[1]; rf2[1]=rf1[1]+(zvac11-zvac10)*TMath::Tan(thetaOpen3);
1524
1525 rf1[2]=rf1[1]+dTubeS; rf1[3]=rf1[2]+dInsuS; rf1[4]=rf1[3]+dEnveS;
1526 rf1[5]=rf1[4]+dFreeS; rf1[6]=r10;
1527 rf2[2]=rf2[1]+dTubeS; rf2[3]=rf2[2]+dInsuS; rf2[4]=rf2[3]+dEnveS;
1528 rf2[5]=rf2[4]+dFreeS; rf2[6]=r11;
1529
1530 flukaGeom->OnionCone(rf1, rf2, 7 , zvac10, zvac11, posfluka, materialsA, fieldsA, cutsA);
5aba2f60 1531//
1532// end Fluka
1533
1534//
1535// closing cone
1536 cpar0[0]=(zvac12-zvac11)/2;
a0cb6c86 1537 cpar0[1]=r3V-dVacuS+(zvac11-zvac9)*TMath::Tan(thetaOpen3);
1538 cpar0[2]=r3V +(zvac11-zvac9)*TMath::Tan(thetaOpen3);
5aba2f60 1539 cpar0[3]=rVacu;
1540 cpar0[4]=rAbs;
1541 gMC->Gsvolu("YV32", "CONE", idtmed[kSteel+40], cpar0, 5);
1542//
1543// insulation
1544 cpar[0]=cpar0[0];
1545 cpar[1]=cpar0[1]+dTubeS;
1546 cpar[2]=cpar0[1]+dTubeS+dInsuS;
1547 cpar[3]=cpar0[3]+dTubeS;
1548 cpar[4]=cpar0[3]+dTubeS+dInsuS;
1549 gMC->Gsvolu("YI32", "CONE", idtmed[kInsulation+40], cpar, 5);
1550 gMC->Gspos("YI32", 1, "YV32", 0., 0., 0., 0, "ONLY");
1551//
1552// clearance
1553 cpar[1]=cpar0[2]-dProtS-dFreeS;
1554 cpar[2]=cpar0[2]-dProtS;
1555 cpar[3]=cpar0[4]-dProtS-dFreeS;
1556 cpar[4]=cpar0[4]-dProtS;
1557 gMC->Gsvolu("YP32", "CONE", idtmed[kVacuum+40], cpar, 5);
1558 gMC->Gspos("YP32", 1, "YV32", 0., 0., 0., 0, "ONLY");
1559
1560 dz=dl-cpar[0];
1561 gMC->Gspos("YV32", 1, "YMO4", 0., 0., dz, 0, "ONLY");
1562//
1563//
1564// MUON trigger wall
1565//
1566 tpar[0] = 50.;
1567 tpar[1] = 310.;
1568 tpar[2] = (zFilterOut - zFilterIn) / 2.;
1569 gMC->Gsvolu("YFIM", "TUBE", idtmed[kFe+40], tpar, 3);
1570 dz = (zFilterIn + zFilterOut) / 2.;
1571 tpar[2] -= 10.;
1572 gMC->Gsvolu("YFII","TUBE", idtmed[kFe], tpar, 3);
1573 gMC->Gspos("YFII", 1, "YFIM", 0., 0., 0., 0, "ONLY");
1574 gMC->Gspos("YFIM", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1575//
1576// Shielding close to chamber
1577//
a0cb6c86 1578//
1579 cpar[0]=(zch11-zRear)/2.;
5aba2f60 1580 cpar[1]=R11;
1581 cpar[2]=zRear*TMath::Tan(accMin);
1582 cpar[3]=R11;
1583 cpar[4]=(zRear+2.*cpar[0])*TMath::Tan(accMin);
1584 gMC->Gsvolu("YCS1", "CONE", idtmed[kNiCuW], cpar, 5);
1585 dz=zRear+cpar[0];
1586 gMC->Gspos("YCS1", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1587
a0cb6c86 1588 cpar[0]=(zvac4-zch12)/2.;
5aba2f60 1589 cpar[1]=R11;
a0cb6c86 1590 cpar[2]=zch12*TMath::Tan(accMin);
5aba2f60 1591 cpar[3]=R11;
a0cb6c86 1592 cpar[4]=(zch12+2.*cpar[0])*TMath::Tan(accMin);
1593 gMC->Gsvolu("YCS3", "CONE", idtmed[kNiCuW], cpar, 5);
5aba2f60 1594 dz=zvac4-cpar[0];
a0cb6c86 1595 gMC->Gspos("YCS3", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1596
5aba2f60 1597
a0cb6c86 1598// Recess station 1
1599
1600 cpar[0]=(zch12-zch11)/2.;
5aba2f60 1601 cpar[1]=R11;
a0cb6c86 1602 cpar[2]=18.;
5aba2f60 1603 cpar[3]=R11;
e2e83b79 1604 cpar[4]=17.9;
a0cb6c86 1605 gMC->Gsvolu("YCS2", "CONE", idtmed[kAir], cpar, 5);
1606 dz=zch11+cpar[0];
1607 gMC->Gspos("YCS2", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1608
1609 Float_t ptubs[5];
1610 ptubs[0] = R11;
e2e83b79 1611 ptubs[1] = 17.9;
a0cb6c86 1612 ptubs[2] = 0.;
1613// phi_min, phi_max
1614 ptubs[3] = 0.;
1615 ptubs[4] = 90.;
1616 gMC->Gsvolu("YCR0", "TUBS", idtmed[kNiCuW], ptubs, 0);
1617 Int_t idrotm[1799];
1618
1619 AliMatrix(idrotm[1701],90., 0., 90., 90., 0., 0.);
1620 AliMatrix(idrotm[1702],90., 90., 90., 180., 0., 0.);
1621 AliMatrix(idrotm[1703],90., 180., 90., 270., 0., 0.);
1622 AliMatrix(idrotm[1704],90., 270., 90., 0., 0., 0.);
1623 Int_t ipos;
1624
1625 dz=-cpar[0];
1626// 1.
1627 ptubs[2]=6.5/2.;
1628 dz+=ptubs[2];
1629 gMC->Gsposp("YCR0", 1, "YCS2", 0., 0., dz, idrotm[1701], "ONLY", ptubs, 5);
1630 gMC->Gsposp("YCR0", 2, "YCS2", 0., 0., dz, idrotm[1703], "ONLY", ptubs, 5);
1631 dz+=ptubs[2];
1632 dz+=1.5;
1633// 2.
1634 ptubs[2]=5.0/2.;
1635 dz+=ptubs[2];
1636 gMC->Gsposp("YCR0", 3, "YCS2", 0., 0., dz, idrotm[1702], "ONLY", ptubs, 5);
1637 gMC->Gsposp("YCR0", 4, "YCS2", 0., 0., dz, idrotm[1704], "ONLY", ptubs, 5);
1638 dz+=ptubs[2];
1639 dz+=1.5;
1640// 3.
1641 ptubs[2]=5.0/2.;
1642 dz+=ptubs[2];
1643 gMC->Gsposp("YCR0", 5, "YCS2", 0., 0., dz, idrotm[1701], "ONLY", ptubs, 5);
1644 gMC->Gsposp("YCR0", 6, "YCS2", 0., 0., dz, idrotm[1703], "ONLY", ptubs, 5);
1645 dz+=ptubs[2];
1646 dz+=1.5;
1647// 4.
1648 ptubs[2]=6.5/2.;
1649 dz+=ptubs[2];
1650 gMC->Gsposp("YCR0", 7, "YCS2", 0., 0., dz, idrotm[1702], "ONLY", ptubs, 5);
1651 gMC->Gsposp("YCR0", 8, "YCS2", 0., 0., dz, idrotm[1704], "ONLY", ptubs, 5);
1652 dz+=ptubs[2];
1653 dz+=1.5;
5aba2f60 1654
1655
a0cb6c86 1656
1657 cpar[0]=(zch21-zvac4)/2.;
5aba2f60 1658 cpar[1]=R21;
1659 cpar[2]=zvac4*TMath::Tan(accMin);
1660 cpar[3]=R21;
1661 cpar[4]=(zvac4+2.*cpar[0])*TMath::Tan(accMin);
1662 gMC->Gsvolu("YCS4", "CONE", idtmed[kNiCuW], cpar, 5);
1663 dz=zvac4+cpar[0];
1664 gMC->Gspos("YCS4", 1, "ALIC", 0., 0., dz, 0, "ONLY");
5aba2f60 1665
a0cb6c86 1666 cpar[0]=(zvac6-zch22)/2.;
5aba2f60 1667 cpar[1]=R21;
a0cb6c86 1668 cpar[2]=zch22*TMath::Tan(accMin);
5aba2f60 1669 cpar[3]=R21;
a0cb6c86 1670 cpar[4]=(zch22+2.*cpar[0])*TMath::Tan(accMin);
1671 gMC->Gsvolu("YCS6", "CONE", idtmed[kNiCuW], cpar, 5);
5aba2f60 1672 dz=zvac6-cpar[0];
a0cb6c86 1673 gMC->Gspos("YCS6", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1674
1675// Recess station 2
1676
1677 cpar[0]=(zch22-zch21)/2.;
5aba2f60 1678 cpar[1]=R21;
a0cb6c86 1679 cpar[2]=23.;
5aba2f60 1680 cpar[3]=R21;
a0cb6c86 1681 cpar[4]=23.;
1682 gMC->Gsvolu("YCS5", "CONE", idtmed[kAir], cpar, 5);
1683 dz=zch21+cpar[0];
1684 gMC->Gspos("YCS5", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1685
1686 ptubs[0] = R21;
1687 ptubs[1] = 23;
1688 ptubs[2] = 0.;
1689 ptubs[3] = 0.;
1690 ptubs[4] = 90.;
1691 gMC->Gsvolu("YCR1", "TUBS", idtmed[kNiCuW], ptubs, 0);
1692
1693 dz=-cpar[0];
1694// 1.
1695 ptubs[2]=7.5/2.;
1696 dz+=ptubs[2];
1697 gMC->Gsposp("YCR1", 1, "YCS5", 0., 0., dz, idrotm[1701], "ONLY", ptubs, 5);
1698 gMC->Gsposp("YCR1", 2, "YCS5", 0., 0., dz, idrotm[1703], "ONLY", ptubs, 5);
1699 dz+=ptubs[2];
1700 dz+=1.5;
1701// 2.
1702 ptubs[2]=6.0/2.;
1703 dz+=ptubs[2];
1704 gMC->Gsposp("YCR1", 3, "YCS5", 0., 0., dz, idrotm[1702], "ONLY", ptubs, 5);
1705 gMC->Gsposp("YCR1", 4, "YCS5", 0., 0., dz, idrotm[1704], "ONLY", ptubs, 5);
1706 dz+=ptubs[2];
1707 dz+=1.5;
1708// 3.
1709 ptubs[2]=6.0/2.;
1710 dz+=ptubs[2];
1711 gMC->Gsposp("YCR1", 5, "YCS5", 0., 0., dz, idrotm[1701], "ONLY", ptubs, 5);
1712 gMC->Gsposp("YCR1", 6, "YCS5", 0., 0., dz, idrotm[1703], "ONLY", ptubs, 5);
1713 dz+=ptubs[2];
1714 dz+=1.5;
1715// 4.
1716 ptubs[2]=7.5/2.;
1717 dz+=ptubs[2];
1718 gMC->Gsposp("YCR1", 7, "YCS5", 0., 0., dz, idrotm[1702], "ONLY", ptubs, 5);
1719 gMC->Gsposp("YCR1", 8, "YCS5", 0., 0., dz, idrotm[1704], "ONLY", ptubs, 5);
1720 dz+=ptubs[2];
1721 dz+=1.5;
1722
1723
1724//
1725// begin Fluka
1726 flukaGeom->Cone(R11, R11, -1., -1.,
1727 zRear, zch11, posfluka,"NIW", "MF", "$SHS");
1728
1729 flukaGeom->Cone(R11, R11, -1., -1.,
1730 zch11, zch12, posfluka,"AIR", "MF", "$SHS");
1731
1732 flukaGeom->Cone(R11, R11, -1., -1.,
1733 zch12, zvac4, posfluka,"NIW", "MF", "$SHS");
1734
1735 flukaGeom->Cone(R21, R21, -1., -1.,
1736 zvac4, zch21, posfluka,"NIW", "MF", "$SHS");
1737 flukaGeom->Cone(R21, R21, -1., -1.,
1738 zch21, zch22, posfluka,"AIR", "MF", "$SHS");
1739 flukaGeom->Cone(R21, R21, -1., -1.,
1740 zch22, zvac6, posfluka,"NIW", "MF", "$SHS");
1741
1742
1743 flukaGeom->Finish();
1744
1745//
1746// end Fluka
5aba2f60 1747//
1748// Outer Pb Cone
a0cb6c86 1749
5aba2f60 1750 if (fPbCone) {
a0cb6c86 1751
1752 par0[0] = 0.;
1753 par0[1] = 360.;
1754 par0[2] = 10.;
1755/*
1756// start of cone
1757 par0[3] = zConeE;
1758 par0[4] = 30.;
1759 par0[5] = 30.01;
1760// 3rd station
1761 par0[6] = zch31;
1762 par0[7] = 30.;
1763 par0[8] = 30.+(zch31-zConeE)*TMath::Tan(thetaOpenPbO);
1764
1765 par0[9] = zch31;
1766 par0[10] = 30.0;
1767 par0[11] = par0[8]-1.;
5aba2f60 1768
a0cb6c86 1769
1770 par0[12] = zch32;
1771 par0[13] = 30.0;
1772 par0[14] = par0[11];
1773*/
1774 par0[ 3] = zch32;
1775 par0[ 4] = 30.;
1776 par0[ 5] = 30.+(zch32-zConeE)*TMath::Tan(thetaOpenPbO);
1777
1778// 4th station
1779 par0[ 6] = zch41;
1780 par0[ 7] = 30.;
1781 par0[ 8] = 30.+(zch41-zConeE)*TMath::Tan(thetaOpenPbO);
1782
1783 par0[ 9] = zch41;
1784 par0[10] = 30.;
1785 par0[11] = 37.5;
1786 // recess erice2000
1787 par0[12] = zch42;
1788 par0[13] = 30.;
1789 par0[14] = par0[11];
1790
1791 par0[15] = zch42;
1792 par0[16] = 30.;
1793 par0[17] = 30.+(zch42-zConeE)*TMath::Tan(thetaOpenPbO);
1794
1795// 5th station
1796 par0[18] = zch51;
1797 par0[19] = 30.;
1798 par0[20] = 30.+(zch51-zConeE)*TMath::Tan(thetaOpenPbO);
1799
1800 par0[21] = zch51;
1801 par0[22] = 30.;
1802 par0[23] = 37.5; // recess erice2000
1803
1804 par0[24] = zch52;
1805 par0[25] = 30.;
1806 par0[26] = par0[23];
1807
1808 par0[27] = zch52;
1809 par0[28] = 30.;
1810 par0[29] = 30.+(zch52-zConeE)*TMath::Tan(thetaOpenPbO);
1811// end of cone
1812 par0[30] = zFilterIn;
1813 par0[31] = 30.;
1814 par0[32] = par0[29];
1815//
1816 gMC->Gsvolu("YOPB", "PCON", idtmed[kPb], par0, 33);
1817 dz=0.;
5aba2f60 1818 gMC->Gspos("YOPB", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1819 }
1820}
1821
1822void AliSHILvF::Init()
1823{
1824 //
1825 // Initialise the muon shield after it has been built
1826 //
1827 Int_t i;
1828 //
1829 printf("\n");
1830 for(i=0;i<35;i++) printf("*");
1831 printf(" SHILvF_INIT ");
1832 for(i=0;i<35;i++) printf("*");
1833 printf("\n");
1834 //
1835 // Here the SHIL initialisation code (if any!)
1836 for(i=0;i<80;i++) printf("*");
1837 printf("\n");
1838}