1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 Revision 1.7 1999/09/29 09:24:14 fca
19 Introduction of the Copyright and cvs Log
23 ///////////////////////////////////////////////////////////////////////////////
25 // Forward Multiplicity Detector version 0 //
29 <img src="picts/AliFMDv0Class.gif">
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>.
40 ///////////////////////////////////////////////////////////////////////////////
51 //_____________________________________________________________________________
55 // Default constructor for FMD version 0
59 //_____________________________________________________________________________
60 AliFMDv0::AliFMDv0(const char *name, const char *title)
64 // Standard constructor for FMD version 0
66 AliModule *start = gAlice->GetModule("START");
68 Error("ctor","This version of FMD is incompatible with START\n");
73 //___________________________________________
74 void AliFMDv0::CreateGeometry()
77 // Creation of the geometry of the FMD version 0
81 <img src="picts/AliFMDv0Tree.gif">
86 <img src="picts/AliFMDv0.gif">
94 Int_t *idtmed = fIdtmed->GetArray()-899;
96 // ********************************************************
97 // DEFINE RIGHT DISK#3 OF FMD
98 // ********************************************************
109 gMC->Gsvolu("R1R3", "TUBE", idtmed[900], par, 3);
110 gMC->Gspos("R1R3", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
115 gMC->Gsvolu("R2R3", "TUBE", idtmed[901], par, 3);
116 gMC->Gspos("R2R3", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
119 par[1] = rout + 5.65;
121 gMC->Gsvolu("R3R3", "TUBE", idtmed[902], par, 3);
122 gMC->Gspos("R3R3", 1, "ALIC", 0., 0., z + 1.525, 0, "ONLY");
123 // ***********************************************************
124 // DEFINE LEFT DISK#3 OF FMD
125 // ***********************************************************
136 gMC->Gsvolu("R1L3", "TUBE", idtmed[900], par, 3);
137 gMC->Gspos("R1L3", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
142 gMC->Gsvolu("R2L3", "TUBE", idtmed[901], par, 3);
143 gMC->Gspos("R2L3", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
146 par[1] = rout + 5.65;
148 gMC->Gsvolu("R3L3", "TUBE", idtmed[902], par, 3);
149 gMC->Gspos("R3L3", 1, "ALIC", 0., 0., z - 1.525, 0, "ONLY");
150 // ********************************************************
151 // DEFINE RIGHT DISK#2 OF FMD
152 // ********************************************************
163 gMC->Gsvolu("R1R2", "TUBE", idtmed[900], par, 3);
164 gMC->Gspos("R1R2", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
169 gMC->Gsvolu("R2R2", "TUBE", idtmed[901], par, 3);
170 gMC->Gspos("R2R2", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
173 par[1] = rout + 5.65;
175 gMC->Gsvolu("R3R2", "TUBE", idtmed[902], par, 3);
176 gMC->Gspos("R3R2", 1, "ALIC", 0., 0., z + 1.525, 0, "ONLY");
177 // ***********************************************************
178 // DEFINE LEFT DISK#2 OF FMD
179 // ***********************************************************
190 gMC->Gsvolu("R1L2", "TUBE", idtmed[900], par, 3);
191 gMC->Gspos("R1L2", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
196 gMC->Gsvolu("R2L2", "TUBE", idtmed[901], par, 3);
197 gMC->Gspos("R2L2", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
200 par[1] = rout + 5.65;
202 gMC->Gsvolu("R3L2", "TUBE", idtmed[902], par, 3);
203 gMC->Gspos("R3L2", 1, "ALIC", 0., 0., z - 1.525, 0, "ONLY");
204 // ********************************************************
205 // DEFINE RIGHT DISK#1 OF FMD
206 // ********************************************************
217 gMC->Gsvolu("R1R1", "TUBE", idtmed[900], par, 3);
218 gMC->Gspos("R1R1", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
223 gMC->Gsvolu("R2R1", "TUBE", idtmed[901], par, 3);
224 gMC->Gspos("R2R1", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
227 par[1] = rout + 5.65;
229 gMC->Gsvolu("R3R1", "TUBE", idtmed[902], par, 3);
230 gMC->Gspos("R3R1", 1, "ALIC", 0., 0., z + 1.525, 0, "ONLY");
231 // ***********************************************************
232 // DEFINE LEFT DISK#1 OF FMD
233 // ***********************************************************
244 gMC->Gsvolu("R1L1", "TUBE", idtmed[900], par, 3);
245 gMC->Gspos("R1L1", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
250 gMC->Gsvolu("R2L1", "TUBE", idtmed[901], par, 3);
251 gMC->Gspos("R2L1", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
254 par[1] = rout + 5.65;
256 gMC->Gsvolu("R3L1", "TUBE", idtmed[902], par, 3);
257 gMC->Gspos("R3L1", 1, "ALIC", 0., 0., z - 1.525, 0, "ONLY");
258 // ***********************************************************
259 // DEFINE LEFT DISK#4 OF FMD
260 // ***********************************************************
271 gMC->Gsvolu("R1L4", "TUBE", idtmed[900], par, 3);
272 gMC->Gspos("R1L4", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
277 gMC->Gsvolu("R2L4", "TUBE", idtmed[901], par, 3);
278 gMC->Gspos("R2L4", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
281 par[1] = rout + 5.65;
283 gMC->Gsvolu("R3L4", "TUBE", idtmed[902], par, 3);
284 gMC->Gspos("R3L4", 1, "ALIC", 0., 0., z - 1.525, 0, "ONLY");
287 //_____________________________________________________________________________
288 void AliFMDv0::DrawModule()
291 // Draw a shaded view of the FMD version 0
294 // Set everything unseen
295 gMC->Gsatt("*", "seen", -1);
297 // Set ALIC mother transparent
298 gMC->Gsatt("ALIC","SEEN",0);
300 // Set the volumes visible
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);
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);
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");
334 //_____________________________________________________________________________
335 void AliFMDv0::CreateMaterials()
338 // Create Materials for version 0 of FMD
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 };
354 Float_t epsil, stmin, deemax, tmaxfd, stemax;
356 Int_t ISXFLD = gAlice->Field()->Integ();
357 Float_t SXMGMX = gAlice->Field()->Max();
361 AliMixture(1, "FMD_R1$", ar1, zr1, 2.69, 8, wr1);
365 AliMixture(2, "FMD_R2$", ar2, zr2, 2.63, 3, wr2);
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
378 // ********************************************************
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);