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