]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TRD/AliTRDgeometryDetail.cxx
Introduce parameter class
[u/mrichter/AliRoot.git] / TRD / AliTRDgeometryDetail.cxx
CommitLineData
16bf9884 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$
0a770ac9 18Revision 1.2 2001/11/08 13:13:08 cblume
19Change to MANY for UCFI/M/O and UAFI/M/O
20
a0bc1a05 21Revision 1.1 2001/11/06 17:19:41 cblume
22Add detailed geometry and simple simulator
23
16bf9884 24*/
25
26///////////////////////////////////////////////////////////////////////////////
27// //
0a770ac9 28// Detailed TRD geometry for the spaceframe without holes //
16bf9884 29// //
30///////////////////////////////////////////////////////////////////////////////
31
32#include "AliMC.h"
33
34#include "AliTRDgeometryDetail.h"
35
36ClassImp(AliTRDgeometryDetail)
37
38//_____________________________________________________________________________
39AliTRDgeometryDetail::AliTRDgeometryDetail():AliTRDgeometryFull()
40{
41 //
42 // AliTRDgeometryDetail default constructor
43 //
44
45 Init();
46
47}
48
49//_____________________________________________________________________________
50AliTRDgeometryDetail::~AliTRDgeometryDetail()
51{
52 //
53 // AliTRDgeometryDetail destructor
54 //
55
56}
57
58//_____________________________________________________________________________
59void AliTRDgeometryDetail::Init()
60{
61 //
62 // Initializes the geometry parameter
63 //
64
65 AliTRDgeometryFull::Init();
66
67}
68
69//_____________________________________________________________________________
70void AliTRDgeometryDetail::CreateGeometry(Int_t *idtmed)
71{
72 //
73 // Create the detailed TRD geometry without hole
0a770ac9 74 // including the MCMs and the cooling pipes
75 //
76 //
77 // Names of the TRD volumina (xx = detector number):
78 //
79 // Lower part of the readout chambers (gas volume + radiator)
80 //
81 // UAxx Aluminum frames (Al)
82 // UBxx G10 frames (C)
83 // UCxx Inner volumes (Air)
84 //
85 // Upper part of the readout chambers (readout plane + fee)
86 //
87 // UDxx G10 frames (C)
88 // UExx Inner volumes of the G10 (Air)
89 // UFxx Aluminum frames (Al)
90 // UGxx Inner volumes of the Al (Air)
91 //
92 // Inner material layers
93 //
94 // UHxx Radiator (Rohacell)
95 // UIxx Entrance window (Mylar)
96 // UJxx Drift volume (Xe/CO2)
97 // UKxx Amplification volume (Xe/CO2)
98 // ULxx Pad plane (Cu)
99 // UMxx Support structure (Rohacell)
100 // UNxx FEE + signal lines (Cu)
16bf9884 101 //
16bf9884 102
103 const Int_t kNparTrd = 4;
104 const Int_t kNparCha = 3;
16bf9884 105
0a770ac9 106 Float_t xpos, ypos, zpos;
107
16bf9884 108 Float_t parTrd[kNparTrd];
109 Float_t parCha[kNparCha];
110
0a770ac9 111 Char_t cTagV[5];
112 Char_t cTagM[5];
16bf9884 113
0a770ac9 114 Int_t idrotm;
16bf9884 115
0a770ac9 116 // Rotation matrix
117 gMC->Matrix(idrotm, 0.0, 0.0, 90.0, 90.0, 90.0, 0.0);
16bf9884 118
119 // The TRD mother volume for one sector (Air), full length in z-direction
120 parTrd[0] = fgkSwidth1/2.;
121 parTrd[1] = fgkSwidth2/2.;
122 parTrd[2] = fgkSlenTR1/2.;
123 parTrd[3] = fgkSheight/2.;
0a770ac9 124 gMC->Gsvolu("UTR1","TRD1",idtmed[1302-1],parTrd,kNparTrd);
125
126 // Create the readout volumina
127 CreateReadout(idtmed);
128
129 // Create the volumina for the cooling
130 CreateCooling(idtmed);
16bf9884 131
0a770ac9 132 for (Int_t icham = 0; icham < kNcham; icham++) {
133 for (Int_t iplan = 0; iplan < kNplan; iplan++) {
134
135 Int_t iDet = GetDetectorSec(iplan,icham);
136
137 // The lower part of the readout chambers (gas volume + radiator)
138 // The aluminum frames
139 sprintf(cTagV,"UA%02d",iDet);
140 parCha[0] = fCwidth[iplan]/2.;
141 parCha[1] = fClength[iplan][icham]/2. - fgkHspace/2.;
142 parCha[2] = fgkCraH/2. + fgkCdrH/2.;
143 gMC->Gsvolu(cTagV,"BOX ",idtmed[1301-1],parCha,kNparCha);
144 // The G10 frames
145 sprintf(cTagV,"UB%02d",iDet);
146 parCha[0] = fCwidth[iplan]/2. - fgkCalT;
147 parCha[1] = -1.;
148 parCha[2] = -1.;
149 gMC->Gsvolu(cTagV,"BOX ",idtmed[1307-1],parCha,kNparCha);
150 // The inner part (air)
151 sprintf(cTagV,"UC%02d",iDet);
152 parCha[0] = fCwidth[iplan]/2. - fgkCalT - fgkCclsT;
153 parCha[1] = fClength[iplan][icham]/2. - fgkHspace/2.- fgkCclfT;
154 parCha[2] = -1.;
155 gMC->Gsvolu(cTagV,"BOX ",idtmed[1302-1],parCha,kNparCha);
156
157 // The upper part of the readout chambers (readout plane + fee)
158 // The G10 frames
159 sprintf(cTagV,"UD%02d",iDet);
160 parCha[0] = fCwidth[iplan]/2. + fgkCroW;
161 parCha[1] = fClength[iplan][icham]/2. - fgkHspace/2.;
162 parCha[2] = fgkCamH/2.;
163 gMC->Gsvolu(cTagV,"BOX ",idtmed[1307-1],parCha,kNparCha);
164 // The inner part of the G10 frame (air)
165 sprintf(cTagV,"UE%02d",iDet);
166 parCha[0] = fCwidth[iplan]/2. + fgkCroW - fgkCcuT;
167 parCha[1] = fClength[iplan][icham]/2. - fgkHspace/2.- fgkCcuT;
168 parCha[2] = -1.;
169 gMC->Gsvolu(cTagV,"BOX ",idtmed[1302-1],parCha,kNparCha);
170 // The aluminum frames
171 sprintf(cTagV,"UF%02d",iDet);
172 parCha[0] = fCwidth[iplan]/2. + fgkCroW;
173 parCha[1] = fClength[iplan][icham]/2. - fgkHspace/2.;
174 parCha[2] = fgkCroH/2.;
175 gMC->Gsvolu(cTagV,"BOX ",idtmed[1301-1],parCha,kNparCha);
176 // The inner part of the aluminum frames
177 sprintf(cTagV,"UG%02d",iDet);
178 parCha[0] = fCwidth[iplan]/2. + fgkCroW - fgkCauT;
179 parCha[1] = fClength[iplan][icham]/2. - fgkHspace/2.- fgkCauT;
180 parCha[2] = -1.;
181 gMC->Gsvolu(cTagV,"BOX ",idtmed[1302-1],parCha,kNparCha);
182
183 // The material layers inside the chambers
184 parCha[0] = -1.;
185 parCha[1] = -1.;
186 // Rohacell layer (radiator)
187 parCha[2] = fgkRaThick/2;
188 sprintf(cTagV,"UH%02d",iDet);
189 gMC->Gsvolu(cTagV,"BOX ",idtmed[1315-1],parCha,kNparCha);
190 // Mylar layer (entrance window + HV cathode)
191 parCha[2] = fgkMyThick/2;
192 sprintf(cTagV,"UI%02d",iDet);
193 gMC->Gsvolu(cTagV,"BOX ",idtmed[1308-1],parCha,kNparCha);
194 // Xe/Isobutane layer (drift volume)
195 parCha[2] = fgkDrThick/2.;
196 sprintf(cTagV,"UJ%02d",iDet);
197 gMC->Gsvolu(cTagV,"BOX ",idtmed[1309-1],parCha,kNparCha);
198 // Xe/Isobutane layer (amplification volume)
199 parCha[2] = fgkAmThick/2.;
200 sprintf(cTagV,"UK%02d",iDet);
201 gMC->Gsvolu(cTagV,"BOX ",idtmed[1309-1],parCha,kNparCha);
202 // Cu layer (pad plane)
203 parCha[2] = fgkCuThick/2;
204 sprintf(cTagV,"UL%02d",iDet);
205 gMC->Gsvolu(cTagV,"BOX ",idtmed[1305-1],parCha,kNparCha);
206 // G10 layer (support structure / honeycomb)
207 parCha[2] = fgkSuThick/2;
208 sprintf(cTagV,"UM%02d",iDet);
209 gMC->Gsvolu(cTagV,"BOX ",idtmed[1313-1],parCha,kNparCha);
210 // Cu layer (FEE + signal lines)
211 parCha[2] = fgkFeThick/2;
212 sprintf(cTagV,"UN%02d",iDet);
213 gMC->Gsvolu(cTagV,"BOX ",idtmed[1305-1],parCha,kNparCha);
214
215 // Position the layers in the chambers
216 xpos = 0;
217 ypos = 0;
218 // Lower part
219 // Rohacell layer (radiator)
220 zpos = fgkRaZpos;
221 sprintf(cTagV,"UH%02d",iDet);
222 sprintf(cTagM,"UC%02d",iDet);
223 gMC->Gspos(cTagV,1,cTagM,xpos,ypos,zpos,0,"ONLY");
224 // Mylar layer (entrance window + HV cathode)
225 zpos = fgkMyZpos;
226 sprintf(cTagV,"UI%02d",iDet);
227 sprintf(cTagM,"UC%02d",iDet);
228 gMC->Gspos(cTagV,1,cTagM,xpos,ypos,zpos,0,"ONLY");
229 // Xe/Isobutane layer (drift volume)
230 zpos = fgkDrZpos;
231 sprintf(cTagV,"UJ%02d",iDet);
232 sprintf(cTagM,"UC%02d",iDet);
233 gMC->Gspos(cTagV,1,cTagM,xpos,ypos,zpos,0,"ONLY");
234 // Upper part
235 // Xe/Isobutane layer (amplification volume)
236 zpos = fgkAmZpos;
237 sprintf(cTagV,"UK%02d",iDet);
238 sprintf(cTagM,"UE%02d",iDet);
239 gMC->Gspos(cTagV,1,cTagM,xpos,ypos,zpos,0,"ONLY");
240 // Readout part
241 // Cu layer (pad plane)
242 zpos = fgkCuZpos;
243 sprintf(cTagV,"UL%02d",iDet);
244 sprintf(cTagM,"UG%02d",iDet);
245 gMC->Gspos(cTagV,1,cTagM,xpos,ypos,zpos,0,"ONLY");
246 // G10 layer (support structure)
247 zpos = fgkSuZpos;
248 sprintf(cTagV,"UM%02d",iDet);
249 sprintf(cTagM,"UG%02d",iDet);
250 gMC->Gspos(cTagV,1,cTagM,xpos,ypos,zpos,0,"ONLY");
251 // Cu layer (FEE + signal lines)
252 zpos = fgkFeZpos;
253 sprintf(cTagV,"UN%02d",iDet);
254 sprintf(cTagM,"UG%02d",iDet);
255 gMC->Gspos(cTagV,1,cTagM,xpos,ypos,zpos,0,"ONLY");
256
257 // Position the inner volumes of the chambers in the frames
258 xpos = 0.0;
259 ypos = 0.0;
260 zpos = 0.0;
261 // The inside of the lower G10 frame
262 sprintf(cTagV,"UC%02d",iDet);
263 sprintf(cTagM,"UB%02d",iDet);
264 gMC->Gspos(cTagV,1,cTagM,xpos,ypos,zpos,0,"ONLY");
265 // The lower G10 frame inside the aluminum frame
266 sprintf(cTagV,"UB%02d",iDet);
267 sprintf(cTagM,"UA%02d",iDet);
268 gMC->Gspos(cTagV,1,cTagM,xpos,ypos,zpos,0,"ONLY");
269 // The inside of the upper G10 frame
270 sprintf(cTagV,"UE%02d",iDet);
271 sprintf(cTagM,"UD%02d",iDet);
272 gMC->Gspos(cTagV,1,cTagM,xpos,ypos,zpos,0,"ONLY");
273 // The inside of the upper aluminum frame
274 sprintf(cTagV,"UG%02d",iDet);
275 sprintf(cTagM,"UF%02d",iDet);
276 gMC->Gspos(cTagV,1,cTagM,xpos,ypos,zpos,0,"ONLY");
277
278 // Position the frames of the chambers in the TRD mother volume
279 xpos = 0.;
280 ypos = - fClength[iplan][0] - fClength[iplan][1] - fClength[iplan][2]/2.;
281 for (Int_t ic = 0; ic < icham; ic++) {
282 ypos += fClength[iplan][ic];
283 }
284 ypos += fClength[iplan][icham]/2.;
285 zpos = fgkCraH/2. + fgkCdrH/2. - fgkSheight/2. + iplan * (fgkCH + fgkVspace);
286 // The lower aluminum frame, radiator + drift region
287 sprintf(cTagV,"UA%02d",iDet);
288 gMC->Gspos(cTagV,1,"UTR1",xpos,ypos,zpos,0,"ONLY");
289 // The upper G10 frame, amplification region
290 sprintf(cTagV,"UD%02d",iDet);
291 zpos += fgkCamH/2. + fgkCraH/2. + fgkCdrH/2.;
292 gMC->Gspos(cTagV,1,"UTR1",xpos,ypos,zpos,0,"ONLY");
293 // The upper aluminum frame
294 sprintf(cTagV,"UF%02d",iDet);
295 zpos += fgkCroH/2. + fgkCamH/2.;
296 gMC->Gspos(cTagV,1,"UTR1",xpos,ypos,zpos,0,"ONLY");
297
298 // Position the MCM volumina
299 PositionReadout(iplan,icham);
300
301 // Position the volumina for the cooling
302 PositionCooling(iplan,icham,idrotm);
303
304 }
16bf9884 305 }
306
307 xpos = 0.;
308 ypos = 0.;
309 zpos = 0.;
0a770ac9 310 gMC->Gspos("UTR1",1,"BTR1",xpos,ypos,zpos,0,"ONLY");
311 gMC->Gspos("UTR1",2,"BTR2",xpos,ypos,zpos,0,"ONLY");
312 gMC->Gspos("UTR1",3,"BTR3",xpos,ypos,zpos,0,"ONLY");
16bf9884 313
314}
315
316//_____________________________________________________________________________
317void AliTRDgeometryDetail::CreateReadout(Int_t *idtmed)
318{
319 //
320 // Create the volumina of the readout electronics
321 //
322
323 const Int_t kNparBox = 3;
324
325 Float_t parBox[kNparBox];
326 Float_t xpos = 0.0;
327 Float_t ypos = 0.0;
328 Float_t zpos = 0.0;
329
330 // The mother volume for the MCMs + connectors (air)
331 parBox[0] = 3.0/2.;
332 parBox[1] = 3.4/2.;
333 parBox[2] = 0.5/2.;
334 gMC->Gsvolu("UMCM","BOX",idtmed[1302-1],parBox,kNparBox);
335
336 // The MCM carrier G10 layer
337 parBox[0] = 3.0/2.;
338 parBox[1] = 3.0/2.;
339 parBox[2] = 0.1/2.;
340 gMC->Gsvolu("UMC1","BOX",idtmed[1319-1],parBox,kNparBox);
341 // The MCM carrier Cu layer
342 parBox[0] = 3.0/2.;
343 parBox[1] = 3.0/2.;
344 parBox[2] = 0.0034/2.;
345 gMC->Gsvolu("UMC2","BOX",idtmed[1318-1],parBox,kNparBox);
346 // The MCM carrier Sn layer
347 parBox[0] = 3.0/2.;
348 parBox[1] = 3.0/2.;
349 parBox[2] = 0.004/2.;
350 gMC->Gsvolu("UMC3","BOX",idtmed[1317-1],parBox,kNparBox);
351 // The MCM carrier Al layer
352 parBox[0] = 3.0/2.;
353 parBox[1] = 3.0/2.;
354 parBox[2] = 0.05/2.;
355 gMC->Gsvolu("UMC4","BOX",idtmed[1316-1],parBox,kNparBox);
356
357 // The epoxy of chip no.1
358 parBox[0] = 0.548/2.;
359 parBox[1] = 0.548/2.;
360 parBox[2] = 0.1/2.;
361 gMC->Gsvolu("UCE1","BOX",idtmed[1321-1],parBox,kNparBox);
362 // The silicon of chip no.1
363 parBox[0] = 0.316/2.;
364 parBox[1] = 0.316/2.;
365 parBox[2] = 0.03/2.;
366 gMC->Gsvolu("UCS1","BOX",idtmed[1320-1],parBox,kNparBox);
367
368 // The epoxy of chip no.2
369 parBox[0] = 1.549/2.;
370 parBox[1] = 1.549/2.;
371 parBox[2] = 0.1/2.;
372 gMC->Gsvolu("UCE2","BOX",idtmed[1321-1],parBox,kNparBox);
373 // The silicon of chip no.2
374 parBox[0] = 0.894/2.;
375 parBox[1] = 0.894/2.;
376 parBox[2] = 0.03/2.;
377 gMC->Gsvolu("UCS2","BOX",idtmed[1320-1],parBox,kNparBox);
378
379 // The PE of the connector
380 parBox[0] = 2.25/2.;
381 parBox[1] = 0.4/2.;
382 parBox[2] = 0.3/2.;
383 gMC->Gsvolu("UCN1","BOX",idtmed[1322-1],parBox,kNparBox);
384 // The Cu of the connector
385 parBox[0] = 2.25/2.;
386 parBox[1] = 0.4/2.;
387 parBox[2] = 0.005/2.;
388 gMC->Gsvolu("UCN2","BOX",idtmed[1323-1],parBox,kNparBox);
389
390 xpos = 0.0;
391 ypos = -0.4/2.;
392 zpos = -0.25 + 0.1/2.;
393 gMC->Gspos("UMC1",1,"UMCM",xpos,ypos,zpos,0,"ONLY");
394 zpos += 0.1/2. + 0.0034/2.;
395 gMC->Gspos("UMC2",1,"UMCM",xpos,ypos,zpos,0,"ONLY");
396 zpos += 0.0034/2 + 0.004/2.;
397 gMC->Gspos("UMC3",1,"UMCM",xpos,ypos,zpos,0,"ONLY");
398 zpos += 0.004/2 + 0.05/2.;
399 gMC->Gspos("UMC4",1,"UMCM",xpos,ypos,zpos,0,"ONLY");
400 zpos += 0.05/2. + 0.1/2.;
401 xpos = 1.0;
402 gMC->Gspos("UCE1",1,"UMCM",xpos,ypos,zpos,0,"ONLY");
403 xpos = -0.5;
404 gMC->Gspos("UCE2",1,"UMCM",xpos,ypos,zpos,0,"ONLY");
405 zpos += 0.1/2. + 0.03/2.;
406 xpos = 1.0;
407 gMC->Gspos("UCS1",1,"UMCM",xpos,ypos,zpos,0,"ONLY");
408 xpos = -0.5;
409 gMC->Gspos("UCS2",1,"UMCM",xpos,ypos,zpos,0,"ONLY");
410 xpos = 0.0;
411 ypos = 3.4/2. - 0.4/2.;
412 zpos = -0.25 + 0.3/2.;
413 gMC->Gspos("UCN1",1,"UMCM",xpos,ypos,zpos,0,"ONLY");
414 zpos += 0.3/2. + 0.005/2.;
415 gMC->Gspos("UCN2",1,"UMCM",xpos,ypos,zpos,0,"ONLY");
416
417}
418
419//_____________________________________________________________________________
420void AliTRDgeometryDetail::PositionReadout(Int_t ipla, Int_t icha)
421{
422 //
423 // Position the volumina inside the readout mother volume
424 //
425
0a770ac9 426 const Int_t kNmcmChannel = 18;
16bf9884 427
428 Int_t nMCMrow = GetRowMax(ipla,icha,0);
0a770ac9 429 Int_t nMCMcol = GetColMax(ipla) / kNmcmChannel;
430
431 Float_t xSize = (GetChamberWidth(ipla) - 2.*fgkCpadW)
432 / ((Float_t) nMCMcol);
433 Float_t ySize = (GetChamberLength(ipla,icha) - 2.*fgkRpadW)
434 / ((Float_t) nMCMrow);
435 Float_t x0 = GetCol0(ipla);
436 Float_t y0 = GetRow0(ipla,icha,0);
16bf9884 437
438 Int_t iCopy = GetDetector(ipla,icha,0) * 1000;
439 for (Int_t iMCMrow = 0; iMCMrow < nMCMrow; iMCMrow++) {
440 for (Int_t iMCMcol = 0; iMCMcol < nMCMcol; iMCMcol++) {
441 iCopy++;
442 Float_t xpos = (0.5 + iMCMcol) * xSize + x0;
443 Float_t ypos = (0.5 + iMCMrow) * ySize + y0;
0a770ac9 444 Float_t zpos = fgkCH - fgkSheight/2. + 0.5/2.
445 + ipla * (fgkCH + fgkVspace);
446 gMC->Gspos("UMCM",iCopy,"UTR1",xpos,ypos,zpos,0,"ONLY");
16bf9884 447 }
448 }
449
450}
451
452//_____________________________________________________________________________
453void AliTRDgeometryDetail::CreateCooling(Int_t *idtmed)
454{
455 //
456 // Create the volumina of the cooling
457 //
458
0a770ac9 459 const Int_t kNparTube = 3;
16bf9884 460
0a770ac9 461 Float_t parTube[kNparTube];
462 Float_t xpos;
463 Float_t ypos;
464 Float_t zpos;
16bf9884 465
466 // The aluminum pipe for the cooling
0a770ac9 467 parTube[0] = 0.0;
468 parTube[1] = 0.0;
469 parTube[2] = 0.0;
470 gMC->Gsvolu("UCOA","TUBE",idtmed[1324-1],parTube,0);
16bf9884 471
472 // The cooling water
0a770ac9 473 parTube[0] = 0.0;
474 parTube[1] = 0.2/2.;
475 parTube[2] = -1.;
476 gMC->Gsvolu("UCOW","TUBE",idtmed[1314-1],parTube,kNparTube);
477
478 // Water inside the cooling pipe
479 xpos = 0.0;
480 ypos = 0.0;
481 zpos = 0.0;
16bf9884 482 gMC->Gspos("UCOW",1,"UCOA",xpos,ypos,zpos,0,"ONLY");
483
484}
485
486//_____________________________________________________________________________
0a770ac9 487void AliTRDgeometryDetail::PositionCooling(Int_t ipla, Int_t icha, Int_t idrotm)
16bf9884 488{
489 //
490 // Position the volumina of the cooling
491 //
492
0a770ac9 493 const Int_t kNpar = 3;
16bf9884 494
495 Float_t par[kNpar];
0a770ac9 496 Float_t xpos;
497 Float_t ypos;
498 Float_t zpos;
16bf9884 499
500 Int_t iCopy = GetDetector(ipla,icha,0) * 100;
501 Int_t nMCMrow = GetRowMax(ipla,icha,0);
502
0a770ac9 503 Float_t ySize = (GetChamberLength(ipla,icha) - 2.*fgkRpadW)
504 / ((Float_t) nMCMrow);
505 Float_t y0 = GetRow0(ipla,icha,0);
16bf9884 506
507 // Position the cooling pipes
508 for (Int_t iMCMrow = 0; iMCMrow < nMCMrow; iMCMrow++) {
509
510 xpos = 0.0;
0a770ac9 511 ypos = (0.5 + iMCMrow) * ySize + y0 - 1.9;
512 zpos = fgkCH - fgkSheight/2. + 0.5/2.
513 + ipla * (fgkCH + fgkVspace);
514 par[0] = 0.0;
16bf9884 515 par[1] = 0.3/2.;
0a770ac9 516 par[2] = GetChamberWidth(ipla)/2.+ fgkCroW;
517 gMC->Gsposp("UCOA",iCopy+iMCMrow,"UTR1",xpos,ypos,zpos
518 ,idrotm,"ONLY",par,kNpar);
16bf9884 519
520 }
521
522}