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