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