]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STRUCT/AliSHILv0.cxx
Tempory MUON version which has full signal generation (summable digits) and geometry...
[u/mrichter/AliRoot.git] / STRUCT / AliSHILv0.cxx
CommitLineData
6523e275 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$
39311070 18Revision 1.10 2000/10/02 21:28:15 fca
19Removal of useless dependecies via forward declarations
20
94de3818 21Revision 1.9 2000/09/12 17:00:45 morsch
22Overlaps in YMO3 and YMO4 (side-effect from last update only) corrected.
23
949f3b29 24Revision 1.8 2000/09/12 16:11:43 morsch
25- Bug in volume YGO2 corrected: PCON started with twice the same z-value.
26- Recesses for chambers added to outer Pb cone.
27
404559e5 28Revision 1.7 2000/06/15 09:40:31 morsch
29Obsolete typedef keyword removed
30
56f14ac2 31Revision 1.6 2000/06/13 15:01:38 morsch
32Make kind of heavy shielding material (Pb, NiCuW) dependent on presence of outer cone.
33
bb03e53c 34Revision 1.5 2000/06/12 19:40:00 morsch
35New structure of beam pipe and heating jacket.
36Optional outer Pb cone added. Not yet compatible with chamber inner radii.
37
2b32db74 38Revision 1.4 2000/04/03 08:13:40 fca
39Introduce extra scope for non ANSI compliant C++ compilers
40
74c0d076 41Revision 1.3 2000/01/17 10:29:30 morsch
42Overlap between Shield and Absorber due to limited numerical precision removed
43by displacing the Shield by epsilon = 0.01 cm.
44
f0c34869 45Revision 1.2 2000/01/13 11:27:51 morsch
46Overlaps corrected: YCS3, YCS4; Inner radius YS21 corrected
47
6d4aaa11 48Revision 1.1 2000/01/12 15:44:03 morsch
49Standard version of SHIL
50
6523e275 51*/
52
53///////////////////////////////////////////////////////////////////////////////
54// //
55// Muon Shield Class //
56// This class contains a description of the muon shield //
57// //
58//Begin_Html
59/*
60<img src="picts/AliSHILClass.gif">
61*/
62//End_Html
63// //
64// //
65///////////////////////////////////////////////////////////////////////////////
66
67#include "AliSHILv0.h"
68#include "AliRun.h"
94de3818 69#include "AliMC.h"
6523e275 70#include "AliConst.h"
71
72ClassImp(AliSHILv0)
73
74//_____________________________________________________________________________
75AliSHILv0::AliSHILv0()
76{
77 //
78 // Default constructor for muon shield
79 //
80}
81
82//_____________________________________________________________________________
83AliSHILv0::AliSHILv0(const char *name, const char *title)
84 : AliSHIL(name,title)
85{
86 //
87 // Standard constructor for muon shield
88 //
89 SetMarkerColor(7);
90 SetMarkerStyle(2);
91 SetMarkerSize(0.4);
2b32db74 92 // Pb cone not yet compatible with muon chamber inner radii
93 // Switched off by default
94 fPbCone=kFALSE;
6523e275 95}
96
97//_____________________________________________________________________________
98void AliSHILv0::CreateGeometry()
99{
100 //
101 // Build muon shield geometry
102 //
103 //
104 //Begin_Html
105 /*
106 <img src="picts/AliSHILv0.gif">
107 */
108 //End_Html
109 //Begin_Html
110 /*
111 <img src="picts/AliSHILv0Tree.gif">
112 */
113 //End_Html
114
2b32db74 115 Float_t cpar[5], cpar0[5], tpar[3], par1[39], par2[27], par3[27],
404559e5 116 par4[21], par0[45];
2b32db74 117 Float_t dz, dZ;
6523e275 118
2b32db74 119 Int_t *idtmed = fIdtmed->GetArray()-1699;
120
121#include "ABSOSHILConst.h"
122#include "SHILConst.h"
6523e275 123
56f14ac2 124enum {kC=1705, kAl=1708, kFe=1709, kCu=1710, kW=1711, kPb=1712,
2b32db74 125 kNiCuW=1720, kVacuum=1714, kAir=1714, kConcrete=1716,
126 kPolyCH2=1717, kSteel=1709, kInsulation=1713};
bb03e53c 127//
128// Material of the rear part of the shield
129 Int_t iHeavy=kNiCuW;
130 if (fPbCone) iHeavy=kPb;
131
2b32db74 132
6523e275 133//
134// Mother volume
135//
2b32db74 136 Float_t dRear1=dRear;
137
138 Float_t zstart=zRear-dRear1;
139
6523e275 140 par0[0] = 0.;
141 par0[1] = 360.;
142 par0[2] = 13.;
143
f0c34869 144 Float_t dl=(zvac12-zstart)/2.;
145 dz=zstart+dl;
6523e275 146//
147 par0[3] = -dl;
148 par0[4] = 0.;
2b32db74 149 par0[5] = zstart * TMath::Tan(accMin);
6523e275 150
2b32db74 151 par0[6] = -dl+dRear1;
6523e275 152 par0[7] = 0.;
2b32db74 153 par0[8] = zRear * TMath::Tan(accMin);
6523e275 154
2b32db74 155 par0[9] = -dl+dRear1;
6523e275 156 par0[10] = 0.;
157 par0[11] = R11;
158
159 par0[12] = -dz+zvac4;
160 par0[13] = 0.;
161 par0[14] = R11;
162
163 par0[15] = -dz+zvac4;
164 par0[16] = 0.;
165 par0[17] = R21;
166
167 par0[18] = -dz+zvac6;
168 par0[19] = 0.;
169 par0[20] = R21;
170
171 par0[21] = -dz+zvac6;
172 par0[22] = 0.;
2b32db74 173 par0[23] = zvac6 * TMath::Tan(accMin);
6523e275 174
2b32db74 175 par0[24] = -dz+zConeE;
6523e275 176 par0[25] = 0.;
177 par0[26] = 30.;
178
179 par0[27] = -dz+zvac10;
180 par0[28] = 0.;
181 par0[29] = 30.;
182
183 par0[30] = -dz+zvac10;
184 par0[31] = 0.;
185 par0[32] = R42;
186
187 par0[33] = -dz+zvac11;
188 par0[34] = 0.;
189 par0[35] = R42;
190
191 par0[36] = -dz+zvac11;
192 par0[37] = 0.;
193 par0[38] = R43;
194
195 par0[39] = -dz+zvac12;
196 par0[40] = 0.;
197 par0[41] = R43;
198
2b32db74 199 gMC->Gsvolu("YMOT", "PCON", idtmed[kVacuum], par0, 42);
f0c34869 200 dz=zstart+dl;
6523e275 201 gMC->Gspos("YMOT", 1, "ALIC", 0., 0., dz, 0, "ONLY");
202//
203
2b32db74 204 dZ=-dl;
6523e275 205
206//
207// First section: bellows below and behind front absorber
208//
209//
6523e275 210 par1[0] = 0.;
211 par1[1] = 360.;
212 par1[2] = 12.;
f0c34869 213 dl=(zvac4-zstart)/2.;
6523e275 214
215 par1[3] = -dl;
2b32db74 216 par1[4] = rAbs+(zstart-zOpen) * TMath::Tan(thetaOpen1);
217 par1[5] = zstart * TMath::Tan(accMin);
6523e275 218
f0c34869 219 par1[6] = -dl+zvac1-zstart;
2b32db74 220 par1[7] = rAbs+ (zvac1-zOpen) * TMath::Tan(thetaOpen1);
221 par1[8] = zvac1 * TMath::Tan(accMin);
6523e275 222
223 par1[9] = par1[6]+dr11;
224 par1[10] = par1[7]+dr11;
2b32db74 225 par1[11] = (zvac1+dr11) * TMath::Tan(accMin);
6523e275 226
2b32db74 227 par1[12] = -dl+dRear1;
6523e275 228 par1[13] = par1[10];
2b32db74 229 par1[14] = zRear * TMath::Tan(accMin);
6523e275 230
2b32db74 231 par1[15] = -dl+dRear1;
6523e275 232 par1[16] = par1[10];
233 par1[17] = R11;
234
f0c34869 235 par1[18] = -dl+(zvac1+dr11+dB1-zstart);
6523e275 236 par1[19] = par1[16];
237 par1[20] = R11;
238
239 par1[21] = par1[18]+dr12;
240 par1[22] = par1[19]+dr12;
241 par1[23] = R11;
242
243 par1[24] = par1[21]+dF1;
244 par1[25] = par1[22];
245 par1[26] = R11;
246
247 par1[27] = par1[24]+dr12;
248 par1[28] = par1[25]-dr12;
249 par1[29] = R11;
250
251 par1[30] = par1[27]+dB1;
252 par1[31] = par1[28];
253 par1[32] = R11;
254
255 par1[33] = par1[30]+dr13;
256 par1[34] = par1[31]-dr13;
257 par1[35] = R11;
258
f0c34869 259 par1[36] = -dl+zvac4-zstart;
2b32db74 260 par1[37] = par1[34]+(zvac4-zvac3)*TMath::Tan(thetaOpen2);
6523e275 261 par1[38] = R11;
262
263 Float_t r2=par1[34];
2b32db74 264 Float_t rBox=par1[31]-0.1;
6523e275 265
2b32db74 266 gMC->Gsvolu("YGO1", "PCON", idtmed[kNiCuW], par1, 39);
74c0d076 267 { // Begin local scope for i
2b32db74 268 for (Int_t i=4; i<38; i+=3) par1[i] = 0;
74c0d076 269 } // End local scope for i
2b32db74 270 gMC->Gsvolu("YMO1", "PCON", idtmed[kVacuum+40], par1, 39);
6523e275 271 gMC->Gspos("YGO1", 1, "YMO1", 0., 0., 0., 0, "ONLY");
2b32db74 272 dZ+=dl;
273 gMC->Gspos("YMO1", 1, "YMOT", 0., 0., dZ, 0, "ONLY");
274 dZ+=dl;
6523e275 275
276//
277// Steel envelope
278 tpar[0]=R11-dRSteel1;
279 tpar[1]=R11;
2b32db74 280 tpar[2]=dl-dRear1/2;
281 gMC->Gsvolu("YSE1", "TUBE", idtmed[kNiCuW], tpar, 3);
6523e275 282 dz=dl-tpar[2];
2b32db74 283 gMC->Gspos("YSE1", 1, "YGO1", 0., 0., dz, 0, "ONLY");
6523e275 284//
285// 1st section: vacuum system
286//
287//
288// Bellow 1
289//
290 tpar[0]=rB1;
291 tpar[1]=rB1+hB1;
292 tpar[2]=eB1/2.;
2b32db74 293 gMC->Gsvolu("YB11", "TUBE", idtmed[kSteel+40], tpar, 3);
6523e275 294 Float_t dl1=tpar[2];
295
296 tpar[0]=rB1+hB1-eB1;
297 tpar[1]=rB1+hB1;
298 tpar[2]=(lB1/2.-2.*eB1)/2.;
2b32db74 299 gMC->Gsvolu("YB12", "TUBE", idtmed[kSteel+40], tpar, 3);
6523e275 300 Float_t dl2=tpar[2];
301
302 tpar[0]=rB1-eB1;
303 tpar[1]=rB1;
304 tpar[2]=lB1/8.;
2b32db74 305 gMC->Gsvolu("YB13", "TUBE", idtmed[kSteel+40], tpar, 3);
6523e275 306 Float_t dl3=tpar[2];
307
308
309 tpar[0]=0;
310 tpar[1]=rB1+hB1;
311 tpar[2]=lB1/2.;
2b32db74 312 gMC->Gsvolu("YBU1", "TUBE", idtmed[kVacuum+40], tpar, 3);
6523e275 313
314 dz=-tpar[2]+dl3;
315 gMC->Gspos("YB13", 1, "YBU1", 0., 0., dz, 0, "ONLY");
316 dz+=dl3;
317 dz+=dl1;
318 gMC->Gspos("YB11", 1, "YBU1", 0., 0., dz, 0, "ONLY");
319 dz+=dl1;
320 dz+=dl2;
321 gMC->Gspos("YB12", 1, "YBU1", 0., 0., dz, 0, "ONLY");
322 dz+=dl2;
323 dz+=dl1;
324 gMC->Gspos("YB11", 2, "YBU1", 0., 0., dz, 0, "ONLY");
325 dz+=dl1;
326 dz+=dl3;
327 gMC->Gspos("YB13", 2, "YBU1", 0., 0., dz, 0, "ONLY");
328
329
330 tpar[0]=0;
331 tpar[1]=rB1+hB1;
332 tpar[2]=10.*lB1/2.;
2b32db74 333 gMC->Gsvolu("YBM1", "TUBE", idtmed[kVacuum+40], tpar, 3);
6523e275 334 dz=-tpar[2]+lB1/2.;
74c0d076 335 { // Begin local scope for i
2b32db74 336 for (Int_t i=0; i<10; i++) {
337 gMC->Gspos("YBU1", i+1 , "YBM1", 0., 0., dz, 0, "ONLY");
338 dz+=lB1;
339 }
74c0d076 340 } // End local scope for i
f0c34869 341 dz=-dl+(zvac1-zstart)+dr11+tpar[2];
6523e275 342 gMC->Gspos("YBM1", 1, "YMO1", 0., 0., dz, 0, "ONLY");
343
2b32db74 344 dz=dl-dr13-(zvac4-zvac3)-tpar[2];
6523e275 345 gMC->Gspos("YBM1", 2, "YMO1", 0., 0., dz, 0, "ONLY");
346
347//
348// Flange
349
350 tpar[0]=0;
351 tpar[1]=rF1;
352 tpar[2]=dF1/2.;
2b32db74 353 gMC->Gsvolu("YFM1", "TUBE", idtmed[kVacuum+40], tpar, 3);
6523e275 354
2b32db74 355 tpar[0]=rF1-2.;
6523e275 356 tpar[1]=rF1;
357 tpar[2]=dF1/2.;
2b32db74 358 gMC->Gsvolu("YF11", "TUBE", idtmed[kSteel+40], tpar, 3);
6523e275 359 gMC->Gspos("YF11", 1, "YFM1", 0., 0., 0., 0, "ONLY");
360
361 tpar[0]=rB1;
2b32db74 362 tpar[1]=rF1-2.;
363 tpar[2]=dFlange/2.;
364 gMC->Gsvolu("YF12", "TUBE", idtmed[kSteel+40], tpar, 3);
6523e275 365 dz=-dF1/2.+tpar[2];
366 gMC->Gspos("YF12", 1, "YFM1", 0., 0., dz, 0, "ONLY");
367 dz= dF1/2.-tpar[2];
368 gMC->Gspos("YF12", 2, "YFM1", 0., 0., dz, 0, "ONLY");
369
f0c34869 370 dz=-dl+(zvac2-zstart);
6523e275 371 gMC->Gspos("YFM1", 2, "YMO1", 0., 0., dz, 0, "ONLY");
372
6523e275 373//
374// pipe between flange and bellows
2b32db74 375 tpar[0]=rB1-dTubeS;
6523e275 376 tpar[1]=rB1;
377 tpar[2]=2.*(dB1+dr12-10.*lB1)/4.;
2b32db74 378 gMC->Gsvolu("YPF1", "TUBE", idtmed[kSteel+40], tpar, 3);
379
f0c34869 380 dz=-dl+(zvac2-zstart)-dF1/2.-tpar[2];
6523e275 381 gMC->Gspos("YPF1", 1, "YMO1", 0., 0., dz, 0, "ONLY");
f0c34869 382 dz=-dl+(zvac2-zstart)+dF1/2.+tpar[2];
6523e275 383 gMC->Gspos("YPF1", 2, "YMO1", 0., 0., dz, 0, "ONLY");
384
6523e275 385// pipe and heating jackets outside bellows
386//
387// left side
f0c34869 388 cpar0[0]=(zvac1-zstart)/2;
2b32db74 389 cpar0[1]=rVacu+(zstart-zOpen)*TMath::Tan(thetaOpen1)-0.05;
390 cpar0[2]=rAbs +(zstart-zOpen)*TMath::Tan(thetaOpen1);
391 cpar0[3]=cpar0[1]+2.*cpar0[0]*TMath::Tan(thetaOpen1);
392 cpar0[4]=cpar0[2]+2.*cpar0[0]*TMath::Tan(thetaOpen1);
393 gMC->Gsvolu("YV11", "CONE", idtmed[kSteel+40], cpar0, 5);
6523e275 394//
395// insulation
2b32db74 396 dTubeS=0.15;
6523e275 397 cpar[0]=cpar0[0];
2b32db74 398 cpar[1]=cpar0[1]+0.15;
399 cpar[2]=cpar0[1]+0.65;
400 cpar[3]=cpar0[3]+0.15;
401 cpar[4]=cpar0[3]+0.65;
402 gMC->Gsvolu("YI11", "CONE", idtmed[kInsulation+40], cpar, 5);
6523e275 403 gMC->Gspos("YI11", 1, "YV11", 0., 0., 0., 0, "ONLY");
404//
405// clearance
2b32db74 406 cpar[1]=cpar0[1]+0.75;
407 cpar[2]=cpar0[1]+1.25;
408 cpar[3]=cpar0[3]+0.75;
409 cpar[4]=cpar0[3]+1.25;
410 gMC->Gsvolu("YP11", "CONE", idtmed[kVacuum+40], cpar, 5);
6523e275 411 gMC->Gspos("YP11", 1, "YV11", 0., 0., 0., 0, "ONLY");
412
413 dz=-dl+cpar0[0];
414 gMC->Gspos("YV11", 1, "YMO1", 0., 0., dz, 0, "ONLY");
6523e275 415// right side
2b32db74 416 dTubeS=0.35;
417 dVacuS+=0.25;
418
6523e275 419 cpar0[0]=(zvac4-zvac3)/2;
2b32db74 420 cpar0[1]=rB1;
421 cpar0[2]=cpar0[1]+dVacuS;
422
423 cpar0[3]=cpar0[1]+2.*cpar0[0]*TMath::Tan(thetaOpenB);
424 cpar0[4]=cpar0[2]+2.*cpar0[0]*TMath::Tan(thetaOpenB);
425 gMC->Gsvolu("YV12", "CONE", idtmed[kSteel], cpar0, 5);
426 Float_t r2V=cpar0[3];
6523e275 427//
428// insulation
429 cpar[0]=cpar0[0];
2b32db74 430 cpar[1]=cpar0[1]+dTubeS;
431 cpar[2]=cpar0[1]+dTubeS+dInsuS;
432 cpar[3]=cpar0[3]+dTubeS;
433 cpar[4]=cpar0[3]+dTubeS+dInsuS;
434 gMC->Gsvolu("YI12", "CONE", idtmed[kInsulation], cpar, 5);
6523e275 435 gMC->Gspos("YI12", 1, "YV12", 0., 0., 0., 0, "ONLY");
2b32db74 436
6523e275 437//
438// clearance
2b32db74 439 cpar[1]=cpar0[1]+dTubeS+dInsuS+dEnveS;
440 cpar[2]=cpar0[1]+dTubeS+dInsuS+dEnveS+dFreeS;
441 cpar[3]=cpar0[3]+dTubeS+dInsuS+dEnveS;
442 cpar[4]=cpar0[3]+dTubeS+dInsuS+dEnveS+dFreeS;
443 gMC->Gsvolu("YP12", "CONE", idtmed[kAir], cpar, 5);
6523e275 444 gMC->Gspos("YP12", 1, "YV12", 0., 0., 0., 0, "ONLY");
445
446 dz=dl-cpar0[0];
447 gMC->Gspos("YV12", 1, "YMO1", 0., 0., dz, 0, "ONLY");
6523e275 448//
449// Second Section
2b32db74 450// Between first and second bellow section
451//
6523e275 452
453 par2[0] = 0.;
454 par2[1] = 360.;
404559e5 455 par2[2] = 6.;
6523e275 456 dl=(zvac7-zvac4)/2.;
404559e5 457// recess station 2
6523e275 458 par2[3] = -dl;
2b32db74 459 par2[4] = r2+(zvac4-zvac3) * TMath::Tan(thetaOpen2);
404559e5 460 par2[5] = R21;
6523e275 461
404559e5 462 par2[6] = -dl+(zvac6-zvac4);
463 par2[7] = r2+(zvac6-zvac3) * TMath::Tan(thetaOpen2);
464 par2[8] = R21;
6523e275 465
404559e5 466 par2[9] = -dl+(zvac6-zvac4);
467 par2[10] = par2[7];
468 par2[11] = zvac6*TMath::Tan(accMin);
6523e275 469
2b32db74 470// Start of Pb section
404559e5 471 par2[12] = -dl+(zPb-zvac4);
472 par2[13] = r2+(zPb-zvac3) * TMath::Tan(thetaOpen2);
473 par2[14] = zPb*TMath::Tan(accMin);
6523e275 474
2b32db74 475//
476// end of cone following 2 deg line
404559e5 477 par2[15] = -dl+(zConeE-zvac4);
478 par2[16] = r2+(zConeE-zvac3) * TMath::Tan(thetaOpen2);
479 par2[17] = 30.;
6523e275 480
404559e5 481 par2[18] = -dl+(zvac7-zvac4);
482 par2[19] = r2+(zvac7-zvac3) * TMath::Tan(thetaOpen2);
483 par2[20] = 30.;
2b32db74 484
6523e275 485
404559e5 486 gMC->Gsvolu("YGO2", "PCON", idtmed[kNiCuW+40], par2, 21);
2b32db74 487//
488// Lead cone option replacing Tungsten
489//
490 Float_t parPb[12];
491 parPb[0] = 0.;
492 parPb[1] = 360.;
493 parPb[2] = 3.;
494 Float_t dlPb=(zvac7-zPb)/2.;
495
496 parPb[3] = -dlPb;
497 parPb[4] = 17.657;
498 parPb[5] = zPb*TMath::Tan(accMin);
499
500 parPb[6] = -dlPb+(zConeE-zPb);
501 parPb[7] = parPb[4]+(zConeE-zPb)*TMath::Tan(thetaOpenPb);
502 parPb[8] = 30.;
503
504 parPb[9] = dlPb;
505 parPb[10] = parPb[7]+(zvac7-zConeE)*TMath::Tan(thetaOpenPb);
506 parPb[11] = 30.;
949f3b29 507
508 Float_t rPbLast=parPb[10];
509
510
2b32db74 511 gMC->Gsvolu("YXO2", "PCON", idtmed[kPb], parPb, 12);
512 gMC->Gspos("YXO2", 1, "YGO2", 0., 0., (zPb-zvac4)/2., 0, "ONLY");
404559e5 513
514 parPb[4] = r2+(zPb-zvac3) * TMath::Tan(thetaOpen2);
515 parPb[5] = 17.657;
516
517 parPb[7] = r2+(zConeE-zvac3) * TMath::Tan(thetaOpen2);
518 parPb[8] = parPb[5]+(zConeE-zPb)*TMath::Tan(thetaOpenPb);
2b32db74 519
404559e5 520 parPb[10] = r2+(zvac7-zvac3) * TMath::Tan(thetaOpen2);
521 parPb[11] = parPb[8]+(zvac7-zConeE)*TMath::Tan(thetaOpenPb);
522
523 gMC->Gsvolu("YYO2", "PCON", idtmed[iHeavy+40], parPb, 12);
524 gMC->Gspos("YYO2", 1, "YGO2", 0., 0., (zPb-zvac4)/2., 0, "ONLY");
525
526
74c0d076 527 { // Begin local scope for i
2b32db74 528 for (Int_t i=4; i<23; i+=3) par2[i] = 0;
74c0d076 529 } // End local scope for i
2b32db74 530
531 gMC->Gsvolu("YMO2", "PCON", idtmed[kVacuum+40], par2, 24);
6523e275 532 gMC->Gspos("YGO2", 1, "YMO2", 0., 0., 0., 0, "ONLY");
2b32db74 533 dZ+=dl;
534 gMC->Gspos("YMO2", 1, "YMOT", 0., 0., dZ, 0, "ONLY");
535 dZ+=dl;
6523e275 536//
537// Steel envelope
538//
39311070 539// (1)
6d4aaa11 540 tpar[0]=R11-dRSteel1;
6523e275 541 tpar[1]=R21;
542 tpar[2]=2;
2b32db74 543 gMC->Gsvolu("YS21", "TUBE", idtmed[kSteel], tpar, 3);
6523e275 544 dz=-dl+tpar[2];
545 gMC->Gspos("YS21", 1, "YGO2", 0., 0., dz, 0, "ONLY");
546 dz+=tpar[2];
39311070 547// (2)
6523e275 548 tpar[0]=R21-dRSteel2;
549 tpar[1]=R21;
550 tpar[2]=(zvac6-zvac5)/2.;
2b32db74 551 gMC->Gsvolu("YS22", "TUBE", idtmed[kSteel], tpar, 3);
6523e275 552 dz+=tpar[2];
553 gMC->Gspos("YS22", 1, "YGO2", 0., 0., dz, 0, "ONLY");
554 dz+=tpar[2];
39311070 555// (3)
6523e275 556 cpar[0]=2.;
557 cpar[1]=R21-dRSteel2;
2b32db74 558 cpar[2]=zvac6 * TMath::Tan(accMin);
6523e275 559 cpar[3]=cpar[1];
2b32db74 560 cpar[4]=cpar[2]+4.*TMath::Tan(accMin);
2b32db74 561 gMC->Gsvolu("YS23", "CONE", idtmed[kSteel], cpar, 5);
6523e275 562 dz+=cpar[0];
39311070 563 gMC->Gspos("YS23", 1, "YGO2", 0., 0., dz, 0, "ONLY");
6523e275 564 dz+=cpar[0];
39311070 565// (4)
2b32db74 566 cpar[0]=(zPb-zvac6-4.)/2;
6523e275 567 cpar[2]=cpar[4];
2b32db74 568 cpar[4]=cpar[2]+2.*cpar[0]*TMath::Tan(accMin);
6523e275 569 cpar[1]=cpar[2]-dRSteel2;
570 cpar[3]=cpar[4]-dRSteel2;
571
2b32db74 572 gMC->Gsvolu("YS24", "CONE", idtmed[kSteel], cpar, 5);
6523e275 573 dz+=cpar[0];
574 gMC->Gspos("YS24", 1, "YGO2", 0., 0., dz, 0, "ONLY");
575 dz+=cpar[0];
576
39311070 577// (5)
2b32db74 578 cpar[0]=(zConeE-zPb)/2;
579 cpar[2]=cpar[4];
580 cpar[4]=cpar[2]+2.*cpar[0]*TMath::Tan(accMin);
581 cpar[1]=cpar[2]-dRSteel2;
582 cpar[3]=cpar[4]-dRSteel2;
583
584 gMC->Gsvolu("YS25", "CONE", idtmed[kSteel], cpar, 5);
585 dz=-dlPb+cpar[0];
586 gMC->Gspos("YS25", 1, "YXO2", 0., 0., dz, 0, "ONLY");
587 dz+=cpar[0];
39311070 588// (6)
6523e275 589 tpar[0]=26.;
590 tpar[1]=30.;
2b32db74 591 tpar[2]=(zvac7-zConeE)/2.;
6523e275 592
2b32db74 593 gMC->Gsvolu("YS26", "TUBE", idtmed[kSteel], tpar, 3);
6523e275 594 dz+=tpar[2];
2b32db74 595 gMC->Gspos("YS26", 1, "YXO2", 0., 0., dz, 0, "ONLY");
39311070 596 dz = -tpar[2];
597
598// Recess in steel for station 3
599//
600 tpar[0]=29.;
601 tpar[1]=30.;
602 tpar[2]=(zch32-zch31)/2.;
603 gMC->Gsvolu("YS27", "TUBE", idtmed[kAir], tpar, 3);
604 dz+=(tpar[2]+zch31-zConeE);
2b32db74 605
39311070 606 gMC->Gspos("YS27", 1, "YS26", 0., 0., dz, 0, "ONLY");
607
608//
6523e275 609//
610// 2nd section: vacuum system
2b32db74 611//
6523e275 612 cpar0[0]=(zvac7-zvac4)/2;
2b32db74 613 cpar0[1]=r2V;
614 cpar0[2]=r2V+dVacuS;
615 cpar0[3]=cpar0[1]+2.*cpar0[0]*TMath::Tan(thetaOpenB);
616 cpar0[4]=cpar0[2]+2.*cpar0[0]*TMath::Tan(thetaOpenB);
617 gMC->Gsvolu("YV21", "CONE", idtmed[kSteel+40], cpar0, 5);
6523e275 618//
619// insulation
620 cpar[0]=cpar0[0];
2b32db74 621 cpar[1]=cpar0[1]+dTubeS;
622 cpar[2]=cpar0[1]+dTubeS+dInsuS;
623 cpar[3]=cpar0[3]+dTubeS;
624 cpar[4]=cpar0[3]+dTubeS+dInsuS;
625 gMC->Gsvolu("YI21", "CONE", idtmed[kInsulation+40], cpar, 5);
6523e275 626 gMC->Gspos("YI21", 1, "YV21", 0., 0., 0., 0, "ONLY");
627//
628// clearance
2b32db74 629 cpar[1]=cpar0[1]+dTubeS+dInsuS+dEnveS;
630 cpar[2]=cpar0[1]+dTubeS+dInsuS+dEnveS+dFreeS;
631 cpar[3]=cpar0[3]+dTubeS+dInsuS+dEnveS;
632 cpar[4]=cpar0[3]+dTubeS+dInsuS+dEnveS+dFreeS;
633 gMC->Gsvolu("YP21", "CONE", idtmed[kAir+40], cpar, 5);
6523e275 634 gMC->Gspos("YP21", 1, "YV21", 0., 0., 0., 0, "ONLY");
635
636 dz=0.;
637 gMC->Gspos("YV21", 1, "YMO2", 0., 0., dz, 0, "ONLY");
638
2b32db74 639
6523e275 640//
641// Third Section: Bellows and Flange
642//
643 par3[0] = 0.;
644 par3[1] = 360.;
645 par3[2] = 8.;
646 dl=(zvac9-zvac7)/2.;
647
648 par3[3] = -dl;
2b32db74 649 par3[4] = r2+(zvac7-zvac3) * TMath::Tan(thetaOpen2);
6523e275 650 par3[5] = 30.;
651
652 par3[6] = -dl+dr21;
653 par3[7] = par3[4]+dr21;
654 par3[8] = 30.;
655
656 par3[9] = par3[6]+dB2;
657 par3[10] = par3[7];
658 par3[11] = 30.;
659
660 par3[12] = par3[9]+dr22;
661 par3[13] = par3[10]+dr22;
662 par3[14] = 30.;
663
664 par3[15] = par3[12]+dF2;
665 par3[16] = par3[13];
666 par3[17] = 30.;
667
668 par3[18] = par3[15]+dr22;
669 par3[19] = par3[16]-dr22;
670 par3[20] = 30.;
671
672 par3[21] = par3[18]+dB2;
673 par3[22] = par3[19];
674 par3[23] = 30.;
675
676 par3[24] = par3[21]+dr23;
677 par3[25] = par3[22]-dr23;
678 par3[26] = 30.;
2b32db74 679//
680 rBox=par3[22]-0.1;
6523e275 681 Float_t r3=par3[25];
682
bb03e53c 683 gMC->Gsvolu("YGO3", "PCON", idtmed[iHeavy+40], par3, 27);
2b32db74 684
685 parPb[0] = dl;
949f3b29 686 parPb[1] = rPbLast;
2b32db74 687 parPb[2] = 30;
688 parPb[3] = parPb[1]+2.*dl*TMath::Tan(thetaOpenPb);
689 parPb[4] = 30;
690 gMC->Gsvolu("YXO3", "CONE", idtmed[kPb], parPb, 5);
691 gMC->Gspos("YXO3", 1, "YGO3", 0., 0., 0., 0, "ONLY");
74c0d076 692 { // Begin local scope for i
2b32db74 693 for (Int_t i=4; i<26; i+=3) par3[i] = 0;
74c0d076 694 } // End local scope for i
2b32db74 695 gMC->Gsvolu("YMO3", "PCON", idtmed[kVacuum+40], par3, 27);
6523e275 696 gMC->Gspos("YGO3", 1, "YMO3", 0., 0., 0., 0, "ONLY");
697
698//
699// Steel envelope
700 tpar[0]=26;
701 tpar[1]=30;
702 tpar[2]=dl;
2b32db74 703 gMC->Gsvolu("YS31", "TUBE", idtmed[kSteel], tpar, 3);
704 gMC->Gspos("YS31", 1, "YXO3", 0., 0., 0., 0, "ONLY");
705 dZ+=dl;
706 gMC->Gspos("YMO3", 1, "YMOT", 0., 0., dZ, 0, "ONLY");
707 dZ+=dl;
6523e275 708
709//
710// 3rd section: vacuum system
711//
712//
713// Bellow2
714//
715 tpar[0]=rB2;
716 tpar[1]=rB2+hB2;
717 tpar[2]=eB2/2.;
2b32db74 718 gMC->Gsvolu("YB21", "TUBE", idtmed[kSteel+40], tpar, 3);
6523e275 719 dl1=tpar[2];
720
721 tpar[0]=rB2+hB2-eB2;
722 tpar[1]=rB2+hB2;
723 tpar[2]=(lB2/2.-2.*eB2)/2.;
2b32db74 724 gMC->Gsvolu("YB22", "TUBE", idtmed[kSteel+40], tpar, 3);
6523e275 725 dl2=tpar[2];
726
727 tpar[0]=rB2-eB2;
728 tpar[1]=rB2;
729 tpar[2]=lB2/8.;
2b32db74 730 gMC->Gsvolu("YB23", "TUBE", idtmed[kSteel+40], tpar, 3);
6523e275 731 dl3=tpar[2];
732
733
734 tpar[0]=0;
735 tpar[1]=rB2+hB2;
736 tpar[2]=lB2/2.;
2b32db74 737 gMC->Gsvolu("YBU2", "TUBE", idtmed[kVacuum+40], tpar, 3);
6523e275 738
739 dz=-tpar[2]+dl3;
740 gMC->Gspos("YB23", 1, "YBU2", 0., 0., dz, 0, "ONLY");
741 dz+=dl3;
742 dz+=dl1;
743 gMC->Gspos("YB21", 1, "YBU2", 0., 0., dz, 0, "ONLY");
744 dz+=dl1;
745 dz+=dl2;
746 gMC->Gspos("YB22", 1, "YBU2", 0., 0., dz, 0, "ONLY");
747 dz+=dl2;
748 dz+=dl1;
749 gMC->Gspos("YB21", 2, "YBU2", 0., 0., dz, 0, "ONLY");
750 dz+=dl1;
751 dz+=dl3;
752 gMC->Gspos("YB23", 2, "YBU2", 0., 0., dz, 0, "ONLY");
753
754
755 tpar[0]=0;
756 tpar[1]=rB2+hB2;
757 tpar[2]=7.*lB2/2.;
2b32db74 758 gMC->Gsvolu("YBM2", "TUBE", idtmed[kVacuum+40], tpar, 3);
6523e275 759 dz=-tpar[2]+lB2/2.;
74c0d076 760 { // Begin local scope for i
2b32db74 761 for (Int_t i=0; i<7; i++) {
762 gMC->Gspos("YBU2", i+1 , "YBM2", 0., 0.,dz , 0, "ONLY");
763 dz+=lB2;
764 }
74c0d076 765 } // End local scope for i
6523e275 766 dz=-dl+dr21+tpar[2];
767 gMC->Gspos("YBM2", 1, "YMO3", 0., 0., dz, 0, "ONLY");
768
769 dz=dl-dr23-tpar[2];
770 gMC->Gspos("YBM2", 2, "YMO3", 0., 0., dz, 0, "ONLY");
771
772//
773// Flange
774
775 tpar[0]=0;
776 tpar[1]=rF2;
777 tpar[2]=dF2/2.;
2b32db74 778 gMC->Gsvolu("YFM2", "TUBE", idtmed[kVacuum+40], tpar, 3);
6523e275 779
39311070 780 tpar[0]=rF2-2.;
6523e275 781 tpar[1]=rF2;
782 tpar[2]=dF2/2.;
2b32db74 783 gMC->Gsvolu("YF21", "TUBE", idtmed[kSteel+40], tpar, 3);
6523e275 784 gMC->Gspos("YF21", 1, "YFM2", 0., 0., 0., 0, "ONLY");
785
786 tpar[0]=rB2;
39311070 787 tpar[1]=rF2-2.;
2b32db74 788 tpar[2]=dFlange/2.;
789 gMC->Gsvolu("YF22", "TUBE", idtmed[kSteel+40], tpar, 3);
6523e275 790 dz=-dF2/2.+tpar[2];
791 gMC->Gspos("YF22", 1, "YFM2", 0., 0., dz, 0, "ONLY");
792 dz= dF2/2.-tpar[2];
793 gMC->Gspos("YF22", 2, "YFM2", 0., 0., dz, 0, "ONLY");
794
795 dz=dr21/2.-dr23/2.;
796 gMC->Gspos("YFM2", 2, "YMO3", 0., 0., dz, 0, "ONLY");
797
798
799//
800// pipe between flange and bellows
2b32db74 801 tpar[0]=rB2-dTubeS;
6523e275 802 tpar[1]=rB2;
803 tpar[2]=2.*(dB2+dr22-7.*lB2)/4.;
2b32db74 804 gMC->Gsvolu("YPF2", "TUBE", idtmed[kSteel+40], tpar, 3);
6523e275 805 dz=dr21/2.-dr23/2.-dF2/2.-tpar[2];
806 gMC->Gspos("YPF2", 1, "YMO3", 0., 0., dz, 0, "ONLY");
807 dz=dr21/2.-dr23/2.+dF2/2.+tpar[2];
808 gMC->Gspos("YPF2", 2, "YMO3", 0., 0., dz, 0, "ONLY");
809
810//
811// 4th section: rear shield and closing cone
812//
813 par4[0] = 0.;
814 par4[1] = 360.;
815 par4[2] = 6.;
816 dl=(zvac12-zvac9)/2.;
817
818 par4[3] = -dl;
819 par4[4] = r3;
820 par4[5] = 30.;
821
822 par4[6] = -dl+(zvac10-zvac9);
2b32db74 823 par4[7] = r3+(zvac10-zvac9) * TMath::Tan(thetaOpen3);
6523e275 824 par4[8] = 30.;
825
826 par4[9] = par4[6];
827 par4[10] = par4[7];
828 par4[11] = R42;
829
830 par4[12] = -dl+(zvac11-zvac9);
2b32db74 831 par4[13] = r3+(zvac11-zvac9) * TMath::Tan(thetaOpen3);
6523e275 832 par4[14] = R42;
833
834 par4[15] = par4[12];
835 par4[16] = par4[13];
836 par4[17] = R43;
837
838 par4[18] = -dl+(zvac12-zvac9);
2b32db74 839 par4[19] = rAbs;
6523e275 840 par4[20] = R43;
841
bb03e53c 842 gMC->Gsvolu("YGO4", "PCON", idtmed[iHeavy+40], par4, 21);
2b32db74 843
844 parPb[0] = (zvac10-zvac9)/2.;
845 parPb[1] = parPb[3];
846 parPb[2] = 30;
847 parPb[3] = parPb[1]+2.*parPb[0]*TMath::Tan(thetaOpenPb);
848 parPb[4] = 30;
849 gMC->Gsvolu("YXO4", "CONE", idtmed[kPb], parPb, 5);
850 gMC->Gspos("YXO4", 1, "YGO4", 0., 0., -dl+parPb[0], 0, "ONLY");
851
852 parPb[0] = (zvac12-zvac10)/2.;
853 parPb[1] = parPb[3];
854 parPb[2] = 31.;
855 parPb[3] = parPb[1]+2.*parPb[0]*TMath::Tan(thetaOpenPb);
856 parPb[4] = 31.;
857 gMC->Gsvolu("YXO5", "CONE", idtmed[kPb], parPb, 5);
858 gMC->Gspos("YXO5", 1, "YGO4", 0., 0., -dl+(zvac10-zvac9)+parPb[0], 0, "ONLY");
74c0d076 859 { // Begin local scope for i
2b32db74 860 for (Int_t i=4; i<20; i+=3) par4[i] = 0;
74c0d076 861 } // End local scope for i
6523e275 862
2b32db74 863 gMC->Gsvolu("YMO4", "PCON", idtmed[kVacuum+40], par4, 21);
6523e275 864 gMC->Gspos("YGO4", 1, "YMO4", 0., 0., 0., 0, "ONLY");
865
866
2b32db74 867
868 dZ+=dl;
869 gMC->Gspos("YMO4", 1, "YMOT", 0., 0., dZ, 0, "ONLY");
870 dZ+=dl;
6523e275 871//
872// Closing concrete cone
873//
874 cpar[0]=(zvac12-zvac11)/2.;
2b32db74 875 cpar[1] = r3+(zvac11-zvac9) * TMath::Tan(thetaOpen3);
6523e275 876 cpar[2] = cpar[1]+0.001;
2b32db74 877 cpar[3] = rAbs;
6523e275 878 cpar[4] = cpar[2];
2b32db74 879 gMC->Gsvolu("YCC4", "CONE", idtmed[kConcrete+40], cpar, 5);
6523e275 880 dz=dl-cpar[0];
881 gMC->Gspos("YCC4", 1, "YGO4", 0., 0., dz, 0, "ONLY");
882//
883// Steel envelope
884//
885 dz=-dl;
886 tpar[0]=26.;
887 tpar[1]=30.;
888 tpar[2]=(zvac10-zvac9)/2.;
2b32db74 889 gMC->Gsvolu("YS41", "TUBE", idtmed[kSteel], tpar, 3);
6523e275 890 dz+=tpar[2];
2b32db74 891 gMC->Gspos("YS41", 1, "YXO4", 0., 0., 0., 0, "ONLY");
6523e275 892 dz+=tpar[2];
2b32db74 893/*
894 tpar[0]=30.;
6523e275 895 tpar[1]=R41;
896 tpar[2]=2.;
2b32db74 897 gMC->Gsvolu("YS42", "TUBE", idtmed[kSteel], tpar, 3);
6523e275 898 dz+=tpar[2];
899 gMC->Gspos("YS42", 1, "YGO4", 0., 0., dz, 0, "ONLY");
900 dz+=tpar[2];
2b32db74 901*/
6523e275 902 tpar[0]=R41-dRSteel2;
903 tpar[1]=R41;
2b32db74 904 tpar[2]=(zvac11-zvac10)/2.;
905 gMC->Gsvolu("YS43", "TUBE", idtmed[kSteel], tpar, 3);
6523e275 906 dz+=tpar[2];
907 gMC->Gspos("YS43", 1, "YGO4", 0., 0., dz, 0, "ONLY");
908//
909// rear lead shield
910//
911 tpar[0]=R41;
912 tpar[1]=R42;
913 tpar[2]=(zvac11-zvac10)/2.;
2b32db74 914 gMC->Gsvolu("YPBI", "TUBE", idtmed[kPb+40], tpar, 3);
915 dz-=0;
6523e275 916 gMC->Gspos("YPBI", 1, "YGO4", 0., 0., dz, 0, "ONLY");
917
918 tpar[0]=R42-5;
919 tpar[1]=R42;
920 tpar[2]=(zvac11-zvac10)/2.;
2b32db74 921 gMC->Gsvolu("YPBO", "TUBE", idtmed[kPb], tpar, 3);
6523e275 922 gMC->Gspos("YPBO", 1, "YPBI", 0., 0., 0., 0, "ONLY");
923
924//
925// rear Fe shield
926//
927
2b32db74 928 tpar[0]=31.;
6523e275 929 tpar[1]=R43;
930 tpar[2]=(zvac12-zvac11)/2.;
2b32db74 931 gMC->Gsvolu("YFEI", "TUBE", idtmed[kFe+40], tpar, 3);
6523e275 932 dz=dl-tpar[2];
933 gMC->Gspos("YFEI", 1, "YGO4", 0., 0., dz, 0, "ONLY");
934
2b32db74 935 tpar[0]=31.;
6523e275 936 tpar[1]=R43;
937 tpar[2]=2.5;
2b32db74 938 gMC->Gsvolu("YFEO", "TUBE", idtmed[kFe], tpar, 3);
6523e275 939 dz=-(zvac12-zvac11)/2.+tpar[2];
940 gMC->Gspos("YFEO", 1, "YFEI", 0., 0., dz, 0, "ONLY");
2b32db74 941//
942// Magnet element
943//
944 tpar[0]=0.;
945 tpar[1]=R43;
946 tpar[2]=50.;
947 gMC->Gsvolu("YAEM", "TUBE", idtmed[kAir], tpar, 3);
948 tpar[0]=rAbs;
949 tpar[1]=R43;
950 tpar[2]=50.;
951 gMC->Gsvolu("YFEM", "TUBE", idtmed[kFe], tpar, 3);
952 gMC->Gspos("YFEM", 1, "YAEM", 0., 0., 0., 0, "ONLY");
6523e275 953
2b32db74 954//
955
956 dz=zvac12+50.;
957 gMC->Gspos("YAEM", 1, "ALIC", 0., 0., dz, 0, "ONLY");
958
959
960//
6523e275 961//
962// 4th section: vacuum system
963//
964// up to closing cone
965 cpar0[0]=(zvac11-zvac9)/2;
2b32db74 966 cpar0[1]=r3-dVacuS;
6523e275 967 cpar0[2]=r3;
2b32db74 968 cpar0[3]=cpar0[1]+2.*cpar0[0]*TMath::Tan(thetaOpen3);
969 cpar0[4]=cpar0[2]+2.*cpar0[0]*TMath::Tan(thetaOpen3);
970 gMC->Gsvolu("YV31", "CONE", idtmed[kSteel+40], cpar0, 5);
6523e275 971//
972// insulation
973 cpar[0]=cpar0[0];
2b32db74 974 cpar[1]=cpar0[1]+dTubeS;
975 cpar[2]=cpar0[1]+dTubeS+dInsuS;
976 cpar[3]=cpar0[3]+dTubeS;
977 cpar[4]=cpar0[3]+dTubeS+dInsuS;
978 gMC->Gsvolu("YI31", "CONE", idtmed[kInsulation+40], cpar, 5);
6523e275 979 gMC->Gspos("YI31", 1, "YV31", 0., 0., 0., 0, "ONLY");
980//
981// clearance
2b32db74 982 cpar[1]=cpar0[2]-dProtS-dFreeS;
983 cpar[2]=cpar0[2]-dProtS;
984 cpar[3]=cpar0[4]-dProtS-dFreeS;
985 cpar[4]=cpar0[4]-dProtS;
986 gMC->Gsvolu("YP31", "CONE", idtmed[kVacuum+40], cpar, 5);
6523e275 987 gMC->Gspos("YP31", 1, "YV31", 0., 0., 0., 0, "ONLY");
988
989 dz=-dl+cpar[0];
990 gMC->Gspos("YV31", 1, "YMO4", 0., 0., dz, 0, "ONLY");
991//
992// closing cone
993 cpar0[0]=(zvac12-zvac11)/2;
2b32db74 994 cpar0[1]=r3-dVacuS+(zvac11-zvac9)*TMath::Tan(thetaOpen3);
995 cpar0[2]=r3 +(zvac11-zvac9)*TMath::Tan(thetaOpen3);
996 cpar0[3]=rVacu;
997 cpar0[4]=rAbs;
998 gMC->Gsvolu("YV32", "CONE", idtmed[kSteel+40], cpar0, 5);
6523e275 999//
1000// insulation
1001 cpar[0]=cpar0[0];
2b32db74 1002 cpar[1]=cpar0[1]+dTubeS;
1003 cpar[2]=cpar0[1]+dTubeS+dInsuS;
1004 cpar[3]=cpar0[3]+dTubeS;
1005 cpar[4]=cpar0[3]+dTubeS+dInsuS;
1006 gMC->Gsvolu("YI32", "CONE", idtmed[kInsulation+40], cpar, 5);
6523e275 1007 gMC->Gspos("YI32", 1, "YV32", 0., 0., 0., 0, "ONLY");
1008//
1009// clearance
2b32db74 1010 cpar[1]=cpar0[2]-dProtS-dFreeS;
1011 cpar[2]=cpar0[2]-dProtS;
1012 cpar[3]=cpar0[4]-dProtS-dFreeS;
1013 cpar[4]=cpar0[4]-dProtS;
1014 gMC->Gsvolu("YP32", "CONE", idtmed[kVacuum+40], cpar, 5);
6523e275 1015 gMC->Gspos("YP32", 1, "YV32", 0., 0., 0., 0, "ONLY");
1016
1017 dz=dl-cpar[0];
1018 gMC->Gspos("YV32", 1, "YMO4", 0., 0., dz, 0, "ONLY");
1019//
1020//
1021// MUON trigger wall
2b32db74 1022//
1023 tpar[0] = 50.;
6523e275 1024 tpar[1] = 310.;
2b32db74 1025 tpar[2] = (zFilterOut - zFilterIn) / 2.;
1026 gMC->Gsvolu("YFIM", "TUBE", idtmed[kFe+40], tpar, 3);
1027 dz = (zFilterIn + zFilterOut) / 2.;
6523e275 1028 tpar[2] -= 10.;
2b32db74 1029 gMC->Gsvolu("YFII","TUBE", idtmed[kFe], tpar, 3);
6523e275 1030 gMC->Gspos("YFII", 1, "YFIM", 0., 0., 0., 0, "ONLY");
1031 gMC->Gspos("YFIM", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1032//
1033// Shielding close to chamber
1034//
39311070 1035//
1036 cpar[0]=(zch11-zRear)/2.;
6523e275 1037 cpar[1]=R11;
2b32db74 1038 cpar[2]=zRear*TMath::Tan(accMin);
6523e275 1039 cpar[3]=R11;
2b32db74 1040 cpar[4]=(zRear+2.*cpar[0])*TMath::Tan(accMin);
1041 gMC->Gsvolu("YCS1", "CONE", idtmed[kNiCuW], cpar, 5);
1042 dz=zRear+cpar[0];
6523e275 1043 gMC->Gspos("YCS1", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1044
39311070 1045/*
1046 cpar[0]=(zvac4-zch12)/2.;
6523e275 1047 cpar[1]=R11;
2b32db74 1048 cpar[2]=(zvac4-2.*cpar[0])*TMath::Tan(accMin);
6523e275 1049 cpar[3]=R11;
6d4aaa11 1050 cpar[4]=R21;
2b32db74 1051 gMC->Gsvolu("YCS2", "CONE", idtmed[kNiCuW], cpar, 5);
6523e275 1052 dz=zvac4-cpar[0];
1053 gMC->Gspos("YCS2", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1054
39311070 1055
1056 cpar[0]=(zch12-zch11-2.)/2.;
2b32db74 1057 cpar[1]=R11;
39311070 1058 cpar[2]=(zch11+2.)*TMath::Tan(accMin);
2b32db74 1059 cpar[3]=R11;
1060 cpar[4]=cpar[2]+2.*cpar[0]*TMath::Tan(accMin);
1061 gMC->Gsvolu("YCS3", "CONE", idtmed[kNiCuW], cpar, 5);
39311070 1062 dz=(zch11+zch12)/2.;
2b32db74 1063 gMC->Gspos("YCS3", 1, "ALIC", 0., 0., dz, 0, "ONLY");
39311070 1064*/
2b32db74 1065
39311070 1066 cpar[0]=(zch21-zvac4)/2.;
6523e275 1067 cpar[1]=R21;
2b32db74 1068 cpar[2]=zvac4*TMath::Tan(accMin);
6523e275 1069 cpar[3]=R21;
2b32db74 1070 cpar[4]=(zvac4+2.*cpar[0])*TMath::Tan(accMin);
1071 gMC->Gsvolu("YCS4", "CONE", idtmed[kNiCuW], cpar, 5);
6523e275 1072 dz=zvac4+cpar[0];
2b32db74 1073 gMC->Gspos("YCS4", 1, "ALIC", 0., 0., dz, 0, "ONLY");
6523e275 1074
39311070 1075/*
1076 cpar[0]=(zvac6-zch22)/2.;
6d4aaa11 1077 cpar[1]=R21;
2b32db74 1078 cpar[2]=(zvac6-2.*cpar[0])*TMath::Tan(accMin);
6d4aaa11 1079 cpar[3]=R21;
2b32db74 1080 cpar[4]=zvac6*TMath::Tan(accMin);
1081 gMC->Gsvolu("YCS5", "CONE", idtmed[kNiCuW], cpar, 5);
6523e275 1082 dz=zvac6-cpar[0];
2b32db74 1083 gMC->Gspos("YCS5", 1, "ALIC", 0., 0., dz, 0, "ONLY");
6523e275 1084
39311070 1085
1086 cpar[0]=(zch22-zch21-2.)/2.;
2b32db74 1087 cpar[1]=R21;
39311070 1088 cpar[2]=(zch21+2.)*TMath::Tan(accMin);
2b32db74 1089 cpar[3]=R21;
1090 cpar[4]=cpar[2]+2.*cpar[0]*TMath::Tan(accMin);
1091 gMC->Gsvolu("YCS6", "CONE", idtmed[kNiCuW], cpar, 5);
39311070 1092 dz=(zch21+zch22)/2.;
2b32db74 1093 gMC->Gspos("YCS6", 1, "ALIC", 0., 0., dz, 0, "ONLY");
39311070 1094*/
2b32db74 1095//
1096// Outer Pb Cone
39311070 1097
2b32db74 1098 if (fPbCone) {
39311070 1099
404559e5 1100 par0[0] = 0.;
1101 par0[1] = 360.;
39311070 1102 par0[2] = 10.;
1103/*
404559e5 1104// start of cone
1105 par0[3] = zConeE;
39311070 1106 par0[4] = 30.;
404559e5 1107 par0[5] = 30.01;
1108// 3rd station
1109 par0[6] = zch31;
39311070 1110 par0[7] = 30.;
1111 par0[8] = 30.+(zch31-zConeE)*TMath::Tan(thetaOpenPbO);
404559e5 1112
1113 par0[9] = zch31;
1114 par0[10] = 30.0;
39311070 1115 par0[11] = par0[8]-1.;
1116
404559e5 1117
1118 par0[12] = zch32;
1119 par0[13] = 30.0;
39311070 1120 par0[14] = par0[11];
1121*/
1122 par0[ 3] = zch32;
1123 par0[ 4] = 30.;
1124 par0[ 5] = 30.+(zch32-zConeE)*TMath::Tan(thetaOpenPbO);
404559e5 1125
1126// 4th station
39311070 1127 par0[ 6] = zch41;
1128 par0[ 7] = 30.;
1129 par0[ 8] = 30.+(zch41-zConeE)*TMath::Tan(thetaOpenPbO);
1130
1131 par0[ 9] = zch41;
1132 par0[10] = 30.;
1133 par0[11] = 37.5;
1134 // recess erice2000
1135 par0[12] = zch42;
1136 par0[13] = 30.;
1137 par0[14] = par0[11];
1138
1139 par0[15] = zch42;
1140 par0[16] = 30.;
1141 par0[17] = 30.+(zch42-zConeE)*TMath::Tan(thetaOpenPbO);
404559e5 1142
1143// 5th station
39311070 1144 par0[18] = zch51;
1145 par0[19] = 30.;
1146 par0[20] = 30.+(zch51-zConeE)*TMath::Tan(thetaOpenPbO);
404559e5 1147
39311070 1148 par0[21] = zch51;
1149 par0[22] = 30.;
1150 par0[23] = 37.5; // recess erice2000
404559e5 1151
39311070 1152 par0[24] = zch52;
1153 par0[25] = 30.;
1154 par0[26] = par0[23];
404559e5 1155
39311070 1156 par0[27] = zch52;
1157 par0[28] = 30.;
1158 par0[29] = 30.+(zch52-zConeE)*TMath::Tan(thetaOpenPbO);
404559e5 1159// end of cone
39311070 1160 par0[30] = zFilterIn;
1161 par0[31] = 30.;
1162 par0[32] = par0[29];
404559e5 1163//
39311070 1164 gMC->Gsvolu("YOPB", "PCON", idtmed[kPb], par0, 33);
404559e5 1165 dz=0.;
2b32db74 1166 gMC->Gspos("YOPB", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1167 }
6523e275 1168}
1169
1170void AliSHILv0::Init()
1171{
1172 //
1173 // Initialise the muon shield after it has been built
1174 //
1175 Int_t i;
1176 //
1177 printf("\n");
1178 for(i=0;i<35;i++) printf("*");
1179 printf(" SHILv0_INIT ");
1180 for(i=0;i<35;i++) printf("*");
1181 printf("\n");
1182 //
1183 // Here the SHIL initialisation code (if any!)
1184 for(i=0;i<80;i++) printf("*");
1185 printf("\n");
1186}