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