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