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