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