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