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