]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STRUCT/AliDIPOv2.cxx
5e00dceef0c9d1b44a3a4cb6d3f09d9fd0b18b94
[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 /* $Id$ */
17
18 ///////////////////////////////////////////////////////////////////////////////
19 //                                                                           //
20 //  Magnetic Dipole version 1                                                //
21 //                                                                           //
22 //Begin_Html
23 /*
24 <img src="picts/AliDIPOv2Class.gif">
25 </pre>
26 <br clear=left>
27 <font size=+2 color=red>
28 <p>The responsible person for this module is
29 <a href="mailto:andreas.morsch@cern.ch">Andreas Morsch</a>.
30 </font>
31 <pre>
32 */
33 //End_Html
34 //                                                                           //
35 //                                                                           //
36
37 #include <TGeoManager.h>
38 #include <TGeoGlobalMagField.h>
39 #include <TGeoVolume.h>
40 #include <TVirtualMC.h>
41
42 #include "AliConst.h"
43 #include "AliDIPOv2.h"
44 #include "AliMagF.h"
45 #include "AliRun.h"
46  
47 ClassImp(AliDIPOv2)
48  
49 //_____________________________________________________________________________
50 AliDIPOv2::AliDIPOv2() 
51 {
52   //
53   // Last design of magnetic dipole version 2
54   //
55 }
56  
57 //_____________________________________________________________________________
58 AliDIPOv2::AliDIPOv2(const char *name, const char *title)
59   : AliDIPO(name,title)
60 {
61   //
62   // Standard constructor for the magnetic dipole version 2    
63 }
64
65 void AliDIPOv2::CreateGeometry()
66 {
67   //
68   // Creation of the geometry of the magnetic DIPOLE version 2
69   //
70
71     CreateSpectrometerDipole();
72     CreateCompensatorDipole();
73 }
74
75
76 //_____________________________________________________________________________
77 void AliDIPOv2::CreateSpectrometerDipole()
78 {
79   //
80   // Creation of the geometry of the magnetic DIPOLE version 2
81   //
82
83   Float_t cpar[5], tpar[18], ypar[12];
84   Float_t dz, dx, dy;
85   Int_t idrotm[1899];
86   Float_t accMax, the1, phi1, the2, phi2, the3, phi3;
87   
88   Int_t *idtmed = fIdtmed->GetArray()-1799;
89
90 //  const Int_t kCoil = 1813;
91 //  const Int_t kCable= 1811;
92
93   const Int_t kCoil = 1808;
94   const Int_t kCable= 1808;
95   
96   accMax = 9.;   // ANGLE POLAIRE MAXIMUM 
97
98   //       DIPOLE MAGNET 
99   const Float_t kZDipole = 975; 
100
101   tpar[ 0] = 0.; 
102   tpar[ 1] = 360.;
103   tpar[ 2] = 4.; 
104   //
105   tpar[ 3] = -250.55 + kZDipole;
106   tpar[ 4] =  30.1;
107   tpar[ 5] = 527.34; 
108   //
109   tpar[ 6] = 37. + kZDipole;
110   tpar[ 7] =  30.1;
111   tpar[ 8] = 527.34;
112   //
113   tpar[ 9] = 37. + kZDipole;
114   tpar[10] = tpar[ 9] * TMath::Tan(2. * TMath::Pi() / 180.);
115   tpar[11] = 527.34;
116   //
117   tpar[12] = 260.55 + kZDipole;
118   tpar[13] = tpar[12] * TMath::Tan(2. * TMath::Pi() / 180.);
119   tpar[14] = 527.34;
120   gMC->Gsvolu("DDIP", "PCON", idtmed[1874], tpar, 15);
121   //
122   //       Coils 
123   // air - m.f. 
124   cpar[0] = 207.;
125   cpar[1] = 274.;
126   cpar[2] = 37.65;
127   cpar[3] = 119.;
128   cpar[4] = 241.; 
129   //   coil - high cuts
130   gMC->Gsvolu("DC1 ", "TUBS", idtmed[kCoil+40], cpar, 5);
131   cpar[3] = -61.;
132   cpar[4] = 61.;
133   gMC->Gsvolu("DC2 ", "TUBS", idtmed[kCoil+40], cpar, 5);
134
135   //  coil - low cuts cuts
136   cpar[0] = 207.;
137 //  cpar[1] = cpar[0] + 10.;
138   cpar[1] = 217;
139   cpar[3] = 119.;
140   cpar[4] = 241.;
141
142   gMC->Gsvolu("DC3 ", "TUBS", idtmed[kCoil], cpar, 5);
143   cpar[0] = 207.; 
144   cpar[1] = 217; 
145   cpar[3] = -61.;
146   cpar[4] = 61.;
147   gMC->Gsvolu("DC4 ", "TUBS", idtmed[kCoil], cpar, 5);
148
149   gMC->Gspos("DC3 ", 1, "DC1 ", 0., 0., 0., 0, "ONLY");
150   gMC->Gspos("DC4 ", 1, "DC2 ", 0., 0., 0., 0, "ONLY");
151
152 //  dz =  37.65 - 243.55
153   dz = -205.9-2.45;
154   dx = 5.;
155   gMC->Gspos("DC1 ", 1, "DDIP",  dx, 0.,  dz+kZDipole, 0, "ONLY");
156   gMC->Gspos("DC1 ", 2, "DDIP",  dx, 0., -dz+kZDipole, 0, "ONLY");
157   gMC->Gspos("DC2 ", 1, "DDIP", -dx, 0.,  dz+kZDipole, 0, "ONLY");
158   gMC->Gspos("DC2 ", 2, "DDIP", -dx, 0., -dz+kZDipole, 0, "ONLY");
159   the1 = 180.;
160   phi1 = 0.;
161   the2 = 90.;
162   phi2 = 151.;
163   the3 = 90.;
164   phi3 = 61.;
165   AliMatrix(idrotm[1800], the1, phi1, the2, phi2, the3, phi3);
166   phi2 = 29.;  //90-61
167   the3 = -90.;
168   phi3 = -61.;
169   AliMatrix(idrotm[1801], the1, phi1, the2, phi2, the3, phi3);
170   the1 = 0.;
171   phi1 = 0.;
172   the2 = 90.;
173   phi2 = 151.;
174   the3 = 90.;
175   phi3 = 61.;
176   AliMatrix(idrotm[1802], the1, phi1, the2, phi2, the3, phi3);
177   phi2 = 29.;
178   the3 = -90.;
179   phi3 = -61.;
180   AliMatrix(idrotm[1803], the1, phi1, the2, phi2, the3, phi3);
181
182   cpar[0] = 25.;
183   cpar[1] = 100.3; //25+75.3
184   cpar[2] = 33.5;
185   cpar[3] = 270.;
186   cpar[4] = 360.;
187 //*  coil high cuts
188   gMC->Gsvolu("DC11", "TUBS", idtmed[kCoil+40], cpar, 5);
189
190   dx = TMath::Sin(30.5*kDegrad) * -(207.+33.5)+5./TMath::Sin(30.5*kDegrad); 
191   dy = TMath::Cos(30.5*kDegrad) * -(207.+33.5);  
192   dz = cpar[1] - 243.55-2.45;
193   gMC->Gspos("DC11", 1, "DDIP",  dx, dy,  dz+kZDipole, idrotm[1800], "ONLY");
194   gMC->Gspos("DC11", 2, "DDIP",  dx, dy, -dz+kZDipole, idrotm[1802], "ONLY");
195   gMC->Gspos("DC11", 3, "DDIP", -dx, dy,  dz+kZDipole, idrotm[1801], "ONLY");
196   gMC->Gspos("DC11", 4, "DDIP", -dx, dy, -dz+kZDipole, idrotm[1803], "ONLY");
197
198
199
200 //* ... higher cuts
201   cpar[0] = 25.;
202   cpar[1] = 100.3; //25+75.3
203   cpar[2] = 33.5;
204   cpar[3] = 0.;
205   cpar[4] = 90.;
206 //*  coil high cuts
207   gMC->Gsvolu("DC12", "TUBS", idtmed[kCoil+40], cpar, 5);
208
209   dx = TMath::Sin(30.5*kDegrad) * -(207.+33.5)+5./TMath::Sin(30.5*kDegrad); 
210   dy = TMath::Cos(30.5*kDegrad) *(207.+33.5);  
211   dz = cpar[1] - 243.55-2.45;
212   gMC->Gspos("DC12", 1, "DDIP",  dx, dy,  dz+kZDipole, idrotm[1801], "ONLY");
213   gMC->Gspos("DC12", 2, "DDIP",  dx, dy, -dz+kZDipole, idrotm[1803], "ONLY");
214   gMC->Gspos("DC12", 3, "DDIP", -dx, dy,  dz+kZDipole, idrotm[1800], "ONLY");
215   gMC->Gspos("DC12", 4, "DDIP", -dx, dy, -dz+kZDipole, idrotm[1802], "ONLY");
216
217   the1 = 90.;
218   phi1 = 61.;
219   the2 = 90.;
220   phi2 = 151.;
221   the3 = 0.;
222   phi3 = 0.;
223   AliMatrix(idrotm[1804], the1, phi1, the2, phi2, the3, phi3);
224   the1 = 90.;
225   phi1 = -61.;
226   the2 = 90.;
227   phi2 = -151.;
228   AliMatrix(idrotm[1805], the1, phi1, the2, phi2, the3, phi3);
229   the1 = 90.;
230   phi1 = 119.; //180 -61
231   the2 = 90.;
232   phi2 = 209.; //270-61
233   AliMatrix(idrotm[1806], the1, phi1, the2, phi2, the3, phi3);
234   the1 = 90.;
235   phi1 = -119.;
236   the2 = 90.;
237   phi2 = -209.;
238   AliMatrix(idrotm[1807], the1, phi1, the2, phi2, the3, phi3); 
239
240 //*  coil - high cuts
241
242   tpar[0] = 37.65;
243   tpar[1] = 33.5;
244   tpar[2] = 145.5;
245   gMC->Gsvolu("DL1 ", "BOX ", idtmed[kCoil+40], tpar, 3);
246
247 // coil - low cuts
248
249   tpar[0] = 5.;
250   dx = 37.65  - 5.;  
251   gMC->Gsvolu("DL2 ", "BOX ", idtmed[kCoil], tpar, 3);
252   gMC->Gspos("DL2 ", 1, "DL1 ", dx, 0., 0., 0, "ONLY");
253
254   dx =-53.62;
255   dy =-241.26819;
256   dz = 0.; 
257   gMC->Gspos("DL1 ", 1, "DDIP", dx,  dy, dz+kZDipole, idrotm[1804], "ONLY");
258   gMC->Gspos("DL1 ", 2, "DDIP", dx, -dy, dz+kZDipole, idrotm[1805], "ONLY");
259   gMC->Gspos("DL1 ", 3, "DDIP",-dx,  dy, dz+kZDipole, idrotm[1806], "ONLY");
260   gMC->Gspos("DL1 ", 4, "DDIP",-dx, -dy, dz+kZDipole, idrotm[1807], "ONLY");
261
262   // Contactor
263
264  //  high cuts
265
266   //Steel outer face planes
267
268   cpar[0] = 207.-18.6;
269   cpar[1] = 274.+18.6;
270   cpar[2] = 1.;
271   cpar[3] = -50.;
272   cpar[4] = 50.; 
273  
274   gMC->Gsvolu("DCO1", "TUBS", idtmed[1818], cpar, 5);
275   dx = -5.;
276   dz = 168.25-1.5-1.;
277   gMC->Gspos("DCO1", 1, "DDIP", dx, 0, dz+kZDipole, 0, "ONLY");
278   dz = 243.55+4.5+1.5+1.;
279   gMC->Gspos("DCO1", 2, "DDIP", dx, 0, dz+kZDipole, 0, "ONLY");
280   
281   // 9.06.2000
282
283   //  cpar[0] = 207.-18.6;
284   //  cpar[1] = 274.+18.6;
285   // cpar[2] = 1.;
286   cpar[3] = 180.-50.;
287   cpar[4] = 180.+50.; 
288  
289   gMC->Gsvolu("DCO2", "TUBS", idtmed[1818], cpar, 5);
290   dx = +5.;
291   dz = 168.25-1.5-1.;
292   gMC->Gspos("DCO2", 1, "DDIP", dx, 0, dz+kZDipole, 0, "ONLY");
293   dz = 243.55+4.5+1.5+1.;
294   gMC->Gspos("DCO2", 2, "DDIP", dx, 0, dz+kZDipole, 0, "ONLY");
295  
296
297
298   // Resin face planes
299
300   cpar[0] = 207.;
301   cpar[1] = 274.;
302   cpar[2] = .75;
303   cpar[3] = -50.;
304   cpar[4] = 50.; 
305  
306   gMC->Gsvolu("DCO3", "TUBS", idtmed[1812], cpar, 5);
307   dx = -5;
308   dz = 168.25-0.75;
309   gMC->Gspos("DCO3", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
310   dz = 243.55+4.5+0.75;
311   gMC->Gspos("DCO3", 2, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
312
313   // 9.06.2000
314
315   cpar[3] = 180.-50.;
316   cpar[4] = 180.+50.; 
317   gMC->Gsvolu("DCO4", "TUBS", idtmed[1812], cpar, 5);
318   dx = +5;
319   dz = 168.25-0.75;
320   gMC->Gspos("DCO4", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
321   dz = 243.55+4.5+0.75 ;
322   gMC->Gspos("DCO4", 2, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
323
324  
325   // G10 face plane
326
327   cpar[0] = 207.;
328   cpar[1] = 274.;
329   cpar[2] = 2.25;
330   cpar[3] = -50.;
331   cpar[4] = 50.; 
332  
333   gMC->Gsvolu("DCO5", "TUBS", idtmed[1810], cpar, 5);
334
335   dx = -5;
336   dz = 243.55+2.25;
337   gMC->Gspos("DCO5", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
338
339   // 9.06.2000
340
341   cpar[3] = 180.-50.;
342   cpar[4] = 180.+50.; 
343
344   gMC->Gsvolu("DCO6", "TUBS", idtmed[1810], cpar, 5);
345
346   dx = +5;
347   dz = 243.55+2.25;
348   gMC->Gspos("DCO6", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
349
350   //Steel supported planes
351
352   cpar[0] = 274.+1.5+2.;
353   cpar[1] = 274.+18.6;
354   cpar[2] = 1.;
355   cpar[3] = -50.;
356   cpar[4] = 50.;  
357  
358   gMC->Gsvolu("DCO7", "TUBS", idtmed[1818], cpar, 5);
359
360   dx = -5;
361   dz = 168.25+1.;
362   gMC->Gspos("DCO7", 1, "DDIP", dx, 0, dz+kZDipole, 0, "ONLY");
363
364   // 9.06.2000
365   cpar[0] = 274.+1.5+2.;
366   cpar[1] = 274.+18.6;
367   cpar[2] = 1.;
368   cpar[3] = 180.-50.;
369   cpar[4] = 180.+50.; 
370
371  
372   gMC->Gsvolu("DCO8", "TUBS", idtmed[1818], cpar, 5);
373
374   dx = +5;
375   dz = 168.25+1.;
376   gMC->Gspos("DCO8", 1, "DDIP", dx, 0, dz+kZDipole, 0, "ONLY");
377
378   //
379
380   cpar[0] = 207.- 18.6;
381   cpar[1] = 207.- 2.- 1.5;
382   cpar[2] = 1.;
383   cpar[3] = -50.;
384   cpar[4] = 50.; 
385
386   gMC->Gsvolu("DCO9", "TUBS", idtmed[1818], cpar, 5);
387
388   dx = -5;
389   dz = 168.25+1.;
390   gMC->Gspos("DCO9", 1, "DDIP", dx, 0, dz+kZDipole, 0, "ONLY");
391
392   // 9.06.2000
393
394   cpar[0] = 207.- 18.6;
395   cpar[1] = 207.- 2.- 1.5;
396   cpar[2] = 1.;
397   cpar[3] = 180.-50.;
398   cpar[4] = 180.+50.; 
399
400   gMC->Gsvolu("DCOA", "TUBS", idtmed[1818], cpar, 5);
401
402   dx = +5;
403   dz = 168.25+1.;
404   gMC->Gspos("DCOA", 1, "DDIP", dx, 0, dz+kZDipole, 0, "ONLY");
405
406
407   // Sides steel planes
408
409   cpar[0] = 207. - 1.5 -2.;
410   cpar[1] = 207. - 1.5;
411   cpar[2] = ((243.55+4.5+1.5)-168.25)/2;
412   cpar[3] = -50.;
413   cpar[4] = 50.; 
414  
415   gMC->Gsvolu("DCOB", "TUBS", idtmed[1818], cpar, 5);
416
417   cpar[0] = 274. + 1.5;
418   cpar[1] = 274. + 1.5 +2.;
419
420   gMC->Gsvolu("DCOC", "TUBS", idtmed[1818], cpar, 5);
421
422   dx=-5.;
423   dz = ((243.55+4.5+1.5)+168.25)/2;
424   gMC->Gspos("DCOB", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
425   gMC->Gspos("DCOC", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
426
427   // 9.06.2000
428
429   cpar[0] = 207. - 1.5 -2.;
430   cpar[1] = 207. - 1.5;
431   cpar[2] = ((243.55+4.5+1.5)-168.25)/2;
432   cpar[3] = 180.-50.;
433   cpar[4] = 180.+50.; 
434
435   gMC->Gsvolu("DCOD", "TUBS", idtmed[1818], cpar, 5);
436
437   cpar[0] = 274. + 1.5;
438   cpar[1] = 274. + 1.5 +2.;
439
440   gMC->Gsvolu("DCOE", "TUBS", idtmed[1818], cpar, 5);
441
442   dx=+5.;
443   dz = ((243.55+4.5+1.5)+168.25)/2;
444   gMC->Gspos("DCOD", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
445   gMC->Gspos("DCOE", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
446
447
448   // Top and bottom resin  planes
449
450   cpar[0] = 207. - 1.5;
451   cpar[1] = 207.;
452   cpar[2] = ((243.55+4.5+1.5)-168.25)/2;
453   cpar[3] = -50.;
454   cpar[4] = 50.; 
455  
456   gMC->Gsvolu("DCOF", "TUBS", idtmed[1812], cpar, 5);
457
458   cpar[0] = 274.;
459   cpar[1] = 274. + 1.5;
460
461   gMC->Gsvolu("DCOG", "TUBS", idtmed[1812], cpar, 5);
462
463
464   dx=-5.;
465   dz = ((243.55+4.5+1.5)+168.25)/2;
466   gMC->Gspos("DCOF", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
467   gMC->Gspos("DCOG", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
468
469   // 9.06.2000
470   cpar[0] = 207. - 1.5;
471   cpar[1] = 207.;
472   cpar[2] = ((243.55+4.5+1.5)-168.25)/2;
473
474   cpar[3] = 180.-50.;
475   cpar[4] = 180.+50.; 
476
477   gMC->Gsvolu("DCOH", "TUBS", idtmed[1812], cpar, 5);
478
479   cpar[0] = 274.;
480   cpar[1] = 274. + 1.5;
481
482   gMC->Gsvolu("DCOI", "TUBS", idtmed[1812], cpar, 5);
483
484
485   dx=+5.;
486   dz = ((243.55+4.5+1.5)+168.25)/2;
487   gMC->Gspos("DCOH", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
488   gMC->Gspos("DCOI", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
489
490
491   // Aluminum cabels
492
493   cpar[0] = 274. + 1.5  +2.;
494   cpar[1] = 274. + 1.5  +2. + 80.;
495   cpar[2] = 5.05/2;
496   cpar[3] = -24.;
497   cpar[4] = 24.; 
498  
499   gMC->Gsvolu("DCOJ", "TUBS", idtmed[kCable], cpar, 5);
500
501   //  dx = 274. + 1.5  +2. +40.;
502   //  dx = 5. + 1.5 +2. +40.;
503   //  dx = 5. + 1.5 +2.;
504   dx=-5.;
505   dz = 168.25 + 5.05 + 5.05/2;
506   gMC->Gspos("DCOJ", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
507
508   dz = 243.55 - 5.05/2;
509   gMC->Gspos("DCOJ", 2, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
510
511   // 9.06.2000
512
513   cpar[3] = 180.-24.;
514   cpar[4] = 180.+24.; 
515
516    gMC->Gsvolu("DCOK", "TUBS", idtmed[kCable], cpar, 5);
517
518   //  dx = 274. + 1.5  +2. +40.;
519   //  dx = 5. + 1.5 +2. +40.;
520   //  dx = 5. + 1.5 +2.;
521   dx=+5.;
522   dz = 168.25 + 5.05 + 5.05/2;
523   gMC->Gspos("DCOK", 1, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
524
525   dz = 243.55 - 5.05/2;
526   gMC->Gspos("DCOK", 2, "DDIP", dx,  0, dz+kZDipole, 0, "ONLY");
527
528  
529   //   YOKE 
530
531 // Top and bottom blocks
532   ypar[0] = 298.1; 
533   ypar[1] = 69.5;
534   ypar[2] = 155.75;
535
536 // iron- high cuts
537   gMC->Gsvolu("DY1 ", "BOX ", idtmed[1858], ypar, 3);
538   ypar[0] = 144.+10.; 
539   ypar[1] = 193.3+10.;
540   ypar[2] = 5.;
541   ypar[3] = 155.75;
542   dy = -69.5 + 5.;
543 // iron- low cuts
544   gMC->Gsvolu("DY11", "TRD1", idtmed[1818], ypar, 4);
545   gMC->Gspos("DY11", 1, "DY1 ", 0.,  dy, 0., 0, "ONLY");
546
547   dy = 365.5;
548   dz = 4.95;
549   gMC->Gspos("DY1 ", 1, "DDIP", 0.,  dy, -dz+kZDipole, 0, "ONLY");
550
551   the1 = 270.;
552   phi1 = 0.;
553   the2 = 270.;
554   phi2 = 90.;
555   the3 = 0.;
556   phi3 = 0.;
557   AliMatrix(idrotm[1808], the1, phi1, the2, phi2, the3, phi3);
558   gMC->Gspos("DY1 ", 2, "DDIP", 0., -dy, -dz+kZDipole, idrotm[1808] , "ONLY");
559
560 // side walls
561   //  ypar[0] = 579./2.; 
562   ypar[0] = 296.; 
563   ypar[1] = 0.;
564   ypar[2] = 0.;
565   ypar[3] = 155.75;
566   ypar[4] = 47.9;
567   ypar[5] = 72.55;
568   ypar[6] = 4.3058039629;
569   // z+ 
570   ypar[7] = 155.75;
571   ypar[8] = 47.9;
572   ypar[9] = 72.55;
573   ypar[10] = 4.3058039629;
574
575 // iron - high cuts
576
577   gMC->Gsvolu("DY2 ", "TRAP", idtmed[1858], ypar,11);
578
579   ypar[4] = 47.9 -5.;
580   ypar[5] = 72.55 -5.;
581
582   ypar[8] = 47.9 -5.;
583   ypar[9] = 72.55 -5.;
584
585
586 // iron - low cuts
587
588   gMC->Gsvolu("DY22", "TRAP", idtmed[1818], ypar,11);
589
590   dy = 0.;
591   dx = -5.;
592
593   gMC->Gspos("DY22", 1, "DY2 ", dx,  dy, 0., 0, "ONLY");
594
595   the1 = 90.;
596   phi1 = 180.;
597   the2 = 180.;
598   phi2 = 180.;
599   the3 = 90.;
600   phi3 = 90.;
601   AliMatrix(idrotm[1809], the1, phi1, the2, phi2, the3, phi3);
602
603   the1 = 90.;
604   phi1 = 0.;
605   the2 = 180.;
606   phi2 = 0.;
607   the3 = 90.;
608   phi3 = 90.;
609   AliMatrix(idrotm[1810], the1, phi1, the2, phi2, the3, phi3);
610
611   dx = 228.875;
612   dz = - 4.95;
613   
614   gMC->Gspos("DY2 ", 1, "DDIP",  dx, 0.0,  dz+kZDipole, idrotm[1809], "ONLY");
615   gMC->Gspos("DY2 ", 2, "DDIP", -dx, 0.0,  dz+kZDipole, idrotm[1810], "ONLY");
616   
617   AliMatrix(idrotm[1811], 270., 0., 90., 90., 180., 0.);
618   gMC->Gspos("DDIP", 1, "ALIC", 0., 0., 0., idrotm[1811], "ONLY");
619   gGeoManager->SetVolumeAttribute("DDIP", "SEEN", 0);
620 }
621
622
623 void AliDIPOv2::CreateCompensatorDipole()
624 {
625     //
626     //  Geometry of the compensator Dipole MBWMD (was MCB @ SPS)
627     //  LAB I/EA Note 74.10
628     //  6/5/1974
629     //
630     const Float_t kHCoil       =  22.;  // Coil Height
631     const Float_t kWCoil       =  12.;  // Coil Width
632     const Float_t kLCoilH      = 250.;  // Hor. Coil Length
633     const Float_t kRCoilC      =  31.;  // Circ Coil Radius
634     const Float_t kWBase       = 125.;  // Base Width
635     const Float_t kHBase       =  30.;  // Base Height
636     
637     const Float_t kWUYoke      =  16.;
638     const Float_t kHUYoke      =  31.;
639
640     const Float_t kWLYoke      =  50.0;
641     const Float_t kHLYoke      =  61.0;
642     const Float_t kLLYoke      =  kLCoilH + kRCoilC;
643
644     const Float_t kWApperture  =  12.;
645     const Float_t kDCoil       =  kHUYoke + kHLYoke - 6. - 2. * kRCoilC;
646     
647     const Float_t kH           =  kHBase +  kHUYoke +  kHLYoke;
648     
649     Int_t *idtmed = fIdtmed->GetArray()-1799;
650     Int_t idrotm[1899];
651 //
652     Float_t pbox[3];
653 //  Mother volumes
654     TGeoVolumeAssembly* asDCM0 = new TGeoVolumeAssembly("DCM0");
655     asDCM0->SetName("DCM0");
656     
657 //
658 //  Mother volume containing lower coil
659     pbox[0] = kWLYoke / 2.;
660     pbox[1] = kHLYoke / 2.;
661     pbox[2] = kLLYoke / 2.;
662     
663     gMC->Gsvolu("DCML", "BOX", idtmed[1809 + 40], pbox, 3);
664 //
665 // Base
666     pbox[0] = kWBase / 2.;
667     pbox[1] = kHBase / 2.;
668     gMC->Gsvolu("DCBA", "BOX", idtmed[1809 + 40], pbox, 3);
669 //
670 // Coil: straight sections, horizontal
671     pbox[0] = kWCoil  / 2.;
672     pbox[1] = kHCoil  / 2.;
673     pbox[2] = kLCoilH / 2.;
674     gMC->Gsvolu("DCH1", "BOX", idtmed[1816 + 40], pbox, 3);
675 //
676 // Coil: straight sections, horizontal
677     pbox[0] = kWCoil  / 2.;
678     pbox[1] = kHCoil  / 2.;
679     pbox[2] = kLCoilH / 2.;
680     gMC->Gsvolu("DCH2", "BOX", idtmed[1816 + 40], pbox, 3);
681
682 //
683 // Mother volume containing upper coil
684     pbox[0] =  kWUYoke / 2.;
685     pbox[1] =  kHUYoke / 2.;
686     pbox[2] =  kLCoilH / 2.;
687     gMC->Gsvolu("DCMU", "BOX", idtmed[1809 + 40], pbox, 3);
688
689 //
690 // Coil: straight sections, vertical
691     pbox[0] = kWCoil / 2.;
692     pbox[1] = kDCoil / 2.;
693     pbox[2] = kHCoil / 2.;
694     
695     gMC->Gsvolu("DCCV", "BOX", idtmed[1816 + 40], pbox, 3);
696 //
697 // Coil: circular section 
698
699     Float_t ptubs[5];
700     ptubs[0] = kRCoilC - kHCoil;
701     ptubs[1] = kRCoilC;
702     ptubs[2] = kWCoil / 2.;
703     ptubs[3] =  0.;
704     ptubs[4] = 90.;
705     gMC->Gsvolu("DCC1", "TUBS", idtmed[1816 + 40], ptubs, 5);
706 //
707 // Clamps
708     Float_t ppgon[10];
709     ppgon[0] =  0.;
710     ppgon[1] = 90.;
711     ppgon[2] =  1.;
712     ppgon[3] =  2.;
713     ppgon[4] = -1.;
714     ppgon[5] =  0.;
715     ppgon[6] = 24.75;
716     ppgon[7] =  1.;
717     ppgon[8] =  0.;
718     ppgon[9] = 24.75;
719     gMC->Gsvolu("DCLA", "PGON", idtmed[1809 + 40], ppgon, 10);
720 //
721 // Assemble all
722 //
723     AliMatrix(idrotm[1811], -90., 0., 90., 90.,   0., 0.);
724     AliMatrix(idrotm[1812],   0., 0., 90., 90.,  90., 0.);  
725     AliMatrix(idrotm[1813], 180., 0., 90., 90.,  90., 0.);
726     AliMatrix(idrotm[1814],   0., 180., 90., 270.,  90., 0.);
727     AliMatrix(idrotm[1815], 180., 180., 90., 270.,  90., 0.);  
728     
729     Float_t dx, dy, dz;
730     Float_t dy0 = 0.;
731
732     dy0 = -kH / 2. + kHBase/2.;
733     gMC->Gspos("DCBA", 1, "DCM0",  0., dy0, 15.0, 0, "ONLY");
734     
735     // Lower coil
736     dx = ( kWLYoke - kWCoil) / 2.;
737     dy = (-kHLYoke + kHCoil) / 2. + 6.;
738     gMC->Gspos("DCH1", 1, "DCML",  dx, dy,  -kRCoilC / 2., 0, "ONLY");
739     // Lower mother volume
740     dx = (kWLYoke + kWApperture) / 2.;
741     dy0 += (kHBase +  kHLYoke) / 2.;
742     gMC->Gspos("DCML", 1, "DCM0", -dx, dy0, kRCoilC / 2., 0, "ONLY");
743     gMC->Gspos("DCML", 2, "DCM0", +dx, dy0, kRCoilC / 2., idrotm[1811], "ONLY");
744     
745     dx = (kWUYoke - kWCoil) / 2.;
746     dy = (kHUYoke - kHCoil) / 2;
747     // Upper coil
748     gMC->Gspos("DCH2", 1, "DCMU",   dx,  dy, 0., 0, "ONLY");
749     // Upper mother volume
750     dx = (kWUYoke + kWApperture) / 2.;
751     dy0 +=  (kHLYoke + kHUYoke) / 2.;
752     gMC->Gspos("DCMU", 1, "DCM0", -dx, dy0, 0., 0, "ONLY");
753     gMC->Gspos("DCMU", 2, "DCM0", +dx, dy0, 0., idrotm[1811], "ONLY");
754
755     // Vertical coils
756     dx =  (kWCoil +  kWApperture) / 2.;
757     dy =  kH / 2. - kDCoil / 2. - kRCoilC;
758     dz =  (kLCoilH - kHCoil) / 2. + kRCoilC;
759     gMC->Gspos("DCCV", 1, "DCM0",  dx,  dy, -dz, 0, "ONLY");
760     gMC->Gspos("DCCV", 2, "DCM0", -dx,  dy, -dz, 0, "ONLY");
761
762     dx = (kWLYoke - kWCoil) / 2.;
763     dy = -kHLYoke / 2. + kDCoil / 2. + 6. + kRCoilC;
764     dz =  kLLYoke / 2. - kHCoil / 2.;
765     
766     gMC->Gspos("DCCV", 3, "DCML", dx, dy,  dz, 0, "ONLY");
767
768
769
770     // Circular coil
771     dx =  (kWCoil +  kWApperture) / 2.;
772     dy = dy0 + kHUYoke / 2. - kRCoilC;
773     dz =  kLCoilH / 2.;
774     gMC->Gspos("DCC1", 1, "DCM0", -dx, dy,  dz, idrotm[1812], "ONLY");
775     gMC->Gspos("DCC1", 2, "DCM0", +dx, dy,  dz, idrotm[1812], "ONLY");
776     gMC->Gspos("DCC1", 3, "DCM0", +dx, dy, -dz, idrotm[1813], "ONLY");
777     gMC->Gspos("DCC1", 4, "DCM0", -dx, dy, -dz, idrotm[1813], "ONLY");
778     dy = -kH / 2. + kHBase + 6. + kRCoilC;
779     gMC->Gspos("DCC1", 5, "DCM0", +dx, dy, -dz, idrotm[1815], "ONLY");
780     gMC->Gspos("DCC1", 6, "DCM0", -dx, dy, -dz, idrotm[1815], "ONLY");
781
782     dx = ( kWLYoke - kWCoil) / 2.;
783     dy =  -kHLYoke / 2. + 6. + kRCoilC;
784     dz =  kLLYoke / 2. - kRCoilC;
785     gMC->Gspos("DCC1", 7, "DCML", dx, dy, dz, idrotm[1814], "ONLY");
786
787 //  Clamps
788     dx = kWApperture / 2. + kWUYoke;
789     dy = -kH / 2. + kHLYoke + kHBase;
790     
791
792     gMC->Gspos("DCLA", 1, "DCM0",  dx, dy, -119., 0, "ONLY");
793     gMC->Gspos("DCLA", 2, "DCM0",  dx, dy,  -44., 0, "ONLY");
794     gMC->Gspos("DCLA", 3, "DCM0",  dx, dy,   46., 0, "ONLY");
795     gMC->Gspos("DCLA", 4, "DCM0",  dx, dy,  119., 0, "ONLY");
796
797     gMC->Gspos("DCLA", 5, "DCM0",  -dx, dy, -119., idrotm[1811], "ONLY");
798     gMC->Gspos("DCLA", 6, "DCM0",  -dx, dy,  -44., idrotm[1811], "ONLY");
799     gMC->Gspos("DCLA", 7, "DCM0",  -dx, dy,   46., idrotm[1811], "ONLY");
800     gMC->Gspos("DCLA", 8, "DCM0",  -dx, dy,  119., idrotm[1811], "ONLY");
801
802
803     AliMatrix(idrotm[1816], 270., 0., 90., 90.,  180., 0.);  
804     gMC->Gspos("DCM0", 1, "ALIC",  0., -12.,  1075., idrotm[1816], "ONLY");
805 }
806
807
808 //_____________________________________________________________________________
809 void AliDIPOv2::CreateMaterials()
810 {
811   //
812   // Create Materials for Magnetic Dipole version 2
813   //
814   
815   Int_t isxfld1   = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Integ();
816   Int_t isxfld2   = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->PrecInteg();
817   Float_t sxmgmx  = ((AliMagF*)TGeoGlobalMagField::Instance()->GetField())->Max();
818   
819   
820   Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
821   Float_t zsteel[4] = { 26.,24.,28.,14. };
822   Float_t wsteel[4] = { .715,.18,.1,.005 };
823
824   Float_t acoil[3]  = { 26.98,1.01,16. };
825   Float_t zcoil[3]  = { 13.,1.,8. };
826   Float_t wcoil[3]  = { .66,.226,.114 };
827
828   Float_t aresi[3]  = { 1.01,12.011,16.};
829   Float_t zresi[3]  = { 1.,6.,8. };
830   Float_t wresi[3]  = { .0644,.7655,.1701 };
831
832   Float_t aG10[5] = { 1.01,12.011,16.,28.085 ,79.904 };
833   Float_t zG10[5] = { 1.,6.,8.,14.,35. };
834   Float_t wG10[5] = { .02089,.22338,.28493,.41342,.05738 };
835
836     // AIR
837
838   Float_t aAir[4]={12.0107,14.0067,15.9994,39.948};
839   Float_t zAir[4]={6.,7.,8.,18.};
840   Float_t wAir[4]={0.000124,0.755267,0.231781,0.012827};
841   Float_t dAir = 1.20479E-3;
842   Float_t dAir1 = 1.20479E-10;
843
844   
845   Float_t epsil, stmin, deemax, tmaxfd, stemax;
846   
847   // --- Define the various materials for GEANT --- 
848   //     Aluminum 
849   AliMaterial( 9, "ALUMINIUM0$", 26.98, 13., 2.7, 8.9, 37.2);
850   AliMaterial(29, "ALUMINIUM1$", 26.98, 13., 2.7, 8.9, 37.2);
851   AliMaterial(49, "ALUMINIUM2$", 26.98, 13., 2.7, 8.9, 37.2);
852   
853   //     Iron 
854   AliMaterial(10, "IRON0$     ", 55.85, 26., 7.87, 1.76, 17.1);
855   AliMaterial(30, "IRON1$     ", 55.85, 26., 7.87, 1.76, 17.1);
856   AliMaterial(50, "IRON2$     ", 55.85, 26., 7.87, 1.76, 17.1);
857   //     Copper
858   AliMaterial(17, "COPPER0$   ", 63.55, 29., 8.96, 1.43, 15.1);
859   AliMaterial(37, "COPPER1$   ", 63.55, 29., 8.96, 1.43, 15.1);
860   AliMaterial(57, "COPPER2$   ", 63.55, 29., 8.96, 1.43, 15.1);
861   //     Air 
862   AliMixture(15, "AIR0$      ", aAir, zAir, dAir, 4, wAir);
863   AliMixture(35, "AIR1$      ", aAir, zAir, dAir, 4, wAir);
864   AliMixture(55, "AIR2$      ", aAir, zAir, dAir, 4, wAir);
865   AliMixture(75, "AIR_MUON   ", aAir, zAir, dAir, 4, wAir);
866   //     Vacuum 
867   AliMixture(16, "VACUUM0$ ", aAir, zAir, dAir1, 4, wAir);
868   AliMixture(36, "VACUUM1$ ", aAir, zAir, dAir1, 4, wAir);
869   AliMixture(56, "VACUUM2$ ", aAir, zAir, dAir1, 4, wAir);
870   
871   //     stainless Steel 
872   AliMixture(19, "STAINLESS STEEL0$", asteel, zsteel, 7.88, 4, wsteel);
873   AliMixture(39, "STAINLESS STEEL1$", asteel, zsteel, 7.88, 4, wsteel);
874   AliMixture(59, "STAINLESS STEEL2$", asteel, zsteel, 7.88, 4, wsteel);
875   
876   //     Coil 
877   AliMixture(14, "Al0$", acoil, zcoil, 2.122, 3, wcoil);
878   AliMixture(34, "Al1$", acoil, zcoil, 2.122, 3, wcoil);
879   AliMixture(54, "Al2$", acoil, zcoil, 2.122, 3, wcoil);
880
881   //RESIN
882   AliMixture(13, "RESIN0$", aresi, zresi, 1.05, 3, wresi);
883   AliMixture(33, "RESIN1$", aresi, zresi, 1.05, 3, wresi);
884   AliMixture(53, "RESIN2$", aresi, zresi, 1.05, 3, wresi);  
885
886   //G10
887   AliMixture(11, "G100$", aG10, zG10, 1.7, 5, wG10);
888   AliMixture(31, "G101$", aG10, zG10, 1.7, 5, wG10);
889   AliMixture(51, "G102$", aG10, zG10, 1.7, 5, wG10); 
890  
891   // **************** 
892   //     Defines tracking media parameters. 
893   //     Les valeurs sont commentees pour laisser le defaut 
894   //     a GEANT (version 3-21, page CONS200), f.m. 
895   epsil  = .001;  // Tracking precision, 
896   stemax = -1.;   // Maximum displacement for multiple scat 
897   tmaxfd = -20.;  // Maximum angle due to field deflection 
898   deemax = -.3;   // Maximum fractional energy loss, DLS 
899   stmin  = -.8;
900   // *************** 
901   
902   //    Aluminum 
903   AliMedium( 9, "ALU_C0          ",  9, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
904   AliMedium(29, "ALU_C1          ", 29, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
905   AliMedium(49, "ALU_C2          ", 49, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
906   
907   //    Iron 
908   AliMedium(10, "FE_C0           ", 10, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
909   AliMedium(30, "FE_C1           ", 30, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
910   AliMedium(50, "FE_C2           ", 50, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
911   
912   //    Air 
913   AliMedium(15, "AIR_C0          ", 15, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
914   AliMedium(35, "AIR_C1          ", 35, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
915   AliMedium(55, "AIR_C2          ", 55, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
916   AliMedium(75, "AIR_MUON        ", 75, 0, isxfld2, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
917   
918   //    Vacuum 
919   AliMedium(16, "VA_C0           ", 16, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
920   AliMedium(36, "VA_C1           ", 36, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
921   AliMedium(56, "VA_C2           ", 56, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
922   
923   //    Steel 
924   AliMedium(19, "ST_C0           ", 19, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
925   AliMedium(39, "ST_C1           ", 39, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
926   AliMedium(59, "ST_C3           ", 59, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
927   
928   //    Coil 
929   AliMedium(14, "Coil_C1         ", 14, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
930   AliMedium(34, "Coil_C2         ", 34, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
931   AliMedium(54, "Coil_C3         ", 54, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
932
933   //    Resin 
934   AliMedium(13, "RESIN_C0        ", 13, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
935   AliMedium(33, "RESIN_C1        ", 33, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
936   AliMedium(53, "RESIN_C2        ", 53, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
937
938   //    G10 
939   AliMedium(11, "G10_C0          ", 11, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
940   AliMedium(31, "G10_C1          ", 31, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
941   AliMedium(51, "G10_C2          ", 51, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
942   //
943   //    Copper
944   AliMedium(17, "Cu_C0           ", 17, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
945   AliMedium(37, "Cu_C1           ", 37, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
946   AliMedium(57, "Cu_C2           ", 57, 0, isxfld1, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
947
948 }
949
950
951
952
953
954