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.5 2000/11/01 14:53:21 cblume
19 Merge with TRD-develop
21 Revision 1.1.4.6 2000/10/15 23:40:01 cblume
24 Revision 1.1.4.5 2000/10/06 16:49:46 cblume
27 Revision 1.1.4.4 2000/10/04 16:34:58 cblume
28 Replace include files by forward declarations
30 Revision 1.1.4.3 2000/09/22 14:43:41 cblume
31 Allow the pad/timebin-dimensions to be changed after initialization
33 Revision 1.4 2000/10/02 21:28:19 fca
34 Removal of useless dependecies via forward declarations
36 Revision 1.3 2000/06/08 18:32:58 cblume
37 Make code compliant to coding conventions
39 Revision 1.2 2000/05/08 16:17:27 cblume
42 Revision 1.1.4.2 2000/05/08 14:46:44 cblume
43 Include options SetPHOShole() and SetRICHhole()
45 Revision 1.1.4.1 2000/04/27 12:46:04 cblume
46 Corrected bug in full geometry
48 Revision 1.1 2000/02/28 19:01:15 cblume
53 ///////////////////////////////////////////////////////////////////////////////
55 // TRD geometry for the spaceframe without holes //
57 ///////////////////////////////////////////////////////////////////////////////
61 #include "AliTRDgeometryFull.h"
63 ClassImp(AliTRDgeometryFull)
65 //_____________________________________________________________________________
66 AliTRDgeometryFull::AliTRDgeometryFull():AliTRDgeometry()
69 // AliTRDgeometryFull default constructor
76 //_____________________________________________________________________________
77 AliTRDgeometryFull::~AliTRDgeometryFull()
80 // AliTRDgeometryFull destructor
85 //_____________________________________________________________________________
86 void AliTRDgeometryFull::Init()
89 // Initializes the geometry parameter
97 // The length of the inner chambers
98 for (iplan = 0; iplan < fgkNplan; iplan++)
99 fClengthI[iplan] = 110.0;
101 // The length of the middle chambers
102 fClengthM1[0] = 123.5;
103 fClengthM1[1] = 131.0;
104 fClengthM1[2] = 138.5;
105 fClengthM1[3] = 146.0;
106 fClengthM1[4] = 153.0;
107 fClengthM1[5] = 160.5;
109 fClengthM2[0] = 123.5 - 7.0;
110 fClengthM2[1] = 131.0 - 7.0;
111 fClengthM2[2] = 138.5 - 7.0;
112 fClengthM2[3] = 146.0 - 7.0;
113 fClengthM2[4] = 153.0 - 7.0;
114 fClengthM2[5] = 160.4 - 7.0;
116 // The length of the outer chambers
117 fClengthO1[0] = 123.5;
118 fClengthO1[1] = 131.0;
119 fClengthO1[2] = 134.5;
120 fClengthO1[3] = 142.0;
121 fClengthO1[4] = 142.0;
122 fClengthO1[5] = 134.5;
124 fClengthO2[0] = 123.5;
125 fClengthO2[1] = 131.0;
126 fClengthO2[2] = 134.5;
127 fClengthO2[3] = 142.0;
128 fClengthO2[4] = 142.0;
129 fClengthO2[5] = 134.5;
131 fClengthO3[0] = 86.5;
132 fClengthO3[1] = 101.5;
133 fClengthO3[2] = 112.5;
134 fClengthO3[3] = 127.5;
135 fClengthO3[4] = 134.5;
136 fClengthO3[5] = 134.5;
138 // The maximum number of pads
139 // and the position of pad 0,0,0
141 // chambers seen from the top:
142 // +----------------------------+
148 // +----------------------------+ +------>
150 // chambers seen from the side: ^
151 // +----------------------------+ time|
154 // +----------------------------+ +------>
158 // The pad row (z-direction)
163 //_____________________________________________________________________________
164 void AliTRDgeometryFull::SetNRowPad(Int_t p, Int_t c, Int_t npad)
167 // Redefines the number of pads in raw direction for
168 // a given plane and chamber number
171 Float_t clengthI = fClengthI[p];
172 Float_t clengthM = fClengthM1[p];
173 Float_t clengthO = fClengthO1[p];
175 for (Int_t iSect = 0; iSect < fgkNsect; iSect++) {
177 fRowMax[p][c][iSect] = npad;
179 fRowPadSize[p][c][iSect] = (clengthI - 2. * fgkCcthick)
180 / fRowMax[p][c][iSect];
182 if ((c == 1) || (c == 3)) {
183 fRowPadSize[p][c][iSect] = (clengthM - 2. * fgkCcthick)
184 / fRowMax[p][c][iSect];
186 if ((c == 0) || (c == 4)) {
187 fRowPadSize[p][c][iSect] = (clengthO - 2. * fgkCcthick)
188 / fRowMax[p][c][iSect];
195 //_____________________________________________________________________________
196 void AliTRDgeometryFull::SetNRowPad()
199 // Defines the number of pads in row direction
202 for (Int_t iPlan = 0; iPlan < fgkNplan; iPlan++) {
204 Float_t clengthI = fClengthI[iPlan];
205 Float_t clengthM = fClengthM1[iPlan];
206 Float_t clengthO = fClengthO1[iPlan];
208 for (Int_t iSect = 0; iSect < fgkNsect; iSect++) {
210 fRow0[iPlan][0][iSect] = -clengthI/2. - clengthM - clengthO + fgkCcthick;
211 fRow0[iPlan][1][iSect] = -clengthI/2. - clengthM + fgkCcthick;
212 fRow0[iPlan][2][iSect] = -clengthI/2. + fgkCcthick;
213 fRow0[iPlan][3][iSect] = clengthI/2. + fgkCcthick;
214 fRow0[iPlan][4][iSect] = clengthI/2. + clengthM + fgkCcthick;
216 for (Int_t iCham = 0; iCham < fgkNcham; iCham++) {
219 fRowMax[iPlan][iCham][iSect] = 18;
220 fRowPadSize[iPlan][iCham][iSect] = (clengthI - 2. * fgkCcthick)
221 / fRowMax[iPlan][iCham][iSect];
223 if ((iCham == 1) || (iCham == 3)) {
224 fRowMax[iPlan][iCham][iSect] = 24;
225 fRowPadSize[iPlan][iCham][iSect] = (clengthM - 2. * fgkCcthick)
226 / fRowMax[iPlan][iCham][iSect];
228 if ((iCham == 0) || (iCham == 4)) {
230 fRowMax[iPlan][iCham][iSect] = 24;
233 fRowMax[iPlan][iCham][iSect] = 22;
236 fRowMax[iPlan][iCham][iSect] = 20;
238 fRowPadSize[iPlan][iCham][iSect] = (clengthO - 2. * fgkCcthick)
239 / fRowMax[iPlan][iCham][iSect];
248 //_____________________________________________________________________________
249 void AliTRDgeometryFull::CreateGeometry(Int_t *idtmed)
252 // Create the TRD geometry without hole
257 const Int_t kNparTrd = 4;
258 const Int_t kNparCha = 3;
259 const Int_t kNplan = fgkNplan;
261 Float_t parTrd[kNparTrd];
262 Float_t parCha[kNparCha];
264 Float_t xpos, ypos, zpos;
266 AliTRDgeometry::CreateGeometry(idtmed);
268 // The TRD mother volume for one sector (Air), full length in z-direction
269 parTrd[0] = fgkSwidth1/2.;
270 parTrd[1] = fgkSwidth2/2.;
271 parTrd[2] = fgkSlenTR1/2.;
272 parTrd[3] = fgkSheight/2.;
273 gMC->Gsvolu("TRD1","TRD1",idtmed[1302-1],parTrd,kNparTrd);
275 // The TRD mother volume for one sector (Air), leaving hole for PHOS
277 gMC->Gsvolu("TRD2","TRD1",idtmed[1302-1],parTrd,kNparTrd);
280 // The TRD mother volume for one sector (Air), leaving hole for RICH
282 gMC->Gsvolu("TRD3","TRD1",idtmed[1302-1],parTrd,kNparTrd);
285 // Position the chambers in the TRD mother volume
286 for (iplan = 1; iplan <= kNplan; iplan++) {
288 Float_t y1 = fClengthM1[iplan-1] - fClengthM2[iplan-1];
289 Float_t y2 = fClengthO1[iplan-1] - fClengthO3[iplan-1];
291 // The inner chambers ---------------------------------------------------------------
293 // the aluminum frame
294 parCha[0] = fCwidth[iplan-1]/2.;
295 parCha[1] = fClengthI[iplan-1]/2.;
296 parCha[2] = fgkCaframe/2.;
299 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
300 gMC->Gsposp("UAFI",iplan ,"TRD1",xpos,ypos,zpos,0,"MANY",parCha,kNparCha);
302 // the inner part of the aluminum frame
303 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
304 parCha[1] = fClengthI[iplan-1]/2. - fgkCathick;
305 parCha[2] = fgkCaframe/2.;
308 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
309 gMC->Gsposp("UAII",iplan ,"TRD1",xpos,ypos,zpos,0,"ONLY",parCha,kNparCha);
312 parCha[0] = fCwidth[iplan-1]/2.;
313 parCha[1] = fClengthI[iplan-1]/2.;
314 parCha[2] = fgkCcframe/2.;
317 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
318 gMC->Gsposp("UCFI",iplan ,"TRD1",xpos,ypos,zpos,0,"MANY",parCha,kNparCha);
320 // the inner part of the carbon frame
321 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
322 parCha[1] = fClengthI[iplan-1]/2. - fgkCcthick;
323 parCha[2] = fgkCcframe/2.;
326 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
327 gMC->Gsposp("UCII",iplan ,"TRD1",xpos,ypos,zpos,0,"ONLY",parCha,kNparCha);
329 // The middle chambers --------------------------------------------------------------
331 // the aluminum frame
332 parCha[0] = fCwidth[iplan-1]/2.;
333 parCha[1] = fClengthM1[iplan-1]/2.;
334 parCha[2] = fgkCaframe/2.;
336 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]/2.;
337 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
338 gMC->Gsposp("UAFM",iplan ,"TRD1",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
339 gMC->Gsposp("UAFM",iplan+ fgkNplan,"TRD1",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
341 parCha[0] = fCwidth[iplan-1]/2.;
342 parCha[1] = fClengthM2[iplan-1]/2.;
343 parCha[2] = fgkCaframe/2.;
345 ypos = fClengthI[iplan-1]/2. + fClengthM2[iplan-1]/2. + y1;
346 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
347 gMC->Gsposp("UAFM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
348 gMC->Gsposp("UAFM",iplan+3*kNplan,"TRD2",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
351 // the inner part of the aluminum frame
352 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
353 parCha[1] = fClengthM1[iplan-1]/2. - fgkCathick;
354 parCha[2] = fgkCaframe/2.;
356 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]/2.;
357 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
358 gMC->Gsposp("UAIM",iplan ,"TRD1",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
359 gMC->Gsposp("UAIM",iplan+ fgkNplan,"TRD1",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
361 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
362 parCha[1] = fClengthM2[iplan-1]/2. - fgkCathick;
363 parCha[2] = fgkCaframe/2.;
365 ypos = fClengthI[iplan-1]/2. + fClengthM2[iplan-1]/2. + y1;
366 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
367 gMC->Gsposp("UAIM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
368 gMC->Gsposp("UAIM",iplan+3*kNplan,"TRD2",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
372 parCha[0] = fCwidth[iplan-1]/2.;
373 parCha[1] = fClengthM1[iplan-1]/2.;
374 parCha[2] = fgkCcframe/2.;
376 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]/2.;
377 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
378 gMC->Gsposp("UCFM",iplan ,"TRD1",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
379 gMC->Gsposp("UCFM",iplan+ kNplan,"TRD1",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
381 parCha[0] = fCwidth[iplan-1]/2.;
382 parCha[1] = fClengthM2[iplan-1]/2.;
383 parCha[2] = fgkCcframe/2.;
385 ypos = fClengthI[iplan-1]/2. + fClengthM2[iplan-1]/2. + y1;
386 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
387 gMC->Gsposp("UCFM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
388 gMC->Gsposp("UCFM",iplan+3*kNplan,"TRD2",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
391 // the inner part of the carbon frame
392 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
393 parCha[1] = fClengthM1[iplan-1]/2. - fgkCcthick;
394 parCha[2] = fgkCcframe/2.;
396 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]/2.;
397 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
398 gMC->Gsposp("UCIM",iplan ,"TRD1",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
399 gMC->Gsposp("UCIM",iplan+ kNplan,"TRD1",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
401 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
402 parCha[1] = fClengthM2[iplan-1]/2. - fgkCcthick;
403 parCha[2] = fgkCcframe/2.;
405 ypos = fClengthI[iplan-1]/2. + fClengthM2[iplan-1]/2. + y1;
406 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
407 gMC->Gsposp("UCIM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
408 gMC->Gsposp("UCIM",iplan+3*kNplan,"TRD2",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
411 // The outer chambers ---------------------------------------------------------------
413 // the aluminum frame
414 parCha[0] = fCwidth[iplan-1]/2.;
415 parCha[1] = fClengthO1[iplan-1]/2.;
416 parCha[2] = fgkCaframe/2.;
418 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO1[iplan-1]/2.;
419 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
420 gMC->Gsposp("UAFO",iplan ,"TRD1",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
421 gMC->Gsposp("UAFO",iplan+ kNplan,"TRD1",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
423 parCha[0] = fCwidth[iplan-1]/2.;
424 parCha[1] = fClengthO2[iplan-1]/2.;
425 parCha[2] = fgkCaframe/2.;
427 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO2[iplan-1]/2.;
428 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
429 gMC->Gsposp("UAFO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
430 gMC->Gsposp("UAFO",iplan+3*kNplan,"TRD2",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
433 parCha[0] = fCwidth[iplan-1]/2.;
434 parCha[1] = fClengthO3[iplan-1]/2.;
435 parCha[2] = fgkCaframe/2.;
437 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO3[iplan-1]/2. + y2;
438 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
439 gMC->Gsposp("UAFO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
440 gMC->Gsposp("UAFO",iplan+5*kNplan,"TRD3",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
443 // the inner part of the aluminum frame
444 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
445 parCha[1] = fClengthO1[iplan-1]/2. - fgkCathick;
446 parCha[2] = fgkCaframe/2.;
448 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO1[iplan-1]/2.;
449 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
450 gMC->Gsposp("UAIO",iplan ,"TRD1",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
451 gMC->Gsposp("UAIO",iplan+ kNplan,"TRD1",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
453 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
454 parCha[1] = fClengthO2[iplan-1]/2. - fgkCathick;
455 parCha[2] = fgkCaframe/2.;
457 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO2[iplan-1]/2.;
458 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
459 gMC->Gsposp("UAIO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
460 gMC->Gsposp("UAIO",iplan+3*kNplan,"TRD2",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
463 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
464 parCha[1] = fClengthO3[iplan-1]/2. - fgkCathick;
465 parCha[2] = fgkCaframe/2.;
467 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO3[iplan-1]/2. + y2;
468 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
469 gMC->Gsposp("UAIO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
470 gMC->Gsposp("UAIO",iplan+5*kNplan,"TRD3",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
474 parCha[0] = fCwidth[iplan-1]/2.;
475 parCha[1] = fClengthO1[iplan-1]/2.;
476 parCha[2] = fgkCcframe/2.;
478 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO1[iplan-1]/2.;
479 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
480 gMC->Gsposp("UCFO",iplan, "TRD1",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
481 gMC->Gsposp("UCFO",iplan+ kNplan,"TRD1",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
483 parCha[0] = fCwidth[iplan-1]/2.;
484 parCha[1] = fClengthO2[iplan-1]/2.;
485 parCha[2] = fgkCcframe/2.;
487 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO2[iplan-1]/2.;
488 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
489 gMC->Gsposp("UCFO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
490 gMC->Gsposp("UCFO",iplan+3*kNplan,"TRD2",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
493 parCha[0] = fCwidth[iplan-1]/2.;
494 parCha[1] = fClengthO3[iplan-1]/2.;
495 parCha[2] = fgkCcframe/2.;
497 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO3[iplan-1]/2. + y2;
498 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
499 gMC->Gsposp("UCFO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
500 gMC->Gsposp("UCFO",iplan+5*kNplan,"TRD3",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
503 // the inner part of the carbon frame
504 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
505 parCha[1] = fClengthO1[iplan-1]/2. - fgkCcthick;
506 parCha[2] = fgkCcframe/2.;
508 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO1[iplan-1]/2.;
509 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
510 gMC->Gsposp("UCIO",iplan ,"TRD1",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
511 gMC->Gsposp("UCIO",iplan+ kNplan,"TRD1",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
513 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
514 parCha[1] = fClengthO2[iplan-1]/2. - fgkCcthick;
515 parCha[2] = fgkCcframe/2.;
517 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO2[iplan-1]/2.;
518 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
519 gMC->Gsposp("UCIO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
520 gMC->Gsposp("UCIO",iplan+3*kNplan,"TRD2",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
523 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
524 parCha[1] = fClengthO3[iplan-1]/2. - fgkCcthick;
525 parCha[2] = fgkCcframe/2.;
527 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO3[iplan-1]/2. + y2;
528 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
529 gMC->Gsposp("UCIO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
530 gMC->Gsposp("UCIO",iplan+5*kNplan,"TRD3",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
538 gMC->Gspos("TRD1",1,"BTR1",xpos,ypos,zpos,0,"ONLY");
540 gMC->Gspos("TRD2",2,"BTR2",xpos,ypos,zpos,0,"ONLY");
542 gMC->Gspos("TRD1",2,"BTR2",xpos,ypos,zpos,0,"ONLY");
544 gMC->Gspos("TRD3",3,"BTR3",xpos,ypos,zpos,0,"ONLY");
546 gMC->Gspos("TRD1",3,"BTR3",xpos,ypos,zpos,0,"ONLY");