]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TRD/AliTRDgeometryHole.cxx
New classes added
[u/mrichter/AliRoot.git] / TRD / AliTRDgeometryHole.cxx
CommitLineData
f7336fa3 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$
ff821236 18Revision 1.5 2001/02/14 18:22:26 cblume
19Change in the geometry of the padplane
20
71d9fa7b 21Revision 1.4 2000/11/01 14:53:21 cblume
22Merge with TRD-develop
23
793ff80c 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
94de3818 39Revision 1.2 2000/06/08 18:32:58 cblume
40Make code compliant to coding conventions
41
8230f242 42Revision 1.1 2000/02/28 19:01:42 cblume
43Add new TRD classes
44
f7336fa3 45*/
46
47///////////////////////////////////////////////////////////////////////////////
48// //
49// TRD geometry with holes //
50// //
51///////////////////////////////////////////////////////////////////////////////
52
94de3818 53#include "AliMC.h"
f7336fa3 54
793ff80c 55#include "AliTRDgeometryHole.h"
56
f7336fa3 57ClassImp(AliTRDgeometryHole)
58
59//_____________________________________________________________________________
60AliTRDgeometryHole::AliTRDgeometryHole():AliTRDgeometry()
61{
62 //
63 // AliTRDgeometryHole default constructor
64 //
65
66 Init();
67
68}
69
70//_____________________________________________________________________________
71AliTRDgeometryHole::~AliTRDgeometryHole()
72{
8230f242 73 //
74 // AliTRDgeometryHole destructor
75 //
f7336fa3 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
793ff80c 89 for (iplan = 0; iplan < fgkNplan; iplan++)
f7336fa3 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)
71d9fa7b 150 SetNRowPad();
793ff80c 151
152}
f7336fa3 153
793ff80c 154//_____________________________________________________________________________
ff821236 155void AliTRDgeometryHole::SetNRowPad(const Int_t p, const Int_t c, const Int_t npad)
793ff80c 156{
157 //
71d9fa7b 158 // Redefines the number of pads in raw direction for
159 // a given plane and chamber number
793ff80c 160 //
161
71d9fa7b 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];
f7336fa3 180 }
181
182 }
183
184}
185
186//_____________________________________________________________________________
71d9fa7b 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//_____________________________________________________________________________
f7336fa3 240void AliTRDgeometryHole::CreateGeometry(Int_t *idtmed)
241{
242 //
243 // Create the TRD geometry with hole
244 //
245
246 Int_t iplan;
247
8230f242 248 const Int_t kNparTrd = 4;
249 const Int_t kNparCha = 3;
793ff80c 250 const Int_t kNplan = fgkNplan;
f7336fa3 251
8230f242 252 Float_t parTrd[kNparTrd];
253 Float_t parCha[kNparCha];
f7336fa3 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)
793ff80c 260 parTrd[0] = fgkSwidth1/2.;
261 parTrd[1] = fgkSwidth2/2.;
262 parTrd[2] = fgkSlenTR1/2.;
263 parTrd[3] = fgkSheight/2.;
8230f242 264 gMC->Gsvolu("TRD1","TRD1",idtmed[1302-1],parTrd,kNparTrd);
f7336fa3 265
266 // The TRD mother volume for one sector (Air) (dimensions identical to BTR2)
793ff80c 267 parTrd[0] = fgkSwidth1/2.;
268 parTrd[1] = fgkSwidth2/2.;
269 parTrd[2] = fgkSlenTR2/2.;
270 parTrd[3] = fgkSheight/2.;
8230f242 271 gMC->Gsvolu("TRD2","TRD1",idtmed[1302-1],parTrd,kNparTrd);
f7336fa3 272
273 // The TRD mother volume for one sector (Air) (dimensions identical to BTR3)
793ff80c 274 parTrd[0] = fgkSwidth1/2.;
275 parTrd[1] = fgkSwidth2/2.;
276 parTrd[2] = fgkSlenTR3/2.;
277 parTrd[3] = fgkSheight/2.;
8230f242 278 gMC->Gsvolu("TRD3","TRD1",idtmed[1302-1],parTrd,kNparTrd);
f7336fa3 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
8230f242 286 parCha[0] = fCwidth[iplan-1]/2.;
287 parCha[1] = fClengthI[iplan-1]/2.;
793ff80c 288 parCha[2] = fgkCaframe/2.;
f7336fa3 289 xpos = 0.;
290 ypos = 0.;
793ff80c 291 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 292 gMC->Gsposp("UAFI",iplan ,"TRD1",xpos,ypos,zpos,0,"MANY",parCha,kNparCha);
f7336fa3 293
294 // the inner part of the aluminum frame
793ff80c 295 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
296 parCha[1] = fClengthI[iplan-1]/2. - fgkCathick;
297 parCha[2] = fgkCaframe/2.;
f7336fa3 298 xpos = 0.;
299 ypos = 0.;
793ff80c 300 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 301 gMC->Gsposp("UAII",iplan ,"TRD1",xpos,ypos,zpos,0,"ONLY",parCha,kNparCha);
f7336fa3 302
303 // the carbon frame
8230f242 304 parCha[0] = fCwidth[iplan-1]/2.;
305 parCha[1] = fClengthI[iplan-1]/2.;
793ff80c 306 parCha[2] = fgkCcframe/2.;
f7336fa3 307 xpos = 0.;
308 ypos = 0.;
793ff80c 309 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 310 gMC->Gsposp("UCFI",iplan ,"TRD1",xpos,ypos,zpos,0,"MANY",parCha,kNparCha);
f7336fa3 311
312 // the inner part of the carbon frame
793ff80c 313 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
314 parCha[1] = fClengthI[iplan-1]/2. - fgkCcthick;
315 parCha[2] = fgkCcframe/2.;
f7336fa3 316 xpos = 0.;
317 ypos = 0.;
793ff80c 318 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 319 gMC->Gsposp("UCII",iplan ,"TRD1",xpos,ypos,zpos,0,"ONLY",parCha,kNparCha);
f7336fa3 320
321 // The middle chambers --------------------------------------------------------------
322
323 // the aluminum frame
8230f242 324 parCha[0] = fCwidth[iplan-1]/2.;
325 parCha[1] = fClengthM1[iplan-1]/2.;
793ff80c 326 parCha[2] = fgkCaframe/2.;
f7336fa3 327 xpos = 0.;
793ff80c 328 ypos = fClengthI[iplan-1]/2.+ fClengthM1[iplan-1]/2.;
329 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 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.;
793ff80c 334 parCha[2] = fgkCaframe/2.;
f7336fa3 335 xpos = 0.;
793ff80c 336 ypos = fClengthM2[iplan-1]/2. - fgkSlenTR2/2.;
337 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 338 gMC->Gsposp("UAFM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
f7336fa3 339
340 // the inner part of the aluminum frame
793ff80c 341 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
342 parCha[1] = fClengthM1[iplan-1]/2. - fgkCathick;
343 parCha[2] = fgkCaframe/2.;
f7336fa3 344 xpos = 0.;
793ff80c 345 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]/2.;
346 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 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);
793ff80c 349 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
350 parCha[1] = fClengthM2[iplan-1]/2. - fgkCathick;
351 parCha[2] = fgkCaframe/2.;
f7336fa3 352 xpos = 0.;
793ff80c 353 ypos = fClengthM2[iplan-1]/2. - fgkSlenTR2/2.;
354 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 355 gMC->Gsposp("UAIM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
f7336fa3 356
357 // the carbon frame
8230f242 358 parCha[0] = fCwidth[iplan-1]/2.;
359 parCha[1] = fClengthM1[iplan-1]/2.;
793ff80c 360 parCha[2] = fgkCcframe/2.;
f7336fa3 361 xpos = 0.;
362 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]/2.;
793ff80c 363 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 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.;
793ff80c 368 parCha[2] = fgkCcframe/2.;
f7336fa3 369 xpos = 0.;
793ff80c 370 ypos = fClengthM2[iplan-1]/2. - fgkSlenTR2/2.;
371 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 372 gMC->Gsposp("UCFM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
f7336fa3 373
374 // the inner part of the carbon frame
793ff80c 375 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
376 parCha[1] = fClengthM1[iplan-1]/2. - fgkCcthick;
377 parCha[2] = fgkCcframe/2.;
f7336fa3 378 xpos = 0.;
379 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1]/2.;
793ff80c 380 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 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);
793ff80c 383 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
384 parCha[1] = fClengthM2[iplan-1]/2. - fgkCcthick;
385 parCha[2] = fgkCcframe/2.;
f7336fa3 386 xpos = 0.;
793ff80c 387 ypos = fClengthM2[iplan-1]/2. - fgkSlenTR2/2.;
388 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 389 gMC->Gsposp("UCIM",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
f7336fa3 390
391 // The outer chambers ---------------------------------------------------------------
392
393 // the aluminum frame
8230f242 394 parCha[0] = fCwidth[iplan-1]/2.;
395 parCha[1] = fClengthO1[iplan-1]/2.;
793ff80c 396 parCha[2] = fgkCaframe/2.;
f7336fa3 397 xpos = 0.;
398 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO1[iplan-1]/2.;
793ff80c 399 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 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.;
793ff80c 404 parCha[2] = fgkCaframe/2.;
f7336fa3 405 xpos = 0.;
793ff80c 406 ypos = fClengthM2[iplan-1] + fClengthO2[iplan-1]/2. - fgkSlenTR2/2.;
407 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 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.;
793ff80c 411 parCha[2] = fgkCaframe/2.;
f7336fa3 412 xpos = 0.;
793ff80c 413 ypos = fClengthO3[iplan-1]/2. - fgkSlenTR3/2.;
414 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 415 gMC->Gsposp("UAFO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
f7336fa3 416
417 // the inner part of the aluminum frame
793ff80c 418 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
419 parCha[1] = fClengthO1[iplan-1]/2. - fgkCathick;
420 parCha[2] = fgkCaframe/2.;
f7336fa3 421 xpos = 0.;
422 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO1[iplan-1]/2.;
793ff80c 423 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 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);
793ff80c 426 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
427 parCha[1] = fClengthO2[iplan-1]/2. - fgkCathick;
428 parCha[2] = fgkCaframe/2.;
f7336fa3 429 xpos = 0.;
793ff80c 430 ypos = fClengthM2[iplan-1] + fClengthO2[iplan-1]/2. - fgkSlenTR2/2.;
431 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 432 gMC->Gsposp("UAIO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
793ff80c 433 parCha[0] = fCwidth[iplan-1]/2. - fgkCathick;
434 parCha[1] = fClengthO3[iplan-1]/2. - fgkCathick;
435 parCha[2] = fgkCaframe/2.;
f7336fa3 436 xpos = 0.;
793ff80c 437 ypos = fClengthO3[iplan-1]/2. - fgkSlenTR3/2.;
438 zpos = fgkCheight - fgkCaframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 439 gMC->Gsposp("UAIO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
f7336fa3 440
441 // the carbon frame
8230f242 442 parCha[0] = fCwidth[iplan-1]/2.;
443 parCha[1] = fClengthO1[iplan-1]/2.;
793ff80c 444 parCha[2] = fgkCcframe/2.;
f7336fa3 445 xpos = 0.;
446 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO1[iplan-1]/2.;
793ff80c 447 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 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.;
793ff80c 452 parCha[2] = fgkCcframe/2.;
f7336fa3 453 xpos = 0.;
793ff80c 454 ypos = fClengthM2[iplan-1] + fClengthO2[iplan-1]/2. - fgkSlenTR2/2.;
455 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 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.;
793ff80c 459 parCha[2] = fgkCcframe/2.;
f7336fa3 460 xpos = 0.;
793ff80c 461 ypos = fClengthO3[iplan-1]/2. - fgkSlenTR3/2.;
462 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 463 gMC->Gsposp("UCFO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"MANY",parCha,kNparCha);
f7336fa3 464
465 // the inner part of the carbon frame
793ff80c 466 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
467 parCha[1] = fClengthO1[iplan-1]/2. - fgkCcthick;
468 parCha[2] = fgkCcframe/2.;
f7336fa3 469 xpos = 0.;
470 ypos = fClengthI[iplan-1]/2. + fClengthM1[iplan-1] + fClengthO1[iplan-1]/2.;
793ff80c 471 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 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);
793ff80c 474 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
475 parCha[1] = fClengthO2[iplan-1]/2. - fgkCcthick;
476 parCha[2] = fgkCcframe/2.;
f7336fa3 477 xpos = 0.;
793ff80c 478 ypos = fClengthM2[iplan-1] + fClengthO2[iplan-1]/2. - fgkSlenTR2/2.;
479 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 480 gMC->Gsposp("UCIO",iplan+2*kNplan,"TRD2",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
793ff80c 481 parCha[0] = fCwidth[iplan-1]/2. - fgkCcthick;
482 parCha[1] = fClengthO3[iplan-1]/2. - fgkCcthick;
483 parCha[2] = fgkCcframe/2.;
f7336fa3 484 xpos = 0.;
793ff80c 485 ypos = fClengthO3[iplan-1]/2. - fgkSlenTR3/2.;
486 zpos = fgkCcframe/2. - fgkSheight/2. + (iplan-1) * (fgkCheight + fgkCspace);
8230f242 487 gMC->Gsposp("UCIO",iplan+4*kNplan,"TRD3",xpos, ypos,zpos,0,"ONLY",parCha,kNparCha);
f7336fa3 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}