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