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