]> git.uio.no Git - u/mrichter/AliRoot.git/blob - STRUCT/AliDIPOv2.cxx
Fix for multiple events per file: inhibit decrease of size of fParticleFileMap.
[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.13  2000/10/02 21:28:15  fca
19 Removal of useless dependecies via forward declarations
20
21 Revision 1.12  2000/06/20 10:53:01  morsch
22 Volume placed outside mother volume (DDIP) corrected (Galina Chabratova)
23
24 Revision 1.11  2000/06/11 12:33:46  morsch
25 Coding rule violations corrected
26
27 Revision 1.10  2000/06/09 19:32:56  morsch
28 New detailed and corrected version from Galina Chabratova
29
30 Revision 1.9  2000/04/27 09:29:53  fca
31 Reverting to version 1.6.2
32
33 Revision 1.6.2.1  1999/12/03 16:38:51  fca
34 Correct overlap in magnet
35
36 Revision 1.6  1999/09/29 09:24:30  fca
37 Introduction of the Copyright and cvs Log
38
39 */
40
41 ///////////////////////////////////////////////////////////////////////////////
42 //                                                                           //
43 //  Magnetic Dipole version 1                                                //
44 //                                                                           //
45 //Begin_Html
46 /*
47 <img src="picts/AliDIPOv2Class.gif">
48 </pre>
49 <br clear=left>
50 <font size=+2 color=red>
51 <p>The responsible person for this module is
52 <a href="mailto:andreas.morsch@cern.ch">Andreas Morsch</a>.
53 </font>
54 <pre>
55 */
56 //End_Html
57 //                                                                           //
58 //                                                                           //
59
60 #include "AliDIPOv2.h"
61 #include "AliRun.h"
62 #include "AliMC.h"
63 #include "AliMagF.h"
64 #include "AliConst.h"
65  
66 ClassImp(AliDIPOv2)
67  
68 //_____________________________________________________________________________
69 AliDIPOv2::AliDIPOv2() 
70 {
71   //
72   // Last design of magnetic dipole version 2
73   //
74 }
75  
76 //_____________________________________________________________________________
77 AliDIPOv2::AliDIPOv2(const char *name, const char *title)
78   : AliDIPO(name,title)
79 {
80   //
81   // Standard constructor for the magnetic dipole version 2    
82    SetMarkerColor(7);
83    SetMarkerStyle(2);
84    SetMarkerSize(0.4);
85 }
86  
87 //_____________________________________________________________________________
88 void AliDIPOv2::CreateGeometry()
89 {
90   //
91   // Creation of the geometry of the magnetic DIPOLE version 2
92   //
93
94   //  AliMC* gMC = AliMC::GetMC();
95
96   Float_t cpar[5], tpar[15], ypar[12];
97   Float_t dz, dx, dy;
98   Int_t idrotm[1899];
99   Float_t accMax, the1, phi1, the2, phi2, the3, phi3;
100   
101   Int_t *idtmed = fIdtmed->GetArray()-1799;
102
103 //  const Int_t kCoil = 1813;
104 //  const Int_t kCable= 1811;
105
106   const Int_t kCoil = 1808;
107   const Int_t kCable= 1808;
108   
109   accMax = 9.;   // ANGLE POLAIRE MAXIMUM 
110
111   //       DIPOLE MAGNET 
112
113   tpar[0] = 0.; 
114   tpar[1] = 360.;
115   tpar[2] = 4.; 
116   //
117   tpar[3] = -250.55;
118   tpar[4] = 144.;
119   tpar[5] = 527.34; 
120   //
121   tpar[6] = -160.7;
122   tpar[7] = 144.;
123   tpar[8] = 527.34; 
124   //
125   tpar[9] = 150.8;
126   tpar[10] = 193.3;
127   tpar[11] = 527.34;
128   //
129   tpar[12] = 250.55;
130   tpar[13] = 193.3;
131   tpar[14] = 527.34;
132
133
134   gMC->Gsvolu("DDIP", "PCON", idtmed[1814], tpar, 15);  
135   //       COILS 
136   // air - m.f. 
137   cpar[0] = 207.;
138   cpar[1] = 274.;
139   cpar[2] = 37.65;
140   cpar[3] = 119.;
141   cpar[4] = 241. ; 
142   //   coil - high cuts
143   gMC->Gsvolu("DC1 ", "TUBS", idtmed[kCoil+40], cpar, 5);
144   cpar[3] = -61.;
145   cpar[4] = 61.;
146   gMC->Gsvolu("DC2 ", "TUBS", idtmed[kCoil+40], cpar, 5);
147
148   //  coil - low cuts cuts
149   cpar[0] = 207.;
150 //  cpar[1] = cpar[0] + 10.;
151   cpar[1] = 217;
152   cpar[3] = 119.;
153   cpar[4] = 241.;
154
155   gMC->Gsvolu("DC3 ", "TUBS", idtmed[kCoil], cpar, 5);
156   cpar[0] = 207.; 
157   cpar[1] = 217; 
158   cpar[3] = -61.;
159   cpar[4] = 61.;
160   gMC->Gsvolu("DC4 ", "TUBS", idtmed[kCoil], cpar, 5);
161
162   gMC->Gspos("DC3 ", 1, "DC1 ", 0., 0., 0., 0, "ONLY");
163   gMC->Gspos("DC4 ", 1, "DC2 ", 0., 0., 0., 0, "ONLY");
164
165 //  dz =  37.65 - 243.55
166   dz = -205.9-2.45;
167   dx = 5.;
168   gMC->Gspos("DC1 ", 1, "DDIP", dx, 0.,  dz, 0, "ONLY");
169   gMC->Gspos("DC1 ", 2, "DDIP", dx, 0., -dz, 0, "ONLY");
170   gMC->Gspos("DC2 ", 1, "DDIP", -dx, 0.,  dz, 0, "ONLY");
171   gMC->Gspos("DC2 ", 2, "DDIP", -dx, 0., -dz, 0, "ONLY");
172   the1 = 180.;
173   phi1 = 0.;
174   the2 = 90.;
175   phi2 = 151.;
176   the3 = 90.;
177   phi3 = 61.;
178   AliMatrix(idrotm[1800], the1, phi1, the2, phi2, the3, phi3);
179   phi2 = 29.;  //90-61
180   the3 = -90.;
181   phi3 = -61.;
182   AliMatrix(idrotm[1801], the1, phi1, the2, phi2, the3, phi3);
183   the1 = 0.;
184   phi1 = 0.;
185   the2 = 90.;
186   phi2 = 151.;
187   the3 = 90.;
188   phi3 = 61.;
189   AliMatrix(idrotm[1802], the1, phi1, the2, phi2, the3, phi3);
190   phi2 = 29.;
191   the3 = -90.;
192   phi3 = -61.;
193   AliMatrix(idrotm[1803], the1, phi1, the2, phi2, the3, phi3);
194
195   cpar[0] = 25.;
196   cpar[1] = 100.3; //25+75.3
197   cpar[2] = 33.5;
198   cpar[3] = 270.;
199   cpar[4] = 360.;
200 //*  coil high cuts
201   gMC->Gsvolu("DC11", "TUBS", idtmed[kCoil+40], cpar, 5);
202
203   dx = TMath::Sin(30.5*kDegrad) * -(207.+33.5)+5./TMath::Sin(30.5*kDegrad) ; 
204   dy = TMath::Cos(30.5*kDegrad) * -(207.+33.5);  
205   dz = cpar[1] - 243.55-2.45;
206   gMC->Gspos("DC11", 1, "DDIP",  dx, dy,  dz, idrotm[1800], "ONLY");
207   gMC->Gspos("DC11", 2, "DDIP",  dx, dy, -dz, idrotm[1802], "ONLY");
208   gMC->Gspos("DC11", 3, "DDIP", -dx, dy,  dz, idrotm[1801], "ONLY");
209   gMC->Gspos("DC11", 4, "DDIP", -dx, dy, -dz, idrotm[1803], "ONLY");
210
211
212
213 //* ... higher cuts
214   cpar[0] = 25.;
215   cpar[1] = 100.3; //25+75.3
216   cpar[2] = 33.5;
217   cpar[3] = 0.;
218   cpar[4] = 90.;
219 //*  coil high cuts
220   gMC->Gsvolu("DC12", "TUBS", idtmed[kCoil+40], cpar, 5);
221
222   dx = TMath::Sin(30.5*kDegrad) * -(207.+33.5)+5./TMath::Sin(30.5*kDegrad) ; 
223   dy = TMath::Cos(30.5*kDegrad) *(207.+33.5);  
224   dz = cpar[1] - 243.55-2.45;
225   gMC->Gspos("DC12", 1, "DDIP",  dx, dy,  dz, idrotm[1801], "ONLY");
226   gMC->Gspos("DC12", 2, "DDIP",  dx, dy, -dz, idrotm[1803], "ONLY");
227   gMC->Gspos("DC12", 3, "DDIP", -dx, dy,  dz, idrotm[1800], "ONLY");
228   gMC->Gspos("DC12", 4, "DDIP", -dx, dy, -dz, idrotm[1802], "ONLY");
229
230   the1 = 90.;
231   phi1 = 61.;
232   the2 = 90.;
233   phi2 = 151.;
234   the3 = 0.;
235   phi3 = 0.;
236   AliMatrix(idrotm[1804], the1, phi1, the2, phi2, the3, phi3);
237   the1 = 90.;
238   phi1 = -61.;
239   the2 = 90.;
240   phi2 = -151.;
241   AliMatrix(idrotm[1805], the1, phi1, the2, phi2, the3, phi3);
242   the1 = 90.;
243   phi1 = 119.; //180 -61
244   the2 = 90.;
245   phi2 = 209.; //270-61
246   AliMatrix(idrotm[1806], the1, phi1, the2, phi2, the3, phi3);
247   the1 = 90.;
248   phi1 = -119.;
249   the2 = 90.;
250   phi2 = -209.;
251   AliMatrix(idrotm[1807], the1, phi1, the2, phi2, the3, phi3); 
252
253 //*  coil - high cuts
254
255   tpar[0] = 37.65;
256   tpar[1] = 33.5;
257   tpar[2] = 145.5;
258   gMC->Gsvolu("DL1 ", "BOX ", idtmed[kCoil+40], tpar, 3);
259
260 // coil - low cuts
261
262   tpar[0] = 5.;
263   dx = 37.65  - 5.;  
264   gMC->Gsvolu("DL2 ", "BOX ", idtmed[kCoil], tpar, 3);
265   gMC->Gspos("DL2 ", 1, "DL1 ", dx, 0., 0., 0, "ONLY");
266
267   dx =-53.62;
268   dy =-241.26819;
269   dz = 0.0; 
270   gMC->Gspos("DL1 ", 1, "DDIP", dx,  dy, dz, idrotm[1804], "ONLY");
271   gMC->Gspos("DL1 ", 2, "DDIP", dx, -dy, dz, idrotm[1805], "ONLY");
272   gMC->Gspos("DL1 ", 3, "DDIP",-dx,  dy, dz, idrotm[1806], "ONLY");
273   gMC->Gspos("DL1 ", 4, "DDIP",-dx, -dy, dz, idrotm[1807], "ONLY");
274
275   // Contactor
276
277  //  high cuts
278
279   //Steel outer face planes
280
281   cpar[0] = 207.-18.6;
282   cpar[1] = 274.+18.6;
283   cpar[2] = 1.;
284   cpar[3] = -50.;
285   cpar[4] = 50.; 
286  
287   gMC->Gsvolu("DCO1", "TUBS", idtmed[1818], cpar, 5);
288   dx = -5.;
289   dz = 168.25-1.5-1.;
290   gMC->Gspos("DCO1", 1, "DDIP", dx, 0, dz, 0, "ONLY");
291   dz = 243.55+4.5+1.5+1.;
292   gMC->Gspos("DCO1", 2, "DDIP", dx, 0, dz, 0, "ONLY");
293   
294   // 9.06.2000
295
296   //  cpar[0] = 207.-18.6;
297   //  cpar[1] = 274.+18.6;
298   // cpar[2] = 1.;
299   cpar[3] = 180.-50.;
300   cpar[4] = 180.+50.; 
301  
302   gMC->Gsvolu("DCO2", "TUBS", idtmed[1818], cpar, 5);
303   dx = +5.;
304   dz = 168.25-1.5-1.;
305   gMC->Gspos("DCO2", 1, "DDIP", dx, 0, dz, 0, "ONLY");
306   dz = 243.55+4.5+1.5+1.;
307   gMC->Gspos("DCO2", 2, "DDIP", dx, 0, dz, 0, "ONLY");
308  
309
310
311   // Resin face planes
312
313   cpar[0] = 207.;
314   cpar[1] = 274.;
315   cpar[2] = .75;
316   cpar[3] = -50.;
317   cpar[4] = 50.; 
318  
319   gMC->Gsvolu("DCO3", "TUBS", idtmed[1812], cpar, 5);
320   dx = -5;
321   dz = 168.25-0.75;
322   gMC->Gspos("DCO3", 1, "DDIP", dx,  0, dz, 0, "ONLY");
323   dz = 243.55+4.5+0.75;
324   gMC->Gspos("DCO3", 2, "DDIP", dx,  0, dz, 0, "ONLY");
325
326   // 9.06.2000
327
328   cpar[3] = 180.-50.;
329   cpar[4] = 180.+50.; 
330   gMC->Gsvolu("DCO4", "TUBS", idtmed[1812], cpar, 5);
331   dx = +5;
332   dz = 168.25-0.75;
333   gMC->Gspos("DCO4", 1, "DDIP", dx,  0, dz, 0, "ONLY");
334   dz = 243.55+4.5+0.75;
335   gMC->Gspos("DCO4", 2, "DDIP", dx,  0, dz, 0, "ONLY");
336
337  
338   // G10 face plane
339
340   cpar[0] = 207.;
341   cpar[1] = 274.;
342   cpar[2] = 2.25;
343   cpar[3] = -50.;
344   cpar[4] = 50.; 
345  
346   gMC->Gsvolu("DCO5", "TUBS", idtmed[1810], cpar, 5);
347
348   dx = -5;
349   dz = 243.55+2.25;
350   gMC->Gspos("DCO5", 1, "DDIP", dx,  0, dz, 0, "ONLY");
351
352   // 9.06.2000
353
354   cpar[3] = 180.-50.;
355   cpar[4] = 180.+50.; 
356
357   gMC->Gsvolu("DCO6", "TUBS", idtmed[1810], cpar, 5);
358
359   dx = +5;
360    dz = 243.55+2.25;
361   gMC->Gspos("DCO6", 1, "DDIP", dx,  0, dz, 0, "ONLY");
362
363   //Steel supported planes
364
365   cpar[0] = 274.+1.5+2.;
366   cpar[1] = 274.+18.6;
367   cpar[2] = 1.;
368   cpar[3] = -50.;
369   cpar[4] = 50.;  
370  
371   gMC->Gsvolu("DCO7", "TUBS", idtmed[1818], cpar, 5);
372
373   dx = -5;
374   dz = 168.25+1.;
375   gMC->Gspos("DCO7", 1, "DDIP", dx, 0, dz, 0, "ONLY");
376
377   // 9.06.2000
378   cpar[0] = 274.+1.5+2.;
379   cpar[1] = 274.+18.6;
380   cpar[2] = 1.;
381   cpar[3] = 180.-50.;
382   cpar[4] = 180.+50.; 
383
384  
385   gMC->Gsvolu("DCO8", "TUBS", idtmed[1818], cpar, 5);
386
387   dx = +5;
388   dz = 168.25+1.;
389   gMC->Gspos("DCO8", 1, "DDIP", dx, 0, dz, 0, "ONLY");
390
391   //
392
393   cpar[0] = 207.- 18.6;
394   cpar[1] = 207.- 2.- 1.5;
395   cpar[2] = 1.;
396   cpar[3] = -50.;
397   cpar[4] = 50.; 
398
399   gMC->Gsvolu("DCO9", "TUBS", idtmed[1818], cpar, 5);
400
401   dx = -5;
402   dz = 168.25+1.;
403   gMC->Gspos("DCO9", 1, "DDIP", dx, 0, dz, 0, "ONLY");
404
405   // 9.06.2000
406
407   cpar[0] = 207.- 18.6;
408   cpar[1] = 207.- 2.- 1.5;
409   cpar[2] = 1.;
410   cpar[3] = 180.-50.;
411   cpar[4] = 180.+50.; 
412
413   gMC->Gsvolu("DCOA", "TUBS", idtmed[1818], cpar, 5);
414
415   dx = +5;
416   dz = 168.25+1.;
417   gMC->Gspos("DCOA", 1, "DDIP", dx, 0, dz, 0, "ONLY");
418
419
420   // Sides steel planes
421
422   cpar[0] = 207. - 1.5 -2.;
423   cpar[1] = 207. - 1.5 ;
424   cpar[2] = ((243.55+4.5+1.5)-168.25)/2;
425   cpar[3] = -50.;
426   cpar[4] = 50.; 
427  
428   gMC->Gsvolu("DCOB", "TUBS", idtmed[1818], cpar, 5);
429
430   cpar[0] = 274. + 1.5;
431   cpar[1] = 274. + 1.5 +2.;
432
433   gMC->Gsvolu("DCOC", "TUBS", idtmed[1818], cpar, 5);
434
435   dx=-5.;
436   dz = ((243.55+4.5+1.5)+168.25)/2;
437   gMC->Gspos("DCOB", 1, "DDIP", dx,  0, dz, 0, "ONLY");
438   gMC->Gspos("DCOC", 1, "DDIP", dx,  0, dz, 0, "ONLY");
439
440   // 9.06.2000
441
442   cpar[0] = 207. - 1.5 -2.;
443   cpar[1] = 207. - 1.5 ;
444   cpar[2] = ((243.55+4.5+1.5)-168.25)/2;
445   cpar[3] = 180.-50.;
446   cpar[4] = 180.+50.; 
447
448   gMC->Gsvolu("DCOD", "TUBS", idtmed[1818], cpar, 5);
449
450   cpar[0] = 274. + 1.5;
451   cpar[1] = 274. + 1.5 +2.;
452
453   gMC->Gsvolu("DCOE", "TUBS", idtmed[1818], cpar, 5);
454
455   dx=+5.;
456   dz = ((243.55+4.5+1.5)+168.25)/2;
457   gMC->Gspos("DCOD", 1, "DDIP", dx,  0, dz, 0, "ONLY");
458   gMC->Gspos("DCOE", 1, "DDIP", dx,  0, dz, 0, "ONLY");
459
460
461   // Top and bottom resin  planes
462
463   cpar[0] = 207. - 1.5 ;
464   cpar[1] = 207. ;
465   cpar[2] = ((243.55+4.5+1.5)-168.25)/2;
466   cpar[3] = -50.;
467   cpar[4] = 50.; 
468  
469   gMC->Gsvolu("DCOF", "TUBS", idtmed[1812], cpar, 5);
470
471   cpar[0] = 274.;
472   cpar[1] = 274. + 1.5;
473
474   gMC->Gsvolu("DCOG", "TUBS", idtmed[1812], cpar, 5);
475
476
477   dx=-5.;
478   dz = ((243.55+4.5+1.5)+168.25)/2;
479   gMC->Gspos("DCOF", 1, "DDIP", dx,  0, dz, 0, "ONLY");
480   gMC->Gspos("DCOG", 1, "DDIP", dx,  0, dz, 0, "ONLY");
481
482   // 9.06.2000
483   cpar[0] = 207. - 1.5 ;
484   cpar[1] = 207. ;
485   cpar[2] = ((243.55+4.5+1.5)-168.25)/2;
486
487   cpar[3] = 180.-50.;
488   cpar[4] = 180.+50.; 
489
490   gMC->Gsvolu("DCOH", "TUBS", idtmed[1812], cpar, 5);
491
492   cpar[0] = 274.;
493   cpar[1] = 274. + 1.5;
494
495   gMC->Gsvolu("DCOI", "TUBS", idtmed[1812], cpar, 5);
496
497
498   dx=+5.;
499   dz = ((243.55+4.5+1.5)+168.25)/2;
500   gMC->Gspos("DCOH", 1, "DDIP", dx,  0, dz, 0, "ONLY");
501   gMC->Gspos("DCOI", 1, "DDIP", dx,  0, dz, 0, "ONLY");
502
503
504   // Aluminum cabels
505
506   cpar[0] = 274. + 1.5  +2.;
507   cpar[1] = 274. + 1.5  +2. + 80.;
508   cpar[2] = 5.05/2;
509   cpar[3] = -24.;
510   cpar[4] = 24.; 
511  
512   gMC->Gsvolu("DCOJ", "TUBS", idtmed[kCable], cpar, 5);
513
514   //  dx = 274. + 1.5  +2. +40.;
515   //  dx = 5. + 1.5 +2. +40.;
516   //  dx = 5. + 1.5 +2.;
517   dx=-5.;
518   dz = 168.25 + 5.05 + 5.05/2;
519   gMC->Gspos("DCOJ", 1, "DDIP", dx,  0, dz, 0, "ONLY");
520
521   dz = 243.55 - 5.05/2;
522   gMC->Gspos("DCOJ", 2, "DDIP", dx,  0, dz, 0, "ONLY");
523
524   // 9.06.2000
525
526   cpar[3] = 180.-24.;
527   cpar[4] = 180.+24.; 
528
529    gMC->Gsvolu("DCOK", "TUBS", idtmed[kCable], cpar, 5);
530
531   //  dx = 274. + 1.5  +2. +40.;
532   //  dx = 5. + 1.5 +2. +40.;
533   //  dx = 5. + 1.5 +2.;
534   dx=+5.;
535   dz = 168.25 + 5.05 + 5.05/2;
536   gMC->Gspos("DCOK", 1, "DDIP", dx,  0, dz, 0, "ONLY");
537
538   dz = 243.55 - 5.05/2;
539   gMC->Gspos("DCOK", 2, "DDIP", dx,  0, dz, 0, "ONLY");
540
541  
542   //   YOKE 
543
544 // Top and bottom blocks
545   ypar[0] = 298.1 ; 
546   ypar[1] = 69.5;
547   ypar[2] = 155.75;
548
549 // iron- high cuts
550   gMC->Gsvolu("DY1 ", "BOX ", idtmed[1858], ypar, 3);
551   ypar[0] = 144.+10. ; 
552   ypar[1] = 193.3+10.;
553   ypar[2] = 5.;
554   ypar[3] = 155.75;
555   dy = -69.5 + 5.;
556 // iron- low cuts
557   gMC->Gsvolu("DY11", "TRD1", idtmed[1818], ypar, 4);
558   gMC->Gspos("DY11", 1, "DY1 ", 0.,  dy, 0., 0, "ONLY");
559
560   dy = 365.5;
561   dz = 4.95;
562   gMC->Gspos("DY1 ", 1, "DDIP", 0.,  dy, -dz, 0, "ONLY");
563
564   the1 = 270.;
565   phi1 = 0.;
566   the2 = 270.;
567   phi2 = 90.;
568   the3 = 0.;
569   phi3 = 0.;
570   AliMatrix(idrotm[1808], the1, phi1, the2, phi2, the3, phi3);
571   gMC->Gspos("DY1 ", 2, "DDIP", 0., -dy, -dz, idrotm[1808] , "ONLY");
572
573 // side walls
574   //  ypar[0] = 579./2. ; 
575   ypar[0] = 296. ; 
576   ypar[1] = 0.;
577   ypar[2] = 0.;
578   ypar[3] = 155.75;
579   ypar[4] = 47.9 ;
580   ypar[5] = 72.55;
581   ypar[6] = 4.3058039629 ;
582   // z+ 
583   ypar[7] = 155.75;
584   ypar[8] = 47.9 ;
585   ypar[9] = 72.55;
586   ypar[10] = 4.3058039629 ;
587
588 // iron - high cuts
589
590   gMC->Gsvolu("DY2 ", "TRAP", idtmed[1858], ypar,11);
591
592   ypar[4] = 47.9 -5.;
593   ypar[5] = 72.55 -5.;
594
595   ypar[8] = 47.9 -5.;
596   ypar[9] = 72.55 -5.;
597
598
599 // iron - low cuts
600
601   gMC->Gsvolu("DY22", "TRAP", idtmed[1818], ypar,11);
602
603   dy = 0.;
604   dx = -5.;
605
606   gMC->Gspos("DY22", 1, "DY2 ", dx,  dy, 0., 0, "ONLY");
607
608   the1 = 90.;
609   phi1 = 180.;
610   the2 = 180.;
611   phi2 = 180.;
612   the3 = 90.;
613   phi3 = 90.;
614   AliMatrix(idrotm[1809], the1, phi1, the2, phi2, the3, phi3);
615
616   the1 = 90.;
617   phi1 = 0.;
618   the2 = 180.;
619   phi2 = 0.;
620   the3 = 90. ;
621   phi3 = 90.;
622   AliMatrix(idrotm[1810], the1, phi1, the2, phi2, the3, phi3);
623
624   dx = 228.875;
625   dz = - 4.95;
626   gMC->Gspos("DY2 ", 1, "DDIP", dx, 0.0,  dz, idrotm[1809], "ONLY");
627   gMC->Gspos("DY2 ", 2, "DDIP", -dx, 0.0,  dz, idrotm[1810], "ONLY");
628
629   dz=975.;
630   gMC->Gspos("DDIP", 1, "ALIC", 0., 0., dz, 0, "ONLY");
631
632   gMC->Gsatt("DDIP", "SEEN", 0);
633 //  gMC->Gsatt("DC21", "SEEN", 0);
634 //  gMC->Gsatt("DC22", "SEEN", 0);
635 //  gMC->Gsatt("DC3 ", "SEEN", 0);
636 //  gMC->Gsatt("DC4 ", "SEEN", 0);
637 }
638
639 //_____________________________________________________________________________
640 void AliDIPOv2::DrawModule()
641 {
642   //
643   // Draw a shaded view of the muon absorber
644   //
645
646   AliMC* gMC = AliMC::GetMC();
647   
648   // Set everything unseen
649   gMC->Gsatt("*", "seen", -1);
650   // 
651   // Set ALIC mother transparent
652   gMC->Gsatt("ALIC","SEEN",0);
653   //
654   // Set the volumes visible
655   gMC->Gsatt("DDIP","seen",0);
656   gMC->Gsatt("DC1 ","seen",1);
657   gMC->Gsatt("DC2 ","seen",1);
658   gMC->Gsatt("DC3 ","seen",1);
659   gMC->Gsatt("DC4 ","seen",1);
660   gMC->Gsatt("DC11","seen",1);
661   gMC->Gsatt("DC21","seen",1);
662   gMC->Gsatt("DC12","seen",1);
663   gMC->Gsatt("DC22","seen",1);
664   gMC->Gsatt("DL1 ","seen",1);
665   gMC->Gsatt("DL2 ","seen",1);
666   gMC->Gsatt("DY1 ","seen",1);
667   gMC->Gsatt("DY2 ","seen",1);
668   gMC->Gsatt("DYL ","seen",1);
669   gMC->Gsatt("DY3 ","seen",1);
670  // gMC->Gsatt("DY4 ","seen",1);
671  // gMC->Gsatt("DY5 ","seen",1);
672  // gMC->Gsatt("DY6 ","seen",1);
673 //  gMC->Gsatt("DY7 ","seen",1);
674   //
675   gMC->Gdopt("hide", "on");
676   gMC->Gdopt("shad", "on");
677   gMC->Gsatt("*", "fill", 7);
678   gMC->SetClipBox(".");
679   gMC->SetClipBox(".");
680   gMC->DefaultRange();
681   gMC->Gdraw("alic", 30, 30, 0, 17, 13.5, .019, .019);
682   gMC->Gdhead(1111, "Magnetic Dipole Version 2");
683   gMC->Gdman(16, 4, "MAN");
684 }
685
686 //_____________________________________________________________________________
687 void AliDIPOv2::CreateMaterials()
688 {
689   //
690   // Create Materials for Magnetic Dipole version 2
691   //
692   
693   Int_t isxfld   = gAlice->Field()->Integ();
694   Float_t sxmgmx = gAlice->Field()->Max();
695   
696   Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 };
697   Float_t zsteel[4] = { 26.,24.,28.,14. };
698   Float_t wsteel[4] = { .715,.18,.1,.005 };
699
700   Float_t acoil[3]  = { 26.98,1.01,16. };
701   Float_t zcoil[3]  = { 13.,1.,8. };
702   Float_t wcoil[3]  = { .66,.226,.114 };
703
704   Float_t aresi[3]  = { 1.01,12.011,16.};
705   Float_t zresi[3]  = { 1.,6.,8. };
706   Float_t wresi[3]  = { .0644,.7655,.1701 };
707
708   Float_t aG10[5] = { 1.01,12.011,16.,28.085 ,79.904 };
709   Float_t zG10[5] = { 1.,6.,8.,14.,35. };
710   Float_t wG10[5] = { .02089,.22338,.28493,.41342,.05738 };
711
712   Float_t aAlCon[2] = { 14.61, 26.98};
713   Float_t zAlCon[2] = { 7.3, 13.};
714   Float_t wAlCon[2] = { .0004,.9996};
715
716   
717   Float_t epsil, stmin, deemax, tmaxfd, stemax;
718   
719   // --- Define the various materials for GEANT --- 
720   //     Aluminum 
721   AliMaterial(9, "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 37.2);
722   AliMaterial(29, "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 37.2);
723   AliMaterial(49, "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 37.2);
724   
725   //     Iron 
726   AliMaterial(10, "IRON$     ", 55.85, 26., 7.87, 1.76, 17.1);
727   AliMaterial(30, "IRON$     ", 55.85, 26., 7.87, 1.76, 17.1);
728   AliMaterial(50, "IRON$     ", 55.85, 26., 7.87, 1.76, 17.1);
729   
730   //     Air 
731   AliMaterial(15, "AIR$      ", 14.61, 7.3, .001205, 30423.24, 67500);
732   AliMaterial(35, "AIR$      ", 14.61, 7.3, .001205, 30423.24, 67500);
733   AliMaterial(55, "AIR$      ", 14.61, 7.3, .001205, 30423.24, 67500);
734   
735   //     Vacuum 
736   AliMaterial(16, "VACUUM$ ", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
737   AliMaterial(36, "VACUUM$ ", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
738   AliMaterial(56, "VACUUM$ ", 1e-16, 1e-16, 1e-16, 1e16, 1e16);
739   
740   //     stainless Steel 
741   AliMixture(19, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
742   AliMixture(39, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
743   AliMixture(59, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel);
744   
745   //     Coil 
746   AliMixture(14, "Al$", acoil, zcoil, 2.122, 3, wcoil);
747   AliMixture(34, "Al$", acoil, zcoil, 2.122, 3, wcoil);
748   AliMixture(54, "Al$", acoil, zcoil, 2.122, 3, wcoil);
749
750   //RESIN
751   AliMixture(13, "RESIN$", aresi, zresi, 1.05, 3, wresi);
752   AliMixture(33, "RESIN$", aresi, zresi, 1.05, 3, wresi);
753   AliMixture(53, "RESIN$", aresi, zresi, 1.05, 3, wresi);  
754
755   //G10
756   AliMixture(11, "G10$", aG10, zG10, 1.7, 5, wG10);
757   AliMixture(31, "G10$", aG10, zG10, 1.7, 5, wG10);
758   AliMixture(51, "G10$", aG10, zG10, 1.7, 5, wG10); 
759  
760   //Aluminium Conductor
761   AliMixture(12, "AlCond$", aAlCon, zAlCon, 1.3506, 2, wAlCon);
762   AliMixture(32, "AlCond$", aAlCon, zAlCon, 1.3506, 2, wAlCon);
763   AliMixture(52, "AlCond$", aAlCon, zAlCon, 1.3506, 2, wAlCon);  
764
765   // **************** 
766   //     Defines tracking media parameters. 
767   //     Les valeurs sont commentees pour laisser le defaut 
768   //     a GEANT (version 3-21, page CONS200), f.m. 
769   epsil  = .001;  // Tracking precision, 
770   stemax = -1.;   // Maximum displacement for multiple scat 
771   tmaxfd = -20.;  // Maximum angle due to field deflection 
772   deemax = -.3;   // Maximum fractional energy loss, DLS 
773   stmin  = -.8;
774   // *************** 
775   
776   //    Aluminum 
777   AliMedium(9, "ALU_C0          ",  9, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
778   AliMedium(29, "ALU_C1          ", 29, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
779   AliMedium(49, "ALU_C2          ", 49, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
780   
781   //    Iron 
782   AliMedium(10, "FE_C0           ", 10, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
783   AliMedium(30, "FE_C1           ", 30, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
784   AliMedium(50, "FE_C2           ", 50, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
785   
786   //    Air 
787   AliMedium(15, "AIR_C0          ", 15, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
788   AliMedium(35, "AIR_C1          ", 35, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
789   AliMedium(55, "AIR_C2          ", 55, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
790   
791   //    Vacuum 
792   AliMedium(16, "VA_C0           ", 16, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
793   AliMedium(36, "VA_C1           ", 36, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
794   AliMedium(56, "VA_C2           ", 56, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
795   
796   //    Steel 
797   AliMedium(19, "ST_C0           ", 19, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
798   AliMedium(39, "ST_C1           ", 39, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
799   AliMedium(59, "ST_C3           ", 59, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
800   
801   //    Coil 
802   AliMedium(14, "Coil_C1         ", 14, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
803   AliMedium(34, "Coil_C2         ", 34, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
804   AliMedium(54, "Coil_C3         ", 54, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
805
806   //    Resin 
807   AliMedium(13, "RESIN_C0         ", 13, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
808   AliMedium(33, "RESIN_C1         ", 33, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
809   AliMedium(53, "RESIN_C2         ", 53, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
810
811   //    G10 
812   AliMedium(11, "G10_C0         ", 11, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
813   AliMedium(31, "G10_C1         ", 31, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
814   AliMedium(51, "G10_C2         ", 51, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
815
816   //Aluminium Contactor
817   AliMedium(12, "AlCond_C0         ", 12, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
818   AliMedium(32, "AlCond_C1         ", 32, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
819   AliMedium(52, "AlCond_C2         ", 52, 0, isxfld, sxmgmx, tmaxfd, stemax, deemax, epsil, stmin);
820 }
821
822
823
824
825
826