]> git.uio.no Git - u/mrichter/AliRoot.git/blame - FMD/AliFMDv0.cxx
two errors that the HP-UX compiler could not correct
[u/mrichter/AliRoot.git] / FMD / AliFMDv0.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$
94de3818 18Revision 1.7 1999/09/29 09:24:14 fca
19Introduction of the Copyright and cvs Log
20
4c039060 21*/
22
fe4da5cc 23///////////////////////////////////////////////////////////////////////////////
24// //
25// Forward Multiplicity Detector version 0 //
26// //
27//Begin_Html
28/*
1439f98e 29<img src="picts/AliFMDv0Class.gif">
fe4da5cc 30</pre>
31<br clear=left>
32<font size=+2 color=red>
33<p>The responsible person for this module is
34<a href="mailto:Valeri.Kondratiev@cern.ch">Valeri Kondratiev</a>.
35</font>
36<pre>
37*/
38//End_Html
39// //
40///////////////////////////////////////////////////////////////////////////////
41
42#include "AliRun.h"
43#include "AliFMDv0.h"
44#include "AliMC.h"
94de3818 45#include "AliMagF.h"
46
99560b47 47#include "stdlib.h"
fe4da5cc 48
49ClassImp(AliFMDv0)
50
51//_____________________________________________________________________________
99560b47 52AliFMDv0::AliFMDv0()
fe4da5cc 53{
54 //
55 // Default constructor for FMD version 0
56 //
57}
58
59//_____________________________________________________________________________
60AliFMDv0::AliFMDv0(const char *name, const char *title)
61 : AliFMD(name,title)
62{
63 //
64 // Standard constructor for FMD version 0
65 //
99560b47 66 AliModule *start = gAlice->GetModule("START");
67 if(start) {
68 Error("ctor","This version of FMD is incompatible with START\n");
69 exit(1);
70 }
fe4da5cc 71}
72
73//___________________________________________
74void AliFMDv0::CreateGeometry()
75{
76 //
77 // Creation of the geometry of the FMD version 0
78 //
79 //Begin_Html
80 /*
1439f98e 81 <img src="picts/AliFMDv0Tree.gif">
fe4da5cc 82 */
83 //End_Html
84 //Begin_Html
85 /*
1439f98e 86 <img src="picts/AliFMDv0.gif">
fe4da5cc 87 */
88 //End_Html
89
fe4da5cc 90
91 Float_t rout, z;
92 Float_t par[3], rin;
93
ad51aeb0 94 Int_t *idtmed = fIdtmed->GetArray()-899;
fe4da5cc 95
96 // ********************************************************
97 // DEFINE RIGHT DISK#3 OF FMD
98 // ********************************************************
99
100 // Define parameters
101
102 rin = 4.5;
103 rout = 10.5;
104 z = 85.;
105 // Ring #1
106 par[0] = rin;
107 par[1] = rout;
108 par[2] = 1.5;
cfce8870 109 gMC->Gsvolu("R1R3", "TUBE", idtmed[900], par, 3);
110 gMC->Gspos("R1R3", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
fe4da5cc 111 // Ring #2
112 par[0] = rout;
113 par[1] = rout + .65;
114 par[2] = 1.5;
cfce8870 115 gMC->Gsvolu("R2R3", "TUBE", idtmed[901], par, 3);
116 gMC->Gspos("R2R3", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
fe4da5cc 117 // Ring #3
118 par[0] = rout + .65;
119 par[1] = rout + 5.65;
120 par[2] = .025;
cfce8870 121 gMC->Gsvolu("R3R3", "TUBE", idtmed[902], par, 3);
122 gMC->Gspos("R3R3", 1, "ALIC", 0., 0., z + 1.525, 0, "ONLY");
fe4da5cc 123 // ***********************************************************
124 // DEFINE LEFT DISK#3 OF FMD
125 // ***********************************************************
126
127 // Define parameters
128
129 rin = 4.5;
130 rout = 10.5;
131 z = -85.;
132 // Ring #1
133 par[0] = rin;
134 par[1] = rout;
135 par[2] = 1.5;
cfce8870 136 gMC->Gsvolu("R1L3", "TUBE", idtmed[900], par, 3);
137 gMC->Gspos("R1L3", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
fe4da5cc 138 // Ring #2
139 par[0] = rout;
140 par[1] = rout + .65;
141 par[2] = 1.5;
cfce8870 142 gMC->Gsvolu("R2L3", "TUBE", idtmed[901], par, 3);
143 gMC->Gspos("R2L3", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
fe4da5cc 144 // Ring #3
145 par[0] = rout + .65;
146 par[1] = rout + 5.65;
147 par[2] = .025;
cfce8870 148 gMC->Gsvolu("R3L3", "TUBE", idtmed[902], par, 3);
149 gMC->Gspos("R3L3", 1, "ALIC", 0., 0., z - 1.525, 0, "ONLY");
fe4da5cc 150 // ********************************************************
151 // DEFINE RIGHT DISK#2 OF FMD
152 // ********************************************************
153
154 // Define parameters
155
156 rin = 8.;
157 rout = 14.;
158 z = 69.7;
159 // Ring #1
160 par[0] = rin;
161 par[1] = rout;
162 par[2] = 1.5;
cfce8870 163 gMC->Gsvolu("R1R2", "TUBE", idtmed[900], par, 3);
164 gMC->Gspos("R1R2", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
fe4da5cc 165 // Ring #2
166 par[0] = rout;
167 par[1] = rout + .65;
168 par[2] = 1.5;
cfce8870 169 gMC->Gsvolu("R2R2", "TUBE", idtmed[901], par, 3);
170 gMC->Gspos("R2R2", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
fe4da5cc 171 // Ring #3
172 par[0] = rout + .65;
173 par[1] = rout + 5.65;
174 par[2] = .025;
cfce8870 175 gMC->Gsvolu("R3R2", "TUBE", idtmed[902], par, 3);
176 gMC->Gspos("R3R2", 1, "ALIC", 0., 0., z + 1.525, 0, "ONLY");
fe4da5cc 177 // ***********************************************************
178 // DEFINE LEFT DISK#2 OF FMD
179 // ***********************************************************
180
181 // Define parameters
182
183 rin = 8.;
184 rout = 14.;
185 z = -69.7;
186 // Ring #1
187 par[0] = rin;
188 par[1] = rout;
189 par[2] = 1.5;
cfce8870 190 gMC->Gsvolu("R1L2", "TUBE", idtmed[900], par, 3);
191 gMC->Gspos("R1L2", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
fe4da5cc 192 // Ring #2
193 par[0] = rout;
194 par[1] = rout + .65;
195 par[2] = 1.5;
cfce8870 196 gMC->Gsvolu("R2L2", "TUBE", idtmed[901], par, 3);
197 gMC->Gspos("R2L2", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
fe4da5cc 198 // Ring #3
199 par[0] = rout + .65;
200 par[1] = rout + 5.65;
201 par[2] = .025;
cfce8870 202 gMC->Gsvolu("R3L2", "TUBE", idtmed[902], par, 3);
203 gMC->Gspos("R3L2", 1, "ALIC", 0., 0., z - 1.525, 0, "ONLY");
fe4da5cc 204 // ********************************************************
205 // DEFINE RIGHT DISK#1 OF FMD
206 // ********************************************************
207
208 // Define parameters
209
210 rin = 8.;
211 rout = 17.5;
212 z = 42.5;
213 // Ring #1
214 par[0] = rin;
215 par[1] = rout;
216 par[2] = 1.5;
cfce8870 217 gMC->Gsvolu("R1R1", "TUBE", idtmed[900], par, 3);
218 gMC->Gspos("R1R1", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
fe4da5cc 219 // Ring #2
220 par[0] = rout;
221 par[1] = rout + .65;
222 par[2] = 1.5;
cfce8870 223 gMC->Gsvolu("R2R1", "TUBE", idtmed[901], par, 3);
224 gMC->Gspos("R2R1", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
fe4da5cc 225 // Ring #3
226 par[0] = rout + .65;
227 par[1] = rout + 5.65;
228 par[2] = .025;
cfce8870 229 gMC->Gsvolu("R3R1", "TUBE", idtmed[902], par, 3);
230 gMC->Gspos("R3R1", 1, "ALIC", 0., 0., z + 1.525, 0, "ONLY");
fe4da5cc 231 // ***********************************************************
232 // DEFINE LEFT DISK#1 OF FMD
233 // ***********************************************************
234
235 // Define parameters
236
237 rin = 8.;
238 rout = 17.5;
239 z = -42.5;
240 // Ring #1
241 par[0] = rin;
242 par[1] = rout;
243 par[2] = 1.5;
cfce8870 244 gMC->Gsvolu("R1L1", "TUBE", idtmed[900], par, 3);
245 gMC->Gspos("R1L1", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
fe4da5cc 246 // Ring #2
247 par[0] = rout;
248 par[1] = rout + .65;
249 par[2] = 1.5;
cfce8870 250 gMC->Gsvolu("R2L1", "TUBE", idtmed[901], par, 3);
251 gMC->Gspos("R2L1", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
fe4da5cc 252 // Ring #3
253 par[0] = rout + .65;
254 par[1] = rout + 5.65;
255 par[2] = .025;
cfce8870 256 gMC->Gsvolu("R3L1", "TUBE", idtmed[902], par, 3);
257 gMC->Gspos("R3L1", 1, "ALIC", 0., 0., z - 1.525, 0, "ONLY");
fe4da5cc 258 // ***********************************************************
259 // DEFINE LEFT DISK#4 OF FMD
260 // ***********************************************************
261
262 // Define parameters
263
264 rin = 4.2;
265 rout = 13.;
266 z = -229.5;
267 // Ring #1
268 par[0] = rin;
269 par[1] = rout;
270 par[2] = 1.5;
cfce8870 271 gMC->Gsvolu("R1L4", "TUBE", idtmed[900], par, 3);
272 gMC->Gspos("R1L4", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
fe4da5cc 273 // Ring #2
274 par[0] = rout;
275 par[1] = rout + .65;
276 par[2] = 1.5;
cfce8870 277 gMC->Gsvolu("R2L4", "TUBE", idtmed[901], par, 3);
278 gMC->Gspos("R2L4", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
fe4da5cc 279 // Ring #3
280 par[0] = rout + .65;
281 par[1] = rout + 5.65;
282 par[2] = .025;
cfce8870 283 gMC->Gsvolu("R3L4", "TUBE", idtmed[902], par, 3);
284 gMC->Gspos("R3L4", 1, "ALIC", 0., 0., z - 1.525, 0, "ONLY");
fe4da5cc 285}
286
287//_____________________________________________________________________________
b316044f 288void AliFMDv0::DrawModule()
fe4da5cc 289{
290 //
291 // Draw a shaded view of the FMD version 0
292 //
293
fe4da5cc 294 // Set everything unseen
cfce8870 295 gMC->Gsatt("*", "seen", -1);
fe4da5cc 296 //
297 // Set ALIC mother transparent
cfce8870 298 gMC->Gsatt("ALIC","SEEN",0);
fe4da5cc 299 //
300 // Set the volumes visible
cfce8870 301 gMC->Gsatt("R1R3","SEEN",1);
302 gMC->Gsatt("R2R3","SEEN",1);
303 gMC->Gsatt("R3R3","SEEN",1);
304 gMC->Gsatt("R1L3","SEEN",1);
305 gMC->Gsatt("R2L3","SEEN",1);
306 gMC->Gsatt("R3L3","SEEN",1);
307 gMC->Gsatt("R1R2","SEEN",1);
308 gMC->Gsatt("R2R2","SEEN",1);
309 gMC->Gsatt("R3R2","SEEN",1);
310 gMC->Gsatt("R1L2","SEEN",1);
311 gMC->Gsatt("R2L2","SEEN",1);
312 gMC->Gsatt("R3L2","SEEN",1);
313 gMC->Gsatt("R1R1","SEEN",1);
314 gMC->Gsatt("R2R1","SEEN",1);
315 gMC->Gsatt("R3R1","SEEN",1);
316 gMC->Gsatt("R1L1","SEEN",1);
317 gMC->Gsatt("R2L1","SEEN",1);
318 gMC->Gsatt("R3L1","SEEN",1);
319 gMC->Gsatt("R1L4","SEEN",1);
320 gMC->Gsatt("R2L4","SEEN",1);
321 gMC->Gsatt("R3L4","SEEN",1);
fe4da5cc 322 //
cfce8870 323 gMC->Gdopt("hide", "on");
324 gMC->Gdopt("shad", "on");
325 gMC->Gsatt("*", "fill", 7);
326 gMC->SetClipBox(".");
327 gMC->SetClipBox("*", 0, 1000, -1000, 1000, -1000, 1000);
328 gMC->DefaultRange();
329 gMC->Gdraw("alic", 40, 30, 0, 6, 9, .08, .08);
330 gMC->Gdhead(1111, "Forward Multiplicity Detector version 0");
331 gMC->Gdman(13, 9, "MAN");
fe4da5cc 332}
333
334//_____________________________________________________________________________
335void AliFMDv0::CreateMaterials()
336{
337 //
338 // Create Materials for version 0 of FMD
339 //
340
341 // Material for ring #1
342 Float_t ar1[8] = { 55.8,58.7,52.,47.9,16.,28.,207.2,27. };
343 Float_t zr1[8] = { 26.,28.,24.,22.,8.,14.,82.,13. };
344 Float_t wr1[8] = { .27,.081,.054,.045,.18,.25,.06,.06 };
345 // Material for ring #2
346 Float_t ar2[3] = { 55.8,27.,16. };
347 Float_t zr2[3] = { 26.,13.,8. };
348 Float_t wr2[3] = { .35,.34,.31 };
349 // Material for ring #3
350 Float_t ar3[3] = { 28.,27.,16. };
351 Float_t zr3[3] = { 14.,13.,8. };
352 Float_t wr3[3] = { .37,.33,.3 };
353
354 Float_t epsil, stmin, deemax, tmaxfd, stemax;
355
356 Int_t ISXFLD = gAlice->Field()->Integ();
357 Float_t SXMGMX = gAlice->Field()->Max();
358
359 // Ring #1
360
361 AliMixture(1, "FMD_R1$", ar1, zr1, 2.69, 8, wr1);
362
363 // Ring #2
364
365 AliMixture(2, "FMD_R2$", ar2, zr2, 2.63, 3, wr2);
366
367 // Ring #3
368
369 AliMixture(3, "FMD_R3$", ar3, zr3, 3.15, 3, wr3);
370 // *******************************************************
371 // Defines tracking media parameters.
372 // *******************************************************
373 epsil = .001; // Tracking precision, DLS
374 stemax = -1.; // Maximum displacement for multiple scattering
375 tmaxfd = -20.; // Maximum angle due to field deflection
376 deemax = -.3; // Maximum fractional energy loss, DLS
377 stmin = -.8;
378 // ********************************************************
ad51aeb0 379 AliMedium(1, "FMD_R1_L3 ", 1, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
380 AliMedium(2, "FMD_R2_L3 ", 2, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
381 AliMedium(3, "FMD_R3_L3 ", 3, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
fe4da5cc 382}
383
384
385