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 **************************************************************************/
20 ///////////////////////////////////////////////////////////////////////////////
22 // Forward Multiplicity Detector version 0 //
26 <img src="picts/AliFMDv0Class.gif">
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>.
37 ///////////////////////////////////////////////////////////////////////////////
46 //_____________________________________________________________________________
50 // Default constructor for FMD version 0
54 //_____________________________________________________________________________
55 AliFMDv0::AliFMDv0(const char *name, const char *title)
59 // Standard constructor for FMD version 0
61 AliModule *start = gAlice->GetModule("START");
63 Error("ctor","This version of FMD is incompatible with START\n");
68 //___________________________________________
69 void AliFMDv0::CreateGeometry()
72 // Creation of the geometry of the FMD version 0
76 <img src="picts/AliFMDv0Tree.gif">
81 <img src="picts/AliFMDv0.gif">
89 Int_t *idtmed = fIdtmed->GetArray()-899;
91 // ********************************************************
92 // DEFINE RIGHT DISK#3 OF FMD
93 // ********************************************************
104 gMC->Gsvolu("R1R3", "TUBE", idtmed[900], par, 3);
105 gMC->Gspos("R1R3", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
110 gMC->Gsvolu("R2R3", "TUBE", idtmed[901], par, 3);
111 gMC->Gspos("R2R3", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
114 par[1] = rout + 5.65;
116 gMC->Gsvolu("R3R3", "TUBE", idtmed[902], par, 3);
117 gMC->Gspos("R3R3", 1, "ALIC", 0., 0., z + 1.525, 0, "ONLY");
118 // ***********************************************************
119 // DEFINE LEFT DISK#3 OF FMD
120 // ***********************************************************
131 gMC->Gsvolu("R1L3", "TUBE", idtmed[900], par, 3);
132 gMC->Gspos("R1L3", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
137 gMC->Gsvolu("R2L3", "TUBE", idtmed[901], par, 3);
138 gMC->Gspos("R2L3", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
141 par[1] = rout + 5.65;
143 gMC->Gsvolu("R3L3", "TUBE", idtmed[902], par, 3);
144 gMC->Gspos("R3L3", 1, "ALIC", 0., 0., z - 1.525, 0, "ONLY");
145 // ********************************************************
146 // DEFINE RIGHT DISK#2 OF FMD
147 // ********************************************************
158 gMC->Gsvolu("R1R2", "TUBE", idtmed[900], par, 3);
159 gMC->Gspos("R1R2", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
164 gMC->Gsvolu("R2R2", "TUBE", idtmed[901], par, 3);
165 gMC->Gspos("R2R2", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
168 par[1] = rout + 5.65;
170 gMC->Gsvolu("R3R2", "TUBE", idtmed[902], par, 3);
171 gMC->Gspos("R3R2", 1, "ALIC", 0., 0., z + 1.525, 0, "ONLY");
172 // ***********************************************************
173 // DEFINE LEFT DISK#2 OF FMD
174 // ***********************************************************
185 gMC->Gsvolu("R1L2", "TUBE", idtmed[900], par, 3);
186 gMC->Gspos("R1L2", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
191 gMC->Gsvolu("R2L2", "TUBE", idtmed[901], par, 3);
192 gMC->Gspos("R2L2", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
195 par[1] = rout + 5.65;
197 gMC->Gsvolu("R3L2", "TUBE", idtmed[902], par, 3);
198 gMC->Gspos("R3L2", 1, "ALIC", 0., 0., z - 1.525, 0, "ONLY");
199 // ********************************************************
200 // DEFINE RIGHT DISK#1 OF FMD
201 // ********************************************************
212 gMC->Gsvolu("R1R1", "TUBE", idtmed[900], par, 3);
213 gMC->Gspos("R1R1", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
218 gMC->Gsvolu("R2R1", "TUBE", idtmed[901], par, 3);
219 gMC->Gspos("R2R1", 1, "ALIC", 0., 0., z + 1.5, 0, "ONLY");
222 par[1] = rout + 5.65;
224 gMC->Gsvolu("R3R1", "TUBE", idtmed[902], par, 3);
225 gMC->Gspos("R3R1", 1, "ALIC", 0., 0., z + 1.525, 0, "ONLY");
226 // ***********************************************************
227 // DEFINE LEFT DISK#1 OF FMD
228 // ***********************************************************
239 gMC->Gsvolu("R1L1", "TUBE", idtmed[900], par, 3);
240 gMC->Gspos("R1L1", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
245 gMC->Gsvolu("R2L1", "TUBE", idtmed[901], par, 3);
246 gMC->Gspos("R2L1", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
249 par[1] = rout + 5.65;
251 gMC->Gsvolu("R3L1", "TUBE", idtmed[902], par, 3);
252 gMC->Gspos("R3L1", 1, "ALIC", 0., 0., z - 1.525, 0, "ONLY");
253 // ***********************************************************
254 // DEFINE LEFT DISK#4 OF FMD
255 // ***********************************************************
266 gMC->Gsvolu("R1L4", "TUBE", idtmed[900], par, 3);
267 gMC->Gspos("R1L4", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
272 gMC->Gsvolu("R2L4", "TUBE", idtmed[901], par, 3);
273 gMC->Gspos("R2L4", 1, "ALIC", 0., 0., z - 1.5, 0, "ONLY");
276 par[1] = rout + 5.65;
278 gMC->Gsvolu("R3L4", "TUBE", idtmed[902], par, 3);
279 gMC->Gspos("R3L4", 1, "ALIC", 0., 0., z - 1.525, 0, "ONLY");
282 //_____________________________________________________________________________
283 void AliFMDv0::DrawModule()
286 // Draw a shaded view of the FMD version 0
289 // Set everything unseen
290 gMC->Gsatt("*", "seen", -1);
292 // Set ALIC mother transparent
293 gMC->Gsatt("ALIC","SEEN",0);
295 // Set the volumes visible
296 gMC->Gsatt("R1R3","SEEN",1);
297 gMC->Gsatt("R2R3","SEEN",1);
298 gMC->Gsatt("R3R3","SEEN",1);
299 gMC->Gsatt("R1L3","SEEN",1);
300 gMC->Gsatt("R2L3","SEEN",1);
301 gMC->Gsatt("R3L3","SEEN",1);
302 gMC->Gsatt("R1R2","SEEN",1);
303 gMC->Gsatt("R2R2","SEEN",1);
304 gMC->Gsatt("R3R2","SEEN",1);
305 gMC->Gsatt("R1L2","SEEN",1);
306 gMC->Gsatt("R2L2","SEEN",1);
307 gMC->Gsatt("R3L2","SEEN",1);
308 gMC->Gsatt("R1R1","SEEN",1);
309 gMC->Gsatt("R2R1","SEEN",1);
310 gMC->Gsatt("R3R1","SEEN",1);
311 gMC->Gsatt("R1L1","SEEN",1);
312 gMC->Gsatt("R2L1","SEEN",1);
313 gMC->Gsatt("R3L1","SEEN",1);
314 gMC->Gsatt("R1L4","SEEN",1);
315 gMC->Gsatt("R2L4","SEEN",1);
316 gMC->Gsatt("R3L4","SEEN",1);
318 gMC->Gdopt("hide", "on");
319 gMC->Gdopt("shad", "on");
320 gMC->Gsatt("*", "fill", 7);
321 gMC->SetClipBox(".");
322 gMC->SetClipBox("*", 0, 1000, -1000, 1000, -1000, 1000);
324 gMC->Gdraw("alic", 40, 30, 0, 6, 9, .08, .08);
325 gMC->Gdhead(1111, "Forward Multiplicity Detector version 0");
326 gMC->Gdman(13, 9, "MAN");
329 //_____________________________________________________________________________
330 void AliFMDv0::CreateMaterials()
333 // Create Materials for version 0 of FMD
336 // Material for ring #1
337 Float_t ar1[8] = { 55.8,58.7,52.,47.9,16.,28.,207.2,27. };
338 Float_t zr1[8] = { 26.,28.,24.,22.,8.,14.,82.,13. };
339 Float_t wr1[8] = { .27,.081,.054,.045,.18,.25,.06,.06 };
340 // Material for ring #2
341 Float_t ar2[3] = { 55.8,27.,16. };
342 Float_t zr2[3] = { 26.,13.,8. };
343 Float_t wr2[3] = { .35,.34,.31 };
344 // Material for ring #3
345 Float_t ar3[3] = { 28.,27.,16. };
346 Float_t zr3[3] = { 14.,13.,8. };
347 Float_t wr3[3] = { .37,.33,.3 };
349 Float_t epsil, stmin, deemax, tmaxfd, stemax;
351 Int_t ISXFLD = gAlice->Field()->Integ();
352 Float_t SXMGMX = gAlice->Field()->Max();
356 AliMixture(1, "FMD_R1$", ar1, zr1, 2.69, 8, wr1);
360 AliMixture(2, "FMD_R2$", ar2, zr2, 2.63, 3, wr2);
364 AliMixture(3, "FMD_R3$", ar3, zr3, 3.15, 3, wr3);
365 // *******************************************************
366 // Defines tracking media parameters.
367 // *******************************************************
368 epsil = .001; // Tracking precision, DLS
369 stemax = -1.; // Maximum displacement for multiple scattering
370 tmaxfd = -20.; // Maximum angle due to field deflection
371 deemax = -.3; // Maximum fractional energy loss, DLS
373 // ********************************************************
374 AliMedium(1, "FMD_R1_L3 ", 1, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
375 AliMedium(2, "FMD_R2_L3 ", 2, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);
376 AliMedium(3, "FMD_R3_L3 ", 3, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin);