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