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