edde3c30d0e0df04a16e9680cf84d978e1ff0ee8
[u/mrichter/AliRoot.git] / STRUCT / AliSHIL.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 */
19
20 ///////////////////////////////////////////////////////////////////////////////
21 //                                                                           //
22 //  Muon Shield Class                                                        //
23 //  This class contains a description of the muon shield                     //
24 //                                                                           //
25 //Begin_Html
26 /*
27 <img src="picts/AliSHILClass.gif">
28 */
29 //End_Html
30 //                                                                           //
31 //                                                                           //
32 ///////////////////////////////////////////////////////////////////////////////
33
34 #include "AliSHIL.h"
35 #include "AliRun.h"
36 #include "AliConst.h"
37
38 ClassImp(AliSHIL)
39  
40 //_____________________________________________________________________________
41 AliSHIL::AliSHIL()
42 {
43   //
44   // Default constructor for muon shield
45   //
46 }
47  
48 //_____________________________________________________________________________
49 AliSHIL::AliSHIL(const char *name, const char *title)
50   : AliModule(name,title)
51 {
52   //
53   // Standard constructor for muon shield
54   //
55   SetMarkerColor(7);
56   SetMarkerStyle(2);
57   SetMarkerSize(0.4);
58 }
59  
60 //_____________________________________________________________________________
61 void AliSHIL::CreateGeometry()
62 {
63   //
64   // Build muon shield geometry
65   //
66   // Origin N.Van Eijndhoven
67   //
68   //Begin_Html
69   /*
70     <img src="picts/AliSHIL.gif">
71   */
72   //End_Html
73   //Begin_Html
74   /*
75     <img src="picts/AliSHILTree.gif">
76   */
77   //End_Html
78
79   Float_t r_pb, cpar[5], parm[12], tpar[3], zmag_out,
80     abs_c, abs_l, r_abs, pcpar[12];
81   Float_t dr, dz, 
82     zs, theta_open;
83   Float_t cz1, cz2;
84   Float_t dzcoch1, dzcoch2, acc_min, dzs, zcone_e, zmag_in,
85     z_close, z_l3, shl1, shl4;
86     
87   Int_t *idtmed = fIdtmed->GetArray()-1699;
88   
89   //abs_d   = 90.;  // DEFINES DRIFT LENGTH 
90   //z_nose  = 102.;
91   //z_cone  = 285.;
92   //theta1  = 24.;  // 1. angle defining the front absorber 
93   //theta2  = 5.;   // 2. angle defining the front absorbe 
94   //acc_max = 9.;   // ANGLE POLAIRE MAXIMUM 
95   acc_min = 2.;   // ANGLE POLAIRE MINIMUM DE DETECTION 
96   abs_l   = 503.;
97   //d_steel = 1.;   // THICKNESS OF STEEL SUPPORT 
98   //d_poly  = 7.5;
99   //d_pb    = 2.5;
100   //abs_cc  = 315.; // DEFINES LENGTH OF CARBON 
101   abs_c   = 358.;
102   //abs_s   = 150.; // DEFINES W-SHIELD LENGTH 
103   //abs_n   = 80.;  // START OF NOSE 
104   r_abs   = 4.;
105   r_pb    = .1;
106   //epsilon = .01;
107   //theta_r = 3.;
108   //d_rear  = 35.;
109   theta_open = .75;
110   
111   z_l3      = 700.;
112   zmag_in   = 725.;
113   zmag_out  = 1225.;
114   //zfil_in   = 1471.;
115   //zfil_out  = 1591.;
116   //zcon_in   = 1900.;
117   //zcon_out  = 2e3;
118   zcone_e   = 859.0875;
119   //spec_l    = 1800.;
120   //zplug_in  = 1780.;
121   //zplug_out = 1900.;
122   
123   //     Chamber position 
124   //      CZ1=515.5 
125   cz1 = 511.;
126   cz2 = 686.;
127   //cz3 = 971.;
128   //cz4 = 1245.;
129   //cz5 = 1445.;
130   //cz6 = 1610.;
131   //cz7 = 1710.;
132   
133   
134   //  the mother of all shields 
135   
136   parm[0] = 0.;
137   parm[1] = 360.;
138   parm[2] = 3.;
139   parm[3] = abs_l;
140   parm[4] = 0.;
141   parm[5] = abs_l * TMath::Tan(acc_min * kDegrad);
142   parm[6] = zcone_e;
143   parm[7] = 0.;
144   parm[8] = 30.;
145   parm[9] = 1900.;
146   parm[10] = 0.;
147   parm[11] = 30.;
148   gMC->Gsvolu("YMOT", "PCON", idtmed[1715], parm, 12);
149   
150   //       beam shield ouside absorber inside l3 
151   
152   shl1    = (z_l3 - abs_l) / 2.;
153   cpar[0] = shl1;
154   cpar[1] = 0.;
155   cpar[2] = abs_l * TMath::Tan(acc_min * kDegrad);
156   cpar[3] = 0.;
157   cpar[4] = z_l3 * TMath::Tan(acc_min * kDegrad);
158   gMC->Gsvolu("YMS1", "CONE", idtmed[1759], cpar, 5);
159   
160   //       OUTSIDE STEEL TUBE 
161   // Pb/W 
162   cpar[1] = cpar[2] - 4.;
163   cpar[3] = cpar[4] - 4.;
164   gMC->Gsvolu("YSH1", "CONE", idtmed[1718], cpar, 5);
165   gMC->Gspos("YSH1", 1, "YMS1", 0., 0., 0., 0, "ONLY");
166   
167   //      COCHES FOR CHAMBERS 
168   dzcoch1 = cz1 + 4. - (abs_l + shl1);
169   dzcoch2 = cz2 + 4. - (abs_l + shl1);
170   
171   //       AIR 
172   cpar[0] = 7.5;
173   dr      = cpar[0] * 2. * TMath::Tan(acc_min * kDegrad);
174   cpar[2] = (cz1 + 4. - cpar[0]) * TMath::Tan(acc_min * kDegrad);
175   cpar[1] = cpar[2] - 3.;
176   cpar[3] = cpar[1] + dr;
177   cpar[4] = cpar[2] + dr;
178   gMC->Gsvolu("YAC1", "CONE", idtmed[1714], cpar, 5);
179   gMC->Gspos("YAC1", 1, "YMS1", 0., 0., dzcoch1, 0, "ONLY");
180   cpar[2] = (cz2 + 4. - cpar[0]) * TMath::Tan(acc_min * kDegrad);
181   cpar[1] = cpar[2] - 3.;
182   cpar[3] = cpar[1] + dr;
183   cpar[4] = cpar[2] + dr;
184   gMC->Gsvolu("YAC2", "CONE", idtmed[1714], cpar, 5);
185   gMC->Gspos("YAC2", 1, "YMS1", 0., 0., dzcoch2, 0, "ONLY");
186   
187   //       STEEL 
188   cpar[0] = (cz1 + 4. + 20. - abs_l) / 2.;
189   dr      = cpar[0] * 2. * TMath::Tan(acc_min * kDegrad);
190   //      CPAR(3)=ABS_L*TAN(kDegrad*ACC_MIN)-3. 
191   cpar[2] = abs_l * TMath::Tan(acc_min * kDegrad) - 4.;
192   cpar[1] = cpar[2] - 3.;
193   cpar[3] = cpar[1] + dr;
194   cpar[4] = cpar[2] + dr;
195   dzcoch1 = abs_l + cpar[0] - (abs_l + shl1);
196   gMC->Gsvolu("YSC1", "CONE", idtmed[1718], cpar, 5);
197   gMC->Gspos("YSC1", 1, "YMS1", 0., 0., dzcoch1, 0, "ONLY");
198   
199   cpar[0] = 16.;
200   dr      = cpar[0] * 2. * TMath::Tan(acc_min * kDegrad);
201   //      CPAR(3)=(CZ2+4.-CPAR(1))*TAN(kDegrad*ACC_MIN)-3. 
202   cpar[2] = (cz2 + 4. - cpar[0]) * TMath::Tan(acc_min * kDegrad) - 4.;
203   cpar[1] = cpar[2] - 3.;
204   cpar[3] = cpar[1] + dr;
205   cpar[4] = cpar[2] + dr;
206   gMC->Gsvolu("YSC2", "CONE", idtmed[1718], cpar, 5);
207   gMC->Gspos("YSC2", 1, "YMS1", -4., 0., dzcoch2, 0, "ONLY");
208   
209   //       ... beam pipe 
210   cpar[0] = shl1;
211   cpar[1] = 0.;
212   cpar[2] = r_abs + (abs_l - abs_c) * TMath::Tan(theta_open * kDegrad);
213   cpar[3] = 0.;
214   cpar[4] = cpar[2] + shl1 * 2. * TMath::Tan(theta_open * kDegrad);
215   gMC->Gsvolu("YMB1", "CONE", idtmed[1755], cpar, 5);
216   
217   cpar[0]  = shl1;
218   cpar[2] += -.8;
219   cpar[1]  = cpar[2] - .2;
220   cpar[4] += -.8;
221   cpar[3]  = cpar[4] - .2;
222   gMC->Gsvolu("YBS1", "CONE", idtmed[1749], cpar, 5);
223   gMC->Gspos("YBS1", 1, "YMB1", 0., 0., 0., 0, "ONLY");
224   
225   
226   gMC->Gspos("YMB1", 1, "YMS1", 0., 0., 0., 0, "ONLY");
227   dz = shl1 + abs_l;
228   gMC->Gspos("YMS1", 1, "YMOT", 0., 0., dz, 0, "ONLY");
229   
230   //       BEAM SHIELD OUTSIDE L3 
231   
232   //     L3->DIPOLE 
233   cpar[0] = (zmag_in - z_l3) / 2.;
234   cpar[1] = 0.;
235   cpar[2] = z_l3 * TMath::Tan(acc_min * kDegrad);
236   cpar[3] = 0.;
237   cpar[4] = zmag_in * TMath::Tan(acc_min * kDegrad);
238   gMC->Gsvolu("YMS2", "CONE", idtmed[1759], cpar, 5);
239   
240   //       OUTSIDE STEEL TUBE 
241   
242   // Pb/W 
243   cpar[1] = cpar[2] - 4.;
244   cpar[3] = cpar[4] - 4.;
245   gMC->Gsvolu("YSH2", "CONE", idtmed[1718], cpar, 5);
246   gMC->Gspos("YSH2", 1, "YMS2", 0., 0., 0., 0, "ONLY");
247   
248   //       ... beam pipe 
249
250   zs      = z_l3 - abs_c;
251   cpar[1] = 0.;
252   cpar[2] = r_abs + zs * TMath::Tan(theta_open * kDegrad);
253   cpar[3] = 0.;
254   cpar[4] = cpar[2] + cpar[0] * 2. * TMath::Tan(theta_open * kDegrad);
255   gMC->Gsvolu("YMB2", "CONE", idtmed[1755], cpar, 5);
256   
257   cpar[2] += -.8;
258   cpar[1]  = cpar[2] - .2;
259   cpar[4] += -.8;
260   cpar[3]  = cpar[4] - .2;
261   gMC->Gsvolu("YBS2", "CONE", idtmed[1749], cpar, 5);
262   gMC->Gspos("YBS2", 1, "YMB2", 0., 0., 0., 0, "ONLY");
263   
264   
265   gMC->Gspos("YMB2", 1, "YMS2", 0., 0., 0., 0, "ONLY");
266   dz = cpar[0] + z_l3;
267   gMC->Gspos("YMS2", 1, "YMOT", 0., 0., dz, 0, "ONLY");
268   pcpar[0] = 0.;
269   pcpar[1] = 360.;
270   pcpar[2] = 3.;
271   pcpar[3] = 0.;
272   pcpar[4] = 0.;
273   pcpar[5] = zmag_in * TMath::Tan(acc_min * kDegrad);
274   pcpar[6] = zcone_e - zmag_in;
275   pcpar[7] = 0.;
276   pcpar[8] = 30.;
277   pcpar[9] = zmag_out - zmag_in;
278   pcpar[10] = 0.;
279   pcpar[11] = 30.;
280   gMC->Gsvolu("YMS3", "PCON", idtmed[1759], pcpar, 12);
281   
282   //       OUTSIDE STEEL TUBE 
283   
284   // Pb/W 
285   pcpar[4]  = pcpar[5] - 4.;
286   pcpar[7]  = pcpar[8] - 4.;
287   pcpar[10] = pcpar[11] - 4.;
288   gMC->Gsvolu("YSH3", "PCON", idtmed[1718], pcpar, 12);
289   gMC->Gspos("YSH3", 1, "YMS3", 0., 0., 0., 0, "MANY");
290   
291   //       ... beam pipe up to closing cone 
292   
293   zs      = zmag_in - abs_c;
294   z_close = 804.;
295   
296   cpar[0] = (z_close - zmag_in) / 2.;
297   cpar[1] = 0.;
298   cpar[2] = r_abs + zs * TMath::Tan(theta_open * kDegrad);
299   cpar[3] = 0.;
300   cpar[4] = cpar[2] + cpar[0] * 2. * TMath::Tan(theta_open * kDegrad);
301   gMC->Gsvolu("YMB3", "CONE", idtmed[1755], cpar, 5);
302   
303   cpar[2] += -.8;
304   cpar[1]  = cpar[2] - .2;
305   cpar[4] += -.8;
306   cpar[3]  = cpar[4] - .2;
307   gMC->Gsvolu("YBS3", "CONE", idtmed[1749], cpar, 5);
308   gMC->Gspos("YBS3", 1, "YMB3", 0., 0., 0.,      0, "ONLY");
309   gMC->Gspos("YMB3", 1, "YMS3", 0., 0., cpar[0], 0, "ONLY");
310   
311   //       .closing cone 
312   
313   dzs = cpar[0] * 2.;
314   zs  = z_close - abs_c;
315   
316   cpar[0] = 25.;
317   cpar[1] = 0.;
318   cpar[2] = r_abs + zs * TMath::Tan(theta_open * kDegrad);
319   cpar[3] = 0.;
320   cpar[4] = r_abs;
321   gMC->Gsvolu("YMB5", "CONE", idtmed[1755], cpar, 5);
322   
323   cpar[2] += -.8;
324   cpar[1]  = cpar[2] - .2;
325   cpar[4] += -.8;
326   cpar[3]  = cpar[4] - .2;
327   gMC->Gsvolu("YBS5", "CONE", idtmed[1749], cpar, 5);
328   gMC->Gspos("YBS5", 1, "YMB5", 0., 0., 0., 0, "ONLY");
329   
330   dzs += cpar[0];
331   gMC->Gspos("YMB5", 1, "YMS3", 0., 0., dzs, 0, "ONLY");
332   dzs += cpar[0];
333   
334   //       OUTSIDE PB-TUBE 
335   
336   tpar[0] = 30. - r_pb - 4.;
337   tpar[1] = 30. - r_pb;
338   tpar[2] = (zmag_out - z_close - 50.) / 2.;
339   dzs    += tpar[2];
340   gMC->Gsvolu("YNW1", "TUBE", idtmed[1752], tpar, 3);
341   gMC->Gspos("YNW1", 1, "YMS3", 0., 0., dzs, 0, "MANY");
342   
343   //       constant beam pipe up to end of magnet 
344   
345   tpar[0] = 0.;
346   tpar[1] = r_abs;
347   tpar[2] = (zmag_out - z_close - 50.) / 2.;
348   gMC->Gsvolu("YMB6", "TUBE", idtmed[1755], tpar, 3);
349   
350   tpar[1] = r_abs - .8;
351   tpar[0] = tpar[1] - .2;
352   gMC->Gsvolu("YBS6", "TUBE", idtmed[1749], tpar, 3);
353   gMC->Gspos("YBS6", 1, "YMB6", 0., 0., 0.,  0, "ONLY");
354   gMC->Gspos("YMB6", 1, "YMS3", 0., 0., dzs, 0, "ONLY");
355   
356   dz = zmag_in;
357   gMC->Gspos("YMS3", 1, "YMOT", 0., 0., dz,  0, "ONLY");
358   
359   //       DIPOLE-> 
360   
361   tpar[0] = 0.;
362   tpar[1] = 30.;
363   tpar[2] = (1900. - zmag_out) / 2.;
364   shl4 = tpar[2];
365   gMC->Gsvolu("YMS4", "TUBE", idtmed[1759], tpar, 3);
366   //      CALL GSVOLU('YMS4','TUBE',IDTMED(1752),TPAR,3,IL3) ! W 
367   
368   //       OUTSIDE STEEL TUBE 
369   
370   // Pb/W 
371   tpar[0] = tpar[1] - 4.;
372   gMC->Gsvolu("YSH4", "TUBE", idtmed[1718], tpar, 3);
373   gMC->Gspos("YSH4", 1, "YMS4", 0., 0., 0., 0, "MANY");
374   
375   //       OUTSIDE PB-TUBE 
376   
377   tpar[0] = 30. - r_pb - 4.;
378   tpar[1] = 30. - r_pb;
379   gMC->Gsvolu("YNW2", "TUBE", idtmed[1752], tpar, 3);
380   gMC->Gspos("YNW2", 1, "YMS4", 0., 0., 0., 0, "MANY");
381   
382   //       ... beam pipe 
383   
384   tpar[0] = 0.;
385   tpar[1] = r_abs;
386   tpar[2] = shl4;
387   gMC->Gsvolu("YMB4", "TUBE", idtmed[1755], tpar, 3);
388   
389   tpar[2] = shl4;
390   tpar[1] = r_abs - .8;
391   tpar[0] = tpar[1] - .2;
392   gMC->Gsvolu("YBS4", "TUBE", idtmed[1749], tpar, 3);
393   gMC->Gspos("YBS4", 1, "YMB4", 0., 0., 0., 0, "ONLY");
394   
395   
396   dz = zmag_out + shl4;
397   gMC->Gspos("YMB4", 1, "YMS4", 0., 0., 0., 0, "ONLY");
398   gMC->Gspos("YMS4", 1, "YMOT", 0., 0., dz, 0, "ONLY");
399   gMC->Gspos("YMOT", 1, "ALIC", 0., 0., 0., 0, "ONLY");
400 }
401
402 //_____________________________________________________________________________
403 void AliSHIL::CreateMaterials()
404 {
405   //
406   // Defines materials for the muon shield
407   //
408   // Origin N. Van Eijndhoven
409   //
410   
411   Int_t   ISXFLD = gAlice->Field()->Integ();
412   Float_t SXMGMX = gAlice->Field()->Max();
413   
414   Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
415   Float_t zsteel[4] = { 26.,24.,28.,14. };
416   Float_t wsteel[4] = { .715,.18,.1,.005 };
417   Float_t apbw[2]   = { 207.2,183.85 };
418   Float_t zpbw[2]   = { 82.,74. };
419   Float_t wpbw[2]   = { .5,.5 };
420   
421   Float_t epsil, stmin, tmaxfd, deemax, stemax;
422   
423   //     STEEL 
424   
425   
426   //     LEAD/TUNGSTEN MIXTURE 
427   
428   
429   // --- Define the various materials for GEANT --- 
430   //     Aluminum 
431   AliMaterial(9,  "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 37.2);
432   AliMaterial(29, "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 37.2);
433   AliMaterial(49, "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 37.2);
434   
435   //     Iron 
436   AliMaterial(10, "IRON$     ", 55.85, 26., 7.87, 1.76, 17.1);
437   AliMaterial(30, "IRON$     ", 55.85, 26., 7.87, 1.76, 17.1);
438   AliMaterial(50, "IRON$     ", 55.85, 26., 7.87, 1.76, 17.1);
439   
440   //     Tungsten 
441   AliMaterial(12, "TUNGSTEN$ ", 183.85, 74., 19.3, .35, 10.3);
442   AliMaterial(32, "TUNGSTEN$ ", 183.85, 74., 19.3, .35, 10.3);
443   AliMaterial(52, "TUNGSTEN$ ", 183.85, 74., 19.3, .35, 10.3);
444   
445   //     Lead 
446   AliMaterial(13, "LEAD$     ", 207.19, 82., 11.35, .56, 18.5);
447   AliMaterial(33, "LEAD$     ", 207.19, 82., 11.35, .56, 18.5);
448   AliMaterial(53, "LEAD$     ", 207.19, 82., 11.35, .56, 18.5);
449   
450   //     Air 
451   AliMaterial(15, "AIR$      ", 14.61, 7.3, .001205, 30423.24, 67500);
452   AliMaterial(35, "AIR$      ", 14.61, 7.3, .001205, 30423.24, 67500);
453   AliMaterial(55, "AIR$      ", 14.61, 7.3, .001205, 30423.24, 67500);
454   
455   //     Vacuum 
456   AliMaterial(16, "VACUUM$ ", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
457   AliMaterial(36, "VACUUM$ ", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
458   AliMaterial(56, "VACUUM$ ", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
459   
460   //     stainless Steel 
461   AliMixture(19, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
462   AliMixture(39, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
463   AliMixture(59, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
464   
465   //     Lead/Tungsten 
466   AliMixture(20, "LEAD/TUNGSTEN$", apbw, zpbw, 15.325, 2, wpbw);
467   AliMixture(40, "LEAD/TUNGSTEN$", apbw, zpbw, 15.325, 2, wpbw);
468   AliMixture(60, "LEAD/TUNGSTEN$", apbw, zpbw, 15.325, 2, wpbw);
469   
470   // **************** 
471   //     Defines tracking media parameters. 
472   //     Les valeurs sont commentees pour laisser le defaut 
473   //     a GEANT (version 3-21, page CONS200), f.m. 
474   epsil  = .001;  // Tracking precision, 
475   stemax = -1.;   // Maximum displacement for multiple scat 
476   tmaxfd = -20.;  // Maximum angle due to field deflection 
477   deemax = -.3;   // Maximum fractional energy loss, DLS 
478   stmin  = -.8;
479   // *************** 
480   
481   //    Aluminum 
482   AliMedium(9, "ALU_C0          ", 9, 0,  ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
483   AliMedium(29, "ALU_C1          ", 29, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
484   AliMedium(49, "ALU_C2          ", 49, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
485   
486   //    Iron 
487   AliMedium(10, "FE_C0           ", 10, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
488   AliMedium(30, "FE_C1           ", 30, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
489   AliMedium(50, "FE_C2           ", 50, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
490   
491   //    Tungsten 
492   AliMedium(12, "W_C0            ", 12, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
493   AliMedium(32, "W_C1            ", 32, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
494   AliMedium(52, "W_C2            ", 52, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
495   
496   //    Lead 
497   AliMedium(13, "PB_C0           ", 13, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
498   AliMedium(33, "PB_C1           ", 33, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
499   AliMedium(53, "PB_C2           ", 53, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
500   
501   //    Air 
502   AliMedium(15, "AIR_C0          ", 15, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
503   AliMedium(35, "AIR_C1          ", 35, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
504   AliMedium(55, "AIR_C2          ", 55, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
505   
506   //    Vacuum 
507   AliMedium(16, "VA_C0           ", 16, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
508   AliMedium(36, "VA_C1           ", 36, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
509   AliMedium(56, "VA_C2           ", 56, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
510   
511   //    Steel 
512   AliMedium(19, "ST_C0           ", 19, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
513   AliMedium(39, "ST_C1           ", 39, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
514   AliMedium(59, "ST_C3           ", 59, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
515   
516   //    Lead/Tungsten 
517   AliMedium(20, "PB/W0           ", 20, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
518   AliMedium(40, "PB/W1           ", 40, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
519   AliMedium(60, "PB/W3           ", 60, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
520 }
521
522 //_____________________________________________________________________________
523 void AliSHIL::DrawModule () 
524 {
525   //
526   // Draw a shaded view of the muon shield
527   //
528
529   // Set everything unseen
530   gMC->Gsatt("*", "seen", -1);
531   // 
532   // Set ALIC mother transparent
533   gMC->Gsatt("ALIC","SEEN",0);
534   //
535   // Set the volumes visible
536   gMC->Gsatt("YMOT","seen",1);
537   gMC->Gsatt("YMS1","seen",1);
538   gMC->Gsatt("YSH1","seen",1);
539   gMC->Gsatt("YAC1","seen",1);
540   gMC->Gsatt("YAC2","seen",1);
541   gMC->Gsatt("YSC1","seen",1);
542   gMC->Gsatt("YSC2","seen",1);
543   gMC->Gsatt("YMB1","seen",1);
544   gMC->Gsatt("YBS1","seen",1);
545   gMC->Gsatt("YMS2","seen",1);
546   gMC->Gsatt("YSH2","seen",1);
547   gMC->Gsatt("YMB2","seen",1);
548   gMC->Gsatt("YBS2","seen",1);
549   gMC->Gsatt("YMS3","seen",1);
550   gMC->Gsatt("YSH3","seen",1);
551   gMC->Gsatt("YMB3","seen",1);
552   gMC->Gsatt("YBS3","seen",1);
553   gMC->Gsatt("YMB5","seen",1);
554   gMC->Gsatt("YBS5","seen",1);
555   gMC->Gsatt("YNW1","seen",1);
556   gMC->Gsatt("YMB6","seen",1);
557   gMC->Gsatt("YBS6","seen",1);
558   gMC->Gsatt("YMS4","seen",1);
559   gMC->Gsatt("YSH4","seen",1);
560   gMC->Gsatt("YNW2","seen",1);
561   gMC->Gsatt("YMB4","seen",1);
562   gMC->Gsatt("YBS4","seen",1);
563   //
564   gMC->Gdopt("hide", "on");
565   gMC->Gdopt("shad", "on");
566   gMC->Gsatt("*", "fill", 7);
567   gMC->SetClipBox(".");
568   gMC->SetClipBox("*", 0, 3000, -3000, 3000, -6000, 6000);
569   gMC->DefaultRange();
570   gMC->Gdraw("alic", 30, 30, 0, 26.5, 18, .03, .03);
571   gMC->Gdhead(1111, "Muon Shield");
572   gMC->Gdman(16, 6, "MAN");
573 }
574
575 //_____________________________________________________________________________
576 void AliSHIL::Init()
577 {
578   //
579   // Initialise the muon shield after it has been built
580   //
581   Int_t i;
582   //
583   printf("\n");
584   for(i=0;i<35;i++) printf("*");
585   printf(" SHIL_INIT ");
586   for(i=0;i<35;i++) printf("*");
587   printf("\n");
588   //
589   // Here the ABSO initialisation code (if any!)
590   for(i=0;i<80;i++) printf("*");
591   printf("\n");
592 }
593
594