polish
[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.10  2000/10/02 21:28:15  fca
19 Removal of useless dependecies via forward declarations
20
21 Revision 1.9  2000/09/12 17:00:45  morsch
22 Overlaps in YMO3 and YMO4 (side-effect from last update only) corrected.
23
24 Revision 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
28 Revision 1.7  2000/06/15 09:40:31  morsch
29 Obsolete typedef keyword removed
30
31 Revision 1.6  2000/06/13 15:01:38  morsch
32 Make kind of heavy shielding material (Pb, NiCuW) dependent on presence of outer cone.
33
34 Revision 1.5  2000/06/12 19:40:00  morsch
35 New structure of beam pipe and heating jacket.
36 Optional outer Pb cone added. Not yet compatible with chamber inner radii.
37
38 Revision 1.4  2000/04/03 08:13:40  fca
39 Introduce extra scope for non ANSI compliant C++ compilers
40
41 Revision 1.3  2000/01/17 10:29:30  morsch
42 Overlap between Shield and Absorber due to limited numerical precision removed
43 by displacing the Shield by epsilon = 0.01 cm.
44
45 Revision 1.2  2000/01/13 11:27:51  morsch
46 Overlaps corrected: YCS3, YCS4; Inner radius YS21 corrected
47
48 Revision 1.1  2000/01/12 15:44:03  morsch
49 Standard version of SHIL
50
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"
69 #include "AliMC.h"
70 #include "AliConst.h"
71
72 ClassImp(AliSHILv0)
73  
74 //_____________________________________________________________________________
75 AliSHILv0::AliSHILv0()
76 {
77   //
78   // Default constructor for muon shield
79   //
80 }
81  
82 //_____________________________________________________________________________
83 AliSHILv0::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);
92   // Pb  cone not yet compatible with muon chamber inner radii
93   // Switched off by default
94   fPbCone=kFALSE;
95 }
96  
97 //_____________________________________________________________________________
98 void 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
115     Float_t cpar[5], cpar0[5], tpar[3], par1[39], par2[27], par3[27], 
116         par4[21], par0[45];
117     Float_t dz, dZ;
118   
119     Int_t *idtmed = fIdtmed->GetArray()-1699;
120
121 #include "ABSOSHILConst.h"
122 #include "SHILConst.h"
123
124 enum {kC=1705, kAl=1708, kFe=1709, kCu=1710, kW=1711, kPb=1712,
125                 kNiCuW=1720, kVacuum=1714, kAir=1714, kConcrete=1716,
126                 kPolyCH2=1717, kSteel=1709, kInsulation=1713};  
127 //
128 // Material of the rear part of the shield
129   Int_t iHeavy=kNiCuW;
130   if (fPbCone) iHeavy=kPb;
131   
132   
133 //
134 // Mother volume
135 //
136   Float_t dRear1=dRear;
137   
138   Float_t zstart=zRear-dRear1;
139   
140   par0[0]  = 0.;
141   par0[1]  = 360.;
142   par0[2]  = 13.;
143
144   Float_t dl=(zvac12-zstart)/2.;
145   dz=zstart+dl;
146 //
147   par0[3]  = -dl;
148   par0[4]  = 0.;
149   par0[5]  = zstart * TMath::Tan(accMin);
150
151   par0[6]  = -dl+dRear1;
152   par0[7]  = 0.;
153   par0[8]  = zRear * TMath::Tan(accMin);
154
155   par0[9]  = -dl+dRear1;
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.;
173   par0[23] = zvac6 * TMath::Tan(accMin);
174
175   par0[24] = -dz+zConeE;
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
199   gMC->Gsvolu("YMOT", "PCON", idtmed[kVacuum], par0, 42);
200   dz=zstart+dl;
201   gMC->Gspos("YMOT", 1, "ALIC", 0., 0., dz, 0, "ONLY");  
202 //
203
204   dZ=-dl;
205
206 //
207 // First section: bellows below and behind front absorber 
208 // 
209 //
210   par1[0]  = 0.;
211   par1[1]  = 360.;
212   par1[2]  = 12.;
213   dl=(zvac4-zstart)/2.;
214   
215   par1[3]  = -dl;
216   par1[4]  = rAbs+(zstart-zOpen) * TMath::Tan(thetaOpen1);
217   par1[5]  = zstart * TMath::Tan(accMin);
218
219   par1[6]  = -dl+zvac1-zstart;
220   par1[7]  = rAbs+ (zvac1-zOpen) * TMath::Tan(thetaOpen1);
221   par1[8]  = zvac1 * TMath::Tan(accMin);
222
223   par1[9]  = par1[6]+dr11;
224   par1[10] = par1[7]+dr11;
225   par1[11] = (zvac1+dr11) * TMath::Tan(accMin);
226
227   par1[12] = -dl+dRear1;
228   par1[13] = par1[10];
229   par1[14] = zRear * TMath::Tan(accMin);
230
231   par1[15] = -dl+dRear1;
232   par1[16] = par1[10];
233   par1[17] = R11;
234
235   par1[18] = -dl+(zvac1+dr11+dB1-zstart);
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
259   par1[36] = -dl+zvac4-zstart;
260   par1[37] = par1[34]+(zvac4-zvac3)*TMath::Tan(thetaOpen2);
261   par1[38] = R11;
262
263   Float_t r2=par1[34];
264   Float_t rBox=par1[31]-0.1;
265
266   gMC->Gsvolu("YGO1", "PCON", idtmed[kNiCuW], par1, 39);
267   { // Begin local scope for i
268       for (Int_t i=4; i<38; i+=3) par1[i]  = 0;
269   } // End local scope for i
270   gMC->Gsvolu("YMO1", "PCON", idtmed[kVacuum+40], par1, 39);
271   gMC->Gspos("YGO1", 1, "YMO1", 0., 0., 0., 0, "ONLY");  
272   dZ+=dl;
273   gMC->Gspos("YMO1", 1, "YMOT", 0., 0., dZ, 0, "ONLY");  
274   dZ+=dl;
275
276 //
277 // Steel envelope
278   tpar[0]=R11-dRSteel1;
279   tpar[1]=R11;
280   tpar[2]=dl-dRear1/2;
281   gMC->Gsvolu("YSE1", "TUBE", idtmed[kNiCuW], tpar, 3);
282   dz=dl-tpar[2];
283   gMC->Gspos("YSE1", 1, "YGO1", 0., 0., dz, 0, "ONLY");
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.;
293   gMC->Gsvolu("YB11", "TUBE", idtmed[kSteel+40], tpar, 3);
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.;
299   gMC->Gsvolu("YB12", "TUBE", idtmed[kSteel+40], tpar, 3);
300   Float_t dl2=tpar[2];
301
302   tpar[0]=rB1-eB1;
303   tpar[1]=rB1;
304   tpar[2]=lB1/8.;
305   gMC->Gsvolu("YB13", "TUBE", idtmed[kSteel+40], tpar, 3);
306   Float_t dl3=tpar[2];
307
308
309   tpar[0]=0;
310   tpar[1]=rB1+hB1;
311   tpar[2]=lB1/2.;
312   gMC->Gsvolu("YBU1", "TUBE", idtmed[kVacuum+40], tpar, 3);
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.;
333   gMC->Gsvolu("YBM1", "TUBE", idtmed[kVacuum+40], tpar, 3);
334   dz=-tpar[2]+lB1/2.;
335   { // Begin local scope for i
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       }
340   } // End local scope for i
341   dz=-dl+(zvac1-zstart)+dr11+tpar[2];
342   gMC->Gspos("YBM1", 1, "YMO1", 0., 0., dz, 0, "ONLY"); 
343
344   dz=dl-dr13-(zvac4-zvac3)-tpar[2];
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.;
353   gMC->Gsvolu("YFM1", "TUBE", idtmed[kVacuum+40], tpar, 3);
354
355   tpar[0]=rF1-2.;
356   tpar[1]=rF1;
357   tpar[2]=dF1/2.;
358   gMC->Gsvolu("YF11", "TUBE", idtmed[kSteel+40], tpar, 3);
359   gMC->Gspos("YF11", 1, "YFM1", 0., 0., 0., 0, "ONLY"); 
360
361   tpar[0]=rB1;
362   tpar[1]=rF1-2.;
363   tpar[2]=dFlange/2.;
364   gMC->Gsvolu("YF12", "TUBE", idtmed[kSteel+40], tpar, 3);
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
370   dz=-dl+(zvac2-zstart);
371   gMC->Gspos("YFM1", 2, "YMO1", 0., 0., dz, 0, "ONLY"); 
372
373 //
374 // pipe between flange and bellows
375   tpar[0]=rB1-dTubeS;
376   tpar[1]=rB1;
377   tpar[2]=2.*(dB1+dr12-10.*lB1)/4.;
378   gMC->Gsvolu("YPF1", "TUBE", idtmed[kSteel+40], tpar, 3);
379  
380   dz=-dl+(zvac2-zstart)-dF1/2.-tpar[2];
381   gMC->Gspos("YPF1", 1, "YMO1", 0., 0., dz, 0, "ONLY"); 
382   dz=-dl+(zvac2-zstart)+dF1/2.+tpar[2];
383   gMC->Gspos("YPF1", 2, "YMO1", 0., 0., dz, 0, "ONLY"); 
384
385 // pipe and heating jackets outside bellows
386 //
387 // left side
388   cpar0[0]=(zvac1-zstart)/2;
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);
394 //
395 // insulation
396   dTubeS=0.15;
397   cpar[0]=cpar0[0];
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);
403   gMC->Gspos("YI11", 1, "YV11", 0., 0., 0., 0, "ONLY"); 
404 //
405 // clearance
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);
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"); 
415 // right side
416   dTubeS=0.35;
417   dVacuS+=0.25;
418   
419   cpar0[0]=(zvac4-zvac3)/2;
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];
427 //
428 // insulation
429   cpar[0]=cpar0[0];
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);
435   gMC->Gspos("YI12", 1, "YV12", 0., 0., 0., 0, "ONLY"); 
436
437 //
438 // clearance
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);
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"); 
448 //
449 // Second Section
450 // Between first and second bellow section
451 //
452
453   par2[0]  = 0.;
454   par2[1]  = 360.;
455   par2[2]  = 6.;
456   dl=(zvac7-zvac4)/2.;
457 // recess station 2   
458   par2[3]  = -dl;
459   par2[4]  = r2+(zvac4-zvac3) * TMath::Tan(thetaOpen2);
460   par2[5]  = R21;
461
462   par2[6]  = -dl+(zvac6-zvac4);
463   par2[7]  = r2+(zvac6-zvac3) * TMath::Tan(thetaOpen2);
464   par2[8]  = R21;
465
466   par2[9] = -dl+(zvac6-zvac4);
467   par2[10] = par2[7];
468   par2[11] = zvac6*TMath::Tan(accMin);
469
470 // Start of Pb section
471   par2[12] = -dl+(zPb-zvac4);
472   par2[13] = r2+(zPb-zvac3) * TMath::Tan(thetaOpen2);
473   par2[14] = zPb*TMath::Tan(accMin);
474
475 //
476 // end of cone following 2 deg line
477   par2[15] = -dl+(zConeE-zvac4);
478   par2[16] = r2+(zConeE-zvac3) * TMath::Tan(thetaOpen2);
479   par2[17] = 30.;
480
481   par2[18] = -dl+(zvac7-zvac4);
482   par2[19] = r2+(zvac7-zvac3) * TMath::Tan(thetaOpen2);
483   par2[20] = 30.;
484
485
486   gMC->Gsvolu("YGO2", "PCON", idtmed[kNiCuW+40], par2, 21);
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.;
507   
508   Float_t rPbLast=parPb[10];
509   
510
511   gMC->Gsvolu("YXO2", "PCON", idtmed[kPb], parPb, 12);    
512   gMC->Gspos("YXO2", 1, "YGO2", 0., 0., (zPb-zvac4)/2., 0, "ONLY");  
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);
519   
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
527   { // Begin local scope for i
528       for (Int_t i=4; i<23; i+=3) par2[i]  = 0;
529   } // End local scope for i
530           
531   gMC->Gsvolu("YMO2", "PCON", idtmed[kVacuum+40], par2, 24);
532   gMC->Gspos("YGO2", 1, "YMO2", 0., 0., 0., 0, "ONLY");  
533   dZ+=dl;
534   gMC->Gspos("YMO2", 1, "YMOT", 0., 0., dZ, 0, "ONLY");  
535   dZ+=dl;
536 //
537 // Steel envelope
538 //
539 // (1)
540   tpar[0]=R11-dRSteel1;
541   tpar[1]=R21;
542   tpar[2]=2;
543   gMC->Gsvolu("YS21", "TUBE", idtmed[kSteel], tpar, 3);
544   dz=-dl+tpar[2];
545   gMC->Gspos("YS21", 1, "YGO2", 0., 0., dz, 0, "ONLY");  
546   dz+=tpar[2];
547 // (2)
548   tpar[0]=R21-dRSteel2;
549   tpar[1]=R21;
550   tpar[2]=(zvac6-zvac5)/2.;
551   gMC->Gsvolu("YS22", "TUBE", idtmed[kSteel], tpar, 3);
552   dz+=tpar[2];
553   gMC->Gspos("YS22", 1, "YGO2", 0., 0., dz, 0, "ONLY");  
554   dz+=tpar[2];
555 // (3)  
556   cpar[0]=2.;
557   cpar[1]=R21-dRSteel2;
558   cpar[2]=zvac6 * TMath::Tan(accMin);
559   cpar[3]=cpar[1];
560   cpar[4]=cpar[2]+4.*TMath::Tan(accMin);
561   gMC->Gsvolu("YS23", "CONE", idtmed[kSteel], cpar, 5);
562   dz+=cpar[0];
563   gMC->Gspos("YS23", 1, "YGO2", 0., 0., dz, 0, "ONLY");
564   dz+=cpar[0];
565 // (4)
566   cpar[0]=(zPb-zvac6-4.)/2;
567   cpar[2]=cpar[4];
568   cpar[4]=cpar[2]+2.*cpar[0]*TMath::Tan(accMin);
569   cpar[1]=cpar[2]-dRSteel2;
570   cpar[3]=cpar[4]-dRSteel2;
571
572   gMC->Gsvolu("YS24", "CONE", idtmed[kSteel], cpar, 5);
573   dz+=cpar[0];
574   gMC->Gspos("YS24", 1, "YGO2", 0., 0., dz, 0, "ONLY");  
575   dz+=cpar[0];
576
577 // (5) 
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];
588 // (6)
589   tpar[0]=26.;
590   tpar[1]=30.;
591   tpar[2]=(zvac7-zConeE)/2.;
592
593   gMC->Gsvolu("YS26", "TUBE", idtmed[kSteel], tpar, 3);
594   dz+=tpar[2];
595   gMC->Gspos("YS26", 1, "YXO2", 0., 0., dz, 0, "ONLY");  
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);
605   
606   gMC->Gspos("YS27", 1, "YS26", 0., 0., dz, 0, "ONLY");  
607       
608 // 
609 //
610 // 2nd section: vacuum system 
611 //
612   cpar0[0]=(zvac7-zvac4)/2;
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);
618 //
619 // insulation
620   cpar[0]=cpar0[0];
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);
626   gMC->Gspos("YI21", 1, "YV21", 0., 0., 0., 0, "ONLY"); 
627 //
628 // clearance
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);
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
639
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;
649   par3[4]  = r2+(zvac7-zvac3) * TMath::Tan(thetaOpen2);
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.;
679 //
680   rBox=par3[22]-0.1;
681   Float_t r3=par3[25];
682   
683   gMC->Gsvolu("YGO3", "PCON", idtmed[iHeavy+40], par3, 27);
684
685   parPb[0]  = dl;
686   parPb[1]  = rPbLast;
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");  
692   { // Begin local scope for i
693       for (Int_t i=4; i<26; i+=3) par3[i]  = 0;
694   } // End local scope for i
695   gMC->Gsvolu("YMO3", "PCON", idtmed[kVacuum+40], par3, 27);
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;
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;
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.;
718   gMC->Gsvolu("YB21", "TUBE", idtmed[kSteel+40], tpar, 3);
719   dl1=tpar[2];
720   
721   tpar[0]=rB2+hB2-eB2;
722   tpar[1]=rB2+hB2;
723   tpar[2]=(lB2/2.-2.*eB2)/2.;
724   gMC->Gsvolu("YB22", "TUBE", idtmed[kSteel+40], tpar, 3);
725   dl2=tpar[2];
726
727   tpar[0]=rB2-eB2;
728   tpar[1]=rB2;
729   tpar[2]=lB2/8.;
730   gMC->Gsvolu("YB23", "TUBE", idtmed[kSteel+40], tpar, 3);
731   dl3=tpar[2];
732
733
734   tpar[0]=0;
735   tpar[1]=rB2+hB2;
736   tpar[2]=lB2/2.;
737   gMC->Gsvolu("YBU2", "TUBE", idtmed[kVacuum+40], tpar, 3);
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.;
758   gMC->Gsvolu("YBM2", "TUBE", idtmed[kVacuum+40], tpar, 3);
759   dz=-tpar[2]+lB2/2.;
760   { // Begin local scope for i
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       }
765   } // End local scope for i
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.;
778   gMC->Gsvolu("YFM2", "TUBE", idtmed[kVacuum+40], tpar, 3);
779
780   tpar[0]=rF2-2.;
781   tpar[1]=rF2;
782   tpar[2]=dF2/2.;
783   gMC->Gsvolu("YF21", "TUBE", idtmed[kSteel+40], tpar, 3);
784   gMC->Gspos("YF21", 1, "YFM2", 0., 0., 0., 0, "ONLY"); 
785
786   tpar[0]=rB2;
787   tpar[1]=rF2-2.;
788   tpar[2]=dFlange/2.;
789   gMC->Gsvolu("YF22", "TUBE", idtmed[kSteel+40], tpar, 3);
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
801   tpar[0]=rB2-dTubeS;
802   tpar[1]=rB2;
803   tpar[2]=2.*(dB2+dr22-7.*lB2)/4.;
804   gMC->Gsvolu("YPF2", "TUBE", idtmed[kSteel+40], tpar, 3);
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);
823   par4[7]  = r3+(zvac10-zvac9) * TMath::Tan(thetaOpen3);
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);
831   par4[13] = r3+(zvac11-zvac9) * TMath::Tan(thetaOpen3);
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);
839   par4[19] = rAbs;
840   par4[20] = R43;
841
842   gMC->Gsvolu("YGO4", "PCON", idtmed[iHeavy+40], par4, 21);
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");  
859   { // Begin local scope for i
860       for (Int_t i=4; i<20; i+=3) par4[i]  = 0;
861   } // End local scope for i
862
863   gMC->Gsvolu("YMO4", "PCON", idtmed[kVacuum+40], par4, 21);
864   gMC->Gspos("YGO4", 1, "YMO4", 0., 0., 0., 0, "ONLY");  
865
866
867
868   dZ+=dl;
869   gMC->Gspos("YMO4", 1, "YMOT", 0., 0., dZ, 0, "ONLY");  
870   dZ+=dl;
871 //
872 // Closing concrete cone 
873 //
874   cpar[0]=(zvac12-zvac11)/2.;
875   cpar[1] = r3+(zvac11-zvac9) * TMath::Tan(thetaOpen3);
876   cpar[2] = cpar[1]+0.001;
877   cpar[3] = rAbs;
878   cpar[4] = cpar[2];
879   gMC->Gsvolu("YCC4", "CONE", idtmed[kConcrete+40], cpar, 5);
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.;
889   gMC->Gsvolu("YS41", "TUBE", idtmed[kSteel], tpar, 3);
890   dz+=tpar[2];
891   gMC->Gspos("YS41", 1, "YXO4", 0., 0., 0., 0, "ONLY");  
892   dz+=tpar[2];
893 /*
894   tpar[0]=30.;
895   tpar[1]=R41;
896   tpar[2]=2.;
897   gMC->Gsvolu("YS42", "TUBE", idtmed[kSteel], tpar, 3);
898   dz+=tpar[2];
899   gMC->Gspos("YS42", 1, "YGO4", 0., 0., dz, 0, "ONLY");  
900   dz+=tpar[2];
901 */
902   tpar[0]=R41-dRSteel2;
903   tpar[1]=R41;
904   tpar[2]=(zvac11-zvac10)/2.;
905   gMC->Gsvolu("YS43", "TUBE", idtmed[kSteel], tpar, 3);
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.;
914   gMC->Gsvolu("YPBI", "TUBE", idtmed[kPb+40], tpar, 3);
915   dz-=0;
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.;
921   gMC->Gsvolu("YPBO", "TUBE", idtmed[kPb], tpar, 3);
922   gMC->Gspos("YPBO", 1, "YPBI", 0., 0., 0., 0, "ONLY"); 
923   
924 //
925 // rear Fe shield
926 //
927
928   tpar[0]=31.;
929   tpar[1]=R43;
930   tpar[2]=(zvac12-zvac11)/2.;
931   gMC->Gsvolu("YFEI", "TUBE", idtmed[kFe+40], tpar, 3);
932   dz=dl-tpar[2];
933   gMC->Gspos("YFEI", 1, "YGO4", 0., 0., dz, 0, "ONLY"); 
934
935   tpar[0]=31.;
936   tpar[1]=R43;
937   tpar[2]=2.5;
938   gMC->Gsvolu("YFEO", "TUBE", idtmed[kFe], tpar, 3);
939   dz=-(zvac12-zvac11)/2.+tpar[2];
940   gMC->Gspos("YFEO", 1, "YFEI", 0., 0., dz, 0, "ONLY"); 
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"); 
953
954 //
955
956   dz=zvac12+50.;
957   gMC->Gspos("YAEM", 1, "ALIC", 0., 0., dz, 0, "ONLY"); 
958
959
960 // 
961 //
962 // 4th section: vacuum system 
963 //
964 // up to closing cone
965   cpar0[0]=(zvac11-zvac9)/2;
966   cpar0[1]=r3-dVacuS;
967   cpar0[2]=r3;
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);
971 //
972 // insulation
973   cpar[0]=cpar0[0];
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);
979   gMC->Gspos("YI31", 1, "YV31", 0., 0., 0., 0, "ONLY"); 
980 //
981 // clearance
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);
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;
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);
999 //
1000 // insulation
1001   cpar[0]=cpar0[0];
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);
1007   gMC->Gspos("YI32", 1, "YV32", 0., 0., 0., 0, "ONLY"); 
1008 //
1009 // clearance
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);
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
1022 //  
1023   tpar[0] = 50.;
1024   tpar[1] = 310.;
1025   tpar[2] = (zFilterOut - zFilterIn) / 2.;
1026   gMC->Gsvolu("YFIM", "TUBE", idtmed[kFe+40], tpar, 3);
1027   dz = (zFilterIn + zFilterOut) / 2.;
1028   tpar[2] -= 10.;
1029   gMC->Gsvolu("YFII","TUBE", idtmed[kFe], tpar, 3);
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 //
1035 //
1036   cpar[0]=(zch11-zRear)/2.;
1037   cpar[1]=R11;
1038   cpar[2]=zRear*TMath::Tan(accMin);
1039   cpar[3]=R11;
1040   cpar[4]=(zRear+2.*cpar[0])*TMath::Tan(accMin);
1041   gMC->Gsvolu("YCS1", "CONE", idtmed[kNiCuW], cpar, 5);
1042   dz=zRear+cpar[0];
1043   gMC->Gspos("YCS1", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1044
1045 /*
1046   cpar[0]=(zvac4-zch12)/2.;
1047   cpar[1]=R11;
1048   cpar[2]=(zvac4-2.*cpar[0])*TMath::Tan(accMin);
1049   cpar[3]=R11;
1050   cpar[4]=R21;
1051   gMC->Gsvolu("YCS2", "CONE", idtmed[kNiCuW], cpar, 5);
1052   dz=zvac4-cpar[0];
1053   gMC->Gspos("YCS2", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1054
1055
1056   cpar[0]=(zch12-zch11-2.)/2.;
1057   cpar[1]=R11;
1058   cpar[2]=(zch11+2.)*TMath::Tan(accMin);
1059   cpar[3]=R11;
1060   cpar[4]=cpar[2]+2.*cpar[0]*TMath::Tan(accMin);
1061   gMC->Gsvolu("YCS3", "CONE", idtmed[kNiCuW], cpar, 5);
1062   dz=(zch11+zch12)/2.;
1063   gMC->Gspos("YCS3", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1064 */
1065
1066   cpar[0]=(zch21-zvac4)/2.;
1067   cpar[1]=R21;
1068   cpar[2]=zvac4*TMath::Tan(accMin);
1069   cpar[3]=R21;
1070   cpar[4]=(zvac4+2.*cpar[0])*TMath::Tan(accMin);
1071   gMC->Gsvolu("YCS4", "CONE", idtmed[kNiCuW], cpar, 5);
1072   dz=zvac4+cpar[0];
1073   gMC->Gspos("YCS4", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1074   
1075 /*
1076   cpar[0]=(zvac6-zch22)/2.;
1077   cpar[1]=R21;
1078   cpar[2]=(zvac6-2.*cpar[0])*TMath::Tan(accMin);
1079   cpar[3]=R21;
1080   cpar[4]=zvac6*TMath::Tan(accMin);
1081   gMC->Gsvolu("YCS5", "CONE", idtmed[kNiCuW], cpar, 5);
1082   dz=zvac6-cpar[0];
1083   gMC->Gspos("YCS5", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1084
1085
1086   cpar[0]=(zch22-zch21-2.)/2.;
1087   cpar[1]=R21;
1088   cpar[2]=(zch21+2.)*TMath::Tan(accMin);
1089   cpar[3]=R21;
1090   cpar[4]=cpar[2]+2.*cpar[0]*TMath::Tan(accMin);
1091   gMC->Gsvolu("YCS6", "CONE", idtmed[kNiCuW], cpar, 5);
1092   dz=(zch21+zch22)/2.;
1093   gMC->Gspos("YCS6", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1094 */
1095 //
1096 // Outer Pb Cone
1097   
1098   if (fPbCone) {
1099
1100       par0[0]  = 0.;
1101       par0[1]  = 360.;
1102       par0[2]  = 10.;
1103 /*
1104 //    start of cone
1105       par0[3]  = zConeE;
1106       par0[4]  = 30.;
1107       par0[5]  = 30.01;
1108 //    3rd station
1109       par0[6]  = zch31;
1110       par0[7]  = 30.;
1111       par0[8]  = 30.+(zch31-zConeE)*TMath::Tan(thetaOpenPbO);
1112
1113       par0[9]   = zch31;
1114       par0[10]  = 30.0;
1115       par0[11]  = par0[8]-1.;
1116       
1117
1118       par0[12]  = zch32;
1119       par0[13]  = 30.0;
1120       par0[14]  = par0[11];
1121 */
1122       par0[ 3]  = zch32;
1123       par0[ 4]  = 30.;
1124       par0[ 5]  = 30.+(zch32-zConeE)*TMath::Tan(thetaOpenPbO);
1125
1126 //    4th station
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);
1142
1143 //    5th station
1144       par0[18]  = zch51;
1145       par0[19]  = 30.;
1146       par0[20]  = 30.+(zch51-zConeE)*TMath::Tan(thetaOpenPbO);
1147
1148       par0[21]  = zch51;
1149       par0[22]  = 30.;
1150       par0[23]  = 37.5;                                            // recess erice2000
1151
1152       par0[24]  = zch52;
1153       par0[25]  = 30.;
1154       par0[26]  = par0[23];
1155
1156       par0[27]  = zch52;
1157       par0[28]  = 30.;
1158       par0[29]  = 30.+(zch52-zConeE)*TMath::Tan(thetaOpenPbO);
1159 // end of cone
1160       par0[30]  = zFilterIn;
1161       par0[31]  = 30.;
1162       par0[32]  = par0[29];
1163 //
1164       gMC->Gsvolu("YOPB", "PCON", idtmed[kPb], par0, 33);
1165       dz=0.;
1166       gMC->Gspos("YOPB", 1, "ALIC", 0., 0., dz, 0, "ONLY");
1167   }
1168 }
1169
1170 void 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 }