Some more details in compensator geometry.
[u/mrichter/AliRoot.git] / STRUCT / AliDIPOv2.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /*
17 $Log$
18 Revision 1.16  2001/06/20 16:07:08  morsch
19 Compensator dipole MBWMD (MCB@SPS) added.
20
21 Revision 1.15  2001/03/16 15:34:37  morsch
22 Mothervolume defined MANY because overlap with station 3 mothervolume not avoidable (A. de Falco)
23
24 Revision 1.14  2000/12/21 16:37:23  morsch
25 Use Al for coil and cable material. The materials used before cause the dipole to
26 have hydrogene on the outer surface leading to unrealistic gamma rates due to
27 n-capture.
28
29 Revision 1.13  2000/10/02 21:28:15  fca
30 Removal of useless dependecies via forward declarations
31
32 Revision 1.12  2000/06/20 10:53:01  morsch
33 Volume placed outside mother volume (DDIP) corrected (Galina Chabratova)
34
35 Revision 1.11  2000/06/11 12:33:46  morsch
36 Coding rule violations corrected
37
38 Revision 1.10  2000/06/09 19:32:56  morsch
39 New detailed and corrected version from Galina Chabratova
40
41 Revision 1.9  2000/04/27 09:29:53  fca
42 Reverting to version 1.6.2
43
44 Revision 1.6.2.1  1999/12/03 16:38:51  fca
45 Correct overlap in magnet
46
47 Revision 1.6  1999/09/29 09:24:30  fca
48 Introduction of the Copyright and cvs Log
49
50 */
51
52 ///////////////////////////////////////////////////////////////////////////////
53 //                                                                           //
54 //  Magnetic Dipole version 1                                                //
55 //                                                                           //
56 //Begin_Html
57 /*
58 <img src="picts/AliDIPOv2Class.gif">
59 </pre>
60 <br clear=left>
61 <font size=+2 color=red>
62 <p>The responsible person for this module is
63 <a href="mailto:andreas.morsch@cern.ch">Andreas Morsch</a>.
64 </font>
65 <pre>
66 */
67 //End_Html
68 //                                                                           //
69 //                                                                           //
70
71 #include "AliDIPOv2.h"
72 #include "AliRun.h"
73 #include "AliMC.h"
74 #include "AliMagF.h"
75 #include "AliConst.h"
76  
77 ClassImp(AliDIPOv2)
78  
79 //_____________________________________________________________________________
80 AliDIPOv2::AliDIPOv2() 
81 {
82   //
83   // Last design of magnetic dipole version 2
84   //
85 }
86  
87 //_____________________________________________________________________________
88 AliDIPOv2::AliDIPOv2(const char *name, const char *title)
89   : AliDIPO(name,title)
90 {
91   //
92   // Standard constructor for the magnetic dipole version 2    
93    SetMarkerColor(7);
94    SetMarkerStyle(2);
95    SetMarkerSize(0.4);
96 }
97
98 void AliDIPOv2::CreateGeometry()
99 {
100   //
101   // Creation of the geometry of the magnetic DIPOLE version 2
102   //
103
104     CreateSpectrometerDipole();
105     CreateCompensatorDipole();
106 }
107
108
109 //_____________________________________________________________________________
110 void AliDIPOv2::CreateSpectrometerDipole()
111 {
112   //
113   // Creation of the geometry of the magnetic DIPOLE version 2
114   //
115
116   //  AliMC* gMC = AliMC::GetMC();
117
118   Float_t cpar[5], tpar[15], ypar[12];
119   Float_t dz, dx, dy;
120   Int_t idrotm[1899];
121   Float_t accMax, the1, phi1, the2, phi2, the3, phi3;
122   
123   Int_t *idtmed = fIdtmed->GetArray()-1799;
124
125 //  const Int_t kCoil = 1813;
126 //  const Int_t kCable= 1811;
127
128   const Int_t kCoil = 1808;
129   const Int_t kCable= 1808;
130   
131   accMax = 9.;   // ANGLE POLAIRE MAXIMUM 
132
133   //       DIPOLE MAGNET 
134
135   tpar[0] = 0.; 
136   tpar[1] = 360.;
137   tpar[2] = 4.; 
138   //
139   tpar[3] = -250.55;
140   tpar[4] = 144.;
141   tpar[5] = 527.34; 
142   //
143   tpar[6] = -160.7;
144   tpar[7] = 144.;
145   tpar[8] = 527.34; 
146   //
147   tpar[9] = 150.8;
148   tpar[10] = 193.3;
149   tpar[11] = 527.34;
150   //
151   tpar[12] = 250.55;
152   tpar[13] = 193.3;
153   tpar[14] = 527.34;
154
155
156   gMC->Gsvolu("DDIP", "PCON", idtmed[1814], tpar, 15);  
157   //       COILS 
158   // air - m.f. 
159   cpar[0] = 207.;
160   cpar[1] = 274.;
161   cpar[2] = 37.65;
162   cpar[3] = 119.;
163   cpar[4] = 241. ; 
164   //   coil - high cuts
165   gMC->Gsvolu("DC1 ", "TUBS", idtmed[kCoil+40], cpar, 5);
166   cpar[3] = -61.;
167   cpar[4] = 61.;
168   gMC->Gsvolu("DC2 ", "TUBS", idtmed[kCoil+40], cpar, 5);
169
170   //  coil - low cuts cuts
171   cpar[0] = 207.;
172 //  cpar[1] = cpar[0] + 10.;
173   cpar[1] = 217;
174   cpar[3] = 119.;
175   cpar[4] = 241.;
176
177   gMC->Gsvolu("DC3 ", "TUBS", idtmed[kCoil], cpar, 5);
178   cpar[0] = 207.; 
179   cpar[1] = 217; 
180   cpar[3] = -61.;
181   cpar[4] = 61.;
182   gMC->Gsvolu("DC4 ", "TUBS", idtmed[kCoil], cpar, 5);
183
184   gMC->Gspos("DC3 ", 1, "DC1 ", 0., 0., 0., 0, "ONLY");
185   gMC->Gspos("DC4 ", 1, "DC2 ", 0., 0., 0., 0, "ONLY");
186
187 //  dz =  37.65 - 243.55
188   dz = -205.9-2.45;
189   dx = 5.;
190   gMC->Gspos("DC1 ", 1, "DDIP", dx, 0.,  dz, 0, "ONLY");
191   gMC->Gspos("DC1 ", 2, "DDIP", dx, 0., -dz, 0, "ONLY");
192   gMC->Gspos("DC2 ", 1, "DDIP", -dx, 0.,  dz, 0, "ONLY");
193   gMC->Gspos("DC2 ", 2, "DDIP", -dx, 0., -dz, 0, "ONLY");
194   the1 = 180.;
195   phi1 = 0.;
196   the2 = 90.;
197   phi2 = 151.;
198   the3 = 90.;
199   phi3 = 61.;
200   AliMatrix(idrotm[1800], the1, phi1, the2, phi2, the3, phi3);
201   phi2 = 29.;  //90-61
202   the3 = -90.;
203   phi3 = -61.;
204   AliMatrix(idrotm[1801], the1, phi1, the2, phi2, the3, phi3);
205   the1 = 0.;
206   phi1 = 0.;
207   the2 = 90.;
208   phi2 = 151.;
209   the3 = 90.;
210   phi3 = 61.;
211   AliMatrix(idrotm[1802], the1, phi1, the2, phi2, the3, phi3);
212   phi2 = 29.;
213   the3 = -90.;
214   phi3 = -61.;
215   AliMatrix(idrotm[1803], the1, phi1, the2, phi2, the3, phi3);
216
217   cpar[0] = 25.;
218   cpar[1] = 100.3; //25+75.3
219   cpar[2] = 33.5;
220   cpar[3] = 270.;
221   cpar[4] = 360.;
222 //*  coil high cuts
223   gMC->Gsvolu("DC11", "TUBS", idtmed[kCoil+40], cpar, 5);
224
225   dx = TMath::Sin(30.5*kDegrad) * -(207.+33.5)+5./TMath::Sin(30.5*kDegrad) ; 
226   dy = TMath::Cos(30.5*kDegrad) * -(207.+33.5);  
227   dz = cpar[1] - 243.55-2.45;
228   gMC->Gspos("DC11", 1, "DDIP",  dx, dy,  dz, idrotm[1800], "ONLY");
229   gMC->Gspos("DC11", 2, "DDIP",  dx, dy, -dz, idrotm[1802], "ONLY");
230   gMC->Gspos("DC11", 3, "DDIP", -dx, dy,  dz, idrotm[1801], "ONLY");
231   gMC->Gspos("DC11", 4, "DDIP", -dx, dy, -dz, idrotm[1803], "ONLY");
232
233
234
235 //* ... higher cuts
236   cpar[0] = 25.;
237   cpar[1] = 100.3; //25+75.3
238   cpar[2] = 33.5;
239   cpar[3] = 0.;
240   cpar[4] = 90.;
241 //*  coil high cuts
242   gMC->Gsvolu("DC12", "TUBS", idtmed[kCoil+40], cpar, 5);
243
244   dx = TMath::Sin(30.5*kDegrad) * -(207.+33.5)+5./TMath::Sin(30.5*kDegrad) ; 
245   dy = TMath::Cos(30.5*kDegrad) *(207.+33.5);  
246   dz = cpar[1] - 243.55-2.45;
247   gMC->Gspos("DC12", 1, "DDIP",  dx, dy,  dz, idrotm[1801], "ONLY");
248   gMC->Gspos("DC12", 2, "DDIP",  dx, dy, -dz, idrotm[1803], "ONLY");
249   gMC->Gspos("DC12", 3, "DDIP", -dx, dy,  dz, idrotm[1800], "ONLY");
250   gMC->Gspos("DC12", 4, "DDIP", -dx, dy, -dz, idrotm[1802], "ONLY");
251
252   the1 = 90.;
253   phi1 = 61.;
254   the2 = 90.;
255   phi2 = 151.;
256   the3 = 0.;
257   phi3 = 0.;
258   AliMatrix(idrotm[1804], the1, phi1, the2, phi2, the3, phi3);
259   the1 = 90.;
260   phi1 = -61.;
261   the2 = 90.;
262   phi2 = -151.;
263   AliMatrix(idrotm[1805], the1, phi1, the2, phi2, the3, phi3);
264   the1 = 90.;
265   phi1 = 119.; //180 -61
266   the2 = 90.;
267   phi2 = 209.; //270-61
268   AliMatrix(idrotm[1806], the1, phi1, the2, phi2, the3, phi3);
269   the1 = 90.;
270   phi1 = -119.;
271   the2 = 90.;
272   phi2 = -209.;
273   AliMatrix(idrotm[1807], the1, phi1, the2, phi2, the3, phi3); 
274
275 //*  coil - high cuts
276
277   tpar[0] = 37.65;
278   tpar[1] = 33.5;
279   tpar[2] = 145.5;
280   gMC->Gsvolu("DL1 ", "BOX ", idtmed[kCoil+40], tpar, 3);
281
282 // coil - low cuts
283
284   tpar[0] = 5.;
285   dx = 37.65  - 5.;  
286   gMC->Gsvolu("DL2 ", "BOX ", idtmed[kCoil], tpar, 3);
287   gMC->Gspos("DL2 ", 1, "DL1 ", dx, 0., 0., 0, "ONLY");
288
289   dx =-53.62;
290   dy =-241.26819;
291   dz = 0.0; 
292   gMC->Gspos("DL1 ", 1, "DDIP", dx,  dy, dz, idrotm[1804], "ONLY");
293   gMC->Gspos("DL1 ", 2, "DDIP", dx, -dy, dz, idrotm[1805], "ONLY");
294   gMC->Gspos("DL1 ", 3, "DDIP",-dx,  dy, dz, idrotm[1806], "ONLY");
295   gMC->Gspos("DL1 ", 4, "DDIP",-dx, -dy, dz, idrotm[1807], "ONLY");
296
297   // Contactor
298
299  //  high cuts
300
301   //Steel outer face planes
302
303   cpar[0] = 207.-18.6;
304   cpar[1] = 274.+18.6;
305   cpar[2] = 1.;
306   cpar[3] = -50.;
307   cpar[4] = 50.; 
308  
309   gMC->Gsvolu("DCO1", "TUBS", idtmed[1818], cpar, 5);
310   dx = -5.;
311   dz = 168.25-1.5-1.;
312   gMC->Gspos("DCO1", 1, "DDIP", dx, 0, dz, 0, "ONLY");
313   dz = 243.55+4.5+1.5+1.;
314   gMC->Gspos("DCO1", 2, "DDIP", dx, 0, dz, 0, "ONLY");
315   
316   // 9.06.2000
317
318   //  cpar[0] = 207.-18.6;
319   //  cpar[1] = 274.+18.6;
320   // cpar[2] = 1.;
321   cpar[3] = 180.-50.;
322   cpar[4] = 180.+50.; 
323  
324   gMC->Gsvolu("DCO2", "TUBS", idtmed[1818], cpar, 5);
325   dx = +5.;
326   dz = 168.25-1.5-1.;
327   gMC->Gspos("DCO2", 1, "DDIP", dx, 0, dz, 0, "ONLY");
328   dz = 243.55+4.5+1.5+1.;
329   gMC->Gspos("DCO2", 2, "DDIP", dx, 0, dz, 0, "ONLY");
330  
331
332
333   // Resin face planes
334
335   cpar[0] = 207.;
336   cpar[1] = 274.;
337   cpar[2] = .75;
338   cpar[3] = -50.;
339   cpar[4] = 50.; 
340  
341   gMC->Gsvolu("DCO3", "TUBS", idtmed[1812], cpar, 5);
342   dx = -5;
343   dz = 168.25-0.75;
344   gMC->Gspos("DCO3", 1, "DDIP", dx,  0, dz, 0, "ONLY");
345   dz = 243.55+4.5+0.75;
346   gMC->Gspos("DCO3", 2, "DDIP", dx,  0, dz, 0, "ONLY");
347
348   // 9.06.2000
349
350   cpar[3] = 180.-50.;
351   cpar[4] = 180.+50.; 
352   gMC->Gsvolu("DCO4", "TUBS", idtmed[1812], cpar, 5);
353   dx = +5;
354   dz = 168.25-0.75;
355   gMC->Gspos("DCO4", 1, "DDIP", dx,  0, dz, 0, "ONLY");
356   dz = 243.55+4.5+0.75;
357   gMC->Gspos("DCO4", 2, "DDIP", dx,  0, dz, 0, "ONLY");
358
359  
360   // G10 face plane
361
362   cpar[0] = 207.;
363   cpar[1] = 274.;
364   cpar[2] = 2.25;
365   cpar[3] = -50.;
366   cpar[4] = 50.; 
367  
368   gMC->Gsvolu("DCO5", "TUBS", idtmed[1810], cpar, 5);
369
370   dx = -5;
371   dz = 243.55+2.25;
372   gMC->Gspos("DCO5", 1, "DDIP", dx,  0, dz, 0, "ONLY");
373
374   // 9.06.2000
375
376   cpar[3] = 180.-50.;
377   cpar[4] = 180.+50.; 
378
379   gMC->Gsvolu("DCO6", "TUBS", idtmed[1810], cpar, 5);
380
381   dx = +5;
382    dz = 243.55+2.25;
383   gMC->Gspos("DCO6", 1, "DDIP", dx,  0, dz, 0, "ONLY");
384
385   //Steel supported planes
386
387   cpar[0] = 274.+1.5+2.;
388   cpar[1] = 274.+18.6;
389   cpar[2] = 1.;
390   cpar[3] = -50.;
391   cpar[4] = 50.;  
392  
393   gMC->Gsvolu("DCO7", "TUBS", idtmed[1818], cpar, 5);
394
395   dx = -5;
396   dz = 168.25+1.;
397   gMC->Gspos("DCO7", 1, "DDIP", dx, 0, dz, 0, "ONLY");
398
399   // 9.06.2000
400   cpar[0] = 274.+1.5+2.;
401   cpar[1] = 274.+18.6;
402   cpar[2] = 1.;
403   cpar[3] = 180.-50.;
404   cpar[4] = 180.+50.; 
405
406  
407   gMC->Gsvolu("DCO8", "TUBS", idtmed[1818], cpar, 5);
408
409   dx = +5;
410   dz = 168.25+1.;
411   gMC->Gspos("DCO8", 1, "DDIP", dx, 0, dz, 0, "ONLY");
412
413   //
414
415   cpar[0] = 207.- 18.6;
416   cpar[1] = 207.- 2.- 1.5;
417   cpar[2] = 1.;
418   cpar[3] = -50.;
419   cpar[4] = 50.; 
420
421   gMC->Gsvolu("DCO9", "TUBS", idtmed[1818], cpar, 5);
422
423   dx = -5;
424   dz = 168.25+1.;
425   gMC->Gspos("DCO9", 1, "DDIP", dx, 0, dz, 0, "ONLY");
426
427   // 9.06.2000
428
429   cpar[0] = 207.- 18.6;
430   cpar[1] = 207.- 2.- 1.5;
431   cpar[2] = 1.;
432   cpar[3] = 180.-50.;
433   cpar[4] = 180.+50.; 
434
435   gMC->Gsvolu("DCOA", "TUBS", idtmed[1818], cpar, 5);
436
437   dx = +5;
438   dz = 168.25+1.;
439   gMC->Gspos("DCOA", 1, "DDIP", dx, 0, dz, 0, "ONLY");
440
441
442   // Sides steel planes
443
444   cpar[0] = 207. - 1.5 -2.;
445   cpar[1] = 207. - 1.5 ;
446   cpar[2] = ((243.55+4.5+1.5)-168.25)/2;
447   cpar[3] = -50.;
448   cpar[4] = 50.; 
449  
450   gMC->Gsvolu("DCOB", "TUBS", idtmed[1818], cpar, 5);
451
452   cpar[0] = 274. + 1.5;
453   cpar[1] = 274. + 1.5 +2.;
454
455   gMC->Gsvolu("DCOC", "TUBS", idtmed[1818], cpar, 5);
456
457   dx=-5.;
458   dz = ((243.55+4.5+1.5)+168.25)/2;
459   gMC->Gspos("DCOB", 1, "DDIP", dx,  0, dz, 0, "ONLY");
460   gMC->Gspos("DCOC", 1, "DDIP", dx,  0, dz, 0, "ONLY");
461
462   // 9.06.2000
463
464   cpar[0] = 207. - 1.5 -2.;
465   cpar[1] = 207. - 1.5 ;
466   cpar[2] = ((243.55+4.5+1.5)-168.25)/2;
467   cpar[3] = 180.-50.;
468   cpar[4] = 180.+50.; 
469
470   gMC->Gsvolu("DCOD", "TUBS", idtmed[1818], cpar, 5);
471
472   cpar[0] = 274. + 1.5;
473   cpar[1] = 274. + 1.5 +2.;
474
475   gMC->Gsvolu("DCOE", "TUBS", idtmed[1818], cpar, 5);
476
477   dx=+5.;
478   dz = ((243.55+4.5+1.5)+168.25)/2;
479   gMC->Gspos("DCOD", 1, "DDIP", dx,  0, dz, 0, "ONLY");
480   gMC->Gspos("DCOE", 1, "DDIP", dx,  0, dz, 0, "ONLY");
481
482
483   // Top and bottom resin  planes
484
485   cpar[0] = 207. - 1.5 ;
486   cpar[1] = 207. ;
487   cpar[2] = ((243.55+4.5+1.5)-168.25)/2;
488   cpar[3] = -50.;
489   cpar[4] = 50.; 
490  
491   gMC->Gsvolu("DCOF", "TUBS", idtmed[1812], cpar, 5);
492
493   cpar[0] = 274.;
494   cpar[1] = 274. + 1.5;
495
496   gMC->Gsvolu("DCOG", "TUBS", idtmed[1812], cpar, 5);
497
498
499   dx=-5.;
500   dz = ((243.55+4.5+1.5)+168.25)/2;
501   gMC->Gspos("DCOF", 1, "DDIP", dx,  0, dz, 0, "ONLY");
502   gMC->Gspos("DCOG", 1, "DDIP", dx,  0, dz, 0, "ONLY");
503
504   // 9.06.2000
505   cpar[0] = 207. - 1.5 ;
506   cpar[1] = 207. ;
507   cpar[2] = ((243.55+4.5+1.5)-168.25)/2;
508
509   cpar[3] = 180.-50.;
510   cpar[4] = 180.+50.; 
511
512   gMC->Gsvolu("DCOH", "TUBS", idtmed[1812], cpar, 5);
513
514   cpar[0] = 274.;
515   cpar[1] = 274. + 1.5;
516
517   gMC->Gsvolu("DCOI", "TUBS", idtmed[1812], cpar, 5);
518
519
520   dx=+5.;
521   dz = ((243.55+4.5+1.5)+168.25)/2;
522   gMC->Gspos("DCOH", 1, "DDIP", dx,  0, dz, 0, "ONLY");
523   gMC->Gspos("DCOI", 1, "DDIP", dx,  0, dz, 0, "ONLY");
524
525
526   // Aluminum cabels
527
528   cpar[0] = 274. + 1.5  +2.;
529   cpar[1] = 274. + 1.5  +2. + 80.;
530   cpar[2] = 5.05/2;
531   cpar[3] = -24.;
532   cpar[4] = 24.; 
533  
534   gMC->Gsvolu("DCOJ", "TUBS", idtmed[kCable], cpar, 5);
535
536   //  dx = 274. + 1.5  +2. +40.;
537   //  dx = 5. + 1.5 +2. +40.;
538   //  dx = 5. + 1.5 +2.;
539   dx=-5.;
540   dz = 168.25 + 5.05 + 5.05/2;
541   gMC->Gspos("DCOJ", 1, "DDIP", dx,  0, dz, 0, "ONLY");
542
543   dz = 243.55 - 5.05/2;
544   gMC->Gspos("DCOJ", 2, "DDIP", dx,  0, dz, 0, "ONLY");
545
546   // 9.06.2000
547
548   cpar[3] = 180.-24.;
549   cpar[4] = 180.+24.; 
550
551    gMC->Gsvolu("DCOK", "TUBS", idtmed[kCable], cpar, 5);
552
553   //  dx = 274. + 1.5  +2. +40.;
554   //  dx = 5. + 1.5 +2. +40.;
555   //  dx = 5. + 1.5 +2.;
556   dx=+5.;
557   dz = 168.25 + 5.05 + 5.05/2;
558   gMC->Gspos("DCOK", 1, "DDIP", dx,  0, dz, 0, "ONLY");
559
560   dz = 243.55 - 5.05/2;
561   gMC->Gspos("DCOK", 2, "DDIP", dx,  0, dz, 0, "ONLY");
562
563  
564   //   YOKE 
565
566 // Top and bottom blocks
567   ypar[0] = 298.1 ; 
568   ypar[1] = 69.5;
569   ypar[2] = 155.75;
570
571 // iron- high cuts
572   gMC->Gsvolu("DY1 ", "BOX ", idtmed[1858], ypar, 3);
573   ypar[0] = 144.+10. ; 
574   ypar[1] = 193.3+10.;
575   ypar[2] = 5.;
576   ypar[3] = 155.75;
577   dy = -69.5 + 5.;
578 // iron- low cuts
579   gMC->Gsvolu("DY11", "TRD1", idtmed[1818], ypar, 4);
580   gMC->Gspos("DY11", 1, "DY1 ", 0.,  dy, 0., 0, "ONLY");
581
582   dy = 365.5;
583   dz = 4.95;
584   gMC->Gspos("DY1 ", 1, "DDIP", 0.,  dy, -dz, 0, "ONLY");
585
586   the1 = 270.;
587   phi1 = 0.;
588   the2 = 270.;
589   phi2 = 90.;
590   the3 = 0.;
591   phi3 = 0.;
592   AliMatrix(idrotm[1808], the1, phi1, the2, phi2, the3, phi3);
593   gMC->Gspos("DY1 ", 2, "DDIP", 0., -dy, -dz, idrotm[1808] , "ONLY");
594
595 // side walls
596   //  ypar[0] = 579./2. ; 
597   ypar[0] = 296. ; 
598   ypar[1] = 0.;
599   ypar[2] = 0.;
600   ypar[3] = 155.75;
601   ypar[4] = 47.9 ;
602   ypar[5] = 72.55;
603   ypar[6] = 4.3058039629 ;
604   // z+ 
605   ypar[7] = 155.75;
606   ypar[8] = 47.9 ;
607   ypar[9] = 72.55;
608   ypar[10] = 4.3058039629 ;
609
610 // iron - high cuts
611
612   gMC->Gsvolu("DY2 ", "TRAP", idtmed[1858], ypar,11);
613
614   ypar[4] = 47.9 -5.;
615   ypar[5] = 72.55 -5.;
616
617   ypar[8] = 47.9 -5.;
618   ypar[9] = 72.55 -5.;
619
620
621 // iron - low cuts
622
623   gMC->Gsvolu("DY22", "TRAP", idtmed[1818], ypar,11);
624
625   dy = 0.;
626   dx = -5.;
627
628   gMC->Gspos("DY22", 1, "DY2 ", dx,  dy, 0., 0, "ONLY");
629
630   the1 = 90.;
631   phi1 = 180.;
632   the2 = 180.;
633   phi2 = 180.;
634   the3 = 90.;
635   phi3 = 90.;
636   AliMatrix(idrotm[1809], the1, phi1, the2, phi2, the3, phi3);
637
638   the1 = 90.;
639   phi1 = 0.;
640   the2 = 180.;
641   phi2 = 0.;
642   the3 = 90. ;
643   phi3 = 90.;
644   AliMatrix(idrotm[1810], the1, phi1, the2, phi2, the3, phi3);
645
646   dx = 228.875;
647   dz = - 4.95;
648   gMC->Gspos("DY2 ", 1, "DDIP", dx, 0.0,  dz, idrotm[1809], "ONLY");
649   gMC->Gspos("DY2 ", 2, "DDIP", -dx, 0.0,  dz, idrotm[1810], "ONLY");
650
651   dz=975.;
652   gMC->Gspos("DDIP", 1, "ALIC", 0., 0., dz, 0, "MANY");
653
654   gMC->Gsatt("DDIP", "SEEN", 0);
655 //  gMC->Gsatt("DC21", "SEEN", 0);
656 //  gMC->Gsatt("DC22", "SEEN", 0);
657 //  gMC->Gsatt("DC3 ", "SEEN", 0);
658 //  gMC->Gsatt("DC4 ", "SEEN", 0);
659 }
660
661
662 void AliDIPOv2::CreateCompensatorDipole()
663 {
664     //
665     //  Geometry of the compensator Dipole MBWMD (was MCB @ SPS)
666     // 
667     Int_t *idtmed = fIdtmed->GetArray()-1799;
668     Int_t idrotm[1899];
669 //
670     Float_t pbox[3] = {62.5, 62.5, 170.};
671     
672 //  Mother volumes
673     gMC->Gsvolu("DCM0", "BOX", idtmed[1814], pbox, 3);
674
675 //
676 //  Mother volume containing lower coil
677     pbox[0] = 58.5/2.;
678     pbox[1] = 30.0;
679     pbox[2] = 152.5;
680     
681     gMC->Gsvolu("DCML", "BOX", idtmed[1809], pbox, 3);
682 //
683 // Base
684     pbox[0] = 62.5;
685     pbox[1] = 15.0;
686     gMC->Gsvolu("DCBA", "BOX", idtmed[1809], pbox, 3);
687 //
688 // Coil: straight sections, horizontal
689     pbox[0] =   6.;
690     pbox[1] =  11.;
691     pbox[2] = 135.;
692     gMC->Gsvolu("DCH1", "BOX", idtmed[1816], pbox, 3);
693 //
694 // Coil: straight sections, horizontal
695     pbox[0] =   6.;
696     pbox[1] =  11.;
697     pbox[2] = 135.;
698     gMC->Gsvolu("DCH2", "BOX", idtmed[1816], pbox, 3);
699
700 //
701 // Mother volume containing upper coil
702     pbox[0] =    8.0;
703     pbox[1] =   17.5;
704     pbox[2] =  135.0;
705     gMC->Gsvolu("DCMU", "BOX", idtmed[1809], pbox, 3);
706
707 //
708 // Coil: straight sections, vertical
709     pbox[0] =  6.0;
710     pbox[1] =  9.5;
711     pbox[2] = 11.0;
712     
713     gMC->Gsvolu("DCCV", "BOX", idtmed[1816], pbox, 3);
714 //
715 // Coil: circular section 
716
717     Float_t ptubs[5];
718     ptubs[0] =  0.;
719     ptubs[1] = 35.;
720     ptubs[2] =  8.;
721     ptubs[3] =  0.;
722     ptubs[4] = 90.;
723 //    gMC->Gsvolu("DCC1", "TUBS", idtmed[1809], ptubs, 5);
724     ptubs[0] = 13.;
725     ptubs[1] = 35.;
726     ptubs[2] =  6.;
727     ptubs[3] =  0.;
728     ptubs[4] = 90.;
729     gMC->Gsvolu("DCC1", "TUBS", idtmed[1816], ptubs, 5);
730 //
731 // Clamps
732     Float_t ppgon[10];
733     ppgon[0] =  0.;
734     ppgon[1] = 90.;
735     ppgon[2] =  1.;
736     ppgon[3] =  2.;
737     ppgon[4] = -1.;
738     ppgon[5] =  0.;
739     ppgon[6] = 24.75;
740     ppgon[7] =  1.;
741     ppgon[8] =  0.;
742     ppgon[9] = 24.75;
743     gMC->Gsvolu("DCLA", "PGON", idtmed[1809], ppgon, 10);
744 //
745 // Assemble all
746 //
747     AliMatrix(idrotm[1811], -90., 0., 90., 90.,   0., 0.);
748     AliMatrix(idrotm[1812],   0., 0., 90., 90.,  90., 0.);  
749     AliMatrix(idrotm[1813], 180., 0., 90., 90.,  90., 0.);
750     AliMatrix(idrotm[1814],   0., 180., 90., 270.,  90., 0.);
751     AliMatrix(idrotm[1815], 180., 180., 90., 270.,  90., 0.);  
752         
753     gMC->Gspos("DCH1", 1, "DCML", 23.25, -13., -17.5, 0, "ONLY");
754     gMC->Gspos("DCCV", 1, "DCM0",  12., 19., -159., 0, "ONLY");
755     gMC->Gspos("DCCV", 2, "DCM0", -12., 19., -159., 0, "ONLY");
756     gMC->Gspos("DCCV", 3, "DCML", 23.25, 20.5, 141.5, 0, "ONLY");
757
758     gMC->Gspos("DCML", 1, "DCM0", -33.25, -2.5, 17.5, 0, "ONLY");
759     gMC->Gspos("DCML", 2, "DCM0",  33.25, -2.5, 17.5, idrotm[1811], "ONLY");
760
761
762     gMC->Gspos("DCH2", 1, "DCMU", 2., 6.5, 0., 0, "ONLY");
763     gMC->Gspos("DCMU", 1, "DCM0", -12., 45., 0., 0, "ONLY");
764     gMC->Gspos("DCMU", 2, "DCM0",  12., 45., 0., idrotm[1811], "ONLY");
765
766 //    gMC->Gspos("DCC2", 1, "DCC1", 0., 0., 0., 0, "ONLY");
767     
768     gMC->Gspos("DCC1", 1, "DCM0", -12., 27.5,  135., idrotm[1812], "ONLY");
769     gMC->Gspos("DCC1", 2, "DCM0",  12., 27.5,  135., idrotm[1812], "ONLY");
770     gMC->Gspos("DCC1", 3, "DCM0", -12., 27.5, -135., idrotm[1813], "ONLY");
771     gMC->Gspos("DCC1", 4, "DCM0",  12., 27.5, -135., idrotm[1813], "ONLY");
772
773     gMC->Gspos("DCC1", 5, "DCM0",  12., 27.5-32.+13., -135., idrotm[1815], "ONLY");
774     gMC->Gspos("DCC1", 6, "DCM0", -12., 27.5-32.+13., -135., idrotm[1815], "ONLY");
775     
776     gMC->Gspos("DCC1", 7, "DCML", 23.25, -13+13.+11., 117.5, idrotm[1814], "ONLY");
777
778     gMC->Gspos("DCLA", 1, "DCM0",  20., 27.5, -134., 0, "ONLY");
779     gMC->Gspos("DCLA", 2, "DCM0",  20., 27.5,  -44., 0, "ONLY");
780     gMC->Gspos("DCLA", 3, "DCM0",  20., 27.5,   46., 0, "ONLY");
781     gMC->Gspos("DCLA", 4, "DCM0",  20., 27.5,  134., 0, "ONLY");
782
783     gMC->Gspos("DCLA", 5, "DCM0",  -20., 27.5, -134., idrotm[1811], "ONLY");
784     gMC->Gspos("DCLA", 6, "DCM0",  -20., 27.5,  -44., idrotm[1811], "ONLY");
785     gMC->Gspos("DCLA", 7, "DCM0",  -20., 27.5,   46., idrotm[1811], "ONLY");
786     gMC->Gspos("DCLA", 8, "DCM0",  -20., 27.5,  134., idrotm[1811], "ONLY");
787
788
789     gMC->Gspos("DCBA", 1, "DCM0",  0., -47.5 , 17.5, 0, "ONLY");
790     gMC->Gspos("DCM0", 1, "ALIC",  0., -6.75, -975., 0, "ONLY");
791
792
793 }
794
795 //_____________________________________________________________________________
796 void AliDIPOv2::DrawModule()
797 {
798   //
799   // Draw a shaded view of the muon absorber
800   //
801
802   AliMC* gMC = AliMC::GetMC();
803   
804   // Set everything unseen
805   gMC->Gsatt("*", "seen", -1);
806   // 
807   // Set ALIC mother transparent
808   gMC->Gsatt("ALIC","SEEN",0);
809   //
810   // Set the volumes visible
811   gMC->Gsatt("DDIP","seen",0);
812   gMC->Gsatt("DC1 ","seen",1);
813   gMC->Gsatt("DC2 ","seen",1);
814   gMC->Gsatt("DC3 ","seen",1);
815   gMC->Gsatt("DC4 ","seen",1);
816   gMC->Gsatt("DC11","seen",1);
817   gMC->Gsatt("DC21","seen",1);
818   gMC->Gsatt("DC12","seen",1);
819   gMC->Gsatt("DC22","seen",1);
820   gMC->Gsatt("DL1 ","seen",1);
821   gMC->Gsatt("DL2 ","seen",1);
822   gMC->Gsatt("DY1 ","seen",1);
823   gMC->Gsatt("DY2 ","seen",1);
824   gMC->Gsatt("DYL ","seen",1);
825   gMC->Gsatt("DY3 ","seen",1);
826  // gMC->Gsatt("DY4 ","seen",1);
827  // gMC->Gsatt("DY5 ","seen",1);
828  // gMC->Gsatt("DY6 ","seen",1);
829 //  gMC->Gsatt("DY7 ","seen",1);
830   //
831   gMC->Gdopt("hide", "on");
832   gMC->Gdopt("shad", "on");
833   gMC->Gsatt("*", "fill", 7);
834   gMC->SetClipBox(".");
835   gMC->SetClipBox(".");
836   gMC->DefaultRange();
837   gMC->Gdraw("alic", 30, 30, 0, 17, 13.5, .019, .019);
838   gMC->Gdhead(1111, "Magnetic Dipole Version 2");
839   gMC->Gdman(16, 4, "MAN");
840 }
841
842
843
844
845 //_____________________________________________________________________________
846 void AliDIPOv2::CreateMaterials()
847 {
848   //
849   // Create Materials for Magnetic Dipole version 2
850   //
851   
852   Int_t isxfld   = gAlice->Field()->Integ();
853   Float_t sxmgmx = gAlice->Field()->Max();
854   
855   Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
856   Float_t zsteel[4] = { 26.,24.,28.,14. };
857   Float_t wsteel[4] = { .715,.18,.1,.005 };
858
859   Float_t acoil[3]  = { 26.98,1.01,16. };
860   Float_t zcoil[3]  = { 13.,1.,8. };
861   Float_t wcoil[3]  = { .66,.226,.114 };
862
863   Float_t aresi[3]  = { 1.01,12.011,16.};
864   Float_t zresi[3]  = { 1.,6.,8. };
865   Float_t wresi[3]  = { .0644,.7655,.1701 };
866
867   Float_t aG10[5] = { 1.01,12.011,16.,28.085 ,79.904 };
868   Float_t zG10[5] = { 1.,6.,8.,14.,35. };
869   Float_t wG10[5] = { .02089,.22338,.28493,.41342,.05738 };
870
871   Float_t aAlCon[2] = { 14.61, 26.98};
872   Float_t zAlCon[2] = { 7.3, 13.};
873   Float_t wAlCon[2] = { .0004,.9996};
874
875   
876   Float_t epsil, stmin, deemax, tmaxfd, stemax;
877   
878   // --- Define the various materials for GEANT --- 
879   //     Aluminum 
880   AliMaterial( 9, "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 37.2);
881   AliMaterial(29, "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 37.2);
882   AliMaterial(49, "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 37.2);
883   
884   //     Iron 
885   AliMaterial(10, "IRON$     ", 55.85, 26., 7.87, 1.76, 17.1);
886   AliMaterial(30, "IRON$     ", 55.85, 26., 7.87, 1.76, 17.1);
887   AliMaterial(50, "IRON$     ", 55.85, 26., 7.87, 1.76, 17.1);
888   //     Copper
889   AliMaterial(17, "COPPER$   ", 63.55, 29., 8.96, 1.43, 15.1);
890   AliMaterial(37, "COPPER$   ", 63.55, 29., 8.96, 1.43, 15.1);
891   AliMaterial(57, "COPPER$   ", 63.55, 29., 8.96, 1.43, 15.1);
892     //     Air 
893   AliMaterial(15, "AIR$      ", 14.61, 7.3, .001205, 30423.24, 67500);
894   AliMaterial(35, "AIR$      ", 14.61, 7.3, .001205, 30423.24, 67500);
895   AliMaterial(55, "AIR$      ", 14.61, 7.3, .001205, 30423.24, 67500);
896   
897   //     Vacuum 
898   AliMaterial(16, "VACUUM$ ", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
899   AliMaterial(36, "VACUUM$ ", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
900   AliMaterial(56, "VACUUM$ ", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
901   
902   //     stainless Steel 
903   AliMixture(19, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
904   AliMixture(39, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
905   AliMixture(59, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
906   
907   //     Coil 
908   AliMixture(14, "Al$", acoil, zcoil, 2.122, 3, wcoil);
909   AliMixture(34, "Al$", acoil, zcoil, 2.122, 3, wcoil);
910   AliMixture(54, "Al$", acoil, zcoil, 2.122, 3, wcoil);
911
912   //RESIN
913   AliMixture(13, "RESIN$", aresi, zresi, 1.05, 3, wresi);
914   AliMixture(33, "RESIN$", aresi, zresi, 1.05, 3, wresi);
915   AliMixture(53, "RESIN$", aresi, zresi, 1.05, 3, wresi);  
916
917   //G10
918   AliMixture(11, "G10$", aG10, zG10, 1.7, 5, wG10);
919   AliMixture(31, "G10$", aG10, zG10, 1.7, 5, wG10);
920   AliMixture(51, "G10$", aG10, zG10, 1.7, 5, wG10); 
921  
922   //Aluminium Conductor
923   AliMixture(12, "AlCond$", aAlCon, zAlCon, 1.3506, 2, wAlCon);
924   AliMixture(32, "AlCond$", aAlCon, zAlCon, 1.3506, 2, wAlCon);
925   AliMixture(52, "AlCond$", aAlCon, zAlCon, 1.3506, 2, wAlCon);  
926
927   // **************** 
928   //     Defines tracking media parameters. 
929   //     Les valeurs sont commentees pour laisser le defaut 
930   //     a GEANT (version 3-21, page CONS200), f.m. 
931   epsil  = .001;  // Tracking precision, 
932   stemax = -1.;   // Maximum displacement for multiple scat 
933   tmaxfd = -20.;  // Maximum angle due to field deflection 
934   deemax = -.3;   // Maximum fractional energy loss, DLS 
935   stmin  = -.8;
936   // *************** 
937   
938   //    Aluminum 
939   AliMedium(9, "ALU_C0          ",  9, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
940   AliMedium(29, "ALU_C1          ", 29, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
941   AliMedium(49, "ALU_C2          ", 49, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
942   
943   //    Iron 
944   AliMedium(10, "FE_C0           ", 10, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
945   AliMedium(30, "FE_C1           ", 30, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
946   AliMedium(50, "FE_C2           ", 50, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
947   
948   //    Air 
949   AliMedium(15, "AIR_C0          ", 15, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
950   AliMedium(35, "AIR_C1          ", 35, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
951   AliMedium(55, "AIR_C2          ", 55, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
952   
953   //    Vacuum 
954   AliMedium(16, "VA_C0           ", 16, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
955   AliMedium(36, "VA_C1           ", 36, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
956   AliMedium(56, "VA_C2           ", 56, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
957   
958   //    Steel 
959   AliMedium(19, "ST_C0           ", 19, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
960   AliMedium(39, "ST_C1           ", 39, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
961   AliMedium(59, "ST_C3           ", 59, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
962   
963   //    Coil 
964   AliMedium(14, "Coil_C1         ", 14, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
965   AliMedium(34, "Coil_C2         ", 34, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
966   AliMedium(54, "Coil_C3         ", 54, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
967
968   //    Resin 
969   AliMedium(13, "RESIN_C0         ", 13, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
970   AliMedium(33, "RESIN_C1         ", 33, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
971   AliMedium(53, "RESIN_C2         ", 53, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
972
973   //    G10 
974   AliMedium(11, "G10_C0         ", 11, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
975   AliMedium(31, "G10_C1         ", 31, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
976   AliMedium(51, "G10_C2         ", 51, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
977
978   //Aluminium Contactor
979   AliMedium(12, "AlCond_C0         ", 12, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
980   AliMedium(32, "AlCond_C1         ", 32, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
981   AliMedium(52, "AlCond_C2         ", 52, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
982
983   //
984   //    Copper
985   AliMedium(17, "Cu_C0            ", 17, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
986   AliMedium(37, "Cu_C1            ", 37, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
987   AliMedium(57, "Cu_C2            ", 57, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
988
989 }
990
991
992
993
994
995