]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/AliITSv11Hybrid.cxx
New features for the private event display
[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
7ab0715c 16
17// $Id$
18
19
8f8273a4 20//========================================================================
21//
22// Geometry of the Inner Tracking System
23//
24// This geometry is a mix between the old geometry (originally coded
25// in AliITSvPPRasymmFMD) and the new TGeo geometry (v11).
26// The flags which indicate whether the old or the new part is used
27// is set in AliITSInitGeometry.cxx
28//
29// Ludovic Gaudichet (gaudichet@to.infn.it)
30//
31//========================================================================
32
33
012f0f4c 34
35// $Log$
7ab0715c 36// Revision 1.8 2007/10/21 18:59:10 masera
37// SPD new geometry added to Hybrid V11
38//
dbfc6ce6 39// Revision 1.7 2007/08/24 14:32:57 hristov
40// Introduction of SPD half-stave volumes, cleaning and new code (in relation to new SPD geometry) in AliITSv11Hybrid (Ludovic)
41//
8f8273a4 42// Revision 1.6 2007/07/27 08:12:39 morsch
43// Write all track references into the same branch.
44//
e6add757 45// Revision 1.5 2007/06/28 10:17:25 masera
46// Introduction of the new SSD geometry in simulation (AliITSv11Hybrid) and suppression of overlaps between old and new parts
47//
bf210566 48// Revision 1.4 2007/05/09 20:40:41 masera
49// Bug fix (V11Hybrid geometry)
50//
75473741 51// Revision 1.3 2007/05/08 16:57:42 masera
52// Updates concerning the geometry: versioning system, new V11hybrid version, bug fixes (B.Nilsend and L. Gaudichet
53//
108bd0fe 54
108bd0fe 55
56#include <TClonesArray.h>
57#include <TGeometry.h>
58#include <TLorentzVector.h>
59#include <TGeoMatrix.h>
60#include <TGeoPhysicalNode.h>
108bd0fe 61#include <TString.h>
62#include <TNode.h>
63#include <TTUBE.h>
64#include <TGeoManager.h>
65#include <TGeoVolume.h>
66#include <TVirtualMC.h>
67
68#include "AliITS.h"
69#include "AliITSDetTypeSim.h"
70#include "AliITSgeom.h"
71#include "AliITSgeomSDD.h"
72#include "AliITSgeomSPD.h"
73#include "AliITSgeomSSD.h"
74#include "AliITShit.h"
108bd0fe 75#include "AliITSCalibrationSDD.h"
108bd0fe 76#include "AliITSsegmentationSDD.h"
77#include "AliITSsegmentationSPD.h"
78#include "AliITSsegmentationSSD.h"
79#include "AliITSv11Hybrid.h"
80#include "AliLog.h"
81#include "AliMC.h"
82#include "AliMagF.h"
83#include "AliRun.h"
84#include "AliTrackReference.h"
85#include "AliITSInitGeometry.h"
8f8273a4 86#include "AliITSv11GeometrySPD.h"
108bd0fe 87#include "AliITSv11GeometrySDD.h"
bf210566 88#include "AliITSv11GeometrySSD.h"
108bd0fe 89
90
108bd0fe 91ClassImp(AliITSv11Hybrid)
92
93//______________________________________________________________________
94AliITSv11Hybrid::AliITSv11Hybrid():
95 AliITS(),
96 fGeomDetOut(kFALSE),
97 fGeomDetIn(kFALSE),
98 fByThick(kTRUE),
99 fMajorVersion(IsVersion()),
100 fMinorVersion(-1),
101 fDet1(0),
102 fDet2(0),
103 fChip1(0),
104 fChip2(0),
105 fRails(0),
106 fFluid(0),
107 fIDMother(0),
012f0f4c 108 fInitGeom((AliITSVersion_t)fMajorVersion,fMinorVersion),
8f8273a4 109 fSPDgeom(0),
bf210566 110 fSDDgeom(0),
111 fSSDgeom(0)
108bd0fe 112 {
012f0f4c 113 // Standard default constructor
108bd0fe 114 // Inputs:
115 // none.
116 // Outputs:
117 // none.
118 // Return:
119 // none.
108bd0fe 120}
8f8273a4 121
122//______________________________________________________________________
123AliITSv11Hybrid::AliITSv11Hybrid(const char *title)
124 : AliITS("ITS", title),
125 fGeomDetOut(kFALSE),
126 fGeomDetIn(kFALSE),
127 fByThick(kTRUE),
128 fMajorVersion(IsVersion()),
129 fMinorVersion(1),
130 fDet1(200.0),
131 fDet2(200.0),
132 fChip1(150.0),
133 fChip2(150.0),
134 fRails(0),
135 fFluid(1),
136 fIDMother(0),
137 fInitGeom((AliITSVersion_t)fMajorVersion,fMinorVersion),
138 fSPDgeom(0),
139 fSDDgeom(0),
140 fSSDgeom(0) {
141 // Standard constructor for the v11Hybrid geometry.
142 // Inputs:
143 // const char * title Arbitrary title
144 // Outputs:
145 // none.
146 // Return:
147 // none.
148 Int_t i;
149
150 fSPDgeom = new AliITSv11GeometrySPD();
151 fSDDgeom = new AliITSv11GeometrySDD(0);
152 fSSDgeom = new AliITSv11GeometrySSD();
153
154 fIdN = 6;
155 fIdName = new TString[fIdN];
156
157 if (AliITSInitGeometry::SPDIsTGeoNative()) {
dbfc6ce6 158 fIdName[0] = fSPDgeom->GetSenstiveVolumeName1();
159 fIdName[1] = fSPDgeom->GetSenstiveVolumeName2();
8f8273a4 160 } else {
161 fIdName[0] = "ITS1";
162 fIdName[1] = "ITS2";
163 }
164
165 if (AliITSInitGeometry::SDDIsTGeoNative()) {
166 fIdName[2] = fSDDgeom->GetSenstiveVolumeName3();
167 fIdName[3] = fSDDgeom->GetSenstiveVolumeName4();
168 } else {
169 fIdName[2] = "ITS3";
170 fIdName[3] = "ITS4";
171 }
172
173 if (AliITSInitGeometry::SSDIsTGeoNative()) {
174 fIdName[4] = fSSDgeom->GetSenstiveVolumeName5();
175 fIdName[5] = fSSDgeom->GetSenstiveVolumeName6();
176 } else {
177 fIdName[4] = "ITS5";
178 fIdName[5] = "ITS6";
179 }
180
181 fIdSens = new Int_t[fIdN];
182 for(i=0;i<fIdN;i++) fIdSens[i] = 0;
183 SetThicknessDet1();
184 SetThicknessDet2();
185 SetThicknessChip1();
186 SetThicknessChip2();
187 SetDensityServicesByThickness();
188
189 fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.euc";
190 strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det",60);
191 strncpy(fRead,fEuclidGeomDet,60);
192 strncpy(fWrite,fEuclidGeomDet,60);
193 strncpy(fRead,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det",60);
194}
195
108bd0fe 196//______________________________________________________________________
197AliITSv11Hybrid::AliITSv11Hybrid(const char *name, const char *title)
198 : AliITS("ITS", title),
199 fGeomDetOut(kFALSE),
200 fGeomDetIn(kFALSE),
201 fByThick(kTRUE),
202 fMajorVersion(IsVersion()),
8f8273a4 203 fMinorVersion(1),
204 fDet1(200.0),
205 fDet2(200.0),
206 fChip1(150.0),
207 fChip2(150.0),
108bd0fe 208 fRails(0),
8f8273a4 209 fFluid(1),
108bd0fe 210 fIDMother(0),
012f0f4c 211 fInitGeom((AliITSVersion_t)fMajorVersion,fMinorVersion),
8f8273a4 212 fSPDgeom(0),
bf210566 213 fSDDgeom(0),
214 fSSDgeom(0) {
012f0f4c 215 // Standard constructor for the v11Hybrid geometry.
108bd0fe 216 // Inputs:
217 // const char * name Ignored, set to "ITS"
218 // const char * title Arbitrary title
219 // Outputs:
220 // none.
221 // Return:
222 // none.
223 Int_t i;
bf210566 224
8f8273a4 225 fSPDgeom = new AliITSv11GeometrySPD();
bf210566 226 fSDDgeom = new AliITSv11GeometrySDD(0);
227 fSSDgeom = new AliITSv11GeometrySSD();
108bd0fe 228
229 fIdN = 6;
230 fIdName = new TString[fIdN];
8f8273a4 231
232 (void) name; // removes warning message
233
234 if (AliITSInitGeometry::SPDIsTGeoNative()) {
dbfc6ce6 235 fIdName[0] = fSPDgeom->GetSenstiveVolumeName1();
236 fIdName[1] = fSPDgeom->GetSenstiveVolumeName2();
8f8273a4 237 } else {
238 fIdName[0] = "ITS1";
239 fIdName[1] = "ITS2";
240 }
241
108bd0fe 242 if (AliITSInitGeometry::SDDIsTGeoNative()) {
243 fIdName[2] = fSDDgeom->GetSenstiveVolumeName3();
244 fIdName[3] = fSDDgeom->GetSenstiveVolumeName4();
245 } else {
246 fIdName[2] = "ITS3";
247 fIdName[3] = "ITS4";
248 }
bf210566 249
250 if (AliITSInitGeometry::SSDIsTGeoNative()) {
251 fIdName[4] = fSSDgeom->GetSenstiveVolumeName5();
252 fIdName[5] = fSSDgeom->GetSenstiveVolumeName6();
253 } else {
254 fIdName[4] = "ITS5";
255 fIdName[5] = "ITS6";
256 }
108bd0fe 257
108bd0fe 258 fIdSens = new Int_t[fIdN];
259 for(i=0;i<fIdN;i++) fIdSens[i] = 0;
260 SetThicknessDet1();
261 SetThicknessDet2();
262 SetThicknessChip1();
263 SetThicknessChip2();
264 SetDensityServicesByThickness();
265
266 fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.euc";
267 strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det",60);
268 strncpy(fRead,fEuclidGeomDet,60);
269 strncpy(fWrite,fEuclidGeomDet,60);
270 strncpy(fRead,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymmFMD.det",60);
108bd0fe 271}
8f8273a4 272
108bd0fe 273//______________________________________________________________________
274AliITSv11Hybrid::~AliITSv11Hybrid() {
275 // Standard destructor
276 // Inputs:
277 // none.
278 // Outputs:
279 // none.
280 // Return:
281 // none.
8f8273a4 282 delete fSPDgeom;
108bd0fe 283 delete fSDDgeom;
bf210566 284 delete fSSDgeom;
108bd0fe 285}
286
287//______________________________________________________________________
bf210566 288void AliITSv11Hybrid::SetT2Lmatrix(const char *name, Double_t yShift,
289 Bool_t yFlip, Bool_t yRot180)
108bd0fe 290 const {
291
292 //
293 // Creates the TGeo Local to Tracking transformation matrix
294 // and sends it to the corresponding TGeoPNEntry
295 //
296 // This function is used in AddAlignableVolumes()
297
298 TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntry(name);
299 const char *path = alignableEntry->GetTitle();
300
301 if (!gGeoManager->cd(path))
302 AliFatal(Form("Volume path %s not valid!",path));
303 TGeoHMatrix* globMatrix = gGeoManager->GetCurrentMatrix();
304
305 Double_t *gtrans = globMatrix->GetTranslation(), rotMatrix[9];
306 memcpy(&rotMatrix[0], globMatrix->GetRotationMatrix(), 9*sizeof(Double_t));
bf210566 307 Double_t al = TMath::ATan2(rotMatrix[1],rotMatrix[0]);
333c948a 308 if (yRot180) {
bf210566 309 al = TMath::ATan2(rotMatrix[1],-rotMatrix[0]);
333c948a 310 }
108bd0fe 311
312 TGeoHMatrix *matLtoT = new TGeoHMatrix;
bf210566 313 matLtoT->SetDx( gtrans[0]*TMath::Cos(al)+gtrans[1]*TMath::Sin(al) ); // translation
108bd0fe 314 matLtoT->SetDy( yShift );
315 matLtoT->SetDz(-gtrans[2]);
316 rotMatrix[0]= 0; rotMatrix[1]= 1; rotMatrix[2]= 0; // + rotation
317 rotMatrix[3]= 1; rotMatrix[4]= 0; rotMatrix[5]= 0;
318 rotMatrix[6]= 0; rotMatrix[7]= 0; rotMatrix[8]=-1;
333c948a 319 if (yFlip) rotMatrix[3] = -1; // flipping in y (for SPD1)
320
321 if (yRot180) { // rotation of pi around the axis perpendicular to the wafer
322 matLtoT->SetDy( -yShift );
323 rotMatrix[3] = -1;
8f8273a4 324 if (yFlip) rotMatrix[3] = 1; // flipping in y (for SPD1)
333c948a 325 matLtoT->SetDz(gtrans[2]);
326 rotMatrix[8]=1;
327 }
108bd0fe 328
329 TGeoRotation rot;
330 rot.SetMatrix(rotMatrix);
331 matLtoT->MultiplyLeft(&rot);
332 TGeoHMatrix *matTtoL = new TGeoHMatrix(matLtoT->Inverse());
333 delete matLtoT;
334 alignableEntry->SetMatrix(matTtoL);
335}
bf210566 336
108bd0fe 337//______________________________________________________________________
338void AliITSv11Hybrid::AddAlignableVolumes() const
339{
340 //
341 // Creates entries for alignable volumes associating the symbolic volume
342 // name with the corresponding volume path.
343 //
344 // Records in the alignable entries the transformation matrices converting
345 // TGeo local coordinates (in the RS of alignable volumes) to the tracking
346 // system
347 // For this, this function has to run before the misalignment because we
348 // are using the ideal positions in the AliITSgeom object.
349
350 AliInfo("Add ITS alignable volumes");
351
352 if (!gGeoManager) {
353 AliFatal("TGeoManager doesn't exist !");
354 return;
355 }
356
357 if( !gGeoManager->SetAlignableEntry("ITS","ALIC_1/ITSV_1") )
358 AliFatal("Unable to set alignable entry!!");
359
108bd0fe 360 TString strSPD = "ITS/SPD";
361 TString strSDD = "ITS/SDD";
362 TString strSSD = "ITS/SSD";
363 TString strStave = "/Stave";
8f8273a4 364 TString strHalfStave = "/HalfStave";
108bd0fe 365 TString strLadder = "/Ladder";
366 TString strSector = "/Sector";
367 TString strSensor = "/Sensor";
368 TString strEntryName1;
369 TString strEntryName2;
370 TString strEntryName3;
8f8273a4 371 TString strEntryName4;
108bd0fe 372
8f8273a4 373 //===== SPD layers =====
374 if (AliITSInitGeometry::SPDIsTGeoNative()) { // new SPD geometry
375
376 TString str0 = "ALIC_1/ITSV_1/ITSSPDCarbonFiberSectorV_";
377 TString str1 = "/ITSSPDSensitiveVirtualvolumeM0_1/LAY1_STAVE_";
378 TString str1Bis = "/HALF-STAVE";
379 TString str1Tierce = "_1";
380 TString str2 = "/LAY1_LADDER_";
108bd0fe 381
382 TString sector;
383 TString stave;
8f8273a4 384 TString halfStave;
108bd0fe 385 TString module;
386
8f8273a4 387 for(Int_t cSect = 0; cSect<10; cSect++) {
108bd0fe 388
389 sector = str0;
8f8273a4 390 sector += cSect+1; // this is one full sector
108bd0fe 391 strEntryName1 = strSPD;
392 strEntryName1 += 0;
393 strEntryName1 += strSector;
8f8273a4 394 strEntryName1 += cSect;
108bd0fe 395 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),sector.Data()))
396 AliFatal("Unable to set alignable entry!!");
397 //printf("%s == %s\n",strEntryName1.Data(),sector.Data());
398
8f8273a4 399 for(Int_t cStave=0; cStave<2; cStave++) {
108bd0fe 400
401 stave = sector;
402 stave += str1;
8f8273a4 403 stave += cStave;
108bd0fe 404 strEntryName2 = strEntryName1;
405 strEntryName2 += strStave;
8f8273a4 406 strEntryName2 += cStave;
407
408 for(Int_t cHS=0; cHS<2; cHS++) {
409
410 halfStave = stave;
411 halfStave += str1Bis;
412 halfStave += cHS;
413 halfStave += str1Tierce;
414 strEntryName3 = strEntryName2;
415 strEntryName3 += strHalfStave;
416 strEntryName3 += cHS;
108bd0fe 417
8f8273a4 418 if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(),halfStave.Data()))
419 AliFatal(Form("Unable to set alignable entry!! %s :: %s",strEntryName3.Data(),halfStave.Data()));
420
421 for(Int_t cLad=0; cLad<2; cLad++) {
108bd0fe 422
8f8273a4 423 module = halfStave;
424 module += str2;
425 module += cLad+cHS*2;
426 strEntryName4 = strEntryName3;
427 strEntryName4 += strLadder;
428 strEntryName4 += cLad+cHS*2;
429 if(!gGeoManager->SetAlignableEntry(strEntryName4.Data(),module.Data()))
430 AliFatal("Unable to set alignable entry!!");
431
432 SetT2Lmatrix(strEntryName4.Data(), -0.0081, kTRUE, kTRUE);
dbfc6ce6 433 // -0.0081 is the shift between the centers of alignable and sensitive volumes
434 // It is directly extracted from the new SPD geometry
435
8f8273a4 436 }
437 }
438 }
439 }
440
441 str1 = "/ITSSPDSensitiveVirtualvolumeM0_1/LAY2_STAVE_";
442 str2 = "/LAY2_LADDER_";
443
444 for(Int_t cSect = 0; cSect<10; cSect++) {
445
446 sector = str0;
447 sector += cSect+1; // this is one full sector
448 strEntryName1 = strSPD;
449 strEntryName1 += 1;
450 strEntryName1 += strSector;
451 strEntryName1 += cSect;
452
453 for(Int_t cStave=0; cStave<4; cStave++) {
454
455 stave = sector;
456 stave += str1;
457 stave += cStave;
458 strEntryName2 = strEntryName1;
459 strEntryName2 += strStave;
460 strEntryName2 += cStave;
461
462 for(Int_t cHS=0; cHS<2; cHS++) {
463
464 halfStave = stave;
465 halfStave += str1Bis;
466 halfStave += cHS;
467 halfStave += str1Tierce;
108bd0fe 468 strEntryName3 = strEntryName2;
8f8273a4 469 strEntryName3 += strHalfStave;
470 strEntryName3 += cHS;
471
472 if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(),halfStave.Data()))
108bd0fe 473 AliFatal("Unable to set alignable entry!!");
108bd0fe 474
8f8273a4 475 for(Int_t cLad=0; cLad<2; cLad++) {
476
477 module = halfStave;
478 module += str2;
479 module += cLad+cHS*2;
480 strEntryName4 = strEntryName3;
481 strEntryName4 += strLadder;
482 strEntryName4 += cLad+cHS*2;
483 if(!gGeoManager->SetAlignableEntry(strEntryName4.Data(),module.Data()))
484 AliFatal("Unable to set alignable entry!!");
485
486 SetT2Lmatrix(strEntryName4.Data(), -0.0081, kFALSE);
487 }
108bd0fe 488 }
489 }
490 }
108bd0fe 491
8f8273a4 492 } else { // else old SPD geometry
493
108bd0fe 494 TString str0 = "ALIC_1/ITSV_1/ITSD_1/IT12_1/I12B_";
8f8273a4 495 TString str1 = "/I10B_";
496 TString str1Bis = "/L1H-STAVE";
497 TString str1Tierce = "_1";
498 TString str2 = "/I107_";
108bd0fe 499
500 TString sector;
501 TString stave;
8f8273a4 502 TString halfStave;
108bd0fe 503 TString module;
504
8f8273a4 505 for(Int_t cSect = 0; cSect<10; cSect++) {
108bd0fe 506
507 sector = str0;
8f8273a4 508 sector += cSect+1; // this is one full sector
108bd0fe 509 strEntryName1 = strSPD;
8f8273a4 510 strEntryName1 += 0;
108bd0fe 511 strEntryName1 += strSector;
8f8273a4 512 strEntryName1 += cSect;
513 //printf("%s == %s\n",strEntryName1.Data(),sector.Data());
108bd0fe 514 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),sector.Data()))
515 AliFatal("Unable to set alignable entry!!");
108bd0fe 516
8f8273a4 517 for(Int_t cStave = 0; cStave<2; cStave++) {
108bd0fe 518
519 stave = sector;
520 stave += str1;
8f8273a4 521 stave += cStave+1;
108bd0fe 522 strEntryName2 = strEntryName1;
523 strEntryName2 += strStave;
8f8273a4 524 strEntryName2 += cStave;
108bd0fe 525 //printf("%s == %s\n",strEntryName2.Data(),stave.Data()); // this is a stave
526
8f8273a4 527 for(Int_t cHS=0; cHS<2; cHS++) {
528
529 halfStave = stave;
530 halfStave += str1Bis;
531 halfStave += cHS;
532 halfStave += str1Tierce;
108bd0fe 533 strEntryName3 = strEntryName2;
8f8273a4 534 strEntryName3 += strHalfStave;
535 strEntryName3 += cHS;
536 //printf("%s == %s\n",strEntryName3.Data(),halfStave.Data()); // this is a half-stave
537 if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(),halfStave.Data()))
538 AliFatal("Unable to set alignable entry!!");
108bd0fe 539
8f8273a4 540 for(Int_t cLadder = 0; cLadder<2; cLadder++) {
541
542 module = halfStave;
543 module += str2;
544 module += cLadder+cHS*2+1;
545 strEntryName4 = strEntryName3;
546 strEntryName4 += strLadder;
547 strEntryName4 += cLadder+cHS*2;
548 //printf("%s == %s\n",strEntryName4.Data(),module.Data());
549 if(!gGeoManager->SetAlignableEntry(strEntryName4.Data(),module.Data()))
550 AliFatal("Unable to set alignable entry!!");
551
552 SetT2Lmatrix(strEntryName4.Data(), -fChip1*0.0001/2., kTRUE);
553 }
554 }
555 }
556 }
557
558 str1Bis = "/L2H-STAVE";
559 str1 = "/I20B_";
560 str2 = "/I1D7_";
561
562 for(Int_t cSect = 0; cSect<10; cSect++) {
563
564 sector = str0;
565 sector += cSect+1; // this is one full sector
566 strEntryName1 = strSPD;
567 strEntryName1 += 1;
568 strEntryName1 += strSector;
569 strEntryName1 += cSect;
570 // if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),sector.Data()))
571 // AliFatal("Unable to set alignable entry!!");
572 // we don't need the previous lines because the whole sector is already define
573 // with first layer ...
574
575 for(Int_t cStave =0; cStave<4; cStave++) {
576
577 stave = sector;
578 stave += str1;
579 stave += cStave+1;
580 strEntryName2 = strEntryName1;
581 strEntryName2 += strStave;
582 strEntryName2 += cStave;
583
584 for(Int_t cHS=0; cHS<2; cHS++) {
585
586 halfStave = stave;
587 halfStave += str1Bis;
588 halfStave += cHS;
589 halfStave += str1Tierce;
590 strEntryName3 = strEntryName2;
591 strEntryName3 += strHalfStave;
592 strEntryName3 += cHS;
593 //printf("%s == %s\n",strEntryName3.Data(),halfStave.Data()); // this is a half-stave
594 if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(),halfStave.Data()))
595 AliFatal("Unable to set alignable entry!!");
596
597 for(Int_t cLad =0; cLad<2; cLad++) {
598
599 module = halfStave;
600 module += str2;
601 module += cLad+cHS*2+1;
602 strEntryName4 = strEntryName3;
603 strEntryName4 += strLadder;
604 strEntryName4 += cLad+cHS*2;
605 //printf("%s == %s\n",strEntryName4.Data(),module.Data());
606 if(!gGeoManager->SetAlignableEntry(strEntryName4.Data(),module.Data()))
607 AliFatal("Unable to set alignable entry!!");
608
609 SetT2Lmatrix(strEntryName4.Data(), -fChip2*0.0001/2., kFALSE);
610 }
108bd0fe 611 }
612 }
613 }
614 }
615
616 //===== SDD layers =====
108bd0fe 617 if (AliITSInitGeometry::SDDIsTGeoNative()) { // new SDD geometry
618
619 TString str0 = "/ALIC_1/ITSV_1/ITSsddLayer3_1/ITSsddLadd_"; // SDD layer1
620 TString str1 = "/ITSsddSensor3_";
621 TString str2 = "/ITSsddWafer3_1";
622 TString ladder;
623 TString wafer;
624
625 for(Int_t c1 = 0; c1<14; c1++) {
626
627 ladder = str0;
628 ladder += c1; // the set of wafers from one ladder
629 strEntryName1 = strSDD;
630 strEntryName1 += 2;
631 strEntryName1 +=strLadder;
632 strEntryName1 += c1;
633 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
634 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
635 AliFatal("Unable to set alignable entry!!");
636
637 for(Int_t c2 =0; c2<6; c2++) {
638
639 wafer = ladder;
640 wafer += str1;
641 wafer += c2;
642 wafer += str2; // one wafer
643 strEntryName2 = strEntryName1;
644 strEntryName2 += strSensor;
645 strEntryName2 += c2;
646 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
647 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data()))
648 AliFatal("Unable to set alignable entry!!");
649
bf210566 650 SetT2Lmatrix(strEntryName2.Data(), 0, kFALSE, c2>=3);
108bd0fe 651 }
652 }
653
654 str0 = "/ALIC_1/ITSV_1/ITSsddLayer4_1/ITSsddLadd_"; // SDD layer2
655 str1 = "/ITSsddSensor4_";
656 str2 = "/ITSsddWafer4_1";
657
658 for(Int_t c1 = 0; c1<22; c1++) {
659
660 ladder = str0;
661 ladder += c1; // the set of wafers from one ladder
662 strEntryName1 = strSDD;
663 strEntryName1 += 3;
664 strEntryName1 += strLadder;
665 strEntryName1 += c1;
666 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
667 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
668 AliFatal("Unable to set alignable entry!!");
669
670 for(Int_t c2 =0; c2<8; c2++) {
671
672 wafer = ladder;
673 wafer += str1;
674 wafer += c2;
675 wafer += str2; // one wafer
676 strEntryName2 = strEntryName1;
677 strEntryName2 += strSensor;
678 strEntryName2 += c2;
679 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
680 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data()))
681 AliFatal("Unable to set alignable entry!!");
682
bf210566 683 SetT2Lmatrix(strEntryName2.Data(), 0, kFALSE, c2>=4);
108bd0fe 684 }
685 }
686
bf210566 687 } else { // else old SDD geometry
108bd0fe 688
689 TString str0 = "ALIC_1/ITSV_1/ITSD_1/IT34_1/I004_";
690 TString str1 = "/I302_";
691
692 TString ladder;
693 TString wafer;
694
695 for(Int_t c1 = 1; c1<=14; c1++){
696
697 ladder = str0;
698 ladder += c1; // the set of wafers from one ladder
699 strEntryName1 = strSDD;
700 strEntryName1 += 2;
701 strEntryName1 +=strLadder;
702 strEntryName1 += (c1-1);
703 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
704 AliFatal("Unable to set alignable entry!!");
705 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
706
707 for(Int_t c2 =1; c2<=6; c2++){
708
709 wafer = ladder;
710 wafer += str1;
711 wafer += c2; // one wafer
712 strEntryName2 = strEntryName1;
713 strEntryName2 += strSensor;
714 strEntryName2 += (c2-1);
715 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data()))
716 AliFatal("Unable to set alignable entry!!");
717 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
718
bf210566 719 SetT2Lmatrix(strEntryName2.Data(), 0, kFALSE);
108bd0fe 720 }
721 }
722
723 str0 = "ALIC_1/ITSV_1/ITSD_1/IT34_1/I005_";
724 str1 = "/I402_";
725
726 for(Int_t c1 = 1; c1<=22; c1++){
727
728 ladder = str0;
729 ladder += c1; // the set of wafers from one ladder
730 strEntryName1 = strSDD;
731 strEntryName1 += 3;
732 strEntryName1 +=strLadder;
733 strEntryName1 += (c1-1);
734 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
735 AliFatal("Unable to set alignable entry!!");
736 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
737
738 for(Int_t c2 =1; c2<=8; c2++){
739
740 wafer = ladder;
741 wafer += str1;
742 wafer += c2; // one wafer
743 strEntryName2 = strEntryName1;
744 strEntryName2 += strSensor;
745 strEntryName2 += (c2-1);
746 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data()))
747 AliFatal("Unable to set alignable entry!!");
748 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
749
bf210566 750 SetT2Lmatrix(strEntryName2.Data(), 0, kFALSE);
108bd0fe 751 }
752 }
108bd0fe 753 } // end SDD
754
8f8273a4 755 //===== SSD layers =====
bf210566 756 if (AliITSInitGeometry::SSDIsTGeoNative()) { // new SSD geometry
757
758 TString str0 = "/ALIC_1/ITSV_1/ITSssdLayer5_1/ITSssdLay5Ladd_"; // SSD layer1
759 TString str1 = "/ITSsddSensor5_";
760 TString str2 = "";
761 TString ladder;
762 TString wafer;
763
764 for(Int_t c1 = 0; c1<34; c1++) {
765
766 ladder = str0;
767 ladder += c1; // the set of wafers from one ladder
768 strEntryName1 = strSSD;
769 strEntryName1 += 4;
770 strEntryName1 += strLadder;
771 strEntryName1 += c1;
772 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
773 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
774 AliFatal("Unable to set alignable entry!!");
775
776 for(Int_t c2 =0; c2<22; c2++) {
777
778 wafer = ladder;
779 wafer += str1;
780 wafer += c2;
781 //wafer += str2; // one wafer
782 strEntryName2 = strEntryName1;
783 strEntryName2 += strSensor;
784 strEntryName2 += c2;
785 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
786 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data()))
787 AliFatal("Unable to set alignable entry!!");
788
789 SetT2Lmatrix(strEntryName2.Data(), 0, kFALSE, kFALSE);
790 }
791 }
792
793 str0 = "/ALIC_1/ITSV_1/ITSssdLayer6_1/ITSssdLay6Ladd_"; // SSD layer2
794 str1 = "/ITSsddSensor6_";
795 str2 = "";
796
797 for(Int_t c1 = 0; c1<38; c1++) {
798
799 ladder = str0;
800 ladder += c1; // the set of wafers from one ladder
801 strEntryName1 = strSSD;
802 strEntryName1 += 5;
803 strEntryName1 += strLadder;
804 strEntryName1 += c1;
805 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
806 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
807 AliFatal("Unable to set alignable entry!!");
808
809 for(Int_t c2 =0; c2<25; c2++) {
810
811 wafer = ladder;
812 wafer += str1;
813 wafer += c2;
814 //wafer += str2; // one wafer
815 strEntryName2 = strEntryName1;
816 strEntryName2 += strSensor;
817 strEntryName2 += c2;
818 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
819 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data()))
820 AliFatal("Unable to set alignable entry!!");
821
822 SetT2Lmatrix(strEntryName2.Data(), 0, kFALSE, kFALSE);
823 }
824 }
825
826 } else { // else old SSD geometry
108bd0fe 827 TString str0 = "ALIC_1/ITSV_1/ITSD_1/IT56_1/I565_";
828 TString str1 = "/I562_";
108bd0fe 829 TString ladder;
830 TString wafer;
831
832 for(Int_t c1 = 1; c1<=34; c1++){
bf210566 833
108bd0fe 834 ladder = str0;
835 ladder += c1; // the set of wafers from one ladder
836 strEntryName1 = strSSD;
837 strEntryName1 += 4;
838 strEntryName1 +=strLadder;
839 strEntryName1 += (c1-1);
840 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
841 AliFatal("Unable to set alignable entry!!");
842 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
bf210566 843
108bd0fe 844 for(Int_t c2 = 1; c2<=22; c2++){
bf210566 845
108bd0fe 846 wafer = ladder;
847 wafer += str1;
848 wafer += c2; // one wafer
849 strEntryName2 = strEntryName1;
850 strEntryName2 += strSensor;
851 strEntryName2 += (c2-1);
852 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data()))
853 AliFatal("Unable to set alignable entry!!");
854 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
bf210566 855
856 SetT2Lmatrix(strEntryName2.Data(), 0, kFALSE);
108bd0fe 857 }
858 }
bf210566 859
bf210566 860 str0 = "ALIC_1/ITSV_1/ITSD_1/IT56_1/I569_";
861 str1 = "/I566_";
862
108bd0fe 863 for(Int_t c1 = 1; c1<=38; c1++){
bf210566 864
108bd0fe 865 ladder = str0;
866 ladder += c1; // the set of wafers from one ladder
867 strEntryName1 = strSSD;
868 strEntryName1 += 5;
869 strEntryName1 +=strLadder;
870 strEntryName1 += (c1-1);
871 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
872 AliFatal("Unable to set alignable entry!!");
873 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
bf210566 874
108bd0fe 875 for(Int_t c2 = 1; c2<=25; c2++){
bf210566 876
108bd0fe 877 wafer = ladder;
878 wafer += str1;
879 wafer += c2; // one wafer
880 strEntryName2 = strEntryName1;
881 strEntryName2 += strSensor;
882 strEntryName2 += (c2-1);
883 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data()))
884 AliFatal("Unable to set alignable entry!!");
885 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
bf210566 886
887 SetT2Lmatrix(strEntryName2.Data(), 0, kFALSE);
108bd0fe 888 }
889 }
bf210566 890 } // end SSD geometry
108bd0fe 891}
bf210566 892
108bd0fe 893//______________________________________________________________________
894void AliITSv11Hybrid::BuildGeometry(){
895 // Geometry builder for the ITS version 10. Event Display geometry.
896 // Inputs:
897 // none.
898 // Outputs:
899 // none.
900 // Return:
901 // none.
902
903 TNode *node, *top;
904
905 const Int_t kColorITS=kYellow;
906 //
907 top = gAlice->GetGeometry()->GetNode("alice");
908
909
910 new TTUBE("S_layer1","Layer1 of ITS","void",
911 3.8095,3.8095+1.03*9.36/100.,14.35);
912 top->cd();
913 node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
914 node->SetLineColor(kColorITS);
915 fNodes->Add(node);
916
917 new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+1.03*9.36/100.,14.35);
918 top->cd();
919 node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
920 node->SetLineColor(kColorITS);
921 fNodes->Add(node);
922
923 new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.94*9.36/100.,25.1);
924 top->cd();
925 node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
926 node->SetLineColor(kColorITS);
927 fNodes->Add(node);
928
929 new TTUBE("S_layer4","Layer4 of ITS","void",24.1,24.1+0.95*9.36/100.,32.1);
930 top->cd();
931 node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
932 node->SetLineColor(kColorITS);
933 fNodes->Add(node);
934
935 new TTUBE("S_layer5","Layer5 of ITS","void",
936 38.5,38.5+0.91*9.36/100.,49.405);
937 top->cd();
938 node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
939 node->SetLineColor(kColorITS);
940 fNodes->Add(node);
941
942 new TTUBE("S_layer6","Layer6 of ITS","void",
943 43.5765,43.5765+0.87*9.36/100.,55.27);
944 top->cd();
945 node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
946 node->SetLineColor(kColorITS);
947 fNodes->Add(node);
948}
949
950//______________________________________________________________________
951void AliITSv11Hybrid::CreateGeometry() {
952
333c948a 953 // Create the geometry and insert it in ALIC
954 // It calls first the CreateOldGeometry() routine which add the
955 // pieces coming from the old v10 geometry. Then the pieces from
956 // the new geometry are inserting in the mother volume ITSV.
957
108bd0fe 958 TGeoManager *geoManager = gGeoManager;
959
960 CreateOldGeometry();
961 TGeoVolume *vITS = geoManager->GetVolume("ITSV");
962
bf210566 963 TGeoVolume *vIS02 = geoManager->GetVolume("IS02");
964
965
966
012f0f4c 967 const Char_t *cvsDate="$Date$";
968 const Char_t *cvsRevision="$Revision$";
7ab0715c 969 const Int_t kLength=100;
970 Char_t vstrng[kLength];
971 if(fInitGeom.WriteVersionString(vstrng,kLength,(AliITSVersion_t)IsVersion(),
012f0f4c 972 fMinorVersion,cvsDate,cvsRevision))
973 vITS->SetTitle(vstrng);
974
8f8273a4 975 if (AliITSInitGeometry::SPDIsTGeoNative()) {
976 fSPDgeom->SPDSector(vITS);
977 }
978
108bd0fe 979 if (AliITSInitGeometry::SDDIsTGeoNative()) {
980 fSDDgeom->Layer3(vITS);
981 fSDDgeom->Layer4(vITS);
bf210566 982 fSDDgeom->ForwardLayer3(vIS02);
983 fSDDgeom->ForwardLayer4(vIS02);
984 }
985 if (AliITSInitGeometry::SSDIsTGeoNative()) {
986 fSSDgeom->Layer5(vITS);
987 fSSDgeom->Layer6(vITS);
108bd0fe 988 }
989}
990
991//______________________________________________________________________
992void AliITSv11Hybrid::CreateOldGeometry(){
333c948a 993 // This routine defines and creates some pieces of the geometry
994 // of version 10 (AliITSvPPRasymmFMD)
108bd0fe 995
996 //Begin_Html
997 /*
998 <img src="picts/ITS/ITS_full_vPPRasymm.jpg">
999 </pre>
1000 <br clear=left>
1001 <font size=+2 color=red>
1002 <p>This shows the full ITS geometry.
1003 </font>
1004 <img src="picts/ITS/ITS_SPD_Barrel_vPPRasymm.jpg">
1005 </pre>
1006 < br clear=left>
1007 <font size=+2 color=red>
1008 <p>This shows the full SPD Barrel of the ITS geometry.
1009 </font>
1010 <img src="picts/ITS/ITS_SDD_Barrel_vPPRasymm.jpg">
1011 </pre>
1012 <br clear=left>
1013 <font size=+2 color=red>
1014 <p>This shows the full SDD Barrel of the ITS geometry.
1015 </font>
1016 <img src="picts/ITS/ITS_SSD_Barrel_vPPRasymm.jpg">
1017 </pre>
1018 <br clear=left>
1019 <font size=+2 color=red>
1020 <p>This shows the full SSD Barrel of the ITS geometry.
1021 </font>
1022 */
1023 //End_Html
1024 //INNER RADII OF THE SILICON LAYERS
1025 // Float_t rl[6] = { 3.8095,7.,15.,24.,38.1,43.5765 };
7ab0715c 1026 //THICKNESSES OF LAYERS (in % radiation kLength)
108bd0fe 1027 Float_t drl[6] = { 1.03,1.03,0.94,0.95,0.91,0.87 };
1028 //HALF LENGTHS OF LAYERS
1029 // Float_t dzl[6] = { 14.35,14.35,25.1,32.1,49.405,55.27 };
1030 //LENGTHS OF END-LADDER BOXES (ALL INCLUDED)
1031 // Float_t dzb[6] = { 12.4,12.4,13.5,15.,7.5,7.5 };
1032 //THICKNESSES OF END-LADDER BOXES (ALL INCLUDED)
1033 // Float_t drb[6] = { rl[1]-rl[0],0.2,5.,5.,4.,4. };
1034
1035
1036 Float_t dits[100], rlim, zmax;
1037 // Float_t zpos;
1038 // Float_t pcits[50]
1039 Float_t ztpc;
1040 Int_t idrotm[1999], i;
1041 Float_t dgh[100];
1042
1043 // Define some variables for SPD
1044
1045 Float_t dits1[3], di101[3], di107[3], di10b[3], di106[3];// for layer 1
1046 //Float_t di103[3], di10a[3], di102[3]; // for layer 1
1047 Float_t dits2[3], di1d1[3], di1d7[3], di20b[3], di1d6[3];// for layer 2
1048 //Float_t di1d3[3], di20a[3], di1d2[3]; // for layer 2
1049 Float_t di108[3];
1050 //Float_t di104[3]; // for both layers
1051
1052 Float_t ddet1=200.; // total detector thickness on layer 1 (micron)
1053 Float_t dchip1=200.; // total chip thickness on layer 1 (micron)
1054
1055 Float_t ddet2=200.; // total detector thickness on layer 2 (micron)
1056 Float_t dchip2=200.; // total chip thickness on layer 2 (micron)
1057
1058 Float_t dbus=300.; // total bus thickness on both layers (micron)
1059
1060 ddet1 = GetThicknessDet1();
1061 ddet2 = GetThicknessDet2();
1062 dchip1 = GetThicknessChip1();
1063 dchip2 = GetThicknessChip2();
1064
1065 if(ddet1 < 100. || ddet1 > 300.) {
1066 AliWarning("The detector thickness for layer 1 is outside ");
1067 AliWarning("the range of [100,300] microns. The default value of 200 microns ");
1068 AliWarning("will be used.");
1069 ddet1=200.;
1070 } // end if
1071
1072 if(ddet2 < 100. || ddet2 > 300.) {
1073 AliWarning("The detector thickness for layer 2 is outside ");
1074 AliWarning("the range of [100,300] microns. The default value of 200 microns ");
1075 AliWarning("will be used.");
1076 ddet2=200.;
1077 }// end if
1078
1079 if(dchip1 < 100. || dchip1 > 300.) {
1080 AliWarning("The chip thickness for layer 1 is outside");
1081 AliWarning("the range of [100,300] microns. The default value of 200 microns");
1082 AliWarning("will be used.");
1083 dchip1=200.;
1084 }// end if
1085
1086 if(dchip2 < 100. || dchip2 > 300.) {
1087 AliWarning("The chip thickness for layer 2 is outside");
1088 AliWarning("the range of [100,300] microns. The default value of 200 microns");
1089 AliWarning("will be used");
1090 dchip2=200.;
1091 }// end if
1092
1093 Int_t rails = 1; // flag for rails (1 --> rails in; 0 --> rails out)
1094
1095 Int_t fluid = 1; // flag for the cooling fluid (1 --> water; 0 --> freon)
1096 // This option is maintained for SDD and SSD only
1097 // For SPD the cooling liquid is C4F10
1098 rails = GetRails();
1099
1100 fluid = GetCoolingFluid();
1101
1102 if(rails != 0 && rails != 1) {
1103 AliWarning("The switch for rails is not set neither");
1104 AliWarning("to 0 (rails out) nor to 1 (rails in). The default value of");
1105 AliWarning("1 (rails in) will be used");
1106 rails=1;
1107 }// end if
1108
1109
1110 AliDebug(1,Form("Detector thickness on layer 1 is set to %f microns",ddet1));
1111 AliDebug(1,Form("Chip thickness on layer 1 is set to %f microns",dchip1));
1112 AliDebug(1,Form("Detector thickness on layer 2 is set to %f microns",ddet2));
1113 AliDebug(1,Form("Chip thickness on layer 2 is set to %f microns",dchip2));
1114 if(rails == 0 ) {
1115 AliDebug(1,"Rails are out.");
1116 } else {
1117 AliDebug(1,"Rails are in.");
1118 }// end if
1119
1120 ddet1 = ddet1*0.0001/2.; // conversion from tot length in um to half in cm
1121 ddet2 = ddet2*0.0001/2.; // conversion from tot length in um to half in cm
1122 dchip1 = dchip1*0.0001/2.;// conversion from tot length in um to half in cm
1123 dchip2 = dchip2*0.0001/2.;// conversion from tot length in um to half in cm
1124 dbus = dbus*0.0001/2.; // conversion from tot length in um to half in cm
1125
1126 Float_t deltax, deltay;
1127
1128 //Int_t thickness = fMinorVersion/10;
1129 //Int_t option = fMinorVersion - 10*thickness;
1130
1131
1132 // Define some variables for SDD
1133
1134 Float_t sin30, cos30;
1135
1136 // SDD electronics+services main volumes
1137 Float_t iI018dits[3], iI024dits[3], iI047dits[3], iI048dits[3];
1138
1139 // SDD detector ladder
1140
1141 Float_t iI302dits[3], iI402dits[3], iI004dits[3], iI005dits[3];
1142 Float_t ySDDsep = 0.20;
1143 Float_t ySDD;
1144 Int_t iSDD;
1145 Float_t zSDDlay3[6] = { 18.55, 10.95, 3.70, -3.70,-11.20,-18.35};
1146 Float_t zSDDlay4[8] = { 25.75, 18.60, 11.00, 3.70, -3.70,-11.20,
1147 -18.45,-26.05};
1148
1149 // ladder foot and end-ladder (frame and cooling)
1150 Float_t iI028dits[3], iI420dits[3], iI421dits[3], iI422dits[6], iI423dits[3];
1151 Float_t iI424dits[3], xI424, yI424;
1152 Float_t iI425dits[3];
1153 Int_t indI425;
1154 Float_t iI029dits[4], iI030dits[4], iI031dits[3], iI032dits[3];
1155
1156 // SDD ladder frame and cooling
1157 Float_t iSDDCoolPipe[3] = {1.7000, -0.5500, 0.0000};
1158 Float_t iI035dits[3], iI037dits[3], iI038dits[3];
1159 Float_t iI039dits[3], xI039, yI039;
1160 Float_t iI041dits[5];
1161
1162 // SDD hybrid, chips and capacitors
1163 Float_t iI050dits[3], xI050, yI050;
1164 Float_t iI052dits[3], xI052, yI052;
1165 Float_t iI042dits[3], xI042, yI042;
1166 Float_t xI042space = 0.17;
1167 Float_t iI043dits[3], xI043, yI043;
1168 Float_t xI043space = 0.17;
1169 Float_t zchip, zChipSpace;
1170 Float_t iI051dits[3], xI051, yI051, zI051, yI051space, xcap;
1171 Int_t ichip, icap;
1172
1173 // SDD microcables
1174 Float_t iI044dits[4], xI044, yI044, volI044;
1175 Float_t xHV, yHV, zHV, xLV, yLV, zLV;
1176 Char_t nameHV[5], nameLV[5];
1177
1178
1179 // Define media off-set
1180
1181 Int_t *idtmed = fIdtmed->GetArray()-199;
1182
1183
1184 // Rotation matrices
1185
1186 // SPD - option 'b' (this is the default)
1187
1188 //if (option == 2) {
1189 if (! AliITSInitGeometry::SPDIsTGeoNative()) {
1190 AliMatrix(idrotm[201],90.0,0.0,90.0,90.0,0.0,0.0);
1191 AliMatrix(idrotm[202],90.0,90.0,90.0,0.0,0.0,0.0);
1192 AliMatrix(idrotm[203],90.0,350.0,90.0,260.0,0.0,0.0);
1193 AliMatrix(idrotm[204],90.0,170.0,90.0,80.0,0.0,0.0);
1194 AliMatrix(idrotm[205],90.0,10.0,90.0,100.0,0.0,0.0);
1195 AliMatrix(idrotm[206],90.0,190.0,90.0,280.0,0.0,0.0);
1196 AliMatrix(idrotm[207],90.0,342.0,90.0,72.0,0.0,0.0);
1197 AliMatrix(idrotm[208],90.0,156.999893,90.0,246.999893,0.0,0.0);
1198 AliMatrix(idrotm[209],90.0,147.999802,90.0,237.999893,0.0,0.0);
1199 AliMatrix(idrotm[210],90.0,138.999802,90.0,228.999802,0.0,0.0);
1200 AliMatrix(idrotm[211],90.0,129.999802,90.0,219.999802,0.0,0.0);
1201 AliMatrix(idrotm[212],90.0,36.7896,90.0,126.789597,0.0,0.0);
1202 AliMatrix(idrotm[213],90.0,343.579712,90.0,73.579697,0.0,0.0);
1203 AliMatrix(idrotm[214],90.0,95.413696,90.0,185.413696,0.0,0.0);
1204 AliMatrix(idrotm[215],90.0,5.4141,90.0,95.414101,0.0,0.0);
1205 AliMatrix(idrotm[216],90.0,318.296906,90.0,48.296902,0.0,0.0);
1206 AliMatrix(idrotm[217],90.0,67.000099,90.0,157.000107,0.0,0.0);
1207 AliMatrix(idrotm[218],90.0,337.003998,90.0,67.003998,0.0,0.0);
1208 AliMatrix(idrotm[219],90.0,247.000305,90.0,337.000305,0.0,0.0);
1209 AliMatrix(idrotm[220],90.0,305.633514,90.0,35.633499,0.0,0.0);
1210
1211 AliMatrix(idrotm[221],90.0,58.000198,90.0,148.000198,0.0,0.0);
1212 AliMatrix(idrotm[222],90.0,327.997101,90.0,57.997101,0.0,0.0);
1213 AliMatrix(idrotm[223],90.0,237.994202,90.0,327.994202,0.0,0.0);
1214 AliMatrix(idrotm[224],90.0,296.627502,90.0,26.627399,0.0,0.0);
1215 AliMatrix(idrotm[225],90.0,48.994099,90.0,138.994095,0.0,0.0);
1216 AliMatrix(idrotm[226],90.0,318.990997,90.0,48.991001,0.0,0.0);
1217 AliMatrix(idrotm[227],90.0,228.988205,90.0,318.98819,0.0,0.0);
1218 AliMatrix(idrotm[228],90.0,287.621399,90.0,17.621401,0.0,0.0);
1219 AliMatrix(idrotm[229],90.0,39.988098,90.0,129.988098,0.0,0.0);
1220 AliMatrix(idrotm[230],90.0,309.984985,90.0,39.985001,0.0,0.0);
1221 AliMatrix(idrotm[231],90.0,327.2612,90.0,57.2612,0.0,0.0);
1222 AliMatrix(idrotm[232],90.0,237.261398,90.0,327.261414,0.0,0.0);
1223 AliMatrix(idrotm[233],90.0,252.000504,90.0,342.000488,0.0,0.0);
1224 AliMatrix(idrotm[234],90.0,71.9991,90.0,161.9991,0.0,0.0);
1225 AliMatrix(idrotm[235],90.0,270.0,90.0,0.0,0.0,0.0);
1226 AliMatrix(idrotm[236],90.0,180.013702,90.0,270.013702,0.0,0.0);
1227 AliMatrix(idrotm[237],90.0,90.0,90.0,180.0,0.0,0.0);
1228 AliMatrix(idrotm[238],90.0,180.0,90.0,270.0,0.0,0.0);
1229 AliMatrix(idrotm[239],90.0,162.0,90.0,252.0,0.0,0.0);
1230 AliMatrix(idrotm[240],90.0,310.0,90.0,40.0,0.0,0.0);
1231 AliMatrix(idrotm[241],90.0,319.0,90.0,49.0,0.0,0.0);
1232 AliMatrix(idrotm[242],90.0,328.0,90.0,58.0,0.0,0.0);
1233 AliMatrix(idrotm[243],90.0,337.0,90.0,67.0,0.0,0.0);
1234 AliMatrix(idrotm[244],90.0,216.0,90.0,306.0,0.0,0.0);
1235 AliMatrix(idrotm[245],90.0,36.0,90.0,126.0,0.0,0.0);
1236 AliMatrix(idrotm[246],90.0,108.0,90.0,198.0,0.0,0.0);
1237 AliMatrix(idrotm[247],90.0,144.0,90.0,234.0,0.0,0.0);
1238 AliMatrix(idrotm[248],90.0,288.0,90.0,18.0,0.0,0.0);
1239 AliMatrix(idrotm[249],90.0,324.0,90.0,54.0,0.0,0.0);
1240 AliMatrix(idrotm[1003],90.0,73.5,90.0,163.5,0.0,0.0);
1241 AliMatrix(idrotm[1011],90.0,342.0,90.0,72.0,0.0,0.0);
1242 AliMatrix(idrotm[1039],90.0,72.0,90.0,162.0,0.0,0.0);
1243 AliMatrix(idrotm[1043],90.0,66.91,90.0,156.91,0.0,0.0);
1244 AliMatrix(idrotm[1065],90.0,144.0,90.0,234.0,0.0,0.0);
1245 AliMatrix(idrotm[1078],90.0,180.0,90.0,270.0,0.0,0.0);
1246 AliMatrix(idrotm[1088],90.0,57.41,90.0,147.41,0.0,0.0);
1247 AliMatrix(idrotm[1089],90.0,333.0,90.0,63.0,0.0,0.0);
1248 AliMatrix(idrotm[1090],90.0,351.0,90.0,81.0,0.0,0.0);
1249 AliMatrix(idrotm[1091],90.0,216.0,90.0,306.0,0.0,0.0);
1250 AliMatrix(idrotm[1092],90.0,27.0,90.0,117.0,0.0,0.0);
1251 AliMatrix(idrotm[1093],90.0,18.0,90.0,108.0,0.0,0.0);
1252 AliMatrix(idrotm[1094],90.0,9.0,90.0,99.0,0.0,0.0);
1253 AliMatrix(idrotm[1104],90.0,252.0,90.0,342.0,0.0,0.0);
1254 AliMatrix(idrotm[1106],90.0,36.0,90.0,126.0,0.0,0.0);
1255 AliMatrix(idrotm[1107],90.0,108.0,90.0,198.0,0.0,0.0);
1256 AliMatrix(idrotm[1108],90.0,324.0,90.0,54.0,180.0,0.0);
1257 AliMatrix(idrotm[1109],90.0,0.0,90.0,90.0,180.0,0.0);
1258 AliMatrix(idrotm[1110],90.0,36.0,90.0,126.0,180.0,0.0);
1259 AliMatrix(idrotm[1111],90.0,72.0,90.0,162.0,180.0,0.0);
1260 AliMatrix(idrotm[1112],90.0,108.0,90.0,198.0,180.0,0.0);
1261 AliMatrix(idrotm[1113],90.0,144.0,90.0,234.0,180.0,0.0);
1262 AliMatrix(idrotm[1114],90.0,180.0,90.0,270.0,180.0,0.0);
1263 AliMatrix(idrotm[1115],90.0,216.0,90.0,306.0,180.0,0.0);
1264 AliMatrix(idrotm[1116],90.0,252.0,90.0,342.0,180.0,0.0);
1265 AliMatrix(idrotm[1117],90.0,288.0,90.0,18.0,0.0,0.0);
1266 AliMatrix(idrotm[1118],90.0,288.0,90.0,18.0,180.0,0.0);
1267 AliMatrix(idrotm[1130],90.0,324.0,90.0,54.0,0.0,0.0);
1268 }// end if option==2
1269
1270 // SDD
1271 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
1272 AliMatrix(idrotm[301],0.0,0.0,90.0,90.0,90.0,180.0);
1273 AliMatrix(idrotm[302],0.0,0.0,90.0,90.0,90.0,0.0);
1274 AliMatrix(idrotm[303],180.0,0.0,90.0,90.0,90.0,0.0);
1275 AliMatrix(idrotm[304],180.0,0.0,90.0,90.0,90.0,180.0);
1276 AliMatrix(idrotm[305],90.0,347.14,90.0,77.14,0.0,0.0);
1277 AliMatrix(idrotm[306],90.0,321.43,90.0,51.43,0.0,0.0);
1278 AliMatrix(idrotm[307],90.0,295.71,90.0,25.71,0.0,0.0);
1279 AliMatrix(idrotm[308],90.0,244.29,90.0,334.29,0.0,0.0);
1280 AliMatrix(idrotm[309],90.0,218.57,90.0,308.57,0.0,0.0);
1281 AliMatrix(idrotm[310],90.0,167.14,90.0,257.14,0.0,0.0);
1282 AliMatrix(idrotm[311],90.0,141.43,90.0,231.43,0.0,0.0);
1283 AliMatrix(idrotm[312],90.0,0.0,0.0,0.0,90.0,270.0);
1284 AliMatrix(idrotm[313],90.0,115.71,90.0,205.71,0.0,0.0);
1285 AliMatrix(idrotm[314],90.0,335.45,90.0,65.45,0.0,0.0);
1286 AliMatrix(idrotm[315],90.0,319.09,90.0,49.09,0.0,0.0);
1287 AliMatrix(idrotm[316],90.0,302.73,90.0,32.73,0.0,0.0);
1288 AliMatrix(idrotm[317],90.0,286.36,90.0,16.36,0.0,0.0);
1289 AliMatrix(idrotm[318],90.0,270.0,90.0,360.0,0.0,0.0);
1290 AliMatrix(idrotm[319],90.0,253.64,90.0,343.64,0.0,0.0);
1291 AliMatrix(idrotm[320],90.0,237.27,90.0,327.27,0.0,0.0);
1292 AliMatrix(idrotm[321],90.0,12.86,90.0,102.86,0.0,0.0);
1293 AliMatrix(idrotm[322],90.0,220.91,90.0,310.91,0.0,0.0);
1294 AliMatrix(idrotm[323],90.0,204.55,90.0,294.55,0.0,0.0);
1295 AliMatrix(idrotm[324],90.0,188.18,90.0,278.18,0.0,0.0);
1296 AliMatrix(idrotm[325],90.0,171.82,90.0,261.82,0.0,0.0);
1297 AliMatrix(idrotm[326],90.0,155.45,90.0,245.45,0.0,0.0);
1298 AliMatrix(idrotm[327],90.0,139.09,90.0,229.09,0.0,0.0);
1299 AliMatrix(idrotm[328],90.0,122.73,90.0,212.73,0.0,0.0);
1300 AliMatrix(idrotm[329],90.0,106.36,90.0,196.36,0.0,0.0);
1301 AliMatrix(idrotm[330],90.0,73.64,90.0,163.64,0.0,0.0);
1302 AliMatrix(idrotm[331],90.0,40.91,90.0,130.91,0.0,0.0);
1303 AliMatrix(idrotm[332],90.0,24.55,90.0,114.55,0.0,0.0);
1304 AliMatrix(idrotm[333],90.0,38.57,90.0,128.57,0.0,0.0);
1305 AliMatrix(idrotm[334],90.0,351.82,90.0,81.82,0.0,0.0);
1306 AliMatrix(idrotm[335],90.0,8.18,90.0,98.18,0.0,0.0);
1307 AliMatrix(idrotm[336],90.0,64.29,90.0,154.29,0.0,0.0);
1308 AliMatrix(idrotm[337],111.0,300.0,21.0,300.0,90.0,30.0);
1309 AliMatrix(idrotm[338],69.0,240.0,159.0,240.0,90.0,150.0);
1310 AliMatrix(idrotm[339],111.0,240.0,21.0,240.0,90.0,150.0);
1311 AliMatrix(idrotm[340],69.0,300.0,159.0,300.0,90.0,30.0);
1312 AliMatrix(idrotm[341],128.0,0.0,38.0,0.0,90.0,270.0);
1313 AliMatrix(idrotm[342],90.0,240.0,180.0,0.0,90.0,330.);
1314 AliMatrix(idrotm[343],90.0,120.0,180.0,0.0,90.0,210.0);
1315 AliMatrix(idrotm[344],90.0,0.0,180.0,0.0,90.0,90.0);
1316 AliMatrix(idrotm[345],90.0,180.0,90.0,90.0,0.0,0.0);
1317 AliMatrix(idrotm[346],90.0,300.0,90.0,30.0,0.0,0.0);
1318 AliMatrix(idrotm[347],90.0,240.0,90.0,150.0,0.0,0.0);
1319 AliMatrix(idrotm[348],90.0,180.0,0.0,0.0,90.0,270.0);
1320 AliMatrix(idrotm[349],90.0,235.0,90.0,145.0,0.0,0.0);
1321 AliMatrix(idrotm[350],90.0,90.0,90.0,180.0,0.0,0.0);
1322 AliMatrix(idrotm[351],90.0,305.0,90.0,35.0,0.0,0.0);
1323 AliMatrix(idrotm[352],0.0,0.0,90.0,0.0,90.0,90.0);
1324 AliMatrix(idrotm[353],90.0,60.0,90.0,150.0,0.0,0.0);
1325 AliMatrix(idrotm[354],90.0,120.0,90.0,30.0,0.0,0.0);
1326 AliMatrix(idrotm[355],90.0,180.0,90.0,90.0,180.0,0.0);
1327 AliMatrix(idrotm[356],90.0,270.0,90.0,0.0,0.0,0.0);
1328 AliMatrix(idrotm[366],90.0,57.27,90.0,147.27,0.0,0.0);
1329 AliMatrix(idrotm[386],90.0,192.86,90.0,282.86,0.0,0.0);
1330 }
1331
1332 // SSD
1333 if (! AliITSInitGeometry::SSDIsTGeoNative()) {
1334 AliMatrix(idrotm[501],90.0,148.24,90.0,238.24,0.0,0.0);
1335 AliMatrix(idrotm[503],90.0,137.65,90.0,227.65,0.0,0.0);
1336 AliMatrix(idrotm[504],90.0,127.06,90.0,217.06,0.0,0.0);
1337 AliMatrix(idrotm[505],90.0,116.47,90.0,206.47,0.0,0.0);
1338 AliMatrix(idrotm[506],90.0,105.88,90.0,195.88,0.0,0.0);
1339 AliMatrix(idrotm[507],90.0,95.29,90.0,185.29,0.0,0.0);
1340 AliMatrix(idrotm[508],90.0,84.71,90.0,174.71,0.0,0.0);
1341 AliMatrix(idrotm[509],90.0,74.12,90.0,164.12,0.0,0.0);
1342 AliMatrix(idrotm[510],90.0,63.53,90.0,153.53,0.0,0.0);
1343 AliMatrix(idrotm[511],90.0,52.94,90.0,142.94,0.0,0.0);
1344 AliMatrix(idrotm[512],90.0,42.35,90.0,132.35,0.0,0.0);
1345 AliMatrix(idrotm[513],90.0,31.76,90.0,121.76,0.0,0.0);
1346 AliMatrix(idrotm[514],90.0,10.59,90.0,100.59,0.0,0.0);
1347 AliMatrix(idrotm[515],90.0,349.41,90.0,79.41,0.0,0.0);
1348 AliMatrix(idrotm[516],90.0,338.82,90.0,68.82,0.0,0.0);
1349 AliMatrix(idrotm[517],90.0,328.24,90.0,58.24,0.0,0.0);
1350 AliMatrix(idrotm[518],90.0,317.65,90.0,47.65,0.0,0.0);
1351 AliMatrix(idrotm[519],90.0,307.06,90.0,37.06,0.0,0.0);
1352 AliMatrix(idrotm[520],90.0,296.47,90.0,26.47,0.0,0.0);
1353 AliMatrix(idrotm[521],90.0,285.88,90.0,15.88,0.0,0.0);
1354 AliMatrix(idrotm[522],90.0,275.29,90.0,5.29,0.0,0.0);
1355 AliMatrix(idrotm[523],90.0,264.71,90.0,354.71,0.0,0.0);
1356 AliMatrix(idrotm[524],90.0,254.12,90.0,344.12,0.0,0.0);
1357 AliMatrix(idrotm[525],90.0,243.53,90.0,333.53,0.0,0.0);
1358 AliMatrix(idrotm[526],90.0,232.94,90.0,322.94,0.0,0.0);
1359 AliMatrix(idrotm[527],90.0,222.35,90.0,312.35,0.0,0.0);
1360 AliMatrix(idrotm[528],90.0,211.76,90.0,301.76,0.0,0.0);
1361 AliMatrix(idrotm[529],90.0,190.59,90.0,280.59,0.0,0.0);
1362 AliMatrix(idrotm[530],90.0,169.41,90.0,259.41,0.0,0.0);
1363 AliMatrix(idrotm[531],90.0,158.82,90.0,248.82,0.0,0.0);
1364 AliMatrix(idrotm[532],90.0,360.0,90.0,90.0,0.0,0.0);
1365 AliMatrix(idrotm[533],90.0,180.0,90.0,270.0,0.0,0.0);
1366 AliMatrix(idrotm[534],90.0,189.47,90.0,279.47,0.0,0.0);
1367 AliMatrix(idrotm[535],90.0,198.95,90.0,288.95,0.0,0.0);
1368 AliMatrix(idrotm[537],90.0,217.89,90.0,307.89,0.0,0.0);
1369 AliMatrix(idrotm[538],90.0,227.37,90.0,317.37,0.0,0.0);
1370 AliMatrix(idrotm[539],90.0,236.84,90.0,326.84,0.0,0.0);
1371 AliMatrix(idrotm[540],90.0,246.32,90.0,336.32,0.0,0.0);
1372 AliMatrix(idrotm[541],90.0,255.79,90.0,345.79,0.0,0.0);
1373 AliMatrix(idrotm[542],90.0,265.26,90.0,355.26,0.0,0.0);
1374 AliMatrix(idrotm[543],90.0,274.74,90.0,4.74,0.0,0.0);
1375 AliMatrix(idrotm[544],90.0,284.21,90.0,14.21,0.0,0.0);
1376 AliMatrix(idrotm[545],90.0,293.68,90.0,23.68,0.0,0.0);
1377 AliMatrix(idrotm[546],90.0,303.16,90.0,33.16,0.0,0.0);
1378 AliMatrix(idrotm[547],90.0,312.63,90.0,42.63,0.0,0.0);
1379 AliMatrix(idrotm[548],90.0,322.11,90.0,52.11,0.0,0.0);
1380 AliMatrix(idrotm[549],90.0,331.58,90.0,61.58,0.0,0.0);
1381 AliMatrix(idrotm[550],90.0,341.05,90.0,71.05,0.0,0.0);
1382 AliMatrix(idrotm[551],90.0,350.53,90.0,80.53,0.0,0.0);
1383 AliMatrix(idrotm[552],90.0,9.47,90.0,99.47,0.0,0.0);
1384 AliMatrix(idrotm[553],90.0,18.95,90.0,108.95,0.0,0.0);
1385 AliMatrix(idrotm[555],90.0,37.89,90.0,127.89,0.0,0.0);
1386 AliMatrix(idrotm[556],90.0,47.37,90.0,137.37,0.0,0.0);
1387 AliMatrix(idrotm[557],90.0,56.84,90.0,146.84,0.0,0.0);
1388 AliMatrix(idrotm[558],90.0,66.32,90.0,156.32,0.0,0.0);
1389 AliMatrix(idrotm[559],90.0,75.79,90.0,165.79,0.0,0.0);
1390 AliMatrix(idrotm[560],90.0,85.26,90.0,175.26,0.0,0.0);
1391 AliMatrix(idrotm[561],90.0,94.74,90.0,184.74,0.0,0.0);
1392 AliMatrix(idrotm[562],90.0,104.21,90.0,194.21,0.0,0.0);
1393 AliMatrix(idrotm[563],90.0,113.68,90.0,203.68,0.0,0.0);
1394 AliMatrix(idrotm[564],90.0,123.16,90.0,213.16,0.0,0.0);
1395 AliMatrix(idrotm[565],90.0,132.63,90.0,222.63,0.0,0.0);
1396 AliMatrix(idrotm[566],90.0,142.11,90.0,232.11,0.0,0.0);
1397 AliMatrix(idrotm[567],90.0,151.58,90.0,241.58,0.0,0.0);
1398 AliMatrix(idrotm[568],90.0,161.05,90.0,251.05,0.0,0.0);
1399 AliMatrix(idrotm[569],90.0,170.53,90.0,260.53,0.0,0.0);
1400 AliMatrix(idrotm[570],90.0,180.0,90.0,90.0,180.0,0.0);
1401 AliMatrix(idrotm[571],90.0,0.0,0.0,0.0,90.0,270.0);
1402 AliMatrix(idrotm[572],90.0,180.0,0.0,0.0,90.0,270.0);
1403 AliMatrix(idrotm[573],90.0,180.0,90.0,90.0,0.0,0.0);
1404 AliMatrix(idrotm[575],90.0,120.0,180.0,0.0,90.0,210.0);
1405 AliMatrix(idrotm[576],65.71,300.0,90.0,30.0,24.29,120.0);
1406 AliMatrix(idrotm[577],114.29,300.0,90.0,30.0,155.71,120.0);
1407 AliMatrix(idrotm[579],65.71,240.0,90.0,150.0,24.29,60.0);
1408 AliMatrix(idrotm[580],114.29,240.0,90.0,150.0,155.71,60.0);
1409 AliMatrix(idrotm[581],90.0,240.0,180.0,0.0,90.0,330.0);
1410 AliMatrix(idrotm[583],90.0,0.0,180.0,0.0,90.0,90.0);
1411 AliMatrix(idrotm[584],90.0,180.0,180.0,0.0,90.0,90.0);
1412 AliMatrix(idrotm[586],180.0,0.0,90.0,90.0,90.0,0.0);
1413 AliMatrix(idrotm[618],90.0,201.18,90.0,291.18,0.0,0.0);
1414 AliMatrix(idrotm[620],90.0,28.42,90.0,118.42,0.0,0.0);
1415 AliMatrix(idrotm[623],90.0,208.42,90.0,298.42,0.0,0.0);
1416 AliMatrix(idrotm[633],132.46,0.0,90.0,90.0,42.46,360.0);
1417 AliMatrix(idrotm[653],90.0,21.18,90.0,111.18,0.0,0.0);
1418 }
1419
1420 // SDD cone
1421 if (! AliITSInitGeometry::SDDconeIsTGeoNative()) {
1422 AliMatrix(idrotm[846],90.0,300.0,90.0,30.0,0.0,0.0);
1423 AliMatrix(idrotm[851],90.0,305.0,90.0,35.0,0.0,0.0);
1424 AliMatrix(idrotm[853],90.0,60.0,90.0,150.0,0.0,0.0);
1425 AliMatrix(idrotm[856],90.0,0.0,90.0,90.0,180.0,0.0);
1426 AliMatrix(idrotm[857],90.0,5.0,90.0,95.0,180.0,0.0);
1427 AliMatrix(idrotm[858],90.0,65.0,90.0,155.0,180.0,0.0);
1428 AliMatrix(idrotm[859],90.0,305.0,90.0,35.0,180.0,0.0);
1429 AliMatrix(idrotm[860],90.0,245.0,90.0,335.0,180.0,0.0);
1430 AliMatrix(idrotm[861],90.0,185.0,90.0,275.0,180.0,0.0);
1431 AliMatrix(idrotm[862],90.0,125.0,90.0,215.0,180.0,0.0);
1432 AliMatrix(idrotm[863],90.0,257.5,90.0,347.5,180.0,0.0);
1433 AliMatrix(idrotm[864],90.0,227.5,90.0,317.5,180.0,0.0);
1434 AliMatrix(idrotm[865],90.0,197.5,90.0,287.5,180.0,0.0);
1435 AliMatrix(idrotm[867],90.0,167.5,90.0,257.5,180.0,0.0);
1436 AliMatrix(idrotm[868],90.0,287.5,90.0,17.5,0.0,0.0);
1437 AliMatrix(idrotm[869],90.0,137.5,90.0,227.5,180.0,0.0);
1438 AliMatrix(idrotm[870],90.0,107.5,90.0,197.5,180.0,0.0);
1439 AliMatrix(idrotm[871],90.0,77.5,90.0,167.5,180.0,0.0);
1440 AliMatrix(idrotm[872],90.0,47.5,90.0,137.5,180.0,0.0);
1441 AliMatrix(idrotm[873],90.0,17.5,90.0,107.5,180.0,0.0);
1442 AliMatrix(idrotm[874],90.0,347.5,90.0,77.5,180.0,0.0);
1443 AliMatrix(idrotm[875],90.0,317.5,90.0,47.5,180.0,0.0);
1444 AliMatrix(idrotm[876],90.0,287.5,90.0,17.5,180.0,0.0);
1445 AliMatrix(idrotm[877],90.0,185.0,90.0,275.0,0.0,0.0);
1446 AliMatrix(idrotm[878],90.0,180.0,90.0,270.0,0.0,0.0);
1447 AliMatrix(idrotm[879],90.0,125.0,90.0,215.0,0.0,0.0);
1448 AliMatrix(idrotm[880],90.0,65.0,90.0,155.0,0.0,0.0);
1449 AliMatrix(idrotm[881],90.0,5.0,90.0,95.0,0.0,0.0);
1450 AliMatrix(idrotm[882],90.0,245.0,90.0,335.0,0.0,0.0);
1451 AliMatrix(idrotm[883],90.0,47.5,90.0,137.5,0.0,0.0);
1452 AliMatrix(idrotm[884],90.0,77.5,90.0,167.5,0.0,0.0);
1453 AliMatrix(idrotm[885],90.0,107.5,90.0,197.5,0.0,0.0);
1454 AliMatrix(idrotm[887],90.0,137.5,90.0,227.5,0.0,0.0);
1455 AliMatrix(idrotm[888],90.0,167.5,90.0,257.5,0.0,0.0);
1456 AliMatrix(idrotm[889],90.0,197.5,90.0,287.5,0.0,0.0);
1457 AliMatrix(idrotm[890],90.0,227.5,90.0,317.5,0.0,0.0);
1458 AliMatrix(idrotm[891],90.0,347.5,90.0,77.5,0.0,0.0);
1459 AliMatrix(idrotm[892],90.0,317.5,90.0,47.5,0.0,0.0);
1460 AliMatrix(idrotm[893],90.0,257.5,90.0,347.5,0.0,0.0);
1461 AliMatrix(idrotm[894],90.0,270.0,0.0,0.0,90.0,180.0);
1462 AliMatrix(idrotm[895],90.0,286.36,0.0,0.0,90.0,196.36);
1463 AliMatrix(idrotm[896],90.0,302.73,0.0,0.0,90.0,212.73);
1464 AliMatrix(idrotm[897],90.0,319.09,0.0,0.0,90.0,229.09);
1465 AliMatrix(idrotm[898],90.0,17.5,90.0,107.5,0.0,0.0);
1466 AliMatrix(idrotm[899],90.0,335.45,0.0,0.0,90.0,245.45);
1467 AliMatrix(idrotm[900],90.0,351.82,0.0,0.0,90.0,261.82);
1468 AliMatrix(idrotm[901],90.0,8.18,0.0,0.0,90.0,278.18);
1469 AliMatrix(idrotm[902],90.0,24.55,0.0,0.0,90.0,294.55);
1470 AliMatrix(idrotm[903],90.0,40.91,0.0,0.0,90.0,310.91);
1471 AliMatrix(idrotm[904],90.0,57.27,0.0,0.0,90.0,327.27);
1472 AliMatrix(idrotm[905],90.0,73.64,0.0,0.0,90.0,343.64);
1473 AliMatrix(idrotm[906],90.0,90.0,0.0,0.0,90.0,360.0);
1474 AliMatrix(idrotm[907],90.0,106.36,0.0,0.0,90.0,16.36);
1475 AliMatrix(idrotm[908],90.0,122.73,0.0,0.0,90.0,32.73);
1476 AliMatrix(idrotm[909],90.0,139.09,0.0,0.0,90.0,49.09);
1477 AliMatrix(idrotm[910],90.0,155.45,0.0,0.0,90.0,65.45);
1478 AliMatrix(idrotm[911],90.0,171.82,0.0,0.0,90.0,81.82);
1479 AliMatrix(idrotm[912],90.0,188.18,0.0,0.0,90.0,98.18);
1480 AliMatrix(idrotm[913],90.0,204.55,0.0,0.0,90.0,114.55);
1481 AliMatrix(idrotm[914],90.0,220.91,0.0,0.0,90.0,130.91);
1482 AliMatrix(idrotm[915],90.0,237.27,0.0,0.0,90.0,147.27);
1483 AliMatrix(idrotm[916],90.0,253.64,0.0,0.0,90.0,163.64);
1484 AliMatrix(idrotm[917],90.0,295.71,0.0,0.0,90.0,205.71);
1485 AliMatrix(idrotm[918],90.0,321.43,0.0,0.0,90.0,231.43);
1486 AliMatrix(idrotm[919],90.0,347.14,0.0,0.0,90.0,257.14);
1487 AliMatrix(idrotm[920],90.0,12.86,0.0,0.0,90.0,282.86);
1488 AliMatrix(idrotm[921],90.0,38.57,0.0,0.0,90.0,308.57);
1489 AliMatrix(idrotm[922],90.0,64.29,0.0,0.0,90.0,334.29);
1490 AliMatrix(idrotm[923],90.0,115.71,0.0,0.0,90.0,25.71);
1491 AliMatrix(idrotm[924],90.0,141.43,0.0,0.0,90.0,51.43);
1492 AliMatrix(idrotm[925],90.0,167.14,0.0,0.0,90.0,77.14);
1493 AliMatrix(idrotm[926],90.0,192.86,0.0,0.0,90.0,102.86);
1494 AliMatrix(idrotm[927],90.0,218.57,0.0,0.0,90.0,128.57);
1495 AliMatrix(idrotm[928],90.0,244.29,0.0,0.0,90.0,154.29);
1496 AliMatrix(idrotm[929],90.0,120.0,90.0,210.0,0.0,0.0);
1497 AliMatrix(idrotm[930],90.0,240.0,90.0,330.0,0.0,0.0);
1498 AliMatrix(idrotm[931],90.0,60.0,90.0,150.0,180.0,0.0);
1499 AliMatrix(idrotm[932],90.0,120.0,90.0,210.0,180.0,0.0);
1500 AliMatrix(idrotm[933],90.0,180.0,90.0,270.0,180.0,0.0);
1501 AliMatrix(idrotm[934],90.0,240.0,90.0,330.0,180.0,0.0);
1502 AliMatrix(idrotm[935],90.0,300.0,90.0,30.0,180.0,0.0);
1503 }
1504
1505 // SSD cone
1506 if (! AliITSInitGeometry::SSDconeIsTGeoNative()) {
1507 AliMatrix(idrotm[701],90.0,0.0,90.0,90.0,180.0,0.0);
1508 AliMatrix(idrotm[702],90.0,347.5,90.0,77.5,180.0,0.0);
1509 AliMatrix(idrotm[703],90.0,17.5,90.0,107.5,180.0,0.0);
1510 AliMatrix(idrotm[704],90.0,47.5,90.0,137.5,180.0,0.0);
1511 AliMatrix(idrotm[705],90.0,77.5,90.0,167.5,180.0,0.0);
1512 AliMatrix(idrotm[706],90.0,107.5,90.0,197.5,180.0,0.0);
1513 AliMatrix(idrotm[707],90.0,137.5,90.0,227.5,180.0,0.0);
1514 AliMatrix(idrotm[708],90.0,167.5,90.0,257.5,180.0,0.0);
1515 AliMatrix(idrotm[709],90.0,197.5,90.0,287.5,180.0,0.0);
1516 AliMatrix(idrotm[710],90.0,227.5,90.0,317.5,180.0,0.0);
1517 AliMatrix(idrotm[711],90.0,257.5,90.0,347.5,180.0,0.0);
1518 AliMatrix(idrotm[712],90.0,287.5,90.0,17.5,180.0,0.0);
1519 AliMatrix(idrotm[713],90.0,317.5,90.0,47.5,180.0,0.0);
1520 AliMatrix(idrotm[714],90.0,328.4,90.0,58.4,180.0,0.0);
1521 AliMatrix(idrotm[715],90.0,28.4,90.0,118.4,180.0,0.0);
1522 AliMatrix(idrotm[716],90.0,88.4,90.0,178.4,180.0,0.0);
1523 AliMatrix(idrotm[717],90.0,148.4,90.0,238.4,180.0,0.0);
1524 AliMatrix(idrotm[718],90.0,208.4,90.0,298.4,180.0,0.0);
1525 AliMatrix(idrotm[719],90.0,268.4,90.0,358.4,180.0,0.0);
1526 AliMatrix(idrotm[720],90.0,28.4,90.0,118.4,0.0,0.0);
1527 AliMatrix(idrotm[721],90.0,88.4,90.0,178.4,0.0,0.0);
1528 AliMatrix(idrotm[722],90.0,148.4,90.0,238.4,0.0,0.0);
1529 AliMatrix(idrotm[723],90.0,208.4,90.0,298.4,0.0,0.0);
1530 AliMatrix(idrotm[724],90.0,268.4,90.0,358.4,0.0,0.0);
1531 AliMatrix(idrotm[725],90.0,328.4,90.0,58.4,0.0,0.0);
1532 AliMatrix(idrotm[726],90.0,77.5,90.0,167.5,0.0,0.0);
1533 AliMatrix(idrotm[727],90.0,107.5,90.0,197.5,0.0,0.0);
1534 AliMatrix(idrotm[728],90.0,137.5,90.0,227.5,0.0,0.0);
1535 AliMatrix(idrotm[729],90.0,167.5,90.0,257.5,0.0,0.0);
1536 AliMatrix(idrotm[730],90.0,227.5,90.0,317.5,0.0,0.0);
1537 AliMatrix(idrotm[731],90.0,257.5,90.0,347.5,0.0,0.0);
1538 AliMatrix(idrotm[732],90.0,317.5,90.0,47.5,0.0,0.0);
1539 AliMatrix(idrotm[733],90.0,197.5,90.0,287.5,0.0,0.0);
1540 AliMatrix(idrotm[734],90.0,347.5,90.0,77.5,0.0,0.0);
1541 AliMatrix(idrotm[735],90.0,47.5,90.0,137.5,0.0,0.0);
1542 AliMatrix(idrotm[768],90.0,287.5,90.0,17.5,0.0,0.0);
1543 AliMatrix(idrotm[798],90.0,17.5,90.0,107.5,0.0,0.0);
1544 }
1545
1546 // Services
1547 AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);
1548
1549 // New reference frame: z---> -z; x ---> -x; y ---> y
1550 AliMatrix(idrotm[199], 90.,180., 90.,90., 180.,0.);
1551
1552 // CONVERT INTO CM (RL(SI)=9.36 CM)
1553 for (i = 0; i < 6; ++i) {
1554 drl[i] = drl[i] / 100. * 9.36;
1555 } // end for i
1556
1557 // FIELD CAGE HALF LENGTH
1558 rlim = 50.;
1559 zmax = 74.;
1560 ztpc = 284.;
1561 // --- Define ghost volume containing the whole ITS (including services)
1562 // and fill it with air
1563 dgh[0] = 0.;
1564 dgh[1] = 360.;
1565 dgh[2] = 16.;
1566 dgh[3] = -ztpc-5.-0.1;
1567 dgh[4] = 46;
1568 dgh[5] = 85.;
1569 dgh[6] = -ztpc;
1570 dgh[7] = 46;
1571 dgh[8] = 85.;
1572 dgh[9] = -ztpc;
1573 dgh[10] = 46;
1574 dgh[11] = rlim+7.5;
1575 dgh[12] = -97.5;
1576 dgh[13] = 46;
1577 dgh[14] = rlim+7.5;
1578 dgh[15] = -zmax;
1579 dgh[16] = 46;
1580 dgh[17] = rlim+7.5;
1581 dgh[18] = -48;
1582 dgh[19] = 6;
1583 dgh[20] = rlim+7.5;
1584 dgh[21] = -28.6;
1585 dgh[22] = 6;
1586 dgh[23] = rlim+7.5;
1587 dgh[24] = -27.6;
1588 dgh[25] = 3.295;
1589 dgh[26] = rlim+7.5;
1590 dgh[27] = 27.6;
1591 dgh[28] = 3.295;
1592 dgh[29] = rlim+7.5;
1593 dgh[30] = 28.6;
1594 dgh[31] = 6;
1595 dgh[32] = rlim+7.5;
1596 dgh[33] = 48;
1597 dgh[34] = 6;
1598 dgh[35] = rlim+7.5;
1599 dgh[36] = zmax;
1600 dgh[37] = 46;
1601 dgh[38] = rlim+7.5;
1602 dgh[39] = 97.5;
1603 dgh[40] = 46;
1604 dgh[41] = rlim+7.5;
1605 dgh[42] = ztpc;
1606 dgh[43] = 62;
1607 dgh[44] = 62+4.;
1608 dgh[45] = ztpc;
1609 dgh[46] = 62;
1610 dgh[47] = 85.;
1611 dgh[48] = ztpc+4.+0.1;
1612 dgh[49] = 62.0;//62.4;
1613 dgh[50] = 85.;
1614 gMC->Gsvolu("ITSV", "PCON", idtmed[205], dgh, 51);
1615
1616 // --- Place the ghost volume in its mother volume (ALIC) and make it
1617 // invisible
1618 // gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
1619 //gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., idrotm[199], "MANY");
1620 //gMC->Gsatt("ITSV", "SEEN", 0);
1621
1622 //gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "MANY"); //=== LG
1623 gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY"); //=== LG
1624
1625
1626 // --- Define ghost volume containing the six layers and fill it with air
1627
1628// dgh[0] = 0.;
1629// dgh[1] = 360.;
1630// dgh[2] = 8.;
1631// dgh[3] = -zmax;
1632// dgh[4] = 46.;
1633// dgh[5] = rlim;
1634// dgh[6] = -47.5;
1635// dgh[7] = 6.005;
1636// dgh[8] = rlim;
1637// dgh[9] = -28.5;
1638// dgh[10] = 6.005;
1639// dgh[11] = rlim;
1640// dgh[12] = -27.5;
1641// dgh[13] = 3.3;
1642// dgh[14] = rlim;
1643// dgh[15] = 27.5;
1644// dgh[16] = 3.3;
1645// dgh[17] = rlim;
1646// dgh[18] = 28.5;
1647// dgh[19] = 6.005;
1648// dgh[20] = rlim;
1649// dgh[21] = 47.5;
1650// dgh[22] = 6.005;
1651// dgh[23] = rlim;
1652// dgh[24] = zmax;
1653// dgh[25] = 46.;
1654// dgh[26] = rlim;
1655// gMC->Gsvolu("ITSD", "PCON", idtmed[205], dgh, 27);
1656
1657 // --- Place the ghost volume in its mother volume (ITSV) and make it
1658 // invisible
1659 //gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
1660 //gMC->Gsatt("ITSD", "SEEN", 0);
1661
1662 //======================================================================
1663 // Let's make ITSD an assembly, because we can then add the new geometry
1664 // inside this volume without belonging to it.
1665 //
1666 // The 180° rotation (which was done for switching from the old
1667 // coordinate system to the new one) is applied on ITSD, not ITSV,
1668 // because ITSV will also contain the new geometry.
1669 // LG
1670 //======================================================================
1671
1672 //TGeoVolumeAssembly *dITS = new TGeoVolumeAssembly("ITSD");
1673 new TGeoVolumeAssembly("ITSD");
1674 gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., idrotm[199], "ONLY");
1675
1676
1677 // --- Define SPD (option 'b') volumes ----------------------------
1678
1679 // SPD - option 'b'
1680 // (this is the default)
1681
1682 //if (option == 2) {
1683 if (! AliITSInitGeometry::SPDIsTGeoNative()) {
1684
1685 dits[0] = 3.7;
1686 dits[1] = 7.75;
1687 dits[2] = 26.1;
1688 gMC->Gsvolu("IT12", "TUBE", idtmed[254], dits, 3);
1689
1690 dits[0] = 3.7;
1691 dits[1] = 7.7;
1692 dits[2] = 24;
1693 dits[3] = 57;
1694 dits[4] = 100;
1695 gMC->Gsvolu("I12B", "TUBS", idtmed[254], dits, 5); // sector
1696
1697 di10b[0] = 0.843;
1698 di10b[1] = ddet1+dchip1+dbus+0.0025;
1699 di10b[2] = 19.344;
1700 gMC->Gsvolu("I10B", "BOX ", idtmed[254], di10b, 3); // mother volume
1701 // on layer 1
1702
1703 di20b[0] = 0.843;
1704 di20b[1] = ddet2+dchip2+dbus+0.0025;
1705 di20b[2] = 19.344;
1706 gMC->Gsvolu("I20B", "BOX ", idtmed[254], di20b, 3); // mother volume
1707 // layer 2
1708
1709 dits[0] = 1.3673;
1710 dits[1] = 0.01;
1711 dits[2] = 24;
1712 gMC->Gsvolu("I123", "BOX ", idtmed[253], dits, 3);
1713
1714 dits[0] = 0.06;
1715 dits[1] = 0.08;
1716 dits[2] = 24;
1717 dits[3] = -36.79;
1718 dits[4] = 21.834;
1719 gMC->Gsvolu("I121", "TUBS", idtmed[253], dits, 5);
1720
1721 dits[0] = 0.1253;
1722 dits[1] = 0.01;
1723 dits[2] = 24;
1724 gMC->Gsvolu("I122", "BOX ", idtmed[253], dits, 3);
1725
1726 dits[0] = 0.04;
1727 dits[1] = 0.06 ;
1728 dits[2] = 24;
1729 dits[3] = 126.79;
1730 dits[4] = 270;
1731 gMC->Gsvolu("I120", "TUBS", idtmed[253], dits, 5);
1732
1733 dits[0] = 0.1134;
1734 dits[1] = 0.01;
1735 dits[2] = 24;
1736 gMC->Gsvolu("I144", "BOX ", idtmed[253], dits, 3);
1737
1738 dits[0] = 0.25;
1739 dits[1] = 0.06;
1740 dits[2] = 24;
1741 gMC->Gsvolu("I113", "BOX ", idtmed[254], dits, 3);
1742
1743 dits[0] = 0.077;
1744 dits[1] = 0.01;
1745 dits[2] = 24;
1746 gMC->Gsvolu("I143", "BOX ", idtmed[253], dits, 3);
1747
1748 dits[0] = 0.04;
1749 dits[1] = 0.06;
1750 dits[2] = 24;
1751 dits[3] = 0;
1752 dits[4] = 90;
1753 gMC->Gsvolu("I142", "TUBS", idtmed[253], dits, 5);
1754
1755 dits[0] = 0.0695;
1756 dits[1] = 0.01;
1757 dits[2] = 24;
1758 gMC->Gsvolu("I141", "BOX ", idtmed[253], dits, 3);
1759
1760 dits[0] = 0.06;
1761 dits[1] = 0.08;
1762 dits[2] = 24;
1763 dits[3] = 0;
1764 dits[4] = 108;
1765 gMC->Gsvolu("I140", "TUBS", idtmed[253], dits, 5);
1766
1767 dits[0] = 0.1835;
1768 dits[1] = 0.01;
1769 dits[2] = 24;
1770 gMC->Gsvolu("I139", "BOX ", idtmed[253], dits, 3);
1771
1772 dits[0] = 0.1894 ;
1773 dits[1] = 0.01;
1774 dits[2] = 24;
1775 gMC->Gsvolu("I138", "BOX ", idtmed[253], dits, 3);
1776
1777 dits[0] = 0.04;
1778 dits[1] = 0.06;
1779 dits[2] = 24;
1780 dits[3] = 0;
1781 dits[4] = 75.261;
1782 gMC->Gsvolu("I137", "TUBS", idtmed[253], dits, 5);
1783
1784 dits[0] = 1.3401;
1785 dits[1] = 0.01;
1786 dits[2] = 24;
1787 gMC->Gsvolu("I136", "BOX ", idtmed[253], dits, 3);
1788
1789 dits[0] = 0.05;
1790 dits[1] = 0.07;
1791 dits[2] = 24;
1792 dits[3] = 0;
1793 dits[4] = 72.739;
1794 gMC->Gsvolu("I135", "TUBS", idtmed[253], dits, 5);
1795
1796 dits[0] = 0.1193;
1797 dits[1] = 0.01;
1798 dits[2] = 24;
1799 gMC->Gsvolu("I134", "BOX ", idtmed[253], dits, 3);
1800
1801 dits[0] = 0.163;
1802 dits[1] = 0.01;
1803 dits[2] = 24;
1804 gMC->Gsvolu("I133", "BOX ", idtmed[253], dits, 3);
1805
1806 dits[0] = 0.04;
1807 dits[1] = 0.06;
1808 dits[2] = 24;
1809 dits[3] = 0;
1810 dits[4] = 157.633;
1811 gMC->Gsvolu("I132", "TUBS", idtmed[253], dits, 5);
1812
1813 dits[0] = 0.2497;
1814 dits[1] = 0.01;
1815 dits[2] = 24;
1816 gMC->Gsvolu("I131", "BOX ", idtmed[253], dits, 3);
1817
1818 dits[0] = 0.06;
1819 dits[1] = 0.08;
1820 dits[2] = 24;
1821 dits[3] = 0;
1822 dits[4] = 148.633;
1823 gMC->Gsvolu("I130", "TUBS", idtmed[253], dits, 5);
1824
1825 dits[0] = 0.292;
1826 dits[1] = 0.01;
1827 dits[2] = 24;
1828 gMC->Gsvolu("I129", "BOX ", idtmed[253], dits, 3);
1829
1830 dits[0] = 0.163;
1831 dits[1] = 0.01;
1832 dits[2] = 24;
1833 gMC->Gsvolu("I128", "BOX ", idtmed[253], dits, 3);
1834
1835 dits[0] = 0.04;
1836 dits[1] = 0.06;
1837 dits[2] = 24;
1838 dits[3] = 0;
1839 dits[4] = 161.297;
1840 gMC->Gsvolu("I126", "TUBS", idtmed[253], dits, 5);
1841
1842 dits[0] = 0.2433;
1843 dits[1] = 0.01;
1844 dits[2] = 24;
1845 gMC->Gsvolu("I125", "BOX ", idtmed[253], dits, 3);
1846
1847 dits[0] = 0.06;
1848 dits[1] = 0.08;
1849 dits[2] = 24;
1850 dits[3] = 0;
1851 dits[4] = 42.883;
1852 gMC->Gsvolu("I124", "TUBS", idtmed[253], dits, 5);
1853
1854 dits[0] = 0.793;
1855 dits[1] = ddet1+dchip1+dbus+0.0025;
1856 dits[2] = 2.5;
1857 gMC->Gsvolu("I105", "BOX ", idtmed[290], dits, 3);
1858
1859 di107[0] = 0.793;
1860 di107[1] = ddet1+dchip1;
1861 di107[2] = 3.536;
1862 gMC->Gsvolu("I107", "BOX ", idtmed[254], di107, 3); // contains det and chip
1863 // layer 1
1864 dits[0] = 0.705;
1865 dits[1] = 0.01;
1866 dits[2] = 2.5;
1867 gMC->Gsvolu("I109", "BOX ", idtmed[275], dits, 3);
1868
1869 di108[0] = 0.705;
1870 di108[1] = dbus;
1871 di108[2] = 14.344;
1872 gMC->Gsvolu("I108", "BOX ", idtmed[275], di108, 3); // bus for both layers
1873
1874 di1d7[0] = 0.7975;
1875 di1d7[1] = ddet2+dchip2;
1876 di1d7[2] = 3.536;
1877 gMC->Gsvolu("I1D7", "BOX ", idtmed[254], di1d7, 3); // contains det and chip
1878 // layer 2
1879 dits[0] = 0.06;
1880 dits[1] = 0.08;
1881 dits[2] = 24;
1882 dits[3] = 0;
1883 dits[4] = 80;
1884 gMC->Gsvolu("I112", "TUBS", idtmed[253], dits, 5);
1885
1886 dits[0] = 0.04;
1887 dits[1] = 0.06;
1888 dits[2] = 24;
1889 dits[3] = 0;
1890 dits[4] = 80;
1891 gMC->Gsvolu("I111", "TUBS", idtmed[253], dits, 5);
1892
1893 dits[0] = 0.15;
1894 dits[1] = 0.0146;
1895 dits[2] = 24;
1896 gMC->Gsvolu("I118", "BOX ", idtmed[273], dits, 3);
1897
1898 dits[0] = 0.1315;
1899 dits[1] = 0.01;
1900 dits[2] = 24;
1901 gMC->Gsvolu("I110", "BOX ", idtmed[253], dits, 3);
1902
1903 dits[0] = 0.025;
1904 dits[1] = 0.035;
1905 dits[2] = 24;
1906 dits[3] = 0;
1907 dits[4] = 180;
1908 gMC->Gsvolu("I114", "TUBS", idtmed[264], dits, 5);
1909
1910 dits[0] = 0;
1911 dits[1] = 0.025;
1912 dits[2] = 24;
1913 dits[3] = 0;
1914 dits[4] = 180;
1915 gMC->Gsvolu("I115", "TUBS", idtmed[211], dits, 5); // set freon as cooling fluid
1916
1917
1918 dits[0] = 0.063;
1919 dits[1] = 0.035;
1920 dits[2] = 24;
1921 gMC->Gsvolu("I116", "BOX ", idtmed[264], dits, 3);
1922
1923 di106[0] = 0.7975;
1924 di106[1] = dchip1;
1925 di106[2] = 0.68;
1926 gMC->Gsvolu("I106", "BOX ", idtmed[201], di106, 3); // chip layer 1
1927
1928 di1d6[0] = 0.7975;
1929 di1d6[1] = dchip2;
1930 di1d6[2] = 0.68;
1931 gMC->Gsvolu("I1D6", "BOX ", idtmed[201], di1d6, 3); // chip layer 2
1932
1933 di101[0] = 0.705;
1934 di101[1] = ddet1;
1935 di101[2] = 3.536;
1936 gMC->Gsvolu("I101", "BOX ", idtmed[250], di101, 3); // contains detector
1937 // layer 1
1938 di1d1[0] = 0.705;
1939 di1d1[1] = ddet2;
1940 di1d1[2] = 3.536;
1941 gMC->Gsvolu("I1D1", "BOX ", idtmed[250], di1d1, 3); // contains detector
1942 // layer 2
1943
1944
1945 dits[0] = 0.063;
1946 dits[1] = 0.025;
1947 dits[2] = 24;
1948 gMC->Gsvolu("I117", "BOX ", idtmed[211], dits, 3); // set freon as cooling fluid
1949
1950
1951 dits1[0] = 0.64;
1952 dits1[1] = ddet1;
1953 dits1[2] = 3.48;
1954 gMC->Gsvolu("ITS1", "BOX ", idtmed[200], dits1, 3); // detector layer 1
1955
1956 dits2[0] = 0.64;
1957 dits2[1] = ddet2;
1958 dits2[2] = 3.48;
1959 gMC->Gsvolu("ITS2", "BOX ", idtmed[200], dits2, 3); // detector layer 2
1960
1961 dits[0] = 3.701;
1962 dits[1] = 7.699;
1963 dits[2] = 4;
1964 dits[3] = 57.1;
1965 dits[4] = 99.9;
1966 gMC->Gsvolu("I650", "TUBS", idtmed[254], dits, 5); // was I150 in old geom.
1967
1968 dits[0] = 3.7;
1969 dits[1] = 7.75;
1970 dits[2] = 0.05;
1971 gMC->Gsvolu("I651", "TUBE", idtmed[296], dits, 3); // services disk
1972
1973 dits[0] = 0;
1974 dits[1] = 0.5;
1975 dits[2] = 1.5;
1976 gMC->Gsvolu("I676", "TUBE", idtmed[274], dits, 3); // was I176 in old geom.
1977
1978 dits[0] = 0;
1979 dits[1] = 0.18;
1980 dits[2] = 0.8;
1981 gMC->Gsvolu("I673", "TUBE", idtmed[274], dits, 3); // was I173 in old geom.
1982
1983 dits[0] = 0;
1984 dits[1] = 0.18;
1985 dits[2] = 3;
1986 gMC->Gsvolu("I671", "TUBE", idtmed[274], dits, 3); // was I171 in old geom.
1987
1988 dits[0] = 0;
1989 dits[1] = 0.075;
1990 dits[2] = 0.8;
1991 gMC->Gsvolu("I669", "TUBE", idtmed[264], dits, 3); // was I169 in old geom.
1992
1993 dits[0] = 3.5;
1994 dits[1] = 5.6;
1995 dits[2] = 0.55;
1996 dits[3] = 0;
1997 dits[4] = 38;
1998 gMC->Gsvolu("I667", "TUBS", idtmed[263], dits, 5); // was I167 in old geom.
1999
2000 dits[0] = 6.6;
2001 dits[1] = 7.6;
2002 dits[2] = 0.5;
2003 dits[3] = 0;
2004 dits[4] = 9;
2005 gMC->Gsvolu("I666", "TUBS", idtmed[263], dits, 5); // was I166 in old geom.
2006
2007 dits[0] = 0.26;
2008 dits[1] = 0.32;
2009 dits[2] = 0.55;
2010 gMC->Gsvolu("I678", "TUBE", idtmed[263], dits, 3); // was I178 in old geom.
2011
2012 dits[0] = 0;
2013 dits[1] = 0.3;
2014 dits[2] = 1.5;
2015 gMC->Gsvolu("I677", "TUBE", idtmed[211], dits, 3); //set freon as cooling fluid
2016 // was I177 in old geom.
2017
2018 dits[0] = 0.07;
2019 dits[1] = 0.125;
2020 dits[2] = 0.3;
2021 gMC->Gsvolu("I675", "TUBE", idtmed[263], dits, 3); // was I175 in old geom.
2022
2023
2024 dits[0] = 0;
2025 dits[1] = 0.1;
2026 dits[2] = 0.8;
2027 gMC->Gsvolu("I674", "TUBE", idtmed[211], dits, 3); //set freon as cooling fluid
2028 // was I174 in old geom.
2029
2030
2031
2032 dits[0] = 0;
2033 dits[1] = 0.1;
2034 dits[2] = 3;
2035 gMC->Gsvolu("I672", "TUBE", idtmed[211], dits, 3); //set freon as cooling fluid
2036 // was I172 in old geom.
2037
2038
2039 dits[0] = 0;
2040 dits[1] = 0.0746;
2041 dits[2] = 0.8;
2042 gMC->Gsvolu("I670", "TUBE", idtmed[211], dits, 3); //set freon as cooling fluid
2043 // was I170 in old geom.
2044
2045 dits[0] = 3.7;
2046 dits[1] = 5.4;
2047 dits[2] = 0.35;
2048 dits[3] = 2;
2049 dits[4] = 36;
2050 gMC->Gsvolu("I668", "TUBS", idtmed[211], dits, 5); //set freon as cooling fluid
2051 // was I168 in old geom.
2052
2053 }
2054
2055 // --- Define SDD volumes ------------------------------------------
2056
108bd0fe 2057 cos30 = cos(30.*3.14159/180.);
2058 sin30 = sin(30.*3.14159/180.);
2059
2060 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
2061
2062 Double_t maxRadius = 28.5;
2063 dits[0] = 0;
2064 dits[1] = 360;
2065 dits[2] = 6;
2066 dits[3] = -34.6;
2067 dits[4] = 23.49;
2068 dits[5] = maxRadius;
2069 dits[6] = -27.35;
2070 dits[7] = 23.49;
2071 dits[8] = maxRadius;
2072 dits[9] = -27.35;
2073 dits[10] = 14.59;
2074 dits[11] = maxRadius;
2075 dits[12] = 27.35;
2076 dits[13] = 14.59;
2077 dits[14] = maxRadius;
2078 dits[15] = 27.35;
2079 dits[16] = 23.49;
2080 dits[17] = maxRadius;
2081 dits[18] = 34.6;
2082 dits[19] = 23.49;
2083 dits[20] = maxRadius;
2084 gMC->Gsvolu("IT34", "PCON", idtmed[209], dits, 21);
2085
2086 // block of the SDD electronics and related ladder frame
2087 iI018dits[0] = 3.2;
2088 iI018dits[1] = 2;
2089 iI018dits[2] = 3.65;
2090 gMC->Gsvolu("I018", "BOX ", idtmed[209], iI018dits, 3);
2091
2092 // block of the SDD end ladder
2093 iI024dits[0] = 3.2;
2094 iI024dits[1] = 2;
2095 iI024dits[2] = 2.725;
2096 gMC->Gsvolu("I024", "BOX ", idtmed[209], iI024dits, 3);
2097
2098 // ladder frame of layer 3 - F.T. March,7-2001
2099 iI047dits[0] = iI018dits[0];
2100 iI047dits[1] = iI018dits[1];
2101 iI047dits[2] = 6*iI018dits[2] + 2*iI024dits[2];
2102 gMC->Gsvolu("I047", "BOX ", idtmed[209], iI047dits, 3);
2103
2104 // ladder frame of layer 4 - F.T. March,7-2001
2105 iI048dits[0] = iI018dits[0];
2106 iI048dits[1] = iI018dits[1];
2107 iI048dits[2] = 8*iI018dits[2] + 2*iI024dits[2];
2108 gMC->Gsvolu("I048", "BOX ", idtmed[209], iI048dits, 3);
2109
2110
2111 // global SDD volume (sensitive + insensitive)
2112 iI302dits[0] = 3.6250;
2113 iI302dits[1] = 0.0150;
2114 iI302dits[2] = 4.3794;
2115 gMC->Gsvolu("I302", "BOX ", idtmed[278], iI302dits, 3);
2116
2117 // Like for I302 - F.T. March,7-2001
2118 iI402dits[0] = 3.6250;
2119 iI402dits[1] = 0.0150;
2120 iI402dits[2] = 4.3794;
2121 gMC->Gsvolu("I402", "BOX ", idtmed[278], iI402dits, 3);
2122
2123 // SDD ladder of layer 3 - F.T. March,7-2001
2124 iI004dits[0] = iI302dits[0]+0.005;
2125 iI004dits[1] = 2*iI302dits[1]+ySDDsep/2.;
2126 iI004dits[2] = TMath::Abs(zSDDlay3[0]);
2127 if (iI004dits[2] < TMath::Abs(zSDDlay3[5])) {
2128 iI004dits[2] = TMath::Abs(zSDDlay3[5]);
2129 }
2130 iI004dits[2] = iI004dits[2] + iI302dits[2];
2131 gMC->Gsvolu("I004", "BOX ", idtmed[209], iI004dits, 3);
2132
2133 // SDD ladder of layer 4 - F.T. March,7-2001
2134 iI005dits[0] = iI402dits[0]+0.005;
2135 iI005dits[1] = 2*iI402dits[1]+ySDDsep/2.;
2136 iI005dits[2] = TMath::Abs(zSDDlay4[0]);
2137 if (iI005dits[2] < TMath::Abs(zSDDlay4[7])) {
2138 iI005dits[2] = TMath::Abs(zSDDlay4[7]);
2139 }
2140 iI005dits[2] = iI005dits[2] + iI402dits[2];
2141 gMC->Gsvolu("I005", "BOX ", idtmed[209], iI005dits, 3);
2142
2143
2144 // -- block of the SDD ladder foot and end ladder
2145
2146 // ladder foot mother volume
2147 iI028dits[0] = 3.0000;
2148 iI028dits[1] = 0.4000;
2149 iI028dits[2] = 0.9000;
2150 gMC->Gsvolu("I028", "BOX ", idtmed[224], iI028dits, 3);
2151
2152 // positioning-box #1 at SDD end-ladder - F.T. March,7-2001
2153 iI420dits[0] = 0.4500;
2154 iI420dits[1] = 0.4000;
2155 iI420dits[2] = 0.4500;
2156 gMC->Gsvolu("I420", "BOX ", idtmed[264], iI420dits, 3);
2157
2158 // positioning-box #2 at SDD end-ladder - F.T. March,7-2001
2159 iI421dits[0] = 0.;
2160 iI421dits[1] = 0.25;
2161 iI421dits[2] = iI420dits[1];
2162 gMC->Gsvolu("I421", "TUBE", idtmed[209], iI421dits, 3);
2163
2164 // reference ruby-sphere at SDD end-ladder - F.T. March,7-2001
2165 iI422dits[0] = 0.0000;
2166 iI422dits[1] = 0.2000;
2167 iI422dits[2] = 0.0000;
2168 iI422dits[3] = 180.00;
2169 iI422dits[4] = 0.0000;
2170 iI422dits[5] = 360.00;
2171 gMC->Gsvolu("I422", "SPHE", idtmed[277], iI422dits, 6);
2172
2173 // support for ruby-sphere (I422) - F.T. March,7-2001
2174 iI423dits[0] = 0.0000;
2175 iI423dits[1] = 0.1000;
2176 iI423dits[2] = (iI420dits[1]-iI422dits[1])/2.;
2177 gMC->Gsvolu("I423", "TUBE", idtmed[264], iI423dits, 3);
2178
2179 // passage for HV microcables - F.T. March,7-2001
2180 iI424dits[0] = 1.5000;
2181 iI424dits[1] = 0.1500;
2182 iI424dits[2] = iI421dits[2];
2183 gMC->Gsvolu("I424", "BOX ", idtmed[209], iI424dits, 3);
2184
2185 // HV microcables segment at the end ladder - F.T. March,7-2001
2186 iI425dits[0] = 1.350000;
2187 iI425dits[1] = 0.015250;
2188 iI425dits[2] = iI024dits[2];
2189 gMC->Gsvolu("I425", "BOX ", idtmed[279], iI425dits, 3);
2190
2191 // lower edge of SDD ladder frame at end-ladder - part 1
2192 dits[0] = 0.2;
2193 dits[1] = 0.1815;
2194 dits[2] = iI024dits[2];
2195 dits[3] = 0.015;
2196 gMC->Gsvolu("I025", "TRD1", idtmed[208], dits, 4);
2197
2198 // lower edge of SDD ladder frame at end-ladder - part 2
2199 dits[0] = 0.183;
2200 dits[1] = 0.165;
2201 dits[2] = iI024dits[2];
2202 dits[3] = 0.015;
2203 gMC->Gsvolu("I026", "TRD1", idtmed[208], dits, 4);
2204
2205 // new: for the 1st top rod of the structure
2206 // at the end-ladder - F.T. March,7-2001
2207 iI029dits[0] = 0.2;
2208 iI029dits[1] = 0.1815;
2209 iI029dits[2] = 1.0100;
2210 iI029dits[3] = 0.015;
2211 gMC->Gsvolu("I029", "TRD1", idtmed[208], iI029dits, 4);
2212
2213 // new: for the 2nd top rod of the structure
2214 // at the end-ladder - F.T. March,7-2001
2215 iI030dits[0] = 0.1830;
2216 iI030dits[1] = 0.1650;
2217 iI030dits[2] = 1.0100;
2218 iI030dits[3] = 0.0150;
2219 gMC->Gsvolu("I030", "TRD1", idtmed[208], iI030dits, 4);
2220
2221 // inox cooling tubes for the end ladder - F.T. March,7-2001
2222 iI031dits[0] = 0.093;
2223 iI031dits[1] = 0.1;
2224 iI031dits[2] = iI024dits[2];
2225 gMC->Gsvolu("I031", "TUBE", idtmed[264], iI031dits, 3);
2226
2227 if (fluid == 1) {
2228 // cooling water for the end ladder - F.T. March,7-2001
2229 iI032dits[0] = 0;
2230 iI032dits[1] = iI031dits[0];
2231 iI032dits[2] = iI024dits[2];
2232 gMC->Gsvolu("I032", "TUBE", idtmed[211], iI032dits, 3);
2233 } else {
2234 // cooling freon for the end ladder - R.B. March,21-2001
2235 iI032dits[0] = 0;
2236 iI032dits[1] = iI031dits[0];
2237 iI032dits[2] = iI024dits[2];
2238 gMC->Gsvolu("I032", "TUBE", idtmed[212], iI032dits, 3);
2239 }
2240
2241 // -- block of the SDD ladder frame holding the electronics
2242
2243 // edge of the ladder frame - part 1
2244 dits[0] = 0.2;
2245 dits[1] = 0.182;
2246 dits[2] = 3.65;
2247 dits[3] = 0.015;
2248 gMC->Gsvolu("I019", "TRD1", idtmed[208], dits, 4);
2249
2250 // edge of the ladder frame - part 2
2251 dits[0] = 0.183;
2252 dits[1] = 0.165;
2253 dits[2] = 3.65;
2254 dits[3] = 0.015;
2255 gMC->Gsvolu("I020", "TRD1", idtmed[208], dits, 4);
2256
2257 // inclined segments of the ladder frame
2258 dits[0] = 2.23;
2259 dits[1] = 2.1;
2260 dits[2] = 0.05;
2261 dits[3] = 0.03;
2262 gMC->Gsvolu("I021", "TRD1", idtmed[208], dits, 4);
2263
2264 // horiz.segments of the ladders, normal to ladder edges
2265 dits[0] = 2.1;
2266 dits[1] = 2;
2267 dits[2] = 0.06;
2268 dits[3] = 0.04;
2269 gMC->Gsvolu("I022", "TRD1", idtmed[208], dits, 4);
2270
2271 // horiz.segments of the ladders, at 45 deg. to ladder edges
2272 dits[0] = 2.615;
2273 dits[1] = 2.465;
2274 dits[2] = 0.06;
2275 dits[3] = 0.04;
2276 gMC->Gsvolu("I023", "TRD1", idtmed[208], dits, 4);
2277
2278 // supports of the ceramic pins holding the detectors
2279 dits[0] = 0.3;
2280 dits[1] = 0.05;
2281 dits[2] = 0.15;
2282 gMC->Gsvolu("I033", "BOX ", idtmed[208], dits, 3);
2283
2284 // ceramic pins holding the detectors
2285 dits[0] = 0;
2286 dits[1] = 0.05;
2287 dits[2] = 0.225;
2288 gMC->Gsvolu("I034", "TUBE", idtmed[277], dits, 3);
2289
2290 // holders of cooling tubes
2291 iI035dits[0] = 0.1;
2292 iI035dits[1] = 0.15;
2293 iI035dits[2] = 0.2;
2294 gMC->Gsvolu("I035", "TUBE", idtmed[208], iI035dits, 3);
2295
2296 // top holders of microcables
2297 dits[0] = 0.2;
2298 dits[1] = 0.01;
2299 dits[2] = 0.05;
2300 gMC->Gsvolu("I036", "BOX ", idtmed[208], dits, 3);
2301
2302 // inox cooling tubes - F.T. March,7-2001
2303 iI037dits[0] = 0.093;
2304 iI037dits[1] = 0.1;
2305 iI037dits[2] = iI018dits[2];
2306 gMC->Gsvolu("I037", "TUBE", idtmed[264], iI037dits, 3);
2307
2308 if (fluid == 1) {
2309 // cooling water - F.T. March,7-2001
2310 iI038dits[0] = 0;
2311 iI038dits[1] = iI037dits[0];
2312 iI038dits[2] = iI018dits[2];
2313 gMC->Gsvolu("I038", "TUBE", idtmed[211], iI038dits, 3);
2314 } else {
2315 // cooling freon - R.B. March,21-2001
2316 iI038dits[0] = 0;
2317 iI038dits[1] = iI037dits[0];
2318 iI038dits[2] = iI018dits[2];
2319 gMC->Gsvolu("I038", "TUBE", idtmed[212], iI038dits, 3);
2320 }
2321 // -- block of the SDD electronics (heat bridge, chips, hybrid, anode microcable)
2322
2323 // SDD heat bridge - F.T. March,7-2001
2324 iI039dits[0] = 1.1000;
2325 iI039dits[1] = 0.0087;
2326 iI039dits[2] = 3.2500;
2327 gMC->Gsvolu("I039", "BOX ", idtmed[268], iI039dits, 3);
2328
2329 // SDD clip part 1
2330 dits[0] = 0.25;
2331 dits[1] = 0.01;
2332 dits[2] = iI039dits[2];
2333 gMC->Gsvolu("I040", "BOX ", idtmed[268], dits, 3);
2334
2335 // SDD clip part 2
2336 iI041dits[0] = 0.1;
2337 iI041dits[1] = 0.12;
2338 iI041dits[2] = iI039dits[2];
2339 iI041dits[3] = 90;
2340 iI041dits[4] = 320;
2341 gMC->Gsvolu("I041", "TUBS", idtmed[268], iI041dits, 5);
2342
2343
2344 // SDD PASCAL - F.T. March,7-2001
2345 iI042dits[0] = 0.5000;
2346 iI042dits[1] = 0.0175;
2347 iI042dits[2] = 0.5000;
2348 gMC->Gsvolu("I042", "BOX ", idtmed[206], iI042dits, 3);
2349
2350 // SDD AMBRA - F.T. March,7-2001
2351 iI043dits[0] = 0.3500;
2352 iI043dits[1] = 0.0175;
2353 iI043dits[2] = 0.5000;
2354 gMC->Gsvolu("I043", "BOX ", idtmed[206], iI043dits, 3);
2355
2356 // SDD capacitors - F.T. March,7-2001
2357 iI051dits[0] = 0.1400;
2358 iI051dits[1] = 0.0350;
2359 iI051dits[2] = 0.0625;
2360 gMC->Gsvolu("I051", "BOX ", idtmed[276], iI051dits, 3);
2361
2362 // SDD hybrid circuit - F.T. March,7-2001
2363 iI052dits[0] = 1.725000;
2364 iI052dits[1] = 0.003743;
2365 iI052dits[2] = iI039dits[2];
2366 gMC->Gsvolu("I052", "BOX ", idtmed[281], iI052dits, 3);
2367
2368 // SDD anode microcable : changed - F.T. March,7-2001
2369 iI044dits[0] = iI018dits[2];
2370 iI044dits[1] = iI039dits[2];
2371 iI044dits[2] = 0.00084;
2372 iI044dits[3] = (15.189149/(iI044dits[0]+iI044dits[1]))/2;
2373 gMC->Gsvolu("I044", "TRD1", idtmed[282], iI044dits, 4);
2374 volI044 = ((2*iI044dits[0] + 2*iI044dits[1]) * 2*iI044dits[2])/2 * 2*iI044dits[3];
2375
2376 // SDD electronics box - F.T. March,7-2001
2377 iI050dits[1] = iI039dits[1]+iI052dits[1]+iI051dits[1]+iI044dits[2];
2378 iI050dits[0] = iI018dits[1]/cos(30.*3.14159/180.)-iI050dits[1]*sin(30.*3.14159/180.);
2379 iI050dits[2] = iI018dits[2];
2380 gMC->Gsvolu("I050", "BOX ", idtmed[209], iI050dits, 3);
2381
2382 // SDD sensitive volume
2383 dits[0] = 3.50850;
2384 dits[1] = 0.01499; // not 0.015 because it is included into I302 which is 0.015
2385 dits[2] = 3.76320;
2386 gMC->Gsvolu("ITS3", "BOX ", idtmed[200], dits, 3);
2387
2388 // Like for ITS3 - F.T. March,7-2001
2389 dits[0] = 3.50850;
2390 dits[1] = 0.01499; // not 0.015 because it is included into I402 which is 0.015
2391 dits[2] = 3.76320;
2392 gMC->Gsvolu("ITS4", "BOX ", idtmed[200], dits, 3);
2393 }
2394
2395 // --- Define SSD volumes ------------------------------------------
2396
2397 if (! AliITSInitGeometry::SSDIsTGeoNative()) {
2398 dits[0] = 0;
2399 dits[1] = 360;
2400 dits[2] = 6;
2401 dits[3] = -57.45;
2402 dits[4] = 43.6;
2403 dits[5] = 48;
2404 dits[6] = -49.15;
2405 dits[7] = 43.6;
2406 dits[8] = 48;
2407 dits[9] = -49.15;
2408 dits[10] = 36.9;
2409 dits[11] = 48;
2410 dits[12] = 50.55;
2411 dits[13] = 36.9;
2412 dits[14] = 48;
2413 dits[15] = 50.55;
2414 dits[16] = 43.6;
2415 dits[17] = 48;
2416 dits[18] = 57.45;
2417 dits[19] = 43.6;
2418 dits[20] = 48;
2419 //gMC->Gsvolu("IT56", "PCON", idtmed[220], dits, 21); // SSD air
2420 gMC->Gsvolu("IT56", "PCON", idtmed[204], dits, 21); // air
2421
2422 dits[0] = 3.4;
2423 dits[1] = 1.955;
2424 dits[2] = 56.5;
2425 gMC->Gsvolu("I570", "BOX ", idtmed[204], dits, 3);
2426
2427 dits[0] = 3.75;
2428 dits[1] = 0.045;
2429 dits[2] = 50.975;
2430 gMC->Gsvolu("I569", "BOX ", idtmed[204], dits, 3);
2431
2432 dits[0] = 3.4;
2433 dits[1] = 1.955;
2434 dits[2] = 47;
2435 gMC->Gsvolu("I571", "BOX ", idtmed[204], dits, 3);
2436
2437 dits[0] = 3.75;
2438 dits[1] = 0.045;
2439 dits[2] = 43.3;
2440 gMC->Gsvolu("I565", "BOX ", idtmed[204], dits, 3);
2441
2442 dits[0] = 3.4;
2443 dits[1] = 1.955;
2444 dits[2] = 3.15;
2445 gMC->Gsvolu("I553", "BOX ", idtmed[204], dits, 3);
2446
2447 dits[0] = 3.405;
2448 dits[1] = 1.955;
2449 dits[2] = 1.955;
2450 gMC->Gsvolu("I523", "BOX ", idtmed[204], dits, 3);
2451
2452 dits[0] = 3.75;
2453 dits[1] = 0.015;
2454 dits[2] = 2.1;
2455 gMC->Gsvolu("I566", "BOX ", idtmed[206], dits, 3);
2456
2457 dits[0] = 3.4;
2458 dits[1] = 1.955;
2459 dits[2] = 3.15;
2460 gMC->Gsvolu("I544", "BOX ", idtmed[204], dits, 3);
2461
2462 dits[0] = 3.41;
2463 dits[1] = 1.955;
2464 dits[2] = 1.955;
2465 gMC->Gsvolu("I516", "BOX ", idtmed[204], dits, 3);
2466
2467 dits[0] = 3.75;
2468 dits[1] = 0.015;
2469 dits[2] = 2.1;
2470 gMC->Gsvolu("I562", "BOX ", idtmed[206], dits, 3);
2471
2472 if (fluid == 1) {
2473 dits[0] = 0;
2474 dits[1] = 0.07;
2475 dits[2] = 3.15;
2476 gMC->Gsvolu("I559", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
2477 } else {
2478 dits[0] = 0;
2479 dits[1] = 0.07;
2480 dits[2] = 3.15;
2481 gMC->Gsvolu("I559", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
2482 }
2483
2484 dits[0] = 0.07;
2485 dits[1] = 0.1;
2486 dits[2] = 3.15;
2487 gMC->Gsvolu("I560", "TUBE", idtmed[210], dits, 3);
2488
2489 dits[0] = 0.225;
2490 dits[1] = 0.195;
2491 dits[2] = 3.15;
2492 dits[3] = 0.025;
2493 gMC->Gsvolu("I558", "TRD1", idtmed[203], dits, 4);
2494
2495 dits[0] = 0.25;
2496 dits[1] = 0.22;
2497 dits[2] = 3.15;
2498 dits[3] = 0.025;
2499 gMC->Gsvolu("I557", "TRD1", idtmed[203], dits, 4);
2500
2501 dits[0] = 2.17;
2502 dits[1] = 0.035;
2503 dits[2] = 0.05;
2504 gMC->Gsvolu("I556", "BOX ", idtmed[203], dits, 3);
2505
2506 dits[0] = 2 ;
2507 dits[1] = 0.035;
2508 dits[2] = 0.05;
2509 gMC->Gsvolu("I554", "BOX ", idtmed[203], dits, 3);
2510
2511 dits[0] = 2.675;
2512 dits[1] = 0.035;
2513 dits[2] = 0.05;
2514 gMC->Gsvolu("I555", "BOX ", idtmed[203], dits, 3);
2515
2516 dits[0] = 0.3;
2517 dits[1] = 0.15;
2518 dits[2] = 0.15;
2519 gMC->Gsvolu("I561", "BOX ", idtmed[203], dits, 3);
2520
2521 dits[0] = 0.025;
2522 dits[1] = 0.025;
2523 dits[2] = 0.05;
2524 gMC->Gsvolu("I519", "BOX ", idtmed[214], dits, 3);
2525
2526 dits[0] = 0.304;
2527 dits[1] = 0.0275;
2528 dits[2] = 0.432;
2529 gMC->Gsvolu("I521", "BOX ", idtmed[206], dits, 3);
2530
2531 dits[0] = 0.16;
2532 dits[1] = 0.08;
2533 dits[2] = 0.08;
2534 gMC->Gsvolu("I520", "BOX ", idtmed[214], dits, 3);
2535
2536 dits[0] = 3.4;
2537 dits[1] = 0.015;
2538 dits[2] = 0.525;
2539 gMC->Gsvolu("I518", "BOX ", idtmed[203], dits, 3);
2540
2541 dits[0] = 0.15;
2542 dits[1] = 0.105;
2543 dits[2] = 0.29;
2544 dits[3] = 0.08;
2545 gMC->Gsvolu("I522", "TRD1", idtmed[203], dits, 4);
2546
2547 dits[0] = 0.07;
2548 dits[1] = 0.1;
2549 dits[2] = 1.955;
2550 gMC->Gsvolu("I542", "TUBE", idtmed[210], dits, 3);
2551
2552 if (fluid == 1) {
2553 dits[0] = 0;
2554 dits[1] = 0.07;
2555 dits[2] = 1.955;
2556 gMC->Gsvolu("I541", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
2557 } else {
2558 dits[0] = 0;
2559 dits[1] = 0.07;
2560 dits[2] = 1.955;
2561 gMC->Gsvolu("I541", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
2562 }
2563
2564 dits[0] = 0.3;
2565 dits[1] = 0.15;
2566 dits[2] = 0.15;
2567 gMC->Gsvolu("I543", "BOX ", idtmed[203], dits, 3);
2568
2569 dits[0] = 0.25;
2570 dits[1] = 0.22;
2571 dits[2] = 1.955;
2572 dits[3] = 0.025;
2573 gMC->Gsvolu("I537", "TRD1", idtmed[203], dits, 4);
2574
2575 dits[0] = 0.225;
2576 dits[1] = 0.195;
2577 dits[2] = 1.955;
2578 dits[4] = 0.025;
2579 gMC->Gsvolu("I538", "TRD1", idtmed[203], dits, 4);
2580
2581 dits[0] = 2.17;
2582 dits[1] = 0.035;
2583 dits[2] = 0.05;
2584 gMC->Gsvolu("I536", "BOX ", idtmed[203], dits, 3);
2585
2586 dits[0] = 2.675;
2587 dits[1] = 0.035;
2588 dits[2] = 0.05;
2589 gMC->Gsvolu("I535", "BOX ", idtmed[203], dits, 3);
2590
2591 dits[0] = 2;
2592 dits[1] = 0.035;
2593 dits[2] = 0.05;
2594 gMC->Gsvolu("I534", "BOX ", idtmed[203], dits, 3);
2595
2596 dits[0] = 0;
2597 dits[1] = 0.05;
2598 dits[2] = 0.17;
2599 gMC->Gsvolu("I540", "TUBE", idtmed[203], dits, 3);
2600
2601 dits[0] = 0;
2602 dits[1] = 0.05;
2603 dits[2] = 0.205;
2604 gMC->Gsvolu("I539", "TUBE", idtmed[203], dits, 3);
2605
2606 dits[0] = 3.65;
2607 dits[1] = 0.015;
2608 dits[2] = 2;
2609 gMC->Gsvolu("ITS6", "BOX ", idtmed[200], dits, 3);
2610
2611 if (fluid == 1) {
2612 dits[0] = 0;
2613 dits[1] = 0.07;
2614 dits[2] = 3.15;
2615 gMC->Gsvolu("I550", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
2616 } else {
2617 dits[0] = 0;
2618 dits[1] = 0.07;
2619 dits[2] = 3.15;
2620 gMC->Gsvolu("I550", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
2621 }
2622
2623 dits[0] = 0.07;
2624 dits[1] = 0.1;
2625 dits[2] = 3.15;
2626 gMC->Gsvolu("I551", "TUBE", idtmed[210], dits, 3);
2627
2628 dits[0] = 0.225;
2629 dits[1] = 0.195;
2630 dits[2] = 3.15;
2631 dits[3] = 0.025;
2632 gMC->Gsvolu("I549", "TRD1", idtmed[203], dits, 4);
2633
2634 dits[0] = 0.25;
2635 dits[1] = 0.22;
2636 dits[2] = 3.15;
2637 dits[3] = 0.025;
2638 gMC->Gsvolu("I548", "TRD1", idtmed[203], dits, 4);
2639
2640 dits[0] = 2.17;
2641 dits[1] = 0.035;
2642 dits[2] = 0.05;
2643 gMC->Gsvolu("I547", "BOX ", idtmed[203], dits, 3);
2644
2645 dits[0] = 2;
2646 dits[1] = 0.035;
2647 dits[2] = 0.05;
2648 gMC->Gsvolu("I545", "BOX ", idtmed[203], dits, 3);
2649
2650 dits[0] = 2.675;
2651 dits[1] = 0.035;
2652 dits[2] = 0.05;
2653 gMC->Gsvolu("I546", "BOX ", idtmed[203], dits, 3);
2654
2655 dits[0] = 0.3;
2656 dits[1] = 0.15;
2657 dits[2] = 0.15;
2658 gMC->Gsvolu("I552", "BOX ", idtmed[203], dits, 3);
2659
2660 dits[0] = 0.304;
2661 dits[1] = 0.0275;
2662 dits[2] = 0.4322;
2663 gMC->Gsvolu("I515", "BOX ", idtmed[206], dits, 3);
2664
2665 dits[0] = 0.025;
2666 dits[1] = 0.025;
2667 dits[2] = 0.05;
2668 gMC->Gsvolu("I513", "BOX ", idtmed[214], dits, 3);
2669
2670 dits[0] = 0.16;
2671 dits[1] = 0.08;
2672 dits[2] = 0.08;
2673 gMC->Gsvolu("I514", "BOX ", idtmed[214], dits, 3);
2674
2675 dits[0] = 3.4;
2676 dits[1] = 0.015;
2677 dits[2] = 0.525;
2678 gMC->Gsvolu("I512", "BOX ", idtmed[203], dits, 3);
2679
2680 dits[0] = 0.225;
2681 dits[1] = 0.195;
2682 dits[2] = 1.955;
2683 dits[3] = 0.025;
2684 gMC->Gsvolu("I528", "TRD1", idtmed[203], dits, 4);
2685
2686 dits[0] = 0.25;
2687 dits[1] = 0.22;
2688 dits[2] = 1.955;
2689 dits[3] = 0.025;
2690 gMC->Gsvolu("I527", "TRD1", idtmed[203], dits, 4);
2691
2692 dits[0] = 2.17;
2693 dits[1] = 0.035;
2694 dits[2] = 0.05;
2695 gMC->Gsvolu("I526", "BOX ", idtmed[203], dits, 3);
2696
2697 dits[0] = 2.675;
2698 dits[1] = 0.035;
2699 dits[2] = 0.05;
2700 gMC->Gsvolu("I525", "BOX ", idtmed[203], dits, 3);
2701
2702 dits[0] = 2;
2703 dits[1] = 0.035;
2704 dits[2] = 0.05;
2705 gMC->Gsvolu("I524", "BOX ", idtmed[203], dits, 3);
2706
2707 dits[0] = 0;
2708 dits[1] = 0.05;
2709 dits[2] = 0.205;
2710 gMC->Gsvolu("I529", "TUBE", idtmed[203], dits, 3);
2711
2712 dits[0] = 0;
2713 dits[1] = 0.05;
2714 dits[2] = 0.17;
2715 gMC->Gsvolu("I530", "TUBE", idtmed[203], dits, 3);
2716
2717 dits[0] = 0.15;
2718 dits[1] = 0.105;
2719 dits[2] = 0.29;
2720 dits[3] = 0.08;
2721 gMC->Gsvolu("I517", "TRD1", idtmed[203], dits, 4);
2722
2723 if (fluid == 1) {
2724 dits[0] = 0;
2725 dits[1] = 0.07;
2726 dits[2] = 1.955;
2727 gMC->Gsvolu("I531", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
2728 } else {
2729 dits[0] = 0;
2730 dits[1] = 0.07;
2731 dits[2] = 1.955;
2732 gMC->Gsvolu("I531", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
2733 }
2734
2735 dits[0] = 0.07;
2736 dits[1] = 0.1;
2737 dits[2] = 1.955;
2738 gMC->Gsvolu("I532", "TUBE", idtmed[210], dits, 3);
2739
2740 dits[0] = 0.3;
2741 dits[1] = 0.15;
2742 dits[2] = 0.15;
2743 gMC->Gsvolu("I533", "BOX ", idtmed[203], dits, 3);
2744
2745 dits[0] = 3.65;
2746 dits[1] = 0.015;
2747 dits[2] = 2;
2748 gMC->Gsvolu("ITS5", "BOX ", idtmed[200], dits, 3);
2749 }
2750
2751
2752 // --- Define volumes of shield of SPD ----------------
2753
2754 if (! AliITSInitGeometry::SPDshieldIsTGeoNative()) {
2755 dits[0] = 8.37;
2756 dits[1] = 9.93;
2757 dits[2] = 25;
2758 gMC->Gsvolu("IC01", "TUBE", idtmed[289], dits, 3);
2759
2760 dits[0] = 8.3;
2761 dits[1] = 9.995;
2762 dits[2] = 17.5/2.;
2763 gMC->Gsvolu("IC02", "TUBE", idtmed[289], dits, 3);
2764 }
2765
2766 Double_t s1,s2,b1,b2;
2767
2768 if (! AliITSInitGeometry::SDDconeIsTGeoNative()) {
2769
2770 // --- Define volume of first cylinder between SPD and SDD --------------
2771 dits[0] = (21.-0.128)/2.;
2772 dits[1] = 21./2.;
2773 dits[2] = 39.4;
2774 gMC->Gsvolu("ICY1", "TUBE", idtmed[208], dits, 3);
2775
2776 // --- Define volume of second cylinder between SDD and SSD --------------
2777 dits[0] = (59.5-0.128)/2.;
2778 dits[1] = 59.5/2.;
2779 dits[2] = 56.2; // was 57
2780 gMC->Gsvolu("ICY2", "TUBE", idtmed[208], dits, 3);
2781
2782 // --- Define volumes of SDD cone ----------------------------------
2783
2784 dits[0] = 0;
2785 dits[1] = 360;
2786 dits[2] = 12;
bf210566 2787 //
108bd0fe 2788 dits[3] = -59.7;
2789 dits[4] = 27;
2790 dits[5] = 28.6;
bf210566 2791
108bd0fe 2792 dits[6] = -42.7;
2793 dits[7] = 10;
2794 dits[8] = 28.6;
bf210566 2795
2796 // dits[9] = -34.65;
2797 dits[9] = -33.55;
108bd0fe 2798 dits[10] = 10;
2799 dits[11] = 28.6;
bf210566 2800
2801 // dits[12] = -34.65;
2802 dits[12] = -33.55;
108bd0fe 2803 dits[13] = 10;
2804 dits[14] = 23.495;
bf210566 2805
2806 //dits[15] = -23.7;
2807 dits[15] = -26.2;
108bd0fe 2808 dits[16] = 10;
2809 dits[17] = 23.495;
bf210566 2810
2811 //dits[18] = -23.7;
2812 dits[18] = -26.2;
108bd0fe 2813 dits[19] = 10;
2814 dits[20] = 14.595;
bf210566 2815
2816 //dits[21] = 23.7;
2817 dits[21] = 26.2;
108bd0fe 2818 dits[22] = 10;
2819 dits[23] = 14.595;
bf210566 2820
2821 //dits[24] = 23.7;
2822 dits[24] = 26.2;
108bd0fe 2823 dits[25] = 10;
2824 dits[26] = 23.495;
bf210566 2825
2826// dits[27] = 34.65;
2827 dits[27] = 33.55;
108bd0fe 2828 dits[28] = 10;
2829 dits[29] = 23.495;
bf210566 2830
2831// dits[30] = 34.65;
2832 dits[30] = 33.55;
108bd0fe 2833 dits[31] = 10;
2834 dits[32] = 28.6;
bf210566 2835
108bd0fe 2836 dits[33] = 42.7;
2837 dits[34] = 10;
2838 dits[35] = 28.6;
bf210566 2839
108bd0fe 2840 dits[36] = 59.7;
2841 dits[37] = 27.2637;
bf210566 2842 dits[38] = 28.6;
2843
2844 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
2845 dits[9] = -34.65;
2846 dits[12] = -34.65;
2847 dits[15] = -23.7;
2848 dits[18] = -23.7;
2849 dits[21] = 23.7;
2850 dits[24] = 23.7;
2851 dits[27] = 34.65;
2852 dits[30] = 34.65;
2853 }
108bd0fe 2854 gMC->Gsvolu("IS02", "PCON", idtmed[204], dits, 39);
2855
2856 dits[0] = 0;
2857 dits[1] = 360;
2858 dits[2] = 6;
2859 dits[3] = 38.65;
2860 dits[4] = 10.75;
2861 dits[5] = 12.25;
2862 dits[6] = 40.15;
2863 dits[7] = 10.75;
2864 dits[8] = 13.96;
2865 dits[9] = 40.15;
2866 dits[10] = 12.46;
2867 dits[11] = 13.96;
2868 dits[12] = 55.75;
2869 dits[13] = 27;
2870 dits[14] = 28.5;
2871 dits[15] = 55.75;
2872 dits[16] = 27;
2873 dits[17] = 28.5;
2874 dits[18] = 57.25;
2875 dits[19] = 27;
2876 dits[20] = 28.5;
2877// gMC->Gsvolu("I093", "PCON", idtmed[272], dits, 21); // SDD cone
2878 gMC->Gsvolu("I093", "PCON", idtmed[287], dits, 21); // SDD cone
2879
2880 // Redefined to make adding material for cables easier (FMD geometry)
2881 s1 = (dits[13]-dits[10])/(dits[12]-dits[9]); // Slope of conical section
2882 s2 = (dits[14]-dits[11])/(dits[12]-dits[9]); // Slope of conical section
2883 b1 = dits[13] - s1*dits[12]; // inside cone axis intersept
2884 b2 = dits[14] - s2*dits[12]; // outside cone axis intersept
2885 dits[0] = 0; //dits[0] = 0;
2886 dits[1] = 50; //dits[1] = 50;
2887 dits[2] = 4; //dits[2] = 3;
2888
2889 dits[4] = 14.0; //dits[4] = 14; // r inner
2890 dits[5] = dits[4]; //dits[5] = 18.75; // r outer
2891 dits[3] = (dits[4]-b2)/s2; //dits[3] = 39; // Z
2892
2893 dits[7] = dits[4]; //dits[7] = 14; // r inner
2894 dits[6] = (dits[7]-b1)/s1; //dits[6] = 46.7-3; // Z
2895 dits[8] = s2*dits[6]+b2; //dits[8] = 18.75; // r outer
2896
2897 dits[11] = 18.75; //dits[11] = 18.75; // r outer
2898 dits[9] = (dits[11]-b2)/s2; //dits[9] = 51.45-3; // Z
2899 dits[10] = s1*dits[9]+b1; //dits[10] = 18.75; // r inner
2900
2901 dits[13] = dits[11]; // r inner
2902 dits[14] = dits[11]; // r outer
2903 dits[12] = (dits[13]-b1)/s1; // Z
2904// gMC->Gsvolu("I099", "PCON", idtmed[204], dits, 12); // SDD 3 cone hole
2905 gMC->Gsvolu("I099", "PCON", idtmed[285], dits, 15); // SDD 3 cone hole
2906
2907 dits[0] = 0; //dits[0] = 0;
2908 dits[1] = 25; //dits[1] = 25;
2909 dits[2] = 4; //dits[2] = 3;
2910
2911 dits[4] = 23.4; //dits[4] = 23.4; // r inner
2912 dits[5] = dits[4]; //dits[5] = 26.4; // r outer
2913 dits[3] = (dits[4]-b2)/s2; //dits[3] = 49; // Z
2914
2915 dits[7] = dits[4]; //dits[7] = 23.4; // r inner
2916 dits[6] = (dits[7]-b1)/s1; //dits[6] = 56.1-3; // Z
2917 dits[8] = s2*dits[6]+b2; //dits[8] = 26.4; // r outer
2918
2919 dits[11] = 26.4; //dits[11] = 26.4; // r outer
2920 dits[9] = (dits[11]-b2)/s2; //dits[9] = 59.1-3; // Z
2921 dits[10] = s1*dits[9]+b1; //dits[10] = 26.4; // r inner
2922
2923 dits[13] = dits[11]; // r inner
2924 dits[14] = dits[11]; // r outer
2925 dits[12] = (dits[13]-b1)/s1; // Z
2926// gMC->Gsvolu("I200", "PCON", idtmed[204], dits, 12); // SDD 4 cone hole
2927 gMC->Gsvolu("I200", "PCON", idtmed[285], dits, 15); // SDD 4 cone hole
2928 //Begin_Html
2929 /*
2930 <img src="http://www.Physics.ohio-state.edu/~nilsen/ITS/ITS_FMD_PMD_Geom.eps">
2931 </pre>
2932 <br clear=left>
2933 <font size=+2 color=blue>
2934 <p>SDD Support cone with other forward detectors. Shown in
2935 brown are a posible cabling layout.
2936 </font>
2937 */
2938 //End_Html
2939 dits[0] = 10.0;
2940 dits[1] = 10.5;
2941 dits[2] = 0.25;
2942 gMC->Gsvolu("I090", "TUBE", idtmed[224], dits, 3); // SDD cylinder flange
2943
2944 dits[0] = 21.95;
2945 dits[1] = 22.95;
2946 dits[2] = 1;
2947 gMC->Gsvolu("I098", "TUBE", idtmed[283], dits, 3); // ladder support on layer 4
2948
2949 dits[0] = 13.1;
2950 dits[1] = 14.1;
2951 dits[2] = 1;
2952 gMC->Gsvolu("I097", "TUBE", idtmed[283], dits, 3); // ladder support on layer 3
2953
2954 dits[0] = 1;
2955 dits[1] = 1;
2956 dits[2] = 7.74;
2957 gMC->Gsvolu("I202", "BOX ", idtmed[272], dits, 3);
2958
bf210566 2959 if (AliITSInitGeometry::SDDIsTGeoNative())
2960 dits[0] = 0.9;
2961 else
2962 dits[0] = 1;
108bd0fe 2963 dits[1] = 1;
2964 dits[2] = 9.14;
2965 gMC->Gsvolu("I203", "BOX ", idtmed[272], dits, 3);
2966
2967 dits[0] = 21.95;
2968 dits[1] = 22.95;
2969 dits[2] = 1;
2970 gMC->Gsvolu("I095", "TUBE", idtmed[224], dits, 3);
2971
2972 dits[0] = 3;
2973 dits[1] = 2.7;
2974 dits[2] = 1;
2975 dits[3] = 0.63;
2976 gMC->Gsvolu("I096", "TRD1", idtmed[264], dits, 4);
2977
2978 dits[0] = 13.1;
2979 dits[1] = 14.1;
2980 dits[2] = 1;
2981 gMC->Gsvolu("I094", "TUBE", idtmed[224], dits, 3);
2982 }
2983
2984 if (! AliITSInitGeometry::SSDconeIsTGeoNative()) {
2985 // --- Define volumes of SSD cone ----------------------------------
2986
2987 dits[0] = 0;
2988 dits[1] = 360;
2989 dits[2] = 12;
bf210566 2990
108bd0fe 2991 dits[3] = -zmax;
bf210566 2992 dits[4] = 46;
2993 dits[5] = 49.25;
2994
108bd0fe 2995 dits[6] = -61.2;
2996 dits[7] = 28.7;
bf210566 2997 dits[8] = 49.25;
2998
108bd0fe 2999 dits[9] = -57.5;
3000 dits[10] = 28.7;
bf210566 3001 dits[11] = 49.25;
3002
108bd0fe 3003 dits[12] = -57.5;
3004 dits[13] = 28.7;
3005 dits[14] = 43.5;
bf210566 3006
3007 //dits[15] = -49.2;
3008 dits[15] = -53.4-0.75;
108bd0fe 3009 dits[16] = 28.7;
3010 dits[17] = 43.5;
bf210566 3011
3012 //dits[18] = -49.2;
3013 dits[18] = -53.4-0.75;
108bd0fe 3014 dits[19] = 28.7;
3015 dits[20] = 36.85;
bf210566 3016
3017 //dits[21] = 50.6;
3018 dits[21] = 53.4+0.75;
108bd0fe 3019 dits[22] = 28.7;
3020 dits[23] = 36.85;
bf210566 3021
3022 dits[24] = 53.4+0.75;
3023 //dits[24] = 50.6;
108bd0fe 3024 dits[25] = 28.7;
3025 dits[26] = 43.5;
bf210566 3026
108bd0fe 3027 dits[27] = 57.5;
3028 dits[28] = 28.7;
3029 dits[29] = 43.5;
bf210566 3030
108bd0fe 3031 dits[30] = 57.5;
3032 dits[31] = 28.7;
bf210566 3033 dits[32] = 49.25;
3034
108bd0fe 3035 dits[33] = 61.2;
3036 dits[34] = 28.7;
3037 dits[35] = 49.25;
3038 dits[36] = zmax;
3039 dits[37] = 46;
bf210566 3040 dits[38] = 49.25;
3041
3042 if (! AliITSInitGeometry::SSDIsTGeoNative()) {
3043 dits[15] = -49.2;
3044 dits[18] = -49.2;
3045 dits[21] = 50.6;
3046 dits[24] = 50.6;
3047 }
3048
108bd0fe 3049 gMC->Gsvolu("IS01", "PCON", idtmed[204], dits, 39); // SSD cone mother volume
3050
3051 dits[0] = 0;
3052 dits[1] = 360;
3053 dits[2] = 6;
3054 dits[3] = -zmax;
3055 dits[4] = 47.75;
3056 dits[5] = 49.25;
3057 dits[6] = -zmax+2.;
3058 dits[7] = 47.75;
3059 dits[8] = 49.25;
3060 dits[9] = -71.2819;
3061 dits[10] = 46.75;
3062 dits[11] = 49.0319;
3063 dits[12] = -57.25; // was 58.5
3064 dits[13] = 32.9681;
3065 dits[14] = 34.75;
3066 dits[15] = -57.25; // was 58.5
3067 dits[16] = 30;
3068 dits[17] = 34.75;
3069 dits[18] = -55.75; // was 57
3070 dits[19] = 30;
3071 dits[20] = 32.25; // was 31.5
3072// gMC->Gsvolu("I212", "PCON", idtmed[272], dits, 21); // SSD cone
3073 gMC->Gsvolu("I212", "PCON", idtmed[288], dits, 21); // SSD cone
3074
3075 s1 = (dits[10]-dits[13])/(dits[9]-dits[12]); // Slope of conical section
3076 s2 = (dits[11]-dits[14])/(dits[9]-dits[12]); // Slope of conical section
3077 b1 = dits[13] - s1*dits[12]; // inside cone axis intersept
3078 b2 = dits[14] - s2*dits[12]; // outside cone axis intersept
3079 dits[0] = 0;
3080 dits[1] = 25;
3081 dits[2] = 4; //dits[2] = 5;
3082
3083 dits[4] = 45.50; //dits[4] = 45.5; // r inner
3084 dits[5] = dits[4]; //dits[5] = 45.5; // r outer
3085 dits[3] = (dits[4] - b1)/s1; //dits[3] = -zmax+3; // z
3086
3087 dits[8] = dits[4]; //dits[8] = 45.5; // r outer
3088 dits[6] = (dits[8] - b2)/s2; //dits[6] = -69.7+3;; // z
3089 dits[7] = s1*dits[6] + b1; //dits[7] = 37; // r inner
3090
3091 dits[10] = 37.00; //dits[10] = 37; // r inner
3092 dits[9] = (dits[10]-b1)/s1; //dits[9] = -68.5+3;; // z
3093 dits[11] = s2*dits[9]+b2; //dits[11] = 45.5; // r outer
3094
3095 dits[13] = dits[10]; //dits[13] = 37; // r inner
3096 dits[14] = dits[13]; //dits[14] = 45.5; // r outer
3097 dits[12] = (dits[14] - b2)/s2; //dits[12] = -68.5+4.8;; // z
3098// gMC->Gsvolu("I215", "PCON", idtmed[204], dits, 18); // SSD cone hole
3099 gMC->Gsvolu("I215", "PCON", idtmed[286], dits, 15); // SSD cone hole
3100 //Begin_Html
3101 /*
3102 <img src="http://www.Physics.ohio-state.edu/~nilsen/ITS/ITS_FMD_PMD_Geom.eps">
3103 </pre>
3104 <br clear=left>
3105 <font size=+2 color=blue>
3106 <p>SSD Support cone with other forward detectors. Shown in
3107 brown are a posible cabling layout.
3108 </font>
3109 */
3110 //End_Html
3111
3112 dits[0] = 28.75;
3113 dits[1] = 29.75;
3114 dits[2] = 0.5;
3115 gMC->Gsvolu("I211", "TUBE", idtmed[224], dits, 3); // SSD cylinder flange
3116
3117 dits[0] = 35.8;
3118 dits[1] = 36.8;
3119 dits[2] = 1;
3120 gMC->Gsvolu("I217", "TUBE", idtmed[283], dits, 3); // ladder support on layer 5
3121
3122 dits[0] = 41.4;
3123 dits[1] = 42.4;
3124 dits[2] = 1;
3125 gMC->Gsvolu("I219", "TUBE", idtmed[283], dits, 3); // ladder support on layer 6
3126
3127 dits[0] = 42.05+5.;
3128 dits[1] = 42.55+5.;
3129 dits[2] = 1.25;
3130 gMC->Gsvolu("I214", "TUBE", idtmed[224], dits, 3); // layer 6 electronic support
3131 // this will change after PPR
3132 dits[0] = 37.05+5.;
3133 dits[1] = 37.55+5.;
3134 dits[2] = 1.25;
3135 gMC->Gsvolu("I213", "TUBE", idtmed[224], dits, 3); // layer 5 electronic support
3136 // this will change after PPR
3137
3138 dits[0] = 0;
3139 dits[1] = 3.2;
3140 dits[2] = 9;
3141 dits[3] = -14;
3142 dits[4] = 30.5;
3143 dits[5] = 33.5;
3144 dits[6] = -9.85;
3145 dits[7] = 30.5;
3146 dits[8] = 33.5;
3147 dits[9] = -9.85;
3148 dits[10] = 30.5;
3149 dits[11] = 43.45;
3150 dits[12] = -7.85;
3151 dits[13] = 30.5;
3152 dits[14] = 43.45;
3153 dits[15] = -7.85;
3154 dits[16] = 30.5;
3155 dits[17] = 36.5;
3156 dits[18] = -7;
3157 dits[19] = 30.5;
3158 dits[20] = 36.5;
3159 dits[21] = -4;
3160 dits[22] = 33.0173;
3161 dits[23] = 36.5;
3162 dits[24] = -4;
3163 dits[25] = 33.0173;
3164 dits[26] = 36.80;
3165 dits[27] = -2;
3166 dits[28] = 34.6955;
3167 dits[29] = 36.80;
3168 gMC->Gsvolu("I216", "PCON", idtmed[272], dits, 30); // supports (1-6) of the ladders
3169 }
3170
3171
3172 // --- Place SPD (option 'b') volumes into their mother volume IT12
3173
3174 // SPD - option 'b'
3175 // (this is the default)
3176
3177 //if (option == 2) {
3178 if (! AliITSInitGeometry::SPDIsTGeoNative()) {
3179
8f8273a4 3180 gMC->Gspos("I12B",1,"IT12",0.0,0.0,0.0,0,"ONLY");
3181 gMC->Gspos("I12B",8,"IT12",0.0,0.0,0.0,idrotm[233],"ONLY");
3182 gMC->Gspos("I12B",7,"IT12",0.0,0.0,0.0,idrotm[244],"ONLY");
3183 gMC->Gspos("I12B",6,"IT12",0.0,0.0,0.0,idrotm[236],"ONLY");
3184 gMC->Gspos("I12B",2,"IT12",0.0,0.0,0.0,idrotm[245],"ONLY");
3185 gMC->Gspos("I12B",3,"IT12",0.0,0.0,0.0,idrotm[234],"ONLY");
3186 gMC->Gspos("I12B",4,"IT12",0.0,0.0,0.0,idrotm[246],"ONLY");
3187 gMC->Gspos("I12B",5,"IT12",0.0,0.0,0.0,idrotm[247],"ONLY");
3188 gMC->Gspos("I12B",9,"IT12",0.0,0.0,0.0,idrotm[248],"ONLY");
3189 gMC->Gspos("I12B",10,"IT12",0.0,0.0,0.0,idrotm[249],"ONLY");
108bd0fe 3190 deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(270.*TMath::Pi()/180.); // see definition of idrotm[238]
3191 deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(270.*TMath::Pi()/180.); // see definition of idrotm[238]
3192 gMC->Gspos("I10B",2,"I12B",0.203+deltax,3.8206+deltay,0.0,idrotm[238],"ONLY");
3193 deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(252.*TMath::Pi()/180.); // see definition of idrotm[239]
3194 deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(252.*TMath::Pi()/180.); // see definition of idrotm[239]
3195 gMC->Gspos("I10B",1,"I12B",1.4531+deltax,3.8152+deltay,0.0,idrotm[239],"ONLY");
3196 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(40.*TMath::Pi()/180.); // see definition of idrotm[240]
3197 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(40.*TMath::Pi()/180.); // see definition of idrotm[240]
3198 gMC->Gspos("I20B",1,"I12B",3.0174+deltax,6.5143+deltay,0.0,idrotm[240],"ONLY");
3199 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(49.*TMath::Pi()/180.); // see definition of idrotm[241]
3200 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(49.*TMath::Pi()/180.); // see definition of idrotm[241]
3201 gMC->Gspos("I20B",2,"I12B",1.9612+deltax,6.9062+deltay,0.0,idrotm[241],"ONLY");
3202 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(58.*TMath::Pi()/180.); // see definition of idrotm[242]
3203 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(58.*TMath::Pi()/180.); // see definition of idrotm[242]
3204 gMC->Gspos("I20B",3,"I12B",0.8567+deltax,7.1279+deltay,0.0,idrotm[242],"ONLY");
3205 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(67.*TMath::Pi()/180.); // see definition of idrotm[243]
3206 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(67.*TMath::Pi()/180.); // see definition of idrotm[243]
3207 gMC->Gspos("I20B",4,"I12B",-0.2689+deltax,7.1742+deltay,0.0,idrotm[243],"ONLY");
3208 gMC->Gspos("I123",1,"I12B",-0.2978,5.5196,0.0,idrotm[214],"ONLY");
3209 gMC->Gspos("I121",1,"I12B",-0.2385,4.1518,0.0,idrotm[213],"ONLY");
3210 gMC->Gspos("I122",1,"I12B",-0.2968,4.0207,0.0,idrotm[212],"ONLY");
3211 gMC->Gspos("I120",1,"I12B",-0.3672,3.9056,0.0,0,"ONLY");
3212 gMC->Gspos("I144",1,"I12B",-0.2538,3.8556,0.0,0,"ONLY");
3213 gMC->Gspos("I113",3,"I12B",0.1095,3.9056,0.0,0,"ONLY");
3214 gMC->Gspos("I143",1,"I12B",0.4365,3.8556,0.0,idrotm[236],"ONLY");
3215 gMC->Gspos("I142",1,"I12B",0.5136,3.9056,0.0,idrotm[235],"ONLY");
3216 gMC->Gspos("I141",1,"I12B",0.5636,3.9752,0.0,idrotm[237],"ONLY");
3217 gMC->Gspos("I140",1,"I12B",0.6336,4.0447,0.0,idrotm[234],"ONLY");
3218 gMC->Gspos("I139",1,"I12B",0.8297,4.0545,0.0,idrotm[207],"ONLY");
3219 gMC->Gspos("I113",5,"I12B",1.2575,3.9681,0.0,idrotm[207],"ONLY");
3220 gMC->Gspos("I138",1,"I12B",1.66,3.7848,0.0,idrotm[207],"ONLY");
3221 gMC->Gspos("I137",1,"I12B",1.8556,3.7738,0.0,idrotm[233],"ONLY");
3222 gMC->Gspos("I136",1,"I12B",2.6224,4.874,0.0,idrotm[232],"ONLY");
3223 gMC->Gspos("I135",1,"I12B",3.2967,6.0337,0.0,idrotm[231],"ONLY");
3224 gMC->Gspos("I134",1,"I12B",3.266,6.1636,0.0,idrotm[230],"ONLY");
3225 gMC->Gspos("I113",1,"I12B",2.9903,6.4144,0.0,idrotm[211],"ONLY");
3226 gMC->Gspos("I133",3,"I12B",2.7631,6.7627,0.0,idrotm[230],"ONLY");
3227 gMC->Gspos("I132",3,"I12B",2.62,6.8555,0.0,idrotm[229],"ONLY");
3228 gMC->Gspos("I131",3,"I12B",2.648,6.6023,0.0,idrotm[228],"ONLY");
3229 gMC->Gspos("I130",3,"I12B",2.6569,6.3431,0.0,idrotm[227],"ONLY");
3230 gMC->Gspos("I129",3,"I12B",2.3906,6.4819,0.0,idrotm[226],"ONLY");
3231 gMC->Gspos("I113",2,"I12B",1.9488,6.7998,0.0,idrotm[210],"ONLY");
3232 gMC->Gspos("I133",2,"I12B",1.6699,7.1085,0.0,idrotm[226],"ONLY");
3233 gMC->Gspos("I132",2,"I12B",1.5142,7.1777,0.0,idrotm[225],"ONLY");
3234 gMC->Gspos("I131",2,"I12B",1.5814,6.932,0.0,idrotm[224],"ONLY");
3235 gMC->Gspos("I130",2,"I12B",1.6308,6.6774,0.0,idrotm[223],"ONLY");
3236 gMC->Gspos("I129",2,"I12B",1.346,6.7728,0.0,idrotm[222],"ONLY");
3237 gMC->Gspos("I113",6,"I12B",0.8599,7.0176,0.0,idrotm[209],"ONLY");
3238 gMC->Gspos("I133",1,"I12B",0.5362,7.2789,0.0,idrotm[222],"ONLY");
3239 gMC->Gspos("I132",1,"I12B",0.3715,7.3228,0.0,idrotm[221],"ONLY");
3240 gMC->Gspos("I131",1,"I12B",0.4763,7.0907,0.0,idrotm[220],"ONLY");
3241 gMC->Gspos("I130",1,"I12B",0.5649,6.8469,0.0,idrotm[219],"ONLY");
3242 gMC->Gspos("I129",1,"I12B",0.2688,6.8966,0.0,idrotm[218],"ONLY");
3243 gMC->Gspos("I113",4,"I12B",-0.2497,7.0624,0.0,idrotm[208],"ONLY");
3244 gMC->Gspos("I128",1,"I12B",-0.6103,7.2698,0.0,idrotm[218],"ONLY");
3245 gMC->Gspos("I126",1,"I12B",-0.7799,7.2874,0.0,idrotm[217],"ONLY");
3246 gMC->Gspos("I125",1,"I12B",-0.6315,7.0883,0.0,idrotm[216],"ONLY");
3247 gMC->Gspos("I124",1,"I12B",-0.4965,6.8742,0.0,idrotm[215],"ONLY");
3248 gMC->Gspos("I105",3,"I10B",-0.05,-0.01,-16.844,idrotm[201],"ONLY");
3249 gMC->Gspos("I105",4,"I10B",-0.05,-0.01,16.844,0,"ONLY");
8f8273a4 3250
3251 // Insertion of half-stave level in old SPD1
3252 gGeoManager->MakeVolumeAssembly("L1H-STAVE0");
3253 gGeoManager->MakeVolumeAssembly("L1H-STAVE1");
3254 gMC->Gspos("L1H-STAVE0",1,"I10B",0,0,0,0,"ONLY");
3255 gMC->Gspos("L1H-STAVE1",1,"I10B",0,0,0,0,"ONLY");
3256 gMC->Gspos("I107",1,"L1H-STAVE0",-0.0455,-di10b[1]+di107[1],10.708,0,"ONLY");
3257 gMC->Gspos("I107",2,"L1H-STAVE0",-0.0455,-di10b[1]+di107[1],3.536,0,"ONLY");
3258 gMC->Gspos("I107",3,"L1H-STAVE1",-0.0455,-di10b[1]+di107[1],-3.536,0,"ONLY");
3259 gMC->Gspos("I107",4,"L1H-STAVE1",-0.0455,-di10b[1]+di107[1],-10.708,0,"ONLY");
3260 // gMC->Gspos("I107",2,"I10B",-0.0455,-di10b[1]+di107[1],3.536,0,"ONLY");
3261 // gMC->Gspos("I107",1,"I10B",-0.0455,-di10b[1]+di107[1],10.708,0,"ONLY");
3262 // gMC->Gspos("I107",4,"I10B",-0.0455,-di10b[1]+di107[1],-10.708,0,"ONLY");
3263 // gMC->Gspos("I107",3,"I10B",-0.0455,-di10b[1]+di107[1],-3.536,0,"ONLY");
3264
3265 // Insertion of half-stave level in old SPD2
3266 gGeoManager->MakeVolumeAssembly("L2H-STAVE0");
3267 gGeoManager->MakeVolumeAssembly("L2H-STAVE1");
3268 gMC->Gspos("L2H-STAVE0",1,"I20B",0,0,0,0,"ONLY");
3269 gMC->Gspos("L2H-STAVE1",1,"I20B",0,0,0,0,"ONLY");
3270 gMC->Gspos("I1D7",1,"L2H-STAVE0",-0.0455,-di20b[1]+di1d7[1],10.708,0,"ONLY");
3271 gMC->Gspos("I1D7",2,"L2H-STAVE0",-0.0455,-di20b[1]+di1d7[1],3.536,0,"ONLY");
3272 gMC->Gspos("I1D7",3,"L2H-STAVE1",-0.0455,-di20b[1]+di1d7[1],-3.536,0,"ONLY");
3273 gMC->Gspos("I1D7",4,"L2H-STAVE1",-0.0455,-di20b[1]+di1d7[1],-10.708,0,"ONLY");
3274// gMC->Gspos("I1D7",2,"I20B",-0.0455,-di20b[1]+di1d7[1],3.536,0,"ONLY");
3275// gMC->Gspos("I1D7",1,"I20B",-0.0455,-di20b[1]+di1d7[1],10.708,0,"ONLY");
3276// gMC->Gspos("I1D7",4,"I20B",-0.0455,-di20b[1]+di1d7[1],-10.708,0,"ONLY");
3277// gMC->Gspos("I1D7",3,"I20B",-0.0455,-di20b[1]+di1d7[1],-3.536,0,"ONLY");
3278
108bd0fe 3279 gMC->Gspos("I109",1,"I10B",-0.138,0.015,-16.844,idrotm[201],"ONLY");
3280 gMC->Gspos("I109",2,"I10B",-0.138,0.015,16.844,0,"ONLY");
3281 gMC->Gspos("I108",1,"I10B",-0.138,-di10b[1]+2.*di107[1]+di108[1],0.0,0,"ONLY");
3282 gMC->Gspos("I105",1,"I20B",-0.05,-0.01,-16.844,idrotm[201],"ONLY");
3283 gMC->Gspos("I105",2,"I20B",-0.05,-0.01,16.844,0,"ONLY");
108bd0fe 3284 gMC->Gspos("I109",3,"I20B",-0.138,0.015,-16.844,idrotm[201],"ONLY");
3285 gMC->Gspos("I109",4,"I20B",-0.138,0.015,16.844,0,"ONLY");
3286 gMC->Gspos("I108",2,"I20B",-0.138,-di20b[1]+2.*di1d7[1]+di108[1],0.0,0,"ONLY");
3287 gMC->Gspos("I112",2,"I113",0.25,0.02,0.0,idrotm[206],"ONLY");
3288 gMC->Gspos("I111",2,"I113",0.1318,-0.0008,0.0,idrotm[205],"ONLY");
3289 gMC->Gspos("I118",1,"I113",0.0,-0.0454,0.0,0,"ONLY");
3290 gMC->Gspos("I110",1,"I113",0.0,0.0492,0.0,0,"ONLY");
3291 gMC->Gspos("I114",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3292 gMC->Gspos("I115",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3293 gMC->Gspos("I115",2,"I113",-0.063,0.0042,0.0,idrotm[237],"ONLY");
3294 gMC->Gspos("I114",2,"I113",-0.063,0.0042,0.0,idrotm[237],"ONLY");
3295 gMC->Gspos("I116",1,"I113",0.0,0.0042,0.0,0,"ONLY");
3296 gMC->Gspos("I111",1,"I113",-0.1318,-0.0008,0.0,idrotm[204],"ONLY");
3297 gMC->Gspos("I112",1,"I113",-0.25,0.02,0.0,idrotm[203],"ONLY");
3298 gMC->Gspos("I106",1,"I107",0.0,-ddet1,-1.4,0,"ONLY");
3299 gMC->Gspos("I106",2,"I107",0.0,-ddet1,0.0,0,"ONLY");
3300 gMC->Gspos("I106",3,"I107",0.0,-ddet1,1.4,0,"ONLY");
3301 gMC->Gspos("I106",4,"I107",0.0,-ddet1,2.8,0,"ONLY");
3302 gMC->Gspos("I106",5,"I107",0.0,-ddet1,-2.8,0,"ONLY");
3303 gMC->Gspos("I101",1,"I107",0.0,dchip1,0.0,0,"ONLY");
3304 gMC->Gspos("I1D6",1,"I1D7",0.0,-ddet2,-1.4,0,"ONLY");
3305 gMC->Gspos("I1D6",2,"I1D7",0.0,-ddet2,0.0,0,"ONLY");
3306 gMC->Gspos("I1D6",3,"I1D7",0.0,-ddet2,1.4,0,"ONLY");
3307 gMC->Gspos("I1D6",4,"I1D7",0.0,-ddet2,2.8,0,"ONLY");
3308 gMC->Gspos("I1D6",5,"I1D7",0.0,-ddet2,-2.8,0,"ONLY");
3309 gMC->Gspos("I1D1",1,"I1D7",0.0,dchip2,0.0,0,"ONLY");
3310 gMC->Gspos("I117",1,"I116",0.0,0.0,0.0,0,"ONLY");
3311 gMC->Gspos("ITS1",1,"I101",0.0,0.0,0.0,0,"ONLY");
3312 gMC->Gspos("ITS2",1,"I1D1",0.0,0.0,0.0,0,"ONLY");
3313 gMC->Gspos("I651",1,"IT12",0.0,0.0,26.05,0,"ONLY");
8f8273a4 3314 gMC->Gspos("I651",2,"IT12",0.0,0.0,-26.05,0,"ONLY");
3315
3316 gMC->Gspos("I650",16,"IT12",0.0,0.0,22.0,idrotm[1104],"ONLY");
3317 gMC->Gspos("I650",20,"IT12",0.0,0.0,22.0,idrotm[1130],"ONLY");
3318 gMC->Gspos("I650",18,"IT12",0.0,0.0,22.0,idrotm[1117],"ONLY");
3319 gMC->Gspos("I650",1,"IT12",0.0,0.0,22.0,0,"ONLY");
3320 gMC->Gspos("I650",4,"IT12",0.0,0.0,22.0,idrotm[1106],"ONLY");
3321 gMC->Gspos("I650",6,"IT12",0.0,0.0,22.0,idrotm[1039],"ONLY");
3322 gMC->Gspos("I650",8,"IT12",0.0,0.0,22.0,idrotm[1107],"ONLY");
3323 gMC->Gspos("I650",10,"IT12",0.0,0.0,22.0,idrotm[1065],"ONLY");
3324 gMC->Gspos("I650",12,"IT12",0.0,0.0,22.0,idrotm[1078],"ONLY");
3325 gMC->Gspos("I650",14,"IT12",0.0,0.0,22.0,idrotm[1091],"ONLY");
3326 gMC->Gspos("I650",19,"IT12",0.0,0.0,-22.0,idrotm[1108],"ONLY");
3327 gMC->Gspos("I650",2,"IT12",0.0,0.0,-22.0,idrotm[1109],"ONLY");
3328 gMC->Gspos("I650",3,"IT12",0.0,0.0,-22.0,idrotm[1110],"ONLY");
3329 gMC->Gspos("I650",5,"IT12",0.0,0.0,-22.0,idrotm[1111],"ONLY");
3330 gMC->Gspos("I650",7,"IT12",0.0,0.0,-22.0,idrotm[1112],"ONLY");
3331 gMC->Gspos("I650",9,"IT12",0.0,0.0,-22.0,idrotm[1113],"ONLY");
3332 gMC->Gspos("I650",11,"IT12",0.0,0.0,-22.0,idrotm[1114],"ONLY");
3333 gMC->Gspos("I650",13,"IT12",0.0,0.0,-22.0,idrotm[1115],"ONLY");
3334 gMC->Gspos("I650",15,"IT12",0.0,0.0,-22.0,idrotm[1116],"ONLY");
3335 gMC->Gspos("I650",17,"IT12",0.0,0.0,-22.0,idrotm[1118],"ONLY");
3336 gMC->Gspos("I666",1,"I650",0.0,0.0,0.25,idrotm[1003],"ONLY");
3337
108bd0fe 3338 gMC->Gspos("I667",1,"I650",0.1102,0.9945,0.45,idrotm[1088],"ONLY");
3339 gMC->Gspos("I669",3,"I650",0.1883,4.0372,-3.2,0,"ONLY");
3340 gMC->Gspos("I671",3,"I650",0.1883,4.0372,0.6,0,"ONLY");
3341 gMC->Gspos("I669",2,"I650",1.3343,4.0609,-3.2,0,"ONLY");
3342 gMC->Gspos("I671",2,"I650",1.3343,4.0609,0.6,0,"ONLY");
3343 gMC->Gspos("I669",6,"I650",2.9567,6.1959,-3.2,idrotm[1089],"ONLY");
3344 gMC->Gspos("I671",6,"I650",2.9567,6.1959,0.6,idrotm[1089],"ONLY");
3345 gMC->Gspos("I669",5,"I650",1.9511,6.5822,-3.2,idrotm[1011],"ONLY");
3346 gMC->Gspos("I671",5,"I650",1.9511,6.5822,0.6,idrotm[1011],"ONLY");
3347 gMC->Gspos("I669",4,"I650",0.8974,6.8064,-3.2,idrotm[1090],"ONLY");
3348 gMC->Gspos("I671",4,"I650",0.8974,6.8064,0.6,idrotm[1090],"ONLY");
3349 gMC->Gspos("I669",1,"I650",-0.1784,6.863,-3.2,0,"ONLY");
3350 gMC->Gspos("I671",1,"I650",-0.1784,6.863,0.6,0,"ONLY");
3351 gMC->Gspos("I673",1,"I650",0.2173,4.8037,1.8,0,"ONLY");
3352 gMC->Gspos("I673",6,"I650",1.5093,4.5605,1.8,0,"ONLY");
3353 gMC->Gspos("I673",4,"I650",-0.173,6.2531,1.8,idrotm[1092],"ONLY");
3354 gMC->Gspos("I673",3,"I650",0.8073,6.2032,1.8,idrotm[1093],"ONLY");
3355 gMC->Gspos("I673",2,"I650",1.7678,6.0005,1.8,idrotm[1094],"ONLY");
3356 gMC->Gspos("I673",5,"I650",2.6847,5.6501,1.8,0,"ONLY");
3357 gMC->Gspos("I676",2,"I650",1.7618,5.2269,2.5,0,"ONLY");
3358 gMC->Gspos("I676",1,"I650",0.4018,5.5869,2.5,0,"ONLY");
3359 gMC->Gspos("I668",1,"I667",0.0,0.0,0.0,0,"ONLY");
3360 gMC->Gspos("I670",1,"I669",0.0,0.0,0.0,0,"ONLY");
3361 gMC->Gspos("I672",1,"I671",0.0,0.0,0.0,0,"ONLY");
3362 gMC->Gspos("I674",1,"I673",0.0,0.0,0.0,0,"MANY");
3363 gMC->Gspos("I675",1,"I673",0.0,0.0,-0.5,0,"ONLY");
8f8273a4 3364 gMC->Gspos("I677",1,"I676",0.0,0.0,0.0,0,"ONLY");
108bd0fe 3365 gMC->Gspos("I678",1,"I676",0.0,0.0,-0.95,0,"ONLY");
3366 }
3367
3368 // --- Place SDD volumes into their mother volume IT34
3369
3370 // -- position SDD detectors of ladder 3 / layer 3
3371 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
3372
3373 gMC->Gspos("ITS3", 1,"I302", 0.0, 0.0, 0.0, 0, "ONLY");
3374 ySDD = ySDDsep/2.+iI302dits[1];
3375 for (iSDD=0; iSDD<6; iSDD++) {
3376 gMC->Gspos("I302", iSDD+1, "I004", 0.0, ySDD, zSDDlay3[iSDD], 0, "ONLY");
3377 ySDD = -ySDD;
3378 }
3379
3380 gMC->Gspos("I004", 1,"IT34", -3.2777, 14.3607, 0.0, idrotm[321],"ONLY");
3381 gMC->Gspos("I004", 2,"IT34", -9.5581, 11.9855, 0.0, idrotm[333],"ONLY");
3382 gMC->Gspos("I004", 3,"IT34",-13.2713, 6.3911, 0.0, idrotm[336],"ONLY");
3383 gMC->Gspos("I004", 4,"IT34",-15.33, 0.0, 0.0, idrotm[350],"ONLY");
3384 gMC->Gspos("I004", 5,"IT34",-13.2713, -6.3911, 0.0, idrotm[313],"ONLY");
3385 gMC->Gspos("I004", 6,"IT34", -9.5581, -11.9855, 0.0, idrotm[311],"ONLY");
3386 gMC->Gspos("I004", 7,"IT34", -3.2777, -14.3607, 0.0, idrotm[310],"ONLY");
3387 gMC->Gspos("I004", 8,"IT34", 3.4112, -14.9456, 0.0, idrotm[386],"ONLY");
3388 gMC->Gspos("I004", 9,"IT34", 9.184, -11.5164, 0.0, idrotm[309],"ONLY");
3389 gMC->Gspos("I004",10,"IT34", 13.8119, -6.6514, 0.0, idrotm[308],"ONLY");
3390 gMC->Gspos("I004",11,"IT34", 14.73, 0.0, 0.0, idrotm[356],"ONLY");
3391 gMC->Gspos("I004",12,"IT34", 13.8119, 6.6514, 0.0, idrotm[307],"ONLY");
3392 gMC->Gspos("I004",13,"IT34", 9.184, 11.5164, 0.0, idrotm[306],"ONLY");
3393 gMC->Gspos("I004",14,"IT34", 3.4113, 14.9456, 0.0, idrotm[305],"ONLY");
3394
3395
3396 // -- position SDD detectors of ladder 4 / layer 4
3397
3398 gMC->Gspos("ITS4", 1,"I402", 0.0, 0.000, 0.0, 0,"ONLY");
3399 ySDD = -(ySDDsep/2.+iI402dits[1]);
3400 for (iSDD=0; iSDD<8; iSDD++) {
3401 gMC->Gspos("I402", iSDD+1, "I005", 0.0, ySDD, zSDDlay4[iSDD], 0, "ONLY");
3402 ySDD = -ySDD;
3403 }
3404
3405 gMC->Gspos("I005", 1,"IT34", -3.3629, 23.3895,-0.15, idrotm[335],"ONLY");
3406 gMC->Gspos("I005", 2,"IT34",-10.0447, 21.9949,-0.15, idrotm[332],"ONLY");
3407 gMC->Gspos("I005", 3,"IT34",-15.4744, 17.8584,-0.15, idrotm[331],"ONLY");
3408 gMC->Gspos("I005", 4,"IT34",-20.3415, 13.0727,-0.15, idrotm[366],"ONLY");
3409 gMC->Gspos("I005", 5,"IT34",-22.6728, 6.6573,-0.15, idrotm[330],"ONLY");
3410 gMC->Gspos("I005", 6,"IT34",-24.18, 0.0, -0.15, idrotm[350],"ONLY");
3411 gMC->Gspos("I005", 7,"IT34",-22.6728, -6.6573,-0.15, idrotm[329],"ONLY");
3412 gMC->Gspos("I005", 8,"IT34",-20.3415, -13.0727,-0.15, idrotm[328],"ONLY");
3413 gMC->Gspos("I005", 9,"IT34",-15.4744, -17.8584,-0.15, idrotm[327],"ONLY");
3414 gMC->Gspos("I005",10,"IT34",-10.0447, -21.9949,-0.15, idrotm[326],"ONLY");
3415 gMC->Gspos("I005",11,"IT34", -3.3629, -23.3895,-0.15, idrotm[325],"ONLY");
3416 gMC->Gspos("I005",12,"IT34", 3.4412, -23.9339,-0.15, idrotm[324],"ONLY");
3417 gMC->Gspos("I005",13,"IT34", 9.8163, -21.4946,-0.15, idrotm[323],"ONLY");
3418 gMC->Gspos("I005",14,"IT34", 15.8345, -18.274, -0.15, idrotm[322],"ONLY");
3419 gMC->Gspos("I005",15,"IT34", 19.8788, -12.7753,-0.15, idrotm[320],"ONLY");
3420 gMC->Gspos("I005",16,"IT34", 23.2005, -6.8123,-0.15, idrotm[319],"ONLY");
3421 gMC->Gspos("I005",17,"IT34", 23.63, 0.0, -0.15, idrotm[318],"ONLY");
3422 gMC->Gspos("I005",18,"IT34", 23.2005, 6.8123,-0.15, idrotm[317],"ONLY");
3423 gMC->Gspos("I005",19,"IT34", 19.8788, 12.7753,-0.15, idrotm[316],"ONLY");
3424 gMC->Gspos("I005",20,"IT34", 15.8345, 18.274, -0.15, idrotm[315],"ONLY");
3425 gMC->Gspos("I005",21,"IT34", 9.8163, 21.4946,-0.15, idrotm[314],"ONLY");
3426 gMC->Gspos("I005",22,"IT34", 3.4412, 23.9339,-0.15, idrotm[334],"ONLY");
3427
3428
3429 // -- build block of the SDD ladder frame holding the electronics
3430
3431 gMC->Gspos("I019", 1,"I018", -1.9, -1.735, 0.0, idrotm[344], "ONLY");
3432 gMC->Gspos("I019", 2,"I018", 1.987, -1.5843, 0.0, idrotm[343], "ONLY");
3433 gMC->Gspos("I019", 3,"I018", -0.087, 1.7066, 0.0, idrotm[342], "ONLY");
3434
3435 gMC->Gspos("I020", 1,"I018", -1.9782, -1.569, 0.0, idrotm[342], "ONLY");
3436 gMC->Gspos("I020", 2,"I018", 1.8824, -1.735, 0.0, idrotm[344], "ONLY");
3437 gMC->Gspos("I020", 3,"I018", 0.0958, 1.6913, 0.0, idrotm[343], "ONLY");
3438
3439 gMC->Gspos("I021", 1,"I018", 1.0761, 0.0835, 2.6008, idrotm[340], "ONLY");
3440 gMC->Gspos("I021", 2,"I018", -1.0761, 0.0835,-2.8008, idrotm[339], "ONLY");
3441 gMC->Gspos("I021", 3,"I018", -1.0761, 0.0835,-1.0492, idrotm[338], "ONLY");
3442 gMC->Gspos("I021", 4,"I018", 1.0761, 0.0835,-2.8008, idrotm[337], "ONLY");
3443 gMC->Gspos("I021", 5,"I018", 1.0761, 0.0835,-1.0492, idrotm[340], "ONLY");
3444 gMC->Gspos("I021", 6,"I018", -1.0761, 0.0835, 0.8492, idrotm[339], "ONLY");
3445 gMC->Gspos("I021", 7,"I018", -1.0761, 0.0835, 2.6008, idrotm[338], "ONLY");
3446 gMC->Gspos("I021", 8,"I018", 1.0761, 0.0835, 0.8492, idrotm[337], "ONLY");
3447
3448 gMC->Gspos("I022", 1,"I018", 0.0, -1.79, 3.55, idrotm[312], "ONLY");
3449 gMC->Gspos("I022", 2,"I018", 0.0, -1.79, -0.1, idrotm[312], "ONLY");
3450
3451 gMC->Gspos("I023", 1,"I018", 0.0, -1.79, 1.725, idrotm[341], "ONLY");
3452 gMC->Gspos("I023", 2,"I018", 0.0, -1.79, -1.925, idrotm[341], "ONLY");
3453
3454 gMC->Gspos("I033", 1,"I018", 1.8, -1.75, 1.35, 0, "MANY");
3455 gMC->Gspos("I033", 2,"I018", -1.8, -1.75, -2.65, idrotm[345], "MANY");
3456 gMC->Gspos("I033", 3,"I018", -1.8, -1.75, 1.35, idrotm[345], "MANY");
3457 gMC->Gspos("I033", 4,"I018", 1.8, -1.75, -2.65, 0, "MANY");
3458
3459 gMC->Gspos("I034", 1,"I018", 1.6, -1.775, 1.35, idrotm[312], "ONLY");
3460 gMC->Gspos("I034", 2,"I018", -1.6, -1.775, -2.65, idrotm[348], "ONLY");
3461 gMC->Gspos("I034", 3,"I018", -1.6, -1.775, 1.35, idrotm[348], "ONLY");
3462 gMC->Gspos("I034", 4,"I018", 1.6, -1.775, -2.65, idrotm[312], "ONLY");
3463
8f8273a4 3464 gMC->Gspos("I035", 1,"I018", 1.7, -0.55, iI018dits[2]-iI035dits[2], 0, "ONLY");
3465 gMC->Gspos("I035", 2,"I018", -1.7, -0.55, iI018dits[2]-iI035dits[2], 0, "ONLY");
108bd0fe 3466
3467 gMC->Gspos("I036", 1,"I018", 0.3087, 1.7191, 3.56, idrotm[346], "ONLY");
3468 gMC->Gspos("I036", 2,"I018", 0.3087, 1.7191,-0.11, idrotm[346], "ONLY");
3469 gMC->Gspos("I036", 3,"I018", -0.3087, 1.7191,-0.11, idrotm[347], "ONLY");
3470 gMC->Gspos("I036", 4,"I018", -0.3087, 1.7191, 3.56, idrotm[347], "ONLY");
3471
3472 gMC->Gspos("I037", 1,"I018", iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], 0 , "ONLY");
3473 gMC->Gspos("I037", 2,"I018", -iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], 0 , "ONLY");
3474
3475 gMC->Gspos("I038", 1,"I018", iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], 0 , "ONLY");
3476 gMC->Gspos("I038", 2,"I018", -iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], 0 , "ONLY");
3477
3478 gMC->Gspos("I040", 1,"I018", 1.9204, -0.7118, 0.0, idrotm[346],"ONLY");
3479 gMC->Gspos("I040", 2,"I018", -1.9204, -0.7118, 0.0, idrotm[347],"ONLY");
3480 gMC->Gspos("I041", 1,"I018", iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], idrotm[346], "ONLY");
3481 gMC->Gspos("I041", 2,"I018", -iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], idrotm[347], "ONLY");
3482
3483
3484 // -- build block of the SDD electronics (heat bridge, chips, hybrid, anode microcable)
3485
3486 xI050 = iSDDCoolPipe[0]+iSDDCoolPipe[1]*sin30+iI050dits[1]/cos30+iI041dits[1];
3487 yI050 = 0;
3488 xI039 = -iSDDCoolPipe[1]/cos30;
3489 yI039 = -iI050dits[1]+iI039dits[1];
3490 gMC->Gspos("I039", 1,"I050", xI039, yI039, 0.0, 0, "ONLY");
3491 xI042 = xI039+iI039dits[0]-xI042space-iI042dits[0];
3492 yI042 = yI039+iI039dits[1]+iI042dits[1];
3493 xI043 = xI039-iI039dits[0]+xI043space+iI043dits[0];
3494 yI043 = yI039+iI039dits[1]+iI043dits[1];
3495 zChipSpace = iI042dits[2];
3496 if (zChipSpace < iI043dits[2]) {
3497 zChipSpace = iI043dits[2];
3498 }
3499 zChipSpace = zChipSpace * 2;
3500 yI051space = (2*iI039dits[2] - 4*zChipSpace)/5;
3501 zchip = -iI039dits[2] + yI051space + zChipSpace/2.;
3502 for (ichip=0; ichip<4; ichip++) {
3503 gMC->Gspos("I042", ichip+1, "I050", xI042, yI042, zchip, 0, "ONLY");
3504 gMC->Gspos("I043", ichip+1, "I050", xI043, yI043, zchip, 0, "ONLY");
3505 zchip += zChipSpace + yI051space;
3506 }
3507 xcap = 2*iI039dits[0]/5.;
3508 yI051 = yI039+iI039dits[1]+iI051dits[1];
3509 zI051 = -iI039dits[2] + yI051space/3.;
3510 icap = 1;
3511 for (ichip=0; ichip<5; ichip++) {
3512 xI051 = xI039-iI039dits[0]+xcap;
3513 gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3514 zI051 += yI051space/3.;
3515 gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3516 xI051 += xcap;
3517 gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3518 xI051 += xcap;
3519 gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3520 xI051 += xcap;
3521 gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3522 zI051 -= yI051space/3.;
3523 if (ichip == 0) {
3524 gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3525 }
3526 zI051 += zChipSpace + yI051space;
3527 }
3528 xI052 = -iI050dits[0]+iI052dits[0];
3529 yI052 = yI051+iI051dits[1]+iI052dits[1];
3530 gMC->Gspos("I052", 1,"I050", xI052, yI052, 0.0, 0, "ONLY");
3531 xI044 = iI050dits[0]-iI044dits[3];
3532 yI044 = yI052+iI052dits[1]+iI044dits[2];
3533 gMC->Gspos("I044", 1,"I050", xI044, yI044, 0.0, idrotm[301], "ONLY");
3534 gMC->Gspos("I050", 1,"I018", xI050, yI050, 0.0, idrotm[346],"ONLY");
3535 gMC->Gspos("I050", 2,"I018", -xI050, yI050, 0.0, idrotm[347],"ONLY");
3536
3537
3538 // -- build block of the SDD ladder frame at the end ladders
3539
3540 gMC->Gspos("I021",12,"I024", 1.0761, 0.0836,-0.1242, idrotm[340], "ONLY");
3541 gMC->Gspos("I021",11,"I024", -1.0761, 0.0836,-0.1242, idrotm[338], "ONLY");
3542 gMC->Gspos("I021",13,"I024", -1.0761, 0.0836,-1.8758, idrotm[339], "ONLY");
3543 gMC->Gspos("I021",14,"I024", 1.0761, 0.0836,-1.8758, idrotm[337], "ONLY");
3544
3545 gMC->Gspos("I022", 3,"I024", 0.0, -1.7899, 0.825, idrotm[312], "ONLY");
3546
3547 gMC->Gspos("I023", 3,"I024", 0.0, -1.7899,-1.0, idrotm[341], "ONLY");
3548
3549 gMC->Gspos("I025", 1,"I024", -1.9, -1.7349, 0.0, idrotm[344], "ONLY");
3550 gMC->Gspos("I025", 2,"I024", 1.987, -1.5842, 0.0, idrotm[343], "ONLY");
3551
3552 gMC->Gspos("I026", 1,"I024", -1.9782, -1.5689, 0.0, idrotm[342], "ONLY");
3553 gMC->Gspos("I026", 2,"I024", 1.8824, -1.7349, 0.0, idrotm[344], "ONLY");
3554
3555 gMC->Gspos("I029", 1,"I024", -0.087, 1.7067, iI029dits[2]-iI024dits[2], idrotm[342], "ONLY");
3556
3557 gMC->Gspos("I030", 1,"I024", 0.0958, 1.6914, iI030dits[2]-iI024dits[2], idrotm[343], "ONLY");
3558
3559 gMC->Gspos("I031", 1,"I024", iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], 0 ,"ONLY");
3560 gMC->Gspos("I031", 2,"I024", -iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], 0 ,"ONLY");
3561
3562 gMC->Gspos("I032", 1,"I024", iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], 0 ,"ONLY");
3563 gMC->Gspos("I032", 2,"I024", -iSDDCoolPipe[0], iSDDCoolPipe[1], iSDDCoolPipe[2], 0 ,"ONLY");
3564
3565
3566 xI424 = iI028dits[0]/3.;
3567 yI424 = -iI028dits[1]+iI424dits[1];
3568 gMC->Gspos("I422", 1,"I421", 0.0, 0.0, 0.0, 0, "ONLY");
3569 gMC->Gspos("I423", 1,"I421", 0.0, 0.0, iI421dits[2]-iI423dits[2], 0, "ONLY");
3570 gMC->Gspos("I421", 1,"I420", 0.0, 0.0, 0.0, idrotm[312], "ONLY");
3571 gMC->Gspos("I420", 1,"I028", -iI028dits[0]/3., iI028dits[1]-iI420dits[1], 0.0, 0, "ONLY");
3572 gMC->Gspos("I424", 1,"I028", xI424, yI424, 0.0, 0, "ONLY");
8f8273a4 3573 gMC->Gspos("I028", 1,"I024", 0.0, iI028dits[1]-iI024dits[1], iI024dits[2]-iI028dits[2], 0, "ONLY");
108bd0fe 3574
3575
3576 // -- build the SDD ladder 3
3577
3578 indI425 = 1;
3579 gMC->Gspos("I024", 1,"I047", 0.0, 0.0, 24.625, 0, "ONLY");
3580 gMC->Gspos("I018", 1,"I047", 0.0, 0.0, 3.65, 0, "ONLY");
3581 gMC->Gspos("I018", 2,"I047", 0.0, 0.0, 10.95, 0, "ONLY");
3582 gMC->Gspos("I018", 3,"I047", 0.0, 0.0, 18.25, 0, "ONLY");
3583 gMC->Gspos("I018", 4,"I047", 0.0, 0.0, -3.65, 0, "ONLY");
3584 gMC->Gspos("I018", 5,"I047", 0.0, 0.0, -10.95, 0, "ONLY");
3585 gMC->Gspos("I018", 6,"I047", 0.0, 0.0, -18.25, 0, "ONLY");
3586 gMC->Gspos("I024", 2,"I047", 0.0, 0.0, -24.625, idrotm[355], "ONLY");
3587 nameHV[0] = 'I';
3588 nameHV[1] = '3';
3589 nameHV[2] = '1';
3590 nameHV[4] = '\0';
3591 for (iSDD=0; iSDD<3; iSDD++) {
3592 nameHV[3] = (Char_t)(48+iSDD+5);
3593 dits[0] = 1.350000;
3594 dits[1] = iI425dits[1];
3595 dits[2] = (iI047dits[2] - 2*iI024dits[2] - zSDDlay3[iSDD])/2.;
3596 gMC->Gsvolu(nameHV, "BOX ", idtmed[279], dits, 3);
3597 xHV = 0.0;
3598 yHV = -iI047dits[1] + (2*iSDD+1)*dits[1];
3599 zHV = iI047dits[2] - 2*iI024dits[2] - dits[2];
3600 gMC->Gspos(nameHV, 1,"I047", xHV, yHV, zHV, 0, "ONLY");
3601 gMC->Gspos(nameHV, 2,"I047", xHV, yHV, -zHV, 0, "ONLY");
3602 gMC->Gspos("I425", indI425++,"I047", xI424, yHV, 24.625, 0, "ONLY");
3603 gMC->Gspos("I425", indI425++,"I047", -xI424, yHV, -24.625, 0, "ONLY");
3604 }
3605 nameLV[0] = 'I';
3606 nameLV[1] = '3';
3607 nameLV[2] = '1';
3608 nameLV[4] = '\0';
3609 for (iSDD=0; iSDD<3; iSDD++) {
3610 nameLV[3] = (Char_t)(48+iSDD+1);
3611 dits[0] = 1.350000;
3612 dits[1] = 0.004423;
3613 dits[2] = (iI047dits[2] - (2*iSDD+1)*iI018dits[2] - iI039dits[2])/2.;
3614 gMC->Gsvolu(nameLV, "BOX ", idtmed[280], dits, 3);
3615 yLV = iI018dits[1] - dits[0]*cos30 - dits[1]*sin30;
3616 xLV = xI050 -
3617 TMath::Abs(yI050-yLV)*sin30/cos30 +
3618 (iI050dits[1]+(2*iSDD+1)*dits[1])/cos30;
3619 zLV = iI047dits[2] - dits[2];
3620 gMC->Gspos(nameLV, 1,"I047", xLV, yLV, zLV, idrotm[346], "ONLY");
3621 gMC->Gspos(nameLV, 2,"I047", xLV, yLV, -zLV, idrotm[346], "ONLY");
3622 gMC->Gspos(nameLV, 3,"I047", -xLV, yLV, zLV, idrotm[347], "ONLY");
3623 gMC->Gspos(nameLV, 4,"I047", -xLV, yLV, -zLV, idrotm[347], "ONLY");
3624 }
3625
3626
3627 // -- build the SDD ladder 4
3628
3629
3630 gMC->Gspos("I024", 3,"I048", -0.0001, 0.0, 31.925, 0, "ONLY");
3631 gMC->Gspos("I018", 7,"I048", -0.0001, 0.0, -3.65, 0, "ONLY");
3632 gMC->Gspos("I018", 8,"I048", -0.0001, 0.0, 3.65, 0, "ONLY");
3633 gMC->Gspos("I018", 9,"I048", -0.0001, 0.0, 10.95, 0, "ONLY");
3634 gMC->Gspos("I018",10,"I048", -0.0001, 0.0, 18.25, 0, "ONLY");
3635 gMC->Gspos("I018",11,"I048", -0.0001, 0.0, 25.55, 0, "ONLY");
3636 gMC->Gspos("I018",12,"I048", -0.0001, 0.0, -10.95, 0, "ONLY");
3637 gMC->Gspos("I018",13,"I048", -0.0001, 0.0, -18.25, 0, "ONLY");
3638 gMC->Gspos("I018",14,"I048", -0.0001, 0.0, -25.55, 0, "ONLY");
3639 gMC->Gspos("I024", 4,"I048", -0.0001, 0.0, -31.925, idrotm[355], "ONLY");
3640 nameHV[0] = 'I';
3641 nameHV[1] = '4';
3642 nameHV[2] = '1';
3643 nameHV[4] = '\0';
3644 for (iSDD=0; iSDD<4; iSDD++) {
3645 nameHV[3] = (Char_t)(48+iSDD+5);
3646 dits[0] = 1.350000;
3647 dits[1] = iI425dits[1];
3648 dits[2] = (iI048dits[2] - 2*iI024dits[2] - zSDDlay4[iSDD])/2.;
3649 gMC->Gsvolu(nameHV, "BOX ", idtmed[279], dits, 3);
3650 xHV = -0.0001;
3651 yHV = -iI048dits[1] + (2*iSDD+1)*dits[1];
3652 zHV = iI048dits[2] - 2*iI024dits[2] - dits[2];
3653 gMC->Gspos(nameHV, 1,"I048", xHV, yHV, zHV, 0, "ONLY");
3654 gMC->Gspos(nameHV, 2,"I048", xHV, yHV, -zHV, 0, "ONLY");
3655 gMC->Gspos("I425", indI425++,"I048", xI424, yHV, 31.925, 0, "ONLY");
3656 gMC->Gspos("I425", indI425++,"I048", -xI424, yHV, -31.925, 0, "ONLY");
3657 }
3658 nameLV[0] = 'I';
3659 nameLV[1] = '4';
3660 nameLV[2] = '1';
3661 nameLV[4] = '\0';
3662 for (iSDD=0; iSDD<4; iSDD++) {
3663 nameLV[3] = (Char_t)(48+iSDD+1);
3664 dits[0] = 1.350000;
3665 dits[1] = 0.004423;
3666 dits[2] = (iI048dits[2] - (2*iSDD+1)*iI018dits[2] - iI039dits[2])/2.;
3667 gMC->Gsvolu(nameLV, "BOX ", idtmed[280], dits, 3);
3668 yLV = iI018dits[1] - dits[0]*cos30 - dits[1]*sin30;
3669 xLV = xI050 -
3670 TMath::Abs(yI050-yLV)*sin30/cos30 +
3671 (iI050dits[1]+(2*iSDD+1)*dits[1])/cos30;
3672 zLV = iI048dits[2] - dits[2];
3673 gMC->Gspos(nameLV, 1,"I048", xLV, yLV, zLV, idrotm[346], "ONLY");
3674 gMC->Gspos(nameLV, 2,"I048", xLV, yLV, -zLV, idrotm[346], "ONLY");
3675 gMC->Gspos(nameLV, 3,"I048", -xLV, yLV, zLV, idrotm[347], "ONLY");
3676 gMC->Gspos(nameLV, 4,"I048", -xLV, yLV, -zLV, idrotm[347], "ONLY");
3677 }
3678
3679
3680 // -- build the SDD barrel (layers 3 and 4)
3681
3682 gMC->Gspos("I047", 1,"IT34", -3.7528, 16.4422, 0.0, idrotm[321], "ONLY");
3683 gMC->Gspos("I047", 2,"IT34",-10.8892, 13.6547, 0.0, idrotm[333], "ONLY");
3684 gMC->Gspos("I047", 3,"IT34",-15.1948, 7.3175, 0.0, idrotm[336], "ONLY");
3685 gMC->Gspos("I047", 4,"IT34",-17.465, 0.0, 0.0, idrotm[350], "ONLY");
3686 gMC->Gspos("I047", 5,"IT34",-15.1948, -7.3174, 0.0, idrotm[313], "ONLY");
3687 gMC->Gspos("I047", 6,"IT34",-10.8893, -13.6547, 0.0, idrotm[311], "ONLY");
3688 gMC->Gspos("I047", 7,"IT34", -3.7528, -16.4422, 0.0, idrotm[310], "ONLY");
3689 gMC->Gspos("I047", 8,"IT34", 3.8863, -17.0271, 0.0, idrotm[386], "ONLY");
3690 gMC->Gspos("I047", 9,"IT34", 10.5152, -13.1856, 0.0, idrotm[309], "ONLY");
3691 gMC->Gspos("I047",10,"IT34", 15.7354, -7.5778, 0.0, idrotm[308], "ONLY");
3692 gMC->Gspos("I047",11,"IT34", 16.865, 0.0, 0.0, idrotm[356], "ONLY");
3693 gMC->Gspos("I047",12,"IT34", 15.7354, 7.5778, 0.0, idrotm[307], "ONLY");
3694 gMC->Gspos("I047",13,"IT34", 10.5152, 13.1856, 0.0, idrotm[306], "ONLY");
3695 gMC->Gspos("I047",14,"IT34", 3.8863, 17.0271, 0.0, idrotm[305], "ONLY");
3696
3697 gMC->Gspos("I048", 1,"IT34", -3.6667, 25.5027, 0.0, idrotm[335], "ONLY");
3698 gMC->Gspos("I048", 2,"IT34",-10.9317, 23.937, 0.0, idrotm[332], "ONLY");
3699 gMC->Gspos("I048", 3,"IT34",-16.8725, 19.4719, 0.0, idrotm[331], "ONLY");
3700 gMC->Gspos("I048", 4,"IT34",-22.1376, 14.227, 0.0, idrotm[366], "ONLY");
3701 gMC->Gspos("I048", 5,"IT34",-24.7213, 7.2588, 0.0, idrotm[330], "ONLY");
3702 gMC->Gspos("I048", 6,"IT34",-26.315, 0.0, 0.0, idrotm[350], "ONLY");
3703 gMC->Gspos("I048", 7,"IT34",-24.7213, -7.2588, 0.0, idrotm[329], "ONLY");
3704 gMC->Gspos("I048", 8,"IT34",-22.1376, -14.227, 0.0, idrotm[328], "ONLY");
3705 gMC->Gspos("I048", 9,"IT34",-16.8725, -19.4719, 0.0, idrotm[327], "ONLY");
3706 gMC->Gspos("I048",10,"IT34",-10.9316, -23.937, 0.0, idrotm[326], "ONLY");
3707 gMC->Gspos("I048",11,"IT34", -3.6667, -25.5027, 0.0, idrotm[325], "ONLY");
3708 gMC->Gspos("I048",12,"IT34", 3.745, -26.0472, 0.0, idrotm[324], "ONLY");
3709 gMC->Gspos("I048",13,"IT34", 10.7032, -23.4367, 0.0, idrotm[323], "ONLY");
3710 gMC->Gspos("I048",14,"IT34", 17.2327, -19.8876, 0.0, idrotm[322], "ONLY");
3711 gMC->Gspos("I048",15,"IT34", 21.6749, -13.9296, 0.0, idrotm[320], "ONLY");
3712 gMC->Gspos("I048",16,"IT34", 25.2491, -7.4138, 0.0, idrotm[319], "ONLY");
3713 gMC->Gspos("I048",17,"IT34", 25.765, 0.0, 0.0, idrotm[318], "ONLY");
3714 gMC->Gspos("I048",18,"IT34", 25.2491, 7.4138, 0.0, idrotm[317], "ONLY");
3715 gMC->Gspos("I048",19,"IT34", 21.6749, 13.9296, 0.0, idrotm[316], "ONLY");
3716 gMC->Gspos("I048",20,"IT34", 17.2327, 19.8876, 0.0, idrotm[315], "ONLY");
3717 gMC->Gspos("I048",21,"IT34", 10.7032, 23.4367, 0.0, idrotm[314], "ONLY");
3718 gMC->Gspos("I048",22,"IT34", 3.745, 26.0472, 0.0, idrotm[334], "ONLY");
3719 }
3720
3721 // --- Place SSD volumes into their mother volume IT56
3722
3723 if (! AliITSInitGeometry::SSDIsTGeoNative()) {
3724
3725 gMC->Gspos("I570",14,"IT56",-28.0681,-36.0619,-0.27,idrotm[566],"ONLY");
3726 gMC->Gspos("I570",15,"IT56",-21.677,-40.0556,-0.27,idrotm[567],"ONLY");
3727 gMC->Gspos("I570",16,"IT56",-14.838,-43.2217,-0.27,idrotm[568],"ONLY");
3728 gMC->Gspos("I570",17,"IT56",-7.4965,-44.9238,-0.27,idrotm[569],"ONLY");
3729 gMC->Gspos("I570",18,"IT56",-0.27,-45.6977,-0.27,idrotm[533],"ONLY");
3730 gMC->Gspos("I570",19,"IT56",7.4965,-44.9238,-0.27,idrotm[534],"ONLY");
3731 gMC->Gspos("I570",20,"IT56",14.838,-43.2217,-0.27,idrotm[535],"ONLY");
3732 gMC->Gspos("I570",21,"IT56",21.677,-40.0556,-0.27,idrotm[623],"ONLY");
3733 gMC->Gspos("I570",22,"IT56",28.0681,-36.0619,-0.27,idrotm[537],"ONLY");
3734 gMC->Gspos("I570",23,"IT56",33.5085,-30.8468,-0.27,idrotm[538],"ONLY");
3735 gMC->Gspos("I570",24,"IT56",38.2566,-24.9943,-0.27,idrotm[539],"ONLY");
3736 gMC->Gspos("I570",25,"IT56",41.7089,-18.2952,-0.27,idrotm[540],"ONLY");
3737 gMC->Gspos("I570",26,"IT56",44.2994,-11.2181,-0.27,idrotm[541],"ONLY");
3738 gMC->Gspos("I570",27,"IT56",45.3894,-3.7611,-0.27,idrotm[542],"ONLY");
3739 gMC->Gspos("I570",28,"IT56",45.5416,3.7737,-0.27,idrotm[543],"ONLY");
3740 gMC->Gspos("I570",29,"IT56",44.1513,11.1806,-0.27,idrotm[544],"ONLY");
3741 gMC->Gspos("I570",30,"IT56",41.8487,18.3566,-0.27,idrotm[545],"ONLY");
3742 gMC->Gspos("I570",31,"IT56",38.1287,24.9107,-0.27,idrotm[546],"ONLY");
3743 gMC->Gspos("I570",32,"IT56",33.6209,30.9502,-0.27,idrotm[547],"ONLY");
3744 gMC->Gspos("I570",33,"IT56",27.9743,35.9414,-0.27,idrotm[548],"ONLY");
3745 gMC->Gspos("I570",34,"IT56",21.7497,40.1899,-0.27,idrotm[549],"ONLY");
3746 gMC->Gspos("I570",35,"IT56",14.7884,43.0772,-0.27,idrotm[550],"ONLY");
3747 gMC->Gspos("I570",36,"IT56",7.5216,45.0744,-0.27,idrotm[551],"ONLY");
3748 gMC->Gspos("I570",37,"IT56",0.00,45.545,-0.27,0,"ONLY");
3749 gMC->Gspos("I570",38,"IT56",-7.5216,45.0744,-0.27,idrotm[552],"ONLY");
3750 gMC->Gspos("I570",1,"IT56",-14.7884,43.0772,-0.27,idrotm[553],"ONLY");
3751 gMC->Gspos("I570",2,"IT56",-21.7497,40.1899,-0.27,idrotm[620],"ONLY");
3752 gMC->Gspos("I570",3,"IT56",-27.9743,35.9414,-0.27,idrotm[555],"ONLY");
3753 gMC->Gspos("I570",4,"IT56",-33.6209,30.9502,-0.27,idrotm[556],"ONLY");
3754 gMC->Gspos("I570",5,"IT56",-38.1287,24.9108,-0.27,idrotm[557],"ONLY");
3755 gMC->Gspos("I570",6,"IT56",-41.8487,18.3566,-0.27,idrotm[558],"ONLY");
3756 gMC->Gspos("I570",7,"IT56",-44.1513,11.1806,-0.27,idrotm[559],"ONLY");
3757 gMC->Gspos("I570",8,"IT56",-45.5416,3.7737,-0.27,idrotm[560],"ONLY");
3758 gMC->Gspos("I570",9,"IT56",-45.3894,-3.7611,-0.27,idrotm[561],"ONLY");
3759 gMC->Gspos("I570",10,"IT56",-44.2994,-11.2181,-0.27,idrotm[562],"ONLY");
3760 gMC->Gspos("I570",11,"IT56",-41.7089,-18.2952,-0.27,idrotm[563],"ONLY");
3761 gMC->Gspos("I570",12,"IT56",-38.2566,-24.9943,-0.27,idrotm[564],"ONLY");
3762 gMC->Gspos("I570",13,"IT56",-33.5086,-30.8468,-0.27,idrotm[565],"ONLY");
3763 gMC->Gspos("I569",8,"IT56",-43.5484,3.6085,0.0,idrotm[560],"ONLY");
3764 gMC->Gspos("I569",9,"IT56",-43.3963,-3.5959,0.0,idrotm[561],"ONLY");
3765 gMC->Gspos("I569",10,"IT56",-42.3606,-10.7271,0.0,idrotm[562],"ONLY");
3766 gMC->Gspos("I569",11,"IT56",-39.8773,-17.4918,0.0,idrotm[563],"ONLY");
3767 gMC->Gspos("I569",12,"IT56",-36.5823,-23.9004,0.0,idrotm[564],"ONLY");
3768 gMC->Gspos("I569",13,"IT56",-32.0371,-29.4922,0.0,idrotm[565],"ONLY");
3769 gMC->Gspos("I569",14,"IT56",-26.8397,-34.4836,0.0,idrotm[566],"ONLY");
3770 gMC->Gspos("I569",15,"IT56",-20.7251,-38.2967,0.0,idrotm[567],"ONLY");
3771 gMC->Gspos("I569",16,"IT56",-14.1886,-41.33,0.0,idrotm[568],"ONLY");
3772 gMC->Gspos("I569",17,"IT56",-7.1673,-42.9511,0.0,idrotm[569],"ONLY");
3773 gMC->Gspos("I569",18,"IT56",0.0,-43.6977,0.0,idrotm[533],"ONLY");
3774 gMC->Gspos("I569",19,"IT56",7.1673,-42.9511,0.0,idrotm[534],"ONLY");
3775 gMC->Gspos("I569",20,"IT56",14.1886,-41.33,0.0,idrotm[535],"ONLY");
3776 gMC->Gspos("I569",21,"IT56",20.7251,-38.2967,0.0,idrotm[623],"ONLY");
3777 gMC->Gspos("I569",22,"IT56",26.8397,-34.4836,0.0,idrotm[537],"ONLY");
3778 gMC->Gspos("I569",23,"IT56",32.0371,-29.4922,0.0,idrotm[538],"ONLY");
3779 gMC->Gspos("I569",24,"IT56",36.5822,-23.9004,0.0,idrotm[539],"ONLY");
3780 gMC->Gspos("I569",25,"IT56",39.8773,-17.4918,0.0,idrotm[540],"ONLY");
3781 gMC->Gspos("I569",26,"IT56",42.3606,-10.7272,0.0,idrotm[541],"ONLY");
3782 gMC->Gspos("I569",27,"IT56",43.3963,-3.5959,0.0,idrotm[542],"ONLY");
3783 gMC->Gspos("I569",28,"IT56",43.5484,3.6085,0.0,idrotm[543],"ONLY");
3784 gMC->Gspos("I569",29,"IT56",42.2125,10.6897,0.0,idrotm[544],"ONLY");
3785 gMC->Gspos("I569",30,"IT56",40.0172,17.5532,0.0,idrotm[545],"ONLY");
3786 gMC->Gspos("I569",31,"IT56",36.4544,23.8169,0.0,idrotm[546],"ONLY");
3787 gMC->Gspos("I569",32,"IT56",32.1494,29.5956,0.0,idrotm[547],"ONLY");
3788 gMC->Gspos("I569",33,"IT56",26.7459,34.3631,0.0,idrotm[548],"ONLY");
3789 gMC->Gspos("I569",34,"IT56",20.7978,38.431,0.0,idrotm[549],"ONLY");
3790 gMC->Gspos("I569",35,"IT56",14.139,41.1856,0.0,idrotm[550],"ONLY");
3791 gMC->Gspos("I569",36,"IT56",7.1924,43.1017,0.0,idrotm[551],"ONLY");
3792 gMC->Gspos("I569",37,"IT56",0.0,43.545,0.0,0,"ONLY");
3793 gMC->Gspos("I569",38,"IT56",-7.1924,43.1017,0.0,idrotm[552],"ONLY");
3794 gMC->Gspos("I569",1,"IT56",-14.139,41.1856,0.0,idrotm[553],"ONLY");
3795 gMC->Gspos("I569",2,"IT56",-20.7978,38.431,0.0,idrotm[620],"ONLY");
3796 gMC->Gspos("I569",3,"IT56",-26.7459,34.3631,0.0,idrotm[555],"ONLY");
3797 gMC->Gspos("I569",4,"IT56",-32.1494,29.5956,0.0,idrotm[556],"ONLY");
3798 gMC->Gspos("I569",5,"IT56",-36.4544,23.8169,0.0,idrotm[557],"ONLY");
3799 gMC->Gspos("I569",6,"IT56",-40.0172,17.5532,0.0,idrotm[558],"ONLY");
3800 gMC->Gspos("I569",7,"IT56",-42.2125,10.6897,0.0,idrotm[559],"ONLY");
3801 gMC->Gspos("I571",15,"IT56",-21.2916,-34.387,0.0,idrotm[501],"ONLY");
3802 gMC->Gspos("I571",14,"IT56",-27.351,-30.0026,0.0,idrotm[503],"ONLY");
3803 gMC->Gspos("I571",13,"IT56",-32.2758,-24.3735,0.0,idrotm[504],"ONLY");
3804 gMC->Gspos("I571",12,"IT56",-36.3422,-18.0963,0.0,idrotm[505],"ONLY");
3805 gMC->Gspos("I571",11,"IT56",-38.901,-11.0683,0.0,idrotm[506],"ONLY");
3806 gMC->Gspos("I571",10,"IT56",-40.4252,-3.7459,0.0,idrotm[507],"ONLY");
3807 gMC->Gspos("I571",9,"IT56",-40.2725,3.7318,0.0,idrotm[508],"ONLY");
3808 gMC->Gspos("I571",8,"IT56",-39.0486,11.1103,0.0,idrotm[509],"ONLY");
3809 gMC->Gspos("I571",7,"IT56",-36.2049,18.0279,0.0,idrotm[510],"ONLY");
3810 gMC->Gspos("I571",6,"IT56",-32.3982,24.466,0.0,idrotm[511],"ONLY");
3811 gMC->Gspos("I571",5,"IT56",-27.2476,29.8892,0.0,idrotm[512],"ONLY");
3812 gMC->Gspos("I571",4,"IT56",-21.3723,34.5175,0.0,idrotm[513],"ONLY");
3813 gMC->Gspos("I571",3,"IT56",-14.6104,37.7138,0.0,idrotm[653],"ONLY");
3814 gMC->Gspos("I571",2,"IT56",-7.4599,39.9072,0.0,idrotm[514],"ONLY");
3815 gMC->Gspos("I571",1,"IT56",0.0,40.445,0.0,0,"ONLY");
3816 gMC->Gspos("I571",34,"IT56",7.46,39.9071,0.0,idrotm[515],"ONLY");
3817 gMC->Gspos("I571",33,"IT56",14.6104,37.7138,0.0,idrotm[516],"ONLY");
3818 gMC->Gspos("I571",32,"IT56",21.3723,34.5175,0.0,idrotm[517],"ONLY");
3819 gMC->Gspos("I571",31,"IT56",27.2476,29.8892,0.0,idrotm[518],"ONLY");
3820 gMC->Gspos("I571",30,"IT56",32.3983,24.466,0.0,idrotm[519],"ONLY");
3821 gMC->Gspos("I571",29,"IT56",36.2049,18.0279,0.0,idrotm[520],"ONLY");
3822 gMC->Gspos("I571",28,"IT56",39.0486,11.1103,0.0,idrotm[521],"ONLY");
3823 gMC->Gspos("I571",27,"IT56",40.2725,3.7318,0.0,idrotm[522],"ONLY");
3824 gMC->Gspos("I571",26,"IT56",40.4252,-3.746,0.0,idrotm[523],"ONLY");
3825 gMC->Gspos("I571",25,"IT56",38.901,-11.0683,0.0,idrotm[524],"ONLY");
3826 gMC->Gspos("I571",24,"IT56",36.3422,-18.0963,0.0,idrotm[525],"ONLY");
3827 gMC->Gspos("I571",23,"IT56",32.2758,-24.3736,0.0,idrotm[526],"ONLY");
3828 gMC->Gspos("I571",22,"IT56",27.351,-30.0026,0.0,idrotm[527],"ONLY");
3829 gMC->Gspos("I571",21,"IT56",21.2915,-34.387,0.0,idrotm[528],"ONLY");
3830 gMC->Gspos("I571",20,"IT56",14.6658,-37.8569,0.0,idrotm[618],"ONLY");
3831 gMC->Gspos("I571",19,"IT56",7.4317,-39.7563,0.0,idrotm[529],"ONLY");
3832 gMC->Gspos("I571",18,"IT56",0.0,-40.5984,0.0,idrotm[533],"ONLY");
3833 gMC->Gspos("I571",17,"IT56",-7.4318,-39.7563,0.0,idrotm[530],"ONLY");
3834 gMC->Gspos("I571",16,"IT56",-14.6659,-37.8569,0.0,idrotm[531],"ONLY");
3835 gMC->Gspos("I565",13,"IT56",-30.6798,-23.1683,0.0,idrotm[504],"ONLY");
3836 gMC->Gspos("I565",12,"IT56",-34.5519,-17.2048,0.0,idrotm[505],"ONLY");
3837 gMC->Gspos("I565",11,"IT56",-36.9774,-10.521,0.0,idrotm[506],"ONLY");
3838 gMC->Gspos("I565",10,"IT56",-38.4338,-3.5614,0.0,idrotm[507],"ONLY");
3839 gMC->Gspos("I565",9,"IT56",-38.281,3.5473,0.0,idrotm[508],"ONLY");
3840 gMC->Gspos("I565",8,"IT56",-37.1249,10.563,0.0,idrotm[509],"ONLY");
3841 gMC->Gspos("I565",7,"IT56",-34.4146,17.1364,0.0,idrotm[510],"ONLY");
3842 gMC->Gspos("I565",6,"IT56",-30.8022,23.2608,0.0,idrotm[511],"ONLY");
3843 gMC->Gspos("I565",5,"IT56",-25.9002,28.4112,0.0,idrotm[512],"ONLY");
3844 gMC->Gspos("I565",4,"IT56",-20.3195,32.817,0.0,idrotm[513],"ONLY");
3845 gMC->Gspos("I565",3,"IT56",-13.8879,35.8489,0.0,idrotm[653],"ONLY");
3846 gMC->Gspos("I565",2,"IT56",-7.0924,37.9412,0.0,idrotm[514],"ONLY");
3847 gMC->Gspos("I565",1,"IT56",0.0,38.445,0.0,0,"ONLY");
3848 gMC->Gspos("I565",34,"IT56",7.0925,37.9412,0.0,idrotm[515],"ONLY");
3849 gMC->Gspos("I565",33,"IT56",13.888,35.8489,0.0,idrotm[516],"ONLY");
3850 gMC->Gspos("I565",32,"IT56",20.3195,32.817,0.0,idrotm[517],"ONLY");
3851 gMC->Gspos("I565",31,"IT56",25.9002,28.4112,0.0,idrotm[518],"ONLY");
3852 gMC->Gspos("I565",30,"IT56",30.8022,23.2607,0.0,idrotm[519],"ONLY");
3853 gMC->Gspos("I565",29,"IT56",34.4146,17.1364,0.0,idrotm[520],"ONLY");
3854 gMC->Gspos("I565",28,"IT56",37.125,10.5629,0.0,idrotm[521],"ONLY");
3855 gMC->Gspos("I565",27,"IT56",38.281,3.5472,0.0,idrotm[522],"ONLY");
3856 gMC->Gspos("I565",26,"IT56",38.4338,-3.5614,0.0,idrotm[523],"ONLY");
3857 gMC->Gspos("I565",25,"IT56",36.9774,-10.521,0.0,idrotm[524],"ONLY");
3858 gMC->Gspos("I565",24,"IT56",34.5519,-17.2048,0.0,idrotm[525],"ONLY");
3859 gMC->Gspos("I565",23,"IT56",30.6798,-23.1683,0.0,idrotm[526],"ONLY");
3860 gMC->Gspos("I565",22,"IT56",26.0036,-28.5246,0.0,idrotm[527],"ONLY");
3861 gMC->Gspos("I565",21,"IT56",20.2387,-32.6866,0.0,idrotm[528],"ONLY");
3862 gMC->Gspos("I565",20,"IT56",13.9433,-35.992,0.0,idrotm[618],"ONLY");
3863 gMC->Gspos("I565",19,"IT56",7.0642,-37.7904,0.0,idrotm[529],"ONLY");
3864 gMC->Gspos("I565",18,"IT56",0.0,-38.5984,0.0,idrotm[533],"ONLY");
3865 gMC->Gspos("I565",17,"IT56",-7.0643,-37.7904,0.0,idrotm[530],"ONLY");
3866 gMC->Gspos("I565",16,"IT56",-13.9434,-35.992,0.0,idrotm[531],"ONLY");
3867 gMC->Gspos("I565",15,"IT56",-20.2387,-32.6866,0.0,idrotm[501],"ONLY");
3868 gMC->Gspos("I565",14,"IT56",-26.0036,-28.5246,0.0,idrotm[503],"ONLY");
3869 gMC->Gspos("I553",1,"I570",0.005,0.0,52.8453,0,"ONLY");
3870 gMC->Gspos("I523",1,"I570",0.0,0.0,46.9203+0.82,0,"ONLY");
3871 gMC->Gspos("I523",2,"I570",0.0,0.0,43.0103+0.82,0,"ONLY");
3872 gMC->Gspos("I523",3,"I570",0.0,0.0,39.1003+0.82,0,"ONLY");
3873 gMC->Gspos("I523",4,"I570",0.0,0.0,35.1903+0.82,0,"ONLY");
3874 gMC->Gspos("I523",5,"I570",0.0,0.0,31.2803+0.82,0,"ONLY");
3875 gMC->Gspos("I523",6,"I570",0.0,0.0,27.3703+0.82,0,"ONLY");
3876 gMC->Gspos("I523",7,"I570",0.0,0.0,23.4603+0.82,0,"ONLY");
3877 gMC->Gspos("I523",8,"I570",0.0,0.0,19.5503+0.82,0,"ONLY");
3878 gMC->Gspos("I523",9,"I570",0.0,0.0,15.6403+0.82,0,"ONLY");
3879 gMC->Gspos("I523",10,"I570",0.0,0.0,11.7303+0.82,0,"ONLY");
3880 gMC->Gspos("I523",11,"I570",0.0,0.0,7.8203+0.82,0,"ONLY");
3881 gMC->Gspos("I523",12,"I570",0.0,0.0,3.9103+0.82,0,"ONLY");
3882 gMC->Gspos("I523",13,"I570",0.0,0.0,0.0003+0.82,0,"ONLY");
3883 gMC->Gspos("I523",14,"I570",0.0,0.0,-3.9097+0.82,0,"ONLY");
3884 gMC->Gspos("I523",15,"I570",0.0,0.0,-7.8197+0.82,0,"ONLY");
3885 gMC->Gspos("I523",16,"I570",0.0,0.0,-11.7297+0.82,0,"ONLY");
3886 gMC->Gspos("I523",17,"I570",0.0,0.0,-15.6397+0.82,0,"ONLY");
3887 gMC->Gspos("I523",18,"I570",0.0,0.0,-19.5497+0.82,0,"ONLY");
3888 gMC->Gspos("I523",19,"I570",0.0,0.0,-23.4597+0.82,0,"ONLY");
3889 gMC->Gspos("I523",20,"I570",0.0,0.0,-27.3697+0.82,0,"ONLY");
3890 gMC->Gspos("I523",21,"I570",0.0,0.0,-31.2797+0.82,0,"ONLY");
3891 gMC->Gspos("I523",22,"I570",0.0,0.0,-35.1897+0.82,0,"ONLY");
3892 gMC->Gspos("I523",23,"I570",0.0,0.0,-39.0997+0.82,0,"ONLY");
3893 gMC->Gspos("I523",24,"I570",0.0,0.0,-43.0097+0.82,0,"ONLY");
3894 gMC->Gspos("I523",25,"I570",0.0,0.0,-46.9197+0.82,0,"ONLY");
3895 gMC->Gspos("I553",2,"I570",-0.005,0.0,-51.2047,idrotm[570],"ONLY");
3896 gMC->Gspos("I566",1,"I569",0.0,-0.03,46.9203,idrotm[532],"ONLY");
3897 gMC->Gspos("I566",2,"I569",0.0,0.03,43.0103,0,"ONLY");
3898 gMC->Gspos("I566",3,"I569",0.0,-0.03,39.1003,idrotm[532],"ONLY");
3899 gMC->Gspos("I566",4,"I569",0.0,0.03,35.1903,0,"ONLY");
3900 gMC->Gspos("I566",5,"I569",0.0,-0.03,31.2803,idrotm[532],"ONLY");
3901 gMC->Gspos("I566",6,"I569",0.0,0.03,27.3703,0,"ONLY");
3902 gMC->Gspos("I566",7,"I569",0.0,-0.03,23.4603,idrotm[532],"ONLY");
3903 gMC->Gspos("I566",8,"I569",0.0,0.03,19.5503,0,"ONLY");
3904 gMC->Gspos("I566",9,"I569",0.0,-0.03,15.6403,idrotm[532],"ONLY");
3905 gMC->Gspos("I566",10,"I569",0.0,0.03,11.7303,0,"ONLY");
3906 gMC->Gspos("I566",11,"I569",0.0,-0.03,7.8203,idrotm[532],"ONLY");
3907 gMC->Gspos("I566",12,"I569",0.0,0.03,3.9103,0,"ONLY");
3908 gMC->Gspos("I566",13,"I569",0.0,-0.03,0.0003,0,"ONLY");
3909 gMC->Gspos("I566",14,"I569",0.0,0.03,-3.9097,0,"ONLY");
3910 gMC->Gspos("I566",15,"I569",0.0,-0.03,-7.8197,idrotm[532],"ONLY");
3911 gMC->Gspos("I566",16,"I569",0.0,0.03,-11.7297,0,"ONLY");
3912 gMC->Gspos("I566",17,"I569",0.0,-0.03,-15.6397,0,"ONLY");
3913 gMC->Gspos("I566",18,"I569",0.0,0.03,-19.5497,0,"ONLY");
3914 gMC->Gspos("I566",19,"I569",0.0,-0.03,-23.4597,idrotm[532],"ONLY");
3915 gMC->Gspos("I566",20,"I569",0.0,0.03,-27.3697,0,"ONLY");
3916 gMC->Gspos("I566",21,"I569",0.0,-0.03,-31.2797,idrotm[532],"ONLY");
3917 gMC->Gspos("I566",22,"I569",0.0,0.03,-35.1897,0,"ONLY");
3918 gMC->Gspos("I566",23,"I569",0.0,-0.03,-39.0997,0,"ONLY");
3919 gMC->Gspos("I566",24,"I569",0.0,0.03,-43.0097,0,"ONLY");
3920 gMC->Gspos("I566",25,"I569",0.0,-0.03,-46.9197,idrotm[532],"ONLY");
3921 gMC->Gspos("I544",1,"I571",0.0101,0.0,43.125,0,"ONLY");
3922 gMC->Gspos("I516",20,"I571",0.0001,0.0,39.1-1.08,0,"ONLY");
3923 gMC->Gspos("I516",19,"I571",0.0001,0.0,35.19-1.08,0,"ONLY");
3924 gMC->Gspos("I516",18,"I571",0.0001,0.0,31.28-1.08,0,"ONLY");
3925 gMC->Gspos("I516",17,"I571",0.0001,0.0,27.37-1.08,0,"ONLY");
3926 gMC->Gspos("I516",16,"I571",0.0001,0.0,23.46-1.08,0,"ONLY");
3927 gMC->Gspos("I516",15,"I571",0.0001,0.0,19.55-1.08,0,"ONLY");
3928 gMC->Gspos("I516",14,"I571",0.0001,0.0,15.64-1.08,0,"ONLY");
3929 gMC->Gspos("I516",13,"I571",0.0001,0.0,11.73-1.08,0,"ONLY");
3930 gMC->Gspos("I516",12,"I571",0.0001,0.0,7.82-1.08,0,"ONLY");
3931 gMC->Gspos("I516",11,"I571",0.0001,0.0,3.91-1.08,0,"ONLY");
3932 gMC->Gspos("I516",10,"I571",0.0001,0.0,0.0-1.08,0,"ONLY");
3933 gMC->Gspos("I516",9,"I571",0.0001,0.0,-3.91-1.08,0,"ONLY");
3934 gMC->Gspos("I516",8,"I571",0.0001,0.0,-7.82-1.08,0,"ONLY");
3935 gMC->Gspos("I516",7,"I571",0.0001,0.0,-11.73-1.08,0,"ONLY");
3936 gMC->Gspos("I516",6,"I571",0.0001,0.0,-15.64-1.08,0,"ONLY");
3937 gMC->Gspos("I516",5,"I571",0.0001,0.0,-19.55-1.08,0,"ONLY");
3938 gMC->Gspos("I516",4,"I571",0.0001,0.0,-23.46-1.08,0,"ONLY");
3939 gMC->Gspos("I516",3,"I571",0.0001,0.0,-27.37-1.08,0,"ONLY");
3940 gMC->Gspos("I516",2,"I571",0.0001,0.0,-31.28-1.08,0,"ONLY");
3941 gMC->Gspos("I516",1,"I571",0.0001,0.0,-35.19-1.08,0,"ONLY");
3942 gMC->Gspos("I544",2,"I571",-0.0099,0.0,-41.375,idrotm[570],"ONLY");
3943 gMC->Gspos("I562",1,"I565",0.0,0.03,41.1546,0,"ONLY");
3944 gMC->Gspos("I562",2,"I565",0.0,-0.03,37.2246,0,"ONLY");
3945 gMC->Gspos("I562",3,"I565",0.0,0.03,33.3146,0,"ONLY");
3946 gMC->Gspos("I562",4,"I565",0.0,-0.03,29.3846,0,"ONLY");
3947 gMC->Gspos("I562",5,"I565",0.0,0.03,25.4746,0,"ONLY");
3948 gMC->Gspos("I562",6,"I565",0.0,-0.03,21.5446,0,"ONLY");
3949 gMC->Gspos("I562",7,"I565",0.0,0.03,17.6346,0,"ONLY");
3950 gMC->Gspos("I562",8,"I565",0.0,-0.03,13.7046,0,"ONLY");
3951 gMC->Gspos("I562",9,"I565",0.0,0.03,9.7946,0,"ONLY");
3952 gMC->Gspos("I562",10,"I565",0.0,-0.03,5.8645,0,"ONLY");
3953 gMC->Gspos("I562",11,"I565",0.0,0.03,1.9546,0,"ONLY");
3954 gMC->Gspos("I562",12,"I565",0.0,-0.03,-1.9754,0,"ONLY");
3955 gMC->Gspos("I562",13,"I565",0.0,0.03,-5.8855,0,"ONLY");
3956 gMC->Gspos("I562",14,"I565",0.0,-0.03,-9.8154,0,"ONLY");
3957 gMC->Gspos("I562",15,"I565",0.0,0.03,-13.7254,0,"ONLY");
3958 gMC->Gspos("I562",16,"I565",0.0,-0.03,-17.6555,0,"ONLY");
3959 gMC->Gspos("I562",17,"I565",0.0,0.03,-21.5655,0,"ONLY");
3960 gMC->Gspos("I562",18,"I565",0.0,-0.03,-25.4954,0,"ONLY");
3961 gMC->Gspos("I562",19,"I565",0.0,0.03,-29.4054,0,"ONLY");
3962 gMC->Gspos("I562",20,"I565",0.0,-0.03,-33.3354,0,"ONLY");
3963 gMC->Gspos("I562",21,"I565",0.0,0.03,-37.2454,0,"ONLY");
3964 gMC->Gspos("I562",22,"I565",0.0,-0.03,-41.1554,0,"ONLY");
3965 gMC->Gspos("I559",1,"I553",2.25,-1.615,0.0,0,"ONLY");
3966 gMC->Gspos("I560",1,"I553",2.25,-1.615,0.0,0,"ONLY");
3967 gMC->Gspos("I560",2,"I553",-2.25,-1.615,0.0,idrotm[573],"ONLY");
3968 gMC->Gspos("I558",1,"I553",-1.7167,-1.52,0.0,idrotm[583],"ONLY");
3969 gMC->Gspos("I557",1,"I553",-1.8533,-1.341,0.0,idrotm[581],"ONLY");
3970 gMC->Gspos("I558",2,"I553",1.8367,-1.3122,0.0,idrotm[575],"ONLY");
3971 gMC->Gspos("I557",2,"I553",1.75,-1.52,0.0,idrotm[583],"ONLY");
3972 gMC->Gspos("I558",3,"I553",-0.12,1.6613,0.0,idrotm[581],"ONLY");
3973 gMC->Gspos("I557",3,"I553",0.1034,1.6901,0.0,idrotm[575],"ONLY");
3974 gMC->Gspos("I556",3,"I553",-1.031,0.2033,-2.203,idrotm[580],"ONLY");
3975 gMC->Gspos("I556",1,"I553",1.0311,0.2033,-0.287,idrotm[576],"ONLY");
3976 gMC->Gspos("I554",1,"I553",0.0,-1.58,0.71,0,"ONLY");
3977 gMC->Gspos("I555",1,"I553",-0.0072,-1.58,-1.2311,idrotm[633],"ONLY");
3978 gMC->Gspos("I556",2,"I553",1.0311,0.2033,-2.203,idrotm[577],"ONLY");
3979 gMC->Gspos("I556",4,"I553",-1.031,0.2033,-0.287,idrotm[579],"ONLY");
3980 gMC->Gspos("I559",2,"I553",-2.25,-1.615,0.0,idrotm[573],"ONLY");
8f8273a4 3981
3982 gMC->Gspos("I561",1,"I553",2.1,-1.615,-0.24,0,"ONLY");
3983 gMC->Gspos("I561",2,"I553",-2.1,-1.615,-0.24,idrotm[573],"ONLY");
3984
108bd0fe 3985 gMC->Gspos("I519",37,"I523",0.0001,-1.79,-0.99,idrotm[586],"ONLY");
3986 gMC->Gspos("I519",36,"I523",-3.2986,-1.79,-1.2943,0,"ONLY");
3987 gMC->Gspos("I519",35,"I523",-3.2986,-1.71,-1.2943,0,"ONLY");
3988 gMC->Gspos("I519",34,"I523",-3.2286,-1.71,-1.2943,0,"ONLY");
3989 gMC->Gspos("I519",33,"I523",-3.2286,-1.79,-1.2943,0,"ONLY");
3990 gMC->Gspos("I519",32,"I523",-3.1586,-1.79,-1.2943,0,"ONLY");
3991 gMC->Gspos("I519",31,"I523",-3.1586,-1.71,-1.2943,0,"ONLY");
3992 gMC->Gspos("I519",30,"I523",-1.3436,-1.71,-1.2943,0,"ONLY");
3993 gMC->Gspos("I519",29,"I523",-1.3436,-1.79,-1.2943,0,"ONLY");
3994 gMC->Gspos("I519",28,"I523",-1.2736,-1.79,-1.2943,0,"ONLY");
3995 gMC->Gspos("I519",27,"I523",-1.2736,-1.71,-1.2943,0,"ONLY");
3996 gMC->Gspos("I519",26,"I523",-1.2036,-1.71,-1.2943,0,"ONLY");
3997 gMC->Gspos("I519",25,"I523",-1.2036,-1.79,-1.2943,0,"ONLY");
3998 gMC->Gspos("I519",24,"I523",-1.0458,-1.79,-1.2943,0,"ONLY");
3999 gMC->Gspos("I519",23,"I523",-1.0458,-1.71,-1.2943,0,"ONLY");
4000 gMC->Gspos("I519",22,"I523",-0.9758,-1.71,-1.2943,0,"ONLY");
4001 gMC->Gspos("I519",21,"I523",-0.9758,-1.79,-1.2943,0,"ONLY");
4002 gMC->Gspos("I519",20,"I523",-0.9058,-1.79,-1.2943,0,"ONLY");
4003 gMC->Gspos("I519",19,"I523",-0.9058,-1.71,-1.2943,0,"ONLY");
4004 gMC->Gspos("I519",18,"I523",0.9092,-1.71,-1.2943,0,"ONLY");
4005 gMC->Gspos("I519",17,"I523",0.9092,-1.79,-1.2943,0,"ONLY");
4006 gMC->Gspos("I519",16,"I523",0.9792,-1.79,-1.2943,0,"ONLY");
4007 gMC->Gspos("I519",15,"I523",0.9792,-1.71,-1.2943,0,"ONLY");
4008 gMC->Gspos("I519",14,"I523",1.0492,-1.71,-1.2943,0,"ONLY");
4009 gMC->Gspos("I519",13,"I523",1.0492,-1.79,-1.2943,0,"ONLY");
4010 gMC->Gspos("I519",12,"I523",1.207,-1.79,-1.2943,0,"ONLY");
4011 gMC->Gspos("I519",11,"I523",1.207,-1.71,-1.2943,0,"ONLY");
4012 gMC->Gspos("I519",10,"I523",1.277,-1.71,-1.2943,0,"ONLY");
4013 gMC->Gspos("I519",9,"I523",1.277,-1.79,-1.2943,0,"ONLY");
4014 gMC->Gspos("I519",8,"I523",1.347,-1.79,-1.2943,0,"ONLY");
4015 gMC->Gspos("I519",7,"I523",1.347,-1.71,-1.2943,0,"ONLY");
4016 gMC->Gspos("I519",6,"I523",3.162,-1.71,-1.2943,0,"ONLY");
4017 gMC->Gspos("I519",5,"I523",3.162,-1.79,-1.2943,0,"ONLY");
4018 gMC->Gspos("I519",4,"I523",3.232,-1.79,-1.2943,0,"ONLY");
4019 gMC->Gspos("I519",3,"I523",3.232,-1.71,-1.2943,0,"ONLY");
4020 gMC->Gspos("I521",12,"I523",-2.8209,-1.7925,-0.982,0,"ONLY");
4021 gMC->Gspos("I521",11,"I523",-1.6895,-1.7925,-0.982,0,"ONLY");
4022 gMC->Gspos("I521",10,"I523",-0.5631,-1.7925,-0.982,0,"ONLY");
4023 gMC->Gspos("I521",9,"I523",0.5633,-1.7925,-0.982,0,"ONLY");
4024 gMC->Gspos("I521",8,"I523",1.6861,-1.7925,-0.982,0,"ONLY");
4025 gMC->Gspos("I521",7,"I523",2.8161,-1.7925,-0.982,0,"ONLY");
4026 gMC->Gspos("I519",2,"I523",3.302,-1.79,-1.2943,0,"ONLY");
4027 gMC->Gspos("I520",3,"I523",0.0001,-1.845,-1.19,0,"ONLY");
4028 gMC->Gspos("I520",2,"I523",-2.2499,-1.845,-1.19,0,"ONLY");
4029 gMC->Gspos("I521",6,"I523",-2.8209,-1.7075,-0.982,0,"ONLY");
4030 gMC->Gspos("I521",5,"I523",-1.6895,-1.7075,-0.982,0,"ONLY");
4031 gMC->Gspos("I521",4,"I523",-0.5631,-1.7075,-0.982,0,"ONLY");
4032 gMC->Gspos("I521",3,"I523",0.5633,-1.7075,-0.982,0,"ONLY");
4033 gMC->Gspos("I521",2,"I523",1.6861,-1.7075,-0.982,0,"ONLY");
4034 gMC->Gspos("I518",1,"I523",0.0001,-1.75,-1.065,0,"ONLY");
4035 gMC->Gspos("I519",1,"I523",3.302,-1.71,-1.2943,0,"ONLY");
4036 gMC->Gspos("I520",1,"I523",2.2501,-1.845,-1.19,0,"ONLY");
4037 gMC->Gspos("I521",1,"I523",2.8161,-1.7075,-0.982,0,"ONLY");
8f8273a4 4038
4039 gMC->Gspos("I522",1,"I523",2.2501,-1.655,-1.3,idrotm[583],"ONLY");
4040 gMC->Gspos("I522",2,"I523",-2.2499,-1.655,-1.3,idrotm[583],"ONLY");
4041
108bd0fe 4042 gMC->Gspos("I542",2,"I523",-2.2499,-1.615,0.0,idrotm[573],"ONLY");
4043 gMC->Gspos("I541",2,"I523",-2.2499,-1.615,0.0,idrotm[573],"ONLY");
4044 gMC->Gspos("I541",1,"I523",2.2501,-1.615,0.0,0,"ONLY");
4045 gMC->Gspos("I542",1,"I523",2.2501,-1.615,0.0,0,"ONLY");
8f8273a4 4046 gMC->Gspos("I543",1,"I523",2.1001,-1.615,0.955,0,"ONLY");
108bd0fe 4047 gMC->Gspos("I543",2,"I523",-2.0999,-1.615,0.955,idrotm[573],"MANY");
4048 gMC->Gspos("I537",2,"I523",1.7501,-1.52,0.0,idrotm[583],"ONLY");
4049 gMC->Gspos("I538",2,"I523",1.8368,-1.3122,0.0,idrotm[575],"ONLY");
4050 gMC->Gspos("I537",3,"I523",0.1035,1.6901,0.0,idrotm[575],"ONLY");
4051 gMC->Gspos("I538",3,"I523",-0.1199,1.6612,0.0,idrotm[581],"ONLY");
4052 gMC->Gspos("I538",1,"I523",-1.7166,-1.52,0.0,idrotm[583],"ONLY");
4053 gMC->Gspos("I537",1,"I523",-1.8532,-1.341,0.0,idrotm[581],"ONLY");
4054 gMC->Gspos("I536",3,"I523",-1.031,0.2033,-1.008,idrotm[580],"ONLY");
4055 gMC->Gspos("I536",4,"I523",-1.031,0.2033,0.908,idrotm[579],"ONLY");
4056 gMC->Gspos("I535",1,"I523",-0.0072,-1.58,-0.0361,idrotm[633],"ONLY");
4057 gMC->Gspos("I536",2,"I523",1.0312,0.2033,-1.008,idrotm[577],"ONLY");
4058 gMC->Gspos("I536",1,"I523",1.0312,0.2033,0.908,idrotm[576],"ONLY");
4059 gMC->Gspos("I534",1,"I523",0.0001,-1.58,1.905,0,"ONLY");
4060 gMC->Gspos("I540",1,"I523",0.0001,-1.785,1.905,idrotm[571],"ONLY");
4061 gMC->Gspos("I539",1,"I523",1.8001,-1.75,-0.195,idrotm[571],"ONLY");
4062 gMC->Gspos("I539",2,"I523",-1.7999,-1.75,-0.195,idrotm[572],"ONLY");
4063 gMC->Gspos("ITS6",1,"I566",0.0,0.0,0.0,0,"ONLY");
4064 gMC->Gspos("I550",1,"I544",2.25,-1.615,0.0,0,"ONLY");
4065 gMC->Gspos("I551",1,"I544",2.25,-1.615,0.0,0,"ONLY");
4066 gMC->Gspos("I551",2,"I544",-2.25,-1.615,0.0,idrotm[573],"ONLY");
4067 gMC->Gspos("I550",2,"I544",-2.25,-1.615,0.0,idrotm[573],"ONLY");
4068 gMC->Gspos("I549",1,"I544",1.7167,-1.52,0.0,idrotm[583],"ONLY");
4069 gMC->Gspos("I548",1,"I544",1.8533,-1.341,0.0,idrotm[575],"ONLY");
4070 gMC->Gspos("I547",1,"I544",1.0311,0.2033,-0.287,idrotm[576],"ONLY");
4071 gMC->Gspos("I545",1,"I544",0.0,-1.58,0.71,0,"ONLY");
4072 gMC->Gspos("I547",2,"I544",1.0311,0.2033,-2.203,idrotm[577],"ONLY");
4073 gMC->Gspos("I546",1,"I544",-0.0073,-1.58,-1.2311,idrotm[633],"ONLY");
4074 gMC->Gspos("I547",4,"I544",-1.0311,0.2033,-0.287,idrotm[579],"ONLY");
4075 gMC->Gspos("I547",3,"I544",-1.0311,0.2033,-2.203,idrotm[580],"ONLY");
4076 gMC->Gspos("I548",2,"I544",-0.1033,1.6901,0.0,idrotm[581],"O]NLY");
4077 gMC->Gspos("I549",2,"I544",0.12,1.6613,0.0,idrotm[575],"ONLY");
4078 gMC->Gspos("I549",3,"I544",-1.8367,-1.3122,0.0,idrotm[581],"ONLY");
4079 gMC->Gspos("I548",3,"I544",-1.75,-1.52,0.0,idrotm[583],"ONLY");
8f8273a4 4080
4081 gMC->Gspos("I552",1,"I544",2.1,-1.615,-0.24,0,"ONLY");
4082 gMC->Gspos("I552",2,"I544",-2.1,-1.615,-0.24,idrotm[573],"ONLY");
4083
108bd0fe 4084 gMC->Gspos("I515",12,"I516",-1.6896,-1.7075,-0.9822,0,"ONLY");
4085 gMC->Gspos("I515",11,"I516",-1.6896,-1.7925,-0.9822,0,"ONLY");
4086 gMC->Gspos("I513",37,"I516",0.0,-1.79,-1.035,idrotm[586],"ONLY");
4087 gMC->Gspos("I513",1,"I516",-3.2987,-1.71,-1.2943,0,"ONLY");
4088 gMC->Gspos("I515",1,"I516",-2.816,-1.7075,-0.9822,0,"ONLY");
4089 gMC->Gspos("I514",1,"I516",-2.25,-1.845,-1.19,0,"ONLY");
4090 gMC->Gspos("I514",2,"I516",0.0,-1.845,-1.19,0,"ONLY");
4091 gMC->Gspos("I514",3,"I516",2.25,-1.845,-1.19,0,"ONLY");
4092 gMC->Gspos("I515",2,"I516",-2.816,-1.7925,-0.9822,0,"ONLY");
4093 gMC->Gspos("I513",2,"I516",-3.2987,-1.79,-1.2943,0,"ONLY");
4094 gMC->Gspos("I515",3,"I516",-0.5632,-1.7075,-0.9822,0,"ONLY");
4095 gMC->Gspos("I515",4,"I516",-0.5632,-1.7925,-0.9822,0,"ONLY");
4096 gMC->Gspos("I515",5,"I516",0.5632,-1.7925,-0.9822,0,"ONLY");
4097 gMC->Gspos("I515",6,"I516",0.5632,-1.7075,-0.9822,0,"ONLY");
4098 gMC->Gspos("I515",7,"I516",1.6896,-1.7075,-0.9822,0,"ONLY");
4099 gMC->Gspos("I515",8,"I516",1.6896,-1.7925,-0.9822,0,"ONLY");
4100 gMC->Gspos("I515",9,"I516",2.816,-1.7925,-0.9822,0,"ONLY");
4101 gMC->Gspos("I515",10,"I516",2.816,-1.7075,-0.9822,0,"ONLY");
4102 gMC->Gspos("I513",3,"I516",-3.2287,-1.79,-1.2943,0,"ONLY");
4103 gMC->Gspos("I513",4,"I516",-3.2287,-1.71,-1.2943,0,"ONLY");
4104 gMC->Gspos("I513",5,"I516",-3.1587,-1.71,-1.2943,0,"ONLY");
4105 gMC->Gspos("I513",6,"I516",-3.1587,-1.79,-1.2943,0,"ONLY");
4106 gMC->Gspos("I513",7,"I516",-1.3437,-1.79,-1.2943,0,"ONLY");
4107 gMC->Gspos("I513",8,"I516",-1.3437,-1.71,-1.2943,0,"ONLY");
4108 gMC->Gspos("I513",9,"I516",-1.2737,-1.71,-1.2943,0,"ONLY");
4109 gMC->Gspos("I513",10,"I516",-1.2737,-1.79,-1.2943,0,"ONLY");
4110 gMC->Gspos("I513",11,"I516",-1.2037,-1.79,-1.2943,0,"ONLY");
4111 gMC->Gspos("I513",12,"I516",-1.2037,-1.71,-1.2943,0,"ONLY");
4112 gMC->Gspos("I513",13,"I516",-1.046,-1.71,-1.2943,0,"ONLY");
4113 gMC->Gspos("I513",14,"I516",-1.046,-1.79,-1.2943,0,"ONLY");
4114 gMC->Gspos("I513",15,"I516",-0.976,-1.79,-1.2943,0,"ONLY");
4115 gMC->Gspos("I513",16,"I516",-0.976,-1.71,-1.2943,0,"ONLY");
4116 gMC->Gspos("I513",17,"I516",-0.906,-1.71,-1.2943,0,"ONLY");
4117 gMC->Gspos("I513",18,"I516",-0.906,-1.79,-1.2943,0,"ONLY");
4118 gMC->Gspos("I513",19,"I516",0.9091,-1.79,-1.2943,0,"ONLY");
4119 gMC->Gspos("I513",20,"I516",0.9091,-1.71,-1.2943,0,"ONLY");
4120 gMC->Gspos("I513",21,"I516",0.9791,-1.71,-1.2943,0,"ONLY");
4121 gMC->Gspos("I513",22,"I516",0.9791,-1.79,-1.2943,0,"ONLY");
4122 gMC->Gspos("I513",23,"I516",1.0491,-1.79,-1.2943,0,"ONLY");
4123 gMC->Gspos("I513",24,"I516",1.0491,-1.71,-1.2943,0,"ONLY");
4124 gMC->Gspos("I513",25,"I516",1.2068,-1.71,-1.2943,0,"ONLY");
4125 gMC->Gspos("I513",26,"I516",1.2068,-1.79,-1.2943,0,"ONLY");
4126 gMC->Gspos("I513",27,"I516",1.2768,-1.79,-1.2943,0,"ONLY");
4127 gMC->Gspos("I513",28,"I516",1.2768,-1.71,-1.2943,0,"ONLY");
4128 gMC->Gspos("I513",29,"I516",1.3469,-1.71,-1.2943,0,"ONLY");
4129 gMC->Gspos("I513",30,"I516",1.3469,-1.79,-1.2943,0,"ONLY");
4130 gMC->Gspos("I513",31,"I516",3.1619,-1.79,-1.2943,0,"ONLY");
4131 gMC->Gspos("I513",32,"I516",3.1619,-1.71,-1.2943,0,"ONLY");
4132 gMC->Gspos("I513",33,"I516",3.2319,-1.71,-1.2943,0,"ONLY");
4133 gMC->Gspos("I513",34,"I516",3.2319,-1.79,-1.2943,0,"ONLY");
4134 gMC->Gspos("I513",35,"I516",3.3019,-1.79,-1.2943,0,"ONLY");
4135 gMC->Gspos("I513",36,"I516",3.3019,-1.71,-1.2943,0,"ONLY");
4136 gMC->Gspos("I512",1,"I516",0.0,-1.75,-1.065,0,"ONLY");
4137 gMC->Gspos("I528",1,"I516",1.7167,-1.52,0.0,idrotm[583],"ONLY");
4138 gMC->Gspos("I527",1,"I516",1.8534,-1.341,0.0,idrotm[575],"ONLY");
4139 gMC->Gspos("I528",2,"I516",0.12,1.6613,0.0,idrotm[575],"ONLY");
4140 gMC->Gspos("I527",2,"I516",-0.1033,1.6901,0.0,idrotm[581],"ONLY");
4141 gMC->Gspos("I527",3,"I516",-1.75,-1.52,0.0,idrotm[583],"ONLY");
4142 gMC->Gspos("I528",3,"I516",-1.8367,-1.3122,0.0,idrotm[581],"ONLY");
4143 gMC->Gspos("I526",2,"I516",1.0311,0.2033,-1.008,idrotm[577],"ONLY");
4144 gMC->Gspos("I525",1,"I516",-0.0073,-1.58,-0.0361,idrotm[633],"ONLY");
4145 gMC->Gspos("I524",1,"I516",0.0,-1.58,1.905,0,"ONLY");
4146 gMC->Gspos("I526",1,"I516",1.0311,0.2033,0.908,idrotm[576],"ONLY");
4147 gMC->Gspos("I526",3,"I516",-1.0311,0.2033,0.908,idrotm[579],"ONLY");
4148 gMC->Gspos("I526",4,"I516",-1.0311,0.2033,-1.008,idrotm[580],"ONLY");
4149 gMC->Gspos("I529",1,"I516",1.8,-1.75,-0.195,idrotm[571],"ONLY");
4150 gMC->Gspos("I530",1,"I516",0.0,-1.785,1.905,idrotm[571],"ONLY");
4151 gMC->Gspos("I529",2,"I516",-1.8,-1.75,-0.195,idrotm[572],"ONLY");
8f8273a4 4152
4153 gMC->Gspos("I517",1,"I516",2.25,-1.655,-1.3,idrotm[583],"ONLY");
4154 gMC->Gspos("I517",2,"I516",-2.25,-1.655,-1.3,idrotm[584],"ONLY");
4155
108bd0fe 4156 gMC->Gspos("I531",2,"I516",-2.25,-1.615,0.0,idrotm[573],"ONLY");
4157 gMC->Gspos("I531",1,"I516",2.25,-1.615,0.0,0,"ONLY");
4158 gMC->Gspos("I532",1,"I516",2.25,-1.615,0.0,0,"ONLY");
4159 gMC->Gspos("I532",2,"I516",-2.25,-1.615,0.0,idrotm[573],"ONLY");
8f8273a4 4160 gMC->Gspos("I533",1,"I516",2.1,-1.615,0.955,0,"ONLY");
108bd0fe 4161 gMC->Gspos("I533",2,"I516",-2.1,-1.615,0.955,idrotm[573],"MANY");
4162 gMC->Gspos("ITS5",1,"I562",0.0,0.0,0.0,0,"ONLY");
4163 }
4164
4165 // --- Place volumes of shield between SPD and SDD
4166
4167 if (! AliITSInitGeometry::SPDshieldIsTGeoNative()) {
4168 gMC->Gspos("IC01",1,"ITSD",0.0,0.0,0.0,0,"ONLY");
4169 gMC->Gspos("IC02",1,"ITSD",0.0,0.0,25.+8.75,0,"ONLY");
4170 gMC->Gspos("IC02",2,"ITSD",0.0,0.0,-25.-8.75,idrotm[200],"ONLY");
4171 //gMC->Gspos("IC03",1,"ITSD",0.0,0.0,25.+17.5+7.875,0,"ONLY");
4172 //gMC->Gspos("IC03",2,"ITSD",0.0,0.0,-25.-17.5-7.875,idrotm[200],"ONLY");
4173 }
4174
4175 // --- Place volumes of cylinders between SPD and SDD and SDD and SSD
4176 if (! AliITSInitGeometry::SDDconeIsTGeoNative()) {
4177 gMC->Gspos("ICY1",1,"IS02",0.0,0.0,0.,0,"ONLY");
4178 gMC->Gspos("ICY2",1,"IS01",0.0,0.0,0.,0,"ONLY");
4179
4180 // --- Place volumes of SDD cone ----------------------------------
4181
8f8273a4 4182 gMC->Gspos("I093",1,"IS02",0.0,0.0,0.0,0,"ONLY");
4183 gMC->Gspos("I093",2,"IS02",0.0,0.0,0.0,idrotm[856],"ONLY");
4184 gMC->Gspos("I099",4,"IS02",0.0,0.0,0.0,idrotm[857],"ONLY");
4185 gMC->Gspos("I099",3,"IS02",0.0,0.0,0.0,idrotm[858],"ONLY");
4186 gMC->Gspos("I099",5,"IS02",0.0,0.0,0.0,idrotm[859],"ONLY");
4187 gMC->Gspos("I099",6,"IS02",0.0,0.0,0.0,idrotm[860],"ONLY");
4188 gMC->Gspos("I099",7,"IS02",0.0,0.0,0.0,idrotm[861],"ONLY");
4189 gMC->Gspos("I099",2,"IS02",0.0,0.0,0.0,idrotm[862],"ONLY");
4190 gMC->Gspos("I200",4,"IS02",0.0,0.0,0.0,idrotm[863],"ONLY");
4191 gMC->Gspos("I200",3,"IS02",0.0,0.0,0.0,idrotm[864],"ONLY");
4192 gMC->Gspos("I200",2,"IS02",0.0,0.0,0.0,idrotm[865],"ONLY");
4193 gMC->Gspos("I200",13,"IS02",0.0,0.0,0.0,idrotm[867],"ONLY");
4194 gMC->Gspos("I200",12,"IS02",0.0,0.0,0.0,idrotm[869],"ONLY");
4195 gMC->Gspos("I200",11,"IS02",0.0,0.0,0.0,idrotm[870],"ONLY");
4196 gMC->Gspos("I200",10,"IS02",0.0,0.0,0.0,idrotm[871],"ONLY");
4197 gMC->Gspos("I200",9,"IS02",0.0,0.0,0.0,idrotm[872],"ONLY");
4198 gMC->Gspos("I200",8,"IS02",0.0,0.0,0.0,idrotm[873],"ONLY");
4199 gMC->Gspos("I200",7,"IS02",0.0,0.0,0.0,idrotm[874],"ONLY");
4200 gMC->Gspos("I200",6,"IS02",0.0,0.0,0.0,idrotm[875],"ONLY");
4201 gMC->Gspos("I200",5,"IS02",0.0,0.0,0.0,idrotm[876],"ONLY");
108bd0fe 4202 gMC->Gspos("I090",2,"IS02",0.0,0.0,-39.4,0,"ONLY");
4203 gMC->Gspos("I090",1,"IS02",0.0,0.0,39.4,idrotm[856],"ONLY");
4204 gMC->Gspos("I099",9,"IS02",0.0,0.0,0.0,idrotm[877],"ONLY");
4205 gMC->Gspos("I099",8,"IS02",0.0,0.0,0.0,idrotm[879],"ONLY");
4206 gMC->Gspos("I099",1,"IS02",0.0,0.0,0.0,idrotm[880],"ONLY");
4207 gMC->Gspos("I099",12,"IS02",0.0,0.0,0.0,idrotm[881],"ONLY");
4208 gMC->Gspos("I099",11,"IS02",0.0,0.0,0.0,idrotm[851],"ONLY");
4209 gMC->Gspos("I099",10,"IS02",0.0,0.0,0.0,idrotm[882],"ONLY");
4210 gMC->Gspos("I200",23,"IS02",0.0,0.0,0.0,idrotm[898],"ONLY");
4211 gMC->Gspos("I200",24,"IS02",0.0,0.0,0.0,idrotm[883],"ONLY");
4212 gMC->Gspos("I200",1,"IS02",0.0,0.0,0.0,idrotm[884],"ONLY");
4213 gMC->Gspos("I200",14,"IS02",0.0,0.0,0.0,idrotm[885],"ONLY");
4214 gMC->Gspos("I200",15,"IS02",0.0,0.0,0.0,idrotm[887],"ONLY");
4215 gMC->Gspos("I200",16,"IS02",0.0,0.0,0.0,idrotm[888],"ONLY");
4216 gMC->Gspos("I200",17,"IS02",0.0,0.0,0.0,idrotm[889],"ONLY");
4217 gMC->Gspos("I200",18,"IS02",0.0,0.0,0.0,idrotm[890],"ONLY");
4218 gMC->Gspos("I200",22,"IS02",0.0,0.0,0.0,idrotm[891],"ONLY");
4219 gMC->Gspos("I200",21,"IS02",0.0,0.0,0.0,idrotm[892],"ONLY");
4220 gMC->Gspos("I200",20,"IS02",0.0,0.0,0.0,idrotm[868],"ONLY");
4221 gMC->Gspos("I200",19,"IS02",0.0,0.0,0.0,idrotm[893],"ONLY");
8f8273a4 4222
4223 gMC->Gspos("I098",1,"IS02",0.0,0.0,33.6,0,"ONLY");
4224 gMC->Gspos("I097",1,"IS02",0.0,0.0,26.6,0,"ONLY");
4225 gMC->Gspos("I097",2,"IS02",0.0,0.0,-26.6,idrotm[856],"ONLY");
4226 gMC->Gspos("I098",2,"IS02",0.0,0.0,-33.6,idrotm[856],"ONLY");
4227
108bd0fe 4228 gMC->Gspos("I202",1,"IS02",12.1,0.0,33.84,0,"ONLY");
4229 gMC->Gspos("I202",6,"IS02",-6.05,-10.4789,33.84,idrotm[930],"ONLY");
4230 gMC->Gspos("I202",5,"IS02",-6.05,10.4789,33.84,idrotm[929],"ONLY");
4231 gMC->Gspos("I202",2,"IS02",12.1,0.0,-33.84,idrotm[856],"ONLY");
4232 gMC->Gspos("I202",3,"IS02",-6.05,10.4789,-33.84,idrotm[932],"ONLY");
4233 gMC->Gspos("I202",4,"IS02",-6.05,-10.4789,-33.84,idrotm[934],"ONLY");
4234 gMC->Gspos("I203",12,"IS02",21.8453,0.0,-42.24,idrotm[856],"ONLY");
4235 gMC->Gspos("I203",11,"IS02",10.9227,-18.9186,-42.24,idrotm[935],"ONLY");
4236 gMC->Gspos("I203",10,"IS02",10.9227,-18.9186,42.24,idrotm[846],"ONLY");
4237 gMC->Gspos("I203",9,"IS02",-10.9227,-18.9186,-42.24,idrotm[934],"ONLY");
4238 gMC->Gspos("I203",8,"IS02",-10.9227,-18.9186,42.24,idrotm[930],"ONLY");
4239 gMC->Gspos("I203",7,"IS02",-21.8453,0.0,-42.24,idrotm[933],"ONLY");
4240 gMC->Gspos("I203",6,"IS02",-21.8453,0.0,42.24,idrotm[878],"ONLY");
4241 gMC->Gspos("I203",5,"IS02",-10.9227,18.9186,-42.24,idrotm[932],"ONLY");
4242 gMC->Gspos("I203",4,"IS02",-10.9227,18.9186,42.24,idrotm[929],"ONLY");
4243 gMC->Gspos("I203",3,"IS02",10.9227,18.9186,-42.24,idrotm[931],"ONLY");
4244 gMC->Gspos("I203",2,"IS02",10.9227,18.9186,42.24,idrotm[853],"ONLY");
4245 gMC->Gspos("I203",1,"IS02",21.8453,0.0,42.24,0,"ONLY");
4246 gMC->Gspos("I095",1,"I098",0.0,0.0,0.0,0,"ONLY");
8f8273a4 4247
4248 //I096 and I098 are real volume that are really overlapping, can not use ONLY
108bd0fe 4249 gMC->Gspos("I096",23,"I098",22.77,0.0,0.0,idrotm[894],"MANY");
4250 gMC->Gspos("I096",14,"I098",22.3754,6.57,0.0,idrotm[895],"MANY");
4251 gMC->Gspos("I096",3,"I098",19.1553,12.3104,0.0,idrotm[896],"MANY");
4252 gMC->Gspos("I096",16,"I098",15.2714,17.6241,0.0,idrotm[897],"MANY");
4253 gMC->Gspos("I096",5,"I098",9.459,20.7123,0.0,idrotm[899],"MANY");
4254 gMC->Gspos("I096",18,"I098",3.3188,23.0826,0.0,idrotm[900],"MANY");
4255 gMC->Gspos("I096",7,"I098",-3.2405,22.5382,0.0,idrotm[901],"MANY");
4256 gMC->Gspos("I096",20,"I098",-9.6875,21.2126,0.0,idrotm[902],"MANY");
4257 gMC->Gspos("I096",9,"I098",-14.9112,17.2084,0.0,idrotm[903],"MANY");
4258 gMC->Gspos("I096",22,"I098",-19.618,12.6077,0.0,idrotm[904],"MANY");
4259 gMC->Gspos("I096",11,"I098",-21.8477,6.4151,0.0,idrotm[905],"MANY");
4260 gMC->Gspos("I096",24,"I098",-23.32,0.0,0.0,idrotm[906],"MANY");
4261 gMC->Gspos("I096",13,"I098",-21.8477,-6.4151,0.0,idrotm[907],"MANY");
4262 gMC->Gspos("I096",4,"I098",-19.618,-12.6077,0.0,idrotm[908],"MANY");
4263 gMC->Gspos("I096",15,"I098",-14.9112,-17.2084,0.0,idrotm[909],"MANY");
4264 gMC->Gspos("I096",6,"I098",-9.6875,-21.2126,0.0,idrotm[910],"MANY");
4265 gMC->Gspos("I096",17,"I098",-3.2405,-22.5382,0.0,idrotm[911],"MANY");
4266 gMC->Gspos("I096",8,"I098",3.3188,-23.0826,0.0,idrotm[912],"MANY");
4267 gMC->Gspos("I096",19,"I098",9.459,-20.7123,0.0,idrotm[913],"MANY");
4268 gMC->Gspos("I096",10,"I098",15.2714,-17.6241,0.0,idrotm[914],"MANY");
4269 gMC->Gspos("I096",21,"I098",19.1553,-12.3104,0.0,idrotm[915],"MANY");
4270 gMC->Gspos("I096",12,"I098",22.3754,-6.57,0.0,idrotm[916],"MANY");
8f8273a4 4271
108bd0fe 4272 gMC->Gspos("I094",1,"I097",0.0,0.0,0.0,0,"ONLY");
8f8273a4 4273
4274 // idem
108bd0fe 4275 gMC->Gspos("I096",1,"I097",13.87,0.0,0.0,idrotm[894],"MANY");
4276 gMC->Gspos("I096",32,"I097",13.037,6.2783,0.0,idrotm[917],"MANY");
4277 gMC->Gspos("I096",25,"I097",8.6478,10.844,0.0,idrotm[918],"MANY");
4278 gMC->Gspos("I096",34,"I097",3.2199,14.1072,0.0,idrotm[919],"MANY");
4279 gMC->Gspos("I096",27,"I097",-3.0864,13.5223,0.0,idrotm[920],"MANY");
4280 gMC->Gspos("I096",36,"I097",-9.0219,11.3131,0.0,idrotm[921],"MANY");
4281 gMC->Gspos("I096",29,"I097",-12.4964,6.018,0.0,idrotm[922],"MANY");
4282 gMC->Gspos("I096",2,"I097",-14.47,0.0,0.0,idrotm[906],"MANY");
4283 gMC->Gspos("I096",31,"I097",-12.4964,-6.018,0.0,idrotm[923],"MANY");
4284 gMC->Gspos("I096",26,"I097",-9.0219,-11.3131,0.0,idrotm[924],"MANY");
4285 gMC->Gspos("I096",33,"I097",-3.0864,-13.5223,0.0,idrotm[925],"MANY");
4286 gMC->Gspos("I096",28,"I097",3.2199,-14.1072,0.0,idrotm[926],"MANY");
4287 gMC->Gspos("I096",35,"I097",8.6478,-10.844,0.0,idrotm[927],"MANY");
4288 gMC->Gspos("I096",30,"I097",13.037,-6.2783,0.0,idrotm[928],"MANY");
4289 }
4290
4291 // --- Place volumes of SSD cone ----------------------------------
4292
4293 if (! AliITSInitGeometry::SSDconeIsTGeoNative()) {
4294
8f8273a4 4295 gMC->Gspos("I212",2,"IS01",0.0,0.0,0.0,idrotm[701],"ONLY");
4296 gMC->Gspos("I212",1,"IS01",0.0,0.0,0.0,0,"ONLY");
108bd0fe 4297 gMC->Gspos("I211",1,"IS01",0.0,0.0,-56.5,0,"ONLY");
bf210566 4298
108bd0fe 4299 gMC->Gspos("I217",1,"IS01",0.0,0.0,-44.4,0,"ONLY"); // this will change after PPR to be symmetric
bf210566 4300 // Unfortunately the following piece is not compatible with new SSD
4301 if (! AliITSInitGeometry::SSDIsTGeoNative())
4302 gMC->Gspos("I219",1,"IS01",0.0,0.0,-50.25,0,"ONLY"); // this will change after PPR to be symmetric
108bd0fe 4303 gMC->Gspos("I211",2,"IS01",0.0,0.0,56.5,idrotm[701],"ONLY");
bf210566 4304
4305 // Unfortunately the following piece is not compatible with new SSD
4306 if (! AliITSInitGeometry::SSDIsTGeoNative())
4307 gMC->Gspos("I219",2,"IS01",0.0,0.0,51.65,idrotm[701],"ONLY"); // this will change after PPR to be symmetric
108bd0fe 4308 gMC->Gspos("I217",2,"IS01",0.0,0.0,45.8,idrotm[701],"ONLY"); // this will change after PPR to be symmetric
4309 gMC->Gspos("I214",2,"IS01",0.0,0.0,67.25,idrotm[701],"ONLY");
4310 gMC->Gspos("I213",2,"IS01",0.0,0.0,62.25,idrotm[701],"ONLY");
4311 gMC->Gspos("I213",1,"IS01",0.0,0.0,-62.25,0,"ONLY");
8f8273a4 4312 gMC->Gspos("I214",1,"IS01",0.0,0.0,-67.25,0,"ONLY");
4313
4314 gMC->Gspos("I215",19,"IS01",0.0,0.0,0.0,idrotm[702],"ONLY");
4315 gMC->Gspos("I215",21,"IS01",0.0,0.0,0.0,idrotm[703],"ONLY");
4316 gMC->Gspos("I215",23,"IS01",0.0,0.0,0.0,idrotm[704],"ONLY");
4317 gMC->Gspos("I215",24,"IS01",0.0,0.0,0.0,idrotm[705],"ONLY");
4318 gMC->Gspos("I215",3,"IS01",0.0,0.0,0.0,idrotm[706],"ONLY");
4319 gMC->Gspos("I215",5,"IS01",0.0,0.0,0.0,idrotm[707],"ONLY");
4320 gMC->Gspos("I215",7,"IS01",0.0,0.0,0.0,idrotm[708],"ONLY");
4321 gMC->Gspos("I215",9,"IS01",0.0,0.0,0.0,idrotm[709],"ONLY");
4322 gMC->Gspos("I215",11,"IS01",0.0,0.0,0.0,idrotm[710],"ONLY");
4323 gMC->Gspos("I215",13,"IS01",0.0,0.0,0.0,idrotm[711],"ONLY");
4324 gMC->Gspos("I215",15,"IS01",0.0,0.0,0.0,idrotm[712],"ONLY");
4325 gMC->Gspos("I215",17,"IS01",0.0,0.0,0.0,idrotm[713],"ONLY");
bf210566 4326
4327 // Unfortunately the following piece is not compatible with new SSD
4328 if (! AliITSInitGeometry::SSDIsTGeoNative()) {
4329 gMC->Gspos("I216",9,"IS01",0.0,0.0,45.5,idrotm[714],"ONLY");
4330 gMC->Gspos("I216",11,"IS01",0.0,0.0,45.5,idrotm[715],"ONLY");
4331 gMC->Gspos("I216",12,"IS01",0.0,0.0,45.5,idrotm[716],"ONLY");
4332 gMC->Gspos("I216",3,"IS01",0.0,0.0,45.5,idrotm[717],"ONLY");
4333 gMC->Gspos("I216",5,"IS01",0.0,0.0,45.5,idrotm[718],"ONLY");
4334 gMC->Gspos("I216",7,"IS01",0.0,0.0,45.5,idrotm[719],"ONLY");
4335 gMC->Gspos("I216",10,"IS01",0.0,0.0,-44,idrotm[720],"ONLY");
4336 gMC->Gspos("I216",1,"IS01",0.0,0.0,-44,idrotm[721],"ONLY");
4337 gMC->Gspos("I216",2,"IS01",0.0,0.0,-44,idrotm[722],"ONLY");
4338 gMC->Gspos("I216",4,"IS01",0.0,0.0,-44,idrotm[723],"ONLY");
4339 gMC->Gspos("I216",6,"IS01",0.0,0.0,-44,idrotm[724],"ONLY");
4340 gMC->Gspos("I216",8,"IS01",0.0,0.0,-44,idrotm[725],"ONLY");
4341 }
4342
8f8273a4 4343 gMC->Gspos("I215",1,"IS01",0.0,0.0,0.0,idrotm[726],"ONLY");
4344 gMC->Gspos("I215",2,"IS01",0.0,0.0,0.0,idrotm[727],"ONLY");
4345 gMC->Gspos("I215",4,"IS01",0.0,0.0,0.0,idrotm[728],"ONLY");
4346 gMC->Gspos("I215",6,"IS01",0.0,0.0,0.0,idrotm[729],"ONLY");
4347 gMC->Gspos("I215",8,"IS01",0.0,0.0,0.0,idrotm[733],"ONLY");
4348 gMC->Gspos("I215",10,"IS01",0.0,0.0,0.0,idrotm[730],"ONLY");
4349 gMC->Gspos("I215",12,"IS01",0.0,0.0,0.0,idrotm[731],"ONLY");
4350 gMC->Gspos("I215",14,"IS01",0.0,0.0,0.0,idrotm[768],"ONLY");
4351 gMC->Gspos("I215",16,"IS01",0.0,0.0,0.0,idrotm[732],"ONLY");
4352 gMC->Gspos("I215",18,"IS01",0.0,0.0,0.0,idrotm[734],"ONLY");
4353 gMC->Gspos("I215",20,"IS01",0.0,0.0,0.0,idrotm[798],"ONLY");
4354 gMC->Gspos("I215",22,"IS01",0.0,0.0,0.0,idrotm[735],"ONLY");
108bd0fe 4355 }
4356
4357 // --- Place subdetectors' mother volumes and supports' mother volumes
4358 // into ITS mother volume ITSD
4359
4360 if (! AliITSInitGeometry::SPDIsTGeoNative())
bf210566 4361 gMC->Gspos("IT12",1,"ITSD",0.0,0.0,0.0,0,"ONLY"); // SPD mother volume
108bd0fe 4362 if (! AliITSInitGeometry::SDDIsTGeoNative())
8f8273a4 4363 gMC->Gspos("IT34",1,"ITSD",0.0,0.0,0.0,0,"ONLY"); // SDD mother volume
108bd0fe 4364 if (! AliITSInitGeometry::SSDIsTGeoNative())
8f8273a4 4365 gMC->Gspos("IT56",1,"ITSD",0.0,0.0,0.0,0,"ONLY"); // SSD mother volume
108bd0fe 4366 if (! AliITSInitGeometry::SDDconeIsTGeoNative())
bf210566 4367 gMC->Gspos("IS02",1,"ITSD",0.0,0.0,0.0,0,"ONLY"); // SDD cones/supports
108bd0fe 4368 if (! AliITSInitGeometry::SSDconeIsTGeoNative())
bf210566 4369 gMC->Gspos("IS01",1,"ITSD",0.0,0.0,0.0,0,"ONLY"); // SSD cones/supports
108bd0fe 4370
4371
4372 // **************************** SERVICES *********************************
4373
4374
4375 // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
4376 // UPPER PART
4377
4378 if (! AliITSInitGeometry::ServicesAreTGeoNative()) {
4379
4380 dgh[0] = 46.;
4381 dgh[1] = 46.+1.0;
4382 dgh[2] = 9.5;
4383 dgh[3] = 12.;
4384 dgh[4] = 168.;
4385
4386 gMC->Gsvolu("I1CU", "TUBS", idtmed[213], dgh, 5);
4387 gMC->Gspos("I1CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
4388 gMC->Gspos("I1CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
4389
4390 // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
4391 // LOWER PART
4392
4393 dgh[0] = 46.;
4394 dgh[1] = 46.+1.0;
4395 dgh[2] = 9.5;
4396 dgh[3] = 192.;
4397 dgh[4] = 348.;
4398
4399 gMC->Gsvolu("I2CU", "TUBS", idtmed[213], dgh, 5);
4400 gMC->Gspos("I2CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
4401 gMC->Gspos("I2CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
4402
4403
4404 // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
4405 // UPPER PART
4406
4407 dgh[0] = 46.+1.0;
4408 dgh[1] = 46.+1.0+1.5;
4409 dgh[2] = 9.5;
4410 dgh[3] = 12.;
4411 dgh[4] = 168.;
4412
4413 gMC->Gsvolu("I1CC", "TUBS", idtmed[225], dgh, 5);
4414 gMC->Gspos("I1CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
4415 gMC->Gspos("I1CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
4416
4417 // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
4418 // LOWER PART
4419
4420 dgh[0] = 46.+1.0;
4421 dgh[1] = 46.+1.0+1.5;
4422 dgh[2] = 9.5;
4423 dgh[3] = 192.;
4424 dgh[4] = 348.;
4425
4426 gMC->Gsvolu("I2CC", "TUBS", idtmed[225], dgh, 5);
4427 gMC->Gspos("I2CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
4428 gMC->Gspos("I2CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
4429
4430
4431 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
4432 // UPPER PART
4433
4434 dgh[0] = 46.;
4435 dgh[1] = 56.;
4436 dgh[2] = 2.25;
4437 dgh[3] = 12.;
4438 dgh[4] = 168.;
4439
4440 gMC->Gsvolu("IPA1", "TUBS", idtmed[210], dgh, 5);
4441 gMC->Gspos("IPA1", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");
4442 gMC->Gspos("IPA1", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY");
4443
4444 // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
4445 // LOWER PART
4446
4447 dgh[0] = 46.;
4448 dgh[1] = 56.;
4449 dgh[2] = 2.25;
4450 dgh[3] = 192.;
4451 dgh[4] = 348.;
4452
4453 gMC->Gsvolu("IPA2", "TUBS", idtmed[210], dgh, 5);
4454 gMC->Gspos("IPA2", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");
4455 gMC->Gspos("IPA2", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY");
4456
4457
4458 // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - COPPER PART
4459 // UPPER PART
4460
4461 dgh[0] = (ztpc-97.5)/2.;
4462 dgh[1] = 46.2;
4463 dgh[2] = 46.2+1.0;
4464 dgh[3] = 62.3;
4465 dgh[4] = 62.3+1.0;
4466 dgh[5] = 12.;
4467 dgh[6] = 168.;
4468 gMC->Gsvolu("ICU1", "CONS", idtmed[213], dgh, 7);
4469 gMC->Gspos("ICU1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
4470
4471 // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - COPPER PART
4472 // LOWER PART
4473
4474 dgh[0] = (ztpc-97.5)/2.;
4475 dgh[1] = 46.2;
4476 dgh[2] = 46.2+1.0;
4477 dgh[3] = 62.3;
4478 dgh[4] = 62.3+1.0;
4479 dgh[5] = 192.;
4480 dgh[6] = 348.;
4481 gMC->Gsvolu("ICU2", "CONS", idtmed[213], dgh, 7);
4482 gMC->Gspos("ICU2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
4483
4484
4485 // -- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - CARBON PART
4486 // UPPER PART
4487
4488 dgh[0] = (ztpc-97.5)/2.;
4489 dgh[1] = 46.2+1.0;
4490 dgh[2] = 46.2+1.0+1.5;
4491 dgh[3] = 62.3+1.0;
4492 dgh[4] = 62.3+1.0+1.5;
4493 dgh[5] = 12.;
4494 dgh[6] = 168.;
4495 gMC->Gsvolu("ICC1", "CONS", idtmed[225], dgh, 7);
4496 gMC->Gspos("ICC1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
4497
4498 // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - CARBON PART
4499 // LOWER PART
4500
4501 dgh[0] = (ztpc-97.5)/2.;
4502 dgh[1] = 46.2+1.0;
4503 dgh[2] = 46.2+1.0+1.5;
4504 dgh[3] = 62.3+1.0;
4505 dgh[4] = 62.3+1.0+1.5;
4506 dgh[5] = 192.;
4507 dgh[6] = 348.;
4508 gMC->Gsvolu("ICC2", "CONS", idtmed[225], dgh, 7);
4509 gMC->Gspos("ICC2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");
4510
4511 // -- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - COPPER PART
4512 // UPPER PART
4513
4514 dgh[0] = 62.;
4515 dgh[1] = 74.5;
4516 dgh[2] = 0.5;
4517 dgh[3] = 12.;
4518 dgh[4] = 168.;
4519 gMC->Gsvolu("ICU3", "TUBS", idtmed[213], dgh, 5);
4520 gMC->Gspos("ICU3", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");
4521
4522 // -- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - COPPER PART
4523 // LOWER PART
4524
4525 dgh[0] = 62.;
4526 dgh[1] = 74.5;
4527 dgh[2] = 0.5;
4528 dgh[3] = 192.;
4529 dgh[4] = 348.;
4530 gMC->Gsvolu("ICU4", "TUBS", idtmed[213], dgh, 5);
4531 gMC->Gspos("ICU4", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");
4532
4533 // -- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - CARBON PART
4534 // UPPER PART
4535
4536 dgh[0] = 62.1;
4537 dgh[1] = 74.5;
4538 dgh[2] = 0.75;
4539 dgh[3] = 12.;
4540 dgh[4] = 168.;
4541 gMC->Gsvolu("ICC3", "TUBS", idtmed[225], dgh, 5);
4542 gMC->Gspos("ICC3", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");
4543
4544 // -- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - CARBON PART
4545 // LOWER PART
4546
4547 dgh[0] = 62.1;
4548 dgh[1] = 74.5;
4549 dgh[2] = 0.75;
4550 dgh[3] = 192.;
4551 dgh[4] = 348.;
4552 gMC->Gsvolu("ICC4", "TUBS", idtmed[225], dgh, 5);
4553 gMC->Gspos("ICC4", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");
4554
4555 // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
4556 // THE ABSORBER - COPPER PART - UPPER PART
4557
4558 dgh[0] = 46.;
4559 dgh[1] = 46.+1.0;
4560 dgh[2] = (ztpc-97.5+1.5)/2.;
4561 dgh[3] = 12.;
4562 dgh[4] = 168.;
4563 gMC->Gsvolu("ICU5", "TUBS", idtmed[213], dgh, 5);
4564 gMC->Gspos("ICU5", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");
4565
4566 // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
4567 // THE ABSORBER - COPPER PART - LOWER PART
4568
4569 dgh[0] = 46.;
4570 dgh[1] = 46.+1.0;
4571 dgh[2] = (ztpc-97.5+1.5)/2.;
4572 dgh[3] = 192.;
4573 dgh[4] = 348.;
4574 gMC->Gsvolu("ICU6", "TUBS", idtmed[213], dgh, 5);
4575 gMC->Gspos("ICU6", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");
4576
4577 // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
4578 // THE ABSORBER - CARBON PART - UPPER PART
4579
4580 dgh[0] = 46.+1.0;
4581 dgh[1] = 46.+1.0+1.5;
4582 dgh[2] = (ztpc-97.5)/2.;
4583 dgh[3] = 12.;
4584 dgh[4] = 168.;
4585 gMC->Gsvolu("ICC5", "TUBS", idtmed[225], dgh, 5);
4586 gMC->Gspos("ICC5", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");
4587
4588 // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
4589 // THE ABSORBER - CARBON PART - LOWER PART
4590
4591 dgh[0] = 46.+1.0;
4592 dgh[1] = 46.+1.0+1.5;
4593 dgh[2] = (ztpc-97.5)/2.;
4594 dgh[3] = 192.;
4595 dgh[4] = 348.;
4596 gMC->Gsvolu("ICC6", "TUBS", idtmed[225], dgh, 5);
4597 gMC->Gspos("ICC6", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");
4598
4599 // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
4600 // COPPER PART - UPPER PART
4601
4602 dgh[0] = 46.;
4603 dgh[1] = 74.5;
4604 dgh[2] = 0.5;
4605 dgh[3] = 12.;
4606 dgh[4] = 168.;
4607 gMC->Gsvolu("ICU7", "TUBS", idtmed[213], dgh, 5);
4608 gMC->Gspos("ICU7", 1, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), 0, "ONLY");
4609
4610 // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
4611 // COPPER PART - LOWER PART
4612
4613 dgh[0] = 46.;
4614 dgh[1] = 74.5;
4615 dgh[2] = 0.5;
4616 dgh[3] = 192.;
4617 dgh[4] = 348.;
4618 gMC->Gsvolu("ICU8", "TUBS", idtmed[213], dgh, 5);
4619 gMC->Gspos("ICU8", 1, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), 0, "ONLY");
4620
4621 // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
4622 // CARBON PART - UPPER PART
4623
4624 dgh[0] = 46.+1.0;
4625 dgh[1] = 74.5;
4626 dgh[2] = 0.75;
4627 dgh[3] = 12.;
4628 dgh[4] = 168.;
4629 gMC->Gsvolu("ICC7", "TUBS", idtmed[225], dgh, 5);
4630 gMC->Gspos("ICC7", 1, "ITSV", 0., 0., -(ztpc+dgh[2]), 0, "ONLY");
4631
4632 // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
4633 // CARBON PART - LOWER PART
4634
4635 dgh[0] = 46.+1.0;
4636 dgh[1] = 74.5;
4637 dgh[2] = 0.75;
4638 dgh[3] = 192.;
4639 dgh[4] = 348.;
4640 gMC->Gsvolu("ICC8", "TUBS", idtmed[225], dgh, 5);
4641 gMC->Gspos("ICC8", 1, "ITSV", 0., 0., -(ztpc+dgh[2]), 0, "ONLY");
4642
4643 // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - UPPER PART
4644
4645 dgh[0] = 74.5;
4646 dgh[1] = 79.5;
4647 dgh[2] = 2.5;
4648 dgh[3] = 12.;
4649 dgh[4] = 168.;
4650 gMC->Gsvolu("IHK1", "TUBS", idtmed[264], dgh, 5);
4651 gMC->Gspos("IHK1", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");
4652
4653 // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - LOWER PART
4654
4655 dgh[0] = 74.5;
4656 dgh[1] = 79.5;
4657 dgh[2] = 2.5;
4658 dgh[3] = 192.;
4659 dgh[4] = 348.;
4660 gMC->Gsvolu("IHK2", "TUBS", idtmed[264], dgh, 5);
4661 gMC->Gspos("IHK2", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");
4662
4663 }
4664
4665
4666 // --- DEFINE RAILS BETWEEN THE ITS AND THE TPC
4667 if (! AliITSInitGeometry::SupportIsTGeoNative()) {
4668
4669 if (rails == 1) {
4670
4671 dgh[0] = 2.;
4672 dgh[1] = 8.;
4673 dgh[2] = 190.;
4674 gMC->Gsvolu("IRA1", "BOX ", idtmed[268], dgh, 3);
4675 gMC->Gspos("IRA1", 1, "ITSV", 53.5, 0., -69.5, 0, "ONLY");
4676 gMC->Gsvolu("IRA2", "BOX ", idtmed[268], dgh, 3);
4677 gMC->Gspos("IRA2", 1, "ITSV", -53.5, 0., -69.5, 0, "ONLY");
4678
4679 dgh[0] = 2.-0.5;// 0.5 was determined in such a way that the aluminum area is 20.9 cm^2
4680 dgh[1] = 8.-0.5;// 0.5 was determined in such a way that the aluminum area is 20.9 cm^2
4681 dgh[2] = 190.;
4682 gMC->Gsvolu("IRA3", "BOX ", idtmed[205], dgh, 3);
4683 gMC->Gspos("IRA3", 1, "IRA1", 0., 0., 0., 0, "ONLY");
4684 gMC->Gsvolu("IRA4", "BOX ", idtmed[205], dgh, 3);
4685 gMC->Gspos("IRA4", 1, "IRA2", 0., 0., 0., 0, "ONLY");
4686
4687 }
4688
4689 // --- DEFINE CYLINDERS HOLDING RAILS BETWEEN THE ITS AND THE TPC
4690
4691 dgh[0] = 56.9;
4692 dgh[1] = 59.;
4693 dgh[2] = 0.6;
4694 gMC->Gsvolu("ICYL", "TUBE", idtmed[210], dgh, 3);
4695 gMC->Gspos("ICYL", 1, "ALIC", 0., 0., -74.1,idrotm[199], "ONLY");
4696 gMC->Gspos("ICYL", 2, "ALIC", 0., 0., 74.1, 0, "ONLY");
4697
4698 // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE CYLINDERS
4699
4700 dgh[0] = 0.;
4701 dgh[1] = 3.;
4702 dgh[2] = 5.;// 5. comes from the fact that the volume has to be 567.6/2 cm^3
4703 gMC->Gsvolu("ISR1", "TUBE", idtmed[284], dgh, 3);
4704 gMC->Gspos("ISR1", 1, "ITSV", 53.4292, 10.7053, 79.75, 0, "ONLY");
4705 gMC->Gspos("ISR1", 2, "ITSV", 53.4292, -10.7053, 79.75, 0, "ONLY");
4706 gMC->Gspos("ISR1", 3, "ITSV", -53.4292, 10.7053, 79.75, 0, "ONLY");
4707 gMC->Gspos("ISR1", 4, "ITSV", -53.4292, -10.7053, 79.75, 0, "ONLY");
4708 gMC->Gspos("ISR1", 5, "ITSV", 53.4292, 10.7053, -79.75, 0, "ONLY");
4709 gMC->Gspos("ISR1", 6, "ITSV", 53.4292, -10.7053, -79.75, 0, "ONLY");
4710 gMC->Gspos("ISR1", 7, "ITSV", -53.4292, 10.7053, -79.75, 0, "ONLY");
4711 gMC->Gspos("ISR1", 8, "ITSV", -53.4292, -10.7053, -79.75, 0, "ONLY");
4712
4713 // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE ABSORBER
4714
4715 dgh[0] = 5.;
4716 dgh[1] = 12.;
4717 dgh[2] = 5.;
4718 gMC->Gsvolu("ISR2", "BOX ", idtmed[210], dgh, 3);
8f8273a4 4719 gMC->Gspos("ISR2", 1, "ITSV", -53.5, 0., -125.5, idrotm[199], "ONLY");
108bd0fe 4720 gMC->Gsvolu("ISR3", "BOX ", idtmed[210], dgh, 3);
8f8273a4 4721 gMC->Gspos("ISR3", 1, "ITSV", 53.5, 0., -125.5, idrotm[199], "ONLY");
108bd0fe 4722
4723 dgh[0] = 5.-2.;
4724 dgh[1] = 12.-2.;
4725 dgh[2] = 5.;
4726 gMC->Gsvolu("ISR4", "BOX ", idtmed[205], dgh, 3);
4727 gMC->Gspos("ISR4", 1, "ISR2", 0., 0., 0., 0, "ONLY");
4728 gMC->Gsvolu("ISR5", "BOX ", idtmed[205], dgh, 3);
4729 gMC->Gspos("ISR5", 1, "ISR3", 0., 0., 0., 0, "ONLY");
4730
4731 // --- DEFINE SUPPORTS TO ATTACH THE ITS TO THE TPC
4732
4733 dgh[0] = 0.;
4734 dgh[1] = 5.;
4735 dgh[2] = 2.;
4736 gMC->Gsvolu("ISR6", "TUBE", idtmed[210], dgh, 3);
8f8273a4 4737 gMC->Gspos("ISR6", 1, "ITSV", 0., 54., -77., idrotm[199], "ONLY");
4738 gMC->Gspos("ISR6", 2, "ITSV", 0., 54., 77., idrotm[199], "ONLY");
4739 gMC->Gspos("ISR6", 3, "ITSV", 0., -54., 77., idrotm[199], "ONLY");
108bd0fe 4740
4741 }
4742
4743
4744 // --- Outputs the geometry tree in the EUCLID/CAD format
4745
4746 if (fEuclidOut) {
4747 gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5);
4748 }
4749
4750
4751 {
4752 if (!gGeoManager) {
4753 AliError("TGeoManager doesn't exist !");
4754 return;
4755 }
4756
4757 //====== Converting mother volumes of alignable objects
4758 //====== into TGeoAssemblies :
4759
4760 TObjArray *list = gGeoManager->GetListOfVolumes();
4761
4762 if (! AliITSInitGeometry::SPDIsTGeoNative()) {
4763 char spdLaddName[20] = "I10B";
4764
4765 TGeoVolume *toTransform = gGeoManager->FindVolumeFast(spdLaddName);
4766 Int_t index = list->IndexOf(toTransform);
4767 do {
4768 TGeoVolume *transformed = 0; // this will be in fact TGeoVolumeAssembly
4769 if (toTransform)
4770 transformed = TGeoVolumeAssembly::MakeAssemblyFromVolume(toTransform);
4771 if (transformed)
4772 gGeoManager->ReplaceVolume(toTransform, transformed);
4773 index++;
4774 toTransform = (TGeoVolume*)list->At(index);
4775 }
4776 while (strcmp(spdLaddName,toTransform->GetName()) == 0);
4777 }
4778
4779 // SPD 2
4780 if (! AliITSInitGeometry::SPDIsTGeoNative()) {
4781 char spdLaddName[20] = "I20B";
4782
4783 TGeoVolume *toTransform = gGeoManager->FindVolumeFast(spdLaddName);
4784 Int_t index = list->IndexOf(toTransform);
4785 do {
4786 TGeoVolume *transformed = 0; // this will be in fact TGeoVolumeAssembly
4787 if (toTransform)
4788 transformed = TGeoVolumeAssembly::MakeAssemblyFromVolume(toTransform);
4789 if (transformed)
4790 gGeoManager->ReplaceVolume(toTransform, transformed);
4791 index++;
4792 toTransform = (TGeoVolume*)list->At(index);
4793 }
4794 while (strcmp(spdLaddName, toTransform->GetName()) == 0);
4795 }
4796
4797 //---
4798
4799 // SPD 1
4800 if (! AliITSInitGeometry::SPDIsTGeoNative()) {
4801 char spdLaddName[20] = "I107"; // "I107"
4802
4803 TGeoVolume *toTransform = gGeoManager->FindVolumeFast(spdLaddName);
4804 Int_t index = list->IndexOf(toTransform);
4805 do {
4806 TGeoVolume *transformed = 0; // this will be in fact TGeoVolumeAssembly
4807 if (toTransform)
4808 transformed = TGeoVolumeAssembly::MakeAssemblyFromVolume(toTransform);
4809 if (transformed)
4810 gGeoManager->ReplaceVolume(toTransform, transformed);
4811 index++;
4812 toTransform = (TGeoVolume*)list->At(index);
4813 }
4814 while (strcmp(spdLaddName,toTransform->GetName()) == 0);
4815 }
4816
4817 // SPD 2
4818 if (! AliITSInitGeometry::SPDIsTGeoNative()) {
4819 char spdLaddName[20] = "I1D7"; // "I1D7"
4820
4821 TGeoVolume *toTransform = gGeoManager->FindVolumeFast(spdLaddName);
4822 Int_t index = list->IndexOf(toTransform);
4823 do {
4824 TGeoVolume *transformed = 0; // this will be in fact TGeoVolumeAssembly
4825 if (toTransform)
4826 transformed = TGeoVolumeAssembly::MakeAssemblyFromVolume(toTransform);
4827 if (transformed)
4828 gGeoManager->ReplaceVolume(toTransform, transformed);
4829 index++;
4830 toTransform = (TGeoVolume*)list->At(index);
4831 }
4832 while (strcmp(spdLaddName, toTransform->GetName()) == 0);
4833 }
4834
4835 // SDD 1
4836 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
4837 char sddLaddName[20] = "I004";// "I302"
4838
4839 TGeoVolume *toTransform = gGeoManager->FindVolumeFast(sddLaddName);
4840 Int_t index = list->IndexOf(toTransform);
4841 do {
4842 TGeoVolume *transformed = 0; // this will be in fact TGeoVolumeAssembly
4843 if (toTransform)
4844 transformed = TGeoVolumeAssembly::MakeAssemblyFromVolume(toTransform);
4845 if (transformed)
4846 gGeoManager->ReplaceVolume(toTransform, transformed);
4847 index++;
4848 toTransform = (TGeoVolume*)list->At(index);
4849 }
4850 while (strcmp(sddLaddName, toTransform->GetName()) == 0);
4851 }
4852
4853 // SDD 2
4854 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
4855 char sddLaddName[20] = "I005";// "I402"
4856
4857 TGeoVolume *toTransform = gGeoManager->FindVolumeFast(sddLaddName);
4858 Int_t index = list->IndexOf(toTransform);
4859 do {
4860 TGeoVolume *transformed = 0; // this will be in fact TGeoVolumeAssembly
4861 if (toTransform)
4862 transformed = TGeoVolumeAssembly::MakeAssemblyFromVolume(toTransform);
4863 if (transformed)
4864 gGeoManager->ReplaceVolume(toTransform, transformed);
4865 index++;
4866 toTransform = (TGeoVolume*)list->At(index);
4867 }
4868 while (strcmp(sddLaddName, toTransform->GetName()) == 0);
4869 }
4870
4871
4872 // SSD 1
4873 if (! AliITSInitGeometry::SSDIsTGeoNative()) {
4874 char ssdLaddName[20] = "I565";// "I562"
4875
4876 TGeoVolume *toTransform = gGeoManager->FindVolumeFast(ssdLaddName);
4877 Int_t index = list->IndexOf(toTransform);
4878 do {
4879 TGeoVolume *transformed = 0; // this will be in fact TGeoVolumeAssembly
4880 if (toTransform)
4881 transformed = TGeoVolumeAssembly::MakeAssemblyFromVolume(toTransform);
4882 if (transformed)
4883 gGeoManager->ReplaceVolume(toTransform, transformed);
4884 index++;
4885 toTransform = (TGeoVolume*)list->At(index);
4886 }
4887 while (strcmp(ssdLaddName,toTransform->GetName()) == 0);
4888 }
4889
4890 // SSD 2
4891 if (! AliITSInitGeometry::SSDIsTGeoNative()) {
4892 char ssdLaddName[20] = "I569";// "I566"
4893
4894 TGeoVolume *toTransform = gGeoManager->FindVolumeFast(ssdLaddName);
4895 Int_t index = list->IndexOf(toTransform);
4896 do {
4897 TGeoVolume *transformed = 0; // this will be in fact TGeoVolumeAssembly
4898 if (toTransform)
4899 transformed = TGeoVolumeAssembly::MakeAssemblyFromVolume(toTransform);
4900 if (transformed)
4901 gGeoManager->ReplaceVolume(toTransform, transformed);
4902 index++;
4903 toTransform = (TGeoVolume*)list->At(index);
4904 }
4905 while (strcmp(ssdLaddName, toTransform->GetName()) == 0);
4906 }
4907
4908
4909 //====== Converting some virtual volumes to assemblies in order
4910 //====== to avoid overlaps :
4911
4912 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
4913 char sddName[20] = "I047";
4914
4915 TGeoVolume *toTransform = gGeoManager->FindVolumeFast(sddName);
4916 Int_t index = list->IndexOf(toTransform);
4917 do {
4918 TGeoVolume *transformed = 0; // this will be in fact TGeoVolumeAssembly
4919 if (toTransform)
4920 transformed = TGeoVolumeAssembly::MakeAssemblyFromVolume(toTransform);
4921 if (transformed)
4922 gGeoManager->ReplaceVolume(toTransform, transformed);
4923 index++;
4924 toTransform = (TGeoVolume*)list->At(index);
4925 }
4926 while (strcmp(sddName, toTransform->GetName()) == 0);
4927 }
4928
4929 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
4930 char sddName[20] = "I048";
4931
4932 TGeoVolume *toTransform = gGeoManager->FindVolumeFast(sddName);
4933 Int_t index = list->IndexOf(toTransform);
4934 do {
4935 TGeoVolume *transformed = 0; // this will be in fact TGeoVolumeAssembly
4936 if (toTransform)
4937 transformed = TGeoVolumeAssembly::MakeAssemblyFromVolume(toTransform);
4938 if (transformed)
4939 gGeoManager->ReplaceVolume(toTransform, transformed);
4940 index++;
4941 toTransform = (TGeoVolume*)list->At(index);
4942 }
4943 while (strcmp(sddName, toTransform->GetName()) == 0);
4944 }
4945
4946 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
4947 char sddName[20] = "I018";
4948
4949 TGeoVolume *toTransform = gGeoManager->FindVolumeFast(sddName);
4950 Int_t index = list->IndexOf(toTransform);
4951 do {
4952 TGeoVolume *transformed = 0; // this will be in fact TGeoVolumeAssembly
4953 if (toTransform)
4954 transformed = TGeoVolumeAssembly::MakeAssemblyFromVolume(toTransform);
4955 if (transformed)
4956 gGeoManager->ReplaceVolume(toTransform, transformed);
4957 index++;
4958 toTransform = (TGeoVolume*)list->At(index);
4959 }
4960 while (strcmp(sddName, toTransform->GetName()) == 0);
4961 }
108bd0fe 4962 }
108bd0fe 4963}
4964//______________________________________________________________________
4965void AliITSv11Hybrid::CreateMaterials(){
4966 // Create ITS materials
4967 // This function defines the default materials used in the Geant
4968 // Monte Carlo simulations for the geometries AliITSv1, AliITSv3,
4969 // AliITSv11Hybrid.
4970 // In general it is automatically replaced by
4971 // the CreateMaterials routine defined in AliITSv?. Should the function
4972 // CreateMaterials not exist for the geometry version you are using this
4973 // one is used. See the definition found in AliITSv5 or the other routine
4974 // for a complete definition.
4975 // Inputs:
4976 // none.
4977 // Outputs:
4978 // none.
4979 // Return:
4980 // none.
4981
4982 Int_t ifield = gAlice->Field()->Integ();
4983 Float_t fieldm = gAlice->Field()->Max();
4984
4985 Float_t tmaxfd = 0.1; // 1.0; // Degree
4986 Float_t stemax = 1.0; // cm
4987 Float_t deemax = 0.1; // 30.0; // Fraction of particle's energy 0<deemax<=1
4988 Float_t epsil = 1.0E-4; // 1.0; // cm
4989 Float_t stmin = 0.0; // cm "Default value used"
4990
4991 Float_t tmaxfdSi = 0.1; // .10000E+01; // Degree
4992 Float_t stemaxSi = 0.0075; // .10000E+01; // cm
4993 Float_t deemaxSi = 0.1; // 0.30000E-02; // Fraction of particle's energy 0<deemax<=1
4994 Float_t epsilSi = 1.0E-4;// .10000E+01;
4995 Float_t stminSi = 0.0; // cm "Default value used"
4996
4997 Float_t tmaxfdAir = 0.1; // .10000E+01; // Degree
4998 Float_t stemaxAir = .10000E+01; // cm
4999 Float_t deemaxAir = 0.1; // 0.30000E-02; // Fraction of particle's energy 0<deemax<=1
5000 Float_t epsilAir = 1.0E-4;// .10000E+01;
5001 Float_t stminAir = 0.0; // cm "Default value used"
5002
5003 Float_t tmaxfdServ = 1.0; // 10.0; // Degree
5004 Float_t stemaxServ = 1.0; // 0.01; // cm
5005 Float_t deemaxServ = 0.5; // 0.1; // Fraction of particle's energy 0<deemax<=1
5006 Float_t epsilServ = 1.0E-3; // 0.003; // cm
5007 Float_t stminServ = 0.0; //0.003; // cm "Default value used"
5008
5009 // Freon PerFluorobuthane C4F10 see
5010 // http://st-support-cooling-electronics.web.cern.ch/
5011 // st-support-cooling-electronics/default.htm
5012 Float_t afre[2] = { 12.011,18.9984032 };
5013 Float_t zfre[2] = { 6., 9. };
5014 Float_t wfre[2] = { 4.,10. };
5015 Float_t densfre = 1.52;
5016
5017
5018 //CM55J
5019
5020 Float_t aCM55J[4]={12.0107,14.0067,15.9994,1.00794};
5021 Float_t zCM55J[4]={6.,7.,8.,1.};
5022 Float_t wCM55J[4]={0.908508078,0.010387573,0.055957585,0.025146765};
5023 Float_t dCM55J = 1.63;
5024
5025 //ALCM55J
5026
5027 Float_t aALCM55J[5]={12.0107,14.0067,15.9994,1.00794,26.981538};
5028 Float_t zALCM55J[5]={6.,7.,8.,1.,13.};
5029 Float_t wALCM55J[5]={0.817657902,0.0093488157,0.0503618265,0.0226320885,0.1};
5030 Float_t dALCM55J = 1.9866;
5031
5032 //Si Chips
5033
5034 Float_t aSICHIP[6]={12.0107,14.0067,15.9994,1.00794,28.0855,107.8682};
5035 Float_t zSICHIP[6]={6.,7.,8.,1.,14., 47.};
5036 Float_t wSICHIP[6]={0.039730642,0.001396798,0.01169634,0.004367771,0.844665,0.09814344903};
5037 Float_t dSICHIP = 2.36436;
5038
5039 //Inox
5040
5041 Float_t aINOX[9]={12.0107,54.9380, 28.0855,30.9738,32.066,58.6928,55.9961,95.94,55.845};
5042 Float_t zINOX[9]={6.,25.,14.,15.,16., 28.,24.,42.,26.};
5043 Float_t wINOX[9]={0.0003,0.02,0.01,0.00045,0.0003,0.12,0.17,0.025,0.654};
5044 Float_t dINOX = 8.03;
5045
5046 //SDD HV microcable
5047
5048 Float_t aHVm[5]={12.0107,1.00794,14.0067,15.9994,26.981538};
5049 Float_t zHVm[5]={6.,1.,7.,8.,13.};
5050 Float_t wHVm[5]={0.520088819984,0.01983871336,0.0551367996,0.157399667056, 0.247536};
5051 Float_t dHVm = 1.6087;
5052
5053 //SDD LV+signal cable
5054
5055 Float_t aLVm[5]={12.0107,1.00794,14.0067,15.9994,26.981538};
5056 Float_t zLVm[5]={6.,1.,7.,8.,13.};
5057 Float_t wLVm[5]={0.21722436468,0.0082859922,0.023028867,0.06574077612, 0.68572};
5058 Float_t dLVm = 2.1035;
5059
5060 //SDD hybrid microcab
5061
5062 Float_t aHLVm[5]={12.0107,1.00794,14.0067,15.9994,26.981538};
5063 Float_t zHLVm[5]={6.,1.,7.,8.,13.};
5064 Float_t wHLVm[5]={0.24281879711,0.00926228815,0.02574224025,0.07348667449, 0.64869};
5065 Float_t dHLVm = 2.0502;
5066
5067 //SDD anode microcab
5068
5069 Float_t aALVm[5]={12.0107,1.00794,14.0067,15.9994,26.981538};
5070 Float_t zALVm[5]={6.,1.,7.,8.,13.};
5071 Float_t wALVm[5]={0.392653705471,0.0128595919215,0.041626868025,0.118832707289, 0.431909};
5072 Float_t dALVm = 2.0502;
5073
5074 //X7R capacitors
5075
5076 Float_t aX7R[7]={137.327,47.867,15.9994,58.6928,63.5460,118.710,207.2};
5077 Float_t zX7R[7]={56.,22.,8.,28.,29.,50.,82.};
5078 Float_t wX7R[7]={0.251639432,0.084755042,0.085975822,0.038244751,0.009471271,0.321736471,0.2081768};
5079 Float_t dX7R = 7.14567;
5080
5081 // AIR
5082
5083 Float_t aAir[4]={12.0107,14.0067,15.9994,39.948};
5084 Float_t zAir[4]={6.,7.,8.,18.};
5085 Float_t wAir[4]={0.000124,0.755267,0.231781,0.012827};
5086 Float_t dAir = 1.20479E-3;
5087
5088 // Water
5089
5090 Float_t aWater[2]={1.00794,15.9994};
5091 Float_t zWater[2]={1.,8.};
5092 Float_t wWater[2]={0.111894,0.888106};
5093 Float_t dWater = 1.0;
5094
5095 // CERAMICS
5096 // 94.4% Al2O3 , 2.8% SiO2 , 2.3% MnO , 0.5% Cr2O3
5097 Float_t acer[5] = { 26.981539,15.9994,28.0855,54.93805,51.9961 };
5098 Float_t zcer[5] = { 13., 8., 14., 25., 24. };
5099 Float_t wcer[5] = {.4443408,.5213375,.0130872,.0178135,.003421};
5100 Float_t denscer = 3.6;
5101
5102 //G10FR4
5103
5104 Float_t zG10FR4[14] = {14.00, 20.00, 13.00, 12.00, 5.00, 22.00, 11.00, 19.00, 26.00, 9.00, 8.00, 6.00, 7.00, 1.00};
5105 Float_t aG10FR4[14] = {28.0855000,40.0780000,26.9815380,24.3050000,10.8110000,47.8670000,22.9897700,39.0983000,55.8450000,18.9984000,15.9994000,12.0107000,14.0067000,1.0079400};
5106 Float_t wG10FR4[14] = {0.15144894,0.08147477,0.04128158,0.00904554,0.01397570,0.00287685,0.00445114,0.00498089,0.00209828,0.00420000,0.36043788,0.27529426,0.01415852,0.03427566};
5107 Float_t densG10FR4= 1.8;
5108
5109 //--- EPOXY --- C18 H19 O3
5110 Float_t aEpoxy[3] = {15.9994, 1.00794, 12.0107} ;
5111 Float_t zEpoxy[3] = { 8., 1., 6.} ;
5112 Float_t wEpoxy[3] = { 3., 19., 18.} ;
5113 Float_t dEpoxy = 1.8 ;
5114
5115 // rohacell: C9 H13 N1 O2
5116 Float_t arohac[4] = {12.01, 1.01, 14.010, 16.};
5117 Float_t zrohac[4] = { 6., 1., 7., 8.};
5118 Float_t wrohac[4] = { 9., 13., 1., 2.};
5119 Float_t drohac = 0.05;
5120
5121 // If he/she means stainless steel (inox) + Aluminium and Zeff=15.3383 then
5122//
5123// %Al=81.6164 %inox=100-%Al
5124
5125 Float_t aInAl[5] = {27., 55.847,51.9961,58.6934,28.0855 };
5126 Float_t zInAl[5] = {13., 26.,24.,28.,14. };
5127 Float_t wInAl[5] = {.816164, .131443,.0330906,.0183836,.000919182};
5128 Float_t dInAl = 3.075;
5129
5130 // Kapton
5131
5132 Float_t aKapton[4]={1.00794,12.0107, 14.010,15.9994};
5133 Float_t zKapton[4]={1.,6.,7.,8.};
5134 Float_t wKapton[4]={0.026362,0.69113,0.07327,0.209235};
5135 Float_t dKapton = 1.42;
5136
5137 //SDD ruby sph.
5138 Float_t aAlOxide[2] = { 26.981539,15.9994};
5139 Float_t zAlOxide[2] = { 13., 8.};
5140 Float_t wAlOxide[2] = {0.4707, 0.5293};
5141 Float_t dAlOxide = 3.97;
5142
5143 AliMaterial(1,"SI$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
5144 AliMedium(1,"SI$",1,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
5145
5146 AliMaterial(2,"SPD SI CHIP$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
5147 AliMedium(2,"SPD SI CHIP$",2,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
5148
5149 AliMaterial(3,"SPD SI BUS$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
5150 AliMedium(3,"SPD SI BUS$",3,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
5151
5152 AliMixture(4,"C (M55J)$",aCM55J,zCM55J,dCM55J,4,wCM55J);
5153 AliMedium(4,"C (M55J)$",4,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5154
5155 AliMixture(5,"AIR$",aAir,zAir,dAir,4,wAir);
5156 AliMedium(5,"AIR$",5,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
5157
5158 AliMixture(6,"GEN AIR$",aAir,zAir,dAir,4,wAir);
5159 AliMedium(6,"GEN AIR$",6,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
5160
5161 AliMixture(7,"SDD SI CHIP$",aSICHIP,zSICHIP,dSICHIP,6,wSICHIP);
5162 AliMedium(7,"SDD SI CHIP$",7,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
5163
5164 AliMixture(9,"SDD C (M55J)$",aCM55J,zCM55J,dCM55J,4,wCM55J);
5165 AliMedium(9,"SDD C (M55J)$",9,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5166
5167 AliMixture(10,"SDD AIR$",aAir,zAir,dAir,4,wAir);
5168 AliMedium(10,"SDD AIR$",10,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
5169
5170 AliMaterial(11,"AL$",0.26982E+02,0.13000E+02,0.26989E+01,0.89000E+01,0.99900E+03);
5171 AliMedium(11,"AL$",11,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5172
5173 AliMixture(12, "Water$",aWater,zWater,dWater,2,wWater);
5174 AliMedium(12,"WATER$",12,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5175
5176 AliMixture(13,"Freon$",afre,zfre,densfre,-2,wfre);
5177 AliMedium(13,"Freon$",13,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5178
5179 AliMaterial(14,"COPPER$",0.63546E+02,0.29000E+02,0.89600E+01,0.14300E+01,0.99900E+03);
5180 AliMedium(14,"COPPER$",14,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5181 AliMixture(15,"CERAMICS$",acer,zcer,denscer,5,wcer);
5182 AliMedium(15,"CERAMICS$",15,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5183
5184 AliMixture(20,"SSD C (M55J)$",aCM55J,zCM55J,dCM55J,4,wCM55J);
5185 AliMedium(20,"SSD C (M55J)$",20,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5186
5187 AliMixture(21,"SSD AIR$",aAir,zAir,dAir,4,wAir);
5188 AliMedium(21,"SSD AIR$",21,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
5189
5190 AliMixture(25,"G10FR4$",aG10FR4,zG10FR4,densG10FR4,14,wG10FR4);
5191 AliMedium(25,"G10FR4$",25,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5192
5193 AliMixture(26,"GEN C (M55J)$",aCM55J,zCM55J,dCM55J,4,wCM55J);
5194 AliMedium(26,"GEN C (M55J)$",26,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5195
5196 AliMixture(27,"GEN Air$",aAir,zAir,dAir,4,wAir);
5197 AliMedium(27,"GEN Air$",27,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
5198
5199 AliMaterial(51,"SPD SI$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
5200 AliMedium(51,"SPD SI$",51,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
5201
5202 AliMaterial(52,"SPD SI CHIP$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
5203 AliMedium(52,"SPD SI CHIP$",52,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
5204
5205 AliMaterial(53,"SPD SI BUS$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
5206 AliMedium(53,"SPD SI BUS$",53,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
5207
5208 AliMixture(54,"SPD C (M55J)$",aCM55J,zCM55J,dCM55J,4,wCM55J);
5209 AliMedium(54,"SPD C (M55J)$",54,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5210
5211 AliMixture(55,"SPD AIR$",aAir,zAir,dAir,4,wAir);
5212 AliMedium(55,"SPD AIR$",55,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
5213
5214 AliMixture(56, "SPD KAPTON(POLYCH2)", aKapton, zKapton, dKapton, 4, wKapton);
5215 AliMedium(56,"SPD KAPTON(POLYCH2)$",56,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5216
5217 AliMixture(61,"EPOXY$",aEpoxy,zEpoxy,dEpoxy,-3,wEpoxy);
5218 AliMedium(61,"EPOXY$",61,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5219
5220 AliMaterial(62,"SILICON$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
5221 AliMedium(62,"SILICON$",62,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
5222
5223 AliMixture(63, "KAPTONH(POLYCH2)", aKapton, zKapton, dKapton, 4, wKapton);
5224 AliMedium(63,"KAPTONH(POLYCH2)$",63,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5225
5226 AliMaterial(64,"ALUMINUM$",0.26982E+02,0.13000E+02,0.26989E+01,0.89000E+01,0.99900E+03);
5227 AliMedium(64,"ALUMINUM$",64,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5228
5229 AliMixture(65,"INOX$",aINOX,zINOX,dINOX,9,wINOX);
5230 AliMedium(65,"INOX$",65,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5231
5232 AliMixture(68,"ROHACELL$",arohac,zrohac,drohac,-4,wrohac);
5233 AliMedium(68,"ROHACELL$",68,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5234
5235 AliMixture(69,"SDD C AL (M55J)$",aALCM55J,zALCM55J,dALCM55J,5,wALCM55J);
5236 AliMedium(69,"SDD C AL (M55J)$",69,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5237
5238 AliMixture(70, "SDDKAPTON (POLYCH2)", aKapton, zKapton, dKapton, 4, wKapton);
5239 AliMedium(70,"SDDKAPTON (POLYCH2)$",70,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5240
5241 AliMaterial(71,"ITS SANDW A$",0.12011E+02,0.60000E+01,0.2115E+00,0.17479E+03,0.99900E+03);
5242 AliMedium(71,"ITS SANDW A$",71,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5243
5244 AliMaterial(72,"ITS SANDW B$",0.12011E+02,0.60000E+01,0.27000E+00,0.18956E+03,0.99900E+03);
5245 AliMedium(72,"ITS SANDW B$",72,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5246
5247 AliMaterial(73,"ITS SANDW C$",0.12011E+02,0.60000E+01,0.41000E+00,0.90868E+02,0.99900E+03);
5248 AliMedium(73,"ITS SANDW C$",73,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5249
5250 AliMaterial(74,"HEAT COND GLUE$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
5251 AliMedium(74,"HEAT COND GLUE$",74,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5252
5253 AliMaterial(75,"ELASTO SIL$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
5254 AliMedium(75,"ELASTO SIL$",75,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5255
5256 // SPD bus (data from Petra Riedler)
5257 Float_t aSPDbus[5] = {1.00794,12.0107,14.01,15.9994,26.982 };
5258 Float_t zSPDbus[5] = {1.,6.,7.,8.,13.};
5259 Float_t wSPDbus[5] = {0.023523,0.318053,0.009776,0.078057,0.570591};
5260 Float_t dSPDbus = 2.128505;
5261
5262 // AliMaterial(76,"SPDBUS(AL+KPT+EPOX)$",0.19509E+02,0.96502E+01,0.19060E+01,0.15413E+02,0.99900E+03);
5263 AliMixture(76,"SPDBUS(AL+KPT+EPOX)$",aSPDbus,zSPDbus,dSPDbus,5,wSPDbus);
5264 AliMedium(76,"SPDBUS(AL+KPT+EPOX)$",76,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5265
5266 AliMixture(77,"SDD X7R capacitors$",aX7R,zX7R,dX7R,7,wX7R);
5267 AliMedium(77,"SDD X7R capacitors$",77,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5268
5269 AliMixture(78,"SDD ruby sph. Al2O3$",aAlOxide,zAlOxide,dAlOxide,2,wAlOxide);
5270 AliMedium(78,"SDD ruby sph. Al2O3$",78,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5271
5272 AliMaterial(79,"SDD SI insensitive$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
5273 AliMedium(79,"SDD SI insensitive$",79,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5274
5275 AliMixture(80,"SDD HV microcable$",aHVm,zHVm,dHVm,5,wHVm);
5276 AliMedium(80,"SDD HV microcable$",80,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5277
5278 AliMixture(81,"SDD LV+signal cable$",aLVm,zLVm,dLVm,5,wLVm);
5279 AliMedium(81,"SDD LV+signal cable$",81,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5280
5281 AliMixture(82,"SDD hybrid microcab$",aHLVm, zHLVm,dHLVm,5,wHLVm);
5282 AliMedium(82,"SDD hybrid microcab$",82,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5283
5284 AliMixture(83,"SDD anode microcab$",aALVm,zALVm,dALVm,5,wALVm);
5285 AliMedium(83,"SDD anode microcab$",83,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5286 Float_t aDSring[4]={12.0107, 1.00794, 14.0067, 15.9994};
5287 Float_t zDSring[4]={ 6., 1., 7., 8.};
5288 Float_t wDSring[4]={ 0.854323888, 0.026408778, 0.023050265, 0.096217069};
5289 Float_t dDSring = 0.2875;
5290 AliMixture(84,"SDD/SSD rings$",aDSring,zDSring,dDSring,4,wDSring);
5291 AliMedium(84,"SDD/SSD rings$",84,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5292
5293 AliMixture(85,"inox/alum$",aInAl,zInAl,dInAl,5,wInAl);
5294 AliMedium(85,"inox/alum$",85,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
5295
5296 // special media to take into account services in the SDD and SSD
5297 // cones for the FMD
5298 //Begin_Html
5299 /*
5300 <A HREF="http://www.Physics.ohio-state.edu/~nilsen/ITS/ITS_MatBudget_4B.xls">
5301 </pre>
5302 <br clear=left>
5303 <font size=+2 color=blue>
5304 <p> The Exel spread sheet from which these density number come from.
5305 </font></A>
5306 */
5307 //End_Html
5308
5309 // AliMaterial(86,"AIRFMDSDD$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
5310 Float_t aA[13],zZ[13],wW[13],den;
5311 // From Pierluigi Barberis calculations of 2SPD+1SDD October 2 2002.
5312 zZ[0] = 1.0; aA[0] = 1.00794; // Hydrogen
5313 zZ[1] = 6.0; aA[1] = 12.011; // Carbon
5314 zZ[2] = 7.0; aA[2] = 14.00674; // Nitrogen
5315 zZ[3] = 8.0; aA[3] = 15.9994; // Oxigen
5316 zZ[4] = 14.0; aA[4] = 28.0855; // Silicon
5317 zZ[5] = 24.0; aA[5] = 51.9961; //Cromium
5318 zZ[6] = 25.0; aA[6] = 54.938049; // Manganese
5319 zZ[7] = 26.0; aA[7] = 55.845; // Iron
5320 zZ[8] = 28.0; aA[8] = 58.6934; // Nickle
5321 zZ[9] = 29.0; aA[9] = 63.546; // Copper
5322 zZ[10] = 13.0; aA[10] = 26.981539; // Alulminum
5323 zZ[11] = 47.0; aA[11] = 107.8682; // Silver
5324 zZ[12] = 27.0; aA[12] = 58.9332; // Cobolt
5325 wW[0] = 0.019965;
5326 wW[1] = 0.340961;
5327 wW[2] = 0.041225;
5328 wW[3] = 0.200352;
5329 wW[4] = 0.000386;
5330 wW[5] = 0.001467;
5331 wW[6] = 0.000155;
5332 wW[7] = 0.005113;
5333 wW[8] = 0.000993;
5334 wW[9] = 0.381262;
5335 wW[10] = 0.008121;
5336 wW[11] = 0.000000;
5337 wW[12] = 0.000000;
5338 if(fByThick){// New values seeITS_MatBudget_4B.xls
5339 den = 1.5253276; // g/cm^3 Cell O370
5340 }else{
5341 den = 2.58423412; // g/cm^3 Cell L370
5342 } // end if fByThick
5343 //den = 6161.7/(3671.58978);//g/cm^3 Volume does not exclude holes
5344 AliMixture(86,"AIRFMDSDD$",aA,zZ,den,+11,wW);
5345 AliMedium(86,"AIRFMDSDD$",86,0,ifield,fieldm,tmaxfdAir,stemaxAir,
5346 deemaxAir,epsilAir,stminAir);
5347
5348 //AliMaterial(87,"AIRFMDSSD$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
5349 // From Pierluigi Barberis calculations of SSD October 2 2002.
5350 wW[0] = 0.019777;
5351 wW[1] = 0.325901;
5352 wW[2] = 0.031848;
5353 wW[3] = 0.147668;
5354 wW[4] = 0.030609;
5355 wW[5] = 0.013993;
5356 wW[6] = 0.001479;
5357 wW[7] = 0.048792;
5358 wW[8] = 0.009477;
5359 wW[9] = 0.350697;
5360 wW[10] = 0.014546;
5361 wW[11] = 0.005213;
5362 wW[12] = 0.000000;
5363 if(fByThick){// New values seeITS_MatBudget_4B.xls
5364 den = 1.2464275; // g/cm^3 Cell O403
5365 }else{
5366 den = 1.28134409; // g/cm^3 Cell L403
5367 } // end if fByThick
5368 //den = 7666.3/(9753.553259); // volume does not exclude holes
5369 AliMixture(87,"AIRFMDSSD$",aA,zZ,den,+12,wW);
5370 AliMedium(87,"AIRFMDSSD$",87,0,ifield,fieldm,tmaxfdAir,stemaxAir,
5371 deemaxAir,epsilAir,stminAir);
5372
5373 //AliMaterial(88,"ITS SANDW CFMDSDD$",0.12011E+02,0.60000E+01,0.41000E+00,0.90868E+02,0.99900E+03);
5374 // From Pierluigi Barberis calculations of 1SDD+Carbon fiber October 2 2002
5375 wW[0] = 0.016302;
5376 wW[1] = 0.461870;
5377 wW[2] = 0.033662;
5378 wW[3] = 0.163595;
5379 wW[4] = 0.000315;
5380 wW[5] = 0.001197;
5381 wW[6] = 0.000127;
5382 wW[7] = 0.004175;
5383 wW[8] = 0.000811;
5384 wW[9] = 0.311315;
5385 wW[10] = 0.006631;
5386 wW[11] = 0.000000;
5387 wW[12] = 0.000000;
5388 if(fByThick){// New values seeITS_MatBudget_4B.xls
5389 den = 1.9353276; // g/cm^3 Cell N370
5390 }else{
5391 den = 3.2788626; // g/cm^3 Cell F370
5392 } // end if fByThick
5393 //den = 7667.1/(3671.58978); // Volume does not excludeholes
5394 AliMixture(88,"ITS SANDW CFMDSDD$",aA,zZ,den,+11,wW);
5395 AliMedium(88,"ITS SANDW CFMDSDD$",88,0,ifield,fieldm,tmaxfd,stemax,
5396 deemax,epsil,stmin);
5397
5398 //AliMaterial(89,"ITS SANDW CFMDSSD$",0.12011E+02,0.60000E+01,0.41000E+00,0.90868E+02,0.99900E+03);
5399 // From Pierluigi Barberis calculations of SSD+Carbon fiber October 2 2002.
5400 wW[0] = 0.014065;
5401 wW[1] = 0.520598;
5402 wW[2] = 0.022650;
5403 wW[3] = 0.105018;
5404 wW[4] = 0.021768;
5405 wW[5] = 0.009952;
5406 wW[6] = 0.001051;
5407 wW[7] = 0.034700;
5408 wW[8] = 0.006740;
5409 wW[9] = 0.249406;
5410 wW[10] = 0.010345;
5411 wW[11] = 0.0003707;
5412 wW[12] = 0.000000;
5413 if(fByThick){// New values seeITS_MatBudget_4B.xls
5414 den = 1.6564275; // g/cm^3 Cell N304
5415 }else{
5416 den = 1.7028296; // g/cm^3 Cell F304
5417 } // end if fByThick
5418 //den = 1166.5/(3671.58978); // Volume does not exclude holes
5419 AliMixture(89,"ITS SANDW CFMDSSD$",aA,zZ,den,+12,wW);
5420 AliMedium(89,"ITS SANDW CFMDSSD$",89,0,ifield,fieldm,tmaxfd,stemax,
5421 deemax,epsil,stmin);
5422
5423 //AliMaterial(97,"SPD SERVICES$",0.12011E+02,0.60000E+01,0.41000E+00,0.90868E+02,0.99900E+03);
5424 // From Pierluigi Barberis calculations of 1SPD October 2 2002.
5425 wW[0] = 0.005970;
5426 wW[1] = 0.304704;
5427 wW[2] = 0.042510;
5428 wW[3] = 0.121715;
5429 wW[4] = 0.001118;
5430 wW[5] = 0.030948;
5431 wW[6] = 0.003270;
5432 wW[7] = 0.107910;
5433 wW[8] = 0.020960;
5434 wW[9] = 0.360895;
5435 wW[10] = 0.000000;
5436 wW[11] = 0.000000;
5437 wW[12] = 0.000000;
5438 if(fByThick){// New values seeITS_MatBudget_4B.xls
5439 den = 80.31136576; // g/cm^3 Cell H329
5440 }else{
5441 den = 87.13062; // g/cm^3 Cell G329
5442 } // end if fByThick
5443 //den = 1251.3/(0.05*2.0*TMath::Pi()*(7.75*7.75 - 3.7*3.7)); // g/cm^3
5444 AliMixture(97,"SPD SERVICES$",aA,zZ,den,+10,wW);
5445 AliMedium(97,"SPD SERVICES$",97,0,ifield,fieldm,tmaxfd,stemax,
5446 deemax,epsil,stmin);
5447
5448
5449 // Special media
5450
5451 AliMaterial(90,"SPD shield$", 12.011, 6., 1.93/10. , 22.1*10., 999);
5452 AliMedium(90,"SPD shield$",90,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ);
5453
5454 // SPD End Ladder (data from Petra Riedler)
5455 Float_t aSPDel[5] = {1.00794,12.0107,14.01,15.9994,63.54 };
5456 Float_t zSPDel[5] = {1.,6.,7.,8.,29.};
5457 Float_t wSPDel[5] = {0.004092,0.107274,0.011438,0.032476,0.844719};
5458 Float_t dSPDel = 3.903403;
5459
5460 // AliMaterial(91, "SPD End ladder$", 47.0447, 21.7963, 3.6374, 4.4711, 999);
5461 AliMixture(91,"SPD End ladder$",aSPDel,zSPDel,dSPDel,5,wSPDel);
5462 AliMedium(91,"SPD End ladder$",91,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ);
5463
5464 AliMaterial(92, "SPD cone$",28.0855, 14., 2.33, 9.36, 999);
5465 AliMedium(92,"SPD cone$",92,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ);
5466 /* Material with fractional Z not actually used
5467 AliMaterial(93, "SDD End ladder$", 69.9298, 29.8246, 0.3824, 36.5103, 999);
5468 AliMedium(93,"SDD End ladder$",93,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ);
5469 */
5470 AliMaterial(94, "SDD cone$",63.546, 29., 1.15, 1.265, 999);
5471 AliMedium(94,"SDD cone$",94,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ);
5472 /* Material with fractional Z not actually used
5473 AliMaterial(95, "SSD End ladder$", 32.0988, 15.4021, 0.68, 35.3238, 999);
5474 AliMedium(95,"SSD End ladder$",95,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ);
5475 */
5476 AliMaterial(96, "SSD cone$",63.546, 29., 1.15, 1.265, 999);
5477 AliMedium(96,"SSD cone$",96,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ);
5478}
5479
5480//______________________________________________________________________
7ab0715c 5481void AliITSv11Hybrid::InitAliITSgeom() const {
108bd0fe 5482 // Based on the geometry tree defined in Geant 3.21, this
5483 // routine initilizes the Class AliITSgeom from the Geant 3.21 ITS geometry
5484 // sturture.
5485 // Inputs:
5486 // none.
5487 // Outputs:
5488 // none.
5489 // Return:
5490 // none.
5491
5492 Error("InitAliITSgeom", "QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQq Im I used?");
5493
8f8273a4 5494 /*
108bd0fe 5495 const Int_t knlayers = 6;
5496 const Int_t kndeep = 3;
5497 const AliITSDetector kidet[knlayers]={kSPD,kSPD,kSDD,kSDD,kSSD,kSSD};
5498 const TString knames[2][knlayers] = {
5499 {"/ALIC_1/ITSV_1/ITSD_1/IT12_1/I12A_%d/I10A_%d/I103_%d/I101_1/ITS1_1", // lay=1
5500 "/ALIC_1/ITSV_1/ITSD_1/IT12_1/I12A_%d/I20A_%d/I1D3_%d/I1D1_1/ITS2_1", // lay=2
5501 "/ALIC_1/ITSV_1/ITSD_1/IT34_1/I004_%d/I302_%d/ITS3_%d", // lay=3
5502 "/ALIC_1/ITSV_1/ITSD_1/IT34_1/I005_%d/I402_%d/ITS4_%d", // lay=4
5503 "/ALIC_1/ITSV_1/ITSD_1/IT56_1/I565_%d/I562_%d/ITS5_%d", // lay=5
5504 "/ALIC_1/ITSV_1/ITSD_1/IT56_1/I569_%d/I566_%d/ITS6_%d"},// lay=6
5505 {"/ALIC_1/ITSV_1/ITSD_1/IT12_1/I12B_%d/I10B_%d/I107_%d/I101_1/ITS1_1", // lay=1
5506 "/ALIC_1/ITSV_1/ITSD_1/IT12_1/I12B_%d/I20B_%d/I1D7_%d/I1D1_1/ITS2_1", // lay=2
5507 "/ALIC_1/ITSV_1/ITSD_1/IT34_1/I004_%d/I302_%d/ITS3_%d", // lay=3
5508 "/ALIC_1/ITSV_1/ITSD_1/IT34_1/I005_%d/I402_%d/ITS4_%d", // lay=4
5509 "/ALIC_1/ITSV_1/ITSD_1/IT56_1/I565_%d/I562_%d/ITS5_%d", // lay=5
5510 "/ALIC_1/ITSV_1/ITSD_1/IT56_1/I569_%d/I566_%d/ITS6_%d"}
5511 };
5512 const Int_t kitsGeomTreeCopys[knlayers][kndeep]= {{10, 2, 4},// lay=1
5513 {10, 4, 4},// lay=2
5514 {14, 6, 1},// lay=3
5515 {22, 8, 1},// lay=4
5516 {34,22, 1},// lay=5
5517 {38,25, 1}};//lay=6
5518 Int_t nlad[knlayers],ndet[knlayers];
5519 Int_t mod,lay,lad=0,det=0,i,j,k,cp0,cp1,cp2;
5520 TString path,shapeName;
5521 TGeoHMatrix materix;
5522 Double_t trans[3]={3*0.0},rot[10]={9*0.0,1.0};
5523 TArrayD shapePar;
5524 TArrayF shapeParF;
5525 Bool_t shapeDefined[3]={kFALSE,kFALSE,kFALSE};
5526
5527 AliDebug(1,"Reading Geometry transformation directly from Modler.");
5528 mod = 0;
5529 for(i=0;i<knlayers;i++){
5530 k = 1;
5531 for(j=0;j<kndeep;j++) if(kitsGeomTreeCopys[i][j]!=0)
5532 k *= TMath::Abs(kitsGeomTreeCopys[i][j]);
5533 mod += k;
5534 } // end for i
5535
5536 SetITSgeom(0);
5537 nlad[0]=20;nlad[1]=40;nlad[2]=14;nlad[3]=22;nlad[4]=34;nlad[5]=38;
5538 ndet[0]= 4;ndet[1]= 4;ndet[2]= 6;ndet[3]= 8;ndet[4]=22;ndet[5]=25;
5539 AliITSgeom* geom = new AliITSgeom(0,6,nlad,ndet,mod);
5540 SetITSgeom(geom);
5541 mod = 0;
5542 for(lay=1;lay<=knlayers;lay++){
5543 for(cp0=1;cp0<=kitsGeomTreeCopys[lay-1][0];cp0++){
5544 for(cp1=1;cp1<=kitsGeomTreeCopys[lay-1][1];cp1++){
5545 for(cp2=1;cp2<=kitsGeomTreeCopys[lay-1][2];cp2++){
5546 path.Form(knames[fMinorVersion-1][lay-1].Data(),
5547 cp0,cp1,cp2);
5548 switch (lay){
5549 case 1:{
5550 det = cp2;
5551 lad = cp1+2*(cp0-1);
5552 }break;
5553 case 2:{
5554 det = cp2;
5555 lad = cp1+4*(cp0-1);
5556 } break;
5557 case 3: case 4: case 5: case 6:{
5558 det = cp1;
5559 lad = cp0;
5560 } break;
5561 } // end switch
5562 //AliInfo(Form("path=%s lay=%d lad=%d det=%d",
5563 // path.Data(),lay,lad,det));
5564 gMC->GetTransformation(path.Data(),materix);
5565 gMC->GetShape(path.Data(),shapeName,shapePar);
5566 shapeParF.Set(shapePar.GetSize());
5567 for(i=0;i<shapePar.GetSize();i++) shapeParF[i]=shapePar[i];
5568 geom->CreateMatrix(mod,lay,lad,det,kidet[lay-1],trans,rot);
5569 geom->SetTrans(mod,materix.GetTranslation());
5570 geom->SetRotMatrix(mod,materix.GetRotationMatrix());
5571 geom->GetGeomMatrix(mod)->SetPath(path.Data());
5572 switch (lay){
5573 case 1: case 2:
5574 if(!shapeDefined[kSPD]){
5575 geom->ReSetShape(kSPD,new AliITSgeomSPD425Short(
5576 shapeParF.GetSize(),shapeParF.GetArray()));
5577 shapeDefined[kSPD] = kTRUE;
5578 }break;
5579 case 3: case 4:
5580 if(!shapeDefined[kSDD]){
5581 geom->ReSetShape(kSDD,new AliITSgeomSDD256(
5582 shapeParF.GetSize(),shapeParF.GetArray()));
5583 shapeDefined[kSDD] = kTRUE;
5584 }break;
5585 case 5: case 6:
5586 if(!shapeDefined[kSSD]){
5587 geom->ReSetShape(kSSD,new AliITSgeomSSD75and275(
5588 shapeParF.GetSize(),shapeParF.GetArray()));
5589 shapeDefined[kSSD] = kTRUE;
5590 }break;
5591 default:{
5592 }break;
5593 } // end switch
5594 mod++;
5595 } /// end for cp2
5596 } // end for cp1
5597 } // end for cp0
5598 } // end for lay
5599 return;
8f8273a4 5600 */
108bd0fe 5601}
bf210566 5602
108bd0fe 5603//______________________________________________________________________
5604void AliITSv11Hybrid::Init(){
5605 // Initialise the ITS after it has been created.
5606 // Inputs:
5607 // none.
5608 // Outputs:
5609 // none.
5610 // Return:
5611 // none.
5612
5613 AliDebug(1,Form("Init: Major version %d Minor version %d",fMajorVersion,
5614 fMinorVersion));
108bd0fe 5615 UpdateInternalGeometry();
5616 AliITS::Init();
5617 if(fGeomDetOut) GetITSgeom()->WriteNewFile(fWrite);
5618
108bd0fe 5619 fIDMother = gMC->VolId("ITSV"); // ITS Mother Volume ID.
5620}
bf210566 5621
108bd0fe 5622//______________________________________________________________________
5623void AliITSv11Hybrid::SetDefaults(){
5624 // sets the default segmentation, response, digit and raw cluster classes
5625 // Inputs:
5626 // none.
5627 // Outputs:
5628 // none.
5629 // Return:
5630 // none.
5631
5632 const Float_t kconv = 1.0e+04; // convert cm to microns
5633
5634 if(!fDetTypeSim){
5635 Warning("SetDefaults","Error fDetTypeSim not defined");
5636 return;
5637 }
5638
5639 AliITSgeomSPD *s0;
5640 AliITSgeomSDD *s1;
5641 AliITSgeomSSD *s2;
5642 Int_t i;
5643 Float_t bx[256],bz[280];
5644
5645 fDetTypeSim->SetDefaults();
5646
5647 //SPD
5648 s0 = (AliITSgeomSPD*) GetITSgeom()->GetShape(kSPD);
5649 // Get shape info. Do it this way for now.
5650 //AliITSCalibrationSPD* resp0=new AliITSCalibrationSPD();
5651 AliITSsegmentationSPD* seg0 =
5652 (AliITSsegmentationSPD*)fDetTypeSim->GetSegmentationModel(0);
5653 seg0->SetDetSize(s0->GetDx()*2.*kconv, // base this on AliITSgeomSPD
5654 s0->GetDz()*2.*kconv, // for now.
5655 s0->GetDy()*2.*kconv); // x,z,y full width in microns.
5656 seg0->SetNPads(256,160);// Number of Bins in x and z
5657 for(i=000;i<256;i++) bx[i] = 50.0; // in x all are 50 microns.
5658 for(i=000;i<160;i++) bz[i] = 425.0; // most are 425 microns except below
5659 for(i=160;i<280;i++) bz[i] = 0.0; // Outside of detector.
5660 bz[ 31] = bz[ 32] = 625.0; // first chip boundry
5661 bz[ 63] = bz[ 64] = 625.0; // first chip boundry
5662 bz[ 95] = bz[ 96] = 625.0; // first chip boundry
5663 bz[127] = bz[128] = 625.0; // first chip boundry
5664 bz[160] = 425.0; // Set so that there is no zero pixel size for fNz.
5665 seg0->SetBinSize(bx,bz); // Based on AliITSgeomSPD for now.
5666 SetSegmentationModel(kSPD,seg0);
5667 // set digit and raw cluster classes to be used
5668 const char *kData0=(fDetTypeSim->GetCalibrationModel(
5669 GetITSgeom()->GetStartSPD()))->DataType();
5670 if (strstr(kData0,"real")) fDetTypeSim->SetDigitClassName(kSPD,
5671 "AliITSdigit");
5672 else fDetTypeSim->SetDigitClassName(kSPD,"AliITSdigitSPD");
5673 // SDD
5674 s1 = (AliITSgeomSDD*) GetITSgeom()->GetShape(kSDD);
5675 // Get shape info. Do it this way for now.
5676
5677 //AliITSCalibrationSDD* resp1=new AliITSCalibrationSDD("simulated");
5678 AliITSsegmentationSDD* seg1 =
5679 (AliITSsegmentationSDD*)fDetTypeSim->GetSegmentationModel(1);
5680 seg1->SetDetSize(s1->GetDx()*kconv, // base this on AliITSgeomSDD
5681 s1->GetDz()*2.*kconv, // for now.
5682 s1->GetDy()*2.*kconv); // x,z,y full width in microns.
5683 seg1->SetNPads(256,256);// Use AliITSgeomSDD for now
5684 SetSegmentationModel(kSDD,seg1);
5685 const char *kData1=(fDetTypeSim->GetCalibrationModel(
5686 GetITSgeom()->GetStartSDD()))->DataType();
5687 AliITSCalibrationSDD* rsp =
5688 (AliITSCalibrationSDD*)fDetTypeSim->GetCalibrationModel(
5689 GetITSgeom()->GetStartSDD());
5690 const char *kopt=rsp->GetZeroSuppOption();
5691 if((!strstr(kopt,"2D")) && (!strstr(kopt,"1D")) || strstr(kData1,"real") ){
5692 fDetTypeSim->SetDigitClassName(kSDD,"AliITSdigit");
5693 } else fDetTypeSim->SetDigitClassName(kSDD,"AliITSdigitSDD");
5694 // SSD Layer 5
5695
5696 s2 = (AliITSgeomSSD*) GetITSgeom()->GetShape(kSSD);
5697 // Get shape info. Do it this way for now.
5698
5699
5700 //SetCalibrationModel(GetITSgeom()->GetStartSSD(),
5701 // new AliITSCalibrationSSD("simulated"));
5702 AliITSsegmentationSSD* seg2 =
5703 (AliITSsegmentationSSD*)fDetTypeSim->GetSegmentationModel(2);
5704 seg2->SetDetSize(s2->GetDx()*2.*kconv, // base this on AliITSgeomSSD
5705 s2->GetDz()*2.*kconv, // for now.
5706 s2->GetDy()*2.*kconv); // x,z,y full width in microns.
5707 seg2->SetPadSize(95.,0.); // strip x pitch in microns
5708 seg2->SetNPads(768,0); // number of strips on each side.
5709 seg2->SetAngles(0.0075,0.0275); // strip angels rad P and N side.
5710 seg2->SetAnglesLay5(0.0075,0.0275); // strip angels rad P and N side.
5711 seg2->SetAnglesLay6(0.0275,0.0075); // strip angels rad P and N side.
5712 SetSegmentationModel(kSSD,seg2);
5713 const char *kData2=(fDetTypeSim->GetCalibrationModel(
5714 GetITSgeom()->GetStartSSD()))->DataType();
5715 if(strstr(kData2,"real") ) fDetTypeSim->SetDigitClassName(kSSD,
5716 "AliITSdigit");
5717 else fDetTypeSim->SetDigitClassName(kSSD,"AliITSdigitSSD");
5718 if(fgkNTYPES>3){
5719 Warning("SetDefaults",
5720 "Only the four basic detector types are initialised!");
5721 }// end if
5722 return;
5723}
5724//______________________________________________________________________
5725void AliITSv11Hybrid::DrawModule() const{
5726 // Draw a shaded view of the FMD version 10.
5727 // Inputs:
5728 // none.
5729 // Outputs:
5730 // none.
5731 // Return:
5732 // none.
5733
5734 // Set everything unseen
5735 gMC->Gsatt("*", "seen", -1);
5736 //
5737 // Set ALIC mother visible
5738 gMC->Gsatt("ALIC","SEEN",0);
5739 //
5740 // Set the volumes visible
5741 gMC->Gsatt("ITSD","SEEN",0);
5742 gMC->Gsatt("ITS1","SEEN",1);
5743 gMC->Gsatt("ITS2","SEEN",1);
5744 gMC->Gsatt("ITS3","SEEN",1);
5745 gMC->Gsatt("ITS4","SEEN",1);
5746 gMC->Gsatt("ITS5","SEEN",1);
5747 gMC->Gsatt("ITS6","SEEN",1);
5748 //
5749 gMC->Gsatt("IPCB","SEEN",1);
5750 gMC->Gsatt("ICO2","SEEN",1);
5751 gMC->Gsatt("ICER","SEEN",0);
5752 gMC->Gsatt("ISI2","SEEN",0);
5753 gMC->Gsatt("IPLA","SEEN",0);
5754 gMC->Gsatt("ICO3","SEEN",0);
5755 gMC->Gsatt("IEPX","SEEN",0);
5756 gMC->Gsatt("ISI3","SEEN",1);
5757 gMC->Gsatt("ISUP","SEEN",0);
5758 gMC->Gsatt("ICHO","SEEN",0);
5759 gMC->Gsatt("ICMO","SEEN",0);
5760 gMC->Gsatt("ICMD","SEEN",0);
5761 gMC->Gsatt("ICCO","SEEN",1);
5762 gMC->Gsatt("ICCM","SEEN",0);
5763 gMC->Gsatt("ITMD","SEEN",0);
5764 gMC->Gsatt("ITTT","SEEN",1);
5765 //
5766 gMC->Gdopt("hide", "on");
5767 gMC->Gdopt("shad", "on");
5768 gMC->Gsatt("*", "fill", 7);
5769 gMC->SetClipBox(".");
5770 gMC->SetClipBox("*", 0, 300, -300, 300, -300, 300);
5771 gMC->DefaultRange();
5772 gMC->Gdraw("alic", 40, 30, 0, 11, 10, .07, .07);
5773 gMC->Gdhead(1111, "Inner Tracking System Version 1");
5774 gMC->Gdman(17, 6, "MAN");
5775}
bf210566 5776
108bd0fe 5777//______________________________________________________________________
5778void AliITSv11Hybrid::StepManager(){
5779 // Called for every step in the ITS, then calles the AliITShit class
5780 // creator with the information to be recoreded about that hit.
5781 // The value of the macro ALIITSPRINTGEOM if set to 1 will allow the
5782 // printing of information to a file which can be used to create a .det
5783 // file read in by the routine CreateGeometry(). If set to 0 or any other
5784 // value except 1, the default behavior, then no such file is created nor
5785 // it the extra variables and the like used in the printing allocated.
5786 // Inputs:
5787 // none.
5788 // Outputs:
5789 // none.
5790 // Return:
5791 // none.
5792
012f0f4c 5793 if(!(this->IsActive())) return;
108bd0fe 5794 if(!(gMC->TrackCharge())) return;
5795
bf210566 5796 Int_t copy, lay = 0;
5797 Int_t id = gMC->CurrentVolID(copy);
5798
5799 Bool_t notSens;
5800 while ((notSens = id != fIdSens[lay]) && (lay<fIdN)) ++lay;
5801 if (notSens) return;
75473741 5802
bf210566 5803 if(gMC->IsTrackExiting()) {
e6add757 5804 AddTrackReference(gAlice->GetMCApp()->GetCurrentTrackNumber(), AliTrackReference::kITS);
108bd0fe 5805 } // if Outer ITS mother Volume
5806
75473741 5807 static TLorentzVector position, momentum; // Saves on calls to construtors
5808 static AliITShit hit;// Saves on calls to constructors
bf210566 5809
012f0f4c 5810 TClonesArray &lhits = *(Hits());
bf210566 5811 Int_t cpn0, cpn1, mod, status = 0;
75473741 5812 //
108bd0fe 5813 // Track status
012f0f4c 5814 if(gMC->IsTrackInside()) status += 1;
5815 if(gMC->IsTrackEntering()) status += 2;
5816 if(gMC->IsTrackExiting()) status += 4;
5817 if(gMC->IsTrackOut()) status += 8;
5818 if(gMC->IsTrackDisappeared()) status += 16;
5819 if(gMC->IsTrackStop()) status += 32;
5820 if(gMC->IsTrackAlive()) status += 64;
bf210566 5821
8f8273a4 5822 //
5823 // retrieve the indices with the volume path
75473741 5824 //
012f0f4c 5825 switch (lay) {
75473741 5826 case 0:case 1: // SPD
8f8273a4 5827 if (AliITSInitGeometry::SPDIsTGeoNative()) {
5828 gMC->CurrentVolOffID(1,copy); // ladder
5829 gMC->CurrentVolOffID(3,cpn1); // stave
5830 gMC->CurrentVolOffID(5,cpn0); // sector
5831 } else {
5832 gMC->CurrentVolOffID(2,copy);
5833 gMC->CurrentVolOffID(4,cpn1);
5834 gMC->CurrentVolOffID(5,cpn0);
5835 };
75473741 5836 break;
5837 case 2:case 3: // SDD
bf210566 5838 copy = 1;
75473741 5839 if (AliITSInitGeometry::SDDIsTGeoNative()) {
5840 gMC->CurrentVolOffID(2,cpn1);
5841 gMC->CurrentVolOffID(3,cpn0);
5842 } else {
5843 gMC->CurrentVolOffID(1,cpn1);
5844 gMC->CurrentVolOffID(2,cpn0);
5845 };
5846 break;
5847 case 4:case 5: // SSD
bf210566 5848 copy = 1;
8f8273a4 5849 //if (AliITSInitGeometry::SSDIsTGeoNative()) {
5850 // same levels for old and new geom
bf210566 5851 gMC->CurrentVolOffID(1,cpn1);
5852 gMC->CurrentVolOffID(2,cpn0);
75473741 5853 break;
5854 default:
bf210566 5855 AliError(Form("Invalid value: lay= %d . Not an ITS sensitive volume",lay));
75473741 5856 return; // not an ITS sensitive volume.
5857 } //
8f8273a4 5858
bf210566 5859 fInitGeom.DecodeDetector(mod,lay+1,cpn0,cpn1,copy);
8f8273a4 5860 // We should not need to pass by the switch !
5861 // This is time consuming...
5862 // therefore DecodeDetectorv11Hybrid(...) shouldn't be private !
dbfc6ce6 5863 // and we should be able to use instead :
8f8273a4 5864 //fInitGeom.DecodeDetectorv11Hybrid(mod,lay+1,cpn0,cpn1,copy);
108bd0fe 5865
75473741 5866 //
5867 // Fill hit structure.
5868 //
012f0f4c 5869 hit.SetModule(mod);
5870 hit.SetTrack(gAlice->GetMCApp()->GetCurrentTrackNumber());
108bd0fe 5871 gMC->TrackPosition(position);
5872 gMC->TrackMomentum(momentum);
012f0f4c 5873 hit.SetPosition(position);
5874 hit.SetTime(gMC->TrackTime());
5875 hit.SetMomentum(momentum);
5876 hit.SetStatus(status);
5877 hit.SetEdep(gMC->Edep());
5878 hit.SetShunt(GetIshunt());
5879 if(gMC->IsTrackEntering()){
5880 hit.SetStartPosition(position);
5881 hit.SetStartTime(gMC->TrackTime());
5882 hit.SetStartStatus(status);
5883 return; // don't save entering hit.
108bd0fe 5884 } // end if IsEntering
5885 // Fill hit structure with this new hit.
012f0f4c 5886 //Info("StepManager","Calling Copy Constructor");
5887 new(lhits[fNhits++]) AliITShit(hit); // Use Copy Construtor.
5888 // Save old position... for next hit.
5889 hit.SetStartPosition(position);
5890 hit.SetStartTime(gMC->TrackTime());
5891 hit.SetStartStatus(status);
108bd0fe 5892
5893 return;
5894}