Modified Float_t fPhosAngle(4) to Float_t * fPhosAngle //[fNModules]
[u/mrichter/AliRoot.git] / FMD / AliFMDv1.cxx
CommitLineData
4c039060 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
fe4da5cc 20///////////////////////////////////////////////////////////////////////////////
21// //
22// Forward Multiplicity Detector Version 1 //
23// //
24//Begin_Html
25/*
1439f98e 26<img src="picts/AliFMDv1Class.gif">
fe4da5cc 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
3b0743c9 39#include <stdlib.h>
40
fe4da5cc 41#include "AliRun.h"
42#include "AliFMDv1.h"
43#include "AliMC.h"
44#include "AliConst.h"
45
46
47ClassImp(AliFMDv1)
48
49//_____________________________________________________________________________
99560b47 50AliFMDv1::AliFMDv1()
fe4da5cc 51{
52 //
53 // Defautl constructor for FMD version 1
54 //
55}
56
57//_____________________________________________________________________________
58AliFMDv1::AliFMDv1(const char *name, const char *title)
59 : AliFMD(name,title)
60{
61 //
62 // Standard constructor for FMD version 1
63 //
99560b47 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 }
fe4da5cc 69}
70
71//_____________________________________________________________________________
72void AliFMDv1::CreateGeometry()
73{
74 //
75 // Creation of the geometry of the FMD version 1
76 //
77 //Begin_Html
78 /*
1439f98e 79 <img src="picts/AliFMDv1Tree.gif">
fe4da5cc 80 */
81 //End_Html
82 //Begin_Html
83 /*
1439f98e 84 <img src="picts/AliFMDv1.gif">
fe4da5cc 85 */
86 //End_Html
87
fe4da5cc 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
ad51aeb0 99 Int_t *idtmed = fIdtmed->GetArray()-899;
fe4da5cc 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;
cfce8870 122 gMC->Gsvolu("IWR3", "TUBE", idtmed[899], par, 3);
123 gMC->Gspos("IWR3", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
fe4da5cc 124 // Front steel wall
125 par[0] = rin;
126 par[1] = rout;
127 par[2] = .01;
cfce8870 128 gMC->Gsvolu("FWR3", "TUBE", idtmed[899], par, 3);
129 gMC->Gspos("FWR3", 1, "ALIC", 0., 0., z + .01, 0, "ONLY");
fe4da5cc 130 // Rear steel wall
cfce8870 131 gMC->Gsvolu("RWR3", "TUBE", idtmed[899], par, 3);
132 gMC->Gspos("RWR3", 1, "ALIC", 0., 0., z + 2.99, 0, "ONLY");
fe4da5cc 133 // MCP
134 par[0] = rin;
135 par[1] = rout;
136 par[2] = .07;
cfce8870 137 gMC->Gsvolu("MPR3", "TUBE", idtmed[900], par, 3);
138 gMC->Gspos("MPR3", 1, "ALIC", 0., 0., z + 1.57, 0, "ONLY");
fe4da5cc 139 // Silicon plate
140 par[0] = rin;
141 par[1] = rout;
142 par[2] = .019;
cfce8870 143 gMC->Gsvolu("SPR3", "TUBE", idtmed[901], par, 3);
144 gMC->Gspos("SPR3", 1, "ALIC", 0., 0., z + 1.719, 0, "ONLY");
fe4da5cc 145 // Summator plate
146 par[0] = rin;
147 par[1] = rout;
148 par[2] = .01;
cfce8870 149 gMC->Gsvolu("SMR3", "TUBE", idtmed[902], par, 3);
150 gMC->Gspos("SMR3", 1, "ALIC", 0., 0., z + 2.01, 0, "ONLY");
fe4da5cc 151 // *******Outer slice *******
152 // Ceramic plate
153 par[0] = rout;
154 par[1] = rout + h1;
155 par[2] = 1.25;
cfce8870 156 gMC->Gsvolu("CPR3", "TUBE", idtmed[902], par, 3);
157 gMC->Gspos("CPR3", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
fe4da5cc 158 // Covar spring
159 par[0] = rout;
160 par[1] = rout + h1;
161 par[2] = t0 / 2.;
cfce8870 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");
fe4da5cc 166 // Getter camera
167 par[0] = rout + h1;
168 par[1] = rout + h1 + h2;
169 par[2] = t1 / 2.;
cfce8870 170 gMC->Gsvolu("GKR3", "TUBE", idtmed[903], par, 3);
171 gMC->Gspos("GKR3", 1, "ALIC", 0., 0., z + .25 + t1 / 2., 0, "ONLY");
fe4da5cc 172 // Ceramic slice
173 par[0] = rout + h1;
174 par[1] = rout + h1 + h2;
175 par[2] = t2 / 2.;
cfce8870 176 gMC->Gsvolu("SCR3", "TUBE", idtmed[902], par, 3);
177 gMC->Gspos("SCR3", 1, "ALIC", 0., 0., z + .25 + t1 + t2 / 2., 0, "ONLY");
fe4da5cc 178 // ******Electronic slice *******
179 // Silicon ring
180 par[0] = rout + h1 + h2;
181 par[1] = rout + h1 + h2 + 5.;
182 par[2] = .025;
cfce8870 183 gMC->Gsvolu("SER3", "TUBE", idtmed[901], par, 3);
184 gMC->Gspos("SER3", 1, "ALIC", 0., 0., z + 1.57 - .025, 0, "ONLY");
fe4da5cc 185 // Ceramic ring
186 par[0] = rout + h1 + h2;
187 par[1] = rout + h1 + h2 + 5.;
188 par[2] = .025;
cfce8870 189 gMC->Gsvolu("CER3", "TUBE", idtmed[902], par, 3);
190 gMC->Gspos("CER3", 1, "ALIC", 0., 0., z + 1.58 + .025, 0, "ONLY");
fe4da5cc 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;
cfce8870 212 gMC->Gsvolu("IWL3", "TUBE", idtmed[899], par, 3);
213 gMC->Gspos("IWL3", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
fe4da5cc 214 // Front steel wall
215 par[0] = rin;
216 par[1] = rout;
217 par[2] = .01;
cfce8870 218 gMC->Gsvolu("FWL3", "TUBE", idtmed[899], par, 3);
219 gMC->Gspos("FWL3", 1, "ALIC", 0., 0., z - .01, 0, "ONLY");
fe4da5cc 220 // Rear steel wall
cfce8870 221 gMC->Gsvolu("RWL3", "TUBE", idtmed[899], par, 3);
222 gMC->Gspos("RWL3", 1, "ALIC", 0., 0., z - 2.99, 0, "ONLY");
fe4da5cc 223 // MCP
224 par[0] = rin;
225 par[1] = rout;
226 par[2] = .07;
cfce8870 227 gMC->Gsvolu("MPL3", "TUBE", idtmed[900], par, 3);
228 gMC->Gspos("MPL3", 1, "ALIC", 0., 0., z - 1.57, 0, "ONLY");
fe4da5cc 229 // Silicon plate
230 par[0] = rin;
231 par[1] = rout;
232 par[2] = .019;
cfce8870 233 gMC->Gsvolu("SPL3", "TUBE", idtmed[901], par, 3);
234 gMC->Gspos("SPL3", 1, "ALIC", 0., 0., z - 1.719, 0, "ONLY");
fe4da5cc 235 // Summator plate
236 par[0] = rin;
237 par[1] = rout;
238 par[2] = .01;
cfce8870 239 gMC->Gsvolu("SML3", "TUBE", idtmed[902], par, 3);
240 gMC->Gspos("SML3", 1, "ALIC", 0., 0., z - 2.01, 0, "ONLY");
fe4da5cc 241 // *******Outer slice *******
242 // Ceramic plate
243 par[0] = rout;
244 par[1] = rout + h1;
245 par[2] = 1.25;
cfce8870 246 gMC->Gsvolu("CPL3", "TUBE", idtmed[902], par, 3);
247 gMC->Gspos("CPL3", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
fe4da5cc 248 // Covar spring
249 par[0] = rout;
250 par[1] = rout + h1;
251 par[2] = t0 / 2.;
cfce8870 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");
fe4da5cc 256 // Getter camera
257 par[0] = rout + h1;
258 par[1] = rout + h1 + h2;
259 par[2] = t1 / 2.;
cfce8870 260 gMC->Gsvolu("GKL3", "TUBE", idtmed[903], par, 3);
261 gMC->Gspos("GKL3", 1, "ALIC", 0., 0., z - .25 - t1 / 2., 0, "ONLY");
fe4da5cc 262 // Ceramic slice
263 par[0] = rout + h1;
264 par[1] = rout + h1 + h2;
265 par[2] = t2 / 2.;
cfce8870 266 gMC->Gsvolu("SCL3", "TUBE", idtmed[902], par, 3);
267 gMC->Gspos("SCL3", 1, "ALIC", 0., 0., z - .25 - t1 - t2 / 2., 0, "ONLY");
fe4da5cc 268 // ******Electronic slice *******
269 // Silicon ring
270 par[0] = rout + h1 + h2;
271 par[1] = rout + h1 + h2 + 5.;
272 par[2] = .025;
cfce8870 273 gMC->Gsvolu("SEL3", "TUBE", idtmed[901], par, 3);
274 gMC->Gspos("SEL3", 1, "ALIC", 0., 0., z - 1.57 + .025, 0, "ONLY");
fe4da5cc 275 // Ceramic ring
276 par[0] = rout + h1 + h2;
277 par[1] = rout + h1 + h2 + 5.;
278 par[2] = .025;
cfce8870 279 gMC->Gsvolu("CEL3", "TUBE", idtmed[902], par, 3);
280 gMC->Gspos("CEL3", 1, "ALIC", 0., 0., z - 1.58 - .025, 0, "ONLY");
fe4da5cc 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;
cfce8870 302 gMC->Gsvolu("IWR2", "TUBE", idtmed[899], par, 3);
303 gMC->Gspos("IWR2", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
fe4da5cc 304 // Front steel wall
305 par[0] = rin;
306 par[1] = rout;
307 par[2] = .01;
cfce8870 308 gMC->Gsvolu("FWR2", "TUBE", idtmed[899], par, 3);
309 gMC->Gspos("FWR2", 1, "ALIC", 0., 0., z + .01, 0, "ONLY");
fe4da5cc 310 // Rear steel wall
cfce8870 311 gMC->Gsvolu("RWR2", "TUBE", idtmed[899], par, 3);
312 gMC->Gspos("RWR2", 1, "ALIC", 0., 0., z + 2.99, 0, "ONLY");
fe4da5cc 313 // MCP
314 par[0] = rin;
315 par[1] = rout;
316 par[2] = .07;
cfce8870 317 gMC->Gsvolu("MPR2", "TUBE", idtmed[900], par, 3);
318 gMC->Gspos("MPR2", 1, "ALIC", 0., 0., z + 1.57, 0, "ONLY");
fe4da5cc 319 // Silicon plate
320 par[0] = rin;
321 par[1] = rout;
322 par[2] = .019;
cfce8870 323 gMC->Gsvolu("SPR2", "TUBE", idtmed[901], par, 3);
324 gMC->Gspos("SPR2", 1, "ALIC", 0., 0., z + 1.719, 0, "ONLY");
fe4da5cc 325 // Summator plate
326 par[0] = rin;
327 par[1] = rout;
328 par[2] = .01;
cfce8870 329 gMC->Gsvolu("SMR2", "TUBE", idtmed[902], par, 3);
330 gMC->Gspos("SMR2", 1, "ALIC", 0., 0., z + 2.01, 0, "ONLY");
fe4da5cc 331 // *******Outer slice *******
332 // Ceramic plate
333 par[0] = rout;
334 par[1] = rout + h1;
335 par[2] = 1.25;
cfce8870 336 gMC->Gsvolu("CPR2", "TUBE", idtmed[902], par, 3);
337 gMC->Gspos("CPR2", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
fe4da5cc 338 // Covar spring
339 par[0] = rout;
340 par[1] = rout + h1;
341 par[2] = t0 / 2.;
cfce8870 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");
fe4da5cc 346 // Getter camera
347 par[0] = rout + h1;
348 par[1] = rout + h1 + h2;
349 par[2] = t1 / 2.;
cfce8870 350 gMC->Gsvolu("GKR2", "TUBE", idtmed[903], par, 3);
351 gMC->Gspos("GKR2", 1, "ALIC", 0., 0., z + .25 + t1 / 2., 0, "ONLY");
fe4da5cc 352 // Ceramic slice
353 par[0] = rout + h1;
354 par[1] = rout + h1 + h2;
355 par[2] = t2 / 2.;
cfce8870 356 gMC->Gsvolu("SCR2", "TUBE", idtmed[902], par, 3);
357 gMC->Gspos("SCR2", 1, "ALIC", 0., 0., z + .25 + t1 + t2 / 2., 0, "ONLY");
fe4da5cc 358 // ******Electronic slice *******
359 // Silicon ring
360 par[0] = rout + h1 + h2;
361 par[1] = rout + h1 + h2 + 5.;
362 par[2] = .025;
cfce8870 363 gMC->Gsvolu("SER2", "TUBE", idtmed[901], par, 3);
364 gMC->Gspos("SER2", 1, "ALIC", 0., 0., z + 1.57 - .025, 0, "ONLY");
fe4da5cc 365 // Ceramic ring
366 par[0] = rout + h1 + h2;
367 par[1] = rout + h1 + h2 + 5.;
368 par[2] = .025;
cfce8870 369 gMC->Gsvolu("CER2", "TUBE", idtmed[902], par, 3);
370 gMC->Gspos("CER2", 1, "ALIC", 0., 0., z + 1.58 + .025, 0, "ONLY");
fe4da5cc 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;
cfce8870 392 gMC->Gsvolu("IWL2", "TUBE", idtmed[899], par, 3);
393 gMC->Gspos("IWL2", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
fe4da5cc 394 // Front steel wall
395 par[0] = rin;
396 par[1] = rout;
397 par[2] = .01;
cfce8870 398 gMC->Gsvolu("FWL2", "TUBE", idtmed[899], par, 3);
399 gMC->Gspos("FWL2", 1, "ALIC", 0., 0., z - .01, 0, "ONLY");
fe4da5cc 400 // Rear steel wall
cfce8870 401 gMC->Gsvolu("RWL2", "TUBE", idtmed[899], par, 3);
402 gMC->Gspos("RWL2", 1, "ALIC", 0., 0., z - 2.99, 0, "ONLY");
fe4da5cc 403 // MCP
404 par[0] = rin;
405 par[1] = rout;
406 par[2] = .07;
cfce8870 407 gMC->Gsvolu("MPL2", "TUBE", idtmed[900], par, 3);
408 gMC->Gspos("MPL2", 1, "ALIC", 0., 0., z - 1.57, 0, "ONLY");
fe4da5cc 409 // Silicon plate
410 par[0] = rin;
411 par[1] = rout;
412 par[2] = .019;
cfce8870 413 gMC->Gsvolu("SPL2", "TUBE", idtmed[901], par, 3);
414 gMC->Gspos("SPL2", 1, "ALIC", 0., 0., z - 1.719, 0, "ONLY");
fe4da5cc 415 // Summator plate
416 par[0] = rin;
417 par[1] = rout;
418 par[2] = .01;
cfce8870 419 gMC->Gsvolu("SML2", "TUBE", idtmed[902], par, 3);
420 gMC->Gspos("SML2", 1, "ALIC", 0., 0., z - 2.01, 0, "ONLY");
fe4da5cc 421 // *******Outer slice *******
422 // Ceramic plate
423 par[0] = rout;
424 par[1] = rout + h1;
425 par[2] = 1.25;
cfce8870 426 gMC->Gsvolu("CPL2", "TUBE", idtmed[902], par, 3);
427 gMC->Gspos("CPL2", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
fe4da5cc 428 // Covar spring
429 par[0] = rout;
430 par[1] = rout + h1;
431 par[2] = t0 / 2.;
cfce8870 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");
fe4da5cc 436 // Getter camera
437 par[0] = rout + h1;
438 par[1] = rout + h1 + h2;
439 par[2] = t1 / 2.;
cfce8870 440 gMC->Gsvolu("GKL2", "TUBE", idtmed[903], par, 3);
441 gMC->Gspos("GKL2", 1, "ALIC", 0., 0., z - .25 - t1 / 2., 0, "ONLY");
fe4da5cc 442 // Ceramic slice
443 par[0] = rout + h1;
444 par[1] = rout + h1 + h2;
445 par[2] = t2 / 2.;
cfce8870 446 gMC->Gsvolu("SCL2", "TUBE", idtmed[902], par, 3);
447 gMC->Gspos("SCL2", 1, "ALIC", 0., 0., z - .25 - t1 - t2 / 2., 0, "ONLY");
fe4da5cc 448 // ******Electronic slice *******
449 // Silicon ring
450 par[0] = rout + h1 + h2;
451 par[1] = rout + h1 + h2 + 5.;
452 par[2] = .025;
cfce8870 453 gMC->Gsvolu("SEL2", "TUBE", idtmed[901], par, 3);
454 gMC->Gspos("SEL2", 1, "ALIC", 0., 0., z - 1.57 + .025, 0, "ONLY");
fe4da5cc 455 // Ceramic ring
456 par[0] = rout + h1 + h2;
457 par[1] = rout + h1 + h2 + 5.;
458 par[2] = .025;
cfce8870 459 gMC->Gsvolu("CEL2", "TUBE", idtmed[902], par, 3);
460 gMC->Gspos("CEL2", 1, "ALIC", 0., 0., z - 1.58 - .025, 0, "ONLY");
fe4da5cc 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;
cfce8870 482 gMC->Gsvolu("IWR1", "TUBE", idtmed[899], par, 3);
483 gMC->Gspos("IWR1", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
fe4da5cc 484 // Front steel wall
485 par[0] = rin;
486 par[1] = rout;
487 par[2] = .01;
cfce8870 488 gMC->Gsvolu("FWR1", "TUBE", idtmed[899], par, 3);
489 gMC->Gspos("FWR1", 1, "ALIC", 0., 0., z + .01, 0, "ONLY");
fe4da5cc 490 // Rear steel wall
cfce8870 491 gMC->Gsvolu("RWR1", "TUBE", idtmed[899], par, 3);
492 gMC->Gspos("RWR1", 1, "ALIC", 0., 0., z + 2.99, 0, "ONLY");
fe4da5cc 493 // MCP
494 par[0] = rin;
495 par[1] = rout;
496 par[2] = .07;
cfce8870 497 gMC->Gsvolu("MPR1", "TUBE", idtmed[900], par, 3);
498 gMC->Gspos("MPR1", 1, "ALIC", 0., 0., z + 1.57, 0, "ONLY");
fe4da5cc 499 // Silicon plate
500 par[0] = rin;
501 par[1] = rout;
502 par[2] = .019;
cfce8870 503 gMC->Gsvolu("SPR1", "TUBE", idtmed[901], par, 3);
504 gMC->Gspos("SPR1", 1, "ALIC", 0., 0., z + 1.719, 0, "ONLY");
fe4da5cc 505 // Summator plate
506 par[0] = rin;
507 par[1] = rout;
508 par[2] = .01;
cfce8870 509 gMC->Gsvolu("SMR1", "TUBE", idtmed[902], par, 3);
510 gMC->Gspos("SMR1", 1, "ALIC", 0., 0., z + 2.01, 0, "ONLY");
fe4da5cc 511 // *******Outer slice *******
512 // Ceramic plate
513 par[0] = rout;
514 par[1] = rout + h1;
515 par[2] = 1.25;
cfce8870 516 gMC->Gsvolu("CPR1", "TUBE", idtmed[902], par, 3);
517 gMC->Gspos("CPR1", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
fe4da5cc 518 // Covar spring
519 par[0] = rout;
520 par[1] = rout + h1;
521 par[2] = t0 / 2.;
cfce8870 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");
fe4da5cc 526 // Getter camera
527 par[0] = rout + h1;
528 par[1] = rout + h1 + h2;
529 par[2] = t1 / 2.;
cfce8870 530 gMC->Gsvolu("GKR1", "TUBE", idtmed[903], par, 3);
531 gMC->Gspos("GKR1", 1, "ALIC", 0., 0., z + .25 + t1 / 2., 0, "ONLY");
fe4da5cc 532 // Ceramic slice
533 par[0] = rout + h1;
534 par[1] = rout + h1 + h2;
535 par[2] = t2 / 2.;
cfce8870 536 gMC->Gsvolu("SCR1", "TUBE", idtmed[902], par, 3);
537 gMC->Gspos("SCR1", 1, "ALIC", 0., 0., z + .25 + t1 + t2 / 2., 0, "ONLY");
fe4da5cc 538 // ******Electronic slice *******
539 // Silicon ring
540 par[0] = rout + h1 + h2;
541 par[1] = rout + h1 + h2 + 5.;
542 par[2] = .025;
cfce8870 543 gMC->Gsvolu("SER1", "TUBE", idtmed[901], par, 3);
544 gMC->Gspos("SER1", 1, "ALIC", 0., 0., z + 1.57 - .025, 0, "ONLY");
fe4da5cc 545 // Ceramic ring
546 par[0] = rout + h1 + h2;
547 par[1] = rout + h1 + h2 + 5.;
548 par[2] = .025;
cfce8870 549 gMC->Gsvolu("CER1", "TUBE", idtmed[902], par, 3);
550 gMC->Gspos("CER1", 1, "ALIC", 0., 0., z + 1.58 + .025, 0, "ONLY");
fe4da5cc 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;
cfce8870 572 gMC->Gsvolu("IWL1", "TUBE", idtmed[899], par, 3);
573 gMC->Gspos("IWL1", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
fe4da5cc 574 // Front steel wall
575 par[0] = rin;
576 par[1] = rout;
577 par[2] = .01;
cfce8870 578 gMC->Gsvolu("FWL1", "TUBE", idtmed[899], par, 3);
579 gMC->Gspos("FWL1", 1, "ALIC", 0., 0., z - .01, 0, "ONLY");
fe4da5cc 580 // Rear steel wall
cfce8870 581 gMC->Gsvolu("RWL1", "TUBE", idtmed[899], par, 3);
582 gMC->Gspos("RWL1", 1, "ALIC", 0., 0., z - 2.99, 0, "ONLY");
fe4da5cc 583 // MCP
584 par[0] = rin;
585 par[1] = rout;
586 par[2] = .07;
cfce8870 587 gMC->Gsvolu("MPL1", "TUBE", idtmed[900], par, 3);
588 gMC->Gspos("MPL1", 1, "ALIC", 0., 0., z - 1.57, 0, "ONLY");
fe4da5cc 589 // Silicon plate
590 par[0] = rin;
591 par[1] = rout;
592 par[2] = .019;
cfce8870 593 gMC->Gsvolu("SPL1", "TUBE", idtmed[901], par, 3);
594 gMC->Gspos("SPL1", 1, "ALIC", 0., 0., z - 1.719, 0, "ONLY");
fe4da5cc 595 // Summator plate
596 par[0] = rin;
597 par[1] = rout;
598 par[2] = .01;
cfce8870 599 gMC->Gsvolu("SML1", "TUBE", idtmed[902], par, 3);
600 gMC->Gspos("SML1", 1, "ALIC", 0., 0., z - 2.01, 0, "ONLY");
fe4da5cc 601 // *******Outer slice *******
602 // Ceramic plate
603 par[0] = rout;
604 par[1] = rout + h1;
605 par[2] = 1.25;
cfce8870 606 gMC->Gsvolu("CPL1", "TUBE", idtmed[902], par, 3);
607 gMC->Gspos("CPL1", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
fe4da5cc 608 // Covar spring
609 par[0] = rout;
610 par[1] = rout + h1;
611 par[2] = t0 / 2.;
cfce8870 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");
fe4da5cc 616 // Getter camera
617 par[0] = rout + h1;
618 par[1] = rout + h1 + h2;
619 par[2] = t1 / 2.;
cfce8870 620 gMC->Gsvolu("GKL1", "TUBE", idtmed[903], par, 3);
621 gMC->Gspos("GKL1", 1, "ALIC", 0., 0., z - .25 - t1 / 2., 0, "ONLY");
fe4da5cc 622 // Ceramic slice
623 par[0] = rout + h1;
624 par[1] = rout + h1 + h2;
625 par[2] = t2 / 2.;
cfce8870 626 gMC->Gsvolu("SCL1", "TUBE", idtmed[902], par, 3);
627 gMC->Gspos("SCL1", 1, "ALIC", 0., 0., z - .25 - t1 - t2 / 2., 0, "ONLY");
fe4da5cc 628 // ******Electronic slice *******
629 // Silicon ring
630 par[0] = rout + h1 + h2;
631 par[1] = rout + h1 + h2 + 5.;
632 par[2] = .025;
cfce8870 633 gMC->Gsvolu("SEL1", "TUBE", idtmed[901], par, 3);
634 gMC->Gspos("SEL1", 1, "ALIC", 0., 0., z - 1.57 + .025, 0, "ONLY");
fe4da5cc 635 // Ceramic ring
636 par[0] = rout + h1 + h2;
637 par[1] = rout + h1 + h2 + 5.;
638 par[2] = .025;
cfce8870 639 gMC->Gsvolu("CEL1", "TUBE", idtmed[902], par, 3);
640 gMC->Gspos("CEL1", 1, "ALIC", 0., 0., z - 1.58 - .025, 0, "ONLY");
fe4da5cc 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;
cfce8870 662 gMC->Gsvolu("IWL4", "TUBE", idtmed[899], par, 3);
663 gMC->Gspos("IWL4", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
fe4da5cc 664 // Front steel wall
665 par[0] = rin;
666 par[1] = rout;
667 par[2] = .01;
cfce8870 668 gMC->Gsvolu("FWL4", "TUBE", idtmed[899], par, 3);
669 gMC->Gspos("FWL4", 1, "ALIC", 0., 0., z - .01, 0, "ONLY");
fe4da5cc 670 // Rear steel wall
cfce8870 671 gMC->Gsvolu("RWL4", "TUBE", idtmed[899], par, 3);
672 gMC->Gspos("RWL4", 1, "ALIC", 0., 0., z - 2.99, 0, "ONLY");
fe4da5cc 673 // MCP
674 par[0] = rin;
675 par[1] = rout;
676 par[2] = .07;
cfce8870 677 gMC->Gsvolu("MPL4", "TUBE", idtmed[900], par, 3);
678 gMC->Gspos("MPL4", 1, "ALIC", 0., 0., z - 1.57, 0, "ONLY");
fe4da5cc 679 // Silicon plate
680 par[0] = rin;
681 par[1] = rout;
682 par[2] = .019;
cfce8870 683 gMC->Gsvolu("SPL4", "TUBE", idtmed[901], par, 3);
684 gMC->Gspos("SPL4", 1, "ALIC", 0., 0., z - 1.719, 0, "ONLY");
fe4da5cc 685 // Summator plate
686 par[0] = rin;
687 par[1] = rout;
688 par[2] = .01;
cfce8870 689 gMC->Gsvolu("SML4", "TUBE", idtmed[902], par, 3);
690 gMC->Gspos("SML4", 1, "ALIC", 0., 0., z - 2.01, 0, "ONLY");
fe4da5cc 691 // *******Outer slice *******
692 // Ceramic plate
693 par[0] = rout;
694 par[1] = rout + h1;
695 par[2] = 1.25;
cfce8870 696 gMC->Gsvolu("CPL4", "TUBE", idtmed[902], par, 3);
697 gMC->Gspos("CPL4", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
fe4da5cc 698 // Covar spring
699 par[0] = rout;
700 par[1] = rout + h1;
701 par[2] = t0 / 2.;
cfce8870 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");
fe4da5cc 706 // Getter camera
707 par[0] = rout + h1;
708 par[1] = rout + h1 + h2;
709 par[2] = t1 / 2.;
cfce8870 710 gMC->Gsvolu("GKL4", "TUBE", idtmed[903], par, 3);
711 gMC->Gspos("GKL4", 1, "ALIC", 0., 0., z - .25 - t1 / 2., 0, "ONLY");
fe4da5cc 712 // Ceramic slice
713 par[0] = rout + h1;
714 par[1] = rout + h1 + h2;
715 par[2] = t2 / 2.;
cfce8870 716 gMC->Gsvolu("SCL4", "TUBE", idtmed[902], par, 3);
717 gMC->Gspos("SCL4", 1, "ALIC", 0., 0., z - .25 - t1 - t2 / 2., 0, "ONLY");
fe4da5cc 718 // ******Electronic slice *******
719 // Silicon ring
720 par[0] = rout + h1 + h2;
721 par[1] = rout + h1 + h2 + 5.;
722 par[2] = .025;
cfce8870 723 gMC->Gsvolu("SEL4", "TUBE", idtmed[901], par, 3);
724 gMC->Gspos("SEL4", 1, "ALIC", 0., 0., z - 1.57 + .025, 0, "ONLY");
fe4da5cc 725 // Ceramic ring
726 par[0] = rout + h1 + h2;
727 par[1] = rout + h1 + h2 + 5.;
728 par[2] = .025;
cfce8870 729 gMC->Gsvolu("CEL4", "TUBE", idtmed[902], par, 3);
730 gMC->Gspos("CEL4", 1, "ALIC", 0., 0., z - 1.58 - .025, 0, "ONLY");
fe4da5cc 731}
732
733//_____________________________________________________________________________
b316044f 734void AliFMDv1::DrawModule()
fe4da5cc 735{
736 //
737 // Draw a shaded view of the FMD version 1
738 //
739
fe4da5cc 740
741 // Set everything unseen
cfce8870 742 gMC->Gsatt("*", "seen", -1);
fe4da5cc 743 //
744 // Set ALIC mother transparent
cfce8870 745 gMC->Gsatt("ALIC","SEEN",0);
fe4da5cc 746 //
747 // Set the volumes visible
cfce8870 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);
fe4da5cc 839 //
cfce8870 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");
fe4da5cc 849}
850
851//_____________________________________________________________________________
852void 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 // ********************************************************
ad51aeb0 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);
fe4da5cc 909}
910