For Pythia with tune don't switch off MI in ConfigHeavyFlavor
[u/mrichter/AliRoot.git] / ITS / AliITSv11Hybrid.cxx
CommitLineData
108bd0fe 1/**************************************************************************
e9ae6a14 2 * Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
108bd0fe 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#include <TClonesArray.h>
f7a1cc68 74#include <TGeoGlobalMagField.h>
7dd2cbe4 75#include <TGeoManager.h>
108bd0fe 76#include <TGeoMatrix.h>
77#include <TGeoPhysicalNode.h>
108bd0fe 78#include <TGeoVolume.h>
b0c0f648 79#include <TGeoXtru.h>
7dd2cbe4 80#include <TLorentzVector.h>
81#include <TString.h>
108bd0fe 82#include <TVirtualMC.h>
83
84#include "AliITS.h"
85#include "AliITSDetTypeSim.h"
86#include "AliITSgeom.h"
108bd0fe 87#include "AliITShit.h"
108bd0fe 88#include "AliITSCalibrationSDD.h"
108bd0fe 89#include "AliITSsegmentationSDD.h"
90#include "AliITSsegmentationSPD.h"
91#include "AliITSsegmentationSSD.h"
92#include "AliITSv11Hybrid.h"
93#include "AliLog.h"
94#include "AliMC.h"
95#include "AliMagF.h"
96#include "AliRun.h"
97#include "AliTrackReference.h"
98#include "AliITSInitGeometry.h"
8f8273a4 99#include "AliITSv11GeometrySPD.h"
108bd0fe 100#include "AliITSv11GeometrySDD.h"
bf210566 101#include "AliITSv11GeometrySSD.h"
a275e8ba 102#include "AliITSv11GeometrySupport.h"
b2e5530c 103#include "AliGeomManager.h"
108bd0fe 104
105
108bd0fe 106ClassImp(AliITSv11Hybrid)
107
108//______________________________________________________________________
109AliITSv11Hybrid::AliITSv11Hybrid():
108bd0fe 110 fByThick(kTRUE),
111 fMajorVersion(IsVersion()),
112 fMinorVersion(-1),
113 fDet1(0),
114 fDet2(0),
115 fChip1(0),
116 fChip2(0),
117 fRails(0),
118 fFluid(0),
119 fIDMother(0),
012f0f4c 120 fInitGeom((AliITSVersion_t)fMajorVersion,fMinorVersion),
8f8273a4 121 fSPDgeom(0),
bf210566 122 fSDDgeom(0),
a275e8ba 123 fSSDgeom(0),
124 fSupgeom(0)
108bd0fe 125 {
012f0f4c 126 // Standard default constructor
108bd0fe 127 // Inputs:
128 // none.
129 // Outputs:
130 // none.
131 // Return:
132 // none.
108bd0fe 133}
8f8273a4 134
135//______________________________________________________________________
136AliITSv11Hybrid::AliITSv11Hybrid(const char *title)
137 : AliITS("ITS", title),
8f8273a4 138 fByThick(kTRUE),
139 fMajorVersion(IsVersion()),
140 fMinorVersion(1),
141 fDet1(200.0),
142 fDet2(200.0),
143 fChip1(150.0),
144 fChip2(150.0),
145 fRails(0),
146 fFluid(1),
147 fIDMother(0),
148 fInitGeom((AliITSVersion_t)fMajorVersion,fMinorVersion),
149 fSPDgeom(0),
150 fSDDgeom(0),
a275e8ba 151 fSSDgeom(0),
152 fSupgeom(0)
153{
8f8273a4 154 // Standard constructor for the v11Hybrid geometry.
155 // Inputs:
156 // const char * title Arbitrary title
157 // Outputs:
158 // none.
159 // Return:
160 // none.
161 Int_t i;
162
163 fSPDgeom = new AliITSv11GeometrySPD();
164 fSDDgeom = new AliITSv11GeometrySDD(0);
165 fSSDgeom = new AliITSv11GeometrySSD();
a275e8ba 166 fSupgeom = new AliITSv11GeometrySupport();
8f8273a4 167
168 fIdN = 6;
169 fIdName = new TString[fIdN];
170
171 if (AliITSInitGeometry::SPDIsTGeoNative()) {
dbfc6ce6 172 fIdName[0] = fSPDgeom->GetSenstiveVolumeName1();
173 fIdName[1] = fSPDgeom->GetSenstiveVolumeName2();
8f8273a4 174 } else {
175 fIdName[0] = "ITS1";
176 fIdName[1] = "ITS2";
177 }
178
179 if (AliITSInitGeometry::SDDIsTGeoNative()) {
180 fIdName[2] = fSDDgeom->GetSenstiveVolumeName3();
181 fIdName[3] = fSDDgeom->GetSenstiveVolumeName4();
182 } else {
183 fIdName[2] = "ITS3";
184 fIdName[3] = "ITS4";
185 }
186
187 if (AliITSInitGeometry::SSDIsTGeoNative()) {
188 fIdName[4] = fSSDgeom->GetSenstiveVolumeName5();
189 fIdName[5] = fSSDgeom->GetSenstiveVolumeName6();
190 } else {
191 fIdName[4] = "ITS5";
192 fIdName[5] = "ITS6";
193 }
194
195 fIdSens = new Int_t[fIdN];
196 for(i=0;i<fIdN;i++) fIdSens[i] = 0;
197 SetThicknessDet1();
198 SetThicknessDet2();
199 SetThicknessChip1();
200 SetThicknessChip2();
201 SetDensityServicesByThickness();
202
8f8273a4 203}
204
108bd0fe 205//______________________________________________________________________
206AliITSv11Hybrid::AliITSv11Hybrid(const char *name, const char *title)
207 : AliITS("ITS", title),
108bd0fe 208 fByThick(kTRUE),
209 fMajorVersion(IsVersion()),
8f8273a4 210 fMinorVersion(1),
211 fDet1(200.0),
212 fDet2(200.0),
213 fChip1(150.0),
214 fChip2(150.0),
108bd0fe 215 fRails(0),
8f8273a4 216 fFluid(1),
108bd0fe 217 fIDMother(0),
012f0f4c 218 fInitGeom((AliITSVersion_t)fMajorVersion,fMinorVersion),
8f8273a4 219 fSPDgeom(0),
bf210566 220 fSDDgeom(0),
a275e8ba 221 fSSDgeom(0),
222 fSupgeom(0)
223{
012f0f4c 224 // Standard constructor for the v11Hybrid geometry.
108bd0fe 225 // Inputs:
226 // const char * name Ignored, set to "ITS"
227 // const char * title Arbitrary title
228 // Outputs:
229 // none.
230 // Return:
231 // none.
232 Int_t i;
bf210566 233
8f8273a4 234 fSPDgeom = new AliITSv11GeometrySPD();
bf210566 235 fSDDgeom = new AliITSv11GeometrySDD(0);
236 fSSDgeom = new AliITSv11GeometrySSD();
a275e8ba 237 fSupgeom = new AliITSv11GeometrySupport();
108bd0fe 238
239 fIdN = 6;
240 fIdName = new TString[fIdN];
8f8273a4 241
242 (void) name; // removes warning message
243
244 if (AliITSInitGeometry::SPDIsTGeoNative()) {
dbfc6ce6 245 fIdName[0] = fSPDgeom->GetSenstiveVolumeName1();
246 fIdName[1] = fSPDgeom->GetSenstiveVolumeName2();
8f8273a4 247 } else {
248 fIdName[0] = "ITS1";
249 fIdName[1] = "ITS2";
250 }
251
108bd0fe 252 if (AliITSInitGeometry::SDDIsTGeoNative()) {
253 fIdName[2] = fSDDgeom->GetSenstiveVolumeName3();
254 fIdName[3] = fSDDgeom->GetSenstiveVolumeName4();
255 } else {
256 fIdName[2] = "ITS3";
257 fIdName[3] = "ITS4";
258 }
bf210566 259
260 if (AliITSInitGeometry::SSDIsTGeoNative()) {
261 fIdName[4] = fSSDgeom->GetSenstiveVolumeName5();
262 fIdName[5] = fSSDgeom->GetSenstiveVolumeName6();
263 } else {
264 fIdName[4] = "ITS5";
265 fIdName[5] = "ITS6";
266 }
108bd0fe 267
108bd0fe 268 fIdSens = new Int_t[fIdN];
269 for(i=0;i<fIdN;i++) fIdSens[i] = 0;
270 SetThicknessDet1();
271 SetThicknessDet2();
272 SetThicknessChip1();
273 SetThicknessChip2();
274 SetDensityServicesByThickness();
275
108bd0fe 276}
8f8273a4 277
108bd0fe 278//______________________________________________________________________
279AliITSv11Hybrid::~AliITSv11Hybrid() {
280 // Standard destructor
281 // Inputs:
282 // none.
283 // Outputs:
284 // none.
285 // Return:
286 // none.
8f8273a4 287 delete fSPDgeom;
108bd0fe 288 delete fSDDgeom;
bf210566 289 delete fSSDgeom;
a275e8ba 290 delete fSupgeom;
108bd0fe 291}
292
293//______________________________________________________________________
b2e5530c 294void AliITSv11Hybrid::SetT2Lmatrix(Int_t uid, Double_t yShift,
bf210566 295 Bool_t yFlip, Bool_t yRot180)
108bd0fe 296 const {
297
298 //
299 // Creates the TGeo Local to Tracking transformation matrix
300 // and sends it to the corresponding TGeoPNEntry
301 //
302 // This function is used in AddAlignableVolumes()
303
b2e5530c 304 TGeoPNEntry *alignableEntry = gGeoManager->GetAlignableEntryByUID(uid);
305 TGeoHMatrix* globMatrix = alignableEntry->GetGlobalOrig();
108bd0fe 306
307 Double_t *gtrans = globMatrix->GetTranslation(), rotMatrix[9];
308 memcpy(&rotMatrix[0], globMatrix->GetRotationMatrix(), 9*sizeof(Double_t));
bf210566 309 Double_t al = TMath::ATan2(rotMatrix[1],rotMatrix[0]);
333c948a 310 if (yRot180) {
bf210566 311 al = TMath::ATan2(rotMatrix[1],-rotMatrix[0]);
333c948a 312 }
9c656462 313 Double_t xShift = gtrans[0]*TMath::Cos(al)+gtrans[1]*TMath::Sin(al);
314 Double_t zShift = -gtrans[2];
108bd0fe 315
316 TGeoHMatrix *matLtoT = new TGeoHMatrix;
9c656462 317 matLtoT->SetDx( xShift ); // translation
108bd0fe 318 matLtoT->SetDy( yShift );
9c656462 319 matLtoT->SetDz( zShift );
108bd0fe 320 rotMatrix[0]= 0; rotMatrix[1]= 1; rotMatrix[2]= 0; // + rotation
321 rotMatrix[3]= 1; rotMatrix[4]= 0; rotMatrix[5]= 0;
322 rotMatrix[6]= 0; rotMatrix[7]= 0; rotMatrix[8]=-1;
333c948a 323 if (yFlip) rotMatrix[3] = -1; // flipping in y (for SPD1)
0fcbd059 324 if (yFlip) rotMatrix[1] = -1; // flipping in y (for SPD1)
333c948a 325
326 if (yRot180) { // rotation of pi around the axis perpendicular to the wafer
9c656462 327 if (yFlip) matLtoT->SetDx( -xShift ); // flipping in y (for SPD1)
333c948a 328 matLtoT->SetDy( -yShift );
9c656462 329 matLtoT->SetDz( -zShift );
330 rotMatrix[8]=1;
333c948a 331 rotMatrix[3] = -1;
8f8273a4 332 if (yFlip) rotMatrix[3] = 1; // flipping in y (for SPD1)
333c948a 333 }
108bd0fe 334
335 TGeoRotation rot;
336 rot.SetMatrix(rotMatrix);
337 matLtoT->MultiplyLeft(&rot);
338 TGeoHMatrix *matTtoL = new TGeoHMatrix(matLtoT->Inverse());
339 delete matLtoT;
340 alignableEntry->SetMatrix(matTtoL);
341}
bf210566 342
108bd0fe 343//______________________________________________________________________
54c9a3d9 344void AliITSv11Hybrid::AddAlignableVolumes() const{
108bd0fe 345 // Creates entries for alignable volumes associating the symbolic volume
346 // name with the corresponding volume path.
347 //
348 // Records in the alignable entries the transformation matrices converting
349 // TGeo local coordinates (in the RS of alignable volumes) to the tracking
350 // system
351 // For this, this function has to run before the misalignment because we
352 // are using the ideal positions in the AliITSgeom object.
54c9a3d9 353 // Inputs:
354 // none.
355 // Outputs:
356 // none.
357 // Return:
358 // none.
108bd0fe 359
360 AliInfo("Add ITS alignable volumes");
361
362 if (!gGeoManager) {
363 AliFatal("TGeoManager doesn't exist !");
364 return;
365 }
366
b2e5530c 367 AliGeomManager::ELayerID layerId;
368 Int_t modUID, modnum;
369
108bd0fe 370 if( !gGeoManager->SetAlignableEntry("ITS","ALIC_1/ITSV_1") )
54c9a3d9 371 AliFatal(Form("Unable to set alignable entry ! %s :: %s",
372 "ITS","ALIC_1/ITSV_1"));
108bd0fe 373
108bd0fe 374 TString strSPD = "ITS/SPD";
375 TString strSDD = "ITS/SDD";
376 TString strSSD = "ITS/SSD";
377 TString strStave = "/Stave";
8f8273a4 378 TString strHalfStave = "/HalfStave";
108bd0fe 379 TString strLadder = "/Ladder";
380 TString strSector = "/Sector";
381 TString strSensor = "/Sensor";
382 TString strEntryName1;
383 TString strEntryName2;
384 TString strEntryName3;
8f8273a4 385 TString strEntryName4;
108bd0fe 386
8f8273a4 387 //===== SPD layers =====
b2e5530c 388
8f8273a4 389 if (AliITSInitGeometry::SPDIsTGeoNative()) { // new SPD geometry
390
54c9a3d9 391 TString str0 = "ALIC_1/ITSV_1/ITSSPD_1/ITSSPDCarbonFiberSectorV_";
392 TString str1 = "/ITSSPDSensitiveVirtualvolumeM0_1/ITSSPDlay1-Stave_";
393 TString str1Bis = "/ITSSPDhalf-Stave";
8f8273a4 394 TString str1Tierce = "_1";
54c9a3d9 395 TString str2 = "/ITSSPDlay1-Ladder_";
108bd0fe 396
397 TString sector;
398 TString stave;
8f8273a4 399 TString halfStave;
108bd0fe 400 TString module;
401
b2e5530c 402 layerId = AliGeomManager::kSPD1;
403 modnum = 0;
404
8f8273a4 405 for(Int_t cSect = 0; cSect<10; cSect++) {
108bd0fe 406
407 sector = str0;
8f8273a4 408 sector += cSect+1; // this is one full sector
108bd0fe 409 strEntryName1 = strSPD;
410 strEntryName1 += 0;
411 strEntryName1 += strSector;
8f8273a4 412 strEntryName1 += cSect;
108bd0fe 413 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),sector.Data()))
54c9a3d9 414 AliFatal(Form("New lay 1: Unable to set alignable entry 1! %s::%s",
415 strEntryName1.Data(),sector.Data()));
416
8f8273a4 417 for(Int_t cStave=0; cStave<2; cStave++) {
108bd0fe 418
419 stave = sector;
420 stave += str1;
54c9a3d9 421 stave += cStave+1;
108bd0fe 422 strEntryName2 = strEntryName1;
423 strEntryName2 += strStave;
8f8273a4 424 strEntryName2 += cStave;
425
426 for(Int_t cHS=0; cHS<2; cHS++) {
427
428 halfStave = stave;
429 halfStave += str1Bis;
430 halfStave += cHS;
431 halfStave += str1Tierce;
432 strEntryName3 = strEntryName2;
433 strEntryName3 += strHalfStave;
434 strEntryName3 += cHS;
108bd0fe 435
54c9a3d9 436 if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(),
437 halfStave.Data()))
438 AliFatal(Form("New lay 1: Unable to set alignable entry 3! %s::%s",
439 strEntryName3.Data(),halfStave.Data()));
8f8273a4 440
441 for(Int_t cLad=0; cLad<2; cLad++) {
108bd0fe 442
b2e5530c 443 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
8f8273a4 444 module = halfStave;
445 module += str2;
54c9a3d9 446 module += cLad+cHS*2+1;
8f8273a4 447 strEntryName4 = strEntryName3;
448 strEntryName4 += strLadder;
449 strEntryName4 += cLad+cHS*2;
b2e5530c 450 if(!gGeoManager->SetAlignableEntry(strEntryName4.Data(),module.Data(),modUID))
54c9a3d9 451 AliFatal(Form("New lay 1: Unable to set alignable entry 4! %s::%s",
452 strEntryName4.Data(),module.Data()));
453
b2e5530c 454 SetT2Lmatrix(modUID, 0.0081, kTRUE, kTRUE);
54c9a3d9 455 // 0.0081 is the shift between the centers of alignable
456 // and sensitive volumes. It is directly extracted from
457 // the new SPD geometry
458 } // end for cLad
459 } // end for cHS
460 } // end for cStave
461 } // end for cSect
462
b2e5530c 463 layerId = AliGeomManager::kSPD2;
464 modnum = 0;
54c9a3d9 465 str1 = "/ITSSPDSensitiveVirtualvolumeM0_1/ITSSPDlay2-Stave_";
466 str2 = "/ITSSPDlay2-Ladder_";
8f8273a4 467
468 for(Int_t cSect = 0; cSect<10; cSect++) {
469
470 sector = str0;
471 sector += cSect+1; // this is one full sector
472 strEntryName1 = strSPD;
473 strEntryName1 += 1;
474 strEntryName1 += strSector;
475 strEntryName1 += cSect;
476
477 for(Int_t cStave=0; cStave<4; cStave++) {
478
479 stave = sector;
480 stave += str1;
54c9a3d9 481 stave += cStave+1;
8f8273a4 482 strEntryName2 = strEntryName1;
483 strEntryName2 += strStave;
484 strEntryName2 += cStave;
485
486 for(Int_t cHS=0; cHS<2; cHS++) {
487
488 halfStave = stave;
489 halfStave += str1Bis;
490 halfStave += cHS;
491 halfStave += str1Tierce;
108bd0fe 492 strEntryName3 = strEntryName2;
8f8273a4 493 strEntryName3 += strHalfStave;
494 strEntryName3 += cHS;
495
54c9a3d9 496 if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(),
497 halfStave.Data()))
498 AliFatal(Form("New lay 2: Unable to set alignable entry 3! %s::%s",
499 strEntryName3.Data(),halfStave.Data()));
108bd0fe 500
8f8273a4 501 for(Int_t cLad=0; cLad<2; cLad++) {
54c9a3d9 502
b2e5530c 503 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
8f8273a4 504 module = halfStave;
505 module += str2;
54c9a3d9 506 module += cLad+cHS*2 +1;
8f8273a4 507 strEntryName4 = strEntryName3;
508 strEntryName4 += strLadder;
509 strEntryName4 += cLad+cHS*2;
b2e5530c 510 if(!gGeoManager->SetAlignableEntry(strEntryName4.Data(),module.Data(),modUID))
54c9a3d9 511 AliFatal(Form("New lay 2: Unable to set alignable entry 4! %s::%s",
512 strEntryName4.Data(),module.Data()));
8f8273a4 513
b2e5530c 514 SetT2Lmatrix(modUID, -0.0081, kFALSE);
54c9a3d9 515 } // end for cLad
516 } // end for cHS
517 } // end for cStave
518 } // cSect
108bd0fe 519
8f8273a4 520 } else { // else old SPD geometry
521
108bd0fe 522 TString str0 = "ALIC_1/ITSV_1/ITSD_1/IT12_1/I12B_";
8f8273a4 523 TString str1 = "/I10B_";
524 TString str1Bis = "/L1H-STAVE";
525 TString str1Tierce = "_1";
526 TString str2 = "/I107_";
108bd0fe 527
528 TString sector;
529 TString stave;
8f8273a4 530 TString halfStave;
108bd0fe 531 TString module;
532
b2e5530c 533 layerId = AliGeomManager::kSPD1;
534 modnum = 0;
535
8f8273a4 536 for(Int_t cSect = 0; cSect<10; cSect++) {
108bd0fe 537
538 sector = str0;
8f8273a4 539 sector += cSect+1; // this is one full sector
108bd0fe 540 strEntryName1 = strSPD;
8f8273a4 541 strEntryName1 += 0;
108bd0fe 542 strEntryName1 += strSector;
8f8273a4 543 strEntryName1 += cSect;
108bd0fe 544 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),sector.Data()))
54c9a3d9 545 AliFatal(Form("Old lay1: Unable to set alignable entry 1! %s::%s",
546 strEntryName1.Data(),sector.Data()));
547
8f8273a4 548 for(Int_t cStave = 0; cStave<2; cStave++) {
54c9a3d9 549
108bd0fe 550 stave = sector;
551 stave += str1;
8f8273a4 552 stave += cStave+1;
108bd0fe 553 strEntryName2 = strEntryName1;
554 strEntryName2 += strStave;
8f8273a4 555 strEntryName2 += cStave;
54c9a3d9 556 // this is a stave
557 //printf("%s == %s\n",strEntryName2.Data(),stave.Data());
108bd0fe 558
8f8273a4 559 for(Int_t cHS=0; cHS<2; cHS++) {
560
561 halfStave = stave;
562 halfStave += str1Bis;
563 halfStave += cHS;
564 halfStave += str1Tierce;
108bd0fe 565 strEntryName3 = strEntryName2;
8f8273a4 566 strEntryName3 += strHalfStave;
567 strEntryName3 += cHS;
54c9a3d9 568 // this is a half-stave
569 //printf("%s == %s\n",strEntryName3.Data(),halfStave.Data());
570 if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(),
571 halfStave.Data()))
572 AliFatal(Form("Old lay 1: Unable to set alignable entry 3! %s::%s",
573 strEntryName3.Data(),halfStave.Data()));
108bd0fe 574
8f8273a4 575 for(Int_t cLadder = 0; cLadder<2; cLadder++) {
576
b2e5530c 577 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
8f8273a4 578 module = halfStave;
579 module += str2;
580 module += cLadder+cHS*2+1;
581 strEntryName4 = strEntryName3;
582 strEntryName4 += strLadder;
583 strEntryName4 += cLadder+cHS*2;
584 //printf("%s == %s\n",strEntryName4.Data(),module.Data());
b2e5530c 585 if(!gGeoManager->SetAlignableEntry(strEntryName4.Data(),module.Data(),modUID))
54c9a3d9 586 AliFatal(Form("Old lay 1: Unable to set alignable entry 4! %s::%s",
b2e5530c 587 strEntryName4.Data(),module.Data()));
8f8273a4 588
b2e5530c 589 SetT2Lmatrix(modUID, -fChip1*0.0001/2., kTRUE);
54c9a3d9 590 } // end for cLadder
591 } // end for cHS
592 } // end for cStave
593 } // end for cSect
8f8273a4 594
b2e5530c 595 layerId = AliGeomManager::kSPD2;
596 modnum = 0;
597
8f8273a4 598 str1Bis = "/L2H-STAVE";
599 str1 = "/I20B_";
600 str2 = "/I1D7_";
601
602 for(Int_t cSect = 0; cSect<10; cSect++) {
603
604 sector = str0;
605 sector += cSect+1; // this is one full sector
606 strEntryName1 = strSPD;
607 strEntryName1 += 1;
608 strEntryName1 += strSector;
609 strEntryName1 += cSect;
54c9a3d9 610 //if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),sector.Data()))
611 // AliFatal(Form("Unable to set alignable entry!!");
612 // we don't need the previous lines because the whole sector is
613 // already define with first layer ...
614
8f8273a4 615 for(Int_t cStave =0; cStave<4; cStave++) {
616
617 stave = sector;
618 stave += str1;
619 stave += cStave+1;
620 strEntryName2 = strEntryName1;
621 strEntryName2 += strStave;
622 strEntryName2 += cStave;
623
624 for(Int_t cHS=0; cHS<2; cHS++) {
625
626 halfStave = stave;
627 halfStave += str1Bis;
628 halfStave += cHS;
629 halfStave += str1Tierce;
630 strEntryName3 = strEntryName2;
631 strEntryName3 += strHalfStave;
632 strEntryName3 += cHS;
54c9a3d9 633 // this is a half-stave
634 //printf("%s == %s\n",strEntryName3.Data(),halfStave.Data());
635 if(!gGeoManager->SetAlignableEntry(strEntryName3.Data(),
636 halfStave.Data()))
637 AliFatal(Form("Old lay 2: Unable to set alignable entry 3! %s::%s",
638 strEntryName3.Data(),halfStave.Data()));
8f8273a4 639
640 for(Int_t cLad =0; cLad<2; cLad++) {
54c9a3d9 641
b2e5530c 642 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
8f8273a4 643 module = halfStave;
644 module += str2;
645 module += cLad+cHS*2+1;
646 strEntryName4 = strEntryName3;
647 strEntryName4 += strLadder;
648 strEntryName4 += cLad+cHS*2;
649 //printf("%s == %s\n",strEntryName4.Data(),module.Data());
b2e5530c 650 if(!gGeoManager->SetAlignableEntry(strEntryName4.Data(),module.Data(),modUID))
54c9a3d9 651 AliFatal(Form("Old lay2: Unable to set alignable entry 4! %s::%s",
652 strEntryName4.Data(),module.Data()));
8f8273a4 653
b2e5530c 654 SetT2Lmatrix(modUID, -fChip2*0.0001/2., kFALSE);
54c9a3d9 655 } // end for cLad
656 } // end for cHS
657 } // end for cStave
658 } // end for cSect
659 } // end if AliITSInitGeometry::SPSIsTGeoNative().
108bd0fe 660
661 //===== SDD layers =====
108bd0fe 662 if (AliITSInitGeometry::SDDIsTGeoNative()) { // new SDD geometry
663
b2e5530c 664 layerId = AliGeomManager::kSDD1;
665 modnum = 0;
108bd0fe 666 TString str0 = "/ALIC_1/ITSV_1/ITSsddLayer3_1/ITSsddLadd_"; // SDD layer1
667 TString str1 = "/ITSsddSensor3_";
108bd0fe 668 TString ladder;
3e49380a 669 TString sensor;
108bd0fe 670
671 for(Int_t c1 = 0; c1<14; c1++) {
672
673 ladder = str0;
674 ladder += c1; // the set of wafers from one ladder
675 strEntryName1 = strSDD;
676 strEntryName1 += 2;
677 strEntryName1 +=strLadder;
678 strEntryName1 += c1;
679 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
680 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
54c9a3d9 681 AliFatal(Form("Unable to set alignable entry 1! %s :: %s",
682 strEntryName1.Data(),ladder.Data()));
108bd0fe 683
684 for(Int_t c2 =0; c2<6; c2++) {
685
b2e5530c 686 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
3e49380a 687 sensor = ladder;
688 sensor += str1;
689 sensor += c2;
108bd0fe 690 strEntryName2 = strEntryName1;
691 strEntryName2 += strSensor;
692 strEntryName2 += c2;
693 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
3e49380a 694 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),sensor.Data(),modUID))
54c9a3d9 695 AliFatal(Form("Unable to set alignable entry 2! %s :: %s",
3e49380a 696 strEntryName2.Data(),sensor.Data()));
108bd0fe 697
b2e5530c 698 SetT2Lmatrix(modUID, 0, kFALSE, c2>=3);
108bd0fe 699 }
700 }
701
b2e5530c 702 layerId = AliGeomManager::kSDD2;
703 modnum = 0;
108bd0fe 704 str0 = "/ALIC_1/ITSV_1/ITSsddLayer4_1/ITSsddLadd_"; // SDD layer2
705 str1 = "/ITSsddSensor4_";
108bd0fe 706
707 for(Int_t c1 = 0; c1<22; c1++) {
708
709 ladder = str0;
710 ladder += c1; // the set of wafers from one ladder
711 strEntryName1 = strSDD;
712 strEntryName1 += 3;
713 strEntryName1 += strLadder;
714 strEntryName1 += c1;
715 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
716 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
54c9a3d9 717 AliFatal(Form("Unable to set alignable entry 1! %s :: %s",
718 strEntryName1.Data(),ladder.Data()));
108bd0fe 719
720 for(Int_t c2 =0; c2<8; c2++) {
721
b2e5530c 722 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
3e49380a 723 sensor = ladder;
724 sensor += str1;
725 sensor += c2;
108bd0fe 726 strEntryName2 = strEntryName1;
727 strEntryName2 += strSensor;
728 strEntryName2 += c2;
729 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
3e49380a 730 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),sensor.Data(),modUID))
54c9a3d9 731 AliFatal(Form("Unable to set alignable entry 2! %s :: %s",
3e49380a 732 strEntryName2.Data(),sensor.Data()));
108bd0fe 733
b2e5530c 734 SetT2Lmatrix(modUID, 0, kFALSE, c2>=4);
108bd0fe 735 }
736 }
737
bf210566 738 } else { // else old SDD geometry
108bd0fe 739
b2e5530c 740 layerId = AliGeomManager::kSDD1;
741 modnum = 0;
742
108bd0fe 743 TString str0 = "ALIC_1/ITSV_1/ITSD_1/IT34_1/I004_";
744 TString str1 = "/I302_";
745
746 TString ladder;
747 TString wafer;
748
749 for(Int_t c1 = 1; c1<=14; c1++){
750
751 ladder = str0;
752 ladder += c1; // the set of wafers from one ladder
753 strEntryName1 = strSDD;
754 strEntryName1 += 2;
755 strEntryName1 +=strLadder;
756 strEntryName1 += (c1-1);
757 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
54c9a3d9 758 AliFatal(Form("Unable to set alignable entry 1! %s :: %s",
759 strEntryName1.Data(),ladder.Data()));
108bd0fe 760
761 for(Int_t c2 =1; c2<=6; c2++){
762
b2e5530c 763 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
108bd0fe 764 wafer = ladder;
765 wafer += str1;
766 wafer += c2; // one wafer
767 strEntryName2 = strEntryName1;
768 strEntryName2 += strSensor;
769 strEntryName2 += (c2-1);
b2e5530c 770 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data(),modUID))
54c9a3d9 771 AliFatal(Form("Unable to set alignable entry 2! %s :: %s",
772 strEntryName2.Data(),wafer.Data()));
108bd0fe 773
b2e5530c 774 SetT2Lmatrix(modUID, 0, kFALSE);
108bd0fe 775 }
776 }
777
b2e5530c 778 layerId = AliGeomManager::kSDD2;
779 modnum = 0;
108bd0fe 780 str0 = "ALIC_1/ITSV_1/ITSD_1/IT34_1/I005_";
781 str1 = "/I402_";
782
783 for(Int_t c1 = 1; c1<=22; c1++){
784
785 ladder = str0;
786 ladder += c1; // the set of wafers from one ladder
787 strEntryName1 = strSDD;
788 strEntryName1 += 3;
789 strEntryName1 +=strLadder;
790 strEntryName1 += (c1-1);
791 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
54c9a3d9 792 AliFatal(Form("Unable to set alignable entry 1! %s :: %s",
793 strEntryName1.Data(),ladder.Data()));
108bd0fe 794
795 for(Int_t c2 =1; c2<=8; c2++){
796
b2e5530c 797 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
108bd0fe 798 wafer = ladder;
799 wafer += str1;
800 wafer += c2; // one wafer
801 strEntryName2 = strEntryName1;
802 strEntryName2 += strSensor;
803 strEntryName2 += (c2-1);
b2e5530c 804 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data(),modUID))
54c9a3d9 805 AliFatal(Form("Unable to set alignable entry 2! %s,%s",
806 strEntryName2.Data(),wafer.Data()));
108bd0fe 807
b2e5530c 808 SetT2Lmatrix(modUID, 0, kFALSE);
108bd0fe 809 }
810 }
108bd0fe 811 } // end SDD
812
8f8273a4 813 //===== SSD layers =====
bf210566 814 if (AliITSInitGeometry::SSDIsTGeoNative()) { // new SSD geometry
815
b2e5530c 816 layerId = AliGeomManager::kSSD1;
817 modnum = 0;
54c9a3d9 818 TString str0 = "/ALIC_1/ITSV_1/ITSssdLayer5_1/ITSssdLay5Ladd_";//SSD layer1
ef9451a3 819 TString str1 = "/ITSssdSensor5_";
bf210566 820 TString str2 = "";
821 TString ladder;
822 TString wafer;
823
824 for(Int_t c1 = 0; c1<34; c1++) {
825
826 ladder = str0;
827 ladder += c1; // the set of wafers from one ladder
828 strEntryName1 = strSSD;
829 strEntryName1 += 4;
830 strEntryName1 += strLadder;
831 strEntryName1 += c1;
832 //printf("%s == %s\n",strEntryName1.Data(),ladder.Data());
833 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
54c9a3d9 834 AliFatal(Form("Unable to set alignable entry 1! %s :: %s",
835 strEntryName1.Data(),ladder.Data()));
bf210566 836
837 for(Int_t c2 =0; c2<22; c2++) {
838
b2e5530c 839 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
bf210566 840 wafer = ladder;
841 wafer += str1;
842 wafer += c2;
843 //wafer += str2; // one wafer
844 strEntryName2 = strEntryName1;
845 strEntryName2 += strSensor;
846 strEntryName2 += c2;
847 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
b2e5530c 848 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data(),modUID))
54c9a3d9 849 AliFatal(Form("Unable to set alignable entry 2! %s :: %s",
850 strEntryName2.Data(),wafer.Data()));
bf210566 851
b2e5530c 852 SetT2Lmatrix(modUID, 0, kFALSE, kFALSE);
bf210566 853 }
854 }
855
b2e5530c 856 layerId = AliGeomManager::kSSD2;
857 modnum = 0;
bf210566 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
b2e5530c 877 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
bf210566 878 wafer = ladder;
879 wafer += str1;
880 wafer += c2;
881 //wafer += str2; // one wafer
882 strEntryName2 = strEntryName1;
883 strEntryName2 += strSensor;
884 strEntryName2 += c2;
885 //printf("%s == %s\n",strEntryName2.Data(),wafer.Data());
b2e5530c 886 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data(),modUID))
54c9a3d9 887 AliFatal(Form("Unable to set alignable entry 2! %s :: %s",
888 strEntryName2.Data(),wafer.Data()));
bf210566 889
b2e5530c 890 SetT2Lmatrix(modUID, 0, kFALSE, kFALSE);
bf210566 891 }
892 }
893
894 } else { // else old SSD geometry
b2e5530c 895
896 layerId = AliGeomManager::kSSD1;
897 modnum = 0;
108bd0fe 898 TString str0 = "ALIC_1/ITSV_1/ITSD_1/IT56_1/I565_";
899 TString str1 = "/I562_";
108bd0fe 900 TString ladder;
901 TString wafer;
902
903 for(Int_t c1 = 1; c1<=34; c1++){
bf210566 904
108bd0fe 905 ladder = str0;
906 ladder += c1; // the set of wafers from one ladder
907 strEntryName1 = strSSD;
908 strEntryName1 += 4;
909 strEntryName1 +=strLadder;
910 strEntryName1 += (c1-1);
911 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
54c9a3d9 912 AliFatal(Form("Unable to set alignable entry 1! %s :: %s",
913 strEntryName1.Data(),ladder.Data()));
914
108bd0fe 915 for(Int_t c2 = 1; c2<=22; c2++){
bf210566 916
b2e5530c 917 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
108bd0fe 918 wafer = ladder;
919 wafer += str1;
920 wafer += c2; // one wafer
921 strEntryName2 = strEntryName1;
922 strEntryName2 += strSensor;
923 strEntryName2 += (c2-1);
b2e5530c 924 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data(),modUID))
54c9a3d9 925 AliFatal(Form("Unable to set alignable entry 2! %s :: %s",
926 strEntryName2.Data(),wafer.Data()));
927
b2e5530c 928 SetT2Lmatrix(modUID, 0, kFALSE);
108bd0fe 929 }
930 }
bf210566 931
b2e5530c 932 layerId = AliGeomManager::kSSD2;
933 modnum = 0;
bf210566 934 str0 = "ALIC_1/ITSV_1/ITSD_1/IT56_1/I569_";
935 str1 = "/I566_";
936
108bd0fe 937 for(Int_t c1 = 1; c1<=38; c1++){
bf210566 938
108bd0fe 939 ladder = str0;
940 ladder += c1; // the set of wafers from one ladder
941 strEntryName1 = strSSD;
942 strEntryName1 += 5;
943 strEntryName1 +=strLadder;
944 strEntryName1 += (c1-1);
945 if(!gGeoManager->SetAlignableEntry(strEntryName1.Data(),ladder.Data()))
54c9a3d9 946 AliFatal(Form("Unable to set alignable entry 1! %s :: %s",
947 strEntryName1.Data(),ladder.Data()));
948
108bd0fe 949 for(Int_t c2 = 1; c2<=25; c2++){
bf210566 950
b2e5530c 951 modUID = AliGeomManager::LayerToVolUID(layerId,modnum++);
108bd0fe 952 wafer = ladder;
953 wafer += str1;
954 wafer += c2; // one wafer
955 strEntryName2 = strEntryName1;
956 strEntryName2 += strSensor;
957 strEntryName2 += (c2-1);
b2e5530c 958 if(!gGeoManager->SetAlignableEntry(strEntryName2.Data(),wafer.Data(),modUID))
54c9a3d9 959 AliFatal(Form("Unable to set alignable entry 2! %s :: %s",
960 strEntryName2.Data(),wafer.Data()));
961
b2e5530c 962 SetT2Lmatrix(modUID, 0, kFALSE);
108bd0fe 963 }
964 }
bf210566 965 } // end SSD geometry
108bd0fe 966}
bf210566 967
108bd0fe 968//______________________________________________________________________
108bd0fe 969void AliITSv11Hybrid::CreateGeometry() {
970
333c948a 971 // Create the geometry and insert it in ALIC
972 // It calls first the CreateOldGeometry() routine which add the
973 // pieces coming from the old v10 geometry. Then the pieces from
974 // the new geometry are inserting in the mother volume ITSV.
975
108bd0fe 976 TGeoManager *geoManager = gGeoManager;
977
978 CreateOldGeometry();
108bd0fe 979
b0c0f648 980 TGeoVolume *vITS = geoManager->GetVolume("ITSV");
bf210566 981
982
012f0f4c 983 const Char_t *cvsDate="$Date$";
984 const Char_t *cvsRevision="$Revision$";
7ab0715c 985 const Int_t kLength=100;
986 Char_t vstrng[kLength];
987 if(fInitGeom.WriteVersionString(vstrng,kLength,(AliITSVersion_t)IsVersion(),
012f0f4c 988 fMinorVersion,cvsDate,cvsRevision))
989 vITS->SetTitle(vstrng);
990
8f8273a4 991 if (AliITSInitGeometry::SPDIsTGeoNative()) {
992 fSPDgeom->SPDSector(vITS);
993 }
994
108bd0fe 995 if (AliITSInitGeometry::SDDIsTGeoNative()) {
996 fSDDgeom->Layer3(vITS);
997 fSDDgeom->Layer4(vITS);
40e2e5ea 998 fSDDgeom->ForwardLayer3(vITS);
999 fSDDgeom->ForwardLayer4(vITS);
bf210566 1000 }
cc8a4c78 1001
bf210566 1002 if (AliITSInitGeometry::SSDIsTGeoNative()) {
1003 fSSDgeom->Layer5(vITS);
1004 fSSDgeom->Layer6(vITS);
e5bf64ae 1005 fSSDgeom->LadderSupportLayer5(vITS);
1006 fSSDgeom->LadderSupportLayer6(vITS);
cc8a4c78 1007 fSSDgeom->EndCapSupportSystemLayer6(vITS);
1008 fSSDgeom->EndCapSupportSystemLayer5(vITS);
108bd0fe 1009 }
b0c0f648 1010
1011 if (AliITSInitGeometry::SPDshieldIsTGeoNative())
a275e8ba 1012 fSupgeom->SPDCone(vITS);
7d6c23de 1013
1014 if (AliITSInitGeometry::SDDconeIsTGeoNative())
1015 fSupgeom->SDDCone(vITS);
3a299c65 1016
1017 if (AliITSInitGeometry::SSDconeIsTGeoNative())
1018 fSupgeom->SSDCone(vITS);
cc8a4c78 1019
1020 if (AliITSInitGeometry::ServicesAreTGeoNative()) {
1021 fSDDgeom->SDDCables(vITS);
71014609 1022 fSSDgeom->SSDCables(vITS);
798b4e0c 1023 fSupgeom->ServicesCableSupport(vITS);
cc8a4c78 1024 }
108bd0fe 1025}
1026
1027//______________________________________________________________________
1028void AliITSv11Hybrid::CreateOldGeometry(){
333c948a 1029 // This routine defines and creates some pieces of the geometry
1030 // of version 10 (AliITSvPPRasymmFMD)
108bd0fe 1031
1032 //Begin_Html
1033 /*
1034 <img src="picts/ITS/ITS_full_vPPRasymm.jpg">
1035 </pre>
1036 <br clear=left>
1037 <font size=+2 color=red>
1038 <p>This shows the full ITS geometry.
1039 </font>
1040 <img src="picts/ITS/ITS_SPD_Barrel_vPPRasymm.jpg">
1041 </pre>
1042 < br clear=left>
1043 <font size=+2 color=red>
1044 <p>This shows the full SPD Barrel of the ITS geometry.
1045 </font>
1046 <img src="picts/ITS/ITS_SDD_Barrel_vPPRasymm.jpg">
1047 </pre>
1048 <br clear=left>
1049 <font size=+2 color=red>
1050 <p>This shows the full SDD Barrel of the ITS geometry.
1051 </font>
1052 <img src="picts/ITS/ITS_SSD_Barrel_vPPRasymm.jpg">
1053 </pre>
1054 <br clear=left>
1055 <font size=+2 color=red>
1056 <p>This shows the full SSD Barrel of the ITS geometry.
1057 </font>
1058 */
1059 //End_Html
1060 //INNER RADII OF THE SILICON LAYERS
1061 // Float_t rl[6] = { 3.8095,7.,15.,24.,38.1,43.5765 };
7ab0715c 1062 //THICKNESSES OF LAYERS (in % radiation kLength)
108bd0fe 1063 Float_t drl[6] = { 1.03,1.03,0.94,0.95,0.91,0.87 };
1064 //HALF LENGTHS OF LAYERS
1065 // Float_t dzl[6] = { 14.35,14.35,25.1,32.1,49.405,55.27 };
1066 //LENGTHS OF END-LADDER BOXES (ALL INCLUDED)
1067 // Float_t dzb[6] = { 12.4,12.4,13.5,15.,7.5,7.5 };
1068 //THICKNESSES OF END-LADDER BOXES (ALL INCLUDED)
1069 // Float_t drb[6] = { rl[1]-rl[0],0.2,5.,5.,4.,4. };
1070
1071
1072 Float_t dits[100], rlim, zmax;
1073 // Float_t zpos;
1074 // Float_t pcits[50]
1075 Float_t ztpc;
1076 Int_t idrotm[1999], i;
1077 Float_t dgh[100];
1078
1079 // Define some variables for SPD
1080
1081 Float_t dits1[3], di101[3], di107[3], di10b[3], di106[3];// for layer 1
1082 //Float_t di103[3], di10a[3], di102[3]; // for layer 1
1083 Float_t dits2[3], di1d1[3], di1d7[3], di20b[3], di1d6[3];// for layer 2
1084 //Float_t di1d3[3], di20a[3], di1d2[3]; // for layer 2
1085 Float_t di108[3];
1086 //Float_t di104[3]; // for both layers
1087
1088 Float_t ddet1=200.; // total detector thickness on layer 1 (micron)
1089 Float_t dchip1=200.; // total chip thickness on layer 1 (micron)
1090
1091 Float_t ddet2=200.; // total detector thickness on layer 2 (micron)
1092 Float_t dchip2=200.; // total chip thickness on layer 2 (micron)
1093
1094 Float_t dbus=300.; // total bus thickness on both layers (micron)
1095
1096 ddet1 = GetThicknessDet1();
1097 ddet2 = GetThicknessDet2();
1098 dchip1 = GetThicknessChip1();
1099 dchip2 = GetThicknessChip2();
1100
1101 if(ddet1 < 100. || ddet1 > 300.) {
1102 AliWarning("The detector thickness for layer 1 is outside ");
1103 AliWarning("the range of [100,300] microns. The default value of 200 microns ");
1104 AliWarning("will be used.");
1105 ddet1=200.;
1106 } // end if
1107
1108 if(ddet2 < 100. || ddet2 > 300.) {
1109 AliWarning("The detector thickness for layer 2 is outside ");
1110 AliWarning("the range of [100,300] microns. The default value of 200 microns ");
1111 AliWarning("will be used.");
1112 ddet2=200.;
1113 }// end if
1114
1115 if(dchip1 < 100. || dchip1 > 300.) {
1116 AliWarning("The chip thickness for layer 1 is outside");
1117 AliWarning("the range of [100,300] microns. The default value of 200 microns");
1118 AliWarning("will be used.");
1119 dchip1=200.;
1120 }// end if
1121
1122 if(dchip2 < 100. || dchip2 > 300.) {
1123 AliWarning("The chip thickness for layer 2 is outside");
1124 AliWarning("the range of [100,300] microns. The default value of 200 microns");
1125 AliWarning("will be used");
1126 dchip2=200.;
1127 }// end if
1128
1129 Int_t rails = 1; // flag for rails (1 --> rails in; 0 --> rails out)
1130
1131 Int_t fluid = 1; // flag for the cooling fluid (1 --> water; 0 --> freon)
1132 // This option is maintained for SDD and SSD only
1133 // For SPD the cooling liquid is C4F10
1134 rails = GetRails();
1135
1136 fluid = GetCoolingFluid();
1137
1138 if(rails != 0 && rails != 1) {
1139 AliWarning("The switch for rails is not set neither");
1140 AliWarning("to 0 (rails out) nor to 1 (rails in). The default value of");
1141 AliWarning("1 (rails in) will be used");
1142 rails=1;
1143 }// end if
1144
1145
1146 AliDebug(1,Form("Detector thickness on layer 1 is set to %f microns",ddet1));
1147 AliDebug(1,Form("Chip thickness on layer 1 is set to %f microns",dchip1));
1148 AliDebug(1,Form("Detector thickness on layer 2 is set to %f microns",ddet2));
1149 AliDebug(1,Form("Chip thickness on layer 2 is set to %f microns",dchip2));
1150 if(rails == 0 ) {
1151 AliDebug(1,"Rails are out.");
1152 } else {
1153 AliDebug(1,"Rails are in.");
1154 }// end if
1155
1156 ddet1 = ddet1*0.0001/2.; // conversion from tot length in um to half in cm
1157 ddet2 = ddet2*0.0001/2.; // conversion from tot length in um to half in cm
1158 dchip1 = dchip1*0.0001/2.;// conversion from tot length in um to half in cm
1159 dchip2 = dchip2*0.0001/2.;// conversion from tot length in um to half in cm
1160 dbus = dbus*0.0001/2.; // conversion from tot length in um to half in cm
1161
1162 Float_t deltax, deltay;
1163
1164 //Int_t thickness = fMinorVersion/10;
1165 //Int_t option = fMinorVersion - 10*thickness;
1166
1167
1168 // Define some variables for SDD
1169
1170 Float_t sin30, cos30;
1171
1172 // SDD electronics+services main volumes
1173 Float_t iI018dits[3], iI024dits[3], iI047dits[3], iI048dits[3];
1174
1175 // SDD detector ladder
1176
1177 Float_t iI302dits[3], iI402dits[3], iI004dits[3], iI005dits[3];
1178 Float_t ySDDsep = 0.20;
1179 Float_t ySDD;
1180 Int_t iSDD;
1181 Float_t zSDDlay3[6] = { 18.55, 10.95, 3.70, -3.70,-11.20,-18.35};
1182 Float_t zSDDlay4[8] = { 25.75, 18.60, 11.00, 3.70, -3.70,-11.20,
1183 -18.45,-26.05};
1184
1185 // ladder foot and end-ladder (frame and cooling)
1186 Float_t iI028dits[3], iI420dits[3], iI421dits[3], iI422dits[6], iI423dits[3];
1187 Float_t iI424dits[3], xI424, yI424;
1188 Float_t iI425dits[3];
1189 Int_t indI425;
1190 Float_t iI029dits[4], iI030dits[4], iI031dits[3], iI032dits[3];
1191
1192 // SDD ladder frame and cooling
1193 Float_t iSDDCoolPipe[3] = {1.7000, -0.5500, 0.0000};
1194 Float_t iI035dits[3], iI037dits[3], iI038dits[3];
1195 Float_t iI039dits[3], xI039, yI039;
1196 Float_t iI041dits[5];
1197
1198 // SDD hybrid, chips and capacitors
1199 Float_t iI050dits[3], xI050, yI050;
1200 Float_t iI052dits[3], xI052, yI052;
1201 Float_t iI042dits[3], xI042, yI042;
1202 Float_t xI042space = 0.17;
1203 Float_t iI043dits[3], xI043, yI043;
1204 Float_t xI043space = 0.17;
1205 Float_t zchip, zChipSpace;
1206 Float_t iI051dits[3], xI051, yI051, zI051, yI051space, xcap;
1207 Int_t ichip, icap;
1208
1209 // SDD microcables
1210 Float_t iI044dits[4], xI044, yI044, volI044;
1211 Float_t xHV, yHV, zHV, xLV, yLV, zLV;
1212 Char_t nameHV[5], nameLV[5];
1213
1214
1215 // Define media off-set
1216
1217 Int_t *idtmed = fIdtmed->GetArray()-199;
1218
1219
1220 // Rotation matrices
1221
1222 // SPD - option 'b' (this is the default)
1223
1224 //if (option == 2) {
1225 if (! AliITSInitGeometry::SPDIsTGeoNative()) {
1226 AliMatrix(idrotm[201],90.0,0.0,90.0,90.0,0.0,0.0);
1227 AliMatrix(idrotm[202],90.0,90.0,90.0,0.0,0.0,0.0);
1228 AliMatrix(idrotm[203],90.0,350.0,90.0,260.0,0.0,0.0);
1229 AliMatrix(idrotm[204],90.0,170.0,90.0,80.0,0.0,0.0);
1230 AliMatrix(idrotm[205],90.0,10.0,90.0,100.0,0.0,0.0);
1231 AliMatrix(idrotm[206],90.0,190.0,90.0,280.0,0.0,0.0);
1232 AliMatrix(idrotm[207],90.0,342.0,90.0,72.0,0.0,0.0);
1233 AliMatrix(idrotm[208],90.0,156.999893,90.0,246.999893,0.0,0.0);
1234 AliMatrix(idrotm[209],90.0,147.999802,90.0,237.999893,0.0,0.0);
1235 AliMatrix(idrotm[210],90.0,138.999802,90.0,228.999802,0.0,0.0);
1236 AliMatrix(idrotm[211],90.0,129.999802,90.0,219.999802,0.0,0.0);
1237 AliMatrix(idrotm[212],90.0,36.7896,90.0,126.789597,0.0,0.0);
1238 AliMatrix(idrotm[213],90.0,343.579712,90.0,73.579697,0.0,0.0);
1239 AliMatrix(idrotm[214],90.0,95.413696,90.0,185.413696,0.0,0.0);
1240 AliMatrix(idrotm[215],90.0,5.4141,90.0,95.414101,0.0,0.0);
1241 AliMatrix(idrotm[216],90.0,318.296906,90.0,48.296902,0.0,0.0);
1242 AliMatrix(idrotm[217],90.0,67.000099,90.0,157.000107,0.0,0.0);
1243 AliMatrix(idrotm[218],90.0,337.003998,90.0,67.003998,0.0,0.0);
1244 AliMatrix(idrotm[219],90.0,247.000305,90.0,337.000305,0.0,0.0);
1245 AliMatrix(idrotm[220],90.0,305.633514,90.0,35.633499,0.0,0.0);
1246
1247 AliMatrix(idrotm[221],90.0,58.000198,90.0,148.000198,0.0,0.0);
1248 AliMatrix(idrotm[222],90.0,327.997101,90.0,57.997101,0.0,0.0);
1249 AliMatrix(idrotm[223],90.0,237.994202,90.0,327.994202,0.0,0.0);
1250 AliMatrix(idrotm[224],90.0,296.627502,90.0,26.627399,0.0,0.0);
1251 AliMatrix(idrotm[225],90.0,48.994099,90.0,138.994095,0.0,0.0);
1252 AliMatrix(idrotm[226],90.0,318.990997,90.0,48.991001,0.0,0.0);
1253 AliMatrix(idrotm[227],90.0,228.988205,90.0,318.98819,0.0,0.0);
1254 AliMatrix(idrotm[228],90.0,287.621399,90.0,17.621401,0.0,0.0);
1255 AliMatrix(idrotm[229],90.0,39.988098,90.0,129.988098,0.0,0.0);
1256 AliMatrix(idrotm[230],90.0,309.984985,90.0,39.985001,0.0,0.0);
1257 AliMatrix(idrotm[231],90.0,327.2612,90.0,57.2612,0.0,0.0);
1258 AliMatrix(idrotm[232],90.0,237.261398,90.0,327.261414,0.0,0.0);
1259 AliMatrix(idrotm[233],90.0,252.000504,90.0,342.000488,0.0,0.0);
1260 AliMatrix(idrotm[234],90.0,71.9991,90.0,161.9991,0.0,0.0);
1261 AliMatrix(idrotm[235],90.0,270.0,90.0,0.0,0.0,0.0);
1262 AliMatrix(idrotm[236],90.0,180.013702,90.0,270.013702,0.0,0.0);
1263 AliMatrix(idrotm[237],90.0,90.0,90.0,180.0,0.0,0.0);
1264 AliMatrix(idrotm[238],90.0,180.0,90.0,270.0,0.0,0.0);
1265 AliMatrix(idrotm[239],90.0,162.0,90.0,252.0,0.0,0.0);
1266 AliMatrix(idrotm[240],90.0,310.0,90.0,40.0,0.0,0.0);
1267 AliMatrix(idrotm[241],90.0,319.0,90.0,49.0,0.0,0.0);
1268 AliMatrix(idrotm[242],90.0,328.0,90.0,58.0,0.0,0.0);
1269 AliMatrix(idrotm[243],90.0,337.0,90.0,67.0,0.0,0.0);
1270 AliMatrix(idrotm[244],90.0,216.0,90.0,306.0,0.0,0.0);
1271 AliMatrix(idrotm[245],90.0,36.0,90.0,126.0,0.0,0.0);
1272 AliMatrix(idrotm[246],90.0,108.0,90.0,198.0,0.0,0.0);
1273 AliMatrix(idrotm[247],90.0,144.0,90.0,234.0,0.0,0.0);
1274 AliMatrix(idrotm[248],90.0,288.0,90.0,18.0,0.0,0.0);
1275 AliMatrix(idrotm[249],90.0,324.0,90.0,54.0,0.0,0.0);
1276 AliMatrix(idrotm[1003],90.0,73.5,90.0,163.5,0.0,0.0);
1277 AliMatrix(idrotm[1011],90.0,342.0,90.0,72.0,0.0,0.0);
1278 AliMatrix(idrotm[1039],90.0,72.0,90.0,162.0,0.0,0.0);
1279 AliMatrix(idrotm[1043],90.0,66.91,90.0,156.91,0.0,0.0);
1280 AliMatrix(idrotm[1065],90.0,144.0,90.0,234.0,0.0,0.0);
1281 AliMatrix(idrotm[1078],90.0,180.0,90.0,270.0,0.0,0.0);
1282 AliMatrix(idrotm[1088],90.0,57.41,90.0,147.41,0.0,0.0);
1283 AliMatrix(idrotm[1089],90.0,333.0,90.0,63.0,0.0,0.0);
1284 AliMatrix(idrotm[1090],90.0,351.0,90.0,81.0,0.0,0.0);
1285 AliMatrix(idrotm[1091],90.0,216.0,90.0,306.0,0.0,0.0);
1286 AliMatrix(idrotm[1092],90.0,27.0,90.0,117.0,0.0,0.0);
1287 AliMatrix(idrotm[1093],90.0,18.0,90.0,108.0,0.0,0.0);
1288 AliMatrix(idrotm[1094],90.0,9.0,90.0,99.0,0.0,0.0);
1289 AliMatrix(idrotm[1104],90.0,252.0,90.0,342.0,0.0,0.0);
1290 AliMatrix(idrotm[1106],90.0,36.0,90.0,126.0,0.0,0.0);
1291 AliMatrix(idrotm[1107],90.0,108.0,90.0,198.0,0.0,0.0);
1292 AliMatrix(idrotm[1108],90.0,324.0,90.0,54.0,180.0,0.0);
1293 AliMatrix(idrotm[1109],90.0,0.0,90.0,90.0,180.0,0.0);
1294 AliMatrix(idrotm[1110],90.0,36.0,90.0,126.0,180.0,0.0);
1295 AliMatrix(idrotm[1111],90.0,72.0,90.0,162.0,180.0,0.0);
1296 AliMatrix(idrotm[1112],90.0,108.0,90.0,198.0,180.0,0.0);
1297 AliMatrix(idrotm[1113],90.0,144.0,90.0,234.0,180.0,0.0);
1298 AliMatrix(idrotm[1114],90.0,180.0,90.0,270.0,180.0,0.0);
1299 AliMatrix(idrotm[1115],90.0,216.0,90.0,306.0,180.0,0.0);
1300 AliMatrix(idrotm[1116],90.0,252.0,90.0,342.0,180.0,0.0);
1301 AliMatrix(idrotm[1117],90.0,288.0,90.0,18.0,0.0,0.0);
1302 AliMatrix(idrotm[1118],90.0,288.0,90.0,18.0,180.0,0.0);
1303 AliMatrix(idrotm[1130],90.0,324.0,90.0,54.0,0.0,0.0);
1304 }// end if option==2
1305
1306 // SDD
1307 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
1308 AliMatrix(idrotm[301],0.0,0.0,90.0,90.0,90.0,180.0);
1309 AliMatrix(idrotm[302],0.0,0.0,90.0,90.0,90.0,0.0);
1310 AliMatrix(idrotm[303],180.0,0.0,90.0,90.0,90.0,0.0);
1311 AliMatrix(idrotm[304],180.0,0.0,90.0,90.0,90.0,180.0);
1312 AliMatrix(idrotm[305],90.0,347.14,90.0,77.14,0.0,0.0);
1313 AliMatrix(idrotm[306],90.0,321.43,90.0,51.43,0.0,0.0);
1314 AliMatrix(idrotm[307],90.0,295.71,90.0,25.71,0.0,0.0);
1315 AliMatrix(idrotm[308],90.0,244.29,90.0,334.29,0.0,0.0);
1316 AliMatrix(idrotm[309],90.0,218.57,90.0,308.57,0.0,0.0);
1317 AliMatrix(idrotm[310],90.0,167.14,90.0,257.14,0.0,0.0);
1318 AliMatrix(idrotm[311],90.0,141.43,90.0,231.43,0.0,0.0);
1319 AliMatrix(idrotm[312],90.0,0.0,0.0,0.0,90.0,270.0);
1320 AliMatrix(idrotm[313],90.0,115.71,90.0,205.71,0.0,0.0);
1321 AliMatrix(idrotm[314],90.0,335.45,90.0,65.45,0.0,0.0);
1322 AliMatrix(idrotm[315],90.0,319.09,90.0,49.09,0.0,0.0);
1323 AliMatrix(idrotm[316],90.0,302.73,90.0,32.73,0.0,0.0);
1324 AliMatrix(idrotm[317],90.0,286.36,90.0,16.36,0.0,0.0);
1325 AliMatrix(idrotm[318],90.0,270.0,90.0,360.0,0.0,0.0);
1326 AliMatrix(idrotm[319],90.0,253.64,90.0,343.64,0.0,0.0);
1327 AliMatrix(idrotm[320],90.0,237.27,90.0,327.27,0.0,0.0);
1328 AliMatrix(idrotm[321],90.0,12.86,90.0,102.86,0.0,0.0);
1329 AliMatrix(idrotm[322],90.0,220.91,90.0,310.91,0.0,0.0);
1330 AliMatrix(idrotm[323],90.0,204.55,90.0,294.55,0.0,0.0);
1331 AliMatrix(idrotm[324],90.0,188.18,90.0,278.18,0.0,0.0);
1332 AliMatrix(idrotm[325],90.0,171.82,90.0,261.82,0.0,0.0);
1333 AliMatrix(idrotm[326],90.0,155.45,90.0,245.45,0.0,0.0);
1334 AliMatrix(idrotm[327],90.0,139.09,90.0,229.09,0.0,0.0);
1335 AliMatrix(idrotm[328],90.0,122.73,90.0,212.73,0.0,0.0);
1336 AliMatrix(idrotm[329],90.0,106.36,90.0,196.36,0.0,0.0);
1337 AliMatrix(idrotm[330],90.0,73.64,90.0,163.64,0.0,0.0);
1338 AliMatrix(idrotm[331],90.0,40.91,90.0,130.91,0.0,0.0);
1339 AliMatrix(idrotm[332],90.0,24.55,90.0,114.55,0.0,0.0);
1340 AliMatrix(idrotm[333],90.0,38.57,90.0,128.57,0.0,0.0);
1341 AliMatrix(idrotm[334],90.0,351.82,90.0,81.82,0.0,0.0);
1342 AliMatrix(idrotm[335],90.0,8.18,90.0,98.18,0.0,0.0);
1343 AliMatrix(idrotm[336],90.0,64.29,90.0,154.29,0.0,0.0);
1344 AliMatrix(idrotm[337],111.0,300.0,21.0,300.0,90.0,30.0);
1345 AliMatrix(idrotm[338],69.0,240.0,159.0,240.0,90.0,150.0);
1346 AliMatrix(idrotm[339],111.0,240.0,21.0,240.0,90.0,150.0);
1347 AliMatrix(idrotm[340],69.0,300.0,159.0,300.0,90.0,30.0);
1348 AliMatrix(idrotm[341],128.0,0.0,38.0,0.0,90.0,270.0);
1349 AliMatrix(idrotm[342],90.0,240.0,180.0,0.0,90.0,330.);
1350 AliMatrix(idrotm[343],90.0,120.0,180.0,0.0,90.0,210.0);
1351 AliMatrix(idrotm[344],90.0,0.0,180.0,0.0,90.0,90.0);
1352 AliMatrix(idrotm[345],90.0,180.0,90.0,90.0,0.0,0.0);
1353 AliMatrix(idrotm[346],90.0,300.0,90.0,30.0,0.0,0.0);
1354 AliMatrix(idrotm[347],90.0,240.0,90.0,150.0,0.0,0.0);
1355 AliMatrix(idrotm[348],90.0,180.0,0.0,0.0,90.0,270.0);
1356 AliMatrix(idrotm[349],90.0,235.0,90.0,145.0,0.0,0.0);
1357 AliMatrix(idrotm[350],90.0,90.0,90.0,180.0,0.0,0.0);
1358 AliMatrix(idrotm[351],90.0,305.0,90.0,35.0,0.0,0.0);
1359 AliMatrix(idrotm[352],0.0,0.0,90.0,0.0,90.0,90.0);
1360 AliMatrix(idrotm[353],90.0,60.0,90.0,150.0,0.0,0.0);
1361 AliMatrix(idrotm[354],90.0,120.0,90.0,30.0,0.0,0.0);
1362 AliMatrix(idrotm[355],90.0,180.0,90.0,90.0,180.0,0.0);
1363 AliMatrix(idrotm[356],90.0,270.0,90.0,0.0,0.0,0.0);
1364 AliMatrix(idrotm[366],90.0,57.27,90.0,147.27,0.0,0.0);
1365 AliMatrix(idrotm[386],90.0,192.86,90.0,282.86,0.0,0.0);
1366 }
1367
1368 // SSD
1369 if (! AliITSInitGeometry::SSDIsTGeoNative()) {
1370 AliMatrix(idrotm[501],90.0,148.24,90.0,238.24,0.0,0.0);
1371 AliMatrix(idrotm[503],90.0,137.65,90.0,227.65,0.0,0.0);
1372 AliMatrix(idrotm[504],90.0,127.06,90.0,217.06,0.0,0.0);
1373 AliMatrix(idrotm[505],90.0,116.47,90.0,206.47,0.0,0.0);
1374 AliMatrix(idrotm[506],90.0,105.88,90.0,195.88,0.0,0.0);
1375 AliMatrix(idrotm[507],90.0,95.29,90.0,185.29,0.0,0.0);
1376 AliMatrix(idrotm[508],90.0,84.71,90.0,174.71,0.0,0.0);
1377 AliMatrix(idrotm[509],90.0,74.12,90.0,164.12,0.0,0.0);
1378 AliMatrix(idrotm[510],90.0,63.53,90.0,153.53,0.0,0.0);
1379 AliMatrix(idrotm[511],90.0,52.94,90.0,142.94,0.0,0.0);
1380 AliMatrix(idrotm[512],90.0,42.35,90.0,132.35,0.0,0.0);
1381 AliMatrix(idrotm[513],90.0,31.76,90.0,121.76,0.0,0.0);
1382 AliMatrix(idrotm[514],90.0,10.59,90.0,100.59,0.0,0.0);
1383 AliMatrix(idrotm[515],90.0,349.41,90.0,79.41,0.0,0.0);
1384 AliMatrix(idrotm[516],90.0,338.82,90.0,68.82,0.0,0.0);
1385 AliMatrix(idrotm[517],90.0,328.24,90.0,58.24,0.0,0.0);
1386 AliMatrix(idrotm[518],90.0,317.65,90.0,47.65,0.0,0.0);
1387 AliMatrix(idrotm[519],90.0,307.06,90.0,37.06,0.0,0.0);
1388 AliMatrix(idrotm[520],90.0,296.47,90.0,26.47,0.0,0.0);
1389 AliMatrix(idrotm[521],90.0,285.88,90.0,15.88,0.0,0.0);
1390 AliMatrix(idrotm[522],90.0,275.29,90.0,5.29,0.0,0.0);
1391 AliMatrix(idrotm[523],90.0,264.71,90.0,354.71,0.0,0.0);
1392 AliMatrix(idrotm[524],90.0,254.12,90.0,344.12,0.0,0.0);
1393 AliMatrix(idrotm[525],90.0,243.53,90.0,333.53,0.0,0.0);
1394 AliMatrix(idrotm[526],90.0,232.94,90.0,322.94,0.0,0.0);
1395 AliMatrix(idrotm[527],90.0,222.35,90.0,312.35,0.0,0.0);
1396 AliMatrix(idrotm[528],90.0,211.76,90.0,301.76,0.0,0.0);
1397 AliMatrix(idrotm[529],90.0,190.59,90.0,280.59,0.0,0.0);
1398 AliMatrix(idrotm[530],90.0,169.41,90.0,259.41,0.0,0.0);
1399 AliMatrix(idrotm[531],90.0,158.82,90.0,248.82,0.0,0.0);
1400 AliMatrix(idrotm[532],90.0,360.0,90.0,90.0,0.0,0.0);
1401 AliMatrix(idrotm[533],90.0,180.0,90.0,270.0,0.0,0.0);
1402 AliMatrix(idrotm[534],90.0,189.47,90.0,279.47,0.0,0.0);
1403 AliMatrix(idrotm[535],90.0,198.95,90.0,288.95,0.0,0.0);
1404 AliMatrix(idrotm[537],90.0,217.89,90.0,307.89,0.0,0.0);
1405 AliMatrix(idrotm[538],90.0,227.37,90.0,317.37,0.0,0.0);
1406 AliMatrix(idrotm[539],90.0,236.84,90.0,326.84,0.0,0.0);
1407 AliMatrix(idrotm[540],90.0,246.32,90.0,336.32,0.0,0.0);
1408 AliMatrix(idrotm[541],90.0,255.79,90.0,345.79,0.0,0.0);
1409 AliMatrix(idrotm[542],90.0,265.26,90.0,355.26,0.0,0.0);
1410 AliMatrix(idrotm[543],90.0,274.74,90.0,4.74,0.0,0.0);
1411 AliMatrix(idrotm[544],90.0,284.21,90.0,14.21,0.0,0.0);
1412 AliMatrix(idrotm[545],90.0,293.68,90.0,23.68,0.0,0.0);
1413 AliMatrix(idrotm[546],90.0,303.16,90.0,33.16,0.0,0.0);
1414 AliMatrix(idrotm[547],90.0,312.63,90.0,42.63,0.0,0.0);
1415 AliMatrix(idrotm[548],90.0,322.11,90.0,52.11,0.0,0.0);
1416 AliMatrix(idrotm[549],90.0,331.58,90.0,61.58,0.0,0.0);
1417 AliMatrix(idrotm[550],90.0,341.05,90.0,71.05,0.0,0.0);
1418 AliMatrix(idrotm[551],90.0,350.53,90.0,80.53,0.0,0.0);
1419 AliMatrix(idrotm[552],90.0,9.47,90.0,99.47,0.0,0.0);
1420 AliMatrix(idrotm[553],90.0,18.95,90.0,108.95,0.0,0.0);
1421 AliMatrix(idrotm[555],90.0,37.89,90.0,127.89,0.0,0.0);
1422 AliMatrix(idrotm[556],90.0,47.37,90.0,137.37,0.0,0.0);
1423 AliMatrix(idrotm[557],90.0,56.84,90.0,146.84,0.0,0.0);
1424 AliMatrix(idrotm[558],90.0,66.32,90.0,156.32,0.0,0.0);
1425 AliMatrix(idrotm[559],90.0,75.79,90.0,165.79,0.0,0.0);
1426 AliMatrix(idrotm[560],90.0,85.26,90.0,175.26,0.0,0.0);
1427 AliMatrix(idrotm[561],90.0,94.74,90.0,184.74,0.0,0.0);
1428 AliMatrix(idrotm[562],90.0,104.21,90.0,194.21,0.0,0.0);
1429 AliMatrix(idrotm[563],90.0,113.68,90.0,203.68,0.0,0.0);
1430 AliMatrix(idrotm[564],90.0,123.16,90.0,213.16,0.0,0.0);
1431 AliMatrix(idrotm[565],90.0,132.63,90.0,222.63,0.0,0.0);
1432 AliMatrix(idrotm[566],90.0,142.11,90.0,232.11,0.0,0.0);
1433 AliMatrix(idrotm[567],90.0,151.58,90.0,241.58,0.0,0.0);
1434 AliMatrix(idrotm[568],90.0,161.05,90.0,251.05,0.0,0.0);
1435 AliMatrix(idrotm[569],90.0,170.53,90.0,260.53,0.0,0.0);
1436 AliMatrix(idrotm[570],90.0,180.0,90.0,90.0,180.0,0.0);
1437 AliMatrix(idrotm[571],90.0,0.0,0.0,0.0,90.0,270.0);
1438 AliMatrix(idrotm[572],90.0,180.0,0.0,0.0,90.0,270.0);
1439 AliMatrix(idrotm[573],90.0,180.0,90.0,90.0,0.0,0.0);
1440 AliMatrix(idrotm[575],90.0,120.0,180.0,0.0,90.0,210.0);
1441 AliMatrix(idrotm[576],65.71,300.0,90.0,30.0,24.29,120.0);
1442 AliMatrix(idrotm[577],114.29,300.0,90.0,30.0,155.71,120.0);
1443 AliMatrix(idrotm[579],65.71,240.0,90.0,150.0,24.29,60.0);
1444 AliMatrix(idrotm[580],114.29,240.0,90.0,150.0,155.71,60.0);
1445 AliMatrix(idrotm[581],90.0,240.0,180.0,0.0,90.0,330.0);
1446 AliMatrix(idrotm[583],90.0,0.0,180.0,0.0,90.0,90.0);
1447 AliMatrix(idrotm[584],90.0,180.0,180.0,0.0,90.0,90.0);
1448 AliMatrix(idrotm[586],180.0,0.0,90.0,90.0,90.0,0.0);
1449 AliMatrix(idrotm[618],90.0,201.18,90.0,291.18,0.0,0.0);
1450 AliMatrix(idrotm[620],90.0,28.42,90.0,118.42,0.0,0.0);
1451 AliMatrix(idrotm[623],90.0,208.42,90.0,298.42,0.0,0.0);
1452 AliMatrix(idrotm[633],132.46,0.0,90.0,90.0,42.46,360.0);
1453 AliMatrix(idrotm[653],90.0,21.18,90.0,111.18,0.0,0.0);
1454 }
1455
1456 // SDD cone
1457 if (! AliITSInitGeometry::SDDconeIsTGeoNative()) {
1458 AliMatrix(idrotm[846],90.0,300.0,90.0,30.0,0.0,0.0);
1459 AliMatrix(idrotm[851],90.0,305.0,90.0,35.0,0.0,0.0);
1460 AliMatrix(idrotm[853],90.0,60.0,90.0,150.0,0.0,0.0);
1461 AliMatrix(idrotm[856],90.0,0.0,90.0,90.0,180.0,0.0);
1462 AliMatrix(idrotm[857],90.0,5.0,90.0,95.0,180.0,0.0);
1463 AliMatrix(idrotm[858],90.0,65.0,90.0,155.0,180.0,0.0);
1464 AliMatrix(idrotm[859],90.0,305.0,90.0,35.0,180.0,0.0);
1465 AliMatrix(idrotm[860],90.0,245.0,90.0,335.0,180.0,0.0);
1466 AliMatrix(idrotm[861],90.0,185.0,90.0,275.0,180.0,0.0);
1467 AliMatrix(idrotm[862],90.0,125.0,90.0,215.0,180.0,0.0);
1468 AliMatrix(idrotm[863],90.0,257.5,90.0,347.5,180.0,0.0);
1469 AliMatrix(idrotm[864],90.0,227.5,90.0,317.5,180.0,0.0);
1470 AliMatrix(idrotm[865],90.0,197.5,90.0,287.5,180.0,0.0);
1471 AliMatrix(idrotm[867],90.0,167.5,90.0,257.5,180.0,0.0);
1472 AliMatrix(idrotm[868],90.0,287.5,90.0,17.5,0.0,0.0);
1473 AliMatrix(idrotm[869],90.0,137.5,90.0,227.5,180.0,0.0);
1474 AliMatrix(idrotm[870],90.0,107.5,90.0,197.5,180.0,0.0);
1475 AliMatrix(idrotm[871],90.0,77.5,90.0,167.5,180.0,0.0);
1476 AliMatrix(idrotm[872],90.0,47.5,90.0,137.5,180.0,0.0);
1477 AliMatrix(idrotm[873],90.0,17.5,90.0,107.5,180.0,0.0);
1478 AliMatrix(idrotm[874],90.0,347.5,90.0,77.5,180.0,0.0);
1479 AliMatrix(idrotm[875],90.0,317.5,90.0,47.5,180.0,0.0);
1480 AliMatrix(idrotm[876],90.0,287.5,90.0,17.5,180.0,0.0);
1481 AliMatrix(idrotm[877],90.0,185.0,90.0,275.0,0.0,0.0);
1482 AliMatrix(idrotm[878],90.0,180.0,90.0,270.0,0.0,0.0);
1483 AliMatrix(idrotm[879],90.0,125.0,90.0,215.0,0.0,0.0);
1484 AliMatrix(idrotm[880],90.0,65.0,90.0,155.0,0.0,0.0);
1485 AliMatrix(idrotm[881],90.0,5.0,90.0,95.0,0.0,0.0);
1486 AliMatrix(idrotm[882],90.0,245.0,90.0,335.0,0.0,0.0);
1487 AliMatrix(idrotm[883],90.0,47.5,90.0,137.5,0.0,0.0);
1488 AliMatrix(idrotm[884],90.0,77.5,90.0,167.5,0.0,0.0);
1489 AliMatrix(idrotm[885],90.0,107.5,90.0,197.5,0.0,0.0);
1490 AliMatrix(idrotm[887],90.0,137.5,90.0,227.5,0.0,0.0);
1491 AliMatrix(idrotm[888],90.0,167.5,90.0,257.5,0.0,0.0);
1492 AliMatrix(idrotm[889],90.0,197.5,90.0,287.5,0.0,0.0);
1493 AliMatrix(idrotm[890],90.0,227.5,90.0,317.5,0.0,0.0);
1494 AliMatrix(idrotm[891],90.0,347.5,90.0,77.5,0.0,0.0);
1495 AliMatrix(idrotm[892],90.0,317.5,90.0,47.5,0.0,0.0);
1496 AliMatrix(idrotm[893],90.0,257.5,90.0,347.5,0.0,0.0);
1497 AliMatrix(idrotm[894],90.0,270.0,0.0,0.0,90.0,180.0);
1498 AliMatrix(idrotm[895],90.0,286.36,0.0,0.0,90.0,196.36);
1499 AliMatrix(idrotm[896],90.0,302.73,0.0,0.0,90.0,212.73);
1500 AliMatrix(idrotm[897],90.0,319.09,0.0,0.0,90.0,229.09);
1501 AliMatrix(idrotm[898],90.0,17.5,90.0,107.5,0.0,0.0);
1502 AliMatrix(idrotm[899],90.0,335.45,0.0,0.0,90.0,245.45);
1503 AliMatrix(idrotm[900],90.0,351.82,0.0,0.0,90.0,261.82);
1504 AliMatrix(idrotm[901],90.0,8.18,0.0,0.0,90.0,278.18);
1505 AliMatrix(idrotm[902],90.0,24.55,0.0,0.0,90.0,294.55);
1506 AliMatrix(idrotm[903],90.0,40.91,0.0,0.0,90.0,310.91);
1507 AliMatrix(idrotm[904],90.0,57.27,0.0,0.0,90.0,327.27);
1508 AliMatrix(idrotm[905],90.0,73.64,0.0,0.0,90.0,343.64);
1509 AliMatrix(idrotm[906],90.0,90.0,0.0,0.0,90.0,360.0);
1510 AliMatrix(idrotm[907],90.0,106.36,0.0,0.0,90.0,16.36);
1511 AliMatrix(idrotm[908],90.0,122.73,0.0,0.0,90.0,32.73);
1512 AliMatrix(idrotm[909],90.0,139.09,0.0,0.0,90.0,49.09);
1513 AliMatrix(idrotm[910],90.0,155.45,0.0,0.0,90.0,65.45);
1514 AliMatrix(idrotm[911],90.0,171.82,0.0,0.0,90.0,81.82);
1515 AliMatrix(idrotm[912],90.0,188.18,0.0,0.0,90.0,98.18);
1516 AliMatrix(idrotm[913],90.0,204.55,0.0,0.0,90.0,114.55);
1517 AliMatrix(idrotm[914],90.0,220.91,0.0,0.0,90.0,130.91);
1518 AliMatrix(idrotm[915],90.0,237.27,0.0,0.0,90.0,147.27);
1519 AliMatrix(idrotm[916],90.0,253.64,0.0,0.0,90.0,163.64);
1520 AliMatrix(idrotm[917],90.0,295.71,0.0,0.0,90.0,205.71);
1521 AliMatrix(idrotm[918],90.0,321.43,0.0,0.0,90.0,231.43);
1522 AliMatrix(idrotm[919],90.0,347.14,0.0,0.0,90.0,257.14);
1523 AliMatrix(idrotm[920],90.0,12.86,0.0,0.0,90.0,282.86);
1524 AliMatrix(idrotm[921],90.0,38.57,0.0,0.0,90.0,308.57);
1525 AliMatrix(idrotm[922],90.0,64.29,0.0,0.0,90.0,334.29);
1526 AliMatrix(idrotm[923],90.0,115.71,0.0,0.0,90.0,25.71);
1527 AliMatrix(idrotm[924],90.0,141.43,0.0,0.0,90.0,51.43);
1528 AliMatrix(idrotm[925],90.0,167.14,0.0,0.0,90.0,77.14);
1529 AliMatrix(idrotm[926],90.0,192.86,0.0,0.0,90.0,102.86);
1530 AliMatrix(idrotm[927],90.0,218.57,0.0,0.0,90.0,128.57);
1531 AliMatrix(idrotm[928],90.0,244.29,0.0,0.0,90.0,154.29);
1532 AliMatrix(idrotm[929],90.0,120.0,90.0,210.0,0.0,0.0);
1533 AliMatrix(idrotm[930],90.0,240.0,90.0,330.0,0.0,0.0);
1534 AliMatrix(idrotm[931],90.0,60.0,90.0,150.0,180.0,0.0);
1535 AliMatrix(idrotm[932],90.0,120.0,90.0,210.0,180.0,0.0);
1536 AliMatrix(idrotm[933],90.0,180.0,90.0,270.0,180.0,0.0);
1537 AliMatrix(idrotm[934],90.0,240.0,90.0,330.0,180.0,0.0);
1538 AliMatrix(idrotm[935],90.0,300.0,90.0,30.0,180.0,0.0);
1539 }
1540
1541 // SSD cone
1542 if (! AliITSInitGeometry::SSDconeIsTGeoNative()) {
1543 AliMatrix(idrotm[701],90.0,0.0,90.0,90.0,180.0,0.0);
1544 AliMatrix(idrotm[702],90.0,347.5,90.0,77.5,180.0,0.0);
1545 AliMatrix(idrotm[703],90.0,17.5,90.0,107.5,180.0,0.0);
1546 AliMatrix(idrotm[704],90.0,47.5,90.0,137.5,180.0,0.0);
1547 AliMatrix(idrotm[705],90.0,77.5,90.0,167.5,180.0,0.0);
1548 AliMatrix(idrotm[706],90.0,107.5,90.0,197.5,180.0,0.0);
1549 AliMatrix(idrotm[707],90.0,137.5,90.0,227.5,180.0,0.0);
1550 AliMatrix(idrotm[708],90.0,167.5,90.0,257.5,180.0,0.0);
1551 AliMatrix(idrotm[709],90.0,197.5,90.0,287.5,180.0,0.0);
1552 AliMatrix(idrotm[710],90.0,227.5,90.0,317.5,180.0,0.0);
1553 AliMatrix(idrotm[711],90.0,257.5,90.0,347.5,180.0,0.0);
1554 AliMatrix(idrotm[712],90.0,287.5,90.0,17.5,180.0,0.0);
1555 AliMatrix(idrotm[713],90.0,317.5,90.0,47.5,180.0,0.0);
1556 AliMatrix(idrotm[714],90.0,328.4,90.0,58.4,180.0,0.0);
1557 AliMatrix(idrotm[715],90.0,28.4,90.0,118.4,180.0,0.0);
1558 AliMatrix(idrotm[716],90.0,88.4,90.0,178.4,180.0,0.0);
1559 AliMatrix(idrotm[717],90.0,148.4,90.0,238.4,180.0,0.0);
1560 AliMatrix(idrotm[718],90.0,208.4,90.0,298.4,180.0,0.0);
1561 AliMatrix(idrotm[719],90.0,268.4,90.0,358.4,180.0,0.0);
1562 AliMatrix(idrotm[720],90.0,28.4,90.0,118.4,0.0,0.0);
1563 AliMatrix(idrotm[721],90.0,88.4,90.0,178.4,0.0,0.0);
1564 AliMatrix(idrotm[722],90.0,148.4,90.0,238.4,0.0,0.0);
1565 AliMatrix(idrotm[723],90.0,208.4,90.0,298.4,0.0,0.0);
1566 AliMatrix(idrotm[724],90.0,268.4,90.0,358.4,0.0,0.0);
1567 AliMatrix(idrotm[725],90.0,328.4,90.0,58.4,0.0,0.0);
1568 AliMatrix(idrotm[726],90.0,77.5,90.0,167.5,0.0,0.0);
1569 AliMatrix(idrotm[727],90.0,107.5,90.0,197.5,0.0,0.0);
1570 AliMatrix(idrotm[728],90.0,137.5,90.0,227.5,0.0,0.0);
1571 AliMatrix(idrotm[729],90.0,167.5,90.0,257.5,0.0,0.0);
1572 AliMatrix(idrotm[730],90.0,227.5,90.0,317.5,0.0,0.0);
1573 AliMatrix(idrotm[731],90.0,257.5,90.0,347.5,0.0,0.0);
1574 AliMatrix(idrotm[732],90.0,317.5,90.0,47.5,0.0,0.0);
1575 AliMatrix(idrotm[733],90.0,197.5,90.0,287.5,0.0,0.0);
1576 AliMatrix(idrotm[734],90.0,347.5,90.0,77.5,0.0,0.0);
1577 AliMatrix(idrotm[735],90.0,47.5,90.0,137.5,0.0,0.0);
1578 AliMatrix(idrotm[768],90.0,287.5,90.0,17.5,0.0,0.0);
1579 AliMatrix(idrotm[798],90.0,17.5,90.0,107.5,0.0,0.0);
1580 }
1581
1582 // Services
1583 AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);
1584
1585 // New reference frame: z---> -z; x ---> -x; y ---> y
1586 AliMatrix(idrotm[199], 90.,180., 90.,90., 180.,0.);
1587
1588 // CONVERT INTO CM (RL(SI)=9.36 CM)
1589 for (i = 0; i < 6; ++i) {
1590 drl[i] = drl[i] / 100. * 9.36;
1591 } // end for i
1592
1593 // FIELD CAGE HALF LENGTH
1594 rlim = 50.;
1595 zmax = 74.;
1596 ztpc = 284.;
1597 // --- Define ghost volume containing the whole ITS (including services)
1598 // and fill it with air
1599 dgh[0] = 0.;
1600 dgh[1] = 360.;
1601 dgh[2] = 16.;
1602 dgh[3] = -ztpc-5.-0.1;
1603 dgh[4] = 46;
1604 dgh[5] = 85.;
1605 dgh[6] = -ztpc;
1606 dgh[7] = 46;
1607 dgh[8] = 85.;
1608 dgh[9] = -ztpc;
1609 dgh[10] = 46;
1610 dgh[11] = rlim+7.5;
1611 dgh[12] = -97.5;
1612 dgh[13] = 46;
1613 dgh[14] = rlim+7.5;
1614 dgh[15] = -zmax;
1615 dgh[16] = 46;
1616 dgh[17] = rlim+7.5;
1617 dgh[18] = -48;
1618 dgh[19] = 6;
1619 dgh[20] = rlim+7.5;
1620 dgh[21] = -28.6;
1621 dgh[22] = 6;
1622 dgh[23] = rlim+7.5;
1623 dgh[24] = -27.6;
1624 dgh[25] = 3.295;
1625 dgh[26] = rlim+7.5;
1626 dgh[27] = 27.6;
1627 dgh[28] = 3.295;
1628 dgh[29] = rlim+7.5;
1629 dgh[30] = 28.6;
1630 dgh[31] = 6;
1631 dgh[32] = rlim+7.5;
1632 dgh[33] = 48;
1633 dgh[34] = 6;
1634 dgh[35] = rlim+7.5;
1635 dgh[36] = zmax;
1636 dgh[37] = 46;
1637 dgh[38] = rlim+7.5;
1638 dgh[39] = 97.5;
1639 dgh[40] = 46;
1640 dgh[41] = rlim+7.5;
1641 dgh[42] = ztpc;
1642 dgh[43] = 62;
1643 dgh[44] = 62+4.;
1644 dgh[45] = ztpc;
1645 dgh[46] = 62;
1646 dgh[47] = 85.;
1647 dgh[48] = ztpc+4.+0.1;
1648 dgh[49] = 62.0;//62.4;
1649 dgh[50] = 85.;
cc8a4c78 1650// gMC->Gsvolu("ITSV", "PCON", idtmed[205], dgh, 51);
4737b5bb 1651 new TGeoVolumeAssembly("ITSV");
cc8a4c78 1652
108bd0fe 1653 // --- Place the ghost volume in its mother volume (ALIC) and make it
1654 // invisible
1655 // gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
1656 //gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., idrotm[199], "MANY");
1657 //gMC->Gsatt("ITSV", "SEEN", 0);
1658
1659 //gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "MANY"); //=== LG
1660 gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY"); //=== LG
1661
1662
1663 // --- Define ghost volume containing the six layers and fill it with air
1664
1665// dgh[0] = 0.;
1666// dgh[1] = 360.;
1667// dgh[2] = 8.;
1668// dgh[3] = -zmax;
1669// dgh[4] = 46.;
1670// dgh[5] = rlim;
1671// dgh[6] = -47.5;
1672// dgh[7] = 6.005;
1673// dgh[8] = rlim;
1674// dgh[9] = -28.5;
1675// dgh[10] = 6.005;
1676// dgh[11] = rlim;
1677// dgh[12] = -27.5;
1678// dgh[13] = 3.3;
1679// dgh[14] = rlim;
1680// dgh[15] = 27.5;
1681// dgh[16] = 3.3;
1682// dgh[17] = rlim;
1683// dgh[18] = 28.5;
1684// dgh[19] = 6.005;
1685// dgh[20] = rlim;
1686// dgh[21] = 47.5;
1687// dgh[22] = 6.005;
1688// dgh[23] = rlim;
1689// dgh[24] = zmax;
1690// dgh[25] = 46.;
1691// dgh[26] = rlim;
1692// gMC->Gsvolu("ITSD", "PCON", idtmed[205], dgh, 27);
1693
1694 // --- Place the ghost volume in its mother volume (ITSV) and make it
1695 // invisible
1696 //gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
1697 //gMC->Gsatt("ITSD", "SEEN", 0);
1698
1699 //======================================================================
1700 // Let's make ITSD an assembly, because we can then add the new geometry
1701 // inside this volume without belonging to it.
1702 //
1703 // The 180° rotation (which was done for switching from the old
1704 // coordinate system to the new one) is applied on ITSD, not ITSV,
1705 // because ITSV will also contain the new geometry.
1706 // LG
1707 //======================================================================
1708
1709 //TGeoVolumeAssembly *dITS = new TGeoVolumeAssembly("ITSD");
40e2e5ea 1710 if (! AliITSInitGeometry::SPDshieldIsTGeoNative() ||
1711 ! AliITSInitGeometry::SPDIsTGeoNative() ||
1712 ! AliITSInitGeometry::SDDIsTGeoNative() ||
1713 ! AliITSInitGeometry::SSDIsTGeoNative() ||
1714 ! AliITSInitGeometry::SDDconeIsTGeoNative() ||
1715 ! AliITSInitGeometry::SSDconeIsTGeoNative() ) {
108bd0fe 1716 new TGeoVolumeAssembly("ITSD");
1717 gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., idrotm[199], "ONLY");
40e2e5ea 1718 }
108bd0fe 1719
1720 // --- Define SPD (option 'b') volumes ----------------------------
1721
1722 // SPD - option 'b'
1723 // (this is the default)
1724
1725 //if (option == 2) {
1726 if (! AliITSInitGeometry::SPDIsTGeoNative()) {
1727
1728 dits[0] = 3.7;
1729 dits[1] = 7.75;
1730 dits[2] = 26.1;
1731 gMC->Gsvolu("IT12", "TUBE", idtmed[254], dits, 3);
1732
1733 dits[0] = 3.7;
1734 dits[1] = 7.7;
1735 dits[2] = 24;
1736 dits[3] = 57;
1737 dits[4] = 100;
1738 gMC->Gsvolu("I12B", "TUBS", idtmed[254], dits, 5); // sector
1739
1740 di10b[0] = 0.843;
1741 di10b[1] = ddet1+dchip1+dbus+0.0025;
1742 di10b[2] = 19.344;
1743 gMC->Gsvolu("I10B", "BOX ", idtmed[254], di10b, 3); // mother volume
1744 // on layer 1
1745
1746 di20b[0] = 0.843;
1747 di20b[1] = ddet2+dchip2+dbus+0.0025;
1748 di20b[2] = 19.344;
1749 gMC->Gsvolu("I20B", "BOX ", idtmed[254], di20b, 3); // mother volume
1750 // layer 2
1751
1752 dits[0] = 1.3673;
1753 dits[1] = 0.01;
1754 dits[2] = 24;
1755 gMC->Gsvolu("I123", "BOX ", idtmed[253], dits, 3);
1756
1757 dits[0] = 0.06;
1758 dits[1] = 0.08;
1759 dits[2] = 24;
1760 dits[3] = -36.79;
1761 dits[4] = 21.834;
1762 gMC->Gsvolu("I121", "TUBS", idtmed[253], dits, 5);
1763
1764 dits[0] = 0.1253;
1765 dits[1] = 0.01;
1766 dits[2] = 24;
1767 gMC->Gsvolu("I122", "BOX ", idtmed[253], dits, 3);
1768
1769 dits[0] = 0.04;
1770 dits[1] = 0.06 ;
1771 dits[2] = 24;
1772 dits[3] = 126.79;
1773 dits[4] = 270;
1774 gMC->Gsvolu("I120", "TUBS", idtmed[253], dits, 5);
1775
1776 dits[0] = 0.1134;
1777 dits[1] = 0.01;
1778 dits[2] = 24;
1779 gMC->Gsvolu("I144", "BOX ", idtmed[253], dits, 3);
1780
1781 dits[0] = 0.25;
1782 dits[1] = 0.06;
1783 dits[2] = 24;
1784 gMC->Gsvolu("I113", "BOX ", idtmed[254], dits, 3);
1785
1786 dits[0] = 0.077;
1787 dits[1] = 0.01;
1788 dits[2] = 24;
1789 gMC->Gsvolu("I143", "BOX ", idtmed[253], dits, 3);
1790
1791 dits[0] = 0.04;
1792 dits[1] = 0.06;
1793 dits[2] = 24;
1794 dits[3] = 0;
1795 dits[4] = 90;
1796 gMC->Gsvolu("I142", "TUBS", idtmed[253], dits, 5);
1797
1798 dits[0] = 0.0695;
1799 dits[1] = 0.01;
1800 dits[2] = 24;
1801 gMC->Gsvolu("I141", "BOX ", idtmed[253], dits, 3);
1802
1803 dits[0] = 0.06;
1804 dits[1] = 0.08;
1805 dits[2] = 24;
1806 dits[3] = 0;
1807 dits[4] = 108;
1808 gMC->Gsvolu("I140", "TUBS", idtmed[253], dits, 5);
1809
1810 dits[0] = 0.1835;
1811 dits[1] = 0.01;
1812 dits[2] = 24;
1813 gMC->Gsvolu("I139", "BOX ", idtmed[253], dits, 3);
1814
1815 dits[0] = 0.1894 ;
1816 dits[1] = 0.01;
1817 dits[2] = 24;
1818 gMC->Gsvolu("I138", "BOX ", idtmed[253], dits, 3);
1819
1820 dits[0] = 0.04;
1821 dits[1] = 0.06;
1822 dits[2] = 24;
1823 dits[3] = 0;
1824 dits[4] = 75.261;
1825 gMC->Gsvolu("I137", "TUBS", idtmed[253], dits, 5);
1826
1827 dits[0] = 1.3401;
1828 dits[1] = 0.01;
1829 dits[2] = 24;
1830 gMC->Gsvolu("I136", "BOX ", idtmed[253], dits, 3);
1831
1832 dits[0] = 0.05;
1833 dits[1] = 0.07;
1834 dits[2] = 24;
1835 dits[3] = 0;
1836 dits[4] = 72.739;
1837 gMC->Gsvolu("I135", "TUBS", idtmed[253], dits, 5);
1838
1839 dits[0] = 0.1193;
1840 dits[1] = 0.01;
1841 dits[2] = 24;
1842 gMC->Gsvolu("I134", "BOX ", idtmed[253], dits, 3);
1843
1844 dits[0] = 0.163;
1845 dits[1] = 0.01;
1846 dits[2] = 24;
1847 gMC->Gsvolu("I133", "BOX ", idtmed[253], dits, 3);
1848
1849 dits[0] = 0.04;
1850 dits[1] = 0.06;
1851 dits[2] = 24;
1852 dits[3] = 0;
1853 dits[4] = 157.633;
1854 gMC->Gsvolu("I132", "TUBS", idtmed[253], dits, 5);
1855
1856 dits[0] = 0.2497;
1857 dits[1] = 0.01;
1858 dits[2] = 24;
1859 gMC->Gsvolu("I131", "BOX ", idtmed[253], dits, 3);
1860
1861 dits[0] = 0.06;
1862 dits[1] = 0.08;
1863 dits[2] = 24;
1864 dits[3] = 0;
1865 dits[4] = 148.633;
1866 gMC->Gsvolu("I130", "TUBS", idtmed[253], dits, 5);
1867
1868 dits[0] = 0.292;
1869 dits[1] = 0.01;
1870 dits[2] = 24;
1871 gMC->Gsvolu("I129", "BOX ", idtmed[253], dits, 3);
1872
1873 dits[0] = 0.163;
1874 dits[1] = 0.01;
1875 dits[2] = 24;
1876 gMC->Gsvolu("I128", "BOX ", idtmed[253], dits, 3);
1877
1878 dits[0] = 0.04;
1879 dits[1] = 0.06;
1880 dits[2] = 24;
1881 dits[3] = 0;
1882 dits[4] = 161.297;
1883 gMC->Gsvolu("I126", "TUBS", idtmed[253], dits, 5);
1884
1885 dits[0] = 0.2433;
1886 dits[1] = 0.01;
1887 dits[2] = 24;
1888 gMC->Gsvolu("I125", "BOX ", idtmed[253], dits, 3);
1889
1890 dits[0] = 0.06;
1891 dits[1] = 0.08;
1892 dits[2] = 24;
1893 dits[3] = 0;
1894 dits[4] = 42.883;
1895 gMC->Gsvolu("I124", "TUBS", idtmed[253], dits, 5);
1896
1897 dits[0] = 0.793;
1898 dits[1] = ddet1+dchip1+dbus+0.0025;
1899 dits[2] = 2.5;
1900 gMC->Gsvolu("I105", "BOX ", idtmed[290], dits, 3);
1901
1902 di107[0] = 0.793;
1903 di107[1] = ddet1+dchip1;
1904 di107[2] = 3.536;
1905 gMC->Gsvolu("I107", "BOX ", idtmed[254], di107, 3); // contains det and chip
1906 // layer 1
1907 dits[0] = 0.705;
1908 dits[1] = 0.01;
1909 dits[2] = 2.5;
1910 gMC->Gsvolu("I109", "BOX ", idtmed[275], dits, 3);
1911
1912 di108[0] = 0.705;
1913 di108[1] = dbus;
1914 di108[2] = 14.344;
1915 gMC->Gsvolu("I108", "BOX ", idtmed[275], di108, 3); // bus for both layers
1916
1917 di1d7[0] = 0.7975;
1918 di1d7[1] = ddet2+dchip2;
1919 di1d7[2] = 3.536;
1920 gMC->Gsvolu("I1D7", "BOX ", idtmed[254], di1d7, 3); // contains det and chip
1921 // layer 2
1922 dits[0] = 0.06;
1923 dits[1] = 0.08;
1924 dits[2] = 24;
1925 dits[3] = 0;
1926 dits[4] = 80;
1927 gMC->Gsvolu("I112", "TUBS", idtmed[253], dits, 5);
1928
1929 dits[0] = 0.04;
1930 dits[1] = 0.06;
1931 dits[2] = 24;
1932 dits[3] = 0;
1933 dits[4] = 80;
1934 gMC->Gsvolu("I111", "TUBS", idtmed[253], dits, 5);
1935
1936 dits[0] = 0.15;
1937 dits[1] = 0.0146;
1938 dits[2] = 24;
1939 gMC->Gsvolu("I118", "BOX ", idtmed[273], dits, 3);
1940
1941 dits[0] = 0.1315;
1942 dits[1] = 0.01;
1943 dits[2] = 24;
1944 gMC->Gsvolu("I110", "BOX ", idtmed[253], dits, 3);
1945
1946 dits[0] = 0.025;
1947 dits[1] = 0.035;
1948 dits[2] = 24;
1949 dits[3] = 0;
1950 dits[4] = 180;
1951 gMC->Gsvolu("I114", "TUBS", idtmed[264], dits, 5);
1952
1953 dits[0] = 0;
1954 dits[1] = 0.025;
1955 dits[2] = 24;
1956 dits[3] = 0;
1957 dits[4] = 180;
1958 gMC->Gsvolu("I115", "TUBS", idtmed[211], dits, 5); // set freon as cooling fluid
1959
1960
1961 dits[0] = 0.063;
1962 dits[1] = 0.035;
1963 dits[2] = 24;
1964 gMC->Gsvolu("I116", "BOX ", idtmed[264], dits, 3);
1965
1966 di106[0] = 0.7975;
1967 di106[1] = dchip1;
1968 di106[2] = 0.68;
1969 gMC->Gsvolu("I106", "BOX ", idtmed[201], di106, 3); // chip layer 1
1970
1971 di1d6[0] = 0.7975;
1972 di1d6[1] = dchip2;
1973 di1d6[2] = 0.68;
1974 gMC->Gsvolu("I1D6", "BOX ", idtmed[201], di1d6, 3); // chip layer 2
1975
1976 di101[0] = 0.705;
1977 di101[1] = ddet1;
1978 di101[2] = 3.536;
1979 gMC->Gsvolu("I101", "BOX ", idtmed[250], di101, 3); // contains detector
1980 // layer 1
1981 di1d1[0] = 0.705;
1982 di1d1[1] = ddet2;
1983 di1d1[2] = 3.536;
1984 gMC->Gsvolu("I1D1", "BOX ", idtmed[250], di1d1, 3); // contains detector
1985 // layer 2
1986
1987
1988 dits[0] = 0.063;
1989 dits[1] = 0.025;
1990 dits[2] = 24;
1991 gMC->Gsvolu("I117", "BOX ", idtmed[211], dits, 3); // set freon as cooling fluid
1992
1993
1994 dits1[0] = 0.64;
1995 dits1[1] = ddet1;
1996 dits1[2] = 3.48;
1997 gMC->Gsvolu("ITS1", "BOX ", idtmed[200], dits1, 3); // detector layer 1
1998
1999 dits2[0] = 0.64;
2000 dits2[1] = ddet2;
2001 dits2[2] = 3.48;
2002 gMC->Gsvolu("ITS2", "BOX ", idtmed[200], dits2, 3); // detector layer 2
2003
2004 dits[0] = 3.701;
2005 dits[1] = 7.699;
2006 dits[2] = 4;
2007 dits[3] = 57.1;
2008 dits[4] = 99.9;
2009 gMC->Gsvolu("I650", "TUBS", idtmed[254], dits, 5); // was I150 in old geom.
2010
2011 dits[0] = 3.7;
2012 dits[1] = 7.75;
2013 dits[2] = 0.05;
2014 gMC->Gsvolu("I651", "TUBE", idtmed[296], dits, 3); // services disk
2015
2016 dits[0] = 0;
2017 dits[1] = 0.5;
2018 dits[2] = 1.5;
2019 gMC->Gsvolu("I676", "TUBE", idtmed[274], dits, 3); // was I176 in old geom.
2020
2021 dits[0] = 0;
2022 dits[1] = 0.18;
2023 dits[2] = 0.8;
2024 gMC->Gsvolu("I673", "TUBE", idtmed[274], dits, 3); // was I173 in old geom.
2025
2026 dits[0] = 0;
2027 dits[1] = 0.18;
2028 dits[2] = 3;
2029 gMC->Gsvolu("I671", "TUBE", idtmed[274], dits, 3); // was I171 in old geom.
2030
2031 dits[0] = 0;
2032 dits[1] = 0.075;
2033 dits[2] = 0.8;
2034 gMC->Gsvolu("I669", "TUBE", idtmed[264], dits, 3); // was I169 in old geom.
2035
2036 dits[0] = 3.5;
2037 dits[1] = 5.6;
2038 dits[2] = 0.55;
2039 dits[3] = 0;
2040 dits[4] = 38;
2041 gMC->Gsvolu("I667", "TUBS", idtmed[263], dits, 5); // was I167 in old geom.
2042
2043 dits[0] = 6.6;
2044 dits[1] = 7.6;
2045 dits[2] = 0.5;
2046 dits[3] = 0;
2047 dits[4] = 9;
2048 gMC->Gsvolu("I666", "TUBS", idtmed[263], dits, 5); // was I166 in old geom.
2049
2050 dits[0] = 0.26;
2051 dits[1] = 0.32;
2052 dits[2] = 0.55;
2053 gMC->Gsvolu("I678", "TUBE", idtmed[263], dits, 3); // was I178 in old geom.
2054
2055 dits[0] = 0;
2056 dits[1] = 0.3;
2057 dits[2] = 1.5;
2058 gMC->Gsvolu("I677", "TUBE", idtmed[211], dits, 3); //set freon as cooling fluid
2059 // was I177 in old geom.
2060
2061 dits[0] = 0.07;
2062 dits[1] = 0.125;
2063 dits[2] = 0.3;
2064 gMC->Gsvolu("I675", "TUBE", idtmed[263], dits, 3); // was I175 in old geom.
2065
2066
2067 dits[0] = 0;
2068 dits[1] = 0.1;
2069 dits[2] = 0.8;
2070 gMC->Gsvolu("I674", "TUBE", idtmed[211], dits, 3); //set freon as cooling fluid
2071 // was I174 in old geom.
2072
2073
2074
2075 dits[0] = 0;
2076 dits[1] = 0.1;
2077 dits[2] = 3;
2078 gMC->Gsvolu("I672", "TUBE", idtmed[211], dits, 3); //set freon as cooling fluid
2079 // was I172 in old geom.
2080
2081
2082 dits[0] = 0;
2083 dits[1] = 0.0746;
2084 dits[2] = 0.8;
2085 gMC->Gsvolu("I670", "TUBE", idtmed[211], dits, 3); //set freon as cooling fluid
2086 // was I170 in old geom.
2087
2088 dits[0] = 3.7;
2089 dits[1] = 5.4;
2090 dits[2] = 0.35;
2091 dits[3] = 2;
2092 dits[4] = 36;
2093 gMC->Gsvolu("I668", "TUBS", idtmed[211], dits, 5); //set freon as cooling fluid
2094 // was I168 in old geom.
2095
2096 }
2097
2098 // --- Define SDD volumes ------------------------------------------
2099
108bd0fe 2100 cos30 = cos(30.*3.14159/180.);
2101 sin30 = sin(30.*3.14159/180.);
2102
2103 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
2104
2105 Double_t maxRadius = 28.5;
2106 dits[0] = 0;
2107 dits[1] = 360;
2108 dits[2] = 6;
2109 dits[3] = -34.6;
2110 dits[4] = 23.49;
2111 dits[5] = maxRadius;
2112 dits[6] = -27.35;
2113 dits[7] = 23.49;
2114 dits[8] = maxRadius;
2115 dits[9] = -27.35;
2116 dits[10] = 14.59;
2117 dits[11] = maxRadius;
2118 dits[12] = 27.35;
2119 dits[13] = 14.59;
2120 dits[14] = maxRadius;
2121 dits[15] = 27.35;
2122 dits[16] = 23.49;
2123 dits[17] = maxRadius;
2124 dits[18] = 34.6;
2125 dits[19] = 23.49;
2126 dits[20] = maxRadius;
2127 gMC->Gsvolu("IT34", "PCON", idtmed[209], dits, 21);
2128
2129 // block of the SDD electronics and related ladder frame
2130 iI018dits[0] = 3.2;
2131 iI018dits[1] = 2;
2132 iI018dits[2] = 3.65;
2133 gMC->Gsvolu("I018", "BOX ", idtmed[209], iI018dits, 3);
2134
2135 // block of the SDD end ladder
2136 iI024dits[0] = 3.2;
2137 iI024dits[1] = 2;
2138 iI024dits[2] = 2.725;
2139 gMC->Gsvolu("I024", "BOX ", idtmed[209], iI024dits, 3);
2140
2141 // ladder frame of layer 3 - F.T. March,7-2001
2142 iI047dits[0] = iI018dits[0];
2143 iI047dits[1] = iI018dits[1];
2144 iI047dits[2] = 6*iI018dits[2] + 2*iI024dits[2];
2145 gMC->Gsvolu("I047", "BOX ", idtmed[209], iI047dits, 3);
2146
2147 // ladder frame of layer 4 - F.T. March,7-2001
2148 iI048dits[0] = iI018dits[0];
2149 iI048dits[1] = iI018dits[1];
2150 iI048dits[2] = 8*iI018dits[2] + 2*iI024dits[2];
2151 gMC->Gsvolu("I048", "BOX ", idtmed[209], iI048dits, 3);
2152
2153
2154 // global SDD volume (sensitive + insensitive)
2155 iI302dits[0] = 3.6250;
2156 iI302dits[1] = 0.0150;
2157 iI302dits[2] = 4.3794;
2158 gMC->Gsvolu("I302", "BOX ", idtmed[278], iI302dits, 3);
2159
2160 // Like for I302 - F.T. March,7-2001
2161 iI402dits[0] = 3.6250;
2162 iI402dits[1] = 0.0150;
2163 iI402dits[2] = 4.3794;
2164 gMC->Gsvolu("I402", "BOX ", idtmed[278], iI402dits, 3);
2165
2166 // SDD ladder of layer 3 - F.T. March,7-2001
2167 iI004dits[0] = iI302dits[0]+0.005;
2168 iI004dits[1] = 2*iI302dits[1]+ySDDsep/2.;
2169 iI004dits[2] = TMath::Abs(zSDDlay3[0]);
2170 if (iI004dits[2] < TMath::Abs(zSDDlay3[5])) {
2171 iI004dits[2] = TMath::Abs(zSDDlay3[5]);
2172 }
2173 iI004dits[2] = iI004dits[2] + iI302dits[2];
2174 gMC->Gsvolu("I004", "BOX ", idtmed[209], iI004dits, 3);
2175
2176 // SDD ladder of layer 4 - F.T. March,7-2001
2177 iI005dits[0] = iI402dits[0]+0.005;
2178 iI005dits[1] = 2*iI402dits[1]+ySDDsep/2.;
2179 iI005dits[2] = TMath::Abs(zSDDlay4[0]);
2180 if (iI005dits[2] < TMath::Abs(zSDDlay4[7])) {
2181 iI005dits[2] = TMath::Abs(zSDDlay4[7]);
2182 }
2183 iI005dits[2] = iI005dits[2] + iI402dits[2];
2184 gMC->Gsvolu("I005", "BOX ", idtmed[209], iI005dits, 3);
2185
2186
2187 // -- block of the SDD ladder foot and end ladder
2188
2189 // ladder foot mother volume
2190 iI028dits[0] = 3.0000;
2191 iI028dits[1] = 0.4000;
2192 iI028dits[2] = 0.9000;
2193 gMC->Gsvolu("I028", "BOX ", idtmed[224], iI028dits, 3);
2194
2195 // positioning-box #1 at SDD end-ladder - F.T. March,7-2001
2196 iI420dits[0] = 0.4500;
2197 iI420dits[1] = 0.4000;
2198 iI420dits[2] = 0.4500;
2199 gMC->Gsvolu("I420", "BOX ", idtmed[264], iI420dits, 3);
2200
2201 // positioning-box #2 at SDD end-ladder - F.T. March,7-2001
2202 iI421dits[0] = 0.;
2203 iI421dits[1] = 0.25;
2204 iI421dits[2] = iI420dits[1];
2205 gMC->Gsvolu("I421", "TUBE", idtmed[209], iI421dits, 3);
2206
2207 // reference ruby-sphere at SDD end-ladder - F.T. March,7-2001
2208 iI422dits[0] = 0.0000;
2209 iI422dits[1] = 0.2000;
2210 iI422dits[2] = 0.0000;
2211 iI422dits[3] = 180.00;
2212 iI422dits[4] = 0.0000;
2213 iI422dits[5] = 360.00;
2214 gMC->Gsvolu("I422", "SPHE", idtmed[277], iI422dits, 6);
2215
2216 // support for ruby-sphere (I422) - F.T. March,7-2001
2217 iI423dits[0] = 0.0000;
2218 iI423dits[1] = 0.1000;
2219 iI423dits[2] = (iI420dits[1]-iI422dits[1])/2.;
2220 gMC->Gsvolu("I423", "TUBE", idtmed[264], iI423dits, 3);
2221
2222 // passage for HV microcables - F.T. March,7-2001
2223 iI424dits[0] = 1.5000;
2224 iI424dits[1] = 0.1500;
2225 iI424dits[2] = iI421dits[2];
2226 gMC->Gsvolu("I424", "BOX ", idtmed[209], iI424dits, 3);
2227
2228 // HV microcables segment at the end ladder - F.T. March,7-2001
2229 iI425dits[0] = 1.350000;
2230 iI425dits[1] = 0.015250;
2231 iI425dits[2] = iI024dits[2];
2232 gMC->Gsvolu("I425", "BOX ", idtmed[279], iI425dits, 3);
2233
2234 // lower edge of SDD ladder frame at end-ladder - part 1
2235 dits[0] = 0.2;
2236 dits[1] = 0.1815;
2237 dits[2] = iI024dits[2];
2238 dits[3] = 0.015;
2239 gMC->Gsvolu("I025", "TRD1", idtmed[208], dits, 4);
2240
2241 // lower edge of SDD ladder frame at end-ladder - part 2
2242 dits[0] = 0.183;
2243 dits[1] = 0.165;
2244 dits[2] = iI024dits[2];
2245 dits[3] = 0.015;
2246 gMC->Gsvolu("I026", "TRD1", idtmed[208], dits, 4);
2247
2248 // new: for the 1st top rod of the structure
2249 // at the end-ladder - F.T. March,7-2001
2250 iI029dits[0] = 0.2;
2251 iI029dits[1] = 0.1815;
2252 iI029dits[2] = 1.0100;
2253 iI029dits[3] = 0.015;
2254 gMC->Gsvolu("I029", "TRD1", idtmed[208], iI029dits, 4);
2255
2256 // new: for the 2nd top rod of the structure
2257 // at the end-ladder - F.T. March,7-2001
2258 iI030dits[0] = 0.1830;
2259 iI030dits[1] = 0.1650;
2260 iI030dits[2] = 1.0100;
2261 iI030dits[3] = 0.0150;
2262 gMC->Gsvolu("I030", "TRD1", idtmed[208], iI030dits, 4);
2263
2264 // inox cooling tubes for the end ladder - F.T. March,7-2001
2265 iI031dits[0] = 0.093;
2266 iI031dits[1] = 0.1;
2267 iI031dits[2] = iI024dits[2];
2268 gMC->Gsvolu("I031", "TUBE", idtmed[264], iI031dits, 3);
2269
2270 if (fluid == 1) {
2271 // cooling water for the end ladder - F.T. March,7-2001
2272 iI032dits[0] = 0;
2273 iI032dits[1] = iI031dits[0];
2274 iI032dits[2] = iI024dits[2];
2275 gMC->Gsvolu("I032", "TUBE", idtmed[211], iI032dits, 3);
2276 } else {
2277 // cooling freon for the end ladder - R.B. March,21-2001
2278 iI032dits[0] = 0;
2279 iI032dits[1] = iI031dits[0];
2280 iI032dits[2] = iI024dits[2];
2281 gMC->Gsvolu("I032", "TUBE", idtmed[212], iI032dits, 3);
2282 }
2283
2284 // -- block of the SDD ladder frame holding the electronics
2285
2286 // edge of the ladder frame - part 1
2287 dits[0] = 0.2;
2288 dits[1] = 0.182;
2289 dits[2] = 3.65;
2290 dits[3] = 0.015;
2291 gMC->Gsvolu("I019", "TRD1", idtmed[208], dits, 4);
2292
2293 // edge of the ladder frame - part 2
2294 dits[0] = 0.183;
2295 dits[1] = 0.165;
2296 dits[2] = 3.65;
2297 dits[3] = 0.015;
2298 gMC->Gsvolu("I020", "TRD1", idtmed[208], dits, 4);
2299
2300 // inclined segments of the ladder frame
2301 dits[0] = 2.23;
2302 dits[1] = 2.1;
2303 dits[2] = 0.05;
2304 dits[3] = 0.03;
2305 gMC->Gsvolu("I021", "TRD1", idtmed[208], dits, 4);
2306
2307 // horiz.segments of the ladders, normal to ladder edges
2308 dits[0] = 2.1;
2309 dits[1] = 2;
2310 dits[2] = 0.06;
2311 dits[3] = 0.04;
2312 gMC->Gsvolu("I022", "TRD1", idtmed[208], dits, 4);
2313
2314 // horiz.segments of the ladders, at 45 deg. to ladder edges
2315 dits[0] = 2.615;
2316 dits[1] = 2.465;
2317 dits[2] = 0.06;
2318 dits[3] = 0.04;
2319 gMC->Gsvolu("I023", "TRD1", idtmed[208], dits, 4);
2320
2321 // supports of the ceramic pins holding the detectors
2322 dits[0] = 0.3;
2323 dits[1] = 0.05;
2324 dits[2] = 0.15;
2325 gMC->Gsvolu("I033", "BOX ", idtmed[208], dits, 3);
2326
2327 // ceramic pins holding the detectors
2328 dits[0] = 0;
2329 dits[1] = 0.05;
2330 dits[2] = 0.225;
2331 gMC->Gsvolu("I034", "TUBE", idtmed[277], dits, 3);
2332
2333 // holders of cooling tubes
2334 iI035dits[0] = 0.1;
2335 iI035dits[1] = 0.15;
2336 iI035dits[2] = 0.2;
2337 gMC->Gsvolu("I035", "TUBE", idtmed[208], iI035dits, 3);
2338
2339 // top holders of microcables
2340 dits[0] = 0.2;
2341 dits[1] = 0.01;
2342 dits[2] = 0.05;
2343 gMC->Gsvolu("I036", "BOX ", idtmed[208], dits, 3);
2344
2345 // inox cooling tubes - F.T. March,7-2001
2346 iI037dits[0] = 0.093;
2347 iI037dits[1] = 0.1;
2348 iI037dits[2] = iI018dits[2];
2349 gMC->Gsvolu("I037", "TUBE", idtmed[264], iI037dits, 3);
2350
2351 if (fluid == 1) {
2352 // cooling water - F.T. March,7-2001
2353 iI038dits[0] = 0;
2354 iI038dits[1] = iI037dits[0];
2355 iI038dits[2] = iI018dits[2];
2356 gMC->Gsvolu("I038", "TUBE", idtmed[211], iI038dits, 3);
2357 } else {
2358 // cooling freon - R.B. March,21-2001
2359 iI038dits[0] = 0;
2360 iI038dits[1] = iI037dits[0];
2361 iI038dits[2] = iI018dits[2];
2362 gMC->Gsvolu("I038", "TUBE", idtmed[212], iI038dits, 3);
2363 }
2364 // -- block of the SDD electronics (heat bridge, chips, hybrid, anode microcable)
2365
2366 // SDD heat bridge - F.T. March,7-2001
2367 iI039dits[0] = 1.1000;
2368 iI039dits[1] = 0.0087;
2369 iI039dits[2] = 3.2500;
2370 gMC->Gsvolu("I039", "BOX ", idtmed[268], iI039dits, 3);
2371
2372 // SDD clip part 1
2373 dits[0] = 0.25;
2374 dits[1] = 0.01;
2375 dits[2] = iI039dits[2];
2376 gMC->Gsvolu("I040", "BOX ", idtmed[268], dits, 3);
2377
2378 // SDD clip part 2
2379 iI041dits[0] = 0.1;
2380 iI041dits[1] = 0.12;
2381 iI041dits[2] = iI039dits[2];
2382 iI041dits[3] = 90;
2383 iI041dits[4] = 320;
2384 gMC->Gsvolu("I041", "TUBS", idtmed[268], iI041dits, 5);
2385
2386
2387 // SDD PASCAL - F.T. March,7-2001
2388 iI042dits[0] = 0.5000;
2389 iI042dits[1] = 0.0175;
2390 iI042dits[2] = 0.5000;
2391 gMC->Gsvolu("I042", "BOX ", idtmed[206], iI042dits, 3);
2392
2393 // SDD AMBRA - F.T. March,7-2001
2394 iI043dits[0] = 0.3500;
2395 iI043dits[1] = 0.0175;
2396 iI043dits[2] = 0.5000;
2397 gMC->Gsvolu("I043", "BOX ", idtmed[206], iI043dits, 3);
2398
2399 // SDD capacitors - F.T. March,7-2001
2400 iI051dits[0] = 0.1400;
2401 iI051dits[1] = 0.0350;
2402 iI051dits[2] = 0.0625;
2403 gMC->Gsvolu("I051", "BOX ", idtmed[276], iI051dits, 3);
2404
2405 // SDD hybrid circuit - F.T. March,7-2001
2406 iI052dits[0] = 1.725000;
2407 iI052dits[1] = 0.003743;
2408 iI052dits[2] = iI039dits[2];
2409 gMC->Gsvolu("I052", "BOX ", idtmed[281], iI052dits, 3);
2410
2411 // SDD anode microcable : changed - F.T. March,7-2001
2412 iI044dits[0] = iI018dits[2];
2413 iI044dits[1] = iI039dits[2];
2414 iI044dits[2] = 0.00084;
2415 iI044dits[3] = (15.189149/(iI044dits[0]+iI044dits[1]))/2;
2416 gMC->Gsvolu("I044", "TRD1", idtmed[282], iI044dits, 4);
2417 volI044 = ((2*iI044dits[0] + 2*iI044dits[1]) * 2*iI044dits[2])/2 * 2*iI044dits[3];
2418
2419 // SDD electronics box - F.T. March,7-2001
2420 iI050dits[1] = iI039dits[1]+iI052dits[1]+iI051dits[1]+iI044dits[2];
2421 iI050dits[0] = iI018dits[1]/cos(30.*3.14159/180.)-iI050dits[1]*sin(30.*3.14159/180.);
2422 iI050dits[2] = iI018dits[2];
2423 gMC->Gsvolu("I050", "BOX ", idtmed[209], iI050dits, 3);
2424
2425 // SDD sensitive volume
2426 dits[0] = 3.50850;
2427 dits[1] = 0.01499; // not 0.015 because it is included into I302 which is 0.015
2428 dits[2] = 3.76320;
2429 gMC->Gsvolu("ITS3", "BOX ", idtmed[200], dits, 3);
2430
2431 // Like for ITS3 - F.T. March,7-2001
2432 dits[0] = 3.50850;
2433 dits[1] = 0.01499; // not 0.015 because it is included into I402 which is 0.015
2434 dits[2] = 3.76320;
2435 gMC->Gsvolu("ITS4", "BOX ", idtmed[200], dits, 3);
2436 }
2437
2438 // --- Define SSD volumes ------------------------------------------
2439
2440 if (! AliITSInitGeometry::SSDIsTGeoNative()) {
2441 dits[0] = 0;
2442 dits[1] = 360;
2443 dits[2] = 6;
2444 dits[3] = -57.45;
2445 dits[4] = 43.6;
2446 dits[5] = 48;
2447 dits[6] = -49.15;
2448 dits[7] = 43.6;
2449 dits[8] = 48;
2450 dits[9] = -49.15;
2451 dits[10] = 36.9;
2452 dits[11] = 48;
2453 dits[12] = 50.55;
2454 dits[13] = 36.9;
2455 dits[14] = 48;
2456 dits[15] = 50.55;
2457 dits[16] = 43.6;
2458 dits[17] = 48;
2459 dits[18] = 57.45;
2460 dits[19] = 43.6;
2461 dits[20] = 48;
2462 //gMC->Gsvolu("IT56", "PCON", idtmed[220], dits, 21); // SSD air
2463 gMC->Gsvolu("IT56", "PCON", idtmed[204], dits, 21); // air
2464
2465 dits[0] = 3.4;
2466 dits[1] = 1.955;
2467 dits[2] = 56.5;
2468 gMC->Gsvolu("I570", "BOX ", idtmed[204], dits, 3);
2469
2470 dits[0] = 3.75;
2471 dits[1] = 0.045;
2472 dits[2] = 50.975;
2473 gMC->Gsvolu("I569", "BOX ", idtmed[204], dits, 3);
2474
2475 dits[0] = 3.4;
2476 dits[1] = 1.955;
2477 dits[2] = 47;
2478 gMC->Gsvolu("I571", "BOX ", idtmed[204], dits, 3);
2479
2480 dits[0] = 3.75;
2481 dits[1] = 0.045;
2482 dits[2] = 43.3;
2483 gMC->Gsvolu("I565", "BOX ", idtmed[204], dits, 3);
2484
2485 dits[0] = 3.4;
2486 dits[1] = 1.955;
2487 dits[2] = 3.15;
2488 gMC->Gsvolu("I553", "BOX ", idtmed[204], dits, 3);
2489
2490 dits[0] = 3.405;
2491 dits[1] = 1.955;
2492 dits[2] = 1.955;
2493 gMC->Gsvolu("I523", "BOX ", idtmed[204], dits, 3);
2494
2495 dits[0] = 3.75;
2496 dits[1] = 0.015;
2497 dits[2] = 2.1;
2498 gMC->Gsvolu("I566", "BOX ", idtmed[206], dits, 3);
2499
2500 dits[0] = 3.4;
2501 dits[1] = 1.955;
2502 dits[2] = 3.15;
2503 gMC->Gsvolu("I544", "BOX ", idtmed[204], dits, 3);
2504
2505 dits[0] = 3.41;
2506 dits[1] = 1.955;
2507 dits[2] = 1.955;
2508 gMC->Gsvolu("I516", "BOX ", idtmed[204], dits, 3);
2509
2510 dits[0] = 3.75;
2511 dits[1] = 0.015;
2512 dits[2] = 2.1;
2513 gMC->Gsvolu("I562", "BOX ", idtmed[206], dits, 3);
2514
2515 if (fluid == 1) {
2516 dits[0] = 0;
2517 dits[1] = 0.07;
2518 dits[2] = 3.15;
2519 gMC->Gsvolu("I559", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
2520 } else {
2521 dits[0] = 0;
2522 dits[1] = 0.07;
2523 dits[2] = 3.15;
2524 gMC->Gsvolu("I559", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
2525 }
2526
2527 dits[0] = 0.07;
2528 dits[1] = 0.1;
2529 dits[2] = 3.15;
2530 gMC->Gsvolu("I560", "TUBE", idtmed[210], dits, 3);
2531
2532 dits[0] = 0.225;
2533 dits[1] = 0.195;
2534 dits[2] = 3.15;
2535 dits[3] = 0.025;
2536 gMC->Gsvolu("I558", "TRD1", idtmed[203], dits, 4);
2537
2538 dits[0] = 0.25;
2539 dits[1] = 0.22;
2540 dits[2] = 3.15;
2541 dits[3] = 0.025;
2542 gMC->Gsvolu("I557", "TRD1", idtmed[203], dits, 4);
2543
2544 dits[0] = 2.17;
2545 dits[1] = 0.035;
2546 dits[2] = 0.05;
2547 gMC->Gsvolu("I556", "BOX ", idtmed[203], dits, 3);
2548
2549 dits[0] = 2 ;
2550 dits[1] = 0.035;
2551 dits[2] = 0.05;
2552 gMC->Gsvolu("I554", "BOX ", idtmed[203], dits, 3);
2553
2554 dits[0] = 2.675;
2555 dits[1] = 0.035;
2556 dits[2] = 0.05;
2557 gMC->Gsvolu("I555", "BOX ", idtmed[203], dits, 3);
2558
2559 dits[0] = 0.3;
2560 dits[1] = 0.15;
2561 dits[2] = 0.15;
2562 gMC->Gsvolu("I561", "BOX ", idtmed[203], dits, 3);
2563
2564 dits[0] = 0.025;
2565 dits[1] = 0.025;
2566 dits[2] = 0.05;
2567 gMC->Gsvolu("I519", "BOX ", idtmed[214], dits, 3);
2568
2569 dits[0] = 0.304;
2570 dits[1] = 0.0275;
2571 dits[2] = 0.432;
2572 gMC->Gsvolu("I521", "BOX ", idtmed[206], dits, 3);
2573
2574 dits[0] = 0.16;
2575 dits[1] = 0.08;
2576 dits[2] = 0.08;
2577 gMC->Gsvolu("I520", "BOX ", idtmed[214], dits, 3);
2578
2579 dits[0] = 3.4;
2580 dits[1] = 0.015;
2581 dits[2] = 0.525;
2582 gMC->Gsvolu("I518", "BOX ", idtmed[203], dits, 3);
2583
2584 dits[0] = 0.15;
2585 dits[1] = 0.105;
2586 dits[2] = 0.29;
2587 dits[3] = 0.08;
2588 gMC->Gsvolu("I522", "TRD1", idtmed[203], dits, 4);
2589
2590 dits[0] = 0.07;
2591 dits[1] = 0.1;
2592 dits[2] = 1.955;
2593 gMC->Gsvolu("I542", "TUBE", idtmed[210], dits, 3);
2594
2595 if (fluid == 1) {
2596 dits[0] = 0;
2597 dits[1] = 0.07;
2598 dits[2] = 1.955;
2599 gMC->Gsvolu("I541", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
2600 } else {
2601 dits[0] = 0;
2602 dits[1] = 0.07;
2603 dits[2] = 1.955;
2604 gMC->Gsvolu("I541", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
2605 }
2606
2607 dits[0] = 0.3;
2608 dits[1] = 0.15;
2609 dits[2] = 0.15;
2610 gMC->Gsvolu("I543", "BOX ", idtmed[203], dits, 3);
2611
2612 dits[0] = 0.25;
2613 dits[1] = 0.22;
2614 dits[2] = 1.955;
2615 dits[3] = 0.025;
2616 gMC->Gsvolu("I537", "TRD1", idtmed[203], dits, 4);
2617
2618 dits[0] = 0.225;
2619 dits[1] = 0.195;
2620 dits[2] = 1.955;
2621 dits[4] = 0.025;
2622 gMC->Gsvolu("I538", "TRD1", idtmed[203], dits, 4);
2623
2624 dits[0] = 2.17;
2625 dits[1] = 0.035;
2626 dits[2] = 0.05;
2627 gMC->Gsvolu("I536", "BOX ", idtmed[203], dits, 3);
2628
2629 dits[0] = 2.675;
2630 dits[1] = 0.035;
2631 dits[2] = 0.05;
2632 gMC->Gsvolu("I535", "BOX ", idtmed[203], dits, 3);
2633
2634 dits[0] = 2;
2635 dits[1] = 0.035;
2636 dits[2] = 0.05;
2637 gMC->Gsvolu("I534", "BOX ", idtmed[203], dits, 3);
2638
2639 dits[0] = 0;
2640 dits[1] = 0.05;
2641 dits[2] = 0.17;
2642 gMC->Gsvolu("I540", "TUBE", idtmed[203], dits, 3);
2643
2644 dits[0] = 0;
2645 dits[1] = 0.05;
2646 dits[2] = 0.205;
2647 gMC->Gsvolu("I539", "TUBE", idtmed[203], dits, 3);
2648
2649 dits[0] = 3.65;
2650 dits[1] = 0.015;
2651 dits[2] = 2;
2652 gMC->Gsvolu("ITS6", "BOX ", idtmed[200], dits, 3);
2653
2654 if (fluid == 1) {
2655 dits[0] = 0;
2656 dits[1] = 0.07;
2657 dits[2] = 3.15;
2658 gMC->Gsvolu("I550", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
2659 } else {
2660 dits[0] = 0;
2661 dits[1] = 0.07;
2662 dits[2] = 3.15;
2663 gMC->Gsvolu("I550", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
2664 }
2665
2666 dits[0] = 0.07;
2667 dits[1] = 0.1;
2668 dits[2] = 3.15;
2669 gMC->Gsvolu("I551", "TUBE", idtmed[210], dits, 3);
2670
2671 dits[0] = 0.225;
2672 dits[1] = 0.195;
2673 dits[2] = 3.15;
2674 dits[3] = 0.025;
2675 gMC->Gsvolu("I549", "TRD1", idtmed[203], dits, 4);
2676
2677 dits[0] = 0.25;
2678 dits[1] = 0.22;
2679 dits[2] = 3.15;
2680 dits[3] = 0.025;
2681 gMC->Gsvolu("I548", "TRD1", idtmed[203], dits, 4);
2682
2683 dits[0] = 2.17;
2684 dits[1] = 0.035;
2685 dits[2] = 0.05;
2686 gMC->Gsvolu("I547", "BOX ", idtmed[203], dits, 3);
2687
2688 dits[0] = 2;
2689 dits[1] = 0.035;
2690 dits[2] = 0.05;
2691 gMC->Gsvolu("I545", "BOX ", idtmed[203], dits, 3);
2692
2693 dits[0] = 2.675;
2694 dits[1] = 0.035;
2695 dits[2] = 0.05;
2696 gMC->Gsvolu("I546", "BOX ", idtmed[203], dits, 3);
2697
2698 dits[0] = 0.3;
2699 dits[1] = 0.15;
2700 dits[2] = 0.15;
2701 gMC->Gsvolu("I552", "BOX ", idtmed[203], dits, 3);
2702
2703 dits[0] = 0.304;
2704 dits[1] = 0.0275;
2705 dits[2] = 0.4322;
2706 gMC->Gsvolu("I515", "BOX ", idtmed[206], dits, 3);
2707
2708 dits[0] = 0.025;
2709 dits[1] = 0.025;
2710 dits[2] = 0.05;
2711 gMC->Gsvolu("I513", "BOX ", idtmed[214], dits, 3);
2712
2713 dits[0] = 0.16;
2714 dits[1] = 0.08;
2715 dits[2] = 0.08;
2716 gMC->Gsvolu("I514", "BOX ", idtmed[214], dits, 3);
2717
2718 dits[0] = 3.4;
2719 dits[1] = 0.015;
2720 dits[2] = 0.525;
2721 gMC->Gsvolu("I512", "BOX ", idtmed[203], dits, 3);
2722
2723 dits[0] = 0.225;
2724 dits[1] = 0.195;
2725 dits[2] = 1.955;
2726 dits[3] = 0.025;
2727 gMC->Gsvolu("I528", "TRD1", idtmed[203], dits, 4);
2728
2729 dits[0] = 0.25;
2730 dits[1] = 0.22;
2731 dits[2] = 1.955;
2732 dits[3] = 0.025;
2733 gMC->Gsvolu("I527", "TRD1", idtmed[203], dits, 4);
2734
2735 dits[0] = 2.17;
2736 dits[1] = 0.035;
2737 dits[2] = 0.05;
2738 gMC->Gsvolu("I526", "BOX ", idtmed[203], dits, 3);
2739
2740 dits[0] = 2.675;
2741 dits[1] = 0.035;
2742 dits[2] = 0.05;
2743 gMC->Gsvolu("I525", "BOX ", idtmed[203], dits, 3);
2744
2745 dits[0] = 2;
2746 dits[1] = 0.035;
2747 dits[2] = 0.05;
2748 gMC->Gsvolu("I524", "BOX ", idtmed[203], dits, 3);
2749
2750 dits[0] = 0;
2751 dits[1] = 0.05;
2752 dits[2] = 0.205;
2753 gMC->Gsvolu("I529", "TUBE", idtmed[203], dits, 3);
2754
2755 dits[0] = 0;
2756 dits[1] = 0.05;
2757 dits[2] = 0.17;
2758 gMC->Gsvolu("I530", "TUBE", idtmed[203], dits, 3);
2759
2760 dits[0] = 0.15;
2761 dits[1] = 0.105;
2762 dits[2] = 0.29;
2763 dits[3] = 0.08;
2764 gMC->Gsvolu("I517", "TRD1", idtmed[203], dits, 4);
2765
2766 if (fluid == 1) {
2767 dits[0] = 0;
2768 dits[1] = 0.07;
2769 dits[2] = 1.955;
2770 gMC->Gsvolu("I531", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
2771 } else {
2772 dits[0] = 0;
2773 dits[1] = 0.07;
2774 dits[2] = 1.955;
2775 gMC->Gsvolu("I531", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
2776 }
2777
2778 dits[0] = 0.07;
2779 dits[1] = 0.1;
2780 dits[2] = 1.955;
2781 gMC->Gsvolu("I532", "TUBE", idtmed[210], dits, 3);
2782
2783 dits[0] = 0.3;
2784 dits[1] = 0.15;
2785 dits[2] = 0.15;
2786 gMC->Gsvolu("I533", "BOX ", idtmed[203], dits, 3);
2787
2788 dits[0] = 3.65;
2789 dits[1] = 0.015;
2790 dits[2] = 2;
2791 gMC->Gsvolu("ITS5", "BOX ", idtmed[200], dits, 3);
2792 }
2793
2794
2795 // --- Define volumes of shield of SPD ----------------
2796
2797 if (! AliITSInitGeometry::SPDshieldIsTGeoNative()) {
2798 dits[0] = 8.37;
2799 dits[1] = 9.93;
2800 dits[2] = 25;
2801 gMC->Gsvolu("IC01", "TUBE", idtmed[289], dits, 3);
2802
2803 dits[0] = 8.3;
2804 dits[1] = 9.995;
2805 dits[2] = 17.5/2.;
2806 gMC->Gsvolu("IC02", "TUBE", idtmed[289], dits, 3);
2807 }
2808
2809 Double_t s1,s2,b1,b2;
2810
2811 if (! AliITSInitGeometry::SDDconeIsTGeoNative()) {
2812
2813 // --- Define volume of first cylinder between SPD and SDD --------------
2814 dits[0] = (21.-0.128)/2.;
2815 dits[1] = 21./2.;
2816 dits[2] = 39.4;
2817 gMC->Gsvolu("ICY1", "TUBE", idtmed[208], dits, 3);
2818
074b8e6f 2819 // --- Define volumes of second cylinder between SDD and SSD ------------
2820 // --- (from B. Giraudo plots - M.S. 20 Nov 2007)
2821 dits[0] = 59.5/2. - 0.06;
108bd0fe 2822 dits[1] = 59.5/2.;
074b8e6f 2823 dits[2] = 102/2.; // was 57
108bd0fe 2824 gMC->Gsvolu("ICY2", "TUBE", idtmed[208], dits, 3);
2825
074b8e6f 2826 dits[1] = dits[0];
2827 dits[0] = dits[1] - 0.5;
2828 gMC->Gsvolu("ICY3", "TUBE", idtmed[267], dits, 3);
2829
2830 dits[1] = dits[0];
2831 dits[0] = dits[1] - 0.06;
2832 gMC->Gsvolu("ICY4", "TUBE", idtmed[208], dits, 3);
2833
108bd0fe 2834 // --- Define volumes of SDD cone ----------------------------------
2835
2836 dits[0] = 0;
2837 dits[1] = 360;
2838 dits[2] = 12;
bf210566 2839 //
108bd0fe 2840 dits[3] = -59.7;
2841 dits[4] = 27;
2842 dits[5] = 28.6;
bf210566 2843
108bd0fe 2844 dits[6] = -42.7;
2845 dits[7] = 10;
2846 dits[8] = 28.6;
bf210566 2847
2848 // dits[9] = -34.65;
2849 dits[9] = -33.55;
108bd0fe 2850 dits[10] = 10;
2851 dits[11] = 28.6;
bf210566 2852
2853 // dits[12] = -34.65;
2854 dits[12] = -33.55;
108bd0fe 2855 dits[13] = 10;
2856 dits[14] = 23.495;
bf210566 2857
2858 //dits[15] = -23.7;
2859 dits[15] = -26.2;
108bd0fe 2860 dits[16] = 10;
2861 dits[17] = 23.495;
bf210566 2862
2863 //dits[18] = -23.7;
2864 dits[18] = -26.2;
108bd0fe 2865 dits[19] = 10;
2866 dits[20] = 14.595;
bf210566 2867
2868 //dits[21] = 23.7;
2869 dits[21] = 26.2;
108bd0fe 2870 dits[22] = 10;
2871 dits[23] = 14.595;
bf210566 2872
2873 //dits[24] = 23.7;
2874 dits[24] = 26.2;
108bd0fe 2875 dits[25] = 10;
2876 dits[26] = 23.495;
bf210566 2877
2878// dits[27] = 34.65;
2879 dits[27] = 33.55;
108bd0fe 2880 dits[28] = 10;
2881 dits[29] = 23.495;
bf210566 2882
2883// dits[30] = 34.65;
2884 dits[30] = 33.55;
108bd0fe 2885 dits[31] = 10;
2886 dits[32] = 28.6;
bf210566 2887
108bd0fe 2888 dits[33] = 42.7;
2889 dits[34] = 10;
2890 dits[35] = 28.6;
bf210566 2891
108bd0fe 2892 dits[36] = 59.7;
2893 dits[37] = 27.2637;
bf210566 2894 dits[38] = 28.6;
2895
2896 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
2897 dits[9] = -34.65;
2898 dits[12] = -34.65;
2899 dits[15] = -23.7;
2900 dits[18] = -23.7;
2901 dits[21] = 23.7;
2902 dits[24] = 23.7;
2903 dits[27] = 34.65;
2904 dits[30] = 34.65;
2905 }
108bd0fe 2906 gMC->Gsvolu("IS02", "PCON", idtmed[204], dits, 39);
2907
2908 dits[0] = 0;
2909 dits[1] = 360;
2910 dits[2] = 6;
2911 dits[3] = 38.65;
2912 dits[4] = 10.75;
2913 dits[5] = 12.25;
2914 dits[6] = 40.15;
2915 dits[7] = 10.75;
2916 dits[8] = 13.96;
2917 dits[9] = 40.15;
2918 dits[10] = 12.46;
2919 dits[11] = 13.96;
2920 dits[12] = 55.75;
2921 dits[13] = 27;
2922 dits[14] = 28.5;
2923 dits[15] = 55.75;
2924 dits[16] = 27;
2925 dits[17] = 28.5;
2926 dits[18] = 57.25;
2927 dits[19] = 27;
2928 dits[20] = 28.5;
2929// gMC->Gsvolu("I093", "PCON", idtmed[272], dits, 21); // SDD cone
2930 gMC->Gsvolu("I093", "PCON", idtmed[287], dits, 21); // SDD cone
2931
2932 // Redefined to make adding material for cables easier (FMD geometry)
2933 s1 = (dits[13]-dits[10])/(dits[12]-dits[9]); // Slope of conical section
2934 s2 = (dits[14]-dits[11])/(dits[12]-dits[9]); // Slope of conical section
2935 b1 = dits[13] - s1*dits[12]; // inside cone axis intersept
2936 b2 = dits[14] - s2*dits[12]; // outside cone axis intersept
2937 dits[0] = 0; //dits[0] = 0;
2938 dits[1] = 50; //dits[1] = 50;
2939 dits[2] = 4; //dits[2] = 3;
2940
2941 dits[4] = 14.0; //dits[4] = 14; // r inner
2942 dits[5] = dits[4]; //dits[5] = 18.75; // r outer
2943 dits[3] = (dits[4]-b2)/s2; //dits[3] = 39; // Z
2944
2945 dits[7] = dits[4]; //dits[7] = 14; // r inner
2946 dits[6] = (dits[7]-b1)/s1; //dits[6] = 46.7-3; // Z
2947 dits[8] = s2*dits[6]+b2; //dits[8] = 18.75; // r outer
2948
2949 dits[11] = 18.75; //dits[11] = 18.75; // r outer
2950 dits[9] = (dits[11]-b2)/s2; //dits[9] = 51.45-3; // Z
2951 dits[10] = s1*dits[9]+b1; //dits[10] = 18.75; // r inner
2952
2953 dits[13] = dits[11]; // r inner
2954 dits[14] = dits[11]; // r outer
2955 dits[12] = (dits[13]-b1)/s1; // Z
2956// gMC->Gsvolu("I099", "PCON", idtmed[204], dits, 12); // SDD 3 cone hole
2957 gMC->Gsvolu("I099", "PCON", idtmed[285], dits, 15); // SDD 3 cone hole
2958
2959 dits[0] = 0; //dits[0] = 0;
2960 dits[1] = 25; //dits[1] = 25;
2961 dits[2] = 4; //dits[2] = 3;
2962
2963 dits[4] = 23.4; //dits[4] = 23.4; // r inner
2964 dits[5] = dits[4]; //dits[5] = 26.4; // r outer
2965 dits[3] = (dits[4]-b2)/s2; //dits[3] = 49; // Z
2966
2967 dits[7] = dits[4]; //dits[7] = 23.4; // r inner
2968 dits[6] = (dits[7]-b1)/s1; //dits[6] = 56.1-3; // Z
2969 dits[8] = s2*dits[6]+b2; //dits[8] = 26.4; // r outer
2970
2971 dits[11] = 26.4; //dits[11] = 26.4; // r outer
2972 dits[9] = (dits[11]-b2)/s2; //dits[9] = 59.1-3; // Z
2973 dits[10] = s1*dits[9]+b1; //dits[10] = 26.4; // r inner
2974
2975 dits[13] = dits[11]; // r inner
2976 dits[14] = dits[11]; // r outer
2977 dits[12] = (dits[13]-b1)/s1; // Z
2978// gMC->Gsvolu("I200", "PCON", idtmed[204], dits, 12); // SDD 4 cone hole
2979 gMC->Gsvolu("I200", "PCON", idtmed[285], dits, 15); // SDD 4 cone hole
2980 //Begin_Html
2981 /*
2982 <img src="http://www.Physics.ohio-state.edu/~nilsen/ITS/ITS_FMD_PMD_Geom.eps">
2983 </pre>
2984 <br clear=left>
2985 <font size=+2 color=blue>
2986 <p>SDD Support cone with other forward detectors. Shown in
2987 brown are a posible cabling layout.
2988 </font>
2989 */
2990 //End_Html
2991 dits[0] = 10.0;
2992 dits[1] = 10.5;
2993 dits[2] = 0.25;
2994 gMC->Gsvolu("I090", "TUBE", idtmed[224], dits, 3); // SDD cylinder flange
2995
2996 dits[0] = 21.95;
2997 dits[1] = 22.95;
2998 dits[2] = 1;
2999 gMC->Gsvolu("I098", "TUBE", idtmed[283], dits, 3); // ladder support on layer 4
3000
3001 dits[0] = 13.1;
3002 dits[1] = 14.1;
3003 dits[2] = 1;
3004 gMC->Gsvolu("I097", "TUBE", idtmed[283], dits, 3); // ladder support on layer 3
3005
3006 dits[0] = 1;
3007 dits[1] = 1;
3008 dits[2] = 7.74;
3009 gMC->Gsvolu("I202", "BOX ", idtmed[272], dits, 3);
3010
bf210566 3011 if (AliITSInitGeometry::SDDIsTGeoNative())
3012 dits[0] = 0.9;
3013 else
3014 dits[0] = 1;
108bd0fe 3015 dits[1] = 1;
3016 dits[2] = 9.14;
3017 gMC->Gsvolu("I203", "BOX ", idtmed[272], dits, 3);
3018
3019 dits[0] = 21.95;
3020 dits[1] = 22.95;
3021 dits[2] = 1;
3022 gMC->Gsvolu("I095", "TUBE", idtmed[224], dits, 3);
3023
3024 dits[0] = 3;
3025 dits[1] = 2.7;
3026 dits[2] = 1;
3027 dits[3] = 0.63;
3028 gMC->Gsvolu("I096", "TRD1", idtmed[264], dits, 4);
3029
3030 dits[0] = 13.1;
3031 dits[1] = 14.1;
3032 dits[2] = 1;
3033 gMC->Gsvolu("I094", "TUBE", idtmed[224], dits, 3);
3034 }
3035
3036 if (! AliITSInitGeometry::SSDconeIsTGeoNative()) {
3037 // --- Define volumes of SSD cone ----------------------------------
3038
3039 dits[0] = 0;
3040 dits[1] = 360;
3041 dits[2] = 12;
bf210566 3042
108bd0fe 3043 dits[3] = -zmax;
bf210566 3044 dits[4] = 46;
3045 dits[5] = 49.25;
3046
108bd0fe 3047 dits[6] = -61.2;
3048 dits[7] = 28.7;
bf210566 3049 dits[8] = 49.25;
3050
108bd0fe 3051 dits[9] = -57.5;
3052 dits[10] = 28.7;
bf210566 3053 dits[11] = 49.25;
3054
108bd0fe 3055 dits[12] = -57.5;
3056 dits[13] = 28.7;
3057 dits[14] = 43.5;
bf210566 3058
3059 //dits[15] = -49.2;
3060 dits[15] = -53.4-0.75;
108bd0fe 3061 dits[16] = 28.7;
3062 dits[17] = 43.5;
bf210566 3063
3064 //dits[18] = -49.2;
3065 dits[18] = -53.4-0.75;
108bd0fe 3066 dits[19] = 28.7;
3067 dits[20] = 36.85;
bf210566 3068
3069 //dits[21] = 50.6;
3070 dits[21] = 53.4+0.75;
108bd0fe 3071 dits[22] = 28.7;
3072 dits[23] = 36.85;
bf210566 3073
3074 dits[24] = 53.4+0.75;
3075 //dits[24] = 50.6;
108bd0fe 3076 dits[25] = 28.7;
3077 dits[26] = 43.5;
bf210566 3078
108bd0fe 3079 dits[27] = 57.5;
3080 dits[28] = 28.7;
3081 dits[29] = 43.5;
bf210566 3082
108bd0fe 3083 dits[30] = 57.5;
3084 dits[31] = 28.7;
bf210566 3085 dits[32] = 49.25;
3086
108bd0fe 3087 dits[33] = 61.2;
3088 dits[34] = 28.7;
3089 dits[35] = 49.25;
3090 dits[36] = zmax;
3091 dits[37] = 46;
bf210566 3092 dits[38] = 49.25;
3093
3094 if (! AliITSInitGeometry::SSDIsTGeoNative()) {
3095 dits[15] = -49.2;
3096 dits[18] = -49.2;
3097 dits[21] = 50.6;
3098 dits[24] = 50.6;
3099 }
3100
108bd0fe 3101 gMC->Gsvolu("IS01", "PCON", idtmed[204], dits, 39); // SSD cone mother volume
3102
3103 dits[0] = 0;
3104 dits[1] = 360;
3105 dits[2] = 6;
3106 dits[3] = -zmax;
3107 dits[4] = 47.75;
3108 dits[5] = 49.25;
3109 dits[6] = -zmax+2.;
3110 dits[7] = 47.75;
3111 dits[8] = 49.25;
3112 dits[9] = -71.2819;
3113 dits[10] = 46.75;
3114 dits[11] = 49.0319;
3115 dits[12] = -57.25; // was 58.5
3116 dits[13] = 32.9681;
3117 dits[14] = 34.75;
3118 dits[15] = -57.25; // was 58.5
3119 dits[16] = 30;
3120 dits[17] = 34.75;
3121 dits[18] = -55.75; // was 57
3122 dits[19] = 30;
3123 dits[20] = 32.25; // was 31.5
3124// gMC->Gsvolu("I212", "PCON", idtmed[272], dits, 21); // SSD cone
3125 gMC->Gsvolu("I212", "PCON", idtmed[288], dits, 21); // SSD cone
3126
3127 s1 = (dits[10]-dits[13])/(dits[9]-dits[12]); // Slope of conical section
3128 s2 = (dits[11]-dits[14])/(dits[9]-dits[12]); // Slope of conical section
3129 b1 = dits[13] - s1*dits[12]; // inside cone axis intersept
3130 b2 = dits[14] - s2*dits[12]; // outside cone axis intersept
3131 dits[0] = 0;
3132 dits[1] = 25;
3133 dits[2] = 4; //dits[2] = 5;
3134
3135 dits[4] = 45.50; //dits[4] = 45.5; // r inner
3136 dits[5] = dits[4]; //dits[5] = 45.5; // r outer
3137 dits[3] = (dits[4] - b1)/s1; //dits[3] = -zmax+3; // z
3138
3139 dits[8] = dits[4]; //dits[8] = 45.5; // r outer
3140 dits[6] = (dits[8] - b2)/s2; //dits[6] = -69.7+3;; // z
3141 dits[7] = s1*dits[6] + b1; //dits[7] = 37; // r inner
3142
3143 dits[10] = 37.00; //dits[10] = 37; // r inner
3144 dits[9] = (dits[10]-b1)/s1; //dits[9] = -68.5+3;; // z
3145 dits[11] = s2*dits[9]+b2; //dits[11] = 45.5; // r outer
3146
3147 dits[13] = dits[10]; //dits[13] = 37; // r inner
3148 dits[14] = dits[13]; //dits[14] = 45.5; // r outer
3149 dits[12] = (dits[14] - b2)/s2; //dits[12] = -68.5+4.8;; // z
3150// gMC->Gsvolu("I215", "PCON", idtmed[204], dits, 18); // SSD cone hole
3151 gMC->Gsvolu("I215", "PCON", idtmed[286], dits, 15); // SSD cone hole
3152 //Begin_Html
3153 /*
3154 <img src="http://www.Physics.ohio-state.edu/~nilsen/ITS/ITS_FMD_PMD_Geom.eps">
3155 </pre>
3156 <br clear=left>
3157 <font size=+2 color=blue>
3158 <p>SSD Support cone with other forward detectors. Shown in
3159 brown are a posible cabling layout.
3160 </font>
3161 */
3162 //End_Html
3163
3164 dits[0] = 28.75;
3165 dits[1] = 29.75;
3166 dits[2] = 0.5;
3167 gMC->Gsvolu("I211", "TUBE", idtmed[224], dits, 3); // SSD cylinder flange
3168
3169 dits[0] = 35.8;
3170 dits[1] = 36.8;
3171 dits[2] = 1;
3172 gMC->Gsvolu("I217", "TUBE", idtmed[283], dits, 3); // ladder support on layer 5
3173
3174 dits[0] = 41.4;
3175 dits[1] = 42.4;
3176 dits[2] = 1;
3177 gMC->Gsvolu("I219", "TUBE", idtmed[283], dits, 3); // ladder support on layer 6
3178
3179 dits[0] = 42.05+5.;
3180 dits[1] = 42.55+5.;
3181 dits[2] = 1.25;
3182 gMC->Gsvolu("I214", "TUBE", idtmed[224], dits, 3); // layer 6 electronic support
3183 // this will change after PPR
3184 dits[0] = 37.05+5.;
3185 dits[1] = 37.55+5.;
3186 dits[2] = 1.25;
3187 gMC->Gsvolu("I213", "TUBE", idtmed[224], dits, 3); // layer 5 electronic support
3188 // this will change after PPR
3189
3190 dits[0] = 0;
3191 dits[1] = 3.2;
3192 dits[2] = 9;
3193 dits[3] = -14;
3194 dits[4] = 30.5;
3195 dits[5] = 33.5;
3196 dits[6] = -9.85;
3197 dits[7] = 30.5;
3198 dits[8] = 33.5;
3199 dits[9] = -9.85;
3200 dits[10] = 30.5;
3201 dits[11] = 43.45;
3202 dits[12] = -7.85;
3203 dits[13] = 30.5;
3204 dits[14] = 43.45;
3205 dits[15] = -7.85;
3206 dits[16] = 30.5;
3207 dits[17] = 36.5;
3208 dits[18] = -7;
3209 dits[19] = 30.5;
3210 dits[20] = 36.5;
3211 dits[21] = -4;
3212 dits[22] = 33.0173;
3213 dits[23] = 36.5;
3214 dits[24] = -4;
3215 dits[25] = 33.0173;
3216 dits[26] = 36.80;
3217 dits[27] = -2;
3218 dits[28] = 34.6955;
3219 dits[29] = 36.80;
3220 gMC->Gsvolu("I216", "PCON", idtmed[272], dits, 30); // supports (1-6) of the ladders
3221 }
3222
3223
3224 // --- Place SPD (option 'b') volumes into their mother volume IT12
3225
3226 // SPD - option 'b'
3227 // (this is the default)
3228
3229 //if (option == 2) {
3230 if (! AliITSInitGeometry::SPDIsTGeoNative()) {
3231
8f8273a4 3232 gMC->Gspos("I12B",1,"IT12",0.0,0.0,0.0,0,"ONLY");
3233 gMC->Gspos("I12B",8,"IT12",0.0,0.0,0.0,idrotm[233],"ONLY");
3234 gMC->Gspos("I12B",7,"IT12",0.0,0.0,0.0,idrotm[244],"ONLY");
3235 gMC->Gspos("I12B",6,"IT12",0.0,0.0,0.0,idrotm[236],"ONLY");
3236 gMC->Gspos("I12B",2,"IT12",0.0,0.0,0.0,idrotm[245],"ONLY");
3237 gMC->Gspos("I12B",3,"IT12",0.0,0.0,0.0,idrotm[234],"ONLY");
3238 gMC->Gspos("I12B",4,"IT12",0.0,0.0,0.0,idrotm[246],"ONLY");
3239 gMC->Gspos("I12B",5,"IT12",0.0,0.0,0.0,idrotm[247],"ONLY");
3240 gMC->Gspos("I12B",9,"IT12",0.0,0.0,0.0,idrotm[248],"ONLY");
3241 gMC->Gspos("I12B",10,"IT12",0.0,0.0,0.0,idrotm[249],"ONLY");
108bd0fe 3242 deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(270.*TMath::Pi()/180.); // see definition of idrotm[238]
3243 deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(270.*TMath::Pi()/180.); // see definition of idrotm[238]
3244 gMC->Gspos("I10B",2,"I12B",0.203+deltax,3.8206+deltay,0.0,idrotm[238],"ONLY");
3245 deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(252.*TMath::Pi()/180.); // see definition of idrotm[239]
3246 deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(252.*TMath::Pi()/180.); // see definition of idrotm[239]
3247 gMC->Gspos("I10B",1,"I12B",1.4531+deltax,3.8152+deltay,0.0,idrotm[239],"ONLY");
3248 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(40.*TMath::Pi()/180.); // see definition of idrotm[240]
3249 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(40.*TMath::Pi()/180.); // see definition of idrotm[240]
3250 gMC->Gspos("I20B",1,"I12B",3.0174+deltax,6.5143+deltay,0.0,idrotm[240],"ONLY");
3251 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(49.*TMath::Pi()/180.); // see definition of idrotm[241]
3252 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(49.*TMath::Pi()/180.); // see definition of idrotm[241]
3253 gMC->Gspos("I20B",2,"I12B",1.9612+deltax,6.9062+deltay,0.0,idrotm[241],"ONLY");
3254 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(58.*TMath::Pi()/180.); // see definition of idrotm[242]
3255 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(58.*TMath::Pi()/180.); // see definition of idrotm[242]
3256 gMC->Gspos("I20B",3,"I12B",0.8567+deltax,7.1279+deltay,0.0,idrotm[242],"ONLY");
3257 deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(67.*TMath::Pi()/180.); // see definition of idrotm[243]
3258 deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(67.*TMath::Pi()/180.); // see definition of idrotm[243]
3259 gMC->Gspos("I20B",4,"I12B",-0.2689+deltax,7.1742+deltay,0.0,idrotm[243],"ONLY");
3260 gMC->Gspos("I123",1,"I12B",-0.2978,5.5196,0.0,idrotm[214],"ONLY");
3261 gMC->Gspos("I121",1,"I12B",-0.2385,4.1518,0.0,idrotm[213],"ONLY");
3262 gMC->Gspos("I122",1,"I12B",-0.2968,4.0207,0.0,idrotm[212],"ONLY");
3263 gMC->Gspos("I120",1,"I12B",-0.3672,3.9056,0.0,0,"ONLY");
3264 gMC->Gspos("I144",1,"I12B",-0.2538,3.8556,0.0,0,"ONLY");
3265 gMC->Gspos("I113",3,"I12B",0.1095,3.9056,0.0,0,"ONLY");
3266 gMC->Gspos("I143",1,"I12B",0.4365,3.8556,0.0,idrotm[236],"ONLY");
3267 gMC->Gspos("I142",1,"I12B",0.5136,3.9056,0.0,idrotm[235],"ONLY");
3268 gMC->Gspos("I141",1,"I12B",0.5636,3.9752,0.0,idrotm[237],"ONLY");
3269 gMC->Gspos("I140",1,"I12B",0.6336,4.0447,0.0,idrotm[234],"ONLY");
3270 gMC->Gspos("I139",1,"I12B",0.8297,4.0545,0.0,idrotm[207],"ONLY");
3271 gMC->Gspos("I113",5,"I12B",1.2575,3.9681,0.0,idrotm[207],"ONLY");
3272 gMC->Gspos("I138",1,"I12B",1.66,3.7848,0.0,idrotm[207],"ONLY");
3273 gMC->Gspos("I137",1,"I12B",1.8556,3.7738,0.0,idrotm[233],"ONLY");
3274 gMC->Gspos("I136",1,"I12B",2.6224,4.874,0.0,idrotm[232],"ONLY");
3275 gMC->Gspos("I135",1,"I12B",3.2967,6.0337,0.0,idrotm[231],"ONLY");
3276 gMC->Gspos("I134",1,"I12B",3.266,6.1636,0.0,idrotm[230],"ONLY");
3277 gMC->Gspos("I113",1,"I12B",2.9903,6.4144,0.0,idrotm[211],"ONLY");
3278 gMC->Gspos("I133",3,"I12B",2.7631,6.7627,0.0,idrotm[230],"ONLY");
3279 gMC->Gspos("I132",3,"I12B",2.62,6.8555,0.0,idrotm[229],"ONLY");
3280 gMC->Gspos("I131",3,"I12B",2.648,6.6023,0.0,idrotm[228],"ONLY");
3281 gMC->Gspos("I130",3,"I12B",2.6569,6.3431,0.0,idrotm[227],"ONLY");
3282 gMC->Gspos("I129",3,"I12B",2.3906,6.4819,0.0,idrotm[226],"ONLY");
3283 gMC->Gspos("I113",2,"I12B",1.9488,6.7998,0.0,idrotm[210],"ONLY");
3284 gMC->Gspos("I133",2,"I12B",1.6699,7.1085,0.0,idrotm[226],"ONLY");
3285 gMC->Gspos("I132",2,"I12B",1.5142,7.1777,0.0,idrotm[225],"ONLY");
3286 gMC->Gspos("I131",2,"I12B",1.5814,6.932,0.0,idrotm[224],"ONLY");
3287 gMC->Gspos("I130",2,"I12B",1.6308,6.6774,0.0,idrotm[223],"ONLY");
3288 gMC->Gspos("I129",2,"I12B",1.346,6.7728,0.0,idrotm[222],"ONLY");
3289 gMC->Gspos("I113",6,"I12B",0.8599,7.0176,0.0,idrotm[209],"ONLY");
3290 gMC->Gspos("I133",1,"I12B",0.5362,7.2789,0.0,idrotm[222],"ONLY");
3291 gMC->Gspos("I132",1,"I12B",0.3715,7.3228,0.0,idrotm[221],"ONLY");
3292 gMC->Gspos("I131",1,"I12B",0.4763,7.0907,0.0,idrotm[220],"ONLY");
3293 gMC->Gspos("I130",1,"I12B",0.5649,6.8469,0.0,idrotm[219],"ONLY");
3294 gMC->Gspos("I129",1,"I12B",0.2688,6.8966,0.0,idrotm[218],"ONLY");
3295 gMC->Gspos("I113",4,"I12B",-0.2497,7.0624,0.0,idrotm[208],"ONLY");
3296 gMC->Gspos("I128",1,"I12B",-0.6103,7.2698,0.0,idrotm[218],"ONLY");
3297 gMC->Gspos("I126",1,"I12B",-0.7799,7.2874,0.0,idrotm[217],"ONLY");
3298 gMC->Gspos("I125",1,"I12B",-0.6315,7.0883,0.0,idrotm[216],"ONLY");
3299 gMC->Gspos("I124",1,"I12B",-0.4965,6.8742,0.0,idrotm[215],"ONLY");
3300 gMC->Gspos("I105",3,"I10B",-0.05,-0.01,-16.844,idrotm[201],"ONLY");
3301 gMC->Gspos("I105",4,"I10B",-0.05,-0.01,16.844,0,"ONLY");
8f8273a4 3302
3303 // Insertion of half-stave level in old SPD1
3304 gGeoManager->MakeVolumeAssembly("L1H-STAVE0");
3305 gGeoManager->MakeVolumeAssembly("L1H-STAVE1");
3306 gMC->Gspos("L1H-STAVE0",1,"I10B",0,0,0,0,"ONLY");
3307 gMC->Gspos("L1H-STAVE1",1,"I10B",0,0,0,0,"ONLY");
3308 gMC->Gspos("I107",1,"L1H-STAVE0",-0.0455,-di10b[1]+di107[1],10.708,0,"ONLY");
3309 gMC->Gspos("I107",2,"L1H-STAVE0",-0.0455,-di10b[1]+di107[1],3.536,0,"ONLY");
3310 gMC->Gspos("I107",3,"L1H-STAVE1",-0.0455,-di10b[1]+di107[1],-3.536,0,"ONLY");
3311 gMC->Gspos("I107",4,"L1H-STAVE1",-0.0455,-di10b[1]+di107[1],-10.708,0,"ONLY");
3312 // gMC->Gspos("I107",2,"I10B",-0.0455,-di10b[1]+di107[1],3.536,0,"ONLY");
3313 // gMC->Gspos("I107",1,"I10B",-0.0455,-di10b[1]+di107[1],10.708,0,"ONLY");
3314 // gMC->Gspos("I107",4,"I10B",-0.0455,-di10b[1]+di107[1],-10.708,0,"ONLY");
3315 // gMC->Gspos("I107",3,"I10B",-0.0455,-di10b[1]+di107[1],-3.536,0,"ONLY");
3316
3317 // Insertion of half-stave level in old SPD2
3318 gGeoManager->MakeVolumeAssembly("L2H-STAVE0");
3319 gGeoManager->MakeVolumeAssembly("L2H-STAVE1");
3320 gMC->Gspos("L2H-STAVE0",1,"I20B",0,0,0,0,"ONLY");
3321 gMC->Gspos("L2H-STAVE1",1,"I20B",0,0,0,0,"ONLY");
3322 gMC->Gspos("I1D7",1,"L2H-STAVE0",-0.0455,-di20b[1]+di1d7[1],10.708,0,"ONLY");
3323 gMC->Gspos("I1D7",2,"L2H-STAVE0",-0.0455,-di20b[1]+di1d7[1],3.536,0,"ONLY");
3324 gMC->Gspos("I1D7",3,"L2H-STAVE1",-0.0455,-di20b[1]+di1d7[1],-3.536,0,"ONLY");
3325 gMC->Gspos("I1D7",4,"L2H-STAVE1",-0.0455,-di20b[1]+di1d7[1],-10.708,0,"ONLY");
3326// gMC->Gspos("I1D7",2,"I20B",-0.0455,-di20b[1]+di1d7[1],3.536,0,"ONLY");
3327// gMC->Gspos("I1D7",1,"I20B",-0.0455,-di20b[1]+di1d7[1],10.708,0,"ONLY");
3328// gMC->Gspos("I1D7",4,"I20B",-0.0455,-di20b[1]+di1d7[1],-10.708,0,"ONLY");
3329// gMC->Gspos("I1D7",3,"I20B",-0.0455,-di20b[1]+di1d7[1],-3.536,0,"ONLY");
3330
108bd0fe 3331 gMC->Gspos("I109",1,"I10B",-0.138,0.015,-16.844,idrotm[201],"ONLY");
3332 gMC->Gspos("I109",2,"I10B",-0.138,0.015,16.844,0,"ONLY");
3333 gMC->Gspos("I108",1,"I10B",-0.138,-di10b[1]+2.*di107[1]+di108[1],0.0,0,"ONLY");
3334 gMC->Gspos("I105",1,"I20B",-0.05,-0.01,-16.844,idrotm[201],"ONLY");
3335 gMC->Gspos("I105",2,"I20B",-0.05,-0.01,16.844,0,"ONLY");
108bd0fe 3336 gMC->Gspos("I109",3,"I20B",-0.138,0.015,-16.844,idrotm[201],"ONLY");
3337 gMC->Gspos("I109",4,"I20B",-0.138,0.015,16.844,0,"ONLY");
3338 gMC->Gspos("I108",2,"I20B",-0.138,-di20b[1]+2.*di1d7[1]+di108[1],0.0,0,"ONLY");
3339 gMC->Gspos("I112",2,"I113",0.25,0.02,0.0,idrotm[206],"ONLY");
3340 gMC->Gspos("I111",2,"I113",0.1318,-0.0008,0.0,idrotm[205],"ONLY");
3341 gMC->Gspos("I118",1,"I113",0.0,-0.0454,0.0,0,"ONLY");
3342 gMC->Gspos("I110",1,"I113",0.0,0.0492,0.0,0,"ONLY");
3343 gMC->Gspos("I114",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3344 gMC->Gspos("I115",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3345 gMC->Gspos("I115",2,"I113",-0.063,0.0042,0.0,idrotm[237],"ONLY");
3346 gMC->Gspos("I114",2,"I113",-0.063,0.0042,0.0,idrotm[237],"ONLY");
3347 gMC->Gspos("I116",1,"I113",0.0,0.0042,0.0,0,"ONLY");
3348 gMC->Gspos("I111",1,"I113",-0.1318,-0.0008,0.0,idrotm[204],"ONLY");
3349 gMC->Gspos("I112",1,"I113",-0.25,0.02,0.0,idrotm[203],"ONLY");
3350 gMC->Gspos("I106",1,"I107",0.0,-ddet1,-1.4,0,"ONLY");
3351 gMC->Gspos("I106",2,"I107",0.0,-ddet1,0.0,0,"ONLY");
3352 gMC->Gspos("I106",3,"I107",0.0,-ddet1,1.4,0,"ONLY");
3353 gMC->Gspos("I106",4,"I107",0.0,-ddet1,2.8,0,"ONLY");
3354 gMC->Gspos("I106",5,"I107",0.0,-ddet1,-2.8,0,"ONLY");
3355 gMC->Gspos("I101",1,"I107",0.0,dchip1,0.0,0,"ONLY");
3356 gMC->Gspos("I1D6",1,"I1D7",0.0,-ddet2,-1.4,0,"ONLY");
3357 gMC->Gspos("I1D6",2,"I1D7",0.0,-ddet2,0.0,0,"ONLY");
3358 gMC->Gspos("I1D6",3,"I1D7",0.0,-ddet2,1.4,0,"ONLY");
3359 gMC->Gspos("I1D6",4,"I1D7",0.0,-ddet2,2.8,0,"ONLY");
3360 gMC->Gspos("I1D6",5,"I1D7",0.0,-ddet2,-2.8,0,"ONLY");
3361 gMC->Gspos("I1D1",1,"I1D7",0.0,dchip2,0.0,0,"ONLY");
3362 gMC->Gspos("I117",1,"I116",0.0,0.0,0.0,0,"ONLY");
3363 gMC->Gspos("ITS1",1,"I101",0.0,0.0,0.0,0,"ONLY");
3364 gMC->Gspos("ITS2",1,"I1D1",0.0,0.0,0.0,0,"ONLY");
3365 gMC->Gspos("I651",1,"IT12",0.0,0.0,26.05,0,"ONLY");
8f8273a4 3366 gMC->Gspos("I651",2,"IT12",0.0,0.0,-26.05,0,"ONLY");
3367
3368 gMC->Gspos("I650",16,"IT12",0.0,0.0,22.0,idrotm[1104],"ONLY");
3369 gMC->Gspos("I650",20,"IT12",0.0,0.0,22.0,idrotm[1130],"ONLY");
3370 gMC->Gspos("I650",18,"IT12",0.0,0.0,22.0,idrotm[1117],"ONLY");
3371 gMC->Gspos("I650",1,"IT12",0.0,0.0,22.0,0,"ONLY");
3372 gMC->Gspos("I650",4,"IT12",0.0,0.0,22.0,idrotm[1106],"ONLY");
3373 gMC->Gspos("I650",6,"IT12",0.0,0.0,22.0,idrotm[1039],"ONLY");
3374 gMC->Gspos("I650",8,"IT12",0.0,0.0,22.0,idrotm[1107],"ONLY");
3375 gMC->Gspos("I650",10,"IT12",0.0,0.0,22.0,idrotm[1065],"ONLY");
3376 gMC->Gspos("I650",12,"IT12",0.0,0.0,22.0,idrotm[1078],"ONLY");
3377 gMC->Gspos("I650",14,"IT12",0.0,0.0,22.0,idrotm[1091],"ONLY");
3378 gMC->Gspos("I650",19,"IT12",0.0,0.0,-22.0,idrotm[1108],"ONLY");
3379 gMC->Gspos("I650",2,"IT12",0.0,0.0,-22.0,idrotm[1109],"ONLY");
3380 gMC->Gspos("I650",3,"IT12",0.0,0.0,-22.0,idrotm[1110],"ONLY");
3381 gMC->Gspos("I650",5,"IT12",0.0,0.0,-22.0,idrotm[1111],"ONLY");
3382 gMC->Gspos("I650",7,"IT12",0.0,0.0,-22.0,idrotm[1112],"ONLY");
3383 gMC->Gspos("I650",9,"IT12",0.0,0.0,-22.0,idrotm[1113],"ONLY");
3384 gMC->Gspos("I650",11,"IT12",0.0,0.0,-22.0,idrotm[1114],"ONLY");
3385 gMC->Gspos("I650",13,"IT12",0.0,0.0,-22.0,idrotm[1115],"ONLY");
3386 gMC->Gspos("I650",15,"IT12",0.0,0.0,-22.0,idrotm[1116],"ONLY");
3387 gMC->Gspos("I650",17,"IT12",0.0,0.0,-22.0,idrotm[1118],"ONLY");
3388 gMC->Gspos("I666",1,"I650",0.0,0.0,0.25,idrotm[1003],"ONLY");
3389
108bd0fe 3390 gMC->Gspos("I667",1,"I650",0.1102,0.9945,0.45,idrotm[1088],"ONLY");
3391 gMC->Gspos("I669",3,"I650",0.1883,4.0372,-3.2,0,"ONLY");
3392 gMC->Gspos("I671",3,"I650",0.1883,4.0372,0.6,0,"ONLY");
3393 gMC->Gspos("I669",2,"I650",1.3343,4.0609,-3.2,0,"ONLY");
3394 gMC->Gspos("I671",2,"I650",1.3343,4.0609,0.6,0,"ONLY");
3395 gMC->Gspos("I669",6,"I650",2.9567,6.1959,-3.2,idrotm[1089],"ONLY");
3396 gMC->Gspos("I671",6,"I650",2.9567,6.1959,0.6,idrotm[1089],"ONLY");
3397 gMC->Gspos("I669",5,"I650",1.9511,6.5822,-3.2,idrotm[1011],"ONLY");
3398 gMC->Gspos("I671",5,"I650",1.9511,6.5822,0.6,idrotm[1011],"ONLY");
3399 gMC->Gspos("I669",4,"I650",0.8974,6.8064,-3.2,idrotm[1090],"ONLY");
3400 gMC->Gspos("I671",4,"I650",0.8974,6.8064,0.6,idrotm[1090],"ONLY");
3401 gMC->Gspos("I669",1,"I650",-0.1784,6.863,-3.2,0,"ONLY");
3402 gMC->Gspos("I671",1,"I650",-0.1784,6.863,0.6,0,"ONLY");
3403 gMC->Gspos("I673",1,"I650",0.2173,4.8037,1.8,0,"ONLY");
3404 gMC->Gspos("I673",6,"I650",1.5093,4.5605,1.8,0,"ONLY");
3405 gMC->Gspos("I673",4,"I650",-0.173,6.2531,1.8,idrotm[1092],"ONLY");
3406 gMC->Gspos("I673",3,"I650",0.8073,6.2032,1.8,idrotm[1093],"ONLY");
3407 gMC->Gspos("I673",2,"I650",1.7678,6.0005,1.8,idrotm[1094],"ONLY");
3408 gMC->Gspos("I673",5,"I650",2.6847,5.6501,1.8,0,"ONLY");
3409 gMC->Gspos("I676",2,"I650",1.7618,5.2269,2.5,0,"ONLY");
3410 gMC->Gspos("I676",1,"I650",0.4018,5.5869,2.5,0,"ONLY");
3411 gMC->Gspos("I668",1,"I667",0.0,0.0,0.0,0,"ONLY");
3412 gMC->Gspos("I670",1,"I669",0.0,0.0,0.0,0,"ONLY");
3413 gMC->Gspos("I672",1,"I671",0.0,0.0,0.0,0,"ONLY");
3414 gMC->Gspos("I674",1,"I673",0.0,0.0,0.0,0,"MANY");
3415 gMC->Gspos("I675",1,"I673",0.0,0.0,-0.5,0,"ONLY");
8f8273a4 3416 gMC->Gspos("I677",1,"I676",0.0,0.0,0.0,0,"ONLY");
108bd0fe 3417 gMC->Gspos("I678",1,"I676",0.0,0.0,-0.95,0,"ONLY");
3418 }
3419
3420 // --- Place SDD volumes into their mother volume IT34
3421
3422 // -- position SDD detectors of ladder 3 / layer 3
3423 if (! AliITSInitGeometry::SDDIsTGeoNative()) {
3424
3425 gMC->Gspos("ITS3", 1,"I302", 0.0, 0.0, 0.0, 0, "ONLY");
3426 ySDD = ySDDsep/2.+iI302dits[1];
3427 for (iSDD=0; iSDD<6; iSDD++) {
3428 gMC->Gspos("I302", iSDD+1, "I004", 0.0, ySDD, zSDDlay3[iSDD], 0, "ONLY");
3429 ySDD = -ySDD;
3430 }
3431
3432 gMC->Gspos("I004", 1,"IT34", -3.2777, 14.3607, 0.0, idrotm[321],"ONLY");
3433 gMC->Gspos("I004", 2,"IT34", -9.5581, 11.9855, 0.0, idrotm[333],"ONLY");
3434 gMC->Gspos("I004", 3,"IT34",-13.2713, 6.3911, 0.0, idrotm[336],"ONLY");
3435 gMC->Gspos("I004", 4,"IT34",-15.33, 0.0, 0.0, idrotm[350],"ONLY");
3436 gMC->Gspos("I004", 5,"IT34",-13.2713, -6.3911, 0.0, idrotm[313],"ONLY");
3437 gMC->Gspos("I004", 6,"IT34", -9.5581, -11.9855, 0.0, idrotm[311],"ONLY");
3438 gMC->Gspos("I004", 7,"IT34", -3.2777, -14.3607, 0.0, idrotm[310],"ONLY");
3439 gMC->Gspos("I004", 8,"IT34", 3.4112, -14.9456, 0.0, idrotm[386],"ONLY");
3440 gMC->Gspos("I004", 9,"IT34", 9.184, -11.5164, 0.0, idrotm[309],"ONLY");
3441 gMC->Gspos("I004",10,"IT34", 13.8119, -6.6514, 0.0, idrotm[308],"ONLY");
3442 gMC->Gspos("I004",11,"IT34", 14.73, 0.0, 0.0, idrotm[356],"ONLY");
3443 gMC->Gspos("I004",12,"IT34", 13.8119, 6.6514, 0.0, idrotm[307],"ONLY");
3444 gMC->Gspos("I004",13,"IT34", 9.184, 11.5164, 0.0, idrotm[306],"ONLY");
3445 gMC->Gspos("I004",14,"IT34", 3.4113, 14.9456, 0.0, idrotm[305],"ONLY");
3446
3447
3448 // -- position SDD detectors of ladder 4 / layer 4
3449
3450 gMC->Gspos("ITS4", 1,"I402", 0.0, 0.000, 0.0, 0,"ONLY");
3451 ySDD = -(ySDDsep/2.+iI402dits[1]);
3452 for (iSDD=0; iSDD<8; iSDD++) {
3453 gMC->Gspos("I402", iSDD+1, "I005", 0.0, ySDD, zSDDlay4[iSDD], 0, "ONLY");
3454 ySDD = -ySDD;
3455 }
3456
3457 gMC->Gspos("I005", 1,"IT34", -3.3629, 23.3895,-0.15, idrotm[335],"ONLY");
3458 gMC->Gspos("I005", 2,"IT34",-10.0447, 21.9949,-0.15, idrotm[332],"ONLY");