SPD new geometry added to Hybrid V11
[u/mrichter/AliRoot.git] / ITS / AliITSv11Hybrid.cxx
CommitLineData
108bd0fe 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
8f8273a4 16//========================================================================
17//
18// Geometry of the Inner Tracking System
19//
20// This geometry is a mix between the old geometry (originally coded
21// in AliITSvPPRasymmFMD) and the new TGeo geometry (v11).
22// The flags which indicate whether the old or the new part is used
23// is set in AliITSInitGeometry.cxx
24//
25// Ludovic Gaudichet (gaudichet@to.infn.it)
26//
27//========================================================================
28
29
012f0f4c 30// $Id$
31
32// $Log$
dbfc6ce6 33// Revision 1.7 2007/08/24 14:32:57 hristov
34// Introduction of SPD half-stave volumes, cleaning and new code (in relation to new SPD geometry) in AliITSv11Hybrid (Ludovic)
35//
8f8273a4 36// Revision 1.6 2007/07/27 08:12:39 morsch
37// Write all track references into the same branch.
38//
e6add757 39// Revision 1.5 2007/06/28 10:17:25 masera
40// Introduction of the new SSD geometry in simulation (AliITSv11Hybrid) and suppression of overlaps between old and new parts
41//
bf210566 42// Revision 1.4 2007/05/09 20:40:41 masera
43// Bug fix (V11Hybrid geometry)
44//
75473741 45// Revision 1.3 2007/05/08 16:57:42 masera
46// Updates concerning the geometry: versioning system, new V11hybrid version, bug fixes (B.Nilsend and L. Gaudichet
47//
108bd0fe 48
108bd0fe 49
50#include <TClonesArray.h>
51#include <TGeometry.h>
52#include <TLorentzVector.h>
53#include <TGeoMatrix.h>
54#include <TGeoPhysicalNode.h>
55#include <TArrayD.h>
56#include <TArrayF.h>
57#include <TString.h>
58#include <TNode.h>
59#include <TTUBE.h>
60#include <TGeoManager.h>
61#include <TGeoVolume.h>
62#include <TVirtualMC.h>
63
64#include "AliITS.h"
65#include "AliITSDetTypeSim.h"
66#include "AliITSgeom.h"
67#include "AliITSgeomSDD.h"
68#include "AliITSgeomSPD.h"
69#include "AliITSgeomSSD.h"
70#include "AliITShit.h"
71#include "AliITSresponseSDD.h"
72#include "AliITSCalibrationSDD.h"
73#include "AliITSCalibrationSPD.h"
74#include "AliITSCalibrationSSD.h"
75#include "AliITSsegmentationSDD.h"
76#include "AliITSsegmentationSPD.h"
77#include "AliITSsegmentationSSD.h"
78#include "AliITSv11Hybrid.h"
79#include "AliLog.h"
80#include "AliMC.h"
81#include "AliMagF.h"
82#include "AliRun.h"
83#include "AliTrackReference.h"
84#include "AliITSInitGeometry.h"
8f8273a4 85#include "AliITSv11GeometrySPD.h"
108bd0fe 86#include "AliITSv11GeometrySDD.h"
bf210566 87#include "AliITSv11GeometrySSD.h"
108bd0fe 88
89
108bd0fe 90ClassImp(AliITSv11Hybrid)
91
92//______________________________________________________________________
93AliITSv11Hybrid::AliITSv11Hybrid():
94 AliITS(),
95 fGeomDetOut(kFALSE),
96 fGeomDetIn(kFALSE),
97 fByThick(kTRUE),
98 fMajorVersion(IsVersion()),
99 fMinorVersion(-1),
100 fDet1(0),
101 fDet2(0),
102 fChip1(0),
103 fChip2(0),
104 fRails(0),
105 fFluid(0),
106 fIDMother(0),
012f0f4c 107 fInitGeom((AliITSVersion_t)fMajorVersion,fMinorVersion),
8f8273a4 108 fSPDgeom(0),
bf210566 109 fSDDgeom(0),
110 fSSDgeom(0)
108bd0fe 111 {
012f0f4c 112 // Standard default constructor
108bd0fe 113 // Inputs:
114 // none.
115 // Outputs:
116 // none.
117 // Return:
118 // none.
108bd0fe 119}
8f8273a4 120
121//______________________________________________________________________
122AliITSv11Hybrid::AliITSv11Hybrid(const char *title)
123 : AliITS("ITS", title),
124 fGeomDetOut(kFALSE),
125 fGeomDetIn(kFALSE),
126 fByThick(kTRUE),
127 fMajorVersion(IsVersion()),
128 fMinorVersion(1),
129 fDet1(200.0),
130 fDet2(200.0),
131 fChip1(150.0),
132 fChip2(150.0),
133 fRails(0),
134 fFluid(1),
135 fIDMother(0),
136 fInitGeom((AliITSVersion_t)fMajorVersion,fMinorVersion),
137 fSPDgeom(0),
138 fSDDgeom(0),
139 fSSDgeom(0) {
140 // Standard constructor for the v11Hybrid geometry.
141 // Inputs:
142 // const char * title Arbitrary title
143 // Outputs:
144 // none.
145 // Return:
146 // none.
147 Int_t i;
148
149 fSPDgeom = new AliITSv11GeometrySPD();
150 fSDDgeom = new AliITSv11GeometrySDD(0);
151 fSSDgeom = new AliITSv11GeometrySSD();
152
153 fIdN = 6;
154 fIdName = new TString[fIdN];
155
156 if (AliITSInitGeometry::SPDIsTGeoNative()) {
dbfc6ce6 157 fIdName[0] = fSPDgeom->GetSenstiveVolumeName1();
158 fIdName[1] = fSPDgeom->GetSenstiveVolumeName2();
8f8273a4 159 } else {
160 fIdName[0] = "ITS1";
161 fIdName[1] = "ITS2";
162 }
163
164 if (AliITSInitGeometry::SDDIsTGeoNative()) {
165 fIdName[2] = fSDDgeom->GetSenstiveVolumeName3();
166 fIdName[3] = fSDDgeom->GetSenstiveVolumeName4();
167 } else {
168 fIdName[2] = "ITS3";
169 fIdName[3] = "ITS4";
170 }
171
172 if (AliITSInitGeometry::SSDIsTGeoNative()) {
173 fIdName[4] = fSSDgeom->GetSenstiveVolumeName5();
174 fIdName[5] = fSSDgeom->GetSenstiveVolumeName6();
175 } else {
176 fIdName[4] = "ITS5";
177 fIdName[5] = "ITS6";
178 }
179
180 fIdSens = new Int_t[fIdN];
181 for(i=0;i<fIdN;i++) fIdSens[i] = 0;
182 SetThicknessDet1();
183 SetThicknessDet2();
184 SetThicknessChip1();
185 SetThicknessChip2();
186 SetDensityServicesByThickness();
187
188 fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.euc";
189 strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det",60);
190 strncpy(fRead,fEuclidGeomDet,60);
191 strncpy(fWrite,fEuclidGeomDet,60);
192 strncpy(fRead,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det",60);
193}
194
108bd0fe 195//______________________________________________________________________
196AliITSv11Hybrid::AliITSv11Hybrid(const char *name, const char *title)
197 : AliITS("ITS", title),
198 fGeomDetOut(kFALSE),
199 fGeomDetIn(kFALSE),
200 fByThick(kTRUE),
201 fMajorVersion(IsVersion()),
8f8273a4 202 fMinorVersion(1),
203 fDet1(200.0),
204 fDet2(200.0),
205 fChip1(150.0),
206 fChip2(150.0),
108bd0fe 207 fRails(0),
8f8273a4 208 fFluid(1),
108bd0fe 209 fIDMother(0),
012f0f4c 210 fInitGeom((AliITSVersion_t)fMajorVersion,fMinorVersion),
8f8273a4 211 fSPDgeom(0),
bf210566 212 fSDDgeom(0),
213 fSSDgeom(0) {
012f0f4c 214 // Standard constructor for the v11Hybrid geometry.
108bd0fe 215 // Inputs:
216 // const char * name Ignored, set to "ITS"
217 // const char * title Arbitrary title
218 // Outputs:
219 // none.
220 // Return:
221 // none.
222 Int_t i;
bf210566 223
8f8273a4 224 fSPDgeom = new AliITSv11GeometrySPD();
bf210566 225 fSDDgeom = new AliITSv11GeometrySDD(0);
226 fSSDgeom = new AliITSv11GeometrySSD();
108bd0fe 227
228 fIdN = 6;
229 fIdName = new TString[fIdN];
8f8273a4 230
231 (void) name; // removes warning message
232
233 if (AliITSInitGeometry::SPDIsTGeoNative()) {
dbfc6ce6 234 fIdName[0] = fSPDgeom->GetSenstiveVolumeName1();
235 fIdName[1] = fSPDgeom->GetSenstiveVolumeName2();
8f8273a4 236 } else {
237 fIdName[0] = "ITS1";
238 fIdName[1] = "ITS2";
239 }
240
108bd0fe 241 if (AliITSInitGeometry::SDDIsTGeoNative()) {
242 fIdName[2] = fSDDgeom->GetSenstiveVolumeName3();
243 fIdName[3] = fSDDgeom->GetSenstiveVolumeName4();
244 } else {
245 fIdName[2] = "ITS3";
246 fIdName[3] = "ITS4";
247 }
bf210566 248
249 if (AliITSInitGeometry::SSDIsTGeoNative()) {
250 fIdName[4] = fSSDgeom->GetSenstiveVolumeName5();
251 fIdName[5] = fSSDgeom->GetSenstiveVolumeName6();
252 } else {
253 fIdName[4] = "ITS5";
254 fIdName[5] = "ITS6";
255 }
108bd0fe 256
108bd0fe 257 fIdSens = new Int_t[fIdN];
258 for(i=0;i<fIdN;i++) fIdSens[i] = 0;
259 SetThicknessDet1();
260 SetThicknessDet2();
261 SetThicknessChip1();
262 SetThicknessChip2();
263 SetDensityServicesByThickness();
264
265 fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.euc";
266 strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det",60);
267 strncpy(fRead,fEuclidGeomDet,60);
268 strncpy(fWrite,fEuclidGeomDet,60);
269 strncpy(fRead,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det",60);
108bd0fe 270}
8f8273a4 271
108bd0fe 272//______________________________________________________________________
273AliITSv11Hybrid::~AliITSv11Hybrid() {
274 // Standard destructor
275 // Inputs:
276 // none.
277 // Outputs:
278 // none.
279 // Return:
280 // none.
8f8273a4 281 delete fSPDgeom;
108bd0fe 282 delete fSDDgeom;
bf210566 283 delete fSSDgeom;
108bd0fe 284}
285
286//______________________________________________________________________
bf210566 287void AliITSv11Hybrid::SetT2Lmatrix(const char *name, Double_t yShift,
288 Bool_t yFlip, Bool_t yRot180)
108bd0fe 289 const {
290
291 //
292 // Creates the TGeo Local to Tracking transformation matrix
293 // and sends it to the corresponding TGeoPNEntry
294 //
295 // This function is used in AddAlignableVolumes()
296
297 TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntry(name);
298 const char *path = alignableEntry->GetTitle();
299
300 if (!gGeoManager->cd(path))
301 AliFatal(Form("Volume path %s not valid!",path));
302 TGeoHMatrix* globMatrix = gGeoManager->GetCurrentMatrix();
303
304 Double_t *gtrans = globMatrix->GetTranslation(), rotMatrix[9];
305 memcpy(&rotMatrix[0], globMatrix->GetRotationMatrix(), 9*sizeof(Double_t));
bf210566 306 Double_t al = TMath::ATan2(rotMatrix[1],rotMatrix[0]);
333c948a 307 if (yRot180) {
bf210566 308 al = TMath::ATan2(rotMatrix[1],-rotMatrix[0]);
333c948a 309 }
108bd0fe 310
311 TGeoHMatrix *matLtoT = new TGeoHMatrix;
bf210566 312 matLtoT->SetDx( gtrans[0]*TMath::Cos(al)+gtrans[1]*TMath::Sin(al) ); // translation
108bd0fe 313 matLtoT->SetDy( yShift );
314 matLtoT->SetDz(-gtrans[2]);
315 rotMatrix[0]= 0; rotMatrix[1]= 1; rotMatrix[2]= 0; // + rotation
316 rotMatrix[3]= 1; rotMatrix[4]= 0; rotMatrix[5]= 0;
317 rotMatrix[6]= 0; rotMatrix[7]= 0; rotMatrix[8]=-1;
333c948a 318 if (yFlip) rotMatrix[3] = -1; // flipping in y (for SPD1)
319
320 if (yRot180) { // rotation of pi around the axis perpendicular to the wafer
321 matLtoT->SetDy( -yShift );
322 rotMatrix[3] = -1;
8f8273a4 323 if (yFlip) rotMatrix[3] = 1; // flipping in y (for SPD1)
333c948a 324 matLtoT->SetDz(gtrans[2]);
325 rotMatrix[8]=1;
326 }
108bd0fe 327
328 TGeoRotation rot;
329 rot.SetMatrix(rotMatrix);
330 matLtoT->MultiplyLeft(&rot);
331 TGeoHMatrix *matTtoL = new TGeoHMatrix(matLtoT->Inverse());
332 delete matLtoT;
333 alignableEntry->SetMatrix(matTtoL);
334}
bf210566 335
108bd0fe 336//______________________________________________________________________
337void AliITSv11Hybrid::AddAlignableVolumes() const
338{
339 //
340 // Creates entries for alignable volumes associating the symbolic volume
341 // name with the corresponding volume path.
342 //
343 // Records in the alignable entries the transformation matrices converting
344 // TGeo local coordinates (in the RS of alignable volumes) to the tracking
345 // system
346 // For this, this function has to run before the misalignment because we
347 // are using the ideal positions in the AliITSgeom object.
348
349 AliInfo("Add ITS alignable volumes");
350
351 if (!gGeoManager) {
352 AliFatal("TGeoManager doesn't exist !");
353 return;
354 }
355
356 if( !gGeoManager->SetAlignableEntry("ITS","ALIC_1/ITSV_1") )
357 AliFatal("Unable to set alignable entry!!");
358
108bd0fe 359 TString strSPD = "ITS/SPD";
360 TString strSDD = "ITS/SDD";
361 TString strSSD = "ITS/SSD";
362 TString strStave = "/Stave";
8f8273a4 363 TString strHalfStave = "/HalfStave";
108bd0fe 364 TString strLadder = "/Ladder";
365 TString strSector = "/Sector";
366 TString strSensor = "/Sensor";
367 TString strEntryName1;
368 TString strEntryName2;
369 TString strEntryName3;
8f8273a4 370 TString strEntryName4;
108bd0fe 371
8f8273a4 372 //===== SPD layers =====
373 if (AliITSInitGeometry::SPDIsTGeoNative()) { // new SPD geometry
374
375 TString str0 = "ALIC_1/ITSV_1/ITSSPDCarbonFiberSectorV_";
376 TString str1 = "/ITSSPDSensitiveVirtualvolumeM0_1/LAY1_STAVE_";
377 TString str1Bis = "/HALF-STAVE";
378 TString str1Tierce = "_1";
379 TString str2 = "/LAY1_LADDER_";
108bd0fe 380
381 TString sector;
382 TString stave;
8f8273a4 383 TString halfStave;
108bd0fe 384 TString module;
385
8f8273a4 386 for(Int_t cSect = 0; cSect<10; cSect++) {
108bd0fe 387
388 sector = str0;
8f8273a4 389 sector += cSect+1; // this is one full sector
108bd0fe 390 strEntryName1 = strSPD;
391 strEntryName1 += 0;
392 strEntryName1 += strSector;
8f8273a4 393 strEntryName1 += cSect;
108bd0fe 394 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),sector.Data()))
395 AliFatal("Unable to set alignable entry!!");
396 //printf("%s == %s\n",strEntryName1.Data(),sector.Data());
397
8f8273a4 398 for(Int_t cStave=0; cStave<2; cStave++) {
108bd0fe 399
400 stave = sector;
401 stave += str1;
8f8273a4 402 stave += cStave;
108bd0fe 403 strEntryName2 = strEntryName1;
404 strEntryName2 += strStave;
8f8273a4 405 strEntryName2 += cStave;
406
407 for(Int_t cHS=0; cHS<2; cHS++) {
408
409 halfStave = stave;
410 halfStave += str1Bis;
411 halfStave += cHS;
412 halfStave += str1Tierce;
413 strEntryName3 = strEntryName2;
414 strEntryName3 += strHalfStave;
415 strEntryName3 += cHS;
108bd0fe 416
8f8273a4 417 if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(),halfStave.Data()))
418 AliFatal(Form("Unable to set alignable entry!! %s :: %s",strEntryName3.Data(),halfStave.Data()));
419
420 for(Int_t cLad=0; cLad<2; cLad++) {
108bd0fe 421
8f8273a4 422 module = halfStave;
423 module += str2;
424 module += cLad+cHS*2;
425 strEntryName4 = strEntryName3;
426 strEntryName4 += strLadder;
427 strEntryName4 += cLad+cHS*2;
428 if(!gGeoManager->SetAlignableEntry(strEntryName4.Data(),module.Data()))
429 AliFatal("Unable to set alignable entry!!");
430
431 SetT2Lmatrix(strEntryName4.Data(), -0.0081, kTRUE, kTRUE);
dbfc6ce6 432 // -0.0081 is the shift between the centers of alignable and sensitive volumes
433 // It is directly extracted from the new SPD geometry
434
8f8273a4 435 }
436 }
437 }
438 }
439
440 str1 = "/ITSSPDSensitiveVirtualvolumeM0_1/LAY2_STAVE_";
441 str2 = "/LAY2_LADDER_";
442
443 for(Int_t cSect = 0; cSect<10; cSect++) {
444
445 sector = str0;
446 sector += cSect+1; // this is one full sector
447 strEntryName1 = strSPD;
448 strEntryName1 += 1;
449 strEntryName1 += strSector;
450 strEntryName1 += cSect;
451
452 for(Int_t cStave=0; cStave<4; cStave++) {
453
454 stave = sector;
455 stave += str1;
456 stave += cStave;
457 strEntryName2 = strEntryName1;
458 strEntryName2 += strStave;
459 strEntryName2 += cStave;
460
461 for(Int_t cHS=0; cHS<2; cHS++) {
462
463 halfStave = stave;
464 halfStave += str1Bis;
465 halfStave += cHS;
466 halfStave += str1Tierce;
108bd0fe 467 strEntryName3 = strEntryName2;
8f8273a4 468 strEntryName3 += strHalfStave;
469 strEntryName3 += cHS;
470
471 if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(),halfStave.Data()))
108bd0fe 472 AliFatal("Unable to set alignable entry!!");
108bd0fe 473
8f8273a4 474 for(Int_t cLad=0; cLad<2; cLad++) {
475
476 module = halfStave;
477 module += str2;
478 module += cLad+cHS*2;
479 strEntryName4 = strEntryName3;
480 strEntryName4 += strLadder;
481 strEntryName4 += cLad+cHS*2;
482 if(!gGeoManager->SetAlignableEntry(strEntryName4.Data(),module.Data()))
483 AliFatal("Unable to set alignable entry!!");
484
485 SetT2Lmatrix(strEntryName4.Data(), -0.0081, kFALSE);
486 }
108bd0fe 487 }
488 }
489 }
108bd0fe 490
8f8273a4 491 } else { // else old SPD geometry
492
108bd0fe 493 TString str0 = "ALIC_1/ITSV_1/ITSD_1/IT12_1/I12B_";
8f8273a4 494 TString str1 = "/I10B_";
495 TString str1Bis = "/L1H-STAVE";
496 TString str1Tierce = "_1";
497 TString str2 = "/I107_";
108bd0fe 498
499 TString sector;
500 TString stave;
8f8273a4 501 TString halfStave;
108bd0fe 502 TString module;
503
8f8273a4 504 for(Int_t cSect = 0; cSect<10; cSect++) {
108bd0fe 505
506 sector = str0;
8f8273a4 507 sector += cSect+1; // this is one full sector
108bd0fe 508 strEntryName1 = strSPD;
8f8273a4 509 strEntryName1 += 0;
108bd0fe 510 strEntryName1 += strSector;
8f8273a4 511 strEntryName1 += cSect;
512 //printf("%s == %s\n",strEntryName1.Data(),sector.Data());
108bd0fe 513 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),sector.Data()))
514 AliFatal("Unable to set alignable entry!!");
108bd0fe 515
8f8273a4 516 for(Int_t cStave = 0; cStave<2; cStave++) {
108bd0fe 517
518 stave = sector;
519 stave += str1;
8f8273a4 520 stave += cStave+1;
108bd0fe 521 strEntryName2 = strEntryName1;
522 strEntryName2 += strStave;
8f8273a4 523 strEntryName2 += cStave;
108bd0fe 524 //printf("%s == %s\n",strEntryName2.Data(),stave.Data()); // this is a stave
525
8f8273a4 526 for(Int_t cHS=0; cHS<2; cHS++) {
527
528 halfStave = stave;
529 halfStave += str1Bis;
530 halfStave += cHS;
531 halfStave += str1Tierce;
108bd0fe 532 strEntryName3 = strEntryName2;
8f8273a4 533 strEntryName3 += strHalfStave;
534 strEntryName3 += cHS;
535 //printf("%s == %s\n",strEntryName3.Data(),halfStave.Data()); // this is a half-stave
536 if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(),halfStave.Data()))
537 AliFatal("Unable to set alignable entry!!");
108bd0fe 538
8f8273a4 539 for(Int_t cLadder = 0; cLadder<2; cLadder++) {
540
541 module = halfStave;
542 module += str2;
543 module += cLadder+cHS*2+1;
544 strEntryName4 = strEntryName3;
545 strEntryName4 += strLadder;
546 strEntryName4 += cLadder+cHS*2;
547 //printf("%s == %s\n",strEntryName4.Data(),module.Data());
548 if(!gGeoManager->SetAlignableEntry(strEntryName4.Data(),module.Data()))
549 AliFatal("Unable to set alignable entry!!");
550
551 SetT2Lmatrix(strEntryName4.Data(), -fChip1*0.0001/2., kTRUE);
552 }
553 }
554 }
555 }
556
557 str1Bis = "/L2H-STAVE";
558 str1 = "/I20B_";
559 str2 = "/I1D7_";
560
561 for(Int_t cSect = 0; cSect<10; cSect++) {
562
563 sector = str0;
564 sector += cSect+1; // this is one full sector
565 strEntryName1 = strSPD;
566 strEntryName1 += 1;
567 strEntryName1 += strSector;
568 strEntryName1 += cSect;
569 // if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),sector.Data()))
570 // AliFatal("Unable to set alignable entry!!");
571 // we don't need the previous lines because the whole sector is already define
572 // with first layer ...
573
574 for(Int_t cStave =0; cStave<4; cStave++) {
575
576 stave = sector;
577 stave += str1;
578 stave += cStave+1;
579 strEntryName2 = strEntryName1;
580 strEntryName2 += strStave;
581 strEntryName2 += cStave;
582
583 for(Int_t cHS=0; cHS<2; cHS++) {
584
585 halfStave = stave;
586 halfStave += str1Bis;
587 halfStave += cHS;
588 halfStave += str1Tierce;
589 strEntryName3 = strEntryName2;
590 strEntryName3 += strHalfStave;
591 strEntryName3 += cHS;
592 //printf("%s == %s\n",strEntryName3.Data(),halfStave.Data()); // this is a half-stave
593 if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(),halfStave.Data()))
594 AliFatal("Unable to set alignable entry!!");
595
596 for(Int_t cLad =0; cLad<2; cLad++) {
597
598 module = halfStave;
599 module += str2;
600 module += cLad+cHS*2+1;
601 strEntryName4 = strEntryName3;
602 strEntryName4 += strLadder;
603 strEntryName4 += cLad+cHS*2;
604 //printf("%s == %s\n",strEntryName4.Data(),module.Data());
605 if(!gGeoManager->SetAlignableEntry(strEntryName4.Data(),module.Data()))
606 AliFatal("Unable to set alignable entry!!");
607
608 SetT2Lmatrix(strEntryName4.Data(), -fChip2*0.0001/2., kFALSE);
609 }
108bd0fe 610 }
611 }
612 }
613 }
614
615 //===== SDD layers =====
108bd0fe 616 if (AliITSInitGeometry::SDDIsTGeoNative()) { // new SDD geometry
617
618 TString str0 = "/ALIC_1/ITSV_1/ITSsddLayer3_1/ITSsddLadd_"; // SDD layer1
619 TString str1 = "/ITSsddSensor3_";
620 TString str2 = "/ITSsddWafer3_1";
621 TString ladder;
622 TString wafer;
623
624 for(Int_t c1 = 0; c1<14; c1++) {
625
626 ladder = str0;
627 ladder += c1; // the set of wafers from one ladder
628 strEntryName1 = strSDD;
629 strEntryName1 += 2;
630 strEntryName1 +=strLadder;
631 strEntryName1 += c1;
632 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
633 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
634 AliFatal("Unable to set alignable entry!!");
635
636 for(Int_t c2 =0; c2<6; c2++) {
637
638 wafer = ladder;
639 wafer += str1;
640 wafer += c2;
641 wafer += str2; // one wafer
642 strEntryName2 = strEntryName1;
643 strEntryName2 += strSensor;
644 strEntryName2 += c2;
645 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
646 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data()))
647 AliFatal("Unable to set alignable entry!!");
648
bf210566 649 SetT2Lmatrix(strEntryName2.Data(), 0, kFALSE, c2>=3);
108bd0fe 650 }
651 }
652
653 str0 = "/ALIC_1/ITSV_1/ITSsddLayer4_1/ITSsddLadd_"; // SDD layer2
654 str1 = "/ITSsddSensor4_";
655 str2 = "/ITSsddWafer4_1";
656
657 for(Int_t c1 = 0; c1<22; c1++) {
658
659 ladder = str0;
660 ladder += c1; // the set of wafers from one ladder
661 strEntryName1 = strSDD;
662 strEntryName1 += 3;
663 strEntryName1 += strLadder;
664 strEntryName1 += c1;
665 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
666 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
667 AliFatal("Unable to set alignable entry!!");
668
669 for(Int_t c2 =0; c2<8; c2++) {
670
671 wafer = ladder;
672 wafer += str1;
673 wafer += c2;
674 wafer += str2; // one wafer
675 strEntryName2 = strEntryName1;
676 strEntryName2 += strSensor;
677 strEntryName2 += c2;
678 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
679 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data()))
680 AliFatal("Unable to set alignable entry!!");
681
bf210566 682 SetT2Lmatrix(strEntryName2.Data(), 0, kFALSE, c2>=4);
108bd0fe 683 }
684 }
685
bf210566 686 } else { // else old SDD geometry
108bd0fe 687
688 TString str0 = "ALIC_1/ITSV_1/ITSD_1/IT34_1/I004_";
689 TString str1 = "/I302_";
690
691 TString ladder;
692 TString wafer;
693
694 for(Int_t c1 = 1; c1<=14; c1++){
695
696 ladder = str0;
697 ladder += c1; // the set of wafers from one ladder
698 strEntryName1 = strSDD;
699 strEntryName1 += 2;
700 strEntryName1 +=strLadder;
701 strEntryName1 += (c1-1);
702 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
703 AliFatal("Unable to set alignable entry!!");
704 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
705
706 for(Int_t c2 =1; c2<=6; c2++){
707
708 wafer = ladder;
709 wafer += str1;
710 wafer += c2; // one wafer
711 strEntryName2 = strEntryName1;
712 strEntryName2 += strSensor;
713 strEntryName2 += (c2-1);
714 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data()))
715 AliFatal("Unable to set alignable entry!!");
716 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
717
bf210566 718 SetT2Lmatrix(strEntryName2.Data(), 0, kFALSE);
108bd0fe 719 }
720 }
721
722 str0 = "ALIC_1/ITSV_1/ITSD_1/IT34_1/I005_";
723 str1 = "/I402_";
724
725 for(Int_t c1 = 1; c1<=22; c1++){
726
727 ladder = str0;
728 ladder += c1; // the set of wafers from one ladder
729 strEntryName1 = strSDD;
730 strEntryName1 += 3;
731 strEntryName1 +=strLadder;
732 strEntryName1 += (c1-1);
733 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
734 AliFatal("Unable to set alignable entry!!");
735 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
736
737 for(Int_t c2 =1; c2<=8; c2++){
738
739 wafer = ladder;
740 wafer += str1;
741 wafer += c2; // one wafer
742 strEntryName2 = strEntryName1;
743 strEntryName2 += strSensor;
744 strEntryName2 += (c2-1);
745 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data()))
746 AliFatal("Unable to set alignable entry!!");
747 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
748
bf210566 749 SetT2Lmatrix(strEntryName2.Data(), 0, kFALSE);
108bd0fe 750 }
751 }
108bd0fe 752 } // end SDD
753
8f8273a4 754 //===== SSD layers =====
bf210566 755 if (AliITSInitGeometry::SSDIsTGeoNative()) { // new SSD geometry
756
757 TString str0 = "/ALIC_1/ITSV_1/ITSssdLayer5_1/ITSssdLay5Ladd_"; // SSD layer1
758 TString str1 = "/ITSsddSensor5_";
759 TString str2 = "";
760 TString ladder;
761 TString wafer;
762
763 for(Int_t c1 = 0; c1<34; c1++) {
764
765 ladder = str0;
766 ladder += c1; // the set of wafers from one ladder
767 strEntryName1 = strSSD;
768 strEntryName1 += 4;
769 strEntryName1 += strLadder;
770 strEntryName1 += c1;
771 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
772 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
773 AliFatal("Unable to set alignable entry!!");
774
775 for(Int_t c2 =0; c2<22; c2++) {
776
777 wafer = ladder;
778 wafer += str1;
779 wafer += c2;
780 //wafer += str2; // one wafer
781 strEntryName2 = strEntryName1;
782 strEntryName2 += strSensor;
783 strEntryName2 += c2;
784 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
785 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data()))
786 AliFatal("Unable to set alignable entry!!");
787
788 SetT2Lmatrix(strEntryName2.Data(), 0, kFALSE, kFALSE);
789 }
790 }
791
792 str0 = "/ALIC_1/ITSV_1/ITSssdLayer6_1/ITSssdLay6Ladd_"; // SSD layer2
793 str1 = "/ITSsddSensor6_";
794 str2 = "";
795
796 for(Int_t c1 = 0; c1<38; c1++) {
797
798 ladder = str0;
799 ladder += c1; // the set of wafers from one ladder
800 strEntryName1 = strSSD;
801 strEntryName1 += 5;
802 strEntryName1 += strLadder;
803 strEntryName1 += c1;
804 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
805 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
806 AliFatal("Unable to set alignable entry!!");
807
808 for(Int_t c2 =0; c2<25; c2++) {
809
810 wafer = ladder;
811 wafer += str1;
812 wafer += c2;
813 //wafer += str2; // one wafer
814 strEntryName2 = strEntryName1;
815 strEntryName2 += strSensor;
816 strEntryName2 += c2;
817 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
818 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data()))
819 AliFatal("Unable to set alignable entry!!");
820
821 SetT2Lmatrix(strEntryName2.Data(), 0, kFALSE, kFALSE);
822 }
823 }
824
825 } else { // else old SSD geometry
108bd0fe 826 TString str0 = "ALIC_1/ITSV_1/ITSD_1/IT56_1/I565_";
827 TString str1 = "/I562_";
108bd0fe 828 TString ladder;
829 TString wafer;
830
831 for(Int_t c1 = 1; c1<=34; c1++){
bf210566 832
108bd0fe 833 ladder = str0;
834 ladder += c1; // the set of wafers from one ladder
835 strEntryName1 = strSSD;
836 strEntryName1 += 4;
837 strEntryName1 +=strLadder;
838 strEntryName1 += (c1-1);
839 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
840 AliFatal("Unable to set alignable entry!!");
841 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
bf210566 842
108bd0fe 843 for(Int_t c2 = 1; c2<=22; c2++){
bf210566 844
108bd0fe 845 wafer = ladder;
846 wafer += str1;
847 wafer += c2; // one wafer
848 strEntryName2 = strEntryName1;
849 strEntryName2 += strSensor;
850 strEntryName2 += (c2-1);
851 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data()))
852 AliFatal("Unable to set alignable entry!!");
853 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
bf210566 854
855 SetT2Lmatrix(strEntryName2.Data(), 0, kFALSE);
108bd0fe 856 }
857 }
bf210566 858
bf210566 859 str0 = "ALIC_1/ITSV_1/ITSD_1/IT56_1/I569_";
860 str1 = "/I566_";
861
108bd0fe 862 for(Int_t c1 = 1; c1<=38; c1++){
bf210566 863
108bd0fe 864 ladder = str0;
865 ladder += c1; // the set of wafers from one ladder
866 strEntryName1 = strSSD;
867 strEntryName1 += 5;
868 strEntryName1 +=strLadder;
869 strEntryName1 += (c1-1);
870 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
871 AliFatal("Unable to set alignable entry!!");
872 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
bf210566 873
108bd0fe 874 for(Int_t c2 = 1; c2<=25; c2++){
bf210566 875
108bd0fe 876 wafer = ladder;
877 wafer += str1;
878 wafer += c2; // one wafer
879 strEntryName2 = strEntryName1;
880 strEntryName2 += strSensor;
881 strEntryName2 += (c2-1);
882 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data()))
883 AliFatal("Unable to set alignable entry!!");
884 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
bf210566 885
886 SetT2Lmatrix(strEntryName2.Data(), 0, kFALSE);
108bd0fe 887 }
888 }
bf210566 889 } // end SSD geometry
108bd0fe 890}
bf210566 891
108bd0fe 892//______________________________________________________________________
893void AliITSv11Hybrid::BuildGeometry(){
894 // Geometry builder for the ITS version 10. Event Display geometry.
895 // Inputs:
896 // none.
897 // Outputs:
898 // none.
899 // Return:
900 // none.
901
902 TNode *node, *top;
903
904 const Int_t kColorITS=kYellow;
905 //
906 top = gAlice->GetGeometry()->GetNode("alice");
907
908
909 new TTUBE("S_layer1","Layer1 of ITS","void",
910 3.8095,3.8095+1.03*9.36/100.,14.35);
911 top->cd();
912 node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
913 node->SetLineColor(kColorITS);
914 fNodes->Add(node);
915
916 new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+1.03*9.36/100.,14.35);
917 top->cd();
918 node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
919 node->SetLineColor(kColorITS);
920 fNodes->Add(node);
921
922 new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.94*9.36/100.,25.1);
923 top->cd();
924 node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
925 node->SetLineColor(kColorITS);
926 fNodes->Add(node);
927
928 new TTUBE("S_layer4","Layer4 of ITS","void",24.1,24.1+0.95*9.36/100.,32.1);
929 top->cd();
930 node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
931 node->SetLineColor(kColorITS);
932 fNodes->Add(node);
933
934 new TTUBE("S_layer5","Layer5 of ITS","void",
935 38.5,38.5+0.91*9.36/100.,49.405);
936 top->cd();
937 node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
938 node->SetLineColor(kColorITS);
939 fNodes->Add(node);
940
941 new TTUBE("S_layer6","Layer6 of ITS","void",
942 43.5765,43.5765+0.87*9.36/100.,55.27);
943 top->cd();
944 node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
945 node->SetLineColor(kColorITS);
946 fNodes->Add(node);
947}
948
949//______________________________________________________________________
950void AliITSv11Hybrid::CreateGeometry() {
951
333c948a 952 // Create the geometry and insert it in ALIC
953 // It calls first the CreateOldGeometry() routine which add the
954 // pieces coming from the old v10 geometry. Then the pieces from
955 // the new geometry are inserting in the mother volume ITSV.
956
108bd0fe 957 TGeoManager *geoManager = gGeoManager;
958
959 CreateOldGeometry();
960 TGeoVolume *vITS = geoManager->GetVolume("ITSV");
961
bf210566 962 TGeoVolume *vIS02 = geoManager->GetVolume("IS02");
963
964
965
012f0f4c 966 const Char_t *cvsDate="$Date$";
967 const Char_t *cvsRevision="$Revision$";
968 const Int_t length=100;
969 Char_t vstrng[length];
970 if(fInitGeom.WriteVersionString(vstrng,length,(AliITSVersion_t)IsVersion(),
971 fMinorVersion,cvsDate,cvsRevision))
972 vITS->SetTitle(vstrng);
973
8f8273a4 974 if (AliITSInitGeometry::SPDIsTGeoNative()) {
975 fSPDgeom->SPDSector(vITS);
976 }
977
108bd0fe 978 if (AliITSInitGeometry::SDDIsTGeoNative()) {
979 fSDDgeom->Layer3(vITS);
980 fSDDgeom->Layer4(vITS);
bf210566 981 fSDDgeom->ForwardLayer3(vIS02);
982 fSDDgeom->ForwardLayer4(vIS02);
983 }
984 if (AliITSInitGeometry::SSDIsTGeoNative()) {
985 fSSDgeom->Layer5(vITS);
986 fSSDgeom->Layer6(vITS);
108bd0fe 987 }
988}
989
990//______________________________________________________________________
991void AliITSv11Hybrid::CreateOldGeometry(){
333c948a 992 // This routine defines and creates some pieces of the geometry
993 // of version 10 (AliITSvPPRasymmFMD)
108bd0fe 994
995 //Begin_Html
996 /*
997 <img src="picts/ITS/ITS_full_vPPRasymm.jpg">
998 </pre>
999 <br clear=left>
1000 <font size=+2 color=red>
1001 <p>This shows the full ITS geometry.
1002 </font>
1003 <img src="picts/ITS/ITS_SPD_Barrel_vPPRasymm.jpg">
1004 </pre>
1005 < br clear=left>
1006 <font size=+2 color=red>
1007 <p>This shows the full SPD Barrel of the ITS geometry.
1008 </font>
1009 <img src="picts/ITS/ITS_SDD_Barrel_vPPRasymm.jpg">
1010 </pre>
1011 <br clear=left>
1012 <font size=+2 color=red>
1013 <p>This shows the full SDD Barrel of the ITS geometry.
1014 </font>
1015 <img src="picts/ITS/ITS_SSD_Barrel_vPPRasymm.jpg">
1016 </pre>
1017 <br clear=left>
1018 <font size=+2 color=red>
1019 <p>This shows the full SSD Barrel of the ITS geometry.
1020 </font>
1021 */
1022 //End_Html
1023 //INNER RADII OF THE SILICON LAYERS
1024 // Float_t rl[6] = { 3.8095,7.,15.,24.,38.1,43.5765 };
1025 //THICKNESSES OF LAYERS (in % radiation length)
1026 Float_t drl[6] = { 1.03,1.03,0.94,0.95,0.91,0.87 };
1027 //HALF LENGTHS OF LAYERS
1028 // Float_t dzl[6] = { 14.35,14.35,25.1,32.1,49.405,55.27 };
1029 //LENGTHS OF END-LADDER BOXES (ALL INCLUDED)
1030 // Float_t dzb[6] = { 12.4,12.4,13.5,15.,7.5,7.5 };
1031 //THICKNESSES OF END-LADDER BOXES (ALL INCLUDED)
1032 // Float_t drb[6] = { rl[1]-rl[0],0.2,5.,5.,4.,4. };
1033
1034
1035 Float_t dits[100], rlim, zmax;
1036 // Float_t zpos;
1037 // Float_t pcits[50]
1038 Float_t ztpc;
1039 Int_t idrotm[1999], i;
1040 Float_t dgh[100];
1041
1042 // Define some variables for SPD
1043
1044 Float_t dits1[3], di101[3], di107[3], di10b[3], di106[3];// for layer 1
1045 //Float_t di103[3], di10a[3], di102[3]; // for layer 1
1046 Float_t dits2[3], di1d1[3], di1d7[3], di20b[3], di1d6[3];// for layer 2
1047 //Float_t di1d3[3], di20a[3], di1d2[3]; // for layer 2
1048 Float_t di108[3];
1049 //Float_t di104[3]; // for both layers
1050
1051 Float_t ddet1=200.; // total detector thickness on layer 1 (micron)
1052 Float_t dchip1=200.; // total chip thickness on layer 1 (micron)
1053
1054 Float_t ddet2=200.; // total detector thickness on layer 2 (micron)
1055 Float_t dchip2=200.; // total chip thickness on layer 2 (micron)
1056
1057 Float_t dbus=300.; // total bus thickness on both layers (micron)
1058
1059 ddet1 = GetThicknessDet1();
1060 ddet2 = GetThicknessDet2();
1061 dchip1 = GetThicknessChip1();
1062 dchip2 = GetThicknessChip2();
1063
1064 if(ddet1 < 100. || ddet1 > 300.) {
1065 AliWarning("The detector thickness for layer 1 is outside ");
1066 AliWarning("the range of [100,300] microns. The default value of 200 microns ");
1067 AliWarning("will be used.");
1068 ddet1=200.;
1069 } // end if
1070
1071 if(ddet2 < 100. || ddet2 > 300.) {
1072 AliWarning("The detector thickness for layer 2 is outside ");
1073 AliWarning("the range of [100,300] microns. The default value of 200 microns ");
1074 AliWarning("will be used.");
1075 ddet2=200.;
1076 }// end if
1077
1078 if(dchip1 < 100. || dchip1 > 300.) {
1079 AliWarning("The chip thickness for layer 1 is outside");
1080 AliWarning("the range of [100,300] microns. The default value of 200 microns");
1081 AliWarning("will be used.");
1082 dchip1=200.;
1083 }// end if
1084
1085 if(dchip2 < 100. || dchip2 > 300.) {
1086 AliWarning("The chip thickness for layer 2 is outside");
1087 AliWarning("the range of [100,300] microns. The default value of 200 microns");
1088 AliWarning("will be used");
1089 dchip2=200.;
1090 }// end if
1091
1092 Int_t rails = 1; // flag for rails (1 --> rails in; 0 --> rails out)
1093
1094 Int_t fluid = 1; // flag for the cooling fluid (1 --> water; 0 --> freon)
1095 // This option is maintained for SDD and SSD only
1096 // For SPD the cooling liquid is C4F10
1097 rails = GetRails();
1098
1099 fluid = GetCoolingFluid();
1100
1101 if(rails != 0 && rails != 1) {
1102 AliWarning("The switch for rails is not set neither");
1103 AliWarning("to 0 (rails out) nor to 1 (rails in). The default value of");
1104 AliWarning("1 (rails in) will be used");
1105 rails=1;
1106 }// end if
1107
1108
1109 AliDebug(1,Form("Detector thickness on layer 1 is set to %f microns",ddet1));
1110 AliDebug(1,Form("Chip thickness on layer 1 is set to %f microns",dchip1));
1111 AliDebug(1,Form("Detector thickness on layer 2 is set to %f microns",ddet2));
1112 AliDebug(1,Form("Chip thickness on layer 2 is set to %f microns",dchip2));
1113 if(rails == 0 ) {
1114 AliDebug(1,"Rails are out.");
1115 } else {
1116 AliDebug(1,"Rails are in.");
1117 }// end if
1118
1119 ddet1 = ddet1*0.0001/2.; // conversion from tot length in um to half in cm
1120 ddet2 = ddet2*0.0001/2.; // conversion from tot length in um to half in cm
1121 dchip1 = dchip1*0.0001/2.;// conversion from tot length in um to half in cm
1122 dchip2 = dchip2*0.0001/2.;// conversion from tot length in um to half in cm
1123 dbus = dbus*0.0001/2.; // conversion from tot length in um to half in cm
1124
1125 Float_t deltax, deltay;
1126
1127 //Int_t thickness = fMinorVersion/10;
1128 //Int_t option = fMinorVersion - 10*thickness;
1129
1130
1131 // Define some variables for SDD
1132
1133 Float_t sin30, cos30;
1134
1135 // SDD electronics+services main volumes
1136 Float_t iI018dits[3], iI024dits[3], iI047dits[3], iI048dits[3];
1137
1138 // SDD detector ladder
1139
1140 Float_t iI302dits[3], iI402dits[3], iI004dits[3], iI005dits[3];
1141 Float_t ySDDsep = 0.20;
1142 Float_t ySDD;
1143 Int_t iSDD;
1144 Float_t zSDDlay3[6] = { 18.55, 10.95, 3.70, -3.70,-11.20,-18.35};
1145 Float_t zSDDlay4[8] = { 25.75, 18.60, 11.00, 3.70, -3.70,-11.20,
1146 -18.45,-26.05};
1147
1148 // ladder foot and end-ladder (frame and cooling)
1149 Float_t iI028dits[3], iI420dits[3], iI421dits[3], iI422dits[6], iI423dits[3];
1150 Float_t iI424dits[3], xI424, yI424;
1151 Float_t iI425dits[3];
1152 Int_t indI425;
1153 Float_t iI029dits[4], iI030dits[4], iI031dits[3], iI032dits[3];
1154
1155 // SDD ladder frame and cooling
1156 Float_t iSDDCoolPipe[3] = {1.7000, -0.5500, 0.0000};
1157 Float_t iI035dits[3], iI037dits[3], iI038dits[3];
1158 Float_t iI039dits[3], xI039, yI039;
1159 Float_t iI041dits[5];
1160
1161 // SDD hybrid, chips and capacitors
1162 Float_t iI050dits[3], xI050, yI050;
1163 Float_t iI052dits[3], xI052, yI052;
1164 Float_t iI042dits[3], xI042, yI042;
1165 Float_t xI042space = 0.17;
1166 Float_t iI043dits[3], xI043, yI043;
1167 Float_t xI043space = 0.17;
1168 Float_t zchip, zChipSpace;
1169 Float_t iI051dits[3], xI051, yI051, zI051, yI051space, xcap;
1170 Int_t ichip, icap;
1171
1172 // SDD microcables
1173 Float_t iI044dits[4], xI044, yI044, volI044;
1174 Float_t xHV, yHV, zHV, xLV, yLV, zLV;
1175 Char_t nameHV[5], nameLV[5];
1176
1177
1178 // Define media off-set
1179
1180 Int_t *idtmed = fIdtmed->GetArray()-199;
1181
1182
1183 // Rotation matrices
1184
1185 // SPD - option 'b' (this is the default)
1186
1187 //if (option == 2) {
1188 if (! AliITSInitGeometry::SPDIsTGeoNative()) {
1189 AliMatrix(idrotm[201],90.0,0.0,90.0,90.0,0.0,0.0);
1190 AliMatrix(idrotm[202],90.0,90.0,90.0,0.0,0.0,0.0);
1191 AliMatrix(idrotm[203],90.0,350.0,90.0,260.0,0.0,0.0);
1192 AliMatrix(idrotm[204],90.0,170.0,90.0,80.0,0.0,0.0);
1193 AliMatrix(idrotm[205],90.0,10.0,90.0,100.0,0.0,0.0);
1194 AliMatrix(idrotm[206],90.0,190.0,90.0,280.0,0.0,0.0);
1195 AliMatrix(idrotm[207],90.0,342.0,90.0,72.0,0.0,0.0);
1196 AliMatrix(idrotm[208],90.0,156.999893,90.0,246.999893,0.0,0.0);
1197 AliMatrix(idrotm[209],90.0,147.999802,90.0,237.999893,0.0,0.0);
1198 AliMatrix(idrotm[210],90.0,138.999802,90.0,228.999802,0.0,0.0);
1199 AliMatrix(idrotm[211],90.0,129.999802,90.0,219.999802,0.0,0.0);
1200 AliMatrix(idrotm[212],90.0,36.7896,90.0,126.789597,0.0,0.0);
1201 AliMatrix(idrotm[213],90.0,343.579712,90.0,73.579697,0.0,0.0);
1202 AliMatrix(idrotm[214],90.0,95.413696,90.0,185.413696,0.0,0.0);
1203 AliMatrix(idrotm[215],90.0,5.4141,90.0,95.414101,0.0,0.0);
1204 AliMatrix(idrotm[216],90.0,318.296906,90.0,48.296902,0.0,0.0);
1205 AliMatrix(idrotm[217],90.0,67.000099,90.0,157.000107,0.0,0.0);
1206 AliMatrix(idrotm[218],90.0,337.003998,90.0,67.003998,0.0,0.0);
1207 AliMatrix(idrotm[219],90.0,247.000305,90.0,337.000305,0.0,0.0);
1208 AliMatrix(idrotm[220],90.0,305.633514,90.0,35.633499,0.0,0.0);
1209
1210 AliMatrix(idrotm[221],90.0,58.000198,90.0,148.000198,0.0,0.0);
1211 AliMatrix(idrotm[222],90.0,327.997101,90.0,57.997101,0.0,0.0);
1212 AliMatrix(idrotm[223],90.0,237.994202,90.0,327.994202,0.0,0.0);
1213 AliMatrix(idrotm[224],90.0,296.627502,90.0,26.627399,0.0,0.0);
1214 AliMatrix(idrotm[225],90.0,48.994099,90.0,138.994095,0.0,0.0);
1215 AliMatrix(idrotm[226],90.0,318.990997,90.0,48.991001,0.0,0.0);
1216 AliMatrix(idrotm[227],90.0,228.988205,90.0,318.98819,0.0,0.0);
1217 AliMatrix(idrotm[228],90.0,287.621399,90.0,17.621401,0.0,0.0);
1218 AliMatrix(idrotm[229],90.0,39.988098,90.0,129.988098,0.0,0.0);
1219 AliMatrix(idrotm[230],90.0,309.984985,90.0,39.985001,0.0,0.0);
1220 AliMatrix(idrotm[231],90.0,327.2612,90.0,57.2612,0.0,0.0);
1221 AliMatrix(idrotm[232],90.0,237.261398,90.0,327.261414,0.0,0.0);
1222 AliMatrix(idrotm[233],90.0,252.000504,90.0,342.000488,0.0,0.0);
1223 AliMatrix(idrotm[234],90.0,71.9991,90.0,161.9991,0.0,0.0);
1224 AliMatrix(idrotm[235],90.0,270.0,90.0,0.0,0.0,0.0);
1225 AliMatrix(idrotm[236],90.0,180.013702,90.0,270.013702,0.0,0.0);
1226 AliMatrix(idrotm[237],90.0,90.0,90.0,180.0,0.0,0.0);
1227 AliMatrix(idrotm[238],90.0,180.0,90.0,270.0,0.0,0.0);
1228 AliMatrix(idrotm[239],90.0,162.0,90.0,252.0,0.0,0.0);
1229 AliMatrix(idrotm[240],90.0,310.0,90.0,40.0,0.0,0.0);
1230 AliMatrix(idrotm[241],90.0,319.0,90.0,49.0,0.0,0.0);
1231 AliMatrix(idrotm[242],90.0,328.0,90.0,58.0,0.0,0.0);
1232 AliMatrix(idrotm[243],90.0,337.0,90.0,67.0,0.0,0.0);
1233 AliMatrix(idrotm[244],90.0,216.0,90.0,306.0,0.0,0.0);
1234 AliMatrix(idrotm[245],90.0,36.0,90.0,126.0,0.0,0.0);
1235 AliMatrix(idrotm[246],90.0,108.0,90.0,198.0,0.0,0.0);
1236 AliMatrix(idrotm[247],90.0,144.0,90.0,234.0,0.0,0.0);
1237 AliMatrix(idrotm[248],90.0,288.0,90.0,18.0,0.0,0.0);
1238 AliMatrix(idrotm[249],90.0,324.0,90.0,54.0,0.0,0.0);
1239 AliMatrix(idrotm[1003],90.0,73.5,90.0,163.5,0.0,0.0);
1240 AliMatrix(idrotm[1011],90.0,342.0,90.0,72.0,0.0,0.0);
1241 AliMatrix(idrotm[1039],90.0,72.0,90.0,162.0,0.0,0.0);
1242 AliMatrix(idrotm[1043],90.0,66.91,90.0,156.91,0.0,0.0);
1243 AliMatrix(idrotm[1065],90.0,144.0,90.0,234.0,0.0,0.0);
1244 AliMatrix(idrotm[1078],90.0,180.0,90.0,270.0,0.0,0.0);
1245 AliMatrix(idrotm[1088],90.0,57.41,90.0,147.41,0.0,0.0);
1246 AliMatrix(idrotm[1089],90.0,333.0,90.0,63.0,0.0,0.0);
1247 AliMatrix(idrotm[1090],90.0,351.0,90.0,81.0,0.0,0.0);
1248 AliMatrix(idrotm[1091],90.0,216.0,90.0,306.0,0.0,0.0);
1249 AliMatrix(idrotm[1092],90.0,27.0,90.0,117.0,0.0,0.0);
1250 AliMatrix(idrotm[1093],90.0,18.0,90.0,108.0,0.0,0.0);
1251 AliMatrix(idrotm[1094],90.0,9.0,90.0,99.0,0.0,0.0);
1252 AliMatrix(idrotm[1104],90.0,252.0,90.0,342.0,0.0,0.0);
1253 AliMatrix(idrotm[1106],90.0,36.0,90.0,126.0,0.0,0.0);
1254 AliMatrix(idrotm[1107],90.0,108.0,90.0,198.0,0.0,0.0);
1255 AliMatrix(idrotm[1108],90.0,324.0,90.0,54.0,180.0,0.0);
1256 AliMatrix(idrotm[1109],90.0,0.0,90.0,90.0,180.0,0.0);
1257 AliMatrix(idrotm[1110],90.0,36.0,90.0,126.0,180.0,0.0);
1258 AliMatrix(idrotm[1111],90.0,72.0,90.0,162.0,180.0,0.0);
1259 AliMatrix(idrotm[1112],90.0,108.0,90.0,198.0,180.0,0.0);
1260 AliMatrix(idrotm[1113],90.0,144.0,90.0,234.0,180.0,0.0);
1261 AliMatrix(idrotm[1114],90.0,180.0,90.0,270.0,180.0,0.0);
1262 AliMatrix(idrotm[1115],90.0,216.0,90.0,306.0,180.0,0.0);
1263 AliMatrix(idrotm[1116],90.0,252.0,90.0,342.0,180.0,0.0);
1264 AliMatrix(idrotm[1117],90.0,288.0,90.0,18.0,0.0,0.0);
1265 AliMatrix(idrotm[1118],90.0,288.0,90.0,18.0,180.0,0.0);
1266 AliMatrix(idrotm[1130],90.0,324.0,90.0,54.0,0.0,0.0);
1267 }// end if option==2
1268
1269 // SDD
1270 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
1271 AliMatrix(idrotm[301],0.0,0.0,90.0,90.0,90.0,180.0);
1272 AliMatrix(idrotm[302],0.0,0.0,90.0,90.0,90.0,0.0);
1273 AliMatrix(idrotm[303],180.0,0.0,90.0,90.0,90.0,0.0);
1274 AliMatrix(idrotm[304],180.0,0.0,90.0,90.0,90.0,180.0);
1275 AliMatrix(idrotm[305],90.0,347.14,90.0,77.14,0.0,0.0);
1276 AliMatrix(idrotm[306],90.0,321.43,90.0,51.43,0.0,0.0);
1277 AliMatrix(idrotm[307],90.0,295.71,90.0,25.71,0.0,0.0);
1278 AliMatrix(idrotm[308],90.0,244.29,90.0,334.29,0.0,0.0);
1279 AliMatrix(idrotm[309],90.0,218.57,90.0,308.57,0.0,0.0);
1280 AliMatrix(idrotm[310],90.0,167.14,90.0,257.14,0.0,0.0);
1281 AliMatrix(idrotm[311],90.0,141.43,90.0,231.43,0.0,0.0);
1282 AliMatrix(idrotm[312],90.0,0.0,0.0,0.0,90.0,270.0);
1283 AliMatrix(idrotm[313],90.0,115.71,90.0,205.71,0.0,0.0);
1284 AliMatrix(idrotm[314],90.0,335.45,90.0,65.45,0.0,0.0);
1285 AliMatrix(idrotm[315],90.0,319.09,90.0,49.09,0.0,0.0);
1286 AliMatrix(idrotm[316],90.0,302.73,90.0,32.73,0.0,0.0);
1287 AliMatrix(idrotm[317],90.0,286.36,90.0,16.36,0.0,0.0);
1288 AliMatrix(idrotm[318],90.0,270.0,90.0,360.0,0.0,0.0);
1289 AliMatrix(idrotm[319],90.0,253.64,90.0,343.64,0.0,0.0);
1290 AliMatrix(idrotm[320],90.0,237.27,90.0,327.27,0.0,0.0);
1291 AliMatrix(idrotm[321],90.0,12.86,90.0,102.86,0.0,0.0);
1292 AliMatrix(idrotm[322],90.0,220.91,90.0,310.91,0.0,0.0);
1293 AliMatrix(idrotm[323],90.0,204.55,90.0,294.55,0.0,0.0);
1294 AliMatrix(idrotm[324],90.0,188.18,90.0,278.18,0.0,0.0);
1295 AliMatrix(idrotm[325],90.0,171.82,90.0,261.82,0.0,0.0);
1296 AliMatrix(idrotm[326],90.0,155.45,90.0,245.45,0.0,0.0);
1297 AliMatrix(idrotm[327],90.0,139.09,90.0,229.09,0.0,0.0);
1298 AliMatrix(idrotm[328],90.0,122.73,90.0,212.73,0.0,0.0);
1299 AliMatrix(idrotm[329],90.0,106.36,90.0,196.36,0.0,0.0);
1300 AliMatrix(idrotm[330],90.0,73.64,90.0,163.64,0.0,0.0);
1301 AliMatrix(idrotm[331],90.0,40.91,90.0,130.91,0.0,0.0);
1302 AliMatrix(idrotm[332],90.0,24.55,90.0,114.55,0.0,0.0);
1303 AliMatrix(idrotm[333],90.0,38.57,90.0,128.57,0.0,0.0);
1304 AliMatrix(idrotm[334],90.0,351.82,90.0,81.82,0.0,0.0);
1305 AliMatrix(idrotm[335],90.0,8.18,90.0,98.18,0.0,0.0);
1306 AliMatrix(idrotm[336],90.0,64.29,90.0,154.29,0.0,0.0);
1307 AliMatrix(idrotm[337],111.0,300.0,21.0,300.0,90.0,30.0);
1308 AliMatrix(idrotm[338],69.0,240.0,159.0,240.0,90.0,150.0);
1309 AliMatrix(idrotm[339],111.0,240.0,21.0,240.0,90.0,150.0);
1310 AliMatrix(idrotm[340],69.0,300.0,159.0,300.0,90.0,30.0);
1311 AliMatrix(idrotm[341],128.0,0.0,38.0,0.0,90.0,270.0);
1312 AliMatrix(idrotm[342],90.0,240.0,180.0,0.0,90.0,330.);
1313 AliMatrix(idrotm[343],90.0,120.0,180.0,0.0,90.0,210.0);
1314 AliMatrix(idrotm[344],90.0,0.0,180.0,0.0,90.0,90.0);
1315 AliMatrix(idrotm[345],90.0,180.0,90.0,90.0,0.0,0.0);
1316 AliMatrix(idrotm[346],90.0,300.0,90.0,30.0,0.0,0.0);
1317 AliMatrix(idrotm[347],90.0,240.0,90.0,150.0,0.0,0.0);
1318 AliMatrix(idrotm[348],90.0,180.0,0.0,0.0,90.0,270.0);
1319 AliMatrix(idrotm[349],90.0,235.0,90.0,145.0,0.0,0.0);
1320 AliMatrix(idrotm[350],90.0,90.0,90.0,180.0,0.0,0.0);
1321 AliMatrix(idrotm[351],90.0,305.0,90.0,35.0,0.0,0.0);
1322 AliMatrix(idrotm[352],0.0,0.0,90.0,0.0,90.0,90.0);
1323 AliMatrix(idrotm[353],90.0,60.0,90.0,150.0,0.0,0.0);
1324 AliMatrix(idrotm[354],90.0,120.0,90.0,30.0,0.0,0.0);
1325 AliMatrix(idrotm[355],90.0,180.0,90.0,90.0,180.0,0.0);
1326 AliMatrix(idrotm[356],90.0,270.0,90.0,0.0,0.0,0.0);
1327 AliMatrix(idrotm[366],90.0,57.27,90.0,147.27,0.0,0.0);
1328 AliMatrix(idrotm[386],90.0,192.86,90.0,282.86,0.0,0.0);
1329 }
1330
1331 // SSD
1332 if (! AliITSInitGeometry::SSDIsTGeoNative()) {
1333 AliMatrix(idrotm[501],90.0,148.24,90.0,238.24,0.0,0.0);
1334 AliMatrix(idrotm[503],90.0,137.65,90.0,227.65,0.0,0.0);
1335 AliMatrix(idrotm[504],90.0,127.06,90.0,217.06,0.0,0.0);
1336 AliMatrix(idrotm[505],90.0,116.47,90.0,206.47,0.0,0.0);
1337 AliMatrix(idrotm[506],90.0,105.88,90.0,195.88,0.0,0.0);
1338 AliMatrix(idrotm[507],90.0,95.29,90.0,185.29,0.0,0.0);
1339 AliMatrix(idrotm[508],90.0,84.71,90.0,174.71,0.0,0.0);
1340 AliMatrix(idrotm[509],90.0,74.12,90.0,164.12,0.0,0.0);
1341 AliMatrix(idrotm[510],90.0,63.53,90.0,153.53,0.0,0.0);
1342 AliMatrix(idrotm[511],90.0,52.94,90.0,142.94,0.0,0.0);
1343 AliMatrix(idrotm[512],90.0,42.35,90.0,132.35,0.0,0.0);
1344 AliMatrix(idrotm[513],90.0,31.76,90.0,121.76,0.0,0.0);
1345 AliMatrix(idrotm[514],90.0,10.59,90.0,100.59,0.0,0.0);
1346 AliMatrix(idrotm[515],90.0,349.41,90.0,79.41,0.0,0.0);
1347 AliMatrix(idrotm[516],90.0,338.82,90.0,68.82,0.0,0.0);
1348 AliMatrix(idrotm[517],90.0,328.24,90.0,58.24,0.0,0.0);
1349 AliMatrix(idrotm[518],90.0,317.65,90.0,47.65,0.0,0.0);
1350 AliMatrix(idrotm[519],90.0,307.06,90.0,37.06,0.0,0.0);
1351 AliMatrix(idrotm[520],90.0,296.47,90.0,26.47,0.0,0.0);
1352 AliMatrix(idrotm[521],90.0,285.88,90.0,15.88,0.0,0.0);
1353 AliMatrix(idrotm[522],90.0,275.29,90.0,5.29,0.0,0.0);
1354 AliMatrix(idrotm[523],90.0,264.71,90.0,354.71,0.0,0.0);
1355 AliMatrix(idrotm[524],90.0,254.12,90.0,344.12,0.0,0.0);
1356 AliMatrix(idrotm[525],90.0,243.53,90.0,333.53,0.0,0.0);
1357 AliMatrix(idrotm[526],90.0,232.94,90.0,322.94,0.0,0.0);
1358 AliMatrix(idrotm[527],90.0,222.35,90.0,312.35,0.0,0.0);
1359 AliMatrix(idrotm[528],90.0,211.76,90.0,301.76,0.0,0.0);
1360 AliMatrix(idrotm[529],90.0,190.59,90.0,280.59,0.0,0.0);
1361 AliMatrix(idrotm[530],90.0,169.41,90.0,259.41,0.0,0.0);
1362 AliMatrix(idrotm[531],90.0,158.82,90.0,248.82,0.0,0.0);
1363 AliMatrix(idrotm[532],90.0,360.0,90.0,90.0,0.0,0.0);
1364 AliMatrix(idrotm[533],90.0,180.0,90.0,270.0,0.0,0.0);
1365 AliMatrix(idrotm[534],90.0,189.47,90.0,279.47,0.0,0.0);
1366 AliMatrix(idrotm[535],90.0,198.95,90.0,288.95,0.0,0.0);
1367 AliMatrix(idrotm[537],90.0,217.89,90.0,307.89,0.0,0.0);
1368 AliMatrix(idrotm[538],90.0,227.37,90.0,317.37,0.0,0.0);
1369 AliMatrix(idrotm[539],90.0,236.84,90.0,326.84,0.0,0.0);
1370 AliMatrix(idrotm[540],90.0,246.32,90.0,336.32,0.0,0.0);
1371 AliMatrix(idrotm[541],90.0,255.79,90.0,345.79,0.0,0.0);
1372 AliMatrix(idrotm[542],90.0,265.26,90.0,355.26,0.0,0.0);
1373 AliMatrix(idrotm[543],90.0,274.74,90.0,4.74,0.0,0.0);
1374 AliMatrix(idrotm[544],90.0,284.21,90.0,14.21,0.0,0.0);
1375 AliMatrix(idrotm[545],90.0,293.68,90.0,23.68,0.0,0.0);
1376 AliMatrix(idrotm[546],90.0,303.16,90.0,33.16,0.0,0.0);
1377 AliMatrix(idrotm[547],90.0,312.63,90.0,42.63,0.0,0.0);
1378 AliMatrix(idrotm[548],90.0,322.11,90.0,52.11,0.0,0.0);
1379 AliMatrix(idrotm[549],90.0,331.58,90.0,61.58,0.0,0.0);
1380 AliMatrix(idrotm[550],90.0,341.05,90.0,71.05,0.0,0.0);
1381 AliMatrix(idrotm[551],90.0,350.53,90.0,80.53,0.0,0.0);
1382 AliMatrix(idrotm[552],90.0,9.47,90.0,99.47,0.0,0.0);
1383 AliMatrix(idrotm[553],90.0,18.95,90.0,108.95,0.0,0.0);
1384 AliMatrix(idrotm[555],90.0,37.89,90.0,127.89,0.0,0.0);
1385 AliMatrix(idrotm[556],90.0,47.37,90.0,137.37,0.0,0.0);
1386 AliMatrix(idrotm[557],90.0,56.84,90.0,146.84,0.0,0.0);
1387 AliMatrix(idrotm[558],90.0,66.32,90.0,156.32,0.0,0.0);
1388 AliMatrix(idrotm[559],90.0,75.79,90.0,165.79,0.0,0.0);
1389 AliMatrix(idrotm[560],90.0,85.26,90.0,175.26,0.0,0.0);
1390 AliMatrix(idrotm[561],90.0,94.74,90.0,184.74,0.0,0.0);
1391 AliMatrix(idrotm[562],90.0,104.21,90.0,194.21,0.0,0.0);
1392 AliMatrix(idrotm[563],90.0,113.68,90.0,203.68,0.0,0.0);
1393 AliMatrix(idrotm[564],90.0,123.16,90.0,213.16,0.0,0.0);
1394 AliMatrix(idrotm[565],90.0,132.63,90.0,222.63,0.0,0.0);
1395 AliMatrix(idrotm[566],90.0,142.11,90.0,232.11,0.0,0.0);
1396 AliMatrix(idrotm[567],90.0,151.58,90.0,241.58,0.0,0.0);
1397 AliMatrix(idrotm[568],90.0,161.05,90.0,251.05,0.0,0.0);
1398 AliMatrix(idrotm[569],90.0,170.53,90.0,260.53,0.0,0.0);
1399 AliMatrix(idrotm[570],90.0,180.0,90.0,90.0,180.0,0.0);
1400 AliMatrix(idrotm[571],90.0,0.0,0.0,0.0,90.0,270.0);
1401 AliMatrix(idrotm[572],90.0,180.0,0.0,0.0,90.0,270.0);
1402 AliMatrix(idrotm[573],90.0,180.0,90.0,90.0,0.0,0.0);
1403 AliMatrix(idrotm[575],90.0,120.0,180.0,0.0,90.0,210.0);
1404 AliMatrix(idrotm[576],65.71,300.0,90.0,30.0,24.29,120.0);
1405 AliMatrix(idrotm[577],114.29,300.0,90.0,30.0,155.71,120.0);
1406 AliMatrix(idrotm[579],65.71,240.0,90.0,150.0,24.29,60.0);
1407 AliMatrix(idrotm[580],114.29,240.0,90.0,150.0,155.71,60.0);
1408 AliMatrix(idrotm[581],90.0,240.0,180.0,0.0,90.0,330.0);
1409 AliMatrix(idrotm[583],90.0,0.0,180.0,0.0,90.0,90.0);
1410 AliMatrix(idrotm[584],90.0,180.0,180.0,0.0,90.0,90.0);
1411 AliMatrix(idrotm[586],180.0,0.0,90.0,90.0,90.0,0.0);
1412 AliMatrix(idrotm[618],90.0,201.18,90.0,291.18,0.0,0.0);
1413 AliMatrix(idrotm[620],90.0,28.42,90.0,118.42,0.0,0.0);
1414 AliMatrix(idrotm[623],90.0,208.42,90.0,298.42,0.0,0.0);
1415 AliMatrix(idrotm[633],132.46,0.0,90.0,90.0,42.46,360.0);
1416 AliMatrix(idrotm[653],90.0,21.18,90.0,111.18,0.0,0.0);
1417 }
1418
1419 // SDD cone
1420 if (! AliITSInitGeometry::SDDconeIsTGeoNative()) {
1421 AliMatrix(idrotm[846],90.0,300.0,90.0,30.0,0.0,0.0);
1422 AliMatrix(idrotm[851],90.0,305.0,90.0,35.0,0.0,0.0);
1423 AliMatrix(idrotm[853],90.0,60.0,90.0,150.0,0.0,0.0);
1424 AliMatrix(idrotm[856],90.0,0.0,90.0,90.0,180.0,0.0);
1425 AliMatrix(idrotm[857],90.0,5.0,90.0,95.0,180.0,0.0);
1426 AliMatrix(idrotm[858],90.0,65.0,90.0,155.0,180.0,0.0);
1427 AliMatrix(idrotm[859],90.0,305.0,90.0,35.0,180.0,0.0);
1428 AliMatrix(idrotm[860],90.0,245.0,90.0,335.0,180.0,0.0);
1429 AliMatrix(idrotm[861],90.0,185.0,90.0,275.0,180.0,0.0);
1430 AliMatrix(idrotm[862],90.0,125.0,90.0,215.0,180.0,0.0);
1431 AliMatrix(idrotm[863],90.0,257.5,90.0,347.5,180.0,0.0);
1432 AliMatrix(idrotm[864],90.0,227.5,90.0,317.5,180.0,0.0);
1433 AliMatrix(idrotm[865],90.0,197.5,90.0,287.5,180.0,0.0);
1434 AliMatrix(idrotm[867],90.0,167.5,90.0,257.5,180.0,0.0);
1435 AliMatrix(idrotm[868],90.0,287.5,90.0,17.5,0.0,0.0);
1436 AliMatrix(idrotm[869],90.0,137.5,90.0,227.5,180.0,0.0);
1437 AliMatrix(idrotm[870],90.0,107.5,90.0,197.5,180.0,0.0);
1438 AliMatrix(idrotm[871],90.0,77.5,90.0,167.5,180.0,0.0);
1439 AliMatrix(idrotm[872],90.0,47.5,90.0,137.5,180.0,0.0);
1440 AliMatrix(idrotm[873],90.0,17.5,90.0,107.5,180.0,0.0);
1441 AliMatrix(idrotm[874],90.0,347.5,90.0,77.5,180.0,0.0);
1442 AliMatrix(idrotm[875],90.0,317.5,90.0,47.5,180.0,0.0);
1443 AliMatrix(idrotm[876],90.0,287.5,90.0,17.5,180.0,0.0);
1444 AliMatrix(idrotm[877],90.0,185.0,90.0,275.0,0.0,0.0);
1445 AliMatrix(idrotm[878],90.0,180.0,90.0,270.0,0.0,0.0);
1446 AliMatrix(idrotm[879],90.0,125.0,90.0,215.0,0.0,0.0);
1447 AliMatrix(idrotm[880],90.0,65.0,90.0,155.0,0.0,0.0);
1448 AliMatrix(idrotm[881],90.0,5.0,90.0,95.0,0.0,0.0);
1449 AliMatrix(idrotm[882],90.0,245.0,90.0,335.0,0.0,0.0);
1450 AliMatrix(idrotm[883],90.0,47.5,90.0,137.5,0.0,0.0);
1451 AliMatrix(idrotm[884],90.0,77.5,90.0,167.5,0.0,0.0);
1452 AliMatrix(idrotm[885],90.0,107.5,90.0,197.5,0.0,0.0);
1453 AliMatrix(idrotm[887],90.0,137.5,90.0,227.5,0.0,0.0);
1454 AliMatrix(idrotm[888],90.0,167.5,90.0,257.5,0.0,0.0);
1455 AliMatrix(idrotm[889],90.0,197.5,90.0,287.5,0.0,0.0);
1456 AliMatrix(idrotm[890],90.0,227.5,90.0,317.5,0.0,0.0);
1457 AliMatrix(idrotm[891],90.0,347.5,90.0,77.5,0.0,0.0);
1458 AliMatrix(idrotm[892],90.0,317.5,90.0,47.5,0.0,0.0);
1459 AliMatrix(idrotm[893],90.0,257.5,90.0,347.5,0.0,0.0);
1460 AliMatrix(idrotm[894],90.0,270.0,0.0,0.0,90.0,180.0);
1461 AliMatrix(idrotm[895],90.0,286.36,0.0,0.0,90.0,196.36);
1462 AliMatrix(idrotm[896],90.0,302.73,0.0,0.0,90.0,212.73);
1463 AliMatrix(idrotm[897],90.0,319.09,0.0,0.0,90.0,229.09);
1464 AliMatrix(idrotm[898],90.0,17.5,90.0,107.5,0.0,0.0);
1465 AliMatrix(idrotm[899],90.0,335.45,0.0,0.0,90.0,245.45);
1466 AliMatrix(idrotm[900],90.0,351.82,0.0,0.0,90.0,261.82);
1467 AliMatrix(idrotm[901],90.0,8.18,0.0,0.0,90.0,278.18);
1468 AliMatrix(idrotm[902],90.0,24.55,0.0,0.0,90.0,294.55);
1469 AliMatrix(idrotm[903],90.0,40.91,0.0,0.0,90.0,310.91);
1470 AliMatrix(idrotm[904],90.0,57.27,0.0,0.0,90.0,327.27);
1471 AliMatrix(idrotm[905],90.0,73.64,0.0,0.0,90.0,343.64);
1472 AliMatrix(idrotm[906],90.0,90.0,0.0,0.0,90.0,360.0);
1473 AliMatrix(idrotm[907],90.0,106.36,0.0,0.0,90.0,16.36);
1474 AliMatrix(idrotm[908],90.0,122.73,0.0,0.0,90.0,32.73);
1475 AliMatrix(idrotm[909],90.0,139.09,0.0,0.0,90.0,49.09);
1476 AliMatrix(idrotm[910],90.0,155.45,0.0,0.0,90.0,65.45);
1477 AliMatrix(idrotm[911],90.0,171.82,0.0,0.0,90.0,81.82);
1478 AliMatrix(idrotm[912],90.0,188.18,0.0,0.0,90.0,98.18);
1479 AliMatrix(idrotm[913],90.0,204.55,0.0,0.0,90.0,114.55);
1480 AliMatrix(idrotm[914],90.0,220.91,0.0,0.0,90.0,130.91);
1481 AliMatrix(idrotm[915],90.0,237.27,0.0,0.0,90.0,147.27);
1482 AliMatrix(idrotm[916],90.0,253.64,0.0,0.0,90.0,163.64);
1483 AliMatrix(idrotm[917],90.0,295.71,0.0,0.0,90.0,205.71);
1484 AliMatrix(idrotm[918],90.0,321.43,0.0,0.0,90.0,231.43);
1485 AliMatrix(idrotm[919],90.0,347.14,0.0,0.0,90.0,257.14);
1486 AliMatrix(idrotm[920],90.0,12.86,0.0,0.0,90.0,282.86);
1487 AliMatrix(idrotm[921],90.0,38.57,0.0,0.0,90.0,308.57);
1488 AliMatrix(idrotm[922],90.0,64.29,0.0,0.0,90.0,334.29);
1489 AliMatrix(idrotm[923],90.0,115.71,0.0,0.0,90.0,25.71);
1490 AliMatrix(idrotm[924],90.0,141.43,0.0,0.0,90.0,51.43);
1491 AliMatrix(idrotm[925],90.0,167.14,0.0,0.0,90.0,77.14);
1492 AliMatrix(idrotm[926],90.0,192.86,0.0,0.0,90.0,102.86);
1493 AliMatrix(idrotm[927],90.0,218.57,0.0,0.0,90.0,128.57);
1494 AliMatrix(idrotm[928],90.0,244.29,0.0,0.0,90.0,154.29);
1495 AliMatrix(idrotm[929],90.0,120.0,90.0,210.0,0.0,0.0);
1496 AliMatrix(idrotm[930],90.0,240.0,90.0,330.0,0.0,0.0);
1497 AliMatrix(idrotm[931],90.0,60.0,90.0,150.0,180.0,0.0);
1498 AliMatrix(idrotm[932],90.0,120.0,90.0,210.0,180.0,0.0);
1499 AliMatrix(idrotm[933],90.0,180.0,90.0,270.0,180.0,0.0);
1500 AliMatrix(idrotm[934],90.0,240.0,90.0,330.0,180.0,0.0);
1501 AliMatrix(idrotm[935],90.0,300.0,90.0,30.0,180.0,0.0);
1502 }
1503
1504 // SSD cone
1505 if (! AliITSInitGeometry::SSDconeIsTGeoNative()) {
1506 AliMatrix(idrotm[701],90.0,0.0,90.0,90.0,180.0,0.0);
1507 AliMatrix(idrotm[702],90.0,347.5,90.0,77.5,180.0,0.0);
1508 AliMatrix(idrotm[703],90.0,17.5,90.0,107.5,180.0,0.0);
1509 AliMatrix(idrotm[704],90.0,47.5,90.0,137.5,180.0,0.0);
1510 AliMatrix(idrotm[705],90.0,77.5,90.0,167.5,180.0,0.0);
1511 AliMatrix(idrotm[706],90.0,107.5,90.0,197.5,180.0,0.0);
1512 AliMatrix(idrotm[707],90.0,137.5,90.0,227.5,180.0,0.0);
1513 AliMatrix(idrotm[708],90.0,167.5,90.0,257.5,180.0,0.0);
1514 AliMatrix(idrotm[709],90.0,197.5,90.0,287.5,180.0,0.0);
1515 AliMatrix(idrotm[710],90.0,227.5,90.0,317.5,180.0,0.0);
1516 AliMatrix(idrotm[711],90.0,257.5,90.0,347.5,180.0,0.0);
1517 AliMatrix(idrotm[712],90.0,287.5,90.0,17.5,180.0,0.0);
1518 AliMatrix(idrotm[713],90.0,317.5,90.0,47.5,180.0,0.0);
1519 AliMatrix(idrotm[714],90.0,328.4,90.0,58.4,180.0,0.0);
1520 AliMatrix(idrotm[715],90.0,28.4,90.0,118.4,180.0,0.0);
1521 AliMatrix(idrotm[716],90.0,88.4,90.0,178.4,180.0,0.0);
1522 AliMatrix(idrotm[717],90.0,148.4,90.0,238.4,180.0,0.0);
1523 AliMatrix(idrotm[718],90.0,208.4,90.0,298.4,180.0,0.0);
1524 AliMatrix(idrotm[719],90.0,268.4,90.0,358.4,180.0,0.0);
1525 AliMatrix(idrotm[720],90.0,28.4,90.0,118.4,0.0,0.0);
1526 AliMatrix(idrotm[721],90.0,88.4,90.0,178.4,0.0,0.0);
1527 AliMatrix(idrotm[722],90.0,148.4,90.0,238.4,0.0,0.0);
1528 AliMatrix(idrotm[723],90.0,208.4,90.0,298.4,0.0,0.0);
1529 AliMatrix(idrotm[724],90.0,268.4,90.0,358.4,0.0,0.0);
1530 AliMatrix(idrotm[725],90.0,328.4,90.0,58.4,0.0,0.0);
1531 AliMatrix(idrotm[726],90.0,77.5,90.0,167.5,0.0,0.0);
1532 AliMatrix(idrotm[727],90.0,107.5,90.0,197.5,0.0,0.0);
1533 AliMatrix(idrotm[728],90.0,137.5,90.0,227.5,0.0,0.0);
1534 AliMatrix(idrotm[729],90.0,167.5,90.0,257.5,0.0,0.0);
1535 AliMatrix(idrotm[730],90.0,227.5,90.0,317.5,0.0,0.0);
1536 AliMatrix(idrotm[731],90.0,257.5,90.0,347.5,0.0,0.0);
1537 AliMatrix(idrotm[732],90.0,317.5,90.0,47.5,0.0,0.0);
1538 AliMatrix(idrotm[733],90.0,197.5,90.0,287.5,0.0,0.0);
1539 AliMatrix(idrotm[734],90.0,347.5,90.0,77.5,0.0,0.0);
1540 AliMatrix(idrotm[735],90.0,47.5,90.0,137.5,0.0,0.0);
1541 AliMatrix(idrotm[768],90.0,287.5,90.0,17.5,0.0,0.0);
1542 AliMatrix(idrotm[798],90.0,17.5,90.0,107.5,0.0,0.0);
1543 }
1544
1545 // Services
1546 AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);
1547
1548 // New reference frame: z---> -z; x ---> -x; y ---> y
1549 AliMatrix(idrotm[199], 90.,180., 90.,90., 180.,0.);
1550
1551 // CONVERT INTO CM (RL(SI)=9.36 CM)
1552 for (i = 0; i < 6; ++i) {
1553 drl[i] = drl[i] / 100. * 9.36;
1554 } // end for i
1555
1556 // FIELD CAGE HALF LENGTH
1557 rlim = 50.;
1558 zmax = 74.;
1559 ztpc = 284.;
1560 // --- Define ghost volume containing the whole ITS (including services)
1561 // and fill it with air
1562 dgh[0] = 0.;
1563 dgh[1] = 360.;
1564 dgh[2] = 16.;
1565 dgh[3] = -ztpc-5.-0.1;
1566 dgh[4] = 46;
1567 dgh[5] = 85.;
1568 dgh[6] = -ztpc;
1569 dgh[7] = 46;
1570 dgh[8] = 85.;
1571 dgh[9] = -ztpc;
1572 dgh[10] = 46;
1573 dgh[11] = rlim+7.5;
1574 dgh[12] = -97.5;
1575 dgh[13] = 46;
1576 dgh[14] = rlim+7.5;
1577 dgh[15] = -zmax;
1578 dgh[16] = 46;
1579 dgh[17] = rlim+7.5;
1580 dgh[18] = -48;
1581 dgh[19] = 6;
1582 dgh[20] = rlim+7.5;
1583 dgh[21] = -28.6;
1584 dgh[22] = 6;
1585 dgh[23] = rlim+7.5;
1586 dgh[24] = -27.6;
1587 dgh[25] = 3.295;
1588 dgh[26] = rlim+7.5;
1589 dgh[27] = 27.6;
1590 dgh[28] = 3.295;
1591 dgh[29] = rlim+7.5;
1592 dgh[30] = 28.6;
1593 dgh[31] = 6;
1594 dgh[32] = rlim+7.5;
1595 dgh[33] = 48;
1596 dgh[34] = 6;
1597 dgh[35] = rlim+7.5;
1598 dgh[36] = zmax;
1599 dgh[37] = 46;
1600 dgh[38] = rlim+7.5;
1601 dgh[39] = 97.5;
1602 dgh[40] = 46;
1603 dgh[41] = rlim+7.5;
1604 dgh[42] = ztpc;
1605 dgh[43] = 62;
1606 dgh[44] = 62+4.;
1607 dgh[45] = ztpc;
1608 dgh[46] = 62;
1609 dgh[47] = 85.;
1610 dgh[48] = ztpc+4.+0.1;
1611 dgh[49] = 62.0;//62.4;
1612 dgh[50] = 85.;
1613 gMC->Gsvolu("ITSV", "PCON", idtmed[205], dgh, 51);
1614
1615 // --- Place the ghost volume in its mother volume (ALIC) and make it
1616 // invisible
1617 // gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
1618 //gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., idrotm[199], "MANY");
1619 //gMC->Gsatt("ITSV", "SEEN", 0);
1620
1621 //gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "MANY"); //=== LG
1622 gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY"); //=== LG
1623
1624
1625 // --- Define ghost volume containing the six layers and fill it with air
1626
1627// dgh[0] = 0.;
1628// dgh[1] = 360.;
1629// dgh[2] = 8.;
1630// dgh[3] = -zmax;
1631// dgh[4] = 46.;
1632// dgh[5] = rlim;
1633// dgh[6] = -47.5;
1634// dgh[7] = 6.005;
1635// dgh[8] = rlim;
1636// dgh[9] = -28.5;
1637// dgh[10] = 6.005;
1638// dgh[11] = rlim;
1639// dgh[12] = -27.5;
1640// dgh[13] = 3.3;
1641// dgh[14] = rlim;
1642// dgh[15] = 27.5;
1643// dgh[16] = 3.3;
1644// dgh[17] = rlim;
1645// dgh[18] = 28.5;
1646// dgh[19] = 6.005;
1647// dgh[20] = rlim;
1648// dgh[21] = 47.5;
1649// dgh[22] = 6.005;
1650// dgh[23] = rlim;
1651// dgh[24] = zmax;
1652// dgh[25] = 46.;
1653// dgh[26] = rlim;
1654// gMC->Gsvolu("ITSD", "PCON", idtmed[205], dgh, 27);
1655
1656 // --- Place the ghost volume in its mother volume (ITSV) and make it
1657 // invisible
1658 //gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
1659 //gMC->Gsatt("ITSD", "SEEN", 0);
1660
1661 //======================================================================
1662 // Let's make ITSD an assembly, because we can then add the new geometry
1663 // inside this volume without belonging to it.
1664 //
1665 // The 180° rotation (which was done for switching from the old
1666 // coordinate system to the new one) is applied on ITSD, not ITSV,
1667 // because ITSV will also contain the new geometry.
1668 // LG
1669 //======================================================================
1670
1671 //TGeoVolumeAssembly *dITS = new TGeoVolumeAssembly("ITSD");
1672 new TGeoVolumeAssembly("ITSD");
1673 gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., idrotm[199], "ONLY");
1674
1675
1676 // --- Define SPD (option 'b') volumes ----------------------------
1677
1678 // SPD - option 'b'
1679 // (this is the default)
1680
1681 //if (option == 2) {
1682 if (! AliITSInitGeometry::SPDIsTGeoNative()) {
1683
1684 dits[0] = 3.7;
1685 dits[1] = 7.75;
1686 dits[2] = 26.1;
1687 gMC->Gsvolu("IT12", "TUBE", idtmed[254], dits, 3);
1688
1689 dits[0] = 3.7;
1690 dits[1] = 7.7;
1691 dits[2] = 24;
1692 dits[3] = 57;
1693 dits[4] = 100;
1694 gMC->Gsvolu("I12B", "TUBS", idtmed[254], dits, 5); // sector
1695
1696 di10b[0] = 0.843;
1697 di10b[1] = ddet1+dchip1+dbus+0.0025;
1698 di10b[2] = 19.344;
1699 gMC->Gsvolu("I10B", "BOX ", idtmed[254], di10b, 3); // mother volume
1700 // on layer 1
1701
1702 di20b[0] = 0.843;
1703 di20b[1] = ddet2+dchip2+dbus+0.0025;
1704 di20b[2] = 19.344;
1705 gMC->Gsvolu("I20B", "BOX ", idtmed[254], di20b, 3); // mother volume
1706 // layer 2
1707
1708 dits[0] = 1.3673;
1709 dits[1] = 0.01;
1710 dits[2] = 24;
1711 gMC->Gsvolu("I123", "BOX ", idtmed[253], dits, 3);
1712
1713 dits[0] = 0.06;
1714 dits[1] = 0.08;
1715 dits[2] = 24;
1716 dits[3] = -36.79;
1717 dits[4] = 21.834;
1718 gMC->Gsvolu("I121", "TUBS", idtmed[253], dits, 5);
1719
1720 dits[0] = 0.1253;
1721 dits[1] = 0.01;
1722 dits[2] = 24;
1723 gMC->Gsvolu("I122", "BOX ", idtmed[253], dits, 3);
1724
1725 dits[0] = 0.04;
1726 dits[1] = 0.06 ;
1727 dits[2] = 24;
1728 dits[3] = 126.79;
1729 dits[4] = 270;
1730 gMC->Gsvolu("I120", "TUBS", idtmed[253], dits, 5);
1731
1732 dits[0] = 0.1134;
1733 dits[1] = 0.01;
1734 dits[2] = 24;
1735 gMC->Gsvolu("I144", "BOX ", idtmed[253], dits, 3);
1736
1737 dits[0] = 0.25;
1738 dits[1] = 0.06;
1739 dits[2] = 24;
1740 gMC->Gsvolu("I113", "BOX ", idtmed[254], dits, 3);
1741
1742 dits[0] = 0.077;
1743 dits[1] = 0.01;
1744 dits[2] = 24;
1745 gMC->Gsvolu("I143", "BOX ", idtmed[253], dits, 3);
1746
1747 dits[0] = 0.04;
1748 dits[1] = 0.06;
1749 dits[2] = 24;
1750 dits[3] = 0;
1751 dits[4] = 90;
1752 gMC->Gsvolu("I142", "TUBS", idtmed[253], dits, 5);
1753
1754 dits[0] = 0.0695;
1755 dits[1] = 0.01;
1756 dits[2] = 24;
1757 gMC->Gsvolu("I141", "BOX ", idtmed[253], dits, 3);
1758
1759 dits[0] = 0.06;
1760 dits[1] = 0.08;
1761 dits[2] = 24;
1762 dits[3] = 0;
1763 dits[4] = 108;
1764 gMC->Gsvolu("I140", "TUBS", idtmed[253], dits, 5);
1765
1766 dits[0] = 0.1835;
1767 dits[1] = 0.01;
1768 dits[2] = 24;
1769 gMC->Gsvolu("I139", "BOX ", idtmed[253], dits, 3);
1770
1771 dits[0] = 0.1894 ;
1772 dits[1] = 0.01;
1773 dits[2] = 24;
1774 gMC->Gsvolu("I138", "BOX ", idtmed[253], dits, 3);
1775
1776 dits[0] = 0.04;
1777 dits[1] = 0.06;
1778 dits[2] = 24;
1779 dits[3] = 0;
1780 dits[4] = 75.261;
1781 gMC->Gsvolu("I137", "TUBS", idtmed[253], dits, 5);
1782
1783 dits[0] = 1.3401;
1784 dits[1] = 0.01;
1785 dits[2] = 24;
1786 gMC->Gsvolu("I136", "BOX ", idtmed[253], dits, 3);
1787
1788 dits[0] = 0.05;
1789 dits[1] = 0.07;
1790 dits[2] = 24;
1791 dits[3] = 0;
1792 dits[4] = 72.739;
1793 gMC->Gsvolu("I135", "TUBS", idtmed[253], dits, 5);
1794
1795 dits[0] = 0.1193;
1796 dits[1] = 0.01;
1797 dits[2] = 24;
1798 gMC->Gsvolu("I134", "BOX ", idtmed[253], dits, 3);
1799
1800 dits[0] = 0.163;
1801 dits[1] = 0.01;
1802 dits[2] = 24;
1803 gMC->Gsvolu("I133", "BOX ", idtmed[253], dits, 3);
1804
1805 dits[0] = 0.04;
1806 dits[1] = 0.06;
1807 dits[2] = 24;
1808 dits[3] = 0;
1809 dits[4] = 157.633;
1810 gMC->Gsvolu("I132", "TUBS", idtmed[253], dits, 5);
1811
1812 dits[0] = 0.2497;
1813 dits[1] = 0.01;
1814 dits[2] = 24;
1815 gMC->Gsvolu("I131", "BOX ", idtmed[253], dits, 3);
1816
1817 dits[0] = 0.06;
1818 dits[1] = 0.08;
1819 dits[2] = 24;
1820 dits[3] = 0;
1821 dits[4] = 148.633;
1822 gMC->Gsvolu("I130", "TUBS", idtmed[253], dits, 5);
1823
1824 dits[0] = 0.292;
1825 dits[1] = 0.01;
1826 dits[2] = 24;
1827 gMC->Gsvolu("I129", "BOX ", idtmed[253], dits, 3);
1828
1829 dits[0] = 0.163;
1830 dits[1] = 0.01;
1831 dits[2] = 24;
1832 gMC->Gsvolu("I128", "BOX ", idtmed[253], dits, 3);
1833
1834 dits[0] = 0.04;
1835 dits[1] = 0.06;
1836 dits[2] = 24;
1837 dits[3] = 0;
1838 dits[4] = 161.297;
1839 gMC->Gsvolu("I126", "TUBS", idtmed[253], dits, 5);
1840
1841 dits[0] = 0.2433;
1842 dits[1] = 0.01;
1843 dits[2] = 24;
1844 gMC->Gsvolu("I125", "BOX ", idtmed[253], dits, 3);
1845
1846 dits[0] = 0.06;
1847 dits[1] = 0.08;
1848 dits[2] = 24;
1849 dits[3] = 0;
1850 dits[4] = 42.883;
1851 gMC->Gsvolu("I124", "TUBS", idtmed[253], dits, 5);
1852
1853 dits[0] = 0.793;
1854 dits[1] = ddet1+dchip1+dbus+0.0025;
1855 dits[2] = 2.5;
1856 gMC->Gsvolu("I105", "BOX ", idtmed[290], dits, 3);
1857
1858 di107[0] = 0.793;
1859 di107[1] = ddet1+dchip1;
1860 di107[2] = 3.536;
1861 gMC->Gsvolu("I107", "BOX ", idtmed[254], di107, 3); // contains det and chip
1862 // layer 1
1863 dits[0] = 0.705;
1864 dits[1] = 0.01;
1865 dits[2] = 2.5;
1866 gMC->Gsvolu("I109", "BOX ", idtmed[275], dits, 3);
1867
1868 di108[0] = 0.705;
1869 di108[1] = dbus;
1870 di108[2] = 14.344;
1871 gMC->Gsvolu("I108", "BOX ", idtmed[275], di108, 3); // bus for both layers
1872
1873 di1d7[0] = 0.7975;
1874 di1d7[1] = ddet2+dchip2;
1875 di1d7[2] = 3.536;
1876 gMC->Gsvolu("I1D7", "BOX ", idtmed[254], di1d7, 3); // contains det and chip
1877 // layer 2
1878 dits[0] = 0.06;
1879 dits[1] = 0.08;
1880 dits[2] = 24;
1881 dits[3] = 0;
1882 dits[4] = 80;
1883 gMC->Gsvolu("I112", "TUBS", idtmed[253], dits, 5);
1884
1885 dits[0] = 0.04;
1886 dits[1] = 0.06;
1887 dits[2] = 24;
1888 dits[3] = 0;
1889 dits[4] = 80;
1890 gMC->Gsvolu("I111", "TUBS", idtmed[253], dits, 5);
1891
1892 dits[0] = 0.15;
1893 dits[1] = 0.0146;
1894 dits[2] = 24;
1895 gMC->Gsvolu("I118", "BOX ", idtmed[273], dits, 3);
1896
1897 dits[0] = 0.1315;
1898 dits[1] = 0.01;
1899 dits[2] = 24;
1900 gMC->Gsvolu("I110", "BOX ", idtmed[253], dits, 3);
1901
1902 dits[0] = 0.025;
1903 dits[1] = 0.035;
1904 dits[2] = 24;
1905 dits[3] = 0;
1906 dits[4] = 180;
1907 gMC->Gsvolu("I114", "TUBS", idtmed[264], dits, 5);
1908
1909 dits[0] = 0;
1910 dits[1] = 0.025;
1911 dits[2] = 24;
1912 dits[3] = 0;
1913 dits[4] = 180;
1914 gMC->Gsvolu("I115", "TUBS", idtmed[211], dits, 5); // set freon as cooling fluid
1915
1916
1917 dits[0] = 0.063;
1918 dits[1] = 0.035;
1919 dits[2] = 24;
1920 gMC->Gsvolu("I116", "BOX ", idtmed[264], dits, 3);
1921
1922 di106[0] = 0.7975;
1923 di106[1] = dchip1;
1924 di106[2] = 0.68;
1925 gMC->Gsvolu("I106", "BOX ", idtmed[201], di106, 3); // chip layer 1
1926
1927 di1d6[0] = 0.7975;
1928 di1d6[1] = dchip2;
1929 di1d6[2] = 0.68;
1930 gMC->Gsvolu("I1D6", "BOX ", idtmed[201], di1d6, 3); // chip layer 2
1931
1932 di101[0] = 0.705;
1933 di101[1] = ddet1;
1934 di101[2] = 3.536;
1935 gMC->Gsvolu("I101", "BOX ", idtmed[250], di101, 3); // contains detector
1936 // layer 1
1937 di1d1[0] = 0.705;
1938 di1d1[1] = ddet2;
1939 di1d1[2] = 3.536;
1940 gMC->Gsvolu("I1D1", "BOX ", idtmed[250], di1d1, 3); // contains detector
1941 // layer 2
1942
1943
1944 dits[0] = 0.063;
1945 dits[1] = 0.025;
1946 dits[2] = 24;
1947 gMC->Gsvolu("I117", "BOX ", idtmed[211], dits, 3); // set freon as cooling fluid
1948
1949
1950 dits1[0] = 0.64;
1951 dits1[1] = ddet1;
1952 dits1[2] = 3.48;
1953 gMC->Gsvolu("ITS1", "BOX ", idtmed[200], dits1, 3); // detector layer 1
1954
1955 dits2[0] = 0.64;
1956 dits2[1] = ddet2;
1957 dits2[2] = 3.48;
1958 gMC->Gsvolu("ITS2", "BOX ", idtmed[200], dits2, 3); // detector layer 2
1959
1960 dits[0] = 3.701;
1961 dits[1] = 7.699;
1962 dits[2] = 4;
1963 dits[3] = 57.1;
1964 dits[4] = 99.9;
1965 gMC->Gsvolu("I650", "TUBS", idtmed[254], dits, 5); // was I150 in old geom.
1966
1967 dits[0] = 3.7;
1968 dits[1] = 7.75;
1969 dits[2] = 0.05;
1970 gMC->Gsvolu("I651", "TUBE", idtmed[296], dits, 3); // services disk
1971
1972 dits[0] = 0;
1973 dits[1] = 0.5;
1974 dits[2] = 1.5;
1975 gMC->Gsvolu("I676", "TUBE", idtmed[274], dits, 3); // was I176 in old geom.
1976
1977 dits[0] = 0;
1978 dits[1] = 0.18;
1979 dits[2] = 0.8;
1980 gMC->Gsvolu("I673", "TUBE", idtmed[274], dits, 3); // was I173 in old geom.
1981
1982 dits[0] = 0;
1983 dits[1] = 0.18;
1984 dits[2] = 3;
1985 gMC->Gsvolu("I671", "TUBE", idtmed[274], dits, 3); // was I171 in old geom.
1986
1987 dits[0] = 0;
1988 dits[1] = 0.075;
1989 dits[2] = 0.8;
1990 gMC->Gsvolu("I669", "TUBE", idtmed[264], dits, 3); // was I169 in old geom.
1991
1992 dits[0] = 3.5;
1993 dits[1] = 5.6;
1994 dits[2] = 0.55;
1995 dits[3] = 0;
1996 dits[4] = 38;
1997 gMC->Gsvolu("I667", "TUBS", idtmed[263], dits, 5); // was I167 in old geom.
1998
1999 dits[0] = 6.6;
2000 dits[1] = 7.6;
2001 dits[2] = 0.5;
2002 dits[3] = 0;
2003 dits[4] = 9;
2004 gMC->Gsvolu("I666", "TUBS", idtmed[263], dits, 5); // was I166 in old geom.
2005
2006 dits[0] = 0.26;
2007 dits[1] = 0.32;
2008 dits[2] = 0.55;
2009 gMC->Gsvolu("I678", "TUBE", idtmed[263], dits, 3); // was I178 in old geom.
2010
2011 dits[0] = 0;
2012 dits[1] = 0.3;
2013 dits[2] = 1.5;
2014 gMC->Gsvolu("I677", "TUBE", idtmed[211], dits, 3); //set freon as cooling fluid
2015 // was I177 in old geom.
2016
2017 dits[0] = 0.07;
2018 dits[1] = 0.125;
2019 dits[2] = 0.3;
2020 gMC->Gsvolu("I675", "TUBE", idtmed[263], dits, 3); // was I175 in old geom.
2021
2022
2023 dits[0] = 0;
2024 dits[1] = 0.1;
2025 dits[2] = 0.8;
2026 gMC->Gsvolu("I674", "TUBE", idtmed[211], dits, 3); //set freon as cooling fluid
2027 // was I174 in old geom.
2028
2029
2030
2031 dits[0] = 0;
2032 dits[1] = 0.1;
2033 dits[2] = 3;
2034 gMC->Gsvolu("I672", "TUBE", idtmed[211], dits, 3); //set freon as cooling fluid
2035 // was I172 in old geom.
2036
2037
2038 dits[0] = 0;
2039 dits[1] = 0.0746;
2040 dits[2] = 0.8;
2041 gMC->Gsvolu("I670", "TUBE", idtmed[211], dits, 3); //set freon as cooling fluid
2042 // was I170 in old geom.
2043
2044 dits[0] = 3.7;
2045 dits[1] = 5.4;
2046 dits[2] = 0.35;
2047 dits[3] = 2;
2048 dits[4] = 36;
2049 gMC->Gsvolu("I668", "TUBS", idtmed[211], dits, 5); //set freon as cooling fluid
2050 // was I168 in old geom.
2051
2052 }
2053
2054 // --- Define SDD volumes ------------------------------------------
2055
108bd0fe 2056 cos30 = cos(30.*3.14159/180.);
2057 sin30 = sin(30.*3.14159/180.);
2058
2059 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
2060
2061 Double_t maxRadius = 28.5;
2062 dits[0] = 0;
2063 dits[1] = 360;
2064 dits[2] = 6;
2065 dits[3] = -34.6;
2066 dits[4] = 23.49;
2067 dits[5] = maxRadius;
2068 dits[6] = -27.35;
2069 dits[7] = 23.49;
2070 dits[8] = maxRadius;
2071 dits[9] = -27.35;
2072 dits[10] = 14.59;
2073 dits[11] = maxRadius;
2074 dits[12] = 27.35;
2075 dits[13] = 14.59;
2076 dits[14] = maxRadius;
2077 dits[15] = 27.35;
2078 dits[16] = 23.49;
2079 dits[17] = maxRadius;
2080 dits[18] = 34.6;
2081 dits[19] = 23.49;
2082 dits[20] = maxRadius;
2083 gMC->Gsvolu("IT34", "PCON", idtmed[209], dits, 21);
2084
2085 // block of the SDD electronics and related ladder frame
2086 iI018dits[0] = 3.2;
2087 iI018dits[1] = 2;
2088 iI018dits[2] = 3.65;
2089 gMC->Gsvolu("I018", "BOX ", idtmed[209], iI018dits, 3);
2090
2091 // block of the SDD end ladder
2092 iI024dits[0] = 3.2;
2093 iI024dits[1] = 2;
2094 iI024dits[2] = 2.725;
2095 gMC->Gsvolu("I024", "BOX ", idtmed[209], iI024dits, 3);
2096
2097 // ladder frame of layer 3 - F.T. March,7-2001
2098 iI047dits[0] = iI018dits[0];
2099 iI047dits[1] = iI018dits[1];
2100 iI047dits[2] = 6*iI018dits[2] + 2*iI024dits[2];
2101 gMC->Gsvolu("I047", "BOX ", idtmed[209], iI047dits, 3);
2102
2103 // ladder frame of layer 4 - F.T. March,7-2001
2104 iI048dits[0] = iI018dits[0];
2105 iI048dits[1] = iI018dits[1];
2106 iI048dits[2] = 8*iI018dits[2] + 2*iI024dits[2];
2107 gMC->Gsvolu("I048", "BOX ", idtmed[209], iI048dits, 3);
2108
2109
2110 // global SDD volume (sensitive + insensitive)
2111 iI302dits[0] = 3.6250;
2112 iI302dits[1] = 0.0150;
2113 iI302dits[2] = 4.3794;
2114 gMC->Gsvolu("I302", "BOX ", idtmed[278], iI302dits, 3);
2115
2116 // Like for I302 - F.T. March,7-2001
2117 iI402dits[0] = 3.6250;
2118 iI402dits[1] = 0.0150;
2119 iI402dits[2] = 4.3794;
2120 gMC->Gsvolu("I402", "BOX ", idtmed[278], iI402dits, 3);
2121
2122 // SDD ladder of layer 3 - F.T. March,7-2001
2123 iI004dits[0] = iI302dits[0]+0.005;
2124 iI004dits[1] = 2*iI302dits[1]+ySDDsep/2.;
2125 iI004dits[2] = TMath::Abs(zSDDlay3[0]);
2126 if (iI004dits[2] < TMath::Abs(zSDDlay3[5])) {
2127 iI004dits[2] = TMath::Abs(zSDDlay3[5]);
2128 }
2129 iI004dits[2] = iI004dits[2] + iI302dits[2];
2130 gMC->Gsvolu("I004", "BOX ", idtmed[209], iI004dits, 3);
2131
2132 // SDD ladder of layer 4 - F.T. March,7-2001
2133 iI005dits[0] = iI402dits[0]+0.005;
2134 iI005dits[1] = 2*iI402dits[1]+ySDDsep/2.;
2135 iI005dits[2] = TMath::Abs(zSDDlay4[0]);
2136 if (iI005dits[2] < TMath::Abs(zSDDlay4[7])) {
2137 iI005dits[2] = TMath::Abs(zSDDlay4[7]);
2138 }
2139 iI005dits[2] = iI005dits[2] + iI402dits[2];
2140 gMC->Gsvolu("I005", "BOX ", idtmed[209], iI005dits, 3);
2141
2142
2143 // -- block of the SDD ladder foot and end ladder
2144
2145 // ladder foot mother volume
2146 iI028dits[0] = 3.0000;
2147 iI028dits[1] = 0.4000;
2148 iI028dits[2] = 0.9000;
2149 gMC->Gsvolu("I028", "BOX ", idtmed[224], iI028dits, 3);
2150
2151 // positioning-box #1 at SDD end-ladder - F.T. March,7-2001
2152 iI420dits[0] = 0.4500;
2153 iI420dits[1] = 0.4000;
2154 iI420dits[2] = 0.4500;
2155 gMC->Gsvolu("I420", "BOX ", idtmed[264], iI420dits, 3);
2156
2157 // positioning-box #2 at SDD end-ladder - F.T. March,7-2001
2158 iI421dits[0] = 0.;
2159 iI421dits[1] = 0.25;
2160 iI421dits[2] = iI420dits[1];
2161 gMC->Gsvolu("I421", "TUBE", idtmed[209], iI421dits, 3);
2162
2163 // reference ruby-sphere at SDD end-ladder - F.T. March,7-2001
2164 iI422dits[0] = 0.0000;
2165 iI422dits[1] = 0.2000;
2166 iI422dits[2] = 0.0000;
2167 iI422dits[3] = 180.00;
2168 iI422dits[4] = 0.0000;
2169 iI422dits[5] = 360.00;
2170 gMC->Gsvolu("I422", "SPHE", idtmed[277], iI422dits, 6);
2171
2172 // support for ruby-sphere (I422) - F.T. March,7-2001
2173 iI423dits[0] = 0.0000;
2174 iI423dits[1] = 0.1000;
2175 iI423dits[2] = (iI420dits[1]-iI422dits[1])/2.;
2176 gMC->Gsvolu("I423", "TUBE", idtmed[264], iI423dits, 3);
2177
2178 // passage for HV microcables - F.T. March,7-2001
2179 iI424dits[0] = 1.5000;
2180 iI424dits[1] = 0.1500;
2181 iI424dits[2] = iI421dits[2];
2182 gMC->Gsvolu("I424", "BOX ", idtmed[209], iI424dits, 3);
2183
2184 // HV microcables segment at the end ladder - F.T. March,7-2001
2185 iI425dits[0] = 1.350000;
2186 iI425dits[1] = 0.015250;
2187 iI425dits[2] = iI024dits[2];
2188 gMC->Gsvolu("I425", "BOX ", idtmed[279], iI425dits, 3);
2189
2190 // lower edge of SDD ladder frame at end-ladder - part 1
2191 dits[0] = 0.2;
2192 dits[1] = 0.1815;
2193 dits[2] = iI024dits[2];
2194 dits[3] = 0.015;
2195 gMC->Gsvolu("I025", "TRD1", idtmed[208], dits, 4);
2196
2197 // lower edge of SDD ladder frame at end-ladder - part 2
2198 dits[0] = 0.183;
2199 dits[1] = 0.165;
2200 dits[2] = iI024dits[2];
2201 dits[3] = 0.015;
2202 gMC->Gsvolu("I026", "TRD1", idtmed[208], dits, 4);
2203
2204 // new: for the 1st top rod of the structure
2205 // at the end-ladder - F.T. March,7-2001
2206 iI029dits[0] = 0.2;
2207 iI029dits[1] = 0.1815;
2208 iI029dits[2] = 1.0100;
2209 iI029dits[3] = 0.015;
2210 gMC->Gsvolu("I029", "TRD1", idtmed[208], iI029dits, 4);
2211
2212 // new: for the 2nd top rod of the structure
2213 // at the end-ladder - F.T. March,7-2001
2214 iI030dits[0] = 0.1830;
2215 iI030dits[1] = 0.1650;
2216 iI030dits[2] = 1.0100;
2217 iI030dits[3] = 0.0150;
2218 gMC->Gsvolu("I030", "TRD1", idtmed[208], iI030dits, 4);
2219
2220 // inox cooling tubes for the end ladder - F.T. March,7-2001
2221 iI031dits[0] = 0.093;
2222 iI031dits[1] = 0.1;
2223 iI031dits[2] = iI024dits[2];
2224 gMC->Gsvolu("I031", "TUBE", idtmed[264], iI031dits, 3);
2225
2226 if (fluid == 1) {
2227 // cooling water for the end ladder - F.T. March,7-2001
2228 iI032dits[0] = 0;
2229 iI032dits[1] = iI031dits[0];
2230 iI032dits[2] = iI024dits[2];
2231 gMC->Gsvolu("I032", "TUBE", idtmed[211], iI032dits, 3);
2232 } else {
2233 // cooling freon for the end ladder - R.B. March,21-2001
2234 iI032dits[0] = 0;
2235 iI032dits[1] = iI031dits[0];
2236 iI032dits[2] = iI024dits[2];
2237 gMC->Gsvolu("I032", "TUBE", idtmed[212], iI032dits, 3);
2238 }
2239
2240 // -- block of the SDD ladder frame holding the electronics
2241
2242 // edge of the ladder frame - part 1
2243 dits[0] = 0.2;
2244 dits[1] = 0.182;
2245 dits[2] = 3.65;
2246 dits[3] = 0.015;
2247 gMC->Gsvolu("I019", "TRD1", idtmed[208], dits, 4);
2248
2249 // edge of the ladder frame - part 2
2250 dits[0] = 0.183;
2251 dits[1] = 0.165;
2252 dits[2] = 3.65;
2253 dits[3] = 0.015;
2254 gMC->Gsvolu("I020", "TRD1", idtmed[208], dits, 4);
2255
2256 // inclined segments of the ladder frame
2257 dits[0] = 2.23;
2258 dits[1] = 2.1;
2259 dits[2] = 0.05;
2260 dits[3] = 0.03;
2261 gMC->Gsvolu("I021", "TRD1", idtmed[208], dits, 4);
2262
2263 // horiz.segments of the ladders, normal to ladder edges
2264 dits[0] = 2.1;
2265 dits[1] = 2;
2266 dits[2] = 0.06;
2267 dits[3] = 0.04;
2268 gMC->Gsvolu("I022", "TRD1", idtmed[208], dits, 4);
2269
2270 // horiz.segments of the ladders, at 45 deg. to ladder edges
2271 dits[0] = 2.615;
2272 dits[1] = 2.465;
2273 dits[2] = 0.06;
2274 dits[3] = 0.04;
2275 gMC->Gsvolu("I023", "TRD1", idtmed[208], dits, 4);
2276
2277 // supports of the ceramic pins holding the detectors
2278 dits[0] = 0.3;
2279 dits[1] = 0.05;
2280 dits[2] = 0.15;
2281 gMC->Gsvolu("I033", "BOX ", idtmed[208], dits, 3);
2282
2283 // ceramic pins holding the detectors
2284 dits[0] = 0;
2285 dits[1] = 0.05;
2286 dits[2] = 0.225;
2287 gMC->Gsvolu("I034", "TUBE", idtmed[277], dits, 3);
2288
2289 // holders of cooling tubes
2290 iI035dits[0] = 0.1;
2291 iI035dits[1] = 0.15;
2292 iI035dits[2] = 0.2;
2293 gMC->Gsvolu("I035", "TUBE", idtmed[208], iI035dits, 3);
2294
2295 // top holders of microcables
2296 dits[0] = 0.2;
2297 dits[1] = 0.01;
2298 dits[2] = 0.05;
2299 gMC->Gsvolu("I036", "BOX ", idtmed[208], dits, 3);
2300
2301 // inox cooling tubes - F.T. March,7-2001
2302 iI037dits[0] = 0.093;
2303 iI037dits[1] = 0.1;
2304 iI037dits[2] = iI018dits[2];
2305 gMC->Gsvolu("I037", "TUBE", idtmed[264], iI037dits, 3);
2306
2307 if (fluid == 1) {
2308 // cooling water - F.T. March,7-2001
2309 iI038dits[0] = 0;
2310 iI038dits[1] = iI037dits[0];
2311 iI038dits[2] = iI018dits[2];
2312 gMC->Gsvolu("I038", "TUBE", idtmed[211], iI038dits, 3);
2313 } else {
2314 // cooling freon - R.B. March,21-2001
2315 iI038dits[0] = 0;
2316 iI038dits[1] = iI037dits[0];
2317 iI038dits[2] = iI018dits[2];
2318 gMC->Gsvolu("I038", "TUBE", idtmed[212], iI038dits, 3);
2319 }
2320 // -- block of the SDD electronics (heat bridge, chips, hybrid, anode microcable)
2321
2322 // SDD heat bridge - F.T. March,7-2001
2323 iI039dits[0] = 1.1000;
2324 iI039dits[1] = 0.0087;
2325 iI039dits[2] = 3.2500;
2326 gMC->Gsvolu("I039", "BOX ", idtmed[268], iI039dits, 3);
2327
2328 // SDD clip part 1
2329 dits[0] = 0.25;
2330 dits[1] = 0.01;
2331 dits[2] = iI039dits[2];
2332 gMC->Gsvolu("I040", "BOX ", idtmed[268], dits, 3);
2333
2334 // SDD clip part 2
2335 iI041dits[0] = 0.1;
2336 iI041dits[1] = 0.12;
2337 iI041dits[2] = iI039dits[2];
2338 iI041dits[3] = 90;
2339 iI041dits[4] = 320;
2340 gMC->Gsvolu("I041", "TUBS", idtmed[268], iI041dits, 5);
2341
2342
2343 // SDD PASCAL - F.T. March,7-2001
2344 iI042dits[0] = 0.5000;
2345 iI042dits[1] = 0.0175;
2346 iI042dits[2] = 0.5000;
2347 gMC->Gsvolu("I042", "BOX ", idtmed[206], iI042dits, 3);
2348
2349 // SDD AMBRA - F.T. March,7-2001
2350 iI043dits[0] = 0.3500;
2351 iI043dits[1] = 0.0175;
2352 iI043dits[2] = 0.5000;
2353 gMC->Gsvolu("I043", "BOX ", idtmed[206], iI043dits, 3);
2354
2355 // SDD capacitors - F.T. March,7-2001
2356 iI051dits[0] = 0.1400;
2357 iI051dits[1] = 0.0350;
2358 iI051dits[2] = 0.0625;
2359 gMC->Gsvolu("I051", "BOX ", idtmed[276], iI051dits, 3);
2360
2361 // SDD hybrid circuit - F.T. March,7-2001
2362 iI052dits[0] = 1.725000;
2363 iI052dits[1] = 0.003743;
2364 iI052dits[2] = iI039dits[2];
2365 gMC->Gsvolu("I052", "BOX ", idtmed[281], iI052dits, 3);
2366
2367 // SDD anode microcable : changed - F.T. March,7-2001
2368 iI044dits[0] = iI018dits[2];
2369 iI044dits[1] = iI039dits[2];
2370 iI044dits[2] = 0.00084;
2371 iI044dits[3] = (15.189149/(iI044dits[0]+iI044dits[1]))/2;
2372 gMC->Gsvolu("I044", "TRD1", idtmed[282], iI044dits, 4);
2373 volI044 = ((2*iI044dits[0] + 2*iI044dits[1]) * 2*iI044dits[2])/2 * 2*iI044dits[3];
2374
2375 // SDD electronics box - F.T. March,7-2001
2376 iI050dits[1] = iI039dits[1]+iI052dits[1]+iI051dits[1]+iI044dits[2];
2377 iI050dits[0] = iI018dits[1]/cos(30.*3.14159/180.)-iI050dits[1]*sin(30.*3.14159/180.);
2378 iI050dits[2] = iI018dits[2];
2379 gMC->Gsvolu("I050", "BOX ", idtmed[209], iI050dits, 3);
2380
2381 // SDD sensitive volume
2382 dits[0] = 3.50850;
2383 dits[1] = 0.01499; // not 0.015 because it is included into I302 which is 0.015
2384 dits[2] = 3.76320;
2385 gMC->Gsvolu("ITS3", "BOX ", idtmed[200], dits, 3);
2386
2387 // Like for ITS3 - F.T. March,7-2001
2388 dits[0] = 3.50850;
2389 dits[1] = 0.01499; // not 0.015 because it is included into I402 which is 0.015
2390 dits[2] = 3.76320;
2391 gMC->Gsvolu("ITS4", "BOX ", idtmed[200], dits, 3);
2392 }
2393
2394 // --- Define SSD volumes ------------------------------------------
2395
2396 if (! AliITSInitGeometry::SSDIsTGeoNative()) {
2397 dits[0] = 0;
2398 dits[1] = 360;
2399 dits[2] = 6;
2400 dits[3] = -57.45;
2401 dits[4] = 43.6;
2402 dits[5] = 48;
2403 dits[6] = -49.15;
2404 dits[7] = 43.6;
2405 dits[8] = 48;
2406 dits[9] = -49.15;
2407 dits[10] = 36.9;
2408 dits[11] = 48;
2409 dits[12] = 50.55;
2410 dits[13] = 36.9;
2411 dits[14] = 48;
2412 dits[15] = 50.55;
2413 dits[16] = 43.6;
2414 dits[17] = 48;
2415 dits[18] = 57.45;
2416 dits[19] = 43.6;
2417 dits[20] = 48;
2418 //gMC->Gsvolu("IT56", "PCON", idtmed[220], dits, 21); // SSD air
2419 gMC->Gsvolu("IT56", "PCON", idtmed[204], dits, 21); // air
2420
2421 dits[0] = 3.4;
2422 dits[1] = 1.955;
2423 dits[2] = 56.5;
2424 gMC->Gsvolu("I570", "BOX ", idtmed[204], dits, 3);
2425
2426 dits[0] = 3.75;
2427 dits[1] = 0.045;
2428 dits[2] = 50.975;
2429 gMC->Gsvolu("I569", "BOX ", idtmed[204], dits, 3);
2430
2431 dits[0] = 3.4;
2432 dits[1] = 1.955;
2433 dits[2] = 47;
2434 gMC->Gsvolu("I571", "BOX ", idtmed[204], dits, 3);
2435
2436 dits[0] = 3.75;
2437 dits[1] = 0.045;
2438 dits[2] = 43.3;
2439 gMC->Gsvolu("I565", "BOX ", idtmed[204], dits, 3);
2440
2441 dits[0] = 3.4;
2442 dits[1] = 1.955;
2443 dits[2] = 3.15;
2444 gMC->Gsvolu("I553", "BOX ", idtmed[204], dits, 3);
2445
2446 dits[0] = 3.405;
2447 dits[1] = 1.955;
2448 dits[2] = 1.955;
2449 gMC->Gsvolu("I523", "BOX ", idtmed[204], dits, 3);
2450
2451 dits[0] = 3.75;
2452 dits[1] = 0.015;
2453 dits[2] = 2.1;
2454 gMC->Gsvolu("I566", "BOX ", idtmed[206], dits, 3);
2455
2456 dits[0] = 3.4;
2457 dits[1] = 1.955;
2458 dits[2] = 3.15;
2459 gMC->Gsvolu("I544", "BOX ", idtmed[204], dits, 3);
2460
2461 dits[0] = 3.41;
2462 dits[1] = 1.955;
2463 dits[2] = 1.955;
2464 gMC->Gsvolu("I516", "BOX ", idtmed[204], dits, 3);
2465
2466 dits[0] = 3.75;
2467 dits[1] = 0.015;
2468 dits[2] = 2.1;
2469 gMC->Gsvolu("I562", "BOX ", idtmed[206], dits, 3);
2470
2471 if (fluid == 1) {
2472 dits[0] = 0;
2473 dits[1] = 0.07;
2474 dits[2] = 3.15;
2475 gMC->Gsvolu("I559", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
2476 } else {
2477 dits[0] = 0;
2478 dits[1] = 0.07;
2479 dits[2] = 3.15;
2480 gMC->Gsvolu("I559", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
2481 }
2482
2483 dits[0] = 0.07;
2484 dits[1] = 0.1;
2485 dits[2] = 3.15;
2486 gMC->Gsvolu("I560", "TUBE", idtmed[210], dits, 3);
2487
2488 dits[0] = 0.225;
2489 dits[1] = 0.195;
2490 dits[2] = 3.15;
2491 dits[3] = 0.025;
2492 gMC->Gsvolu("I558", "TRD1", idtmed[203], dits, 4);
2493
2494 dits[0] = 0.25;
2495 dits[1] = 0.22;
2496 dits[2] = 3.15;
2497 dits[3] = 0.025;
2498 gMC->Gsvolu("I557", "TRD1", idtmed[203], dits, 4);
2499
2500 dits[0] = 2.17;
2501 dits[1] = 0.035;
2502 dits[2] = 0.05;
2503 gMC->Gsvolu("I556", "BOX ", idtmed[203], dits, 3);
2504
2505 dits[0] = 2 ;
2506 dits[1] = 0.035;
2507 dits[2] = 0.05;
2508 gMC->Gsvolu("I554", "BOX ", idtmed[203], dits, 3);
2509
2510 dits[0] = 2.675;
2511 dits[1] = 0.035;
2512 dits[2] = 0.05;
2513 gMC->Gsvolu("I555", "BOX ", idtmed[203], dits, 3);
2514
2515 dits[0] = 0.3;
2516 dits[1] = 0.15;
2517 dits[2] = 0.15;
2518 gMC->Gsvolu("I561", "BOX ", idtmed[203], dits, 3);
2519
2520 dits[0] = 0.025;
2521 dits[1] = 0.025;
2522 dits[2] = 0.05;
2523 gMC->Gsvolu("I519", "BOX ", idtmed[214], dits, 3);
2524
2525 dits[0] = 0.304;
2526 dits[1] = 0.0275;
2527 dits[2] = 0.432;
2528 gMC->Gsvolu("I521", "BOX ", idtmed[206], dits, 3);
2529
2530 dits[0] = 0.16;
2531 dits[1] = 0.08;
2532 dits[2] = 0.08;
2533 gMC->Gsvolu("I520", "BOX ", idtmed[214], dits, 3);
2534
2535 dits[0] = 3.4;
2536 dits[1] = 0.015;
2537 dits[2] = 0.525;
2538 gMC->Gsvolu("I518", "BOX ", idtmed[203], dits, 3);
2539
2540 dits[0] = 0.15;
2541 dits[1] = 0.105;
2542 dits[2] = 0.29;
2543 dits[3] = 0.08;
2544 gMC->Gsvolu("I522", "TRD1", idtmed[203], dits, 4);
2545
2546 dits[0] = 0.07;
2547 dits[1] = 0.1;
2548 dits[2] = 1.955;
2549 gMC->Gsvolu("I542", "TUBE", idtmed[210], dits, 3);
2550
2551 if (fluid == 1) {
2552 dits[0] = 0;
2553 dits[1] = 0.07;
2554 dits[2] = 1.955;
2555 gMC->Gsvolu("I541", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
2556 } else {
2557 dits[0] = 0;
2558 dits[1] = 0.07;
2559 dits[2] = 1.955;
2560 gMC->Gsvolu("I541", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
2561 }
2562
2563 dits[0] = 0.3;
2564 dits[1] = 0.15;
2565 dits[2] = 0.15;
2566 gMC->Gsvolu("I543", "BOX ", idtmed[203], dits, 3);
2567
2568 dits[0] = 0.25;
2569 dits[1] = 0.22;
2570 dits[2] = 1.955;
2571 dits[3] = 0.025;
2572 gMC->Gsvolu("I537", "TRD1", idtmed[203], dits, 4);
2573
2574 dits[0] = 0.225;
2575 dits[1] = 0.195;
2576 dits[2] = 1.955;
2577 dits[4] = 0.025;
2578 gMC->Gsvolu("I538", "TRD1", idtmed[203], dits, 4);
2579
2580 dits[0] = 2.17;
2581 dits[1] = 0.035;
2582 dits[2] = 0.05;
2583 gMC->Gsvolu("I536", "BOX ", idtmed[203], dits, 3);
2584
2585 dits[0] = 2.675;
2586 dits[1] = 0.035;
2587 dits[2] = 0.05;
2588 gMC->Gsvolu("I535", "BOX ", idtmed[203], dits, 3);
2589
2590 dits[0] = 2;
2591 dits[1] = 0.035;
2592 dits[2] = 0.05;
2593 gMC->Gsvolu("I534", "BOX ", idtmed[203], dits, 3);
2594
2595 dits[0] = 0;
2596 dits[1] = 0.05;
2597 dits[2] = 0.17;
2598 gMC->Gsvolu("I540", "TUBE", idtmed[203], dits, 3);
2599
2600 dits[0] = 0;
2601 dits[1] = 0.05;
2602 dits[2] = 0.205;
2603 gMC->Gsvolu("I539", "TUBE", idtmed[203], dits, 3);
2604
2605 dits[0] = 3.65;
2606 dits[1] = 0.015;
2607 dits[2] = 2;
2608 gMC->Gsvolu("ITS6", "BOX ", idtmed[200], dits, 3);
2609
2610 if (fluid == 1) {
2611 dits[0] = 0;
2612 dits[1] = 0.07;
2613 dits[2] = 3.15;
2614 gMC->Gsvolu("I550", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
2615 } else {
2616 dits[0] = 0;
2617 dits[1] = 0.07;
2618 dits[2] = 3.15;
2619 gMC->Gsvolu("I550", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
2620 }
2621
2622 dits[0] = 0.07;
2623 dits[1] = 0.1;
2624 dits[2] = 3.15;
2625 gMC->Gsvolu("I551", "TUBE", idtmed[210], dits, 3);
2626
2627 dits[0] = 0.225;
2628 dits[1] = 0.195;
2629 dits[2] = 3.15;
2630 dits[3] = 0.025;
2631 gMC->Gsvolu("I549", "TRD1", idtmed[203], dits, 4);
2632
2633 dits[0] = 0.25;
2634 dits[1] = 0.22;
2635 dits[2] = 3.15;
2636 dits[3] = 0.025;
2637 gMC->Gsvolu("I548", "TRD1", idtmed[203], dits, 4);
2638
2639 dits[0] = 2.17;
2640 dits[1] = 0.035;
2641 dits[2] = 0.05;
2642 gMC->Gsvolu("I547", "BOX ", idtmed[203], dits, 3);
2643
2644 dits[0] = 2;
2645 dits[1] = 0.035;
2646 dits[2] = 0.05;
2647 gMC->Gsvolu("I545", "BOX ", idtmed[203], dits, 3);
2648
2649 dits[0] = 2.675;
2650 dits[1] = 0.035;
2651 dits[2] = 0.05;
2652 gMC->Gsvolu("I546", "BOX ", idtmed[203], dits, 3);
2653
2654 dits[0] = 0.3;
2655 dits[1] = 0.15;
2656 dits[2] = 0.15;
2657 gMC->Gsvolu("I552", "BOX ", idtmed[203], dits, 3);
2658
2659 dits[0] = 0.304;
2660 dits[1] = 0.0275;
2661 dits[2] = 0.4322;
2662 gMC->Gsvolu("I515", "BOX ", idtmed[206], dits, 3);
2663
2664 dits[0] = 0.025;
2665 dits[1] = 0.025;
2666 dits[2] = 0.05;
2667 gMC->Gsvolu("I513", "BOX ", idtmed[214], dits, 3);
2668
2669 dits[0] = 0.16;
2670 dits[1] = 0.08;
2671 dits[2] = 0.08;
2672 gMC->Gsvolu("I514", "BOX ", idtmed[214], dits, 3);
2673
2674 dits[0] = 3.4;
2675 dits[1] = 0.015;
2676 dits[2] = 0.525;
2677 gMC->Gsvolu("I512", "BOX ", idtmed[203], dits, 3);
2678
2679 dits[0] = 0.225;
2680 dits[1] = 0.195;
2681 dits[2] = 1.955;
2682 dits[3] = 0.025;
2683 gMC->Gsvolu("I528", "TRD1", idtmed[203], dits, 4);
2684
2685 dits[0] = 0.25;
2686 dits[1] = 0.22;
2687 dits[2] = 1.955;
2688 dits[3] = 0.025;
2689 gMC->Gsvolu("I527", "TRD1", idtmed[203], dits, 4);
2690
2691 dits[0] = 2.17;
2692 dits[1] = 0.035;
2693 dits[2] = 0.05;
2694 gMC->Gsvolu("I526", "BOX ", idtmed[203], dits, 3);
2695
2696 dits[0] = 2.675;
2697 dits[1] = 0.035;
2698 dits[2] = 0.05;
2699 gMC->Gsvolu("I525", "BOX ", idtmed[203], dits, 3);
2700
2701 dits[0] = 2;
2702 dits[1] = 0.035;
2703 dits[2] = 0.05;
2704 gMC->Gsvolu("I524", "BOX ", idtmed[203], dits, 3);
2705
2706 dits[0] = 0;
2707 dits[1] = 0.05;
2708 dits[2] = 0.205;
2709 gMC->Gsvolu("I529", "TUBE", idtmed[203], dits, 3);
2710
2711 dits[0] = 0;
2712 dits[1] = 0.05;
2713 dits[2] = 0.17;
2714 gMC->Gsvolu("I530", "TUBE", idtmed[203], dits, 3);
2715
2716 dits[0] = 0.15;
2717 dits[1] = 0.105;
2718 dits[2] = 0.29;
2719 dits[3] = 0.08;
2720 gMC->Gsvolu("I517", "TRD1", idtmed[203], dits, 4);
2721
2722 if (fluid == 1) {
2723 dits[0] = 0;
2724 dits[1] = 0.07;
2725 dits[2] = 1.955;
2726 gMC->Gsvolu("I531", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
2727 } else {
2728 dits[0] = 0;
2729 dits[1] = 0.07;
2730 dits[2] = 1.955;
2731 gMC->Gsvolu("I531", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
2732 }
2733
2734 dits[0] = 0.07;
2735 dits[1] = 0.1;
2736 dits[2] = 1.955;
2737 gMC->Gsvolu("I532", "TUBE", idtmed[210], dits, 3);
2738
2739 dits[0] = 0.3;
2740 dits[1] = 0.15;
2741 dits[2] = 0.15;
2742 gMC->Gsvolu("I533", "BOX ", idtmed[203], dits, 3);
2743
2744 dits[0] = 3.65;
2745 dits[1] = 0.015;
2746 dits[2] = 2;
2747 gMC->Gsvolu("ITS5", "BOX ", idtmed[200], dits, 3);
2748 }
2749
2750
2751 // --- Define volumes of shield of SPD ----------------
2752
2753 if (! AliITSInitGeometry::SPDshieldIsTGeoNative()) {
2754 dits[0] = 8.37;
2755 dits[1] = 9.93;
2756 dits[2] = 25;
2757 gMC->Gsvolu("IC01", "TUBE", idtmed[289], dits, 3);
2758
2759 dits[0] = 8.3;
2760 dits[1] = 9.995;
2761 dits[2] = 17.5/2.;
2762 gMC->Gsvolu("IC02", "TUBE", idtmed[289], dits, 3);
2763 }
2764
2765 Double_t s1,s2,b1,b2;
2766
2767 if (! AliITSInitGeometry::SDDconeIsTGeoNative()) {
2768
2769 // --- Define volume of first cylinder between SPD and SDD --------------
2770 dits[0] = (21.-0.128)/2.;
2771 dits[1] = 21./2.;
2772 dits[2] = 39.4;
2773 gMC->Gsvolu("ICY1", "TUBE", idtmed[208], dits, 3);
2774
2775 // --- Define volume of second cylinder between SDD and SSD --------------
2776 dits[0] = (59.5-0.128)/2.;
2777 dits[1] = 59.5/2.;
2778 dits[2] = 56.2; // was 57
2779 gMC->Gsvolu("ICY2", "TUBE", idtmed[208], dits, 3);
2780
2781 // --- Define volumes of SDD cone ----------------------------------
2782
2783 dits[0] = 0;
2784 dits[1] = 360;
2785 dits[2] = 12;
bf210566 2786 //
108bd0fe 2787 dits[3] = -59.7;
2788 dits[4] = 27;
2789 dits[5] = 28.6;
bf210566 2790
108bd0fe 2791 dits[6] = -42.7;
2792 dits[7] = 10;
2793 dits[8] = 28.6;
bf210566 2794
2795 // dits[9] = -34.65;
2796 dits[9] = -33.55;
108bd0fe 2797 dits[10] = 10;
2798 dits[11] = 28.6;
bf210566 2799
2800 // dits[12] = -34.65;
2801 dits[12] = -33.55;
108bd0fe 2802 dits[13] = 10;
2803 dits[14] = 23.495;
bf210566 2804
2805 //dits[15] = -23.7;
2806 dits[15] = -26.2;
108bd0fe 2807 dits[16] = 10;
2808 dits[17] = 23.495;
bf210566 2809
2810 //dits[18] = -23.7;
2811 dits[18] = -26.2;
108bd0fe 2812 dits[19] = 10;
2813 dits[20] = 14.595;
bf210566 2814
2815 //dits[21] = 23.7;
2816 dits[21] = 26.2;
108bd0fe 2817 dits[22] = 10;
2818 dits[23] = 14.595;
bf210566 2819
2820 //dits[24] = 23.7;
2821 dits[24] = 26.2;
108bd0fe 2822 dits[25] = 10;
2823 dits[26] = 23.495;
bf210566 2824
2825// dits[27] = 34.65;
2826 dits[27] = 33.55;
108bd0fe 2827 dits[28] = 10;
2828 dits[29] = 23.495;
bf210566 2829
2830// dits[30] = 34.65;
2831 dits[30] = 33.55;
108bd0fe 2832 dits[31] = 10;
2833 dits[32] = 28.6;
bf210566 2834
108bd0fe 2835 dits[33] = 42.7;
2836 dits[34] = 10;
2837 dits[35] = 28.6;
bf210566 2838
108bd0fe 2839 dits[36] = 59.7;
2840 dits[37] = 27.2637;
bf210566 2841 dits[38] = 28.6;
2842
2843 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
2844 dits[9] = -34.65;
2845 dits[12] = -34.65;
2846 dits[15] = -23.7;
2847 dits[18] = -23.7;
2848 dits[21] = 23.7;
2849 dits[24] = 23.7;
2850 dits[27] = 34.65;
2851 dits[30] = 34.65;
2852 }
108bd0fe 2853 gMC->Gsvolu("IS02", "PCON", idtmed[204], dits, 39);
2854
2855 dits[0] = 0;
2856 dits[1] = 360;
2857 dits[2] = 6;
2858 dits[3] = 38.65;
2859 dits[4] = 10.75;
2860 dits[5] = 12.25;
2861 dits[6] = 40.15;
2862 dits[7] = 10.75;
2863 dits[8] = 13.96;
2864 dits[9] = 40.15;
2865 dits[10] = 12.46;
2866 dits[11] = 13.96;
2867 dits[12] = 55.75;
2868 dits[13] = 27;
2869 dits[14] = 28.5;
2870 dits[15] = 55.75;
2871 dits[16] = 27;
2872 dits[17] = 28.5;
2873 dits[18] = 57.25;
2874 dits[19] = 27;
2875 dits[20] = 28.5;
2876// gMC->Gsvolu("I093", "PCON", idtmed[272], dits, 21); // SDD cone
2877 gMC->Gsvolu("I093", "PCON", idtmed[287], dits, 21); // SDD cone
2878
2879 // Redefined to make adding material for cables easier (FMD geometry)
2880 s1 = (dits[13]-dits[10])/(dits[12]-dits[9]); // Slope of conical section
2881 s2 = (dits[14]-dits[11])/(dits[12]-dits[9]); // Slope of conical section
2882 b1 = dits[13] - s1*dits[12]; // inside cone axis intersept
2883 b2 = dits[14] - s2*dits[12]; // outside cone axis intersept
2884 dits[0] = 0; //dits[0] = 0;
2885 dits[1] = 50; //dits[1] = 50;
2886 dits[2] = 4; //dits[2] = 3;
2887
2888 dits[4] = 14.0; //dits[4] = 14; // r inner
2889 dits[5] = dits[4]; //dits[5] = 18.75; // r outer
2890 dits[3] = (dits[4]-b2)/s2; //dits[3] = 39; // Z
2891
2892 dits[7] = dits[4]; //dits[7] = 14; // r inner
2893 dits[6] = (dits[7]-b1)/s1; //dits[6] = 46.7-3; // Z
2894 dits[8] = s2*dits[6]+b2; //dits[8] = 18.75; // r outer
2895
2896 dits[11] = 18.75; //dits[11] = 18.75; // r outer
2897 dits[9] = (dits[11]-b2)/s2; //dits[9] = 51.45-3; // Z
2898 dits[10] = s1*dits[9]+b1; //dits[10] = 18.75; // r inner
2899
2900 dits[13] = dits[11]; // r inner
2901 dits[14] = dits[11]; // r outer
2902 dits[12] = (dits[13]-b1)/s1; // Z
2903// gMC->Gsvolu("I099", "PCON", idtmed[204], dits, 12); // SDD 3 cone hole
2904 gMC->Gsvolu("I099", "PCON", idtmed[285], dits, 15); // SDD 3 cone hole
2905
2906 dits[0] = 0; //dits[0] = 0;
2907 dits[1] = 25; //dits[1] = 25;
2908 dits[2] = 4; //dits[2] = 3;
2909
2910 dits[4] = 23.4; //dits[4] = 23.4; // r inner
2911 dits[5] = dits[4]; //dits[5] = 26.4; // r outer
2912 dits[3] = (dits[4]-b2)/s2; //dits[3] = 49; // Z
2913
2914 dits[7] = dits[4]; //dits[7] = 23.4; // r inner
2915 dits[6] = (dits[7]-b1)/s1; //dits[6] = 56.1-3; // Z
2916 dits[8] = s2*dits[6]+b2; //dits[8] = 26.4; // r outer
2917
2918 dits[11] = 26.4; //dits[11] = 26.4; // r outer
2919 dits[9] = (dits[11]-b2)/s2; //dits[9] = 59.1-3; // Z
2920 dits[10] = s1*dits[9]+b1; //dits[10] = 26.4; // r inner
2921
2922 dits[13] = dits[11]; // r inner
2923 dits[14] = dits[11]; // r outer
2924 dits[12] = (dits[13]-b1)/s1; // Z
2925// gMC->Gsvolu("I200", "PCON", idtmed[204], dits, 12); // SDD 4 cone hole
2926 gMC->Gsvolu("I200", "PCON", idtmed[285], dits, 15); // SDD 4 cone hole
2927 //Begin_Html
2928 /*
2929 <img src="http://www.Physics.ohio-state.edu/~nilsen/ITS/ITS_FMD_PMD_Geom.eps">
2930 </pre>
2931 <br clear=left>
2932 <font size=+2 color=blue>
2933 <p>SDD Support cone with other forward detectors. Shown in
2934 brown are a posible cabling layout.
2935 </font>
2936 */
2937 //End_Html
2938 dits[0] = 10.0;
2939 dits[1] = 10.5;
2940 dits[2] = 0.25;
2941 gMC->Gsvolu("I090", "TUBE", idtmed[224], dits, 3); // SDD cylinder flange
2942
2943 dits[0] = 21.95;
2944 dits[1] = 22.95;
2945 dits[2] = 1;
2946 gMC->Gsvolu("I098", "TUBE", idtmed[283], dits, 3); // ladder support on layer 4
2947
2948 dits[0] = 13.1;
2949 dits[1] = 14.1;
2950 dits[2] = 1;
2951 gMC->Gsvolu("I097", "TUBE", idtmed[283], dits, 3); // ladder support on layer 3
2952
2953 dits[0] = 1;
2954 dits[1] = 1;
2955 dits[2] = 7.74;
2956 gMC->Gsvolu("I202", "BOX ", idtmed[272], dits, 3);
2957
bf210566 2958 if (AliITSInitGeometry::SDDIsTGeoNative())
2959 dits[0] = 0.9;
2960 else
2961 dits[0] = 1;
108bd0fe 2962 dits[1] = 1;
2963 dits[2] = 9.14;
2964 gMC->Gsvolu("I203", "BOX ", idtmed[272], dits, 3);
2965
2966 dits[0] = 21.95;
2967 dits[1] = 22.95;
2968 dits[2] = 1;
2969 gMC->Gsvolu("I095", "TUBE", idtmed[224], dits, 3);
2970
2971 dits[0] = 3;
2972 dits[1] = 2.7;
2973 dits[2] = 1;
2974 dits[3] = 0.63;
2975 gMC->Gsvolu("I096", "TRD1", idtmed[264], dits, 4);
2976
2977 dits[0] = 13.1;
2978 dits[1] = 14.1;
2979 dits[2] = 1;
2980 gMC->Gsvolu("I094", "TUBE", idtmed[224], dits, 3);
2981 }
2982
2983 if (! AliITSInitGeometry::SSDconeIsTGeoNative()) {
2984 // --- Define volumes of SSD cone ----------------------------------
2985
2986 dits[0] = 0;
2987 dits[1] = 360;
2988 dits[2] = 12;
bf210566 2989
108bd0fe 2990 dits[3] = -zmax;
bf210566 2991 dits[4] = 46;
2992 dits[5] = 49.25;
2993
108bd0fe 2994 dits[6] = -61.2;
2995 dits[7] = 28.7;
bf210566 2996 dits[8] = 49.25;
2997
108bd0fe 2998 dits[9] = -57.5;
2999 dits[10] = 28.7;
bf210566 3000 dits[11] = 49.25;
3001
108bd0fe 3002 dits[12] = -57.5;
3003 dits[13] = 28.7;
3004 dits[14] = 43.5;
bf210566 3005
3006 //dits[15] = -49.2;
3007 dits[15] = -53.4-0.75;
108bd0fe 3008 dits[16] = 28.7;
3009 dits[17] = 43.5;
bf210566 3010
3011 //dits[18] = -49.2;
3012 dits[18] = -53.4-0.75;
108bd0fe 3013 dits[19] = 28.7;
3014 dits[20] = 36.85;
bf210566 3015
3016 //dits[21] = 50.6;
3017 dits[21] = 53.4+0.75;
108bd0fe 3018 dits[22] = 28.7;
3019 dits[23] = 36.85;
bf210566 3020
3021 dits[24] = 53.4+0.75;
3022 //dits[24] = 50.6;
108bd0fe 3023 dits[25] = 28.7;
3024 dits[26] = 43.5;
bf210566 3025
108bd0fe 3026 dits[27] = 57.5;
3027 dits[28] = 28.7;
3028 dits[29] = 43.5;
bf210566 3029
108bd0fe 3030 dits[30] = 57.5;
3031 dits[31] = 28.7;
bf210566 3032 dits[32] = 49.25;
3033
108bd0fe 3034 dits[33] = 61.2;
3035 dits[34] = 28.7;
3036 dits[35] = 49.25;
3037 dits[36] = zmax;
3038 dits[37] = 46;
bf210566 3039 dits[38] = 49.25;
3040
3041 if (! AliITSInitGeometry::SSDIsTGeoNative()) {
3042 dits[15] = -49.2;
3043 dits[18] = -49.2;
3044 dits[21] = 50.6;
3045 dits[24] = 50.6;
3046 }
3047
108bd0fe 3048 gMC->Gsvolu("IS01", "PCON", idtmed[204], dits, 39); // SSD cone mother volume
3049
3050 dits[0] = 0;
3051 dits[1] = 360;
3052 dits[2] = 6;
3053 dits[3] = -zmax;
3054 dits[4] = 47.75;
3055 dits[5] = 49.25;
3056 dits[6] = -zmax+2.;
3057 dits[7] = 47.75;
3058 dits[8] = 49.25;
3059 dits[9] = -71.2819;
3060 dits[10] = 46.75;
3061 dits[11] = 49.0319;
3062 dits[12] = -57.25; // was 58.5
3063 dits[13] = 32.9681;
3064 dits[14] = 34.75;
3065 dits[15] = -57.25; // was 58.5
3066 dits[16] = 30;
3067 dits[17] = 34.75;
3068 dits[18] = -55.75; // was 57
3069 dits[19] = 30;
3070 dits[20] = 32.25; // was 31.5
3071// gMC->Gsvolu("I212", "PCON", idtmed[272], dits, 21); // SSD cone
3072 gMC->Gsvolu("I212", "PCON", idtmed[288], dits, 21); // SSD cone
3073
3074 s1 = (dits[10]-dits[13])/(dits[9]-dits[12]); // Slope of conical section
3075 s2 = (dits[11]-dits[14])/(dits[9]-dits[12]); // Slope of conical section
3076 b1 = dits[13] - s1*dits[12]; // inside cone axis intersept
3077 b2 = dits[14] - s2*dits[12]; // outside cone axis intersept
3078 dits[0] = 0;
3079 dits[1] = 25;
3080 dits[2] = 4; //dits[2] = 5;
3081
3082 dits[4] = 45.50; //dits[4] = 45.5; // r inner
3083 dits[5] = dits[4]; //dits[5] = 45.5; // r outer
3084 dits[3] = (dits[4] - b1)/s1; //dits[3] = -zmax+3; // z
3085
3086 dits[8] = dits[4]; //dits[8] = 45.5; // r outer
3087 dits[6] = (dits[8] - b2)/s2; //dits[6] = -69.7+3;; // z
3088 dits[7] = s1*dits[6] + b1; //dits[7] = 37; // r inner
3089
3090 dits[10] = 37.00; //dits[10] = 37; // r inner
3091 dits[9] = (dits[10]-b1)/s1; //dits[9] = -68.5+3;; // z
3092 dits[11] = s2*dits[9]+b2; //dits[11] = 45.5; // r outer
3093
3094 dits[13] = dits[10]; //dits[13] = 37; // r inner
3095 dits[14] = dits[13]; //dits[14] = 45.5; // r outer
3096 dits[12] = (dits[14] - b2)/s2; //dits[12] = -68.5+4.8;; // z
3097// gMC->Gsvolu("I215", "PCON", idtmed[204], dits, 18); // SSD cone hole
3098 gMC->Gsvolu("I215", "PCON", idtmed[286], dits, 15); // SSD cone hole
3099 //Begin_Html
3100 /*
3101 <img src="http://www.Physics.ohio-state.edu/~nilsen/ITS/ITS_FMD_PMD_Geom.eps">
3102 </pre>
3103 <br clear=left>
3104 <font size=+2 color=blue>
3105 <p>SSD Support cone with other forward detectors. Shown in
3106 brown are a posible cabling layout.
3107 </font>
3108 */
3109 //End_Html
3110
3111 dits[0] = 28.75;
3112 dits[1] = 29.75;
3113 dits[2] = 0.5;
3114 gMC->Gsvolu("I211", "TUBE", idtmed[224], dits, 3); // SSD cylinder flange
3115
3116 dits[0] = 35.8;
3117 dits[1] = 36.8;
3118 dits[2] = 1;
3119 gMC->Gsvolu("I217", "TUBE", idtmed[283], dits, 3); // ladder support on layer 5
3120
3121 dits[0] = 41.4;
3122 dits[1] = 42.4;
3123 dits[2] = 1;
3124 gMC->Gsvolu("I219", "TUBE", idtmed[283], dits, 3); // ladder support on layer 6
3125
3126 dits[0] = 42.05+5.;
3127 dits[1] = 42.55+5.;
3128 dits[2] = 1.25;
3129 gMC->Gsvolu("I214", "TUBE", idtmed[224], dits, 3); // layer 6 electronic support
3130 // this will change after PPR
3131 dits[0] = 37.05+5.;
3132 dits[1] = 37.55+5.;
3133 dits[2] = 1.25;
3134 gMC->Gsvolu("I213", "TUBE", idtmed[224], dits, 3); // layer 5 electronic support
3135 // this will change after PPR
3136
3137 dits[0] = 0;
3138 dits[1] = 3.2;
3139 dits[2] = 9;
3140 dits[3] = -14;
3141 dits[4] = 30.5;
3142 dits[5] = 33.5;
3143 dits[6] = -9.85;
3144 dits[7] = 30.5;
3145 dits[8] = 33.5;
3146 dits[9] = -9.85;
3147 dits[10] = 30.5;
3148 dits[11] = 43.45;
3149 dits[12] = -7.85;
3150 dits[13] = 30.5;
3151 dits[14] = 43.45;
3152 dits[15] = -7.85;
3153 dits[16] = 30.5;
3154 dits[17] = 36.5;
3155 dits[18] = -7;
3156 dits[19] = 30.5;
3157 dits[20] = 36.5;
3158 dits[21] = -4;
3159 dits[22] = 33.0173;
3160 dits[23] = 36.5;
3161 dits[24] = -4;
3162 dits[25] = 33.0173;
3163 dits[26] = 36.80;
3164 dits[27] = -2;
3165 dits[28] = 34.6955;
3166 dits[29] = 36.80;
3167 gMC->Gsvolu("I216", "PCON", idtmed[272], dits, 30); // supports (1-6) of the ladders
3168 }
3169
3170
3171 // --- Place SPD (option 'b') volumes into their mother volume IT12
3172
3173 // SPD - option 'b'
3174 // (this is the default)
3175
3176 //if (option == 2) {
3177 if (! AliITSInitGeometry::SPDIsTGeoNative()) {
3178
8f8273a4 3179 gMC->Gspos("I12B",1,"IT12",0.0,0.0,0.0,0,"ONLY");
3180 gMC->Gspos("I12B",8,"IT12",0.0,0.0,0.0,idrotm[233],"ONLY");
3181 gMC->Gspos("I12B",7,"IT12",0.0,0.0,0.0,idrotm[244],"ONLY");
3182 gMC->Gspos("I12B",6,"IT12",0.0,0.0,0.0,idrotm[236],"ONLY");
3183 gMC->Gspos("I12B",2,"IT12",0.0,0.0,0.0,idrotm[245],"ONLY");
3184 gMC->Gspos("I12B",3,"IT12",0.0,0.0,0.0,idrotm[234],"ONLY");
3185 gMC->Gspos("I12B",4,"IT12",0.0,0.0,0.0,idrotm[246],"ONLY");
3186 gMC->Gspos("I12B",5,"IT12",0.0,0.0,0.0,idrotm[247],"ONLY");
3187 gMC->Gspos("I12B",9,"IT12",0.0,0.0,0.0,idrotm[248],"ONLY");
3188 gMC->Gspos("I12B",10,"IT12",0.0,0.0,0.0,idrotm[249],"ONLY");
108bd0fe 3189 deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(270.*TMath::Pi()/180.); // see definition of idrotm[238]
3190 deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(270.*TMath::Pi()/180.); // see definition of idrotm[238]
3191 gMC->Gspos("I10B",2,"I12B",0.203+deltax,3.8206+deltay,0.0,idrotm[238],"ONLY");
3192 deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(252.*TMath::Pi()/180.); // see definition of idrotm[239]
3193 deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(252.*TMath::Pi()/180.); // see definition of idrotm[239]
3194 gMC->Gspos("I10B",1,"I12B",1.4531+deltax,3.8152+deltay,0.0,idrotm[239],"ONLY");
3195 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(40.*TMath::Pi()/180.); // see definition of idrotm[240]
3196 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(40.*TMath::Pi()/180.); // see definition of idrotm[240]
3197 gMC->Gspos("I20B",1,"I12B",3.0174+deltax,6.5143+deltay,0.0,idrotm[240],"ONLY");
3198 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(49.*TMath::Pi()/180.); // see definition of idrotm[241]
3199 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(49.*TMath::Pi()/180.); // see definition of idrotm[241]
3200 gMC->Gspos("I20B",2,"I12B",1.9612+deltax,6.9062+deltay,0.0,idrotm[241],"ONLY");
3201 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(58.*TMath::Pi()/180.); // see definition of idrotm[242]
3202 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(58.*TMath::Pi()/180.); // see definition of idrotm[242]
3203 gMC->Gspos("I20B",3,"I12B",0.8567+deltax,7.1279+deltay,0.0,idrotm[242],"ONLY");
3204 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(67.*TMath::Pi()/180.); // see definition of idrotm[243]
3205 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(67.*TMath::Pi()/180.); // see definition of idrotm[243]
3206 gMC->Gspos("I20B",4,"I12B",-0.2689+deltax,7.1742+deltay,0.0,idrotm[243],"ONLY");
3207 gMC->Gspos("I123",1,"I12B",-0.2978,5.5196,0.0,idrotm[214],"ONLY");
3208 gMC->Gspos("I121",1,"I12B",-0.2385,4.1518,0.0,idrotm[213],"ONLY");
3209 gMC->Gspos("I122",1,"I12B",-0.2968,4.0207,0.0,idrotm[212],"ONLY");
3210 gMC->Gspos("I120",1,"I12B",-0.3672,3.9056,0.0,0,"ONLY");
3211 gMC->Gspos("I144",1,"I12B",-0.2538,3.8556,0.0,0,"ONLY");
3212 gMC->Gspos("I113",3,"I12B",0.1095,3.9056,0.0,0,"ONLY");
3213 gMC->Gspos("I143",1,"I12B",0.4365,3.8556,0.0,idrotm[236],"ONLY");
3214 gMC->Gspos("I142",1,"I12B",0.5136,3.9056,0.0,idrotm[235],"ONLY");
3215 gMC->Gspos("I141",1,"I12B",0.5636,3.9752,0.0,idrotm[237],"ONLY");
3216 gMC->Gspos("I140",1,"I12B",0.6336,4.0447,0.0,idrotm[234],"ONLY");
3217 gMC->Gspos("I139",1,"I12B",0.8297,4.0545,0.0,idrotm[207],"ONLY");
3218 gMC->Gspos("I113",5,"I12B",1.2575,3.9681,0.0,idrotm[207],"ONLY");
3219 gMC->Gspos("I138",1,"I12B",1.66,3.7848,0.0,idrotm[207],"ONLY");
3220 gMC->Gspos("I137",1,"I12B",1.8556,3.7738,0.0,idrotm[233],"ONLY");
3221 gMC->Gspos("I136",1,"I12B",2.6224,4.874,0.0,idrotm[232],"ONLY");
3222 gMC->Gspos("I135",1,"I12B",3.2967,6.0337,0.0,idrotm[231],"ONLY");
3223 gMC->Gspos("I134",1,"I12B",3.266,6.1636,0.0,idrotm[230],"ONLY");
3224 gMC->Gspos("I113",1,"I12B",2.9903,6.4144,0.0,idrotm[211],"ONLY");
3225 gMC->Gspos("I133",3,"I12B",2.7631,6.7627,0.0,idrotm[230],"ONLY");
3226 gMC->Gspos("I132",3,"I12B",2.62,6.8555,0.0,idrotm[229],"ONLY");
3227 gMC->Gspos("I131",3,"I12B",2.648,6.6023,0.0,idrotm[228],"ONLY");
3228 gMC->Gspos("I130",3,"I12B",2.6569,6.3431,0.0,idrotm[227],"ONLY");
3229 gMC->Gspos("I129",3,"I12B",2.3906,6.4819,0.0,idrotm[226],"ONLY");
3230 gMC->Gspos("I113",2,"I12B",1.9488,6.7998,0.0,idrotm[210],"ONLY");
3231 gMC->Gspos("I133",2,"I12B",1.6699,7.1085,0.0,idrotm[226],"ONLY");
3232 gMC->Gspos("I132",2,"I12B",1.5142,7.1777,0.0,idrotm[225],"ONLY");
3233 gMC->Gspos("I131",2,"I12B",1.5814,6.932,0.0,idrotm[224],"ONLY");
3234 gMC->Gspos("I130",2,"I12B",1.6308,6.6774,0.0,idrotm[223],"ONLY");
3235 gMC->Gspos("I129",2,"I12B",1.346,6.7728,0.0,idrotm[222],"ONLY");
3236 gMC->Gspos("I113",6,"I12B",0.8599,7.0176,0.0,idrotm[209],"ONLY");
3237 gMC->Gspos("I133",1,"I12B",0.5362,7.2789,0.0,idrotm[222],"ONLY");
3238 gMC->Gspos("I132",1,"I12B",0.3715,7.3228,0.0,idrotm[221],"ONLY");
3239 gMC->Gspos("I131",1,"I12B",0.4763,7.0907,0.0,idrotm[220],"ONLY");
3240 gMC->Gspos("I130",1,"I12B",0.5649,6.8469,0.0,idrotm[219],"ONLY");
3241 gMC->Gspos("I129",1,"I12B",0.2688,6.8966,0.0,idrotm[218],"ONLY");
3242 gMC->Gspos("I113",4,"I12B",-0.2497,7.0624,0.0,idrotm[208],"ONLY");
3243 gMC->Gspos("I128",1,"I12B",-0.6103,7.2698,0.0,idrotm[218],"ONLY");
3244 gMC->Gspos("I126",1,"I12B",-0.7799,7.2874,0.0,idrotm[217],"ONLY");
3245 gMC->Gspos("I125",1,"I12B",-0.6315,7.0883,0.0,idrotm[216],"ONLY");
3246 gMC->Gspos("I124",1,"I12B",-0.4965,6.8742,0.0,idrotm[215],"ONLY");
3247 gMC->Gspos("I105",3,"I10B",-0.05,-0.01,-16.844,idrotm[201],"ONLY");
3248 gMC->Gspos("I105",4,"I10B",-0.05,-0.01,16.844,0,"ONLY");
8f8273a4 3249
3250 // Insertion of half-stave level in old SPD1
3251 gGeoManager->MakeVolumeAssembly("L1H-STAVE0");
3252 gGeoManager->MakeVolumeAssembly("L1H-STAVE1");
3253 gMC->Gspos("L1H-STAVE0",1,"I10B",0,0,0,0,"ONLY");
3254 gMC->Gspos("L1H-STAVE1",1,"I10B",0,0,0,0,"ONLY");
3255 gMC->Gspos("I107",1,"L1H-STAVE0",-0.0455,-di10b[1]+di107[1],10.708,0,"ONLY");
3256 gMC->Gspos("I107",2,"L1H-STAVE0",-0.0455,-di10b[1]+di107[1],3.536,0,"ONLY");
3257 gMC->Gspos("I107",3,"L1H-STAVE1",-0.0455,-di10b[1]+di107[1],-3.536,0,"ONLY");
3258 gMC->Gspos("I107",4,"L1H-STAVE1",-0.0455,-di10b[1]+di107[1],-10.708,0,"ONLY");
3259 // gMC->Gspos("I107",2,"I10B",-0.0455,-di10b[1]+di107[1],3.536,0,"ONLY");
3260 // gMC->Gspos("I107",1,"I10B",-0.0455,-di10b[1]+di107[1],10.708,0,"ONLY");
3261 // gMC->Gspos("I107",4,"I10B",-0.0455,-di10b[1]+di107[1],-10.708,0,"ONLY");
3262 // gMC->Gspos("I107",3,"I10B",-0.0455,-di10b[1]+di107[1],-3.536,0,"ONLY");
3263
3264 // Insertion of half-stave level in old SPD2
3265 gGeoManager->MakeVolumeAssembly("L2H-STAVE0");
3266 gGeoManager->MakeVolumeAssembly("L2H-STAVE1");
3267 gMC->Gspos("L2H-STAVE0",1,"I20B",0,0,0,0,"ONLY");
3268 gMC->Gspos("L2H-STAVE1",1,"I20B",0,0,0,0,"ONLY");
3269 gMC->Gspos("I1D7",1,"L2H-STAVE0",-0.0455,-di20b[1]+di1d7[1],10.708,0,"ONLY");
3270 gMC->Gspos("I1D7",2,"L2H-STAVE0",-0.0455,-di20b[1]+di1d7[1],3.536,0,"ONLY");
3271 gMC->Gspos("I1D7",3,"L2H-STAVE1",-0.0455,-di20b[1]+di1d7[1],-3.536,0,"ONLY");
3272 gMC->Gspos("I1D7",4,"L2H-STAVE1",-0.0455,-di20b[1]+di1d7[1],-10.708,0,"ONLY");
3273// gMC->Gspos("I1D7",2,"I20B",-0.0455,-di20b[1]+di1d7[1],3.536,0,"ONLY");
3274// gMC->Gspos("I1D7",1,"I20B",-0.0455,-di20b[1]+di1d7[1],10.708,0,"ONLY");
3275// gMC->Gspos("I1D7",4,"I20B",-0.0455,-di20b[1]+di1d7[1],-10.708,0,"ONLY");
3276// gMC->Gspos("I1D7",3,"I20B",-0.0455,-di20b[1]+di1d7[1],-3.536,0,"ONLY");
3277
108bd0fe 3278 gMC->Gspos("I109",1,"I10B",-0.138,0.015,-16.844,idrotm[201],"ONLY");
3279 gMC->Gspos("I109",2,"I10B",-0.138,0.015,16.844,0,"ONLY");
3280 gMC->Gspos("I108",1,"I10B",-0.138,-di10b[1]+2.*di107[1]+di108[1],0.0,0,"ONLY");
3281 gMC->Gspos("I105",1,"I20B",-0.05,-0.01,-16.844,idrotm[201],"ONLY");
3282 gMC->Gspos("I105",2,"I20B",-0.05,-0.01,16.844,0,"ONLY");
108bd0fe 3283 gMC->Gspos("I109",3,"I20B",-0.138,0.015,-16.844,idrotm[201],"ONLY");
3284 gMC->Gspos("I109",4,"I20B",-0.138,0.015,16.844,0,"ONLY");
3285 gMC->Gspos("I108",2,"I20B",-0.138,-di20b[1]+2.*di1d7[1]+di108[1],0.0,0,"ONLY");
3286 gMC->Gspos("I112",2,"I113",0.25,0.02,0.0,idrotm[206],"ONLY");
3287 gMC->Gspos("I111",2,"I113",0.1318,-0.0008,0.0,idrotm[205],"ONLY");
3288 gMC->Gspos("I118",1,"I113",0.0,-0.0454,0.0,0,"ONLY");
3289 gMC->Gspos("I110",1,"I113",0.0,0.0492,0.0,0,"ONLY");
3290 gMC->Gspos("I114",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3291 gMC->Gspos("I115",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3292 gMC->Gspos("I115",2,"I113",-0.063,0.0042,0.0,idrotm[237],"ONLY");
3293 gMC->Gspos("I114",2,"I113",-0.063,0.0042,0.0,idrotm[237],"ONLY");
3294 gMC->Gspos("I116",1,"I113",0.0,0.0042,0.0,0,"ONLY");
3295 gMC->Gspos("I111",1,"I113",-0.1318,-0.0008,0.0,idrotm[204],"ONLY");
3296 gMC->Gspos("I112",1,"I113",-0.25,0.02,0.0,idrotm[203],"ONLY");
3297 gMC->Gspos("I106",1,"I107",0.0,-ddet1,-1.4,0,"ONLY");
3298 gMC->Gspos("I106",2,"I107",0.0,-ddet1,0.0,0,"ONLY");
3299 gMC->Gspos("I106",3,"I107",0.0,-ddet1,1.4,0,"ONLY");
3300 gMC->Gspos("I106",4,"I107",0.0,-ddet1,2.8,0,"ONLY");
3301 gMC->Gspos("I106",5,"I107",0.0,-ddet1,-2.8,0,"ONLY");
3302 gMC->Gspos("I101",1,"I107",0.0,dchip1,0.0,0,"ONLY");
3303 gMC->Gspos("I1D6",1,"I1D7",0.0,-ddet2,-1.4,0,"ONLY");
3304 gMC->Gspos("I1D6",2,"I1D7",0.0,-ddet2,0.0,0,"ONLY");
3305 gMC->Gspos("I1D6",3,"I1D7",0.0,-ddet2,1.4,0,"ONLY");
3306 gMC->Gspos("I1D6",4,"I1D7",0.0,-ddet2,2.8,0,"ONLY");
3307 gMC->Gspos("I1D6",5,"I1D7",0.0,-ddet2,-2.8,0,"ONLY");
3308 gMC->Gspos("I1D1",1,"I1D7",0.0,dchip2,0.0,0,"ONLY");
3309 gMC->Gspos("I117",1,"I116",0.0,0.0,0.0,0,"ONLY");
3310 gMC->Gspos("ITS1",1,"I101",0.0,0.0,0.0,0,"ONLY");
3311 gMC->Gspos("ITS2",1,"I1D1",0.0,0.0,0.0,0,"ONLY");
3312 gMC->Gspos("I651",1,"IT12",0.0,0.0,26.05,0,"ONLY");
8f8273a4 3313 gMC->Gspos("I651",2,"IT12",0.0,0.0,-26.05,0,"ONLY");
3314
3315 gMC->Gspos("I650",16,"IT12",0.0,0.0,22.0,idrotm[1104],"ONLY");
3316 gMC->Gspos("I650",20,"IT12",0.0,0.0,22.0,idrotm[1130],"ONLY");
3317 gMC->Gspos("I650",18,"IT12",0.0,0.0,22.0,idrotm[1117],"ONLY");
3318 gMC->Gspos("I650",1,"IT12",0.0,0.0,22.0,0,"ONLY");
3319 gMC->Gspos("I650",4,"IT12",0.0,0.0,22.0,idrotm[1106],"ONLY");
3320 gMC->Gspos("I650",6,"IT12",0.0,0.0,22.0,idrotm[1039],"ONLY");
3321 gMC->Gspos("I650",8,"IT12",0.0,0.0,22.0,idrotm[1107],"ONLY");
3322 gMC->Gspos("I650",10,"IT12",0.0,0.0,22.0,idrotm[1065],"ONLY");
3323 gMC->Gspos("I650",12,"IT12",0.0,0.0,22.0,idrotm[1078],"ONLY");
3324 gMC->Gspos("I650",14,"IT12",0.0,0.0,22.0,idrotm[1091],"ONLY");
3325 gMC->Gspos("I650",19,"IT12",0.0,0.0,-22.0,idrotm[1108],"ONLY");
3326 gMC->Gspos("I650",2,"IT12",0.0,0.0,-22.0,idrotm[1109],"ONLY");
3327 gMC->Gspos("I650",3,"IT12",0.0,0.0,-22.0,idrotm[1110],"ONLY");
3328 gMC->Gspos("I650",5,"IT12",0.0,0.0,-22.0,idrotm[1111],"ONLY");
3329 gMC->Gspos("I650",7,"IT12",0.0,0.0,-22.0,idrotm[1112],"ONLY");
3330 gMC->Gspos("I650",9,"IT12",0.0,0.0,-22.0,idrotm[1113],"ONLY");
3331 gMC->Gspos("I650",11,"IT12",0.0,0.0,-22.0,idrotm[1114],"ONLY");
3332 gMC->Gspos("I650",13,"IT12",0.0,0.0,-22.0,idrotm[1115],"ONLY");
3333 gMC->Gspos("I650",15,"IT12",0.0,0.0,-22.0,idrotm[1116],"ONLY");
3334 gMC->Gspos("I650",17,"IT12",0.0,0.0,-22.0,idrotm[1118],"ONLY");
3335 gMC->Gspos("I666",1,"I650",0.0,0.0,0.25,idrotm[1003],"ONLY");
3336
108bd0fe 3337 gMC->Gspos("I667",1,"I650",0.1102,0.9945,0.45,idrotm[1088],"ONLY");
3338 gMC->Gspos("I669",3,"I650",0.1883,4.0372,-3.2,0,"ONLY");
3339 gMC->Gspos("I671",3,"I650",0.1883,4.0372,0.6,0,"ONLY");
3340 gMC->Gspos("I669",2,"I650",1.3343,4.0609,-3.2,0,"ONLY");
3341 gMC->Gspos("I671",2,"I650",1.3343,4.0609,0.6,0,"ONLY");
3342 gMC->Gspos("I669",6,"I650",2.9567,6.1959,-3.2,idrotm[1089],"ONLY");
3343 gMC->Gspos("I671",6,"I650",2.9567,6.1959,0.6,idrotm[1089],"ONLY");
3344 gMC->Gspos("I669",5,"I650",1.9511,6.5822,-3.2,idrotm[1011],"ONLY");
3345 gMC->Gspos("I671",5,"I650",1.9511,6.5822,0.6,idrotm[1011],"ONLY");
3346 gMC->Gspos("I669",4,"I650",0.8974,6.8064,-3.2,idrotm[1090],"ONLY");
3347 gMC->Gspos("I671",4,"I650",0.8974,6.8064,0.6,idrotm[1090],"ONLY");
3348 gMC->Gspos("I669",1,"I650",-0.1784,6.863,-3.2,0,"ONLY");
3349 gMC->Gspos("I671",1,"I650",-0.1784,6.863,0.6,0,"ONLY");
3350 gMC->Gspos("I673",1,"I650",0.2173,4.8037,1.8,0,"ONLY");
3351 gMC->Gspos("I673",6,"I650",1.5093,4.5605,1.8,0,"ONLY");
3352 gMC->Gspos("I673",4,"I650",-0.173,6.2531,1.8,idrotm[1092],"ONLY");
3353 gMC->Gspos("I673",3,"I650",0.8073,6.2032,1.8,idrotm[1093],"ONLY");
3354 gMC->Gspos("I673",2,"I650",1.7678,6.0005,1.8,idrotm[1094],"ONLY");
3355 gMC->Gspos("I673",5,"I650",2.6847,5.6501,1.8,0,"ONLY");
3356 gMC->Gspos("I676",2,"I650",1.7618,5.2269,2.5,0,"ONLY");
3357 gMC->Gspos("I676",1,"I650",0.4018,5.5869,2.5,0,"ONLY");
3358 gMC->Gspos("I668",1,"I667",0.0,0.0,0.0,0,"ONLY");
3359 gMC->Gspos("I670",1,"I669",0.0,0.0,0.0,0,"ONLY");
3360 gMC->Gspos("I672",1,"I671",0.0,0.0,0.0,0,"ONLY");
3361 gMC->Gspos("I674",1,"I673",0.0,0.0,0.0,0,"MANY");
3362 gMC->Gspos("I675",1,"I673",0.0,0.0,-0.5,0,"ONLY");
8f8273a4 3363 gMC->Gspos("I677",1,"I676",0.0,0.0,0.0,0,"ONLY");
108bd0fe 3364 gMC->Gspos("I678",1,"I676",0.0,0.0,-0.95,0,"ONLY");
3365 }
3366
3367 // --- Place SDD volumes into their mother volume IT34
3368
3369 // -- position SDD detectors of ladder 3 / layer 3
3370 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
3371
3372 gMC->Gspos("ITS3", 1,"I302", 0.0, 0.0, 0.0, 0, "ONLY");
3373 ySDD = ySDDsep/2.+iI302dits[1];
3374 for (iSDD=0; iSDD<6; iSDD++) {
3375 gMC->Gspos("I302", iSDD+1, "I004", 0.0, ySDD, zSDDlay3[iSDD], 0, "ONLY");
3376 ySDD = -ySDD;
3377 }
3378
3379 gMC->Gspos("I004", 1,"IT34", -3.2777, 14.3607, 0.0, idrotm[321],"ONLY");
3380 gMC->Gspos("I004", 2,"IT34", -9.5581, 11.9855, 0.0, idrotm[333],"ONLY");
3381 gMC->Gspos("I004", 3,"IT34",-13.2713, 6.3911, 0.0, idrotm[336],"ONLY");
3382 gMC->Gspos("I004", 4,"IT34",-15.33, 0.0, 0.0, idrotm[350],"ONLY");
3383 gMC->Gspos("I004", 5,"IT34",-13.2713, -6.3911, 0.0, idrotm[313],"ONLY");
3384 gMC->Gspos("I004", 6,"IT34", -9.5581, -11.9855, 0.0, idrotm[311],"ONLY");
3385 gMC->Gspos("I004", 7,"IT34", -3.2777, -14.3607, 0.0, idrotm[310],"ONLY");
3386 gMC->Gspos("I004", 8,"IT34", 3.4112, -14.9456, 0.0, idrotm[386],"ONLY");
3387 gMC->Gspos("I004", 9,"IT34", 9.184, -11.5164, 0.0, idrotm[309],"ONLY");
3388 gMC->Gspos("I004",10,"IT34", 13.8119, -6.6514, 0.0, idrotm[308],"ONLY");
3389 gMC->Gspos("I004",11,"IT34", 14.73, 0.0, 0.0, idrotm[356],"ONLY");
3390 gMC->Gspos("I004",12,"IT34", 13.8119, 6.6514, 0.0, idrotm[307],"ONLY");
3391 gMC->Gspos("I004",13,"IT34", 9.184, 11.5164, 0.0, idrotm[306],"ONLY");
3392 gMC->Gspos("I004",14,"IT34", 3.4113, 14.9456, 0.0, idrotm[305],"ONLY");
3393
3394
3395 // -- position SDD detectors of ladder 4 / layer 4
3396
3397 gMC->Gspos("ITS4", 1,"I402", 0.0, 0.000, 0.0, 0,"ONLY");
3398 ySDD = -(ySDDsep/2.+iI402dits[1]);
3399 for (iSDD=0; iSDD<8; iSDD++) {
3400 gMC->Gspos("I402", iSDD+1, "I005", 0.0, ySDD, zSDDlay4[iSDD], 0, "ONLY");
3401 ySDD = -ySDD;
3402 }
3403
3404 gMC->Gspos("I005", 1,"IT34", -3.3629, 23.3895,-0.15, idrotm[335],"ONLY");
3405 gMC->Gspos("I005", 2,"IT34",-10.0447, 21.9949,-0.15, idrotm[332],"ONLY");
3406 gMC->Gspos("I005", 3,"IT34",-15.4744, 17.8584,-0.15, idrotm[331],"ONLY");
3407 gMC->Gspos("I005", 4,"IT34",-20.3415, 13.0727,-0.15, idrotm[366],"ONLY");
3408 gMC->Gspos("I005", 5,"IT34",-22.6728, 6.6573,-0.15, idrotm[330],"ONLY");
3409 gMC->Gspos("I005", 6,"IT34",-24.18, 0.0, -0.15, idrotm[350],"ONLY");
3410 gMC->Gspos("I005", 7,"IT34",-22.6728, -6.6573,-0.15, idrotm[329],"ONLY");
3411 gMC->Gspos("I005", 8,"IT34",-20.3415, -13.0727,-0.15, idrotm[328],"ONLY");
3412 gMC->Gspos("I005", 9,"IT34",-15.4744, -17.8584,-0.15, idrotm[327],"ONLY");
3413 gMC->Gspos("I005",10,"IT34",-10.0447, -21.9949,-0.15, idrotm[326],"ONLY");
3414 gMC->Gspos("I005",11,"IT34", -3.3629, -23.3895,-0.15, idrotm[325],"ONLY");
3415 gMC->Gspos("I005",12,"IT34", 3.4412, -23.9339,-0.15, idrotm[324],"ONLY");
3416 gMC->Gspos("I005",13,"IT34", 9.8163, -21.4946,-0.15, idrotm[323],"ONLY");
3417 gMC->Gspos("I005",14,"IT34", 15.8345, -18.274, -0.15, idrotm[322],"ONLY");
3418 gMC->Gspos("I005",15,"IT34", 19.8788, -12.7753,-0.15, idrotm[320],"ONLY");
3419 gMC->Gspos("I005",16,"IT34", 23.2005, -6.8123,-0.15, idrotm[319],"ONLY");
3420 gMC->Gspos("I005",17,"IT34", 23.63, 0.0, -0.15, idrotm[318],"ONLY");
3421 gMC->Gspos("I005",18,"IT34", 23.2005, 6.8123,-0.15, idrotm[317],"ONLY");
3422 gMC->Gspos("I005",19,"IT34", 19.8788, 12.7753,-0.15, idrotm[316],"ONLY");
3423 gMC->Gspos("I005",20,"IT34", 15.8345, 18.274, -0.15, idrotm[315],"ONLY");
3424 gMC->Gspos("I005",21,"IT34", 9.8163, 21.4946,-0.15, idrotm[314],"ONLY");
3425 gMC->Gspos("I005",22,"IT34", 3.4412, 23.9339,-0.15, idrotm[334],"ONLY");
3426
3427
3428 // -- build block of the SDD ladder frame holding the electronics
3429
3430 gMC->Gspos("I019", 1,"I018", -1.9, -1.735, 0.0, idrotm[344], "ONLY");
3431 gMC->Gspos("I019", 2,"I018", 1.987, -1.5843, 0.0, idrotm[343], "ONLY");
3432 gMC->Gspos("I019", 3,"I018", -0.087, 1.7066, 0.0, idrotm[342], "ONLY");
3433
3434 gMC->Gspos("I020", 1,"I018", -1.9782, -1.569, 0.0, idrotm[342], "ONLY");
3435 gMC->Gspos("I020", 2,"I018", 1.8824, -1.735, 0.0, idrotm[344], "ONLY");
3436 gMC->Gspos("I020", 3,"I018", 0.0958, 1.6913, 0.0, idrotm[343], "ONLY");
3437
3438 gMC->Gspos("I021", 1,"I018", 1.0761, 0.0835, 2.6008, idrotm[340], "ONLY");
3439 gMC->Gspos("I021", 2,"I018", -1.0761, 0.0835,-2.8008, idrotm[339], "ONLY");
3440 gMC->Gspos("I021", 3,"I018", -1.0761, 0.0835,-1.0492, idrotm[338], "ONLY");
3441 gMC->Gspos("I021", 4,"I018", 1.0761, 0.0835,-2.8008, idrotm[337], "ONLY");
3442 gMC->Gspos("I021", 5,"I018", 1.0761, 0.0835,-1.0492, idrotm[340], "ONLY");
3443 gMC->Gspos("I021", 6,"I018", -1.0761, 0.0835, 0.8492, idrotm[339], "ONLY");
3444 gMC->Gspos("I021", 7,"I018", -1.0761, 0.0835, 2.6008, idrotm[338], "ONLY");
3445 gMC->Gspos("I021", 8,"I018", 1.0761, 0.0835, 0.8492, idrotm[337], "ONLY");
3446
3447 gMC->Gspos("I022", 1,"I018", 0.0, -1.79, 3.55, idrotm[312], "ONLY");
3448 gMC->Gspos("I022", 2,"I018", 0.0, -1.79, -0.1, idrotm[312], "ONLY");
3449
3450 gMC->Gspos("I023", 1,"I018", 0.0, -1.79, 1.725, idrotm[341], "ONLY");
3451 gMC->Gspos("I023", 2,"I018", 0.0, -1.79, -1.925, idrotm[341], "ONLY");
3452
3453 gMC->Gspos("I033", 1,"I018", 1.8, -1.75, 1.35, 0, "MANY");
3454 gMC->Gspos("I033", 2,"I018", -1.8, -1.75, -2.65, idrotm[345], "MANY");
3455 gMC->Gspos("I033", 3,"I018", -1.8, -1.75, 1.35, idrotm[345], "MANY");
3456 gMC->Gspos("I033", 4,"I018", 1.8, -1.75, -2.65, 0, "MANY");
3457
3458 gMC->Gspos("I034", 1,"I018", 1.6, -1.775, 1.35, idrotm[312], "ONLY");
3459 gMC->Gspos("I034", 2,"I018", -1.6, -1.775, -2.65, idrotm[348], "ONLY");
3460 gMC->Gspos("I034", 3,"I018", -1.6, -1.775, 1.35, idrotm[348], "ONLY");
3461 gMC->Gspos("I034", 4,"I018", 1.6, -1.775, -2.65, idrotm[312], "ONLY");
3462
8f8273a4 3463 gMC->Gspos("I035", 1,"I018", 1.7, -0.55, iI018dits[2]-iI035dits[2], 0, "ONLY");
3464 gMC->Gspos("I035", 2,"I018", -1.7, -0.55, iI018dits[2]-iI035dits[2], 0, "ONLY");
108bd0fe 3465
3466 gMC->Gspos("I036", 1,"I018", 0.3087, 1.7191, 3.56, idrotm[346], "ONLY");
3467 gMC->Gspos("I036", 2,"I018", 0.3087, 1.7191,-0.11, idrotm[346], "ONLY");
3468 gMC->Gspos("I036", 3,"I018", -0.3087, 1.7191,-0.11, idrotm[347], "ONLY");
3469 gMC->Gspos("I036", 4,"I018", -0.3087, 1.7191, 3.56, idrotm[347], "ONLY");
3470
3471 gMC->Gspos("I037", 1,"I018", iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], 0 , "ONLY");
3472 gMC->Gspos("I037", 2,"I018", -iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], 0 , "ONLY");
3473
3474 gMC->Gspos("I038", 1,"I018", iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], 0 , "ONLY");
3475 gMC->Gspos("I038", 2,"I018", -iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], 0 , "ONLY");
3476
3477 gMC->Gspos("I040", 1,"I018", 1.9204, -0.7118, 0.0, idrotm[346],"ONLY");
3478 gMC->Gspos("I040", 2,"I018", -1.9204, -0.7118, 0.0, idrotm[347],"ONLY");
3479 gMC->Gspos("I041", 1,"I018", iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], idrotm[346], "ONLY");
3480 gMC->Gspos("I041", 2,"I018", -iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], idrotm[347], "ONLY");
3481
3482
3483 // -- build block of the SDD electronics (heat bridge, chips, hybrid, anode microcable)
3484
3485 xI050 = iSDDCoolPipe[0]+iSDDCoolPipe[1]*sin30+iI050dits[1]/cos30+iI041dits[1];
3486 yI050 = 0;
3487 xI039 = -iSDDCoolPipe[1]/cos30;
3488 yI039 = -iI050dits[1]+iI039dits[1];
3489 gMC->Gspos("I039", 1,"I050", xI039, yI039, 0.0, 0, "ONLY");
3490 xI042 = xI039+iI039dits[0]-xI042space-iI042dits[0];
3491 yI042 = yI039+iI039dits[1]+iI042dits[1];
3492 xI043 = xI039-iI039dits[0]+xI043space+iI043dits[0];
3493 yI043 = yI039+iI039dits[1]+iI043dits[1];
3494 zChipSpace = iI042dits[2];
3495 if (zChipSpace < iI043dits[2]) {
3496 zChipSpace = iI043dits[2];
3497 }
3498 zChipSpace = zChipSpace * 2;
3499 yI051space = (2*iI039dits[2] - 4*zChipSpace)/5;
3500 zchip = -iI039dits[2] + yI051space + zChipSpace/2.;
3501 for (ichip=0; ichip<4; ichip++) {
3502 gMC->Gspos("I042", ichip+1, "I050", xI042, yI042, zchip, 0, "ONLY");
3503 gMC->Gspos("I043", ichip+1, "I050", xI043, yI043, zchip, 0, "ONLY");
3504 zchip += zChipSpace + yI051space;
3505 }
3506 xcap = 2*iI039dits[0]/5.;
3507 yI051 = yI039+iI039dits[1]+iI051dits[1];
3508 zI051 = -iI039dits[2] + yI051space/3.;
3509 icap = 1;
3510 for (ichip=0; ichip<5; ichip++) {
3511 xI051 = xI039-iI039dits[0]+xcap;
3512 gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3513 zI051 += yI051space/3.;
3514 gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3515 xI051 += xcap;
3516 gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3517 xI051 += xcap;
3518 gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3519 xI051 += xcap;
3520 gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3521 zI051 -= yI051space/3.;
3522 if (ichip == 0) {
3523 gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3524 }
3525 zI051 += zChipSpace + yI051space;
3526 }
3527 xI052 = -iI050dits[0]+iI052dits[0];
3528 yI052 = yI051+iI051dits[1]+iI052dits[1];
3529 gMC->Gspos("I052", 1,"I050", xI052, yI052, 0.0, 0, "ONLY");
3530 xI044 = iI050dits[0]-iI044dits[3];
3531 yI044 = yI052+iI052dits[1]+iI044dits[2];
3532 gMC->Gspos("I044", 1,"I050", xI044, yI044, 0.0, idrotm[301], "ONLY");
3533 gMC->Gspos("I050", 1,"I018", xI050, yI050, 0.0, idrotm[346],"ONLY");
3534 gMC->Gspos("I050", 2,"I018", -xI050, yI050, 0.0, idrotm[347],"ONLY");
3535
3536
3537 // -- build block of the SDD ladder frame at the end ladders
3538
3539 gMC->Gspos("I021",12,"I024", 1.0761, 0.0836,-0.1242, idrotm[340], "ONLY");
3540 gMC->Gspos("I021",11,"I024", -1.0761, 0.0836,-0.1242, idrotm[338], "ONLY");
3541 gMC->Gspos("I021",13,"I024", -1.0761, 0.0836,-1.8758, idrotm[339], "ONLY");
3542 gMC->Gspos("I021",14,"I024", 1.0761, 0.0836,-1.8758, idrotm[337], "ONLY");
3543
3544 gMC->Gspos("I022", 3,"I024", 0.0, -1.7899, 0.825, idrotm[312], "ONLY");
3545
3546 gMC->Gspos("I023", 3,"I024", 0.0, -1.7899,-1.0, idrotm[341], "ONLY");
3547
3548 gMC->Gspos("I025", 1,"I024", -1.9, -1.7349, 0.0, idrotm[344], "ONLY");
3549 gMC->Gspos("I025", 2,"I024", 1.987, -1.5842, 0.0, idrotm[343], "ONLY");
3550
3551 gMC->Gspos("I026", 1,"I024", -1.9782, -1.5689, 0.0, idrotm[342], "ONLY");
3552 gMC->Gspos("I026", 2,"I024", 1.8824, -1.7349, 0.0, idrotm[344], "ONLY");
3553
3554 gMC->Gspos("I029", 1,"I024", -0.087, 1.7067, iI029dits[2]-iI024dits[2], idrotm[342], "ONLY");
3555
3556 gMC->Gspos("I030", 1,"I024", 0.0958, 1.6914, iI030dits[2]-iI024dits[2], idrotm[343], "ONLY");
3557
3558 gMC->Gspos("I031", 1,"I024", iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], 0 ,"ONLY");
3559 gMC->Gspos("I031", 2,"I024", -iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], 0 ,"ONLY");
3560
3561 gMC->Gspos("I032", 1,"I024", iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], 0 ,"ONLY");
3562 gMC->Gspos("I032", 2,"I024", -iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], 0 ,"ONLY");
3563
3564
3565 xI424 = iI028dits[0]/3.;
3566 yI424 = -iI028dits[1]+iI424dits[1];
3567 gMC->Gspos("I422", 1,"I421", 0.0, 0.0, 0.0, 0, "ONLY");
3568 gMC->Gspos("I423", 1,"I421", 0.0, 0.0, iI421dits[2]-iI423dits[2], 0, "ONLY");
3569 gMC->Gspos("I421", 1,"I420", 0.0, 0.0, 0.0, idrotm[312], "ONLY");
3570 gMC->Gspos("I420", 1,"I028", -iI028dits[0]/3., iI028dits[1]-iI420dits[1], 0.0, 0, "ONLY");
3571 gMC->Gspos("I424", 1,"I028", xI424, yI424, 0.0, 0, "ONLY");
8f8273a4 3572 gMC->Gspos("I028", 1,"I024", 0.0, iI028dits[1]-iI024dits[1], iI024dits[2]-iI028dits[2], 0, "ONLY");
108bd0fe 3573
3574
3575 // -- build the SDD ladder 3
3576
3577 indI425 = 1;
3578 gMC->Gspos("I024", 1,"I047", 0.0, 0.0, 24.625, 0, "ONLY");
3579 gMC->Gspos("I018", 1,"I047", 0.0, 0.0, 3.65, 0, "ONLY");
3580 gMC->Gspos("I018", 2,"I047", 0.0, 0.0, 10.95, 0, "ONLY");
3581 gMC->Gspos("I018", 3,"I047", 0.0, 0.0, 18.25, 0, "ONLY");
3582 gMC->Gspos("I018", 4,"I047", 0.0, 0.0, -3.65, 0, "ONLY");
3583 gMC->Gspos("I018", 5,"I047", 0.0, 0.0, -10.95, 0, "ONLY");
3584 gMC->Gspos("I018", 6,"I047", 0.0, 0.0, -18.25, 0, "ONLY");
3585 gMC->Gspos("I024", 2,"I047", 0.0, 0.0, -24.625, idrotm[355], "ONLY");
3586 nameHV[0] = 'I';
3587 nameHV[1] = '3';
3588 nameHV[2] = '1';