2c5918b89c20e8b03c5eed7ddea96c74601115c5
[u/mrichter/AliRoot.git] / FMD / AliFMDv1.cxx
1 ///////////////////////////////////////////////////////////////////////////////
2 //                                                                           //
3 //  Forward Multiplicity Detector Version 1                                  //
4 //                                                                           //
5 //Begin_Html
6 /*
7 <img src="picts/AliFMDv1Class.gif">
8 </pre>
9 <br clear=left>
10 <font size=+2 color=red>
11 <p>The responsible person for this module is
12 <a href="mailto:Valeri.Kondratiev@cern.ch">Valeri Kondratiev</a>.
13 </font>
14 <pre>
15 */
16 //End_Html
17 //                                                                           //
18 ///////////////////////////////////////////////////////////////////////////////
19
20 #include "AliRun.h"
21 #include "AliFMDv1.h"
22 #include "AliMC.h"
23 #include "AliConst.h"
24  
25  
26 ClassImp(AliFMDv1)
27  
28 //_____________________________________________________________________________
29 AliFMDv1::AliFMDv1() : AliFMD()
30 {
31   //
32   // Defautl constructor for FMD version 1
33   //
34 }
35  
36 //_____________________________________________________________________________
37 AliFMDv1::AliFMDv1(const char *name, const char *title)
38   : AliFMD(name,title)
39 {
40   //
41   // Standard constructor for FMD version 1
42   //
43 }
44  
45 //_____________________________________________________________________________
46 void AliFMDv1::CreateGeometry()
47 {
48   //
49   // Creation of the geometry of the FMD version 1
50   //
51   //Begin_Html
52   /*
53     <img src="picts/AliFMDv1Tree.gif">
54   */
55   //End_Html
56   //Begin_Html
57   /*
58     <img src="picts/AliFMDv1.gif">
59   */
60   //End_Html
61
62   
63   Float_t rout;
64   Float_t z;
65   Float_t h1, h2, t0, t1, t2;
66   Float_t tt;
67   Float_t par[3], rin;
68   const Float_t v1 = 42.0;
69   const Float_t v2 = 4.5;
70   const Float_t v3 = 5.62;
71   const Float_t v4 = 16.0;
72   
73   Int_t *idtmed = fIdtmed->GetArray()-899;    
74   
75   // ******************************************************** 
76   //     DEFINE RIGHT DISK#3  OF FMD 
77   // ******************************************************** 
78   
79   //     Define parameters 
80   
81   rin  = 4.5;
82   rout = 10.5;
83   z    = 85.;
84   tt   = 2.5;
85   h1   = TMath::Sqrt(rout * rout + v1/ (tt * kPI)) - rout;
86   h2   = .4;
87   t0   = v2/ (h1 * kPI * (h1 + rout * 2.));
88   t1   = v3/ (h2 * kPI * (h2 + (h1 + rout) * 2.));
89   t2   = v4/ (h2 * kPI * (h2 + (h1 + rout) * 2.));
90   
91   // *******Inner slice*********** 
92   //     Inner steel wall 
93   par[0] = rin - .02;
94   par[1] = rin;
95   par[2] = 1.5;
96   gMC->Gsvolu("IWR3", "TUBE", idtmed[899], par, 3);
97   gMC->Gspos("IWR3", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
98   //     Front steel wall 
99   par[0] = rin;
100   par[1] = rout;
101   par[2] = .01;
102   gMC->Gsvolu("FWR3", "TUBE", idtmed[899], par, 3);
103   gMC->Gspos("FWR3", 1, "ALIC", 0., 0., z + .01, 0, "ONLY");
104   //     Rear steel wall 
105   gMC->Gsvolu("RWR3", "TUBE", idtmed[899], par, 3);
106   gMC->Gspos("RWR3", 1, "ALIC", 0., 0., z + 2.99, 0, "ONLY");
107   //     MCP 
108   par[0] = rin;
109   par[1] = rout;
110   par[2] = .07;
111   gMC->Gsvolu("MPR3", "TUBE", idtmed[900], par, 3);
112   gMC->Gspos("MPR3", 1, "ALIC", 0., 0., z + 1.57, 0, "ONLY");
113   //     Silicon plate 
114   par[0] = rin;
115   par[1] = rout;
116   par[2] = .019;
117   gMC->Gsvolu("SPR3", "TUBE", idtmed[901], par, 3);
118   gMC->Gspos("SPR3", 1, "ALIC", 0., 0., z + 1.719, 0, "ONLY");
119   //     Summator plate 
120   par[0] = rin;
121   par[1] = rout;
122   par[2] = .01;
123   gMC->Gsvolu("SMR3", "TUBE", idtmed[902], par, 3);
124   gMC->Gspos("SMR3", 1, "ALIC", 0., 0., z + 2.01, 0, "ONLY");
125   // *******Outer slice ******* 
126   //     Ceramic plate 
127   par[0] = rout;
128   par[1] = rout + h1;
129   par[2] = 1.25;
130   gMC->Gsvolu("CPR3", "TUBE", idtmed[902], par, 3);
131   gMC->Gspos("CPR3", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
132   //     Covar spring 
133   par[0] = rout;
134   par[1] = rout + h1;
135   par[2] = t0 / 2.;
136   gMC->Gsvolu("C1R3", "TUBE", idtmed[903], par, 3);
137   gMC->Gspos("C1R3", 1, "ALIC", 0., 0., z + .25 - t0 / 2., 0, "ONLY");
138   gMC->Gsvolu("C2R3", "TUBE", idtmed[903], par, 3);
139   gMC->Gspos("C2R3", 1, "ALIC", 0., 0., z + 2.75 + t0 / 2., 0, "ONLY");
140   //     Getter camera 
141   par[0] = rout + h1;
142   par[1] = rout + h1 + h2;
143   par[2] = t1 / 2.;
144   gMC->Gsvolu("GKR3", "TUBE", idtmed[903], par, 3);
145   gMC->Gspos("GKR3", 1, "ALIC", 0., 0., z + .25 + t1 / 2., 0, "ONLY");
146   //     Ceramic slice 
147   par[0] = rout + h1;
148   par[1] = rout + h1 + h2;
149   par[2] = t2 / 2.;
150   gMC->Gsvolu("SCR3", "TUBE", idtmed[902], par, 3);
151   gMC->Gspos("SCR3", 1, "ALIC", 0., 0., z + .25 + t1 + t2 / 2., 0, "ONLY");
152   // ******Electronic slice ******* 
153   //     Silicon ring 
154   par[0] = rout + h1 + h2;
155   par[1] = rout + h1 + h2 + 5.;
156   par[2] = .025;
157   gMC->Gsvolu("SER3", "TUBE", idtmed[901], par, 3);
158   gMC->Gspos("SER3", 1, "ALIC", 0., 0., z + 1.57 - .025, 0, "ONLY");
159   //     Ceramic ring 
160   par[0] = rout + h1 + h2;
161   par[1] = rout + h1 + h2 + 5.;
162   par[2] = .025;
163   gMC->Gsvolu("CER3", "TUBE", idtmed[902], par, 3);
164   gMC->Gspos("CER3", 1, "ALIC", 0., 0., z + 1.58 + .025, 0, "ONLY");
165   // *********************************************************** 
166   //     DEFINE LEFT DISK#3 OF FMD 
167   // *********************************************************** 
168   
169   //     Define parameters 
170   
171   rin  = 4.5;
172   rout = 10.5;
173   z    = -85.;
174   tt   = 2.5;
175   h1   = TMath::Sqrt(rout * rout + v1/ (tt * kPI)) - rout;
176   h2   = .4;
177   t0   = v2/ (h1 * kPI * (h1 + rout * 2.));
178   t1   = v3/ (h2 * kPI * (h2 + (h1 + rout) * 2.));
179   t2   = v4/  (h2 * kPI * (h2 + (h1 + rout) * 2.));
180   
181   // *******Inner slice*********** 
182   //     Inner steel wall 
183   par[0] = rin - .02;
184   par[1] = rin;
185   par[2] = 1.5;
186   gMC->Gsvolu("IWL3", "TUBE", idtmed[899], par, 3);
187   gMC->Gspos("IWL3", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
188   //     Front steel wall 
189   par[0] = rin;
190   par[1] = rout;
191   par[2] = .01;
192   gMC->Gsvolu("FWL3", "TUBE", idtmed[899], par, 3);
193   gMC->Gspos("FWL3", 1, "ALIC", 0., 0., z - .01, 0, "ONLY");
194   //     Rear steel wall 
195   gMC->Gsvolu("RWL3", "TUBE", idtmed[899], par, 3);
196   gMC->Gspos("RWL3", 1, "ALIC", 0., 0., z - 2.99, 0, "ONLY");
197   //     MCP 
198   par[0] = rin;
199   par[1] = rout;
200   par[2] = .07;
201   gMC->Gsvolu("MPL3", "TUBE", idtmed[900], par, 3);
202   gMC->Gspos("MPL3", 1, "ALIC", 0., 0., z - 1.57, 0, "ONLY");
203   //     Silicon plate 
204   par[0] = rin;
205   par[1] = rout;
206   par[2] = .019;
207   gMC->Gsvolu("SPL3", "TUBE", idtmed[901], par, 3);
208   gMC->Gspos("SPL3", 1, "ALIC", 0., 0., z - 1.719, 0, "ONLY");
209   //     Summator plate 
210   par[0] = rin;
211   par[1] = rout;
212   par[2] = .01;
213   gMC->Gsvolu("SML3", "TUBE", idtmed[902], par, 3);
214   gMC->Gspos("SML3", 1, "ALIC", 0., 0., z - 2.01, 0, "ONLY");
215   // *******Outer slice ******* 
216   //     Ceramic plate 
217   par[0] = rout;
218   par[1] = rout + h1;
219   par[2] = 1.25;
220   gMC->Gsvolu("CPL3", "TUBE", idtmed[902], par, 3);
221   gMC->Gspos("CPL3", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
222   //     Covar spring 
223   par[0] = rout;
224   par[1] = rout + h1;
225   par[2] = t0 / 2.;
226   gMC->Gsvolu("C1L3", "TUBE", idtmed[903], par, 3);
227   gMC->Gspos("C1L3", 1, "ALIC", 0., 0., z - .25 + t0 / 2., 0, "ONLY");
228   gMC->Gsvolu("C2L3", "TUBE", idtmed[903], par, 3);
229   gMC->Gspos("C2L3", 1, "ALIC", 0., 0., z - 2.75 - t0 / 2., 0, "ONLY");
230   //     Getter camera 
231   par[0] = rout + h1;
232   par[1] = rout + h1 + h2;
233   par[2] = t1 / 2.;
234   gMC->Gsvolu("GKL3", "TUBE", idtmed[903], par, 3);
235   gMC->Gspos("GKL3", 1, "ALIC", 0., 0., z - .25 - t1 / 2., 0, "ONLY");
236   //     Ceramic slice 
237   par[0] = rout + h1;
238   par[1] = rout + h1 + h2;
239   par[2] = t2 / 2.;
240   gMC->Gsvolu("SCL3", "TUBE", idtmed[902], par, 3);
241   gMC->Gspos("SCL3", 1, "ALIC", 0., 0., z - .25 - t1 - t2 / 2., 0, "ONLY");
242   // ******Electronic slice ******* 
243   //     Silicon ring 
244   par[0] = rout + h1 + h2;
245   par[1] = rout + h1 + h2 + 5.;
246   par[2] = .025;
247   gMC->Gsvolu("SEL3", "TUBE", idtmed[901], par, 3);
248   gMC->Gspos("SEL3", 1, "ALIC", 0., 0., z - 1.57 + .025, 0, "ONLY");
249   //     Ceramic ring 
250   par[0] = rout + h1 + h2;
251   par[1] = rout + h1 + h2 + 5.;
252   par[2] = .025;
253   gMC->Gsvolu("CEL3", "TUBE", idtmed[902], par, 3);
254   gMC->Gspos("CEL3", 1, "ALIC", 0., 0., z - 1.58 - .025, 0, "ONLY");
255   // ******************************************************** 
256   //     DEFINE RIGHT DISK#2  OF FMD 
257   // ******************************************************** 
258   
259   //     Define parameters 
260   
261   rin  = 8.;
262   rout = 14.;
263   z    = 69.7;
264   tt   = 2.5;
265   h1   = TMath::Sqrt(rout * rout + v1/ (tt * kPI)) - rout;
266   h2   = .4;
267   t0   = v2/ (h1 * kPI * (h1 + rout * 2.));
268   t1   = v3/ (h2 * kPI * (h2 + (h1 + rout) * 2.));
269   t2   = v4/  (h2 * kPI * (h2 + (h1 + rout) * 2.));
270   
271   // *******Inner slice*********** 
272   //     Inner steel wall 
273   par[0] = rin - .02;
274   par[1] = rin;
275   par[2] = 1.5;
276   gMC->Gsvolu("IWR2", "TUBE", idtmed[899], par, 3);
277   gMC->Gspos("IWR2", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
278   //     Front steel wall 
279   par[0] = rin;
280   par[1] = rout;
281   par[2] = .01;
282   gMC->Gsvolu("FWR2", "TUBE", idtmed[899], par, 3);
283   gMC->Gspos("FWR2", 1, "ALIC", 0., 0., z + .01, 0, "ONLY");
284   //     Rear steel wall 
285   gMC->Gsvolu("RWR2", "TUBE", idtmed[899], par, 3);
286   gMC->Gspos("RWR2", 1, "ALIC", 0., 0., z + 2.99, 0, "ONLY");
287   //     MCP 
288   par[0] = rin;
289   par[1] = rout;
290   par[2] = .07;
291   gMC->Gsvolu("MPR2", "TUBE", idtmed[900], par, 3);
292   gMC->Gspos("MPR2", 1, "ALIC", 0., 0., z + 1.57, 0, "ONLY");
293   //     Silicon plate 
294   par[0] = rin;
295   par[1] = rout;
296   par[2] = .019;
297   gMC->Gsvolu("SPR2", "TUBE", idtmed[901], par, 3);
298   gMC->Gspos("SPR2", 1, "ALIC", 0., 0., z + 1.719, 0, "ONLY");
299   //     Summator plate 
300   par[0] = rin;
301   par[1] = rout;
302   par[2] = .01;
303   gMC->Gsvolu("SMR2", "TUBE", idtmed[902], par, 3);
304   gMC->Gspos("SMR2", 1, "ALIC", 0., 0., z + 2.01, 0, "ONLY");
305   // *******Outer slice ******* 
306   //     Ceramic plate 
307   par[0] = rout;
308   par[1] = rout + h1;
309   par[2] = 1.25;
310   gMC->Gsvolu("CPR2", "TUBE", idtmed[902], par, 3);
311   gMC->Gspos("CPR2", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
312   //     Covar spring 
313   par[0] = rout;
314   par[1] = rout + h1;
315   par[2] = t0 / 2.;
316   gMC->Gsvolu("C1R2", "TUBE", idtmed[903], par, 3);
317   gMC->Gspos("C1R2", 1, "ALIC", 0., 0., z + .25 - t0 / 2., 0, "ONLY");
318   gMC->Gsvolu("C2R2", "TUBE", idtmed[903], par, 3);
319   gMC->Gspos("C2R2", 1, "ALIC", 0., 0., z + 2.75 + t0 / 2., 0, "ONLY");
320   //     Getter camera 
321   par[0] = rout + h1;
322   par[1] = rout + h1 + h2;
323   par[2] = t1 / 2.;
324   gMC->Gsvolu("GKR2", "TUBE", idtmed[903], par, 3);
325   gMC->Gspos("GKR2", 1, "ALIC", 0., 0., z + .25 + t1 / 2., 0, "ONLY");
326   //     Ceramic slice 
327   par[0] = rout + h1;
328   par[1] = rout + h1 + h2;
329   par[2] = t2 / 2.;
330   gMC->Gsvolu("SCR2", "TUBE", idtmed[902], par, 3);
331   gMC->Gspos("SCR2", 1, "ALIC", 0., 0., z + .25 + t1 + t2 / 2., 0, "ONLY");
332   // ******Electronic slice ******* 
333   //     Silicon ring 
334   par[0] = rout + h1 + h2;
335   par[1] = rout + h1 + h2 + 5.;
336   par[2] = .025;
337   gMC->Gsvolu("SER2", "TUBE", idtmed[901], par, 3);
338   gMC->Gspos("SER2", 1, "ALIC", 0., 0., z + 1.57 - .025, 0, "ONLY");
339   //     Ceramic ring 
340   par[0] = rout + h1 + h2;
341   par[1] = rout + h1 + h2 + 5.;
342   par[2] = .025;
343   gMC->Gsvolu("CER2", "TUBE", idtmed[902], par, 3);
344   gMC->Gspos("CER2", 1, "ALIC", 0., 0., z + 1.58 + .025, 0, "ONLY");
345   // *********************************************************** 
346   //       DEFINE LEFT DISK#2 OF FMD 
347   // *********************************************************** 
348   
349   //       Define parameters 
350   
351   rin  = 8.;
352   rout = 14.;
353   z    = -69.7;
354   tt   = 2.5;
355   h1   = TMath::Sqrt(rout * rout + v1/ (tt * kPI)) - rout;
356   h2   = .4;
357   t0   = v2/ (h1 * kPI * (h1 + rout * 2.));
358   t1   = v3/ (h2 * kPI * (h2 + (h1 + rout) * 2.));
359   t2   = v4/  (h2 * kPI * (h2 + (h1 + rout) * 2.));
360   
361   // *******Inner slice*********** 
362   //     Inner steel wall 
363   par[0] = rin - .02;
364   par[1] = rin;
365   par[2] = 1.5;
366   gMC->Gsvolu("IWL2", "TUBE", idtmed[899], par, 3);
367   gMC->Gspos("IWL2", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
368   //     Front steel wall 
369   par[0] = rin;
370   par[1] = rout;
371   par[2] = .01;
372   gMC->Gsvolu("FWL2", "TUBE", idtmed[899], par, 3);
373   gMC->Gspos("FWL2", 1, "ALIC", 0., 0., z - .01, 0, "ONLY");
374   //     Rear steel wall 
375   gMC->Gsvolu("RWL2", "TUBE", idtmed[899], par, 3);
376   gMC->Gspos("RWL2", 1, "ALIC", 0., 0., z - 2.99, 0, "ONLY");
377   //     MCP 
378   par[0] = rin;
379   par[1] = rout;
380   par[2] = .07;
381   gMC->Gsvolu("MPL2", "TUBE", idtmed[900], par, 3);
382   gMC->Gspos("MPL2", 1, "ALIC", 0., 0., z - 1.57, 0, "ONLY");
383   //     Silicon plate 
384   par[0] = rin;
385   par[1] = rout;
386   par[2] = .019;
387   gMC->Gsvolu("SPL2", "TUBE", idtmed[901], par, 3);
388   gMC->Gspos("SPL2", 1, "ALIC", 0., 0., z - 1.719, 0, "ONLY");
389   //     Summator plate 
390   par[0] = rin;
391   par[1] = rout;
392   par[2] = .01;
393   gMC->Gsvolu("SML2", "TUBE", idtmed[902], par, 3);
394   gMC->Gspos("SML2", 1, "ALIC", 0., 0., z - 2.01, 0, "ONLY");
395   // *******Outer slice ******* 
396   //     Ceramic plate 
397   par[0] = rout;
398   par[1] = rout + h1;
399   par[2] = 1.25;
400   gMC->Gsvolu("CPL2", "TUBE", idtmed[902], par, 3);
401   gMC->Gspos("CPL2", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
402   //     Covar spring 
403   par[0] = rout;
404   par[1] = rout + h1;
405   par[2] = t0 / 2.;
406   gMC->Gsvolu("C1L2", "TUBE", idtmed[903], par, 3);
407   gMC->Gspos("C1L2", 1, "ALIC", 0., 0., z - .25 + t0 / 2., 0, "ONLY");
408   gMC->Gsvolu("C2L2", "TUBE", idtmed[903], par, 3);
409   gMC->Gspos("C2L2", 1, "ALIC", 0., 0., z - 2.75 - t0 / 2., 0, "ONLY");
410   //     Getter camera 
411   par[0] = rout + h1;
412   par[1] = rout + h1 + h2;
413   par[2] = t1 / 2.;
414   gMC->Gsvolu("GKL2", "TUBE", idtmed[903], par, 3);
415   gMC->Gspos("GKL2", 1, "ALIC", 0., 0., z - .25 - t1 / 2., 0, "ONLY");
416   //     Ceramic slice 
417   par[0] = rout + h1;
418   par[1] = rout + h1 + h2;
419   par[2] = t2 / 2.;
420   gMC->Gsvolu("SCL2", "TUBE", idtmed[902], par, 3);
421   gMC->Gspos("SCL2", 1, "ALIC", 0., 0., z - .25 - t1 - t2 / 2., 0, "ONLY");
422   // ******Electronic slice ******* 
423   //     Silicon ring 
424   par[0] = rout + h1 + h2;
425   par[1] = rout + h1 + h2 + 5.;
426   par[2] = .025;
427   gMC->Gsvolu("SEL2", "TUBE", idtmed[901], par, 3);
428   gMC->Gspos("SEL2", 1, "ALIC", 0., 0., z - 1.57 + .025, 0, "ONLY");
429   //     Ceramic ring 
430   par[0] = rout + h1 + h2;
431   par[1] = rout + h1 + h2 + 5.;
432   par[2] = .025;
433   gMC->Gsvolu("CEL2", "TUBE", idtmed[902], par, 3);
434   gMC->Gspos("CEL2", 1, "ALIC", 0., 0., z - 1.58 - .025, 0, "ONLY");
435   // ******************************************************** 
436   //     DEFINE RIGHT DISK#1  OF FMD 
437   // ******************************************************** 
438   
439   //     Define parameters 
440
441   rin  = 8.;
442   rout = 17.5;
443   z    = 42.5;
444   tt   = 2.5;
445   h1   = TMath::Sqrt(rout * rout + v1/ (tt * kPI)) - rout;
446   h2   = .4;
447   t0   = v2/ (h1 * kPI * (h1 + rout * 2.));
448   t1   = v3/ (h2 * kPI * (h2 + (h1 + rout) * 2.));
449   t2   = v4/ (h2 * kPI * (h2 + (h1 + rout) * 2.));
450   
451   // *******Inner slice*********** 
452   //     Inner steel wall 
453   par[0] = rin - .02;
454   par[1] = rin;
455   par[2] = 1.5;
456   gMC->Gsvolu("IWR1", "TUBE", idtmed[899], par, 3);
457   gMC->Gspos("IWR1", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
458   //     Front steel wall 
459   par[0] = rin;
460   par[1] = rout;
461   par[2] = .01;
462   gMC->Gsvolu("FWR1", "TUBE", idtmed[899], par, 3);
463   gMC->Gspos("FWR1", 1, "ALIC", 0., 0., z + .01, 0, "ONLY");
464   //     Rear steel wall 
465   gMC->Gsvolu("RWR1", "TUBE", idtmed[899], par, 3);
466   gMC->Gspos("RWR1", 1, "ALIC", 0., 0., z + 2.99, 0, "ONLY");
467   //     MCP 
468   par[0] = rin;
469   par[1] = rout;
470   par[2] = .07;
471   gMC->Gsvolu("MPR1", "TUBE", idtmed[900], par, 3);
472   gMC->Gspos("MPR1", 1, "ALIC", 0., 0., z + 1.57, 0, "ONLY");
473   //     Silicon plate 
474   par[0] = rin;
475   par[1] = rout;
476   par[2] = .019;
477   gMC->Gsvolu("SPR1", "TUBE", idtmed[901], par, 3);
478   gMC->Gspos("SPR1", 1, "ALIC", 0., 0., z + 1.719, 0, "ONLY");
479   //     Summator plate 
480   par[0] = rin;
481   par[1] = rout;
482   par[2] = .01;
483   gMC->Gsvolu("SMR1", "TUBE", idtmed[902], par, 3);
484   gMC->Gspos("SMR1", 1, "ALIC", 0., 0., z + 2.01, 0, "ONLY");
485   // *******Outer slice ******* 
486   //     Ceramic plate 
487   par[0] = rout;
488   par[1] = rout + h1;
489   par[2] = 1.25;
490   gMC->Gsvolu("CPR1", "TUBE", idtmed[902], par, 3);
491   gMC->Gspos("CPR1", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
492   //     Covar spring 
493   par[0] = rout;
494   par[1] = rout + h1;
495   par[2] = t0 / 2.;
496   gMC->Gsvolu("C1R1", "TUBE", idtmed[903], par, 3);
497   gMC->Gspos("C1R1", 1, "ALIC", 0., 0., z + .25 - t0 / 2., 0, "ONLY");
498   gMC->Gsvolu("C2R1", "TUBE", idtmed[903], par, 3);
499   gMC->Gspos("C2R1", 1, "ALIC", 0., 0., z + 2.75 + t0 / 2., 0, "ONLY");
500   //     Getter camera 
501   par[0] = rout + h1;
502   par[1] = rout + h1 + h2;
503   par[2] = t1 / 2.;
504   gMC->Gsvolu("GKR1", "TUBE", idtmed[903], par, 3);
505   gMC->Gspos("GKR1", 1, "ALIC", 0., 0., z + .25 + t1 / 2., 0, "ONLY");
506   //     Ceramic slice 
507   par[0] = rout + h1;
508   par[1] = rout + h1 + h2;
509   par[2] = t2 / 2.;
510   gMC->Gsvolu("SCR1", "TUBE", idtmed[902], par, 3);
511   gMC->Gspos("SCR1", 1, "ALIC", 0., 0., z + .25 + t1 + t2 / 2., 0, "ONLY");
512   // ******Electronic slice ******* 
513   //     Silicon ring 
514   par[0] = rout + h1 + h2;
515   par[1] = rout + h1 + h2 + 5.;
516   par[2] = .025;
517   gMC->Gsvolu("SER1", "TUBE", idtmed[901], par, 3);
518   gMC->Gspos("SER1", 1, "ALIC", 0., 0., z + 1.57 - .025, 0, "ONLY");
519   //     Ceramic ring 
520   par[0] = rout + h1 + h2;
521   par[1] = rout + h1 + h2 + 5.;
522   par[2] = .025;
523   gMC->Gsvolu("CER1", "TUBE", idtmed[902], par, 3);
524   gMC->Gspos("CER1", 1, "ALIC", 0., 0., z + 1.58 + .025, 0, "ONLY");
525   // *********************************************************** 
526   //     DEFINE LEFT DISK#1 OF FMD 
527   // *********************************************************** 
528   
529   //     Define parameters 
530   
531   rin  = 8.;
532   rout = 17.5;
533   z    = -42.5;
534   tt   = 2.5;
535   h1   = TMath::Sqrt(rout * rout + v1/ (tt * kPI)) - rout;
536   h2   = .4;
537   t0   = v2/ (h1 * kPI * (h1 + rout * 2.));
538   t1   = v3/ (h2 * kPI * (h2 + (h1 + rout) * 2.));
539   t2   = v4/ (h2 * kPI * (h2 + (h1 + rout) * 2.));
540   
541   // *******Inner slice*********** 
542   //     Inner steel wall 
543   par[0] = rin - .02;
544   par[1] = rin;
545   par[2] = 1.5;
546   gMC->Gsvolu("IWL1", "TUBE", idtmed[899], par, 3);
547   gMC->Gspos("IWL1", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
548   //     Front steel wall 
549   par[0] = rin;
550   par[1] = rout;
551   par[2] = .01;
552   gMC->Gsvolu("FWL1", "TUBE", idtmed[899], par, 3);
553   gMC->Gspos("FWL1", 1, "ALIC", 0., 0., z - .01, 0, "ONLY");
554   //     Rear steel wall 
555   gMC->Gsvolu("RWL1", "TUBE", idtmed[899], par, 3);
556   gMC->Gspos("RWL1", 1, "ALIC", 0., 0., z - 2.99, 0, "ONLY");
557   //     MCP 
558   par[0] = rin;
559   par[1] = rout;
560   par[2] = .07;
561   gMC->Gsvolu("MPL1", "TUBE", idtmed[900], par, 3);
562   gMC->Gspos("MPL1", 1, "ALIC", 0., 0., z - 1.57, 0, "ONLY");
563   //     Silicon plate 
564   par[0] = rin;
565   par[1] = rout;
566   par[2] = .019;
567   gMC->Gsvolu("SPL1", "TUBE", idtmed[901], par, 3);
568   gMC->Gspos("SPL1", 1, "ALIC", 0., 0., z - 1.719, 0, "ONLY");
569   //     Summator plate 
570   par[0] = rin;
571   par[1] = rout;
572   par[2] = .01;
573   gMC->Gsvolu("SML1", "TUBE", idtmed[902], par, 3);
574   gMC->Gspos("SML1", 1, "ALIC", 0., 0., z - 2.01, 0, "ONLY");
575   // *******Outer slice ******* 
576   //     Ceramic plate 
577   par[0] = rout;
578   par[1] = rout + h1;
579   par[2] = 1.25;
580   gMC->Gsvolu("CPL1", "TUBE", idtmed[902], par, 3);
581   gMC->Gspos("CPL1", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
582   //     Covar spring 
583   par[0] = rout;
584   par[1] = rout + h1;
585   par[2] = t0 / 2.;
586   gMC->Gsvolu("C1L1", "TUBE", idtmed[903], par, 3);
587   gMC->Gspos("C1L1", 1, "ALIC", 0., 0., z - .25 + t0 / 2., 0, "ONLY");
588   gMC->Gsvolu("C2L1", "TUBE", idtmed[903], par, 3);
589   gMC->Gspos("C2L1", 1, "ALIC", 0., 0., z - 2.75 - t0 / 2., 0, "ONLY");
590   //     Getter camera 
591   par[0] = rout + h1;
592   par[1] = rout + h1 + h2;
593   par[2] = t1 / 2.;
594   gMC->Gsvolu("GKL1", "TUBE", idtmed[903], par, 3);
595   gMC->Gspos("GKL1", 1, "ALIC", 0., 0., z - .25 - t1 / 2., 0, "ONLY");
596   //     Ceramic slice 
597   par[0] = rout + h1;
598   par[1] = rout + h1 + h2;
599   par[2] = t2 / 2.;
600   gMC->Gsvolu("SCL1", "TUBE", idtmed[902], par, 3);
601   gMC->Gspos("SCL1", 1, "ALIC", 0., 0., z - .25 - t1 - t2 / 2., 0, "ONLY");
602   // ******Electronic slice ******* 
603   //     Silicon ring 
604   par[0] = rout + h1 + h2;
605   par[1] = rout + h1 + h2 + 5.;
606   par[2] = .025;
607   gMC->Gsvolu("SEL1", "TUBE", idtmed[901], par, 3);
608   gMC->Gspos("SEL1", 1, "ALIC", 0., 0., z - 1.57 + .025, 0, "ONLY");
609   //     Ceramic ring 
610   par[0] = rout + h1 + h2;
611   par[1] = rout + h1 + h2 + 5.;
612   par[2] = .025;
613   gMC->Gsvolu("CEL1", "TUBE", idtmed[902], par, 3);
614   gMC->Gspos("CEL1", 1, "ALIC", 0., 0., z - 1.58 - .025, 0, "ONLY");
615   // *********************************************************** 
616   //     DEFINE LEFT DISK#4 OF FMD 
617   // *********************************************************** 
618   
619   //     Define parameters 
620   
621   rin  = 4.2;
622   rout = 13.;
623   z    = -229.5;
624   tt   = 2.5;
625   h1   = TMath::Sqrt(rout * rout + v1/ (tt * kPI)) - rout;
626   h2   = .4;
627   t0   = v2/ (h1 * kPI * (h1 + rout * 2.));
628   t1   = v3/ (h2 * kPI * (h2 + (h1 + rout) * 2.));
629   t2   = v4/ (h2 * kPI * (h2 + (h1 + rout) * 2.));
630   
631   // *******Inner slice*********** 
632   //     Inner steel wall 
633   par[0] = rin - .02;
634   par[1] = rin;
635   par[2] = 1.5;
636   gMC->Gsvolu("IWL4", "TUBE", idtmed[899], par, 3);
637   gMC->Gspos("IWL4", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
638   //     Front steel wall 
639   par[0] = rin;
640   par[1] = rout;
641   par[2] = .01;
642   gMC->Gsvolu("FWL4", "TUBE", idtmed[899], par, 3);
643   gMC->Gspos("FWL4", 1, "ALIC", 0., 0., z - .01, 0, "ONLY");
644   //     Rear steel wall 
645   gMC->Gsvolu("RWL4", "TUBE", idtmed[899], par, 3);
646   gMC->Gspos("RWL4", 1, "ALIC", 0., 0., z - 2.99, 0, "ONLY");
647   //     MCP 
648   par[0] = rin;
649   par[1] = rout;
650   par[2] = .07;
651   gMC->Gsvolu("MPL4", "TUBE", idtmed[900], par, 3);
652   gMC->Gspos("MPL4", 1, "ALIC", 0., 0., z - 1.57, 0, "ONLY");
653   //     Silicon plate 
654   par[0] = rin;
655   par[1] = rout;
656   par[2] = .019;
657   gMC->Gsvolu("SPL4", "TUBE", idtmed[901], par, 3);
658   gMC->Gspos("SPL4", 1, "ALIC", 0., 0., z - 1.719, 0, "ONLY");
659   //     Summator plate 
660   par[0] = rin;
661   par[1] = rout;
662   par[2] = .01;
663   gMC->Gsvolu("SML4", "TUBE", idtmed[902], par, 3);
664   gMC->Gspos("SML4", 1, "ALIC", 0., 0., z - 2.01, 0, "ONLY");
665   // *******Outer slice ******* 
666   //     Ceramic plate 
667   par[0] = rout;
668   par[1] = rout + h1;
669   par[2] = 1.25;
670   gMC->Gsvolu("CPL4", "TUBE", idtmed[902], par, 3);
671   gMC->Gspos("CPL4", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
672   //     Covar spring 
673   par[0] = rout;
674   par[1] = rout + h1;
675   par[2] = t0 / 2.;
676   gMC->Gsvolu("C1L4", "TUBE", idtmed[903], par, 3);
677   gMC->Gspos("C1L4", 1, "ALIC", 0., 0., z - .25 + t0 / 2., 0, "ONLY");
678   gMC->Gsvolu("C2L4", "TUBE", idtmed[903], par, 3);
679   gMC->Gspos("C2L4", 1, "ALIC", 0., 0., z - 2.75 - t0 / 2., 0, "ONLY");
680   //       Getter camera 
681   par[0] = rout + h1;
682   par[1] = rout + h1 + h2;
683   par[2] = t1 / 2.;
684   gMC->Gsvolu("GKL4", "TUBE", idtmed[903], par, 3);
685   gMC->Gspos("GKL4", 1, "ALIC", 0., 0., z - .25 - t1 / 2., 0, "ONLY");
686   //     Ceramic slice 
687   par[0] = rout + h1;
688   par[1] = rout + h1 + h2;
689   par[2] = t2 / 2.;
690   gMC->Gsvolu("SCL4", "TUBE", idtmed[902], par, 3);
691   gMC->Gspos("SCL4", 1, "ALIC", 0., 0., z - .25 - t1 - t2 / 2., 0, "ONLY");
692   // ******Electronic slice ******* 
693   //     Silicon ring 
694   par[0] = rout + h1 + h2;
695   par[1] = rout + h1 + h2 + 5.;
696   par[2] = .025;
697   gMC->Gsvolu("SEL4", "TUBE", idtmed[901], par, 3);
698   gMC->Gspos("SEL4", 1, "ALIC", 0., 0., z - 1.57 + .025, 0, "ONLY");
699   //     Ceramic ring 
700   par[0] = rout + h1 + h2;
701   par[1] = rout + h1 + h2 + 5.;
702   par[2] = .025;
703   gMC->Gsvolu("CEL4", "TUBE", idtmed[902], par, 3);
704   gMC->Gspos("CEL4", 1, "ALIC", 0., 0., z - 1.58 - .025, 0, "ONLY");
705 }
706  
707 //_____________________________________________________________________________
708 void AliFMDv1::DrawModule()
709 {
710   //
711   // Draw a shaded view of the FMD version 1
712   //
713
714   
715   // Set everything unseen
716   gMC->Gsatt("*", "seen", -1);
717   // 
718   // Set ALIC mother transparent
719   gMC->Gsatt("ALIC","SEEN",0);
720   //
721   // Set the volumes visible
722   gMC->Gsatt("IWR3","seen",1);
723   gMC->Gsatt("FWR3","seen",1);
724   gMC->Gsatt("RWR3","seen",1);
725   gMC->Gsatt("MPR3","seen",1);
726   gMC->Gsatt("SPR3","seen",1);
727   gMC->Gsatt("SMR3","seen",1);
728   gMC->Gsatt("CPR3","seen",1);
729   gMC->Gsatt("C1R3","seen",1);
730   gMC->Gsatt("C2R3","seen",1);
731   gMC->Gsatt("GKR3","seen",1);
732   gMC->Gsatt("SCR3","seen",1);
733   gMC->Gsatt("SER3","seen",1);
734   gMC->Gsatt("CER3","seen",1);
735   gMC->Gsatt("IWL3","seen",1);
736   gMC->Gsatt("FWL3","seen",1);
737   gMC->Gsatt("RWL3","seen",1);
738   gMC->Gsatt("MPL3","seen",1);
739   gMC->Gsatt("SPL3","seen",1);
740   gMC->Gsatt("SML3","seen",1);
741   gMC->Gsatt("CPL3","seen",1);
742   gMC->Gsatt("C1L3","seen",1);
743   gMC->Gsatt("C2L3","seen",1);
744   gMC->Gsatt("GKL3","seen",1);
745   gMC->Gsatt("SCL3","seen",1);
746   gMC->Gsatt("SEL3","seen",1);
747   gMC->Gsatt("CEL3","seen",1);
748   gMC->Gsatt("IWR2","seen",1);
749   gMC->Gsatt("FWR2","seen",1);
750   gMC->Gsatt("RWR2","seen",1);
751   gMC->Gsatt("MPR2","seen",1);
752   gMC->Gsatt("SPR2","seen",1);
753   gMC->Gsatt("SMR2","seen",1);
754   gMC->Gsatt("CPR2","seen",1);
755   gMC->Gsatt("C1R2","seen",1);
756   gMC->Gsatt("C2R2","seen",1);
757   gMC->Gsatt("GKR2","seen",1);
758   gMC->Gsatt("SCR2","seen",1);
759   gMC->Gsatt("SER2","seen",1);
760   gMC->Gsatt("CER2","seen",1);
761   gMC->Gsatt("IWL2","seen",1);
762   gMC->Gsatt("FWL2","seen",1);
763   gMC->Gsatt("RWL2","seen",1);
764   gMC->Gsatt("MPL2","seen",1);
765   gMC->Gsatt("SPL2","seen",1);
766   gMC->Gsatt("SML2","seen",1);
767   gMC->Gsatt("CPL2","seen",1);
768   gMC->Gsatt("C1L2","seen",1);
769   gMC->Gsatt("C2L2","seen",1);
770   gMC->Gsatt("GKL2","seen",1);
771   gMC->Gsatt("SCL2","seen",1);
772   gMC->Gsatt("SEL2","seen",1);
773   gMC->Gsatt("CEL2","seen",1);
774   gMC->Gsatt("IWR1","seen",1);
775   gMC->Gsatt("FWR1","seen",1);
776   gMC->Gsatt("RWR1","seen",1);
777   gMC->Gsatt("MPR1","seen",1);
778   gMC->Gsatt("SPR1","seen",1);
779   gMC->Gsatt("SMR1","seen",1);
780   gMC->Gsatt("CPR1","seen",1);
781   gMC->Gsatt("C1R1","seen",1);
782   gMC->Gsatt("C2R1","seen",1);
783   gMC->Gsatt("GKR1","seen",1);
784   gMC->Gsatt("SCR1","seen",1);
785   gMC->Gsatt("SER1","seen",1);
786   gMC->Gsatt("CER1","seen",1);
787   gMC->Gsatt("IWL1","seen",1);
788   gMC->Gsatt("FWL1","seen",1);
789   gMC->Gsatt("RWL1","seen",1);
790   gMC->Gsatt("MPL1","seen",1);
791   gMC->Gsatt("SPL1","seen",1);
792   gMC->Gsatt("SML1","seen",1);
793   gMC->Gsatt("CPL1","seen",1);
794   gMC->Gsatt("C1L1","seen",1);
795   gMC->Gsatt("C2L1","seen",1);
796   gMC->Gsatt("GKL1","seen",1);
797   gMC->Gsatt("SCL1","seen",1);
798   gMC->Gsatt("SEL1","seen",1);
799   gMC->Gsatt("CEL1","seen",1);
800   gMC->Gsatt("IWL4","seen",1);
801   gMC->Gsatt("FWL4","seen",1);
802   gMC->Gsatt("RWL4","seen",1);
803   gMC->Gsatt("MPL4","seen",1);
804   gMC->Gsatt("SPL4","seen",1);
805   gMC->Gsatt("SML4","seen",1);
806   gMC->Gsatt("CPL4","seen",1);
807   gMC->Gsatt("C1L4","seen",1);
808   gMC->Gsatt("C2L4","seen",1);
809   gMC->Gsatt("GKL4","seen",1);
810   gMC->Gsatt("SCL4","seen",1);
811   gMC->Gsatt("SEL4","seen",1);
812   gMC->Gsatt("CEL4","seen",1);
813   //
814   gMC->Gdopt("hide", "on");
815   gMC->Gdopt("shad", "on");
816   gMC->Gsatt("*", "fill", 7);
817   gMC->SetClipBox(".");
818   gMC->SetClipBox("*", 0, 1000, -1000, 1000, -1000, 1000);
819   gMC->DefaultRange();
820   gMC->Gdraw("alic", 40, 30, 0, 6, 9, .08, .08);
821   gMC->Gdhead(1111, "Forward Multiplicity Detector version 1");
822   gMC->Gdman(13, 9, "MAN");
823 }
824
825 //_____________________________________________________________________________
826 void AliFMDv1::CreateMaterials()
827 {
828   //
829   // Create materials for version 1 of FMD
830   //
831
832   //     Steel for chamber 
833   Float_t ast[4]  = { 55.847,58.71,51.996,47.9 };
834   Float_t zst[4]  = { 26.,28.,24.,22. };
835   Float_t wst[4]  = { .6,.18,.12,.1 };
836   //     Lead glass for MCP 
837   Float_t amcp[3] = { 15.9994,28.086,207.19 };
838   Float_t zmcp[3] = { 8.,14.,82. };
839   Float_t wmcp[3] = { .43,.375,.195 };
840   //     Ceramic for plates 
841   Float_t acer[2] = { 26.98,15.9994 };
842   Float_t zcer[2] = { 13.,8. };
843   Float_t wcer[2] = { .4,.6 };
844   
845   Float_t epsil, stmin, deemax, tmaxfd, stemax;
846   
847   Int_t   ISXFLD = gAlice->Field()->Integ();
848   Float_t SXMGMX = gAlice->Field()->Max();
849   
850   //     Silicon 
851   
852   AliMaterial(2, "SI$", 28.086, 14., 2.33, 9.36, 45.5);
853   
854   //     Covar 
855   
856   AliMaterial(4, "FE$", 55.85, 26., 8.3, 1.67, 15.9);
857   
858   //     Steel 
859   
860   AliMixture(0, "FMD_STEEL$", ast, zst, 7.9, 4, wst);
861   
862   //     Lead glass 
863   
864   AliMixture(1, "FMD_MCP$", amcp, zmcp, 1.55, 3, wmcp);
865   
866   //     Ceramic 
867   
868   AliMixture(3, "FMD_CERAMIC$", acer, zcer, 3.96, -2, wcer);
869   // ******************************************************* 
870   //     Defines tracking media parameters. 
871   // ******************************************************* 
872   epsil  = .001; // Tracking precision, DLS 
873   stemax = -1.;  // Maximum displacement for multiple scattering 
874   tmaxfd = -20.; // Maximum angle due to field deflection 
875   deemax = -.3;  // Maximum fractional energy loss, DLS 
876   stmin  = -.8;
877   // ******************************************************** 
878   AliMedium(0, "STEEL_L3          ", 0, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
879   AliMedium(1, "LEAD_GLASS_L3     ", 1, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
880   AliMedium(2, "SILICON_L3        ", 2, 1, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
881   AliMedium(3, "CERAMIC_L3        ", 3, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
882   AliMedium(4, "COVAR_L3          ", 4, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
883 }
884