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