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