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