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