]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - TRD/AliTRDgeometryHole.cxx
Consistent declarations needed on Alpha
[u/mrichter/AliRoot.git] / TRD / AliTRDgeometryHole.cxx
... / ...
CommitLineData
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$
18Revision 1.5 2001/02/14 18:22:26 cblume
19Change in the geometry of the padplane
20
21Revision 1.4 2000/11/01 14:53:21 cblume
22Merge with TRD-develop
23
24Revision 1.1.4.4 2000/10/15 23:40:01 cblume
25Remove AliTRDconst
26
27Revision 1.1.4.3 2000/10/06 16:49:46 cblume
28Made Getters const
29
30Revision 1.1.4.2 2000/10/04 16:34:58 cblume
31Replace include files by forward declarations
32
33Revision 1.1.4.1 2000/09/22 14:43:41 cblume
34Allow the pad/timebin-dimensions to be changed after initialization
35
36Revision 1.3 2000/10/02 21:28:19 fca
37Removal of useless dependecies via forward declarations
38
39Revision 1.2 2000/06/08 18:32:58 cblume
40Make code compliant to coding conventions
41
42Revision 1.1 2000/02/28 19:01:42 cblume
43Add new TRD classes
44
45*/
46
47///////////////////////////////////////////////////////////////////////////////
48// //
49// TRD geometry with holes //
50// //
51///////////////////////////////////////////////////////////////////////////////
52
53#include "AliMC.h"
54
55#include "AliTRDgeometryHole.h"
56
57ClassImp(AliTRDgeometryHole)
58
59//_____________________________________________________________________________
60AliTRDgeometryHole::AliTRDgeometryHole():AliTRDgeometry()
61{
62 //
63 // AliTRDgeometryHole default constructor
64 //
65
66 Init();
67
68}
69
70//_____________________________________________________________________________
71AliTRDgeometryHole::~AliTRDgeometryHole()
72{
73 //
74 // AliTRDgeometryHole destructor
75 //
76
77}
78
79//_____________________________________________________________________________
80void AliTRDgeometryHole::Init()
81{
82 //
83 // Initializes the geometry parameter
84 //
85
86 Int_t iplan;
87
88 // The length of the inner chambers
89 for (iplan = 0; iplan < fgkNplan; iplan++)
90 fClengthI[iplan] = 110.0;
91
92 // The length of the middle chambers
93 fClengthM1[0] = 123.5;
94 fClengthM1[1] = 131.0;
95 fClengthM1[2] = 138.5;
96 fClengthM1[3] = 146.0;
97 fClengthM1[4] = 153.0;
98 fClengthM1[5] = 160.5;
99
100 fClengthM2[0] = 123.5 - 7.0;
101 fClengthM2[1] = 131.0 - 7.0;
102 fClengthM2[2] = 138.5 - 7.0;
103 fClengthM2[3] = 146.0 - 7.0;
104 fClengthM2[4] = 153.0 - 7.0;
105 fClengthM2[5] = 160.4 - 7.0;
106
107 // The length of the outer chambers
108 fClengthO1[0] = 123.5;
109 fClengthO1[1] = 131.0;
110 fClengthO1[2] = 134.5;
111 fClengthO1[3] = 142.0;
112 fClengthO1[4] = 142.0;
113 fClengthO1[5] = 134.5;
114
115 fClengthO2[0] = 123.5;
116 fClengthO2[1] = 131.0;
117 fClengthO2[2] = 134.5;
118 fClengthO2[3] = 142.0;
119 fClengthO2[4] = 142.0;
120 fClengthO2[5] = 134.5;
121
122 fClengthO3[0] = 86.5;
123 fClengthO3[1] = 101.5;
124 fClengthO3[2] = 112.5;
125 fClengthO3[3] = 127.5;
126 fClengthO3[4] = 134.5;
127 fClengthO3[5] = 134.5;
128
129 // The maximum number of pads
130 // and the position of pad 0,0,0
131 //
132 // chambers seen from the top:
133 // +----------------------------+
134 // | |
135 // | | ^
136 // | | rphi|
137 // | | |
138 // |0 | |
139 // +----------------------------+ +------>
140 // z
141 // chambers seen from the side: ^
142 // +----------------------------+ time|
143 // | | |
144 // |0 | |
145 // +----------------------------+ +------>
146 // z
147 //
148
149 // The pad row (z-direction)
150 SetNRowPad();
151
152}
153
154//_____________________________________________________________________________
155void AliTRDgeometryHole::SetNRowPad(const Int_t p, const Int_t c, const Int_t npad)
156{
157 //
158 // Redefines the number of pads in raw direction for
159 // a given plane and chamber number
160 //
161
162 Float_t clengthI = fClengthI[p];
163 Float_t clengthM = fClengthM1[p];
164 Float_t clengthO = fClengthO1[p];
165
166 for (Int_t iSect = 0; iSect < fgkNsect; iSect++) {
167
168 fRowMax[p][c][iSect] = npad;
169 if (c == 2) {
170 fRowPadSize[p][c][iSect] = (clengthI - 2. * fgkCcthick)
171 / fRowMax[p][c][iSect];
172 }
173 if ((c == 1) || (c == 3)) {
174 fRowPadSize[p][c][iSect] = (clengthM - 2. * fgkCcthick)
175 / fRowMax[p][c][iSect];
176 }
177 if ((c == 0) || (c == 4)) {
178 fRowPadSize[p][c][iSect] = (clengthO - 2. * fgkCcthick)
179 / fRowMax[p][c][iSect];
180 }
181
182 }
183
184}
185
186//_____________________________________________________________________________
187void AliTRDgeometryHole::SetNRowPad()
188{
189 //
190 // Defines the pad size in row direction
191 //
192
193 for (Int_t iPlan = 0; iPlan < fgkNplan; iPlan++) {
194
195 Float_t clengthI = fClengthI[iPlan];
196 Float_t clengthM = fClengthM1[iPlan];
197 Float_t clengthO = fClengthO1[iPlan];
198
199 for (Int_t iSect = 0; iSect < fgkNsect; iSect++) {
200
201 fRow0[iPlan][0][iSect] = -clengthI/2. - clengthM - clengthO + fgkCcthick;
202 fRow0[iPlan][1][iSect] = -clengthI/2. - clengthM + fgkCcthick;
203 fRow0[iPlan][2][iSect] = -clengthI/2. + fgkCcthick;
204 fRow0[iPlan][3][iSect] = clengthI/2. + fgkCcthick;
205 fRow0[iPlan][4][iSect] = clengthI/2. + clengthM + fgkCcthick;
206
207 for (Int_t iCham = 0; iCham < fgkNcham; iCham++) {
208
209 if (iCham == 2) {
210 fRowMax[iPlan][iCham][iSect] = 18;
211 fRowPadSize[iPlan][iCham][iSect] = (clengthI - 2. * fgkCcthick)
212 / fRowMax[iPlan][iCham][iSect];
213 }
214 if ((iCham == 1) || (iCham == 3)) {
215 fRowMax[iPlan][iCham][iSect] = 24;
216 fRowPadSize[iPlan][iCham][iSect] = (clengthM - 2. * fgkCcthick)
217 / fRowMax[iPlan][iCham][iSect];
218 }
219 if ((iCham == 0) || (iCham == 4)) {
220 if (iPlan < 4) {
221 fRowMax[iPlan][iCham][iSect] = 24;
222 }
223 if (iPlan == 4) {
224 fRowMax[iPlan][iCham][iSect] = 22;
225 }
226 if (iPlan == 5) {
227 fRowMax[iPlan][iCham][iSect] = 20;
228 }
229 fRowPadSize[iPlan][iCham][iSect] = (clengthO - 2. * fgkCcthick)
230 / fRowMax[iPlan][iCham][iSect];
231 }
232
233 }
234 }
235 }
236
237}
238
239//_____________________________________________________________________________
240void AliTRDgeometryHole::CreateGeometry(Int_t *idtmed)
241{
242 //
243 // Create the TRD geometry with hole
244 //
245
246 Int_t iplan;
247
248 const Int_t kNparTrd = 4;
249 const Int_t kNparCha = 3;
250 const Int_t kNplan = fgkNplan;
251
252 Float_t parTrd[kNparTrd];
253 Float_t parCha[kNparCha];
254
255 Float_t xpos, ypos, zpos;
256
257 AliTRDgeometry::CreateGeometry(idtmed);
258
259 // The TRD mother volume for one sector (Air) (dimensions identical to BTR1)
260 parTrd[0] = fgkSwidth1/2.;
261 parTrd[1] = fgkSwidth2/2.;
262 parTrd[2] = fgkSlenTR1/2.;
263 parTrd[3] = fgkSheight/2.;
264 gMC->Gsvolu("TRD1","TRD1",idtmed[1302-1],parTrd,kNparTrd);
265
266 // The TRD mother volume for one sector (Air) (dimensions identical to BTR2)
267 parTrd[0] = fgkSwidth1/2.;
268 parTrd[1] = fgkSwidth2/2.;
269 parTrd[2] = fgkSlenTR2/2.;
270 parTrd[3] = fgkSheight/2.;
271 gMC->Gsvolu("TRD2","TRD1",idtmed[1302-1],parTrd,kNparTrd);
272
273 // The TRD mother volume for one sector (Air) (dimensions identical to BTR3)
274 parTrd[0] = fgkSwidth1/2.;
275 parTrd[1] = fgkSwidth2/2.;
276 parTrd[2] = fgkSlenTR3/2.;
277 parTrd[3] = fgkSheight/2.;
278 gMC->Gsvolu("TRD3","TRD1",idtmed[1302-1],parTrd,kNparTrd);
279
280 // Position the chambers in the TRD mother volume
281 for (iplan = 1; iplan <= kNplan; iplan++) {
282
283 // The inner chambers ---------------------------------------------------------------
284
285 // the aluminum frame
286 parCha[0] = fCwidth[iplan-1]/2.;
287 parCha[1] = fClengthI[iplan-1]/2.;
288 parCha[2] = fgkCaframe/2.;
289 xpos = 0.;
290 ypos = 0.;
291 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
292 gMC->Gsposp("UAFI",iplan ,"TRD1",xpos,ypos,zpos,0,"MANY",parCha,kNparCha);
293
294 // the inner part of the aluminum frame
295 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
296 parCha[1] = fClengthI[iplan-1]/2. - fgkCathick;
297 parCha[2] = fgkCaframe/2.;
298 xpos = 0.;
299 ypos = 0.;
300 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
301 gMC->Gsposp("UAII",iplan ,"TRD1",xpos,ypos,zpos,0,"ONLY",parCha,kNparCha);
302
303 // the carbon frame
304 parCha[0] = fCwidth[iplan-1]/2.;
305 parCha[1] = fClengthI[iplan-1]/2.;
306 parCha[2] = fgkCcframe/2.;
307 xpos = 0.;
308 ypos = 0.;
309 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
310 gMC->Gsposp("UCFI",iplan ,"TRD1",xpos,ypos,zpos,0,"MANY",parCha,kNparCha);
311
312 // the inner part of the carbon frame
313 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
314 parCha[1] = fClengthI[iplan-1]/2. - fgkCcthick;
315 parCha[2] = fgkCcframe/2.;
316 xpos = 0.;
317 ypos = 0.;
318 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
319 gMC->Gsposp("UCII",iplan ,"TRD1",xpos,ypos,zpos,0,"ONLY",parCha,kNparCha);
320
321 // The middle chambers --------------------------------------------------------------
322
323 // the aluminum frame
324 parCha[0] = fCwidth[iplan-1]/2.;
325 parCha[1] = fClengthM1[iplan-1]/2.;
326 parCha[2] = fgkCaframe/2.;
327 xpos = 0.;
328 ypos = fClengthI[iplan-1]/2.+ fClengthM1[iplan-1]/2.;
329 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
330 gMC->Gsposp("UAFM",iplan ,"TRD1",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
331 gMC->Gsposp("UAFM",iplan+ kNplan,"TRD1",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
332 parCha[0] = fCwidth[iplan-1]/2.;
333 parCha[1] = fClengthM2[iplan-1]/2.;
334 parCha[2] = fgkCaframe/2.;
335 xpos = 0.;
336 ypos = fClengthM2[iplan-1]/2. - fgkSlenTR2/2.;
337 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
338 gMC->Gsposp("UAFM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
339
340 // the inner part of the aluminum frame
341 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
342 parCha[1] = fClengthM1[iplan-1]/2. - fgkCathick;
343 parCha[2] = fgkCaframe/2.;
344 xpos = 0.;
345 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]/2.;
346 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
347 gMC->Gsposp("UAIM",iplan ,"TRD1",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
348 gMC->Gsposp("UAIM",iplan+ kNplan,"TRD1",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
349 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
350 parCha[1] = fClengthM2[iplan-1]/2. - fgkCathick;
351 parCha[2] = fgkCaframe/2.;
352 xpos = 0.;
353 ypos = fClengthM2[iplan-1]/2. - fgkSlenTR2/2.;
354 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
355 gMC->Gsposp("UAIM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
356
357 // the carbon frame
358 parCha[0] = fCwidth[iplan-1]/2.;
359 parCha[1] = fClengthM1[iplan-1]/2.;
360 parCha[2] = fgkCcframe/2.;
361 xpos = 0.;
362 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]/2.;
363 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
364 gMC->Gsposp("UCFM",iplan ,"TRD1",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
365 gMC->Gsposp("UCFM",iplan+ kNplan,"TRD1",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
366 parCha[0] = fCwidth[iplan-1]/2.;
367 parCha[1] = fClengthM2[iplan-1]/2.;
368 parCha[2] = fgkCcframe/2.;
369 xpos = 0.;
370 ypos = fClengthM2[iplan-1]/2. - fgkSlenTR2/2.;
371 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
372 gMC->Gsposp("UCFM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
373
374 // the inner part of the carbon frame
375 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
376 parCha[1] = fClengthM1[iplan-1]/2. - fgkCcthick;
377 parCha[2] = fgkCcframe/2.;
378 xpos = 0.;
379 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]/2.;
380 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
381 gMC->Gsposp("UCIM",iplan ,"TRD1",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
382 gMC->Gsposp("UCIM",iplan+ kNplan,"TRD1",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
383 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
384 parCha[1] = fClengthM2[iplan-1]/2. - fgkCcthick;
385 parCha[2] = fgkCcframe/2.;
386 xpos = 0.;
387 ypos = fClengthM2[iplan-1]/2. - fgkSlenTR2/2.;
388 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
389 gMC->Gsposp("UCIM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
390
391 // The outer chambers ---------------------------------------------------------------
392
393 // the aluminum frame
394 parCha[0] = fCwidth[iplan-1]/2.;
395 parCha[1] = fClengthO1[iplan-1]/2.;
396 parCha[2] = fgkCaframe/2.;
397 xpos = 0.;
398 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO1[iplan-1]/2.;
399 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
400 gMC->Gsposp("UAFO",iplan ,"TRD1",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
401 gMC->Gsposp("UAFO",iplan+ kNplan,"TRD1",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
402 parCha[0] = fCwidth[iplan-1]/2.;
403 parCha[1] = fClengthO2[iplan-1]/2.;
404 parCha[2] = fgkCaframe/2.;
405 xpos = 0.;
406 ypos = fClengthM2[iplan-1] + fClengthO2[iplan-1]/2. - fgkSlenTR2/2.;
407 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
408 gMC->Gsposp("UAFO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
409 parCha[0] = fCwidth[iplan-1]/2.;
410 parCha[1] = fClengthO3[iplan-1]/2.;
411 parCha[2] = fgkCaframe/2.;
412 xpos = 0.;
413 ypos = fClengthO3[iplan-1]/2. - fgkSlenTR3/2.;
414 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
415 gMC->Gsposp("UAFO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
416
417 // the inner part of the aluminum frame
418 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
419 parCha[1] = fClengthO1[iplan-1]/2. - fgkCathick;
420 parCha[2] = fgkCaframe/2.;
421 xpos = 0.;
422 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO1[iplan-1]/2.;
423 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
424 gMC->Gsposp("UAIO",iplan ,"TRD1",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
425 gMC->Gsposp("UAIO",iplan+ kNplan,"TRD1",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
426 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
427 parCha[1] = fClengthO2[iplan-1]/2. - fgkCathick;
428 parCha[2] = fgkCaframe/2.;
429 xpos = 0.;
430 ypos = fClengthM2[iplan-1] + fClengthO2[iplan-1]/2. - fgkSlenTR2/2.;
431 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
432 gMC->Gsposp("UAIO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
433 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
434 parCha[1] = fClengthO3[iplan-1]/2. - fgkCathick;
435 parCha[2] = fgkCaframe/2.;
436 xpos = 0.;
437 ypos = fClengthO3[iplan-1]/2. - fgkSlenTR3/2.;
438 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
439 gMC->Gsposp("UAIO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
440
441 // the carbon frame
442 parCha[0] = fCwidth[iplan-1]/2.;
443 parCha[1] = fClengthO1[iplan-1]/2.;
444 parCha[2] = fgkCcframe/2.;
445 xpos = 0.;
446 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO1[iplan-1]/2.;
447 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
448 gMC->Gsposp("UCFO",iplan, "TRD1",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
449 gMC->Gsposp("UCFO",iplan+ kNplan,"TRD1",xpos,-ypos,zpos,0,"MANY",parCha,kNparCha);
450 parCha[0] = fCwidth[iplan-1]/2.;
451 parCha[1] = fClengthO2[iplan-1]/2.;
452 parCha[2] = fgkCcframe/2.;
453 xpos = 0.;
454 ypos = fClengthM2[iplan-1] + fClengthO2[iplan-1]/2. - fgkSlenTR2/2.;
455 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
456 gMC->Gsposp("UCFO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
457 parCha[0] = fCwidth[iplan-1]/2.;
458 parCha[1] = fClengthO3[iplan-1]/2.;
459 parCha[2] = fgkCcframe/2.;
460 xpos = 0.;
461 ypos = fClengthO3[iplan-1]/2. - fgkSlenTR3/2.;
462 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
463 gMC->Gsposp("UCFO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
464
465 // the inner part of the carbon frame
466 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
467 parCha[1] = fClengthO1[iplan-1]/2. - fgkCcthick;
468 parCha[2] = fgkCcframe/2.;
469 xpos = 0.;
470 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO1[iplan-1]/2.;
471 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
472 gMC->Gsposp("UCIO",iplan ,"TRD1",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
473 gMC->Gsposp("UCIO",iplan+ kNplan,"TRD1",xpos,-ypos,zpos,0,"ONLY",parCha,kNparCha);
474 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
475 parCha[1] = fClengthO2[iplan-1]/2. - fgkCcthick;
476 parCha[2] = fgkCcframe/2.;
477 xpos = 0.;
478 ypos = fClengthM2[iplan-1] + fClengthO2[iplan-1]/2. - fgkSlenTR2/2.;
479 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
480 gMC->Gsposp("UCIO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
481 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
482 parCha[1] = fClengthO3[iplan-1]/2. - fgkCcthick;
483 parCha[2] = fgkCcframe/2.;
484 xpos = 0.;
485 ypos = fClengthO3[iplan-1]/2. - fgkSlenTR3/2.;
486 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
487 gMC->Gsposp("UCIO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
488
489 }
490
491 xpos = 0.;
492 ypos = 0.;
493 zpos = 0.;
494 gMC->Gspos("TRD1",1,"BTR1",xpos,ypos,zpos,0,"ONLY");
495 gMC->Gspos("TRD2",1,"BTR2",xpos,ypos,zpos,0,"ONLY");
496 gMC->Gspos("TRD3",1,"BTR3",xpos,ypos,zpos,0,"ONLY");
497
498}