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