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