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