]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STRUCT/AliABSO.cxx
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / STRUCT / AliABSO.cxx
1 ///////////////////////////////////////////////////////////////////////////////
2 //                                                                           //
3 //  Muon ABSOrber                                                            //
4 //  This class contains the description of the muon absorber geometry        //
5 //                                                                           //
6 //Begin_Html
7 /*
8 <img src="gif/AliABSOClass.gif">
9 </pre>
10 <br clear=left>
11 <font size=+2 color=red>
12 <p>The responsible person for this module is
13 <a href="mailto:andreas.morsch@cern.ch">Andreas Morsch</a>.
14 </font>
15 <pre>
16 */
17 //End_Html
18 //                                                                           //
19 //                                                                           //
20 ///////////////////////////////////////////////////////////////////////////////
21
22 #include "AliABSO.h"
23 #include "AliRun.h"
24 #include "AliMC.h"
25 #include "AliConst.h"
26  
27 ClassImp(AliABSO)
28  
29 //_____________________________________________________________________________
30 AliABSO::AliABSO()
31 {
32   //
33   // Default constructor
34   //
35 }
36  
37 //_____________________________________________________________________________
38 AliABSO::AliABSO(const char *name, const char *title)
39        : AliDetector(name,title)
40 {
41   //
42   // Standard constructor
43   //
44   SetMarkerColor(7);
45   SetMarkerStyle(2);
46   SetMarkerSize(0.4);
47 }
48  
49 //_____________________________________________________________________________
50 void AliABSO::BuildGeometry()
51 {
52   //
53   // ROOT TNode geometry is built only for sensitive detectors
54   // and not for structural elements
55   //
56 }
57  
58 //_____________________________________________________________________________
59 void AliABSO::CreateGeometry()
60 {
61   //
62   // Creation of the geometry of the muon absorber
63   //
64   //Begin_Html
65   /*
66     <img src="gif/AliABSOTree.gif">
67   */
68   //End_Html
69   //Begin_Html
70   /*
71     <img src="gif/AliABSO.gif">
72   */
73   //End_Html
74
75   AliMC* pMC = AliMC::GetMC();
76   
77   Int_t *idtmed = gAlice->Idtmed();
78   
79   Float_t d_pb, cpar[5], dpar[12], tpar[3], zpos,
80     cpar1[5], cpar2[5], cpar3[5], cpar4[5], cpar5[12], 
81     cpar7[5], cpar8[5], cpar9[5], abs_c, abs_d,
82     abs_l, cpar10[5], r_abs;
83   Float_t theta1, theta2, abs_cc, d_rear, dz, zr,
84     z_cone, d_poly, z_nose, theta_open;
85   Float_t acc_min, acc_max, par[50], d_steel, z_w,
86     theta_r, epsilon;
87   //
88   abs_d   = 90.;    // DEFINES DRIFT LENGTH 
89   z_nose  = 102.;
90   z_cone  = 285.;
91   theta1  = 24.;    // 1. angle defining the front absorber 
92   theta2  = 5.;     // 2. angle defining the front absorbe 
93   acc_max = 9.;     // ANGLE POLAIRE MAXIMUM 
94   acc_min = 2.;     // ANGLE POLAIRE MINIMUM DE DETECTION 
95   abs_l   = 503.;
96   d_steel = 1.;     // THICKNESS OF STEEL SUPPORT 
97   d_poly  = 7.5;
98   d_pb    = 2.5;
99   abs_cc  = 315.;   // DEFINES LENGTH OF CARBON 
100   abs_c   = 358.;
101   //abs_s   = 150.;   // DEFINES W-SHIELD LENGTH 
102   //abs_n   = 80.;    // START OF NOSE 
103   r_abs   = 4.;
104   //r_pb    = .1;
105   epsilon = .01;
106   theta_r = 3.;
107   d_rear  = 35.;
108   theta_open = .75;
109   //
110   //z_l3     = 700.;
111   //zmag_in  = 725.;
112   //zmag_out = 1225.;
113   //zfil_in  = 1471.;
114   //zfil_out = 1591.;
115   //zcon_in  = 1900.;
116   //zcon_out = 2e3;
117   //zcone_e  = 859.0875;
118   //spec_l   = 1800.;
119   //zplug_in = 1780.;
120   //zplug_out= 1900.;
121   //
122   //     Chamber position 
123   //      CZ1=515.5 
124   //cz1 = 511.;
125   //cz2 = 686.;
126   //cz3 = 971.;
127   //cz4 = 1245.;
128   //cz5 = 1445.;
129   //cz6 = 1610.;
130   //cz7 = 1710.;
131   //
132   // --- Outer shape of front absorber 
133   par[0] = 0.;
134   par[1] = 360.;
135   par[2] = 4.;
136   par[3] = abs_d;
137   par[4] = 0.;
138   par[5] = abs_d * TMath::Tan(theta1 * kDegrad);
139   par[6] = z_nose;
140   par[7] = 0.;
141   par[8] = par[6] * TMath::Tan(theta1 * kDegrad);
142   par[9] = z_cone;
143   par[10] = 0.;
144   par[11] = par[8] + (par[9] - par[6]) * TMath::Tan(theta2 * kDegrad);
145   par[12] = abs_l;
146   par[13] = 0.;
147   par[14] = par[11] + (par[12] - par[9]) * TMath::Tan(acc_max * kDegrad);
148   pMC->Gsvolu("ABSM", "PCON", idtmed[1605], par, 15);
149   //
150   // --- Now define all elements of the absorber 
151   //
152   //       TUNGSTEN NOSE SEGMENT BETWEEN Z=90 AND 112 CM 
153   //       SHAPED ALONG A 24 DEG LINE 
154   //
155   cpar1[0] = (z_nose - abs_d) / 2.;
156   cpar1[1] = abs_d * TMath::Tan(acc_max * kDegrad) + d_steel;
157   cpar1[2] = abs_d * TMath::Tan(theta1 * kDegrad);
158   cpar1[3] = z_nose * TMath::Tan(acc_max * kDegrad) + d_steel;
159   cpar1[4] = z_nose * TMath::Tan(theta1 * kDegrad);
160   pMC->Gsvolu("ANOS", "CONE", idtmed[1611], cpar1, 5);
161   //
162   dz = cpar1[0] + abs_d;
163   pMC->Gspos("ANOS", 1, "ABSM", 0., 0., dz, 0, "ONLY");
164   //
165   //       IRON  SUPPORT STRUCTURE 
166   //
167   cpar2[0] = (abs_l - abs_d) / 2.;
168   cpar2[1] = abs_d * TMath::Tan(acc_max * kDegrad);
169   cpar2[2] = cpar2[1] + d_steel;
170   cpar2[3] = abs_l * TMath::Tan(acc_max * kDegrad);
171   cpar2[4] = cpar2[3] + d_steel;
172   pMC->Gsvolu("ASST", "CONE", idtmed[1658], cpar2, 5);
173   dz = cpar2[0] + abs_d;
174   pMC->Gspos("ASST", 1, "ABSM", 0., 0., dz, 0, "ONLY");
175   //
176   //       PB FRONT SHIELD INNER SEGMENT, ALSO POLYETHYLENE WAS 
177   //       CONSIDERED FOR THIS REGION 
178   //
179   cpar3[0] = (z_cone - z_nose) / 2.;
180   cpar3[1] = cpar1[3];
181   cpar3[2] = cpar1[3] + d_poly;
182   cpar3[3] = z_cone * TMath::Tan(acc_max * kDegrad) + d_steel;
183   cpar3[4] = cpar3[3] + d_poly;
184   pMC->Gsvolu("AWFS", "CONE", idtmed[1652], cpar3, 5);
185   dz = cpar3[0] + z_nose;
186   pMC->Gspos("AWFS", 1, "ABSM", 0., 0., dz, 0, "ONLY");
187   //
188   //       PB OUTER SURFACE 
189   //
190   cpar5[0] = 0.;
191   cpar5[1] = 360.;
192   cpar5[2] = 3.;
193   cpar5[3] = z_nose;
194   cpar5[4] = z_nose * TMath::Tan(acc_max * kDegrad) + d_steel + d_poly;
195   cpar5[5] = z_nose * TMath::Tan(theta1 * kDegrad);
196   cpar5[6] = z_cone;
197   cpar5[7] = z_cone * TMath::Tan(acc_max * kDegrad) + d_steel + d_poly;
198   cpar5[8] = cpar5[7] + d_pb;
199   cpar5[9] = abs_l;
200   cpar5[10] = abs_l * TMath::Tan(acc_max * kDegrad) + d_steel + d_poly;
201   cpar5[11] = cpar5[10] + d_pb;
202   pMC->Gsvolu("APBS", "PCON", idtmed[1612], cpar5, 12);
203   dz = 0.;
204   pMC->Gspos("APBS", 1, "ABSM", 0., 0., dz, 0, "ONLY");
205   //
206   //     POLYETHYLEN LAYER 
207   //
208   cpar4[0] = (abs_l - z_cone) / 2.;
209   cpar4[1] = z_cone * TMath::Tan(acc_max * kDegrad) + d_steel;
210   cpar4[2] = cpar4[1] + d_poly;
211   cpar4[3] = abs_l * TMath::Tan(acc_max * kDegrad) + d_steel;
212   cpar4[4] = cpar4[3] + d_poly;
213   pMC->Gsvolu("APOL", "CONE", idtmed[1657], cpar4, 5);
214   dz = cpar4[0] + z_cone;
215   pMC->Gspos("APOL", 1, "ABSM", 0., 0., dz, 0, "ONLY");
216   //
217   //     LEAD INNER SHIELD (inner radius const up to z=abs_c) 
218   //
219   z_w      = r_abs / TMath::Tan(acc_min * kDegrad);
220   cpar8[0] = (abs_c - z_w) / 2.;
221   cpar8[1] = r_abs;
222   cpar8[2] = r_abs + epsilon;
223   cpar8[3] = r_abs;
224   cpar8[4] = abs_c * TMath::Tan(acc_min * kDegrad);
225   pMC->Gsvolu("AWI1", "CONE", idtmed[1652], cpar8, 5);
226   dz = cpar8[0] + z_w;
227   pMC->Gspos("AWI1", 1, "ABSM", 0., 0., dz, 0, "ONLY");
228   //
229   //     TUNGSTEN OPENING CONE UP TO THE END 
230   //
231   cpar8[0] = (abs_l - abs_c) / 2.;
232   cpar8[1] = r_abs;
233   cpar8[2] = abs_c * TMath::Tan(acc_min * kDegrad);
234   cpar8[3] = cpar8[1] + cpar8[0] * 2. * TMath::Tan(theta_open * kDegrad);
235   cpar8[4] = abs_l * TMath::Tan(acc_min * kDegrad);
236   pMC->Gsvolu("AWI2", "CONE", idtmed[1651], cpar8, 5);
237   dz = cpar8[0] + abs_c;
238   pMC->Gspos("AWI2", 1, "ABSM", 0., 0., dz, 0, "ONLY");
239   //
240   //     CONCRETE CONE 
241   //
242   cpar7[0] = (abs_l - d_rear - abs_cc) / 2.;
243   cpar7[1] = abs_cc * TMath::Tan(acc_min * kDegrad);
244   cpar7[2] = abs_cc * TMath::Tan(acc_max * kDegrad);
245   cpar7[3] = (abs_l - d_rear) * TMath::Tan(acc_min * kDegrad);
246   cpar7[4] = (abs_l - d_rear) * TMath::Tan(acc_max * kDegrad);
247   pMC->Gsvolu("ACON", "CONE", idtmed[1656], cpar7, 5);
248   dz = cpar7[0] + abs_cc;
249   pMC->Gspos("ACON", 1, "ABSM", 0., 0., dz, 0, "ONLY");
250   //
251   //     REAR SHIELD 
252   //
253   zr = abs_l - d_rear;
254   cpar9[0] = 2.5;
255   cpar9[1] = zr * TMath::Tan(theta_r * kDegrad);
256   cpar9[2] = zr * TMath::Tan(acc_max * kDegrad);
257   cpar9[3] = cpar9[1] + TMath::Tan(theta_r * kDegrad) * 5.;
258   cpar9[4] = cpar9[2] + TMath::Tan(acc_max * kDegrad) * 5.;
259   pMC->Gsvolu("ARE1", "CONE", idtmed[1652], cpar9, 5);
260   dz  = cpar9[0] + zr;
261   zr += 5.;
262   pMC->Gspos("ARE1", 1, "ABSM", 0., 0., dz, 0, "ONLY");
263   //
264   cpar9[1] = zr * TMath::Tan(theta_r * kDegrad);
265   cpar9[2] = zr * TMath::Tan(acc_max * kDegrad);
266   cpar9[3] = cpar9[1] + TMath::Tan(theta_r * kDegrad) * 5.;
267   cpar9[4] = cpar9[2] + TMath::Tan(acc_max * kDegrad) * 5.;
268   pMC->Gsvolu("ARE2", "CONE", idtmed[1657], cpar9, 5);
269   dz  = cpar9[0] + zr;
270   zr += 5.;
271   pMC->Gspos("ARE2", 1, "ABSM", 0., 0., dz, 0, "ONLY");
272   //
273   cpar9[1] = zr * TMath::Tan(theta_r * kDegrad);
274   cpar9[2] = zr * TMath::Tan(acc_max * kDegrad);
275   cpar9[3] = cpar9[1] + TMath::Tan(theta_r * kDegrad) * 5.;
276   cpar9[4] = cpar9[2] + TMath::Tan(acc_max * kDegrad) * 5.;
277   pMC->Gsvolu("ARE3", "CONE", idtmed[1652], cpar9, 5);
278   dz  = cpar9[0] + zr;
279   zr += 5.;
280   pMC->Gspos("ARE3", 1, "ABSM", 0., 0., dz, 0, "ONLY");
281   //
282   cpar9[1] = zr * TMath::Tan(theta_r * kDegrad);
283   cpar9[2] = zr * TMath::Tan(acc_max * kDegrad);
284   cpar9[3] = cpar9[1] + TMath::Tan(theta_r * kDegrad) * 5.;
285   cpar9[4] = cpar9[2] + TMath::Tan(acc_max * kDegrad) * 5.;
286   pMC->Gsvolu("ARE4", "CONE", idtmed[1657], cpar9, 5);
287   dz  = cpar9[0] + zr;
288   zr += 5.;
289   pMC->Gspos("ARE4", 1, "ABSM", 0., 0., dz, 0, "ONLY");
290   //
291   cpar9[1] = zr * TMath::Tan(theta_r * kDegrad);
292   cpar9[2] = zr * TMath::Tan(acc_max * kDegrad);
293   cpar9[3] = cpar9[1] + TMath::Tan(theta_r * kDegrad) * 5.;
294   cpar9[4] = cpar9[2] + TMath::Tan(acc_max * kDegrad) * 5.;
295   pMC->Gsvolu("ARE5", "CONE", idtmed[1652], cpar9, 5);
296   dz  = cpar9[0] + zr;
297   zr += 5.;
298   pMC->Gspos("ARE5", 1, "ABSM", 0., 0., dz, 0, "ONLY");
299   //
300   cpar9[1] = zr * TMath::Tan(theta_r * kDegrad);
301   cpar9[2] = zr * TMath::Tan(acc_max * kDegrad);
302   cpar9[3] = cpar9[1] + TMath::Tan(theta_r * kDegrad) * 5.;
303   cpar9[4] = cpar9[2] + TMath::Tan(acc_max * kDegrad) * 5.;
304   pMC->Gsvolu("ARE6", "CONE", idtmed[1657], cpar9, 5);
305   dz  = cpar9[0] + zr;
306   zr += 5.;
307   pMC->Gspos("ARE6", 1, "ABSM", 0., 0., dz, 0, "ONLY");
308   //
309   cpar9[1] = zr * TMath::Tan(theta_r * kDegrad);
310   cpar9[2] = zr * TMath::Tan(acc_max * kDegrad);
311   cpar9[3] = cpar9[1] + TMath::Tan(theta_r * kDegrad) * 5.;
312   cpar9[4] = cpar9[2] + TMath::Tan(acc_max * kDegrad) * 5.;
313   pMC->Gsvolu("ARE7", "CONE", idtmed[1612], cpar9, 5);
314   dz  = cpar9[0] + zr;
315   zr += 5.;
316   pMC->Gspos("ARE7", 1, "ABSM", 0., 0., dz, 0, "ONLY");
317   //
318   //     TUNGSTEN REAR SHIELD INNER PART 
319   //
320   zr = abs_l - d_rear;
321   cpar10[0] = d_rear / 2.;
322   cpar10[1] = zr * TMath::Tan(acc_min * kDegrad);
323   cpar10[2] = zr * TMath::Tan(theta_r * kDegrad);
324   cpar10[3] = cpar10[1] + d_rear * TMath::Tan(acc_min * kDegrad);
325   cpar10[4] = cpar10[2] + d_rear * TMath::Tan(theta_r * kDegrad);
326   pMC->Gsvolu("ARIN", "CONE", idtmed[1611], cpar10, 5);
327   dz = cpar10[0] + zr;
328   pMC->Gspos("ARIN", 1, "ABSM", 0., 0., dz, 0, "ONLY");
329   //
330   //     ELEMENTS OF THE BEAM PIPE TO BE POSITIONED INTO THE ABSORBER 
331   //
332   //     MOTHER VOLUME 1. SEGMENT 
333   //
334   tpar[0] = 0.;
335   tpar[1] = r_abs;
336   tpar[2] = (abs_c - abs_d) / 2.;
337   pMC->Gsvolu("AATU", "TUBE", idtmed[1655], tpar, 3);
338   //
339   tpar[1] = r_abs - .8;
340   tpar[0] = tpar[1] - .2;
341   tpar[2] = (abs_c - abs_d) / 2.;
342   pMC->Gsvolu("ATUB", "TUBE", idtmed[1649], tpar, 3);
343   dz = 0.;
344   pMC->Gspos("ATUB", 1, "AATU", 0., 0., dz, 0, "ONLY");
345   //
346   dz = (abs_c - abs_d) / 2. + abs_d;
347   pMC->Gspos("AATU", 1, "ABSM", 0., 0., dz, 0, "ONLY");
348   //
349   //     MOTHER VOLUME 2. SEGMENT 
350   //
351   cpar[0] = (abs_l - abs_c) / 2.;
352   cpar[1] = 0.;
353   cpar[2] = r_abs;
354   cpar[3] = 0.;
355   cpar[4] = cpar[2] + cpar[0] * 2. * TMath::Tan(theta_open * kDegrad);
356   pMC->Gsvolu("AAT1", "CONE", idtmed[1655], cpar, 5);
357   //
358   cpar[0]  = (abs_l - abs_c) / 2.;
359   cpar[2] += -.8;
360   cpar[1]  = cpar[2] - .2;
361   cpar[4] += -.8;
362   cpar[3]  = cpar[4] - .2;
363   pMC->Gsvolu("ATU1", "CONE", idtmed[1649], cpar, 5);
364   dz = 0.;
365   pMC->Gspos("ATU1", 1, "AAT1", 0., 0., dz, 0, "ONLY");
366   //
367   dz = (abs_l - abs_c) / 2. + abs_c;
368   pMC->Gspos("AAT1", 1, "ABSM", 0., 0., dz, 0, "ONLY");
369   //
370   pMC->Gspos("ABSM", 1, "ALIC", 0., 0., 0., 0, "ONLY");
371   //
372   //       absorber support structure 
373   //
374   //       attention this element is positioned into ALIC 
375   //
376   dpar[0] = 0.;
377   dpar[1] = 360.;
378   dpar[2] = 3.;
379   dpar[3] = abs_l;
380   dpar[4] = abs_l * TMath::Tan(acc_max * kDegrad);
381   dpar[5] = dpar[4] + 4. / TMath::Cos(acc_max * kDegrad);
382   dpar[6] = 600.;
383   dpar[7] = TMath::Tan(acc_max * kDegrad) * 600;
384   dpar[8] = dpar[7] + 4. / TMath::Cos(acc_max * kDegrad);
385   dpar[9] = 670.;
386   dpar[10] = 159.;
387   dpar[11] = 163.5;
388   pMC->Gsvolu("ASUP", "PCON", idtmed[1618], dpar, 12);
389   dz = 0.;
390   pMC->Gspos("ASUP", 1, "ALIC", 0., 0., dz, 0, "ONLY");
391   //
392   //     Flange at the entrance of the absorber 
393   //
394   tpar[0] = 3.;
395   tpar[1] = 5.7;
396   tpar[2] = 2.;
397   pMC->Gsvolu("AF63", "TUBE", idtmed[1618], tpar, 3);
398   zpos = abs_d + tpar[2];
399   pMC->Gspos("AF63", 1, "ABSM", 0., 0., zpos, 0, "ONLY");
400 }
401
402 //_____________________________________________________________________________
403 void AliABSO::DrawDetector()
404 {
405   //
406   // Draw a shaded view of the muon absorber
407   //
408
409   AliMC* pMC = AliMC::GetMC();
410   
411   // Set everything unseen
412   pMC->Gsatt("*", "seen", -1);
413   // 
414   // Set ALIC mother transparent
415   pMC->Gsatt("ALIC","SEEN",0);
416   //
417   // Set the volumes visible
418   pMC->Gsatt("ABSM","seen",1);
419   pMC->Gsatt("ANOS","seen",1);
420   pMC->Gsatt("ASST","seen",1);
421   pMC->Gsatt("AWFS","seen",1);
422   pMC->Gsatt("APBS","seen",1);
423   pMC->Gsatt("APOL","seen",1);
424   pMC->Gsatt("AWI1","seen",1);
425   pMC->Gsatt("AWI2","seen",1);
426   pMC->Gsatt("ACON","seen",1);
427   pMC->Gsatt("ARE1","seen",1);
428   pMC->Gsatt("ARE2","seen",1);
429   pMC->Gsatt("ARE3","seen",1);
430   pMC->Gsatt("ARE4","seen",1);
431   pMC->Gsatt("ARE5","seen",1);
432   pMC->Gsatt("ARE6","seen",1);
433   pMC->Gsatt("ARE7","seen",1);
434   pMC->Gsatt("ARIN","seen",1);
435   pMC->Gsatt("AATU","seen",1);
436   pMC->Gsatt("ATUB","seen",1);
437   pMC->Gsatt("AAT1","seen",1);
438   pMC->Gsatt("ATU1","seen",1);
439   pMC->Gsatt("ASUP","seen",1);
440   pMC->Gsatt("AF63","seen",1);
441   //
442   pMC->Gdopt("hide", "on");
443   pMC->Gdopt("shad", "on");
444   pMC->Gsatt("*", "fill", 7);
445   pMC->SetClipBox(".");
446   pMC->SetClipBox("*", 0, 3000, -3000, 3000, -6000, 6000);
447   pMC->DefaultRange();
448   pMC->Gdraw("alic", 40, 30, 0, 21.5, 15, .04, .04);
449   pMC->Gdhead(1111, "Muon Absorber");
450   pMC->Gdman(16, 6, "MAN");
451   pMC->Gdopt("hide","off");
452 }
453
454 //_____________________________________________________________________________
455 void AliABSO::CreateMaterials()
456 {
457   //
458   // Define materials for muon absorber
459   //
460   Int_t   ISXFLD = gAlice->Field()->Integ();
461   Float_t SXMGMX = gAlice->Field()->Max();
462   
463   Float_t apoly[2]  = { 12.01,1. };
464   Float_t zpoly[2]  = { 6.,1. };
465   Float_t wpoly[2]  = { .33,.67 };
466   Float_t aconc[10] = { 1.,12.01,15.994,22.99,24.305,26.98,
467                         28.086,39.1,40.08,55.85 };
468   Float_t zconc[10] = { 1.,6.,8.,11.,12.,13.,14.,19.,20.,26. };
469   Float_t wconc[10] = { .01,.001,.529107,.016,.002,.033872,
470                         .337021,.013,.044,.014 };
471   Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
472   Float_t zsteel[4] = { 26.,24.,28.,14. };
473   Float_t wsteel[4] = { .715,.18,.1,.005 };
474   
475   Float_t epsil, stmin, tmaxfd, deemax, stemax;
476   //
477   //     Carbon 
478   AliMaterial(6, "CARBON$   ", 12.01, 6., 2.265, 18.8, 49.9);
479   AliMaterial(26, "CARBON$   ", 12.01, 6., 2.265, 18.8, 49.9);
480   AliMaterial(46, "CARBON$   ", 12.01, 6., 2.265, 18.8, 49.9);
481   //
482   //     Aluminum 
483   AliMaterial(9, "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 37.2);
484   AliMaterial(29, "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 37.2);
485   AliMaterial(49, "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 37.2);
486   //
487   //     Iron 
488   AliMaterial(10, "IRON$     ", 55.85, 26., 7.87, 1.76, 17.1);
489   AliMaterial(30, "IRON$     ", 55.85, 26., 7.87, 1.76, 17.1);
490   AliMaterial(50, "IRON$     ", 55.85, 26., 7.87, 1.76, 17.1);
491   //
492   //     Tungsten 
493   AliMaterial(12, "TUNGSTEN$ ", 183.85, 74., 19.3, .35, 10.3);
494   AliMaterial(32, "TUNGSTEN$ ", 183.85, 74., 19.3, .35, 10.3);
495   AliMaterial(52, "TUNGSTEN$ ", 183.85, 74., 19.3, .35, 10.3);
496   //
497   //     Lead 
498   AliMaterial(13, "LEAD$     ", 207.19, 82., 11.35, .56, 18.5);
499   AliMaterial(33, "LEAD$     ", 207.19, 82., 11.35, .56, 18.5);
500   AliMaterial(53, "LEAD$     ", 207.19, 82., 11.35, .56, 18.5);
501   //
502   //     Air 
503   AliMaterial(15, "AIR$      ", 14.61, 7.3, .001205, 30423.24, 67500.);
504   AliMaterial(35, "AIR$      ", 14.61, 7.3, .001205, 30423.24, 67500.);
505   AliMaterial(55, "AIR$      ", 14.61, 7.3, .001205, 30423.24, 67500.);
506   //
507   //     Vacuum 
508   AliMaterial(16, "VACUUM$ ", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
509   AliMaterial(36, "VACUUM$ ", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
510   AliMaterial(56, "VACUUM$ ", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
511   //
512   //     Concrete 
513   AliMixture(17, "CONCRETE$", aconc, zconc, 2.35, 10, wconc);
514   AliMixture(37, "CONCRETE$", aconc, zconc, 2.35, 10, wconc);
515   AliMixture(57, "CONCRETE$", aconc, zconc, 2.35, 10, wconc);
516   //
517   //     Poly CH2 
518   AliMixture(18, "POLYETHYLEN$", apoly, zpoly, .95, -2, wpoly);
519   //
520   // After a call with ratios by number (negative number of elements), 
521   // the ratio array is changed to the ratio by weight, so all successive 
522   // calls with the same array must specify the number of elements as 
523   // positive 
524   //
525   AliMixture(38, "POLYETHYLEN$", apoly, zpoly, .95, 2, wpoly);
526   AliMixture(58, "POLYETHYLEN$", apoly, zpoly, .95, 2, wpoly);
527   //
528   //     stainless Steel 
529   AliMixture(19, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
530   AliMixture(39, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
531   AliMixture(59, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
532   //
533   // **************** 
534   //     Defines tracking media parameters. 
535   //
536   epsil  = .001;  // Tracking precision, 
537   stemax = -1.;   // Maximum displacement for multiple scat 
538   tmaxfd = -20.;  // Maximum angle due to field deflection 
539   deemax = -.3;   // Maximum fractional energy loss, DLS 
540   stmin  = -.8;
541   // *************** 
542   //
543   //    Carbon 
544   AliMedium(1606, "C_C0             ", 6, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
545   AliMedium(1626, "C_C1             ", 26, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
546   AliMedium(1646, "C_C2             ", 46, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
547   //
548   //    Aluminum 
549   AliMedium(1609, "ALU_C0          ", 9, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
550   AliMedium(1629, "ALU_C1          ", 29, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
551   AliMedium(1649, "ALU_C2          ", 49, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
552   //
553   //    Iron 
554   AliMedium(1610, "FE_C0           ", 10, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
555   AliMedium(1630, "FE_C1           ", 30, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
556   AliMedium(1650, "FE_C2           ", 50, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
557   //
558   //    Tungsten 
559   AliMedium(1612, "W_C0            ", 12, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
560   AliMedium(1632, "W_C1            ", 32, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
561   AliMedium(1652, "W_C2            ", 52, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
562   //
563   //    Lead 
564   AliMedium(1613, "PB_C0           ", 13, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
565   AliMedium(1633, "PB_C1           ", 33, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
566   AliMedium(1653, "PB_C2           ", 53, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
567   //
568   //    Air 
569   AliMedium(1615, "AIR_C0          ", 15, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
570   AliMedium(1635, "AIR_C1          ", 35, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
571   AliMedium(1655, "AIR_C2          ", 55, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
572   //
573   //    Vacuum 
574   AliMedium(1616, "VA_C0           ", 16, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
575   AliMedium(1636, "VA_C1           ", 36, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
576   AliMedium(1656, "VA_C2           ", 56, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
577   //
578   //    Concrete 
579   AliMedium(1617, "CC_C0           ", 17, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
580   AliMedium(1637, "CC_C1           ", 37, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
581   AliMedium(1657, "CC_C2           ", 57, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
582   //
583   //    Polyethilene 
584   AliMedium(1618, "CH2_C0 B        ", 18, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
585   AliMedium(1638, "CH2_C1          ", 38, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
586   AliMedium(1658, "CH2_C2          ", 58, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
587   //
588   //    Steel 
589   AliMedium(1619, "ST_C0           ", 19, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
590   AliMedium(1639, "ST_C1           ", 39, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
591   AliMedium(1659, "ST_C3           ", 59, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
592 }
593
594 //_____________________________________________________________________________
595 void AliABSO::Init()
596 {
597   //
598   // Initialisation of the muon absorber after it has been built
599   Int_t i;
600   //
601   printf("\n");
602   for(i=0;i<35;i++) printf("*");
603   printf(" ABSO_INIT ");
604   for(i=0;i<35;i++) printf("*");
605   printf("\n");
606   //
607   for(i=0;i<80;i++) printf("*");
608   printf("\n");
609 }
610  
611 //_____________________________________________________________________________
612 void AliABSO::StepManager()
613 {
614   //
615   // Procedure called at every step in the muon absorber
616   //
617 }