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