]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSvPPRasymm.cxx
Position of the cylinders holding rails corrected
[u/mrichter/AliRoot.git] / ITS / AliITSvPPRasymm.cxx
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
16 /*
17 $Log$
18 Revision 1.30  2001/03/29 22:02:30  barbera
19 Some changes to the services due to the new drawings from the engineers.
20
21 Revision 1.29  2001/03/29 05:28:56  barbera
22 Rails material changed from aluminum to carbon fiber according with the decision of the last Technical Board
23
24 Revision 1.28  2001/03/28 06:40:20  barbera
25 Central and services mother volumes made consistenf for detailed and coarse geometry. Switch for rails added to the coarse geometries
26
27 Revision 1.26  2001/03/23 00:12:23  nilsen
28 Set Reading of AliITSgeom data from Geant3 common blocks as the default and
29 not a .det file. Removed redundent calls to BuildGeometry.
30
31 Revision 1.25  2001/03/20 19:22:51  barbera
32 Flags for the rails and the cooling fluid added. Some changes in the volumes of the SSD cones after the meeting with the engineers in Torino.
33
34 Revision 1.23  2001/03/13 21:18:44  barbera
35 Some misleading comments removed
36
37 Revision 1.22  2001/03/13 18:13:30  barbera
38 Some mother volumes sligthly modified to eliminate an overlap with the absorber
39
40 Revision 1.21  2001/03/13 08:36:23  hristov
41 fabsf replaced by TMath::Abs
42
43 Revision 1.20  2001/03/13 00:17:41  barbera
44 New SDD geometry got grom F. Tosello and checked by the SDD engineers
45
46 Revision 1.19  2001/02/28 18:23:13  barbera
47 Setters and getters to set/get the detector and chip thickness on SPD layers added
48
49 Revision 1.18  2001/02/27 23:18:24  barbera
50 Full parameterization of detector and chip thicknesses for layer 1 and layer 2 of SPD as requested by the project leader
51
52 Revision 1.17  2001/02/19 22:14:55  nilsen
53 Fix for all 4 versions 11, 12, 21, and 22.
54
55 Revision 1.16  2001/02/19 20:10:34  barbera
56 Set option=2 and thickness=2 as default values --> SetMinorVersion=22
57
58 Revision 1.15  2001/02/19 19:44:00  barbera
59 Air density parameter corrected
60
61 Revision 1.14  2001/02/13 16:53:35  nilsen
62 Fixed a but when trying to use GEANT4. Needed to replace
63 if(!((TGeant3*)gMC)) with if(!(dynamic_casst<TGeant3*>(gMC)))
64 because just casting gMC to be TGeant3* even when it realy is a TGeant3 pointer
65 did not result in a zero value. For AliITSv5asymm and AliITSv5symm, needed
66 to fix a bug in the initilizers and a bug in BuildGeometry. This is now done
67 in the same way as in AliITSv5.cxx.
68
69 Revision 1.13  2001/02/09 20:06:26  nilsen
70 Fixed bug in distructor. Can't distroy fixxed length arrays. Thanks Peter.
71
72 Revision 1.12  2001/02/09 13:53:38  barbera
73 Int_t redefinition avoided
74
75 Revision 1.11  2001/02/09 06:55:38  barbera
76 SPD option re-set to B. It was A by mistake
77
78 Revision 1.10  2001/02/09 00:05:31  nilsen
79 Added fMajor/MinorVersion variables and made other changes to better make
80 use of the new code changes in AliITSgeom related classes.
81
82
83 Revision 1.9  2001/02/08 16:00:37  barbera
84 New thicknesses (300+300 um) added for SPD chips and detectors and set as default. Many other refinements.
85
86 Revision 1.8  2001/02/06 08:03:44  barbera
87 Material redefinition in SDD
88
89 Revision 1.7  2001/02/05 13:34:57  barbera
90 Updated version of the ITS detailed geometry
91
92 Revision 1.5  2001/01/30 09:23:13  hristov
93 Streamers removed (R.Brun)
94
95 Revision 1.4  2001/01/23 20:08:03  barbera
96 Option B for pixels implemented and set as default
97
98 Revision 1.3  2001/01/17 08:08:20  barbera
99 Some media parameters modified
100
101 Revision 1.1.2.1  2001/01/15 13:38:08  barbera
102 New ITS detailed geometry to be used for the PPR
103
104 */
105
106 ///////////////////////////////////////////////////////////////////////////////
107 //                                                                           //
108 //  Inner Traking System version PPR  asymmetric                             //
109 //  This class contains the base procedures for the Inner Tracking System    //
110 //                                                                           //
111 // Authors: R. Barbera                                                       //
112 // version 8.                                                                //
113 // Created  January 15 2001.                                                 //
114 //                                                                           //
115 //  NOTE: THIS IS THE  ASYMMETRIC PPR geometry of the ITS.                   //
116 //                                                                           //
117 ///////////////////////////////////////////////////////////////////////////////
118
119 // See AliITSvPPRasymm::StepManager().
120 #include <iostream.h>
121 #include <iomanip.h>
122 #include <stdio.h>
123 #include <stdlib.h>
124 #include <TMath.h>
125 #include <TGeometry.h>
126 #include <TNode.h>
127 #include <TTUBE.h>
128 #include <TFile.h>    // only required for Tracking function?
129 #include <TCanvas.h>
130 #include <TObjArray.h>
131 #include <TLorentzVector.h>
132 #include <TObjString.h>
133 #include <TClonesArray.h>
134 #include <TBRIK.h>
135 #include <TSystem.h>
136
137 #include "AliMC.h"
138 #include "AliRun.h"
139 #include "AliMagF.h"
140 #include "AliConst.h"
141 #include "../TGeant3/TGeant3.h"
142 #include "AliITSGeant3Geometry.h"
143 #include "AliITShit.h"
144 #include "AliITS.h"
145 #include "AliITSvPPRasymm.h"
146 #include "AliITSgeom.h"
147 #include "AliITSgeomSPD.h"
148 #include "AliITSgeomSDD.h"
149 #include "AliITSgeomSSD.h"
150
151
152 ClassImp(AliITSvPPRasymm)
153  
154 //_____________________________________________________________________________
155 AliITSvPPRasymm::AliITSvPPRasymm() {
156 ////////////////////////////////////////////////////////////////////////
157 //    Standard default constructor for the ITS version 8.
158 ////////////////////////////////////////////////////////////////////////
159     Int_t i;
160
161     fIdN          = 0;
162     fIdName       = 0;
163     fIdSens       = 0;
164     fEuclidOut    = kFALSE; // Don't write Euclide file
165     fGeomDetOut   = kFALSE; // Don't write .det file
166     fGeomDetIn    = kFALSE; // Don't Read .det file
167     fMajorVersion = IsVersion();
168     fMinorVersion = -1;
169     for(i=0;i<60;i++) fRead[i] = '\0';
170     for(i=0;i<60;i++) fWrite[i] = '\0';
171     for(i=0;i<60;i++) fEuclidGeomDet[i] = '\0';
172 }
173 //_____________________________________________________________________________
174 AliITSvPPRasymm::AliITSvPPRasymm(const char *name, const char *title) : AliITS(name, title){
175 ////////////////////////////////////////////////////////////////////////
176 //    Standard constructor for the ITS version 8.
177 ////////////////////////////////////////////////////////////////////////
178     Int_t i;
179
180     fIdN = 6;
181     fIdName = new TString[fIdN];
182     fIdName[0] = "ITS1";
183     fIdName[1] = "ITS2";
184     fIdName[2] = "ITS3";
185     fIdName[3] = "ITS4";
186     fIdName[4] = "ITS5";
187     fIdName[5] = "ITS6";
188     fIdSens    = new Int_t[fIdN];
189     for(i=0;i<fIdN;i++) fIdSens[i] = 0;
190     fMajorVersion = IsVersion();
191     fMinorVersion = 2;
192     fEuclidOut    = kFALSE; // Don't write Euclide file
193     fGeomDetOut   = kFALSE; // Don't write .det file
194     fGeomDetIn    = kFALSE; // Don't Read .det file
195     SetThicknessDet1();
196     SetThicknessDet2();
197     SetThicknessChip1();
198     SetThicknessChip2();                         
199
200     fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.euc";
201     strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det",60);
202     strncpy(fRead,fEuclidGeomDet,60);
203     strncpy(fWrite,fEuclidGeomDet,60);
204 }
205 //____________________________________________________________________________
206 AliITSvPPRasymm::AliITSvPPRasymm(const AliITSvPPRasymm &source){
207 ////////////////////////////////////////////////////////////////////////
208 //     Copy Constructor for ITS version 8.
209 ////////////////////////////////////////////////////////////////////////
210     if(&source == this) return;
211     Warning("Copy Constructor","Not allowed to copy AliITSvPPRasymm");
212     return;
213 }
214 //_____________________________________________________________________________
215 AliITSvPPRasymm& AliITSvPPRasymm::operator=(const AliITSvPPRasymm &source){
216 ////////////////////////////////////////////////////////////////////////
217 //    Assignment operator for the ITS version 8.
218 ////////////////////////////////////////////////////////////////////////
219     if(&source == this) return *this;
220     Warning("= operator","Not allowed to copy AliITSvPPRasymm");
221     return *this;
222 }
223 //_____________________________________________________________________________
224 AliITSvPPRasymm::~AliITSvPPRasymm() {
225 ////////////////////////////////////////////////////////////////////////
226 //    Standard destructor for the ITS version 8.
227 ////////////////////////////////////////////////////////////////////////
228 }
229 //__________________________________________________________________________
230 void AliITSvPPRasymm::BuildGeometry(){
231 ////////////////////////////////////////////////////////////////////////
232 //    Geometry builder for the ITS version 8.
233 ////////////////////////////////////////////////////////////////////////
234     TNode *node, *top;
235     const int kColorITS=kYellow;
236     //
237     top = gAlice->GetGeometry()->GetNode("alice");
238
239     new TTUBE("S_layer1","Layer1 of ITS","void",3.95,3.95+0.05475,12.25);
240     top->cd();
241     node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
242     node->SetLineColor(kColorITS);
243     fNodes->Add(node);
244
245     new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+0.05475,16.3);
246     top->cd();
247     node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
248     node->SetLineColor(kColorITS);
249     fNodes->Add(node);
250
251     new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.05288,21.1);
252     top->cd();
253     node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
254     node->SetLineColor(kColorITS);
255     fNodes->Add(node);
256
257     new TTUBE("S_layer4","Layer4 of ITS","void",24,24+0.05288,29.6);
258     top->cd();
259     node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
260     node->SetLineColor(kColorITS);
261     fNodes->Add(node);
262
263     new TTUBE("S_layer5","Layer5 of ITS","void",40,40+0.05382,45.1);
264     top->cd();
265     node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
266     node->SetLineColor(kColorITS);
267     fNodes->Add(node);
268
269     new TTUBE("S_layer6","Layer6 of ITS","void",45,45+0.05382,50.4);
270     top->cd();
271     node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
272     node->SetLineColor(kColorITS);
273     fNodes->Add(node);
274 }
275 //_____________________________________________________________________________
276 void AliITSvPPRasymm::CreateGeometry(){
277 ////////////////////////////////////////////////////////////////////////
278 //    This routine defines and Creates the geometry for version 6 of the ITS.
279 ////////////////////////////////////////////////////////////////////////
280   
281   //INNER RADII OF THE SILICON LAYERS 
282   // Float_t rl[6]    = { 3.8095,7.,15.,24.,38.1,43.5765 };   
283   //THICKNESSES OF LAYERS (in % radiation length)
284   Float_t drl[6]   = { 1.03,1.03,0.94,0.95,0.91,0.87 };   
285   //HALF LENGTHS OF LAYERS  
286   // Float_t dzl[6]   = { 14.35,14.35,25.1,32.1,49.405,55.27 };
287   //LENGTHS OF END-LADDER BOXES (ALL INCLUDED)
288   // Float_t dzb[6]   = { 12.4,12.4,13.5,15.,7.5,7.5 };   
289   //THICKNESSES OF END-LADDER BOXES (ALL INCLUDED)
290   // Float_t drb[6]   = { rl[1]-rl[0],0.2,5.,5.,4.,4. };        
291
292  
293   Float_t dits[100], rlim, zmax;
294   // Float_t zpos;
295   // Float_t pcits[50]
296   Float_t ztpc;
297   Int_t idrotm[1999], i;
298   Float_t dgh[100];
299
300
301   // Define some variables for SPD
302
303   Float_t dits1[3], di101[3], di107[3], di10b[3], di106[3];  // for layer 1 
304   Float_t di103[3], di10a[3], di102[3];                      // for layer 1
305   Float_t dits2[3], di1d1[3], di1d7[3], di20b[3], di1d6[3];  // for layer 2
306   Float_t di1d3[3], di20a[3], di1d2[3];                      // for layer 2  
307   Float_t di108[3], di104[3];                                // for both layers  
308
309   Float_t ddet1=300.;     // total detector thickness on layer 1 (micron)
310   Float_t dchip1=300.;    // total chip thickness on layer 1 (micron)
311   
312   Float_t ddet2=300.;     // total detector thickness on layer 2 (micron)                         
313   Float_t dchip2=300.;    // total chip thickness on layer 2 (micron)
314   
315   Float_t dbus=200.;      // total bus thickness on both layers (micron)
316
317   ddet1 = GetThicknessDet1();
318   ddet2 = GetThicknessDet2();
319   dchip1 = GetThicknessChip1();
320   dchip2 = GetThicknessChip2();    
321
322   if(ddet1 < 100. || ddet1 > 300.) {
323      cout << "WARNING: the detector thickness for layer 1 is outside the range of [100,300] microns."
324           " The default value of 300 microns will be used." << endl;
325           ddet1=300.;
326   }
327   
328   if(ddet2 < 100. || ddet2 > 300.) {
329      cout << "WARNING: the detector thickness for layer 2 is outside the range of [100,300] microns."
330           " The default value of 300 microns will be used." << endl;
331           ddet2=300.;
332   }
333   
334   if(dchip1 < 150. || dchip1 > 300.) {
335      cout << "WARNING: the chip thickness for layer 1 is outside the range of [150,300] microns."
336           " The default value of 300 microns will be used." << endl;
337           dchip1=300.;
338   }
339   
340   if(dchip2 < 150. || dchip2 > 300.) {
341      cout << "WARNING: the chip thickness for layer 2 is outside the range of [150,300] microns."
342           " The default value of 300 microns will be used." << endl;
343           dchip2=300.;
344   }      
345
346   Int_t rails = 1;       // flag for rails (1 --> rails in; 0 --> rails out)
347   
348   Int_t fluid = 1;       // flag for the cooling fluid (1 --> water; 0 --> freon)
349
350   rails = GetRails();
351
352   fluid = GetCoolingFluid();
353
354   if(rails != 0 && rails != 1) {
355      cout << "WARNING: the switch for rails is not set neither to 0 (rails out) nor to 1 (rails in)." 
356      " The default value of 1 (rails in) will be used." << endl;
357         
358   }  
359   
360   if(fluid != 0 && fluid != 1) {
361      cout << "WARNING: the switch for cooling fluid is not set neither to 0 (freon) nor to 1 (water)." 
362      " The default value of 1 (water) will be used." << endl;  
363   }       
364    
365   cout << "Detector thickness on layer 1 is set to " << ddet1 << " microns." << endl;
366   cout << "Chip thickness on layer 1 is set to " << dchip1 << " microns." << endl;
367   cout << "Detector thickness on layer 2 is set to " << ddet2 << " microns." << endl;
368   cout << "Chip thickness on layer 2 is set to " << dchip2 << " microns." << endl;
369   if(rails == 0 ) {
370      cout << "Rails are out." << endl; 
371   } else {
372      cout << "Rails are in." << endl;
373   }   
374   if(fluid == 0 ) {
375      cout << "The cooling fluid is freon." << endl; 
376   } else {
377      cout << "The cooling fluid is water." << endl;
378   }   
379
380   ddet1  = ddet1*0.0001/2.; // conversion from tot length in um to half in cm
381   ddet2  = ddet2*0.0001/2.; // conversion from tot length in um to half in cm   
382   dchip1 = dchip1*0.0001/2.;// conversion from tot length in um to half in cm   
383   dchip2 = dchip2*0.0001/2.;// conversion from tot length in um to half in cm   
384   dbus   = dbus*0.0001/2.;  // conversion from tot length in um to half in cm       
385                 
386   Float_t deltax, deltay; 
387
388   Int_t thickness = fMinorVersion/10;
389   Int_t option    = fMinorVersion - 10*thickness;
390
391
392   // Define some variables for SDD
393
394
395   Float_t sin30, cos30;
396
397   // SDD electronics+services main volumes
398   Float_t I018dits[3], I024dits[3], I047dits[3], I048dits[3];
399
400   // SDD detector ladder
401
402   Float_t I302dits[3], I402dits[3], I004dits[3], I005dits[3];
403   Float_t Y_SDD_sep = 0.20;
404   Float_t ySDD;
405   Int_t   iSDD;
406   Float_t Z_SDD_lay3[6] = {18.55, 10.95, 3.70, -3.70, -11.20, -18.35};
407   Float_t Z_SDD_lay4[8] = {25.75, 18.60, 11.00, 3.70, -3.70, -11.20, -18.45, -26.05};
408
409   // ladder foot and end-ladder (frame and cooling)
410   Float_t I028dits[3], I420dits[3], I421dits[3], I422dits[6], I423dits[3];
411   Float_t I424dits[3], xI424, yI424;
412   Float_t I425dits[3];
413   Int_t    indI425;
414   Float_t I029dits[4], I030dits[4], I031dits[3], I032dits[3];
415
416   // SDD ladder frame and cooling
417   Float_t SDD_CoolPipe[3] = {1.7000, -0.5500, 0.0000};
418   Float_t I035dits[3], I037dits[3], I038dits[3];
419   Float_t I039dits[3], xI039, yI039;
420   Float_t I041dits[5];
421
422   // SDD hybrid, chips and capacitors
423   Float_t I050dits[3], xI050, yI050;
424   Float_t I052dits[3], xI052, yI052;
425   Float_t I042dits[3], xI042, yI042;
426   Float_t xI042space = 0.17;
427   Float_t I043dits[3], xI043, yI043;
428   Float_t xI043space = 0.17;
429   Float_t zchip, zChipSpace;
430   Float_t I051dits[3], xI051, yI051, zI051, yI051space, xcap;
431   Int_t     ichip, icap;
432
433   // SDD microcables
434   Float_t I044dits[4], xI044, yI044, volI044;
435   Float_t xHV, yHV, zHV, xLV, yLV, zLV;
436   Char_t   HVname[5], LVname[5];
437
438
439   // Define media off-set
440   
441   Int_t *idtmed = fIdtmed->GetArray()-199;
442
443   
444   // Rotation matrices
445   
446   // SPD - option 'a' (this is NOT the default so leave commented)
447   
448   
449   if (option == 1) {
450   
451      AliMatrix(idrotm[201],90.0,90.0,90.0,180.0,0.0,0.0);
452      AliMatrix(idrotm[202],90.0,90.0,90.0,0.0,0.0,0.0);
453      AliMatrix(idrotm[203],90.0,350.0,90.0,260.0,0.0,0.0);
454      AliMatrix(idrotm[204],90.0,170.0,90.0,80.0,0.0,0.0);
455      AliMatrix(idrotm[205],90.0,10.0,90.0,100.0,0.0,0.0);
456      AliMatrix(idrotm[206],90.0,190.0,90.0,280.0,0.0,0.0);
457      AliMatrix(idrotm[207],90.0,342.0,90.0,72.0,0.0,0.0);
458      AliMatrix(idrotm[208],90.0,156.999893,90.0,246.999893,0.0,0.0);
459      AliMatrix(idrotm[209],90.0,147.999802,90.0,237.999893,0.0,0.0);
460      AliMatrix(idrotm[210],90.0,138.999802,90.0,228.999802,0.0,0.0);
461      AliMatrix(idrotm[211],90.0,129.999802,90.0,219.999802,0.0,0.0);
462      AliMatrix(idrotm[212],90.0,36.7896,90.0,126.789597,0.0,0.0);
463      AliMatrix(idrotm[213],90.0,343.579712,90.0,73.579697,0.0,0.0);
464      AliMatrix(idrotm[214],90.0,95.413696,90.0,185.413696,0.0,0.0);
465      AliMatrix(idrotm[215],90.0,5.4141,90.0,95.414101,0.0,0.0);
466      AliMatrix(idrotm[216],90.0,318.296906,90.0,48.296902,0.0,0.0);
467      AliMatrix(idrotm[217],90.0,67.000099,90.0,157.000107,0.0,0.0);
468      AliMatrix(idrotm[218],90.0,337.003998,90.0,67.003998,0.0,0.0);
469      AliMatrix(idrotm[219],90.0,247.000305,90.0,337.000305,0.0,0.0);
470      AliMatrix(idrotm[220],90.0,305.633514,90.0,35.633499,0.0,0.0);
471      AliMatrix(idrotm[221],90.0,58.000198,90.0,148.000198,0.0,0.0);
472      AliMatrix(idrotm[222],90.0,327.997101,90.0,57.997101,0.0,0.0 );
473      AliMatrix(idrotm[223],90.0,237.994202,90.0,327.994202,0.0,0.0);
474      AliMatrix(idrotm[224],90.0,296.627502,90.0,26.627399,0.0,0.0);
475      AliMatrix(idrotm[225],90.0,48.994099,90.0,138.994095,0.0,0.0);
476      AliMatrix(idrotm[226],90.0,318.990997,90.0,48.991001,0.0,0.0);
477      AliMatrix(idrotm[227],90.0,228.988205,90.0,318.98819,0.0,0.0);
478      AliMatrix(idrotm[228],90.0,287.621399,90.0,17.621401,0.0,0.0);
479      AliMatrix(idrotm[229],90.0,39.988098,90.0,129.988098,0.0,0.0);
480      AliMatrix(idrotm[230],90.0,309.984985,90.0,39.985001,0.0,0.0);
481      AliMatrix(idrotm[231],90.0,327.2612,90.0,57.2612,0.0,0.0);
482      AliMatrix(idrotm[232],90.0,237.261398,90.0,327.261414,0.0,0.0);
483      AliMatrix(idrotm[233],90.0,252.000504,90.0,342.000488,0.0,0.0 );
484      AliMatrix(idrotm[234],90.0,71.9991,90.0,161.9991,0.0,0.0);
485      AliMatrix(idrotm[235],90.0,270.0,90.0,0.0,0.0,0.0);
486      AliMatrix(idrotm[236],90.0,180.013702,90.0,270.013702,0.0,0.0);
487      AliMatrix(idrotm[237],90.0,0.0,90.0,90.0,180.0,0.0);
488      AliMatrix(idrotm[238],90.0,144.0,90.0,234.0,0.0,0.0);
489      AliMatrix(idrotm[239],90.0,216.0,90.0,306.0,0.0,0.0);
490      AliMatrix(idrotm[240],90.0,288.0,90.0,18.0,0.0,0.0);
491      AliMatrix(idrotm[241],90.0,324.0,90.0,54.0,0.0,0.0);
492      AliMatrix(idrotm[242],90.0,36.0,90.0,126.0,0.0,0.0);
493      AliMatrix(idrotm[243],90.0,108.0,90.0,198.0,0.0,0.0);
494      AliMatrix(idrotm[244],90.0,0.0,90.0,270.0,180.0,0.0);
495      AliMatrix(idrotm[245],90.0,342.0,90.0,252.0,180.0,0.0);
496      AliMatrix(idrotm[246],90.0,130.0,90.0,40.0,180.0,0.0);
497      AliMatrix(idrotm[247],90.0,139.0,90.0,49.0,180.0,0.0);
498      AliMatrix(idrotm[248],90.0,148.0,90.0,58.0,180.0,0.0);
499      AliMatrix(idrotm[249],90.0,157.0,90.0,67.0,180.0,0.0);
500      AliMatrix(idrotm[1003],90.0,73.5,90.0,163.5,0.0,0.0);
501      AliMatrix(idrotm[1011],90.0,342.0,90.0,72.0,0.0,0.0);
502      AliMatrix(idrotm[1039],90.0,72.0,90.0,162.0,0.0,0.0);
503      AliMatrix(idrotm[1043],90.0,66.91,90.0,156.91,0.0,0.0);
504      AliMatrix(idrotm[1065],90.0,144.0,90.0,234.0,0.0,0.0);
505      AliMatrix(idrotm[1078],90.0,180.0,90.0,270.0,0.0,0.0);
506      AliMatrix(idrotm[1088],90.0,57.41,90.0,147.41,0.0,0.0);
507      AliMatrix(idrotm[1089],90.0,333.0,90.0,63.0,0.0,0.0);
508      AliMatrix(idrotm[1090],90.0,351.0,90.0,81.0,0.0,0.0);
509      AliMatrix(idrotm[1091],90.0,216.0,90.0,306.0,0.0,0.0);
510      AliMatrix(idrotm[1092],90.0,27.0,90.0,117.0,0.0,0.0);
511      AliMatrix(idrotm[1093],90.0,18.0,90.0,108.0,0.0,0.0);
512      AliMatrix(idrotm[1094],90.0,9.0,90.0,99.0,0.0,0.0);
513      AliMatrix(idrotm[1104],90.0,252.0,90.0,342.0,0.0,0.0);
514      AliMatrix(idrotm[1106],90.0,36.0,90.0,126.0,0.0,0.0);
515      AliMatrix(idrotm[1107],90.0,108.0,90.0,198.0,0.0,0.0);
516      AliMatrix(idrotm[1108],90.0,324.0,90.0,54.0,180.0,0.0);
517      AliMatrix(idrotm[1109],90.0,0.0,90.0,90.0,180.0,0.0);
518      AliMatrix(idrotm[1110],90.0,36.0,90.0,126.0,180.0,0.0);
519      AliMatrix(idrotm[1111],90.0,72.0,90.0,162.0,180.0,0.0);
520      AliMatrix(idrotm[1112],90.0,108.0,90.0,198.0,180.0,0.0);
521      AliMatrix(idrotm[1113],90.0,144.0,90.0,234.0,180.0,0.0);
522      AliMatrix(idrotm[1114],90.0,180.0,90.0,270.0,180.0,0.0);
523      AliMatrix(idrotm[1115],90.0,216.0,90.0,306.0,180.0,0.0);
524      AliMatrix(idrotm[1116],90.0,252.0,90.0,342.0,180.0,0.0);
525      AliMatrix(idrotm[1117],90.0,288.0,90.0,18.0,0.0,0.0);
526      AliMatrix(idrotm[1118],90.0,288.0,90.0,18.0,180.0,0.0);
527      AliMatrix(idrotm[1130],90.0,324.0,90.0,54.0,0.0,0.0);  
528
529   }
530   
531   // SPD - option 'b' (this is the default)  
532     
533   if (option == 2) {
534
535      AliMatrix(idrotm[201],90.0,0.0,90.0,90.0,180.0,0.0);
536      AliMatrix(idrotm[202],90.0,90.0,90.0,0.0,0.0,0.0);
537      AliMatrix(idrotm[203],90.0,350.0,90.0,260.0,0.0,0.0);
538      AliMatrix(idrotm[204],90.0,170.0,90.0,80.0,0.0,0.0);
539      AliMatrix(idrotm[205],90.0,10.0,90.0,100.0,0.0,0.0);
540      AliMatrix(idrotm[206],90.0,190.0,90.0,280.0,0.0,0.0);
541      AliMatrix(idrotm[207],90.0,342.0,90.0,72.0,0.0,0.0);
542      AliMatrix(idrotm[208],90.0,156.999893,90.0,246.999893,0.0,0.0);
543      AliMatrix(idrotm[209],90.0,147.999802,90.0,237.999893,0.0,0.0);
544      AliMatrix(idrotm[210],90.0,138.999802,90.0,228.999802,0.0,0.0);
545      AliMatrix(idrotm[211],90.0,129.999802,90.0,219.999802,0.0,0.0);
546      AliMatrix(idrotm[212],90.0,36.7896,90.0,126.789597,0.0,0.0);
547      AliMatrix(idrotm[213],90.0,343.579712,90.0,73.579697,0.0,0.0);
548      AliMatrix(idrotm[214],90.0,95.413696,90.0,185.413696,0.0,0.0);
549      AliMatrix(idrotm[215],90.0,5.4141,90.0,95.414101,0.0,0.0);
550      AliMatrix(idrotm[216],90.0,318.296906,90.0,48.296902,0.0,0.0);
551      AliMatrix(idrotm[217],90.0,67.000099,90.0,157.000107,0.0,0.0);
552      AliMatrix(idrotm[218],90.0,337.003998,90.0,67.003998,0.0,0.0);
553      AliMatrix(idrotm[219],90.0,247.000305,90.0,337.000305,0.0,0.0);
554      AliMatrix(idrotm[220],90.0,305.633514,90.0,35.633499,0.0,0.0);
555      AliMatrix(idrotm[221],90.0,58.000198,90.0,148.000198,0.0,0.0);
556      AliMatrix(idrotm[222],90.0,327.997101,90.0,57.997101,0.0,0.0);
557      AliMatrix(idrotm[223],90.0,237.994202,90.0,327.994202,0.0,0.0);
558      AliMatrix(idrotm[224],90.0,296.627502,90.0,26.627399,0.0,0.0);
559      AliMatrix(idrotm[225],90.0,48.994099,90.0,138.994095,0.0,0.0);
560      AliMatrix(idrotm[226],90.0,318.990997,90.0,48.991001,0.0,0.0);
561      AliMatrix(idrotm[227],90.0,228.988205,90.0,318.98819,0.0,0.0);
562      AliMatrix(idrotm[228],90.0,287.621399,90.0,17.621401,0.0,0.0);
563      AliMatrix(idrotm[229],90.0,39.988098,90.0,129.988098,0.0,0.0);
564      AliMatrix(idrotm[230],90.0,309.984985,90.0,39.985001,0.0,0.0);
565      AliMatrix(idrotm[231],90.0,327.2612,90.0,57.2612,0.0,0.0);
566      AliMatrix(idrotm[232],90.0,237.261398,90.0,327.261414,0.0,0.0);
567      AliMatrix(idrotm[233],90.0,252.000504,90.0,342.000488,0.0,0.0);
568      AliMatrix(idrotm[234],90.0,71.9991,90.0,161.9991,0.0,0.0);
569      AliMatrix(idrotm[235],90.0,270.0,90.0,0.0,0.0,0.0);
570      AliMatrix(idrotm[236],90.0,180.013702,90.0,270.013702,0.0,0.0);
571      AliMatrix(idrotm[237],90.0,90.0,90.0,180.0,0.0,0.0);
572      AliMatrix(idrotm[238],90.0,0.0,90.0,270.0,180.0,0.0);
573      AliMatrix(idrotm[239],90.0,342.0,90.0,252.0,180.0,0.0);
574      AliMatrix(idrotm[240],90.0,130.0,90.0,40.0,180.0,0.0);
575      AliMatrix(idrotm[241],90.0,139.0,90.0,49.0,180.0,0.0);
576      AliMatrix(idrotm[242],90.0,148.0,90.0,58.0,180.0,0.0);
577      AliMatrix(idrotm[243],90.0,157.0,90.0,67.0,180.0,0.0);
578      AliMatrix(idrotm[244],90.0,216.0,90.0,306.0,0.0,0.0);
579      AliMatrix(idrotm[245],90.0,36.0,90.0,126.0,0.0,0.0);
580      AliMatrix(idrotm[246],90.0,108.0,90.0,198.0,0.0,0.0);
581      AliMatrix(idrotm[247],90.0,144.0,90.0,234.0,0.0,0.0);
582      AliMatrix(idrotm[248],90.0,288.0,90.0,18.0,0.0,0.0);
583      AliMatrix(idrotm[249],90.0,324.0,90.0,54.0,0.0,0.0);  
584      AliMatrix(idrotm[1003],90.0,73.5,90.0,163.5,0.0,0.0);
585      AliMatrix(idrotm[1011],90.0,342.0,90.0,72.0,0.0,0.0);
586      AliMatrix(idrotm[1039],90.0,72.0,90.0,162.0,0.0,0.0);
587      AliMatrix(idrotm[1043],90.0,66.91,90.0,156.91,0.0,0.0);
588      AliMatrix(idrotm[1065],90.0,144.0,90.0,234.0,0.0,0.0);
589      AliMatrix(idrotm[1078],90.0,180.0,90.0,270.0,0.0,0.0);
590      AliMatrix(idrotm[1088],90.0,57.41,90.0,147.41,0.0,0.0);
591      AliMatrix(idrotm[1089],90.0,333.0,90.0,63.0,0.0,0.0);
592      AliMatrix(idrotm[1090],90.0,351.0,90.0,81.0,0.0,0.0);
593      AliMatrix(idrotm[1091],90.0,216.0,90.0,306.0,0.0,0.0);
594      AliMatrix(idrotm[1092],90.0,27.0,90.0,117.0,0.0,0.0);
595      AliMatrix(idrotm[1093],90.0,18.0,90.0,108.0,0.0,0.0);
596      AliMatrix(idrotm[1094],90.0,9.0,90.0,99.0,0.0,0.0);
597      AliMatrix(idrotm[1104],90.0,252.0,90.0,342.0,0.0,0.0);
598      AliMatrix(idrotm[1106],90.0,36.0,90.0,126.0,0.0,0.0);
599      AliMatrix(idrotm[1107],90.0,108.0,90.0,198.0,0.0,0.0);
600      AliMatrix(idrotm[1108],90.0,324.0,90.0,54.0,180.0,0.0);
601      AliMatrix(idrotm[1109],90.0,0.0,90.0,90.0,180.0,0.0);
602      AliMatrix(idrotm[1110],90.0,36.0,90.0,126.0,180.0,0.0);
603      AliMatrix(idrotm[1111],90.0,72.0,90.0,162.0,180.0,0.0);
604      AliMatrix(idrotm[1112],90.0,108.0,90.0,198.0,180.0,0.0);
605      AliMatrix(idrotm[1113],90.0,144.0,90.0,234.0,180.0,0.0);
606      AliMatrix(idrotm[1114],90.0,180.0,90.0,270.0,180.0,0.0);
607      AliMatrix(idrotm[1115],90.0,216.0,90.0,306.0,180.0,0.0);
608      AliMatrix(idrotm[1116],90.0,252.0,90.0,342.0,180.0,0.0);
609      AliMatrix(idrotm[1117],90.0,288.0,90.0,18.0,0.0,0.0);
610      AliMatrix(idrotm[1118],90.0,288.0,90.0,18.0,180.0,0.0);
611      AliMatrix(idrotm[1130],90.0,324.0,90.0,54.0,0.0,0.0);  
612
613   }
614     
615   // SDD
616   
617   AliMatrix(idrotm[301],0.0,0.0,90.0,90.0,90.0,180.0);  
618   AliMatrix(idrotm[302],0.0,0.0,90.0,90.0,90.0,0.0);
619   AliMatrix(idrotm[303],180.0,0.0,90.0,90.0,90.0,0.0); 
620   AliMatrix(idrotm[304],180.0,0.0,90.0,90.0,90.0,180.0); 
621   AliMatrix(idrotm[305],90.0,347.14,90.0,77.14,0.0,0.0); 
622   AliMatrix(idrotm[306],90.0,321.43,90.0,51.43,0.0,0.0); 
623   AliMatrix(idrotm[307],90.0,295.71,90.0,25.71,0.0,0.0);
624   AliMatrix(idrotm[308],90.0,244.29,90.0,334.29,0.0,0.0);
625   AliMatrix(idrotm[309],90.0,218.57,90.0,308.57,0.0,0.0);
626   AliMatrix(idrotm[310],90.0,167.14,90.0,257.14,0.0,0.0);
627   AliMatrix(idrotm[311],90.0,141.43,90.0,231.43,0.0,0.0);  
628   AliMatrix(idrotm[312],90.0,0.0,0.0,0.0,90.0,270.0);
629   AliMatrix(idrotm[313],90.0,115.71,90.0,205.71,0.0,0.0); 
630   AliMatrix(idrotm[314],90.0,335.45,90.0,65.45,0.0,0.0); 
631   AliMatrix(idrotm[315],90.0,319.09,90.0,49.09,0.0,0.0); 
632   AliMatrix(idrotm[316],90.0,302.73,90.0,32.73,0.0,0.0); 
633   AliMatrix(idrotm[317],90.0,286.36,90.0,16.36,0.0,0.0);
634   AliMatrix(idrotm[318],90.0,270.0,90.0,360.0,0.0,0.0);
635   AliMatrix(idrotm[319],90.0,253.64,90.0,343.64,0.0,0.0);
636   AliMatrix(idrotm[320],90.0,237.27,90.0,327.27,0.0,0.0);
637   AliMatrix(idrotm[321],90.0,12.86,90.0,102.86,0.0,0.0);  
638   AliMatrix(idrotm[322],90.0,220.91,90.0,310.91,0.0,0.0);
639   AliMatrix(idrotm[323],90.0,204.55,90.0,294.55,0.0,0.0); 
640   AliMatrix(idrotm[324],90.0,188.18,90.0,278.18,0.0,0.0); 
641   AliMatrix(idrotm[325],90.0,171.82,90.0,261.82,0.0,0.0); 
642   AliMatrix(idrotm[326],90.0,155.45,90.0,245.45,0.0,0.0); 
643   AliMatrix(idrotm[327],90.0,139.09,90.0,229.09,0.0,0.0);
644   AliMatrix(idrotm[328],90.0,122.73,90.0,212.73,0.0,0.0);
645   AliMatrix(idrotm[329],90.0,106.36,90.0,196.36,0.0,0.0);
646   AliMatrix(idrotm[330],90.0,73.64,90.0,163.64,0.0,0.0);    
647   AliMatrix(idrotm[331],90.0,40.91,90.0,130.91,0.0,0.0);  
648   AliMatrix(idrotm[332],90.0,24.55,90.0,114.55,0.0,0.0);
649   AliMatrix(idrotm[333],90.0,38.57,90.0,128.57,0.0,0.0); 
650   AliMatrix(idrotm[334],90.0,351.82,90.0,81.82,0.0,0.0); 
651   AliMatrix(idrotm[335],90.0,8.18,90.0,98.18,0.0,0.0); 
652   AliMatrix(idrotm[336],90.0,64.29,90.0,154.29,0.0,0.0); 
653   AliMatrix(idrotm[337],111.0,300.0,21.0,300.0,90.0,30.0);
654   AliMatrix(idrotm[338],69.0,240.0,159.0,240.0,90.0,150.0);
655   AliMatrix(idrotm[339],111.0,240.0,21.0,240.0,90.0,150.0);
656   AliMatrix(idrotm[340],69.0,300.0,159.0,300.0,90.0,30.0);  
657   AliMatrix(idrotm[341],128.0,0.0,38.0,0.0,90.0,270.0);  
658   AliMatrix(idrotm[342],90.0,240.0,180.0,0.0,90.0,330.);
659   AliMatrix(idrotm[343],90.0,120.0,180.0,0.0,90.0,210.0); 
660   AliMatrix(idrotm[344],90.0,0.0,180.0,0.0,90.0,90.0); 
661   AliMatrix(idrotm[345],90.0,180.0,90.0,90.0,0.0,0.0); 
662   AliMatrix(idrotm[346],90.0,300.0,90.0,30.0,0.0,0.0); 
663   AliMatrix(idrotm[347],90.0,240.0,90.0,150.0,0.0,0.0);
664   AliMatrix(idrotm[348],90.0,180.0,0.0,0.0,90.0,270.0);
665   AliMatrix(idrotm[349],90.0,235.0,90.0,145.0,0.0,0.0);
666   AliMatrix(idrotm[350],90.0,90.0,90.0,180.0,0.0,0.0);  
667   AliMatrix(idrotm[351],90.0,305.0,90.0,35.0,0.0,0.0);  
668   AliMatrix(idrotm[352],0.0,0.0,90.0,0.0,90.0,90.0);
669   AliMatrix(idrotm[353],90.0,60.0,90.0,150.0,0.0,0.0); 
670   AliMatrix(idrotm[354],90.0,120.0,90.0,30.0,0.0,0.0); 
671   AliMatrix(idrotm[355],90.0,180.0,90.0,90.0,180.0,0.0); 
672   AliMatrix(idrotm[356],90.0,270.0,90.0,0.0,0.0,0.0); 
673   AliMatrix(idrotm[366],90.0,57.27,90.0,147.27,0.0,0.0); 
674   AliMatrix(idrotm[386],90.0,192.86,90.0,282.86,0.0,0.0);  
675    
676   // SSD
677   
678   AliMatrix(idrotm[501],90.0,148.24,90.0,238.24,0.0,0.0);
679   AliMatrix(idrotm[503],90.0,137.65,90.0,227.65,0.0,0.0); 
680   AliMatrix(idrotm[504],90.0,127.06,90.0,217.06,0.0,0.0);  
681   AliMatrix(idrotm[505],90.0,116.47,90.0,206.47,0.0,0.0);  
682   AliMatrix(idrotm[506],90.0,105.88,90.0,195.88,0.0,0.0);  
683   AliMatrix(idrotm[507],90.0,95.29,90.0,185.29,0.0,0.0);  
684   AliMatrix(idrotm[508],90.0,84.71,90.0,174.71,0.0,0.0);
685   AliMatrix(idrotm[509],90.0,74.12,90.0,164.12,0.0,0.0);
686   AliMatrix(idrotm[510],90.0,63.53,90.0,153.53,0.0,0.0);  
687   AliMatrix(idrotm[511],90.0,52.94,90.0,142.94,0.0,0.0);
688   AliMatrix(idrotm[512],90.0,42.35,90.0,132.35,0.0,0.0);
689   AliMatrix(idrotm[513],90.0,31.76,90.0,121.76,0.0,0.0); 
690   AliMatrix(idrotm[514],90.0,10.59,90.0,100.59,0.0,0.0);  
691   AliMatrix(idrotm[515],90.0,349.41,90.0,79.41,0.0,0.0);  
692   AliMatrix(idrotm[516],90.0,338.82,90.0,68.82,0.0,0.0);  
693   AliMatrix(idrotm[517],90.0,328.24,90.0,58.24,0.0,0.0);  
694   AliMatrix(idrotm[518],90.0,317.65,90.0,47.65,0.0,0.0);
695   AliMatrix(idrotm[519],90.0,307.06,90.0,37.06,0.0,0.0);
696   AliMatrix(idrotm[520],90.0,296.47,90.0,26.47,0.0,0.0);  
697   AliMatrix(idrotm[521],90.0,285.88,90.0,15.88,0.0,0.0);
698   AliMatrix(idrotm[522],90.0,275.29,90.0,5.29,0.0,0.0);
699   AliMatrix(idrotm[523],90.0,264.71,90.0,354.71,0.0,0.0); 
700   AliMatrix(idrotm[524],90.0,254.12,90.0,344.12,0.0,0.0);  
701   AliMatrix(idrotm[525],90.0,243.53,90.0,333.53,0.0,0.0);  
702   AliMatrix(idrotm[526],90.0,232.94,90.0,322.94,0.0,0.0);  
703   AliMatrix(idrotm[527],90.0,222.35,90.0,312.35,0.0,0.0);  
704   AliMatrix(idrotm[528],90.0,211.76,90.0,301.76,0.0,0.0);
705   AliMatrix(idrotm[529],90.0,190.59,90.0,280.59,0.0,0.0);
706   AliMatrix(idrotm[530],90.0,169.41,90.0,259.41,0.0,0.0);  
707   AliMatrix(idrotm[531],90.0,158.82,90.0,248.82,0.0,0.0);
708   AliMatrix(idrotm[532],90.0,360.0,90.0,90.0,0.0,0.0);
709   AliMatrix(idrotm[533],90.0,180.0,90.0,270.0,0.0,0.0); 
710   AliMatrix(idrotm[534],90.0,189.47,90.0,279.47,0.0,0.0);  
711   AliMatrix(idrotm[535],90.0,198.95,90.0,288.95,0.0,0.0);  
712   AliMatrix(idrotm[537],90.0,217.89,90.0,307.89,0.0,0.0);  
713   AliMatrix(idrotm[538],90.0,227.37,90.0,317.37,0.0,0.0);
714   AliMatrix(idrotm[539],90.0,236.84,90.0,326.84,0.0,0.0);
715   AliMatrix(idrotm[540],90.0,246.32,90.0,336.32,0.0,0.0);  
716   AliMatrix(idrotm[541],90.0,255.79,90.0,345.79,0.0,0.0);
717   AliMatrix(idrotm[542],90.0,265.26,90.0,355.26,0.0,0.0);
718   AliMatrix(idrotm[543],90.0,274.74,90.0,4.74,0.0,0.0); 
719   AliMatrix(idrotm[544],90.0,284.21,90.0,14.21,0.0,0.0);  
720   AliMatrix(idrotm[545],90.0,293.68,90.0,23.68,0.0,0.0);  
721   AliMatrix(idrotm[546],90.0,303.16,90.0,33.16,0.0,0.0);  
722   AliMatrix(idrotm[547],90.0,312.63,90.0,42.63,0.0,0.0);  
723   AliMatrix(idrotm[548],90.0,322.11,90.0,52.11,0.0,0.0);
724   AliMatrix(idrotm[549],90.0,331.58,90.0,61.58,0.0,0.0);
725   AliMatrix(idrotm[550],90.0,341.05,90.0,71.05,0.0,0.0);  
726   AliMatrix(idrotm[551],90.0,350.53,90.0,80.53,0.0,0.0);
727   AliMatrix(idrotm[552],90.0,9.47,90.0,99.47,0.0,0.0);
728   AliMatrix(idrotm[553],90.0,18.95,90.0,108.95,0.0,0.0); 
729   AliMatrix(idrotm[555],90.0,37.89,90.0,127.89,0.0,0.0);  
730   AliMatrix(idrotm[556],90.0,47.37,90.0,137.37,0.0,0.0);  
731   AliMatrix(idrotm[557],90.0,56.84,90.0,146.84,0.0,0.0);  
732   AliMatrix(idrotm[558],90.0,66.32,90.0,156.32,0.0,0.0);
733   AliMatrix(idrotm[559],90.0,75.79,90.0,165.79,0.0,0.0);
734   AliMatrix(idrotm[560],90.0,85.26,90.0,175.26,0.0,0.0);  
735   AliMatrix(idrotm[561],90.0,94.74,90.0,184.74,0.0,0.0);
736   AliMatrix(idrotm[562],90.0,104.21,90.0,194.21,0.0,0.0);
737   AliMatrix(idrotm[563],90.0,113.68,90.0,203.68,0.0,0.0); 
738   AliMatrix(idrotm[564],90.0,123.16,90.0,213.16,0.0,0.0);  
739   AliMatrix(idrotm[565],90.0,132.63,90.0,222.63,0.0,0.0);  
740   AliMatrix(idrotm[566],90.0,142.11,90.0,232.11,0.0,0.0);  
741   AliMatrix(idrotm[567],90.0,151.58,90.0,241.58,0.0,0.0);  
742   AliMatrix(idrotm[568],90.0,161.05,90.0,251.05,0.0,0.0);
743   AliMatrix(idrotm[569],90.0,170.53,90.0,260.53,0.0,0.0);
744   AliMatrix(idrotm[570],90.0,180.0,90.0,90.0,180.0,0.0);  
745   AliMatrix(idrotm[571],90.0,0.0,0.0,0.0,90.0,270.0);
746   AliMatrix(idrotm[572],90.0,180.0,0.0,0.0,90.0,270.0);
747   AliMatrix(idrotm[573],90.0,180.0,90.0,90.0,0.0,0.0); 
748   AliMatrix(idrotm[575],90.0,120.0,180.0,0.0,90.0,210.0);  
749   AliMatrix(idrotm[576],65.71,300.0,90.0,30.0,24.29,120.0);  
750   AliMatrix(idrotm[577],114.29,300.0,90.0,30.0,155.71,120.0);  
751   AliMatrix(idrotm[579],65.71,240.0,90.0,150.0,24.29,60.0);
752   AliMatrix(idrotm[580],114.29,240.0,90.0,150.0,155.71,60.0);  
753   AliMatrix(idrotm[581],90.0,240.0,180.0,0.0,90.0,330.0);
754   AliMatrix(idrotm[583],90.0,0.0,180.0,0.0,90.0,90.0); 
755   AliMatrix(idrotm[584],90.0,180.0,180.0,0.0,90.0,90.0);  
756   AliMatrix(idrotm[586],180.0,0.0,90.0,90.0,90.0,0.0);  
757   AliMatrix(idrotm[618],90.0,201.18,90.0,291.18,0.0,0.0);
758   AliMatrix(idrotm[620],90.0,28.42,90.0,118.42,0.0,0.0);  
759   AliMatrix(idrotm[623],90.0,208.42,90.0,298.42,0.0,0.0);
760   AliMatrix(idrotm[633],132.46,0.0,90.0,90.0,42.46,360.0);
761   AliMatrix(idrotm[653],90.0,21.18,90.0,111.18,0.0,0.0); 
762
763   
764   // SDD cone
765
766   AliMatrix(idrotm[846],90.0,300.0,90.0,30.0,0.0,0.0);
767   AliMatrix(idrotm[851],90.0,305.0,90.0,35.0,0.0,0.0);
768   AliMatrix(idrotm[853],90.0,60.0,90.0,150.0,0.0,0.0);
769   AliMatrix(idrotm[856],90.0,0.0,90.0,90.0,180.0,0.0);
770   AliMatrix(idrotm[857],90.0,5.0,90.0,95.0,180.0,0.0);
771   AliMatrix(idrotm[858],90.0,65.0,90.0,155.0,180.0,0.0);
772   AliMatrix(idrotm[859],90.0,305.0,90.0,35.0,180.0,0.0);
773   AliMatrix(idrotm[860],90.0,245.0,90.0,335.0,180.0,0.0);
774   AliMatrix(idrotm[861],90.0,185.0,90.0,275.0,180.0,0.0);
775   AliMatrix(idrotm[862],90.0,125.0,90.0,215.0,180.0,0.0);
776   AliMatrix(idrotm[863],90.0,257.5,90.0,347.5,180.0,0.0);
777   AliMatrix(idrotm[864],90.0,227.5,90.0,317.5,180.0,0.0);
778   AliMatrix(idrotm[865],90.0,197.5,90.0,287.5,180.0,0.0);
779   AliMatrix(idrotm[867],90.0,167.5,90.0,257.5,180.0,0.0);
780   AliMatrix(idrotm[868],90.0,287.5,90.0,17.5,0.0,0.0);  
781   AliMatrix(idrotm[869],90.0,137.5,90.0,227.5,180.0,0.0);
782   AliMatrix(idrotm[870],90.0,107.5,90.0,197.5,180.0,0.0);
783   AliMatrix(idrotm[871],90.0,77.5,90.0,167.5,180.0,0.0);
784   AliMatrix(idrotm[872],90.0,47.5,90.0,137.5,180.0,0.0);
785   AliMatrix(idrotm[873],90.0,17.5,90.0,107.5,180.0,0.0);
786   AliMatrix(idrotm[874],90.0,347.5,90.0,77.5,180.0,0.0);
787   AliMatrix(idrotm[875],90.0,317.5,90.0,47.5,180.0,0.0);
788   AliMatrix(idrotm[876],90.0,287.5,90.0,17.5,180.0,0.0);
789   AliMatrix(idrotm[877],90.0,185.0,90.0,275.0,0.0,0.0);
790   AliMatrix(idrotm[878],90.0,180.0,90.0,270.0,0.0,0.0);  
791   AliMatrix(idrotm[879],90.0,125.0,90.0,215.0,0.0,0.0);
792   AliMatrix(idrotm[880],90.0,65.0,90.0,155.0,0.0,0.0);
793   AliMatrix(idrotm[881],90.0,5.0,90.0,95.0,0.0,0.0);
794   AliMatrix(idrotm[882],90.0,245.0,90.0,335.0,0.0,0.0);
795   AliMatrix(idrotm[883],90.0,47.5,90.0,137.5,0.0,0.0);
796   AliMatrix(idrotm[884],90.0,77.5,90.0,167.5,0.0,0.0);
797   AliMatrix(idrotm[885],90.0,107.5,90.0,197.5,0.0,0.0);
798   AliMatrix(idrotm[887],90.0,137.5,90.0,227.5,0.0,0.0);
799   AliMatrix(idrotm[888],90.0,167.5,90.0,257.5,0.0,0.0);
800   AliMatrix(idrotm[889],90.0,197.5,90.0,287.5,0.0,0.0);
801   AliMatrix(idrotm[890],90.0,227.5,90.0,317.5,0.0,0.0);
802   AliMatrix(idrotm[891],90.0,347.5,90.0,77.5,0.0,0.0);
803   AliMatrix(idrotm[892],90.0,317.5,90.0,47.5,0.0,0.0);
804   AliMatrix(idrotm[893],90.0,257.5,90.0,347.5,0.0,0.0);
805   AliMatrix(idrotm[894],90.0,270.0,0.0,0.0,90.0,180.0);
806   AliMatrix(idrotm[895],90.0,286.36,0.0,0.0,90.0,196.36);
807   AliMatrix(idrotm[896],90.0,302.73,0.0,0.0,90.0,212.73);
808   AliMatrix(idrotm[897],90.0,319.09,0.0,0.0,90.0,229.09);
809   AliMatrix(idrotm[898],90.0,17.5,90.0,107.5,0.0,0.0);
810   AliMatrix(idrotm[899],90.0,335.45,0.0,0.0,90.0,245.45);
811   AliMatrix(idrotm[900],90.0,351.82,0.0,0.0,90.0,261.82);
812   AliMatrix(idrotm[901],90.0,8.18,0.0,0.0,90.0,278.18);
813   AliMatrix(idrotm[902],90.0,24.55,0.0,0.0,90.0,294.55);
814   AliMatrix(idrotm[903],90.0,40.91,0.0,0.0,90.0,310.91);
815   AliMatrix(idrotm[904],90.0,57.27,0.0,0.0,90.0,327.27);
816   AliMatrix(idrotm[905],90.0,73.64,0.0,0.0,90.0,343.64);
817   AliMatrix(idrotm[906],90.0,90.0,0.0,0.0,90.0,360.0);
818   AliMatrix(idrotm[907],90.0,106.36,0.0,0.0,90.0,16.36);
819   AliMatrix(idrotm[908],90.0,122.73,0.0,0.0,90.0,32.73);
820   AliMatrix(idrotm[909],90.0,139.09,0.0,0.0,90.0,49.09);
821   AliMatrix(idrotm[910],90.0,155.45,0.0,0.0,90.0,65.45);
822   AliMatrix(idrotm[911],90.0,171.82,0.0,0.0,90.0,81.82);
823   AliMatrix(idrotm[912],90.0,188.18,0.0,0.0,90.0,98.18);
824   AliMatrix(idrotm[913],90.0,204.55,0.0,0.0,90.0,114.55);
825   AliMatrix(idrotm[914],90.0,220.91,0.0,0.0,90.0,130.91);
826   AliMatrix(idrotm[915],90.0,237.27,0.0,0.0,90.0,147.27);
827   AliMatrix(idrotm[916],90.0,253.64,0.0,0.0,90.0,163.64);
828   AliMatrix(idrotm[917],90.0,295.71,0.0,0.0,90.0,205.71);
829   AliMatrix(idrotm[918],90.0,321.43,0.0,0.0,90.0,231.43);
830   AliMatrix(idrotm[919],90.0,347.14,0.0,0.0,90.0,257.14);
831   AliMatrix(idrotm[920],90.0,12.86,0.0,0.0,90.0,282.86);
832   AliMatrix(idrotm[921],90.0,38.57,0.0,0.0,90.0,308.57);
833   AliMatrix(idrotm[922],90.0,64.29,0.0,0.0,90.0,334.29);
834   AliMatrix(idrotm[923],90.0,115.71,0.0,0.0,90.0,25.71);
835   AliMatrix(idrotm[924],90.0,141.43,0.0,0.0,90.0,51.43);
836   AliMatrix(idrotm[925],90.0,167.14,0.0,0.0,90.0,77.14);
837   AliMatrix(idrotm[926],90.0,192.86,0.0,0.0,90.0,102.86);
838   AliMatrix(idrotm[927],90.0,218.57,0.0,0.0,90.0,128.57);
839   AliMatrix(idrotm[928],90.0,244.29,0.0,0.0,90.0,154.29);
840   AliMatrix(idrotm[929],90.0,120.0,90.0,210.0,0.0,0.0);
841   AliMatrix(idrotm[930],90.0,240.0,90.0,330.0,0.0,0.0);
842   AliMatrix(idrotm[931],90.0,60.0,90.0,150.0,180.0,0.0);
843   AliMatrix(idrotm[932],90.0,120.0,90.0,210.0,180.0,0.0);
844   AliMatrix(idrotm[933],90.0,180.0,90.0,270.0,180.0,0.0);
845   AliMatrix(idrotm[934],90.0,240.0,90.0,330.0,180.0,0.0);
846   AliMatrix(idrotm[935],90.0,300.0,90.0,30.0,180.0,0.0);
847
848   // SSD cone
849
850   AliMatrix(idrotm[701],90.0,0.0,90.0,90.0,180.0,0.0);
851   AliMatrix(idrotm[702],90.0,347.5,90.0,77.5,180.0,0.0);
852   AliMatrix(idrotm[703],90.0,17.5,90.0,107.5,180.0,0.0);
853   AliMatrix(idrotm[704],90.0,47.5,90.0,137.5,180.0,0.0);
854   AliMatrix(idrotm[705],90.0,77.5,90.0,167.5,180.0,0.0);
855   AliMatrix(idrotm[706],90.0,107.5,90.0,197.5,180.0,0.0);
856   AliMatrix(idrotm[707],90.0,137.5,90.0,227.5,180.0,0.0);
857   AliMatrix(idrotm[708],90.0,167.5,90.0,257.5,180.0,0.0);
858   AliMatrix(idrotm[709],90.0,197.5,90.0,287.5,180.0,0.0);
859   AliMatrix(idrotm[710],90.0,227.5,90.0,317.5,180.0,0.0);
860   AliMatrix(idrotm[711],90.0,257.5,90.0,347.5,180.0,0.0);
861   AliMatrix(idrotm[712],90.0,287.5,90.0,17.5,180.0,0.0);
862   AliMatrix(idrotm[713],90.0,317.5,90.0,47.5,180.0,0.0);
863   AliMatrix(idrotm[714],90.0,328.4,90.0,58.4,180.0,0.0);
864   AliMatrix(idrotm[715],90.0,28.4,90.0,118.4,180.0,0.0);
865   AliMatrix(idrotm[716],90.0,88.4,90.0,178.4,180.0,0.0);
866   AliMatrix(idrotm[717],90.0,148.4,90.0,238.4,180.0,0.0);
867   AliMatrix(idrotm[718],90.0,208.4,90.0,298.4,180.0,0.0);
868   AliMatrix(idrotm[719],90.0,268.4,90.0,358.4,180.0,0.0);
869   AliMatrix(idrotm[720],90.0,28.4,90.0,118.4,0.0,0.0);
870   AliMatrix(idrotm[721],90.0,88.4,90.0,178.4,0.0,0.0);
871   AliMatrix(idrotm[722],90.0,148.4,90.0,238.4,0.0,0.0);
872   AliMatrix(idrotm[723],90.0,208.4,90.0,298.4,0.0,0.0);
873   AliMatrix(idrotm[724],90.0,268.4,90.0,358.4,0.0,0.0);
874   AliMatrix(idrotm[725],90.0,328.4,90.0,58.4,0.0,0.0);
875   AliMatrix(idrotm[726],90.0,77.5,90.0,167.5,0.0,0.0);
876   AliMatrix(idrotm[727],90.0,107.5,90.0,197.5,0.0,0.0);
877   AliMatrix(idrotm[728],90.0,137.5,90.0,227.5,0.0,0.0);
878   AliMatrix(idrotm[729],90.0,167.5,90.0,257.5,0.0,0.0);
879   AliMatrix(idrotm[730],90.0,227.5,90.0,317.5,0.0,0.0);
880   AliMatrix(idrotm[731],90.0,257.5,90.0,347.5,0.0,0.0);
881   AliMatrix(idrotm[732],90.0,317.5,90.0,47.5,0.0,0.0);  
882   AliMatrix(idrotm[733],90.0,197.5,90.0,287.5,0.0,0.0);
883   AliMatrix(idrotm[734],90.0,347.5,90.0,77.5,0.0,0.0);
884   AliMatrix(idrotm[735],90.0,47.5,90.0,137.5,0.0,0.0);
885   AliMatrix(idrotm[768],90.0,287.5,90.0,17.5,0.0,0.0);
886   AliMatrix(idrotm[798],90.0,17.5,90.0,107.5,0.0,0.0);
887
888   // Services
889     
890   AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);  
891
892
893   //     CONVERT INTO CM (RL(SI)=9.36 CM) 
894   
895   for (i = 0; i < 6; ++i) {
896     drl[i] = drl[i] / 100. * 9.36;
897   }
898     
899   //     FIELD CAGE HALF LENGTH 
900   
901   rlim  = 56.;
902   zmax  = 74.;
903   ztpc = 284.;
904   
905   // --- Define ghost volume containing the whole ITS (including services) 
906   //     and fill it with air 
907   
908   dgh[0] = 0.;
909   dgh[1] = 360.;
910   dgh[2] = 16.;
911   dgh[3] = -ztpc-5.-0.1;
912   dgh[4] = 46;   
913   dgh[5] = 85.;
914   dgh[6] = -ztpc;
915   dgh[7] = 46;   
916   dgh[8] = 85.;
917   dgh[9] = -ztpc;
918   dgh[10] = 46;  
919   dgh[11] = rlim+0.1;
920   dgh[12] = -97.5;
921   dgh[13] = 46;  
922   dgh[14] = rlim+0.1;
923   dgh[15] = -zmax;
924   dgh[16] = 46;  
925   dgh[17] = rlim+0.1;
926   dgh[18] = -48;   
927   dgh[19] = 6;
928   dgh[20] = rlim+0.1;
929   dgh[21] = -28.6;   
930   dgh[22] = 6;
931   dgh[23] = rlim+0.1;    
932   dgh[24] = -27.6;  
933   dgh[25] = 3.295;
934   dgh[26] = rlim+0.1; 
935   dgh[27] = 27.6;   
936   dgh[28] = 3.295;
937   dgh[29] = rlim+0.1;
938   dgh[30] = 28.6;   
939   dgh[31] = 6;
940   dgh[32] = rlim+0.1;
941   dgh[33] = 48;   
942   dgh[34] = 6;
943   dgh[35] = rlim+0.1;  
944   dgh[36] = zmax;
945   dgh[37] = 46;
946   dgh[38] = rlim+0.1;
947   dgh[39] = 97.5;
948   dgh[40] = 46;  
949   dgh[41] = rlim+0.1;
950   dgh[42] = ztpc;
951   dgh[43] = 62;     
952   dgh[44] = 62+4.;  
953   dgh[45] = ztpc;
954   dgh[46] = 62;     
955   dgh[47] = 85.;
956   dgh[48] = ztpc+4.+0.1;
957   dgh[49] = 62.4;
958   dgh[50] = 85.;
959   gMC->Gsvolu("ITSV", "PCON", idtmed[205], dgh, 51);
960
961   
962   // --- Place the ghost volume in its mother volume (ALIC) and make it 
963   //     invisible 
964   
965   gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
966   //gMC->Gsatt("ITSV", "SEEN", 0); 
967
968
969   // --- Define ghost volume containing the six layers and fill it with air 
970   
971   dgh[0] = 0.;
972   dgh[1] = 360.;
973   dgh[2] = 8.;
974   dgh[3] = -zmax;  
975   dgh[4] = 46.;
976   dgh[5] = rlim;
977   dgh[6] = -47.5;    
978   dgh[7] = 6.005;
979   dgh[8] = rlim;
980   dgh[9] = -28.5;    
981   dgh[10] = 6.005;
982   dgh[11] = rlim;  
983   dgh[12] = -27.5;   
984   dgh[13] = 3.3;
985   dgh[14] = rlim;
986   dgh[15] = 27.5;    
987   dgh[16] = 3.3;
988   dgh[17] = rlim;
989   dgh[18] = 28.5;    
990   dgh[19] = 6.005;
991   dgh[20] = rlim;
992   dgh[21] = 47.5;    
993   dgh[22] = 6.005;
994   dgh[23] = rlim;
995   dgh[24] = zmax;    
996   dgh[25] = 46.;
997   dgh[26] = rlim;
998   gMC->Gsvolu("ITSD", "PCON", idtmed[205], dgh, 27);
999   
1000   // --- Place the ghost volume in its mother volume (ITSV) and make it 
1001   //     invisible 
1002   
1003   gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
1004   //gMC->Gsatt("ITSD", "SEEN", 0);
1005
1006
1007   // --- Define SPD (option 'a') volumes ----------------------------
1008   
1009   // SPD - option 'a' 
1010   // (this is NOT the default)
1011
1012   if (option == 1) {
1013   
1014      dits[0] = 3.7;
1015      dits[1] = 7.75;
1016      dits[2] = 26.1;
1017      gMC->Gsvolu("IT12", "TUBE", idtmed[254], dits, 3);   
1018
1019      dits[0] = 3.7;
1020      dits[1] = 7.7;
1021      dits[2] = 24;
1022      dits[3] = 57;
1023      dits[4] = 100;
1024      gMC->Gsvolu("I12A", "TUBS", idtmed[254], dits, 5);    // sector
1025
1026      di10a[0] = 0.843;
1027      di10a[1] = ddet1+dchip1+dbus+0.0025;
1028      di10a[2] = 19.344;
1029      gMC->Gsvolu("I10A", "BOX ", idtmed[254], di10a, 3);    // mother volume
1030                                                             // on layer 1
1031      di20a[0] = 0.843;
1032      di20a[1] = ddet2+dchip2+dbus+0.0025;
1033      di20a[2] = 19.344;
1034      gMC->Gsvolu("I20A", "BOX ", idtmed[254], di20a, 3);    // mother volume
1035                                                             // on layer 2
1036      dits[0] = 1.3673;
1037      dits[1] = 0.01;
1038      dits[2] = 24;
1039      gMC->Gsvolu("I123", "BOX ", idtmed[253], dits, 3);
1040
1041      dits[0] = 0.06;
1042      dits[1] = 0.08;
1043      dits[2] = 24;
1044      dits[3] = -36.79;
1045      dits[4] = 21.834;
1046      gMC->Gsvolu("I121", "TUBS", idtmed[253], dits, 5);  
1047
1048      dits[0] = 0.1253;
1049      dits[1] = 0.01;
1050      dits[2] = 24;
1051      gMC->Gsvolu("I122", "BOX ", idtmed[253], dits, 3);  
1052
1053      dits[0] = 0.04;
1054      dits[1] = 0.06 ;
1055      dits[2] = 24;
1056      dits[3] = 126.79;
1057      dits[4] = 270;
1058      gMC->Gsvolu("I120", "TUBS", idtmed[253], dits, 5);  
1059
1060      dits[0] = 0.1134;
1061      dits[1] = 0.01;
1062      dits[2] = 24;
1063      gMC->Gsvolu("I144", "BOX ", idtmed[253], dits, 3);  
1064
1065      dits[0] = 0.25;
1066      dits[1] = 0.06;
1067      dits[2] = 24;
1068      gMC->Gsvolu("I113", "BOX ", idtmed[254], dits, 3);  
1069
1070      dits[0] = 0.077;
1071      dits[1] = 0.01;
1072      dits[2] = 24;
1073      gMC->Gsvolu("I143", "BOX ", idtmed[253], dits, 3);   
1074
1075      dits[0] = 0.04;
1076      dits[1] = 0.06;
1077      dits[2] = 24;
1078      dits[3] = 0;
1079      dits[4] = 90;
1080      gMC->Gsvolu("I142", "TUBS", idtmed[253], dits, 5); 
1081
1082      dits[0] = 0.0695;
1083      dits[1] = 0.01;
1084      dits[2] = 24;
1085      gMC->Gsvolu("I141", "BOX ", idtmed[253], dits, 3);  
1086
1087      dits[0] = 0.06;
1088      dits[1] = 0.08;
1089      dits[2] = 24;
1090      dits[3] = 0;
1091      dits[4] = 108;
1092      gMC->Gsvolu("I140", "TUBS", idtmed[253], dits, 5);  
1093
1094      dits[0] = 0.1835;
1095      dits[1] = 0.01;
1096      dits[2] = 24;
1097      gMC->Gsvolu("I139", "BOX ", idtmed[253], dits, 3);
1098
1099      dits[0] = 0.1894 ;
1100      dits[1] = 0.01;
1101      dits[2] = 24;
1102      gMC->Gsvolu("I138", "BOX ", idtmed[253], dits, 3);  
1103
1104      dits[0] = 0.04;
1105      dits[1] = 0.06;
1106      dits[2] = 24;
1107      dits[3] = 0;
1108      dits[4] = 75.261;
1109      gMC->Gsvolu("I137", "TUBS", idtmed[253], dits, 5);  
1110
1111      dits[0] = 1.3401;
1112      dits[1] = 0.01;
1113      dits[2] = 24;
1114      gMC->Gsvolu("I136", "BOX ", idtmed[253], dits, 3);  
1115
1116      dits[0] = 0.05;
1117      dits[1] = 0.07;
1118      dits[2] = 24;
1119      dits[3] = 0;
1120      dits[4] = 72.739;
1121      gMC->Gsvolu("I135", "TUBS", idtmed[253], dits, 5);  
1122
1123      dits[0] = 0.1193;
1124      dits[1] = 0.01;
1125      dits[2] = 24;
1126      gMC->Gsvolu("I134", "BOX ", idtmed[253], dits, 3);    
1127
1128      dits[0] = 0.163;
1129      dits[1] = 0.01;
1130      dits[2] = 24;
1131      gMC->Gsvolu("I133", "BOX ", idtmed[253], dits, 3);   
1132
1133      dits[0] = 0.04;
1134      dits[1] = 0.06;
1135      dits[2] = 24;
1136      dits[3] = 0;
1137      dits[4] = 157.633;
1138      gMC->Gsvolu("I132", "TUBS", idtmed[253], dits, 5); 
1139
1140      dits[0] = 0.2497;
1141      dits[1] = 0.01;
1142      dits[2] = 24;
1143      gMC->Gsvolu("I131", "BOX ", idtmed[253], dits, 3); 
1144
1145      dits[0] = 0.06;
1146      dits[1] = 0.08;
1147      dits[2] = 24;
1148      dits[3] = 0;
1149      dits[4] = 148.633;
1150      gMC->Gsvolu("I130", "TUBS", idtmed[253], dits, 5); 
1151
1152      dits[0] = 0.292;
1153      dits[1] = 0.01;
1154      dits[2] = 24;
1155      gMC->Gsvolu("I129", "BOX ", idtmed[253], dits, 3);  
1156
1157      dits[0] = 0.163;
1158      dits[1] = 0.01;
1159      dits[2] = 24;
1160      gMC->Gsvolu("I128", "BOX ", idtmed[253], dits, 3);  
1161
1162      dits[0] = 0.04;
1163      dits[1] = 0.06;
1164      dits[2] = 24;
1165      dits[3] = 0;
1166      dits[4] = 161.297;
1167      gMC->Gsvolu("I126", "TUBS", idtmed[253], dits, 5);
1168
1169      dits[0] = 0.2433;
1170      dits[1] = 0.01;
1171      dits[2] = 24;
1172      gMC->Gsvolu("I125", "BOX ", idtmed[253], dits, 3);  
1173
1174      dits[0] = 0.06;
1175      dits[1] = 0.08;
1176      dits[2] = 24;
1177      dits[3] = 0;
1178      dits[4] = 42.883;
1179      gMC->Gsvolu("I124", "TUBS", idtmed[253], dits, 5);  
1180
1181      di103[0] = 0.793;
1182      di103[1] = ddet1+dchip1;
1183      di103[2] = 3.536;
1184      gMC->Gsvolu("I103", "BOX ", idtmed[254], di103, 3); // contains det and chip  
1185                                                          // layer 1
1186      dits[0] = 0.793;
1187      dits[1] = 0.015;
1188      dits[2] = 2.5;
1189      gMC->Gsvolu("I105", "BOX ", idtmed[201], dits, 3);  
1190
1191      di104[0] = 0.843;
1192      di104[1] = dbus;
1193      di104[2] = 14.344;
1194      gMC->Gsvolu("I104", "BOX ", idtmed[275], di104, 3);  // bus for both layers
1195
1196      di1d3[0] = 0.793;
1197      di1d3[1] = ddet2+dchip2;
1198      di1d3[2] = 3.536;
1199      gMC->Gsvolu("I1D3", "BOX ", idtmed[254], di1d3, 3); // contains det and chip
1200                                                          // layer 2
1201      dits[0] = 0.793;
1202      dits[0] = 0.06;
1203      dits[1] = 0.08;
1204      dits[2] = 24;
1205      dits[3] = 0;
1206      dits[4] = 80;
1207      gMC->Gsvolu("I112", "TUBS", idtmed[253], dits, 5);  
1208
1209      dits[0] = 0.04;
1210      dits[1] = 0.06;
1211      dits[2] = 24;
1212      dits[3] = 0;
1213      dits[4] = 80;
1214      gMC->Gsvolu("I111", "TUBS", idtmed[253], dits, 5);  
1215
1216      dits[0] = 0.15;
1217      dits[1] = 0.0146;
1218      dits[2] = 24;
1219      gMC->Gsvolu("I118", "BOX ", idtmed[273], dits, 3);  
1220
1221      dits[0] = 0.1315;
1222      dits[1] = 0.01;
1223      dits[2] = 24;
1224      gMC->Gsvolu("I110", "BOX ", idtmed[253], dits, 3);  
1225
1226      dits[0] = 0.025;
1227      dits[1] = 0.035;
1228      dits[2] = 24;
1229      dits[3] = 0;
1230      dits[4] = 180;
1231      gMC->Gsvolu("I114", "TUBS", idtmed[264], dits, 5);  
1232
1233      if (fluid == 1) {
1234         dits[0] = 0;
1235         dits[1] = 0.025;
1236         dits[2] = 24;
1237         dits[3] = 0;
1238         dits[4] = 180;
1239         gMC->Gsvolu("I115", "TUBS", idtmed[211], dits, 5); // set water as cooling fluid   
1240      } else {
1241         dits[0] = 0;
1242         dits[1] = 0.025;
1243         dits[2] = 24;
1244         dits[3] = 0;
1245         dits[4] = 180;
1246         gMC->Gsvolu("I115", "TUBS", idtmed[212], dits, 5); // set freon as cooling fluid       
1247      }
1248      
1249      dits[0] = 0.063;
1250      dits[1] = 0.035;
1251      dits[2] = 24;
1252      gMC->Gsvolu("I116", "BOX ", idtmed[264], dits, 3); 
1253
1254      di102[0] = 0.793;
1255      di102[1] = dchip1;
1256      di102[2] = 0.68;
1257      gMC->Gsvolu("I102", "BOX ", idtmed[201], di102, 3);   // chip layer 1
1258           
1259      di1d2[0] = 0.793;
1260      di1d2[1] = dchip2;
1261      di1d2[2] = 0.68;
1262      gMC->Gsvolu("I1D2", "BOX ", idtmed[201], di1d2, 3);   // chip      layer 2
1263
1264      di101[0] = 0.705;
1265      di101[1] = ddet1;
1266      di101[2] = 3.536;
1267      gMC->Gsvolu("I101", "BOX ", idtmed[250], di101, 3);   // contains detector 
1268                                                            // layer 1
1269      di1d1[0] = 0.705;
1270      di1d1[1] = ddet2;
1271      di1d1[2] = 3.536;
1272      gMC->Gsvolu("I1D1", "BOX ", idtmed[250], di1d1, 3);   // contains detector 
1273                                                            // layer 2
1274      if (fluid == 1) {
1275         dits[0] = 0.063;
1276         dits[1] = 0.025;
1277         dits[2] = 24;
1278         gMC->Gsvolu("I117", "BOX ", idtmed[211], dits, 3); // set water as cooling fuid
1279      } else {
1280         dits[0] = 0.063;
1281         dits[1] = 0.025;
1282         dits[2] = 24;
1283         gMC->Gsvolu("I117", "BOX ", idtmed[212], dits, 3); // set freon as cooling fluid
1284      }
1285
1286      dits1[0] = 0.64;
1287      dits1[1] = ddet1;
1288      dits1[2] = 3.48;
1289      gMC->Gsvolu("ITS1", "BOX ", idtmed[200], dits1, 3);   // detector layer 1
1290
1291      dits2[0] = 0.64;
1292      dits2[1] = ddet2;
1293      dits2[2] = 3.48;
1294      gMC->Gsvolu("ITS2", "BOX ", idtmed[200], dits2, 3);   // detector layer 2
1295
1296      dits[0] = 3.701;
1297      dits[1] = 7.699;
1298      dits[2] = 4;
1299      dits[3] = 57.1;
1300      dits[4] = 99.9;  
1301      gMC->Gsvolu("I650", "TUBS", idtmed[254], dits, 5);  // was I150 in old geom.
1302
1303      dits[0] = 0;
1304      dits[1] = 0.5;
1305      dits[2] = 1.5;
1306      gMC->Gsvolu("I676", "TUBE", idtmed[274], dits, 3); // was I176 in old geom.
1307
1308      dits[0] = 0;
1309      dits[1] = 0.18;
1310      dits[2] = 0.8;
1311      gMC->Gsvolu("I673", "TUBE", idtmed[274], dits, 3); // was I173 in old geom.
1312
1313      dits[0] = 0;
1314      dits[1] = 0.18;
1315      dits[2] = 3;
1316      gMC->Gsvolu("I671", "TUBE", idtmed[274], dits, 3); // was I171 in old geom.
1317
1318      dits[0] = 0;
1319      dits[1] = 0.075;
1320      dits[2] = 0.8;
1321      gMC->Gsvolu("I669", "TUBE", idtmed[264], dits, 3); // was I169 in old geom.
1322
1323      dits[0] = 3.5;
1324      dits[1] = 5.6;
1325      dits[2] = 0.55;
1326      dits[3] = 0;
1327      dits[4] = 38;
1328      gMC->Gsvolu("I667", "TUBS", idtmed[263], dits, 5); // was I167 in old geom.
1329
1330      dits[0] = 6.6;
1331      dits[1] = 7.6;
1332      dits[2] = 0.5;
1333      dits[3] = 0;
1334      dits[4] = 9;
1335      gMC->Gsvolu("I666", "TUBS", idtmed[263], dits, 5); // was I166 in old geom.
1336
1337      dits[0] = 0.26;
1338      dits[1] = 0.32;
1339      dits[2] = 0.55;
1340      gMC->Gsvolu("I678", "TUBE", idtmed[263], dits, 3); // was I178 in old geom.
1341
1342      if (fluid == 1) {
1343         dits[0] = 0;
1344         dits[1] = 0.3;
1345         dits[2] = 1.5;
1346         gMC->Gsvolu("I677", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
1347                                                            // was I177 in old geom.
1348      } else {
1349          dits[0] = 0;
1350         dits[1] = 0.3;
1351         dits[2] = 1.5;
1352         gMC->Gsvolu("I677", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
1353                                                            // was I177 in old geom.    
1354      }
1355      
1356      dits[0] = 0.07;
1357      dits[1] = 0.125;
1358      dits[2] = 0.3;
1359      gMC->Gsvolu("I675", "TUBE", idtmed[263], dits, 3); // was I175 in old geom.
1360
1361      if (fluid == 1) {
1362         dits[0] = 0;
1363         dits[1] = 0.1;
1364         dits[2] = 0.8;
1365         gMC->Gsvolu("I674", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
1366                                                            // was I174 in old geom.
1367      } else {
1368         dits[0] = 0;
1369         dits[1] = 0.1;
1370         dits[2] = 0.8;
1371         gMC->Gsvolu("I674", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
1372                                                            // was I174 in old geom.     
1373      }
1374      
1375      if (fluid == 1) {
1376         dits[0] = 0;
1377         dits[1] = 0.1;
1378         dits[2] = 3;
1379         gMC->Gsvolu("I672", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
1380                                                            // was I172 in old geom.
1381      } else {
1382         dits[0] = 0;
1383         dits[1] = 0.1;
1384         dits[2] = 3;
1385         gMC->Gsvolu("I672", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
1386                                                            // was I172 in old geom.        
1387      }
1388      
1389      if (fluid == 1) {     
1390         dits[0] = 0;
1391         dits[1] = 0.0746;
1392         dits[2] = 0.8;
1393         gMC->Gsvolu("I670", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
1394                                                            // was I170 in old geom.
1395      } else {
1396         dits[0] = 0;
1397         dits[1] = 0.0746;
1398         dits[2] = 0.8;
1399         gMC->Gsvolu("I670", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
1400                                                            // was I170 in old geom.     
1401      }
1402      
1403      if (fluid == 1) {     
1404         dits[0] = 3.7;
1405         dits[1] = 5.4;
1406         dits[2] = 0.35;
1407         dits[3] = 2;
1408         dits[4] = 36;
1409         gMC->Gsvolu("I668", "TUBS", idtmed[211], dits, 5); // set water as cooling fluid
1410                                                            // was I168 in old geom.
1411      } else {
1412         dits[0] = 3.7;
1413         dits[1] = 5.4;
1414         dits[2] = 0.35;
1415         dits[3] = 2;
1416         dits[4] = 36;
1417         gMC->Gsvolu("I668", "TUBS", idtmed[212], dits, 5); // set freon as cooling fluid
1418                                                            // was I168 in old geom.
1419      }
1420
1421
1422   }
1423
1424   // --- Define SPD (option 'b') volumes ----------------------------
1425   
1426   // SPD - option 'b' 
1427   // (this is the default)
1428
1429   if (option == 2) {
1430   
1431      dits[0] = 3.7;
1432      dits[1] = 7.75;
1433      dits[2] = 26.1;
1434      gMC->Gsvolu("IT12", "TUBE", idtmed[254], dits, 3);   
1435
1436      dits[0] = 3.7;
1437      dits[1] = 7.7;
1438      dits[2] = 24;
1439      dits[3] = 57;
1440      dits[4] = 100;
1441      gMC->Gsvolu("I12B", "TUBS", idtmed[254], dits, 5);   // sector
1442
1443      di10b[0] = 0.843;
1444      di10b[1] = ddet1+dchip1+dbus+0.0025;  
1445      di10b[2] = 19.344;
1446      gMC->Gsvolu("I10B", "BOX ", idtmed[254], di10b, 3);   // mother volume 
1447                                                                 // on layer 1
1448
1449      di20b[0] = 0.843;
1450      di20b[1] = ddet2+dchip2+dbus+0.0025;   
1451      di20b[2] = 19.344;
1452      gMC->Gsvolu("I20B", "BOX ", idtmed[254], di20b, 3);   // mother volume
1453                                                                 // layer 2
1454
1455      dits[0] = 1.3673;
1456      dits[1] = 0.01;
1457      dits[2] = 24;
1458      gMC->Gsvolu("I123", "BOX ", idtmed[253], dits, 3);
1459
1460      dits[0] = 0.06;
1461      dits[1] = 0.08;
1462      dits[2] = 24;
1463      dits[3] = -36.79;
1464      dits[4] = 21.834;
1465      gMC->Gsvolu("I121", "TUBS", idtmed[253], dits, 5);  
1466
1467      dits[0] = 0.1253;
1468      dits[1] = 0.01;
1469      dits[2] = 24;
1470      gMC->Gsvolu("I122", "BOX ", idtmed[253], dits, 3);  
1471
1472      dits[0] = 0.04;
1473      dits[1] = 0.06 ;
1474      dits[2] = 24;
1475      dits[3] = 126.79;
1476      dits[4] = 270;
1477      gMC->Gsvolu("I120", "TUBS", idtmed[253], dits, 5);  
1478
1479      dits[0] = 0.1134;
1480      dits[1] = 0.01;
1481      dits[2] = 24;
1482      gMC->Gsvolu("I144", "BOX ", idtmed[253], dits, 3);  
1483
1484      dits[0] = 0.25;
1485      dits[1] = 0.06;
1486      dits[2] = 24;
1487      gMC->Gsvolu("I113", "BOX ", idtmed[254], dits, 3);  
1488
1489      dits[0] = 0.077;
1490      dits[1] = 0.01;
1491      dits[2] = 24;
1492      gMC->Gsvolu("I143", "BOX ", idtmed[253], dits, 3);   
1493
1494      dits[0] = 0.04;
1495      dits[1] = 0.06;
1496      dits[2] = 24;
1497      dits[3] = 0;
1498      dits[4] = 90;
1499      gMC->Gsvolu("I142", "TUBS", idtmed[253], dits, 5); 
1500
1501      dits[0] = 0.0695;
1502      dits[1] = 0.01;
1503      dits[2] = 24;
1504      gMC->Gsvolu("I141", "BOX ", idtmed[253], dits, 3);  
1505
1506      dits[0] = 0.06;
1507      dits[1] = 0.08;
1508      dits[2] = 24;
1509      dits[3] = 0;
1510      dits[4] = 108;
1511      gMC->Gsvolu("I140", "TUBS", idtmed[253], dits, 5);  
1512
1513      dits[0] = 0.1835;
1514      dits[1] = 0.01;
1515      dits[2] = 24;
1516      gMC->Gsvolu("I139", "BOX ", idtmed[253], dits, 3);
1517
1518      dits[0] = 0.1894 ;
1519      dits[1] = 0.01;
1520      dits[2] = 24;
1521      gMC->Gsvolu("I138", "BOX ", idtmed[253], dits, 3);  
1522
1523      dits[0] = 0.04;
1524      dits[1] = 0.06;
1525      dits[2] = 24;
1526      dits[3] = 0;
1527      dits[4] = 75.261;
1528      gMC->Gsvolu("I137", "TUBS", idtmed[253], dits, 5);  
1529
1530      dits[0] = 1.3401;
1531      dits[1] = 0.01;
1532      dits[2] = 24;
1533      gMC->Gsvolu("I136", "BOX ", idtmed[253], dits, 3);  
1534
1535      dits[0] = 0.05;
1536      dits[1] = 0.07;
1537      dits[2] = 24;
1538      dits[3] = 0;
1539      dits[4] = 72.739;
1540      gMC->Gsvolu("I135", "TUBS", idtmed[253], dits, 5);  
1541
1542      dits[0] = 0.1193;
1543      dits[1] = 0.01;
1544      dits[2] = 24;
1545      gMC->Gsvolu("I134", "BOX ", idtmed[253], dits, 3);    
1546
1547      dits[0] = 0.163;
1548      dits[1] = 0.01;
1549      dits[2] = 24;
1550      gMC->Gsvolu("I133", "BOX ", idtmed[253], dits, 3);   
1551
1552      dits[0] = 0.04;
1553      dits[1] = 0.06;
1554      dits[2] = 24;
1555      dits[3] = 0;
1556      dits[4] = 157.633;
1557      gMC->Gsvolu("I132", "TUBS", idtmed[253], dits, 5); 
1558
1559      dits[0] = 0.2497;
1560      dits[1] = 0.01;
1561      dits[2] = 24;
1562      gMC->Gsvolu("I131", "BOX ", idtmed[253], dits, 3); 
1563
1564      dits[0] = 0.06;
1565      dits[1] = 0.08;
1566      dits[2] = 24;
1567      dits[3] = 0;
1568      dits[4] = 148.633;
1569      gMC->Gsvolu("I130", "TUBS", idtmed[253], dits, 5); 
1570
1571      dits[0] = 0.292;
1572      dits[1] = 0.01;
1573      dits[2] = 24;
1574      gMC->Gsvolu("I129", "BOX ", idtmed[253], dits, 3);  
1575
1576      dits[0] = 0.163;
1577      dits[1] = 0.01;
1578      dits[2] = 24;
1579      gMC->Gsvolu("I128", "BOX ", idtmed[253], dits, 3);  
1580
1581      dits[0] = 0.04;
1582      dits[1] = 0.06;
1583      dits[2] = 24;
1584      dits[3] = 0;
1585      dits[4] = 161.297;
1586      gMC->Gsvolu("I126", "TUBS", idtmed[253], dits, 5);
1587
1588      dits[0] = 0.2433;
1589      dits[1] = 0.01;
1590      dits[2] = 24;
1591      gMC->Gsvolu("I125", "BOX ", idtmed[253], dits, 3);  
1592
1593      dits[0] = 0.06;
1594      dits[1] = 0.08;
1595      dits[2] = 24;
1596      dits[3] = 0;
1597      dits[4] = 42.883;
1598      gMC->Gsvolu("I124", "TUBS", idtmed[253], dits, 5);  
1599
1600      dits[0] = 0.793;
1601      dits[1] = 0.015 ;
1602      dits[2] = 2.5;
1603      gMC->Gsvolu("I105", "BOX ", idtmed[201], dits, 3);  
1604
1605      di107[0] = 0.793;
1606      di107[1] = ddet1+dchip1;
1607      di107[2] = 3.536;
1608      gMC->Gsvolu("I107", "BOX ", idtmed[254], di107, 3); // contains det and chip   
1609                                                          // layer 1
1610      dits[0] = 0.705;
1611      dits[1] = 0.01;
1612      dits[2] = 2.5;
1613      gMC->Gsvolu("I109", "BOX ", idtmed[275], dits, 3);  
1614
1615      di108[0] = 0.705;
1616      di108[1] = dbus;
1617      di108[2] = 14.344;
1618      gMC->Gsvolu("I108", "BOX ", idtmed[275], di108, 3); // bus for both layers 
1619
1620      di1d7[0] = 0.7975;
1621      di1d7[1] = ddet2+dchip2;   
1622      di1d7[2] = 3.536;
1623      gMC->Gsvolu("I1D7", "BOX ", idtmed[254], di1d7, 3); // contains det and chip
1624                                                          // layer 2
1625      dits[0] = 0.06;
1626      dits[1] = 0.08;
1627      dits[2] = 24;
1628      dits[3] = 0;
1629      dits[4] = 80;
1630      gMC->Gsvolu("I112", "TUBS", idtmed[253], dits, 5);  
1631
1632      dits[0] = 0.04;
1633      dits[1] = 0.06;
1634      dits[2] = 24;
1635      dits[3] = 0;
1636      dits[4] = 80;
1637      gMC->Gsvolu("I111", "TUBS", idtmed[253], dits, 5);  
1638
1639      dits[0] = 0.15;
1640      dits[1] = 0.0146;
1641      dits[2] = 24;
1642      gMC->Gsvolu("I118", "BOX ", idtmed[273], dits, 3);  
1643
1644      dits[0] = 0.1315;
1645      dits[1] = 0.01;
1646      dits[2] = 24;
1647      gMC->Gsvolu("I110", "BOX ", idtmed[253], dits, 3);  
1648
1649      dits[0] = 0.025;
1650      dits[1] = 0.035;
1651      dits[2] = 24;
1652      dits[3] = 0;
1653      dits[4] = 180;
1654      gMC->Gsvolu("I114", "TUBS", idtmed[264], dits, 5);  
1655
1656      if (fluid == 1) {
1657         dits[0] = 0;
1658         dits[1] = 0.025;
1659         dits[2] = 24;
1660         dits[3] = 0;
1661         dits[4] = 180;
1662         gMC->Gsvolu("I115", "TUBS", idtmed[211], dits, 5);  // set water as cooling fluid   
1663      } else {
1664         dits[0] = 0;
1665         dits[1] = 0.025;
1666         dits[2] = 24;
1667         dits[3] = 0;
1668         dits[4] = 180;
1669         gMC->Gsvolu("I115", "TUBS", idtmed[212], dits, 5);  // set freon as cooling fluid
1670      }
1671      
1672      dits[0] = 0.063;
1673      dits[1] = 0.035;
1674      dits[2] = 24;
1675      gMC->Gsvolu("I116", "BOX ", idtmed[264], dits, 3); 
1676
1677      di106[0] = 0.7975;
1678      di106[1] = dchip1;   
1679      di106[2] = 0.68;
1680      gMC->Gsvolu("I106", "BOX ", idtmed[201], di106, 3);   // chip layer 1
1681
1682      di1d6[0] = 0.7975;
1683      di1d6[1] = dchip2;   
1684      di1d6[2] = 0.68;
1685      gMC->Gsvolu("I1D6", "BOX ", idtmed[201], di1d6, 3);   // chip layer 2
1686
1687      di101[0] = 0.705;
1688      di101[1] = ddet1;
1689      di101[2] = 3.536;
1690      gMC->Gsvolu("I101", "BOX ", idtmed[250], di101, 3);  // contains detector  
1691                                                           // layer 1
1692      di1d1[0] = 0.705;
1693      di1d1[1] = ddet2;   
1694      di1d1[2] = 3.536;
1695      gMC->Gsvolu("I1D1", "BOX ", idtmed[250], di1d1, 3);  // contains detector  
1696                                                           // layer 2
1697    
1698      if (fluid == 1) {
1699         dits[0] = 0.063;
1700         dits[1] = 0.025;
1701         dits[2] = 24;
1702         gMC->Gsvolu("I117", "BOX ", idtmed[211], dits, 3); // set water as cooling fluid
1703      } else {
1704         dits[0] = 0.063;
1705         dits[1] = 0.025;
1706         dits[2] = 24;
1707         gMC->Gsvolu("I117", "BOX ", idtmed[212], dits, 3); // set freon as cooling fluid
1708      }
1709
1710      dits1[0] = 0.64;
1711      dits1[1] = ddet1;
1712      dits1[2] = 3.48;
1713      gMC->Gsvolu("ITS1", "BOX ", idtmed[200], dits1, 3);   // detector layer 1
1714
1715      dits2[0] = 0.64;
1716      dits2[1] = ddet2;  
1717      dits2[2] = 3.48;
1718      gMC->Gsvolu("ITS2", "BOX ", idtmed[200], dits2, 3);   // detector layer 2
1719
1720      dits[0] = 3.701;
1721      dits[1] = 7.699;
1722      dits[2] = 4;
1723      dits[3] = 57.1;
1724      dits[4] = 99.9;  
1725      gMC->Gsvolu("I650", "TUBS", idtmed[254], dits, 5);  // was I150 in old geom.
1726
1727      dits[0] = 0;
1728      dits[1] = 0.5;
1729      dits[2] = 1.5;
1730      gMC->Gsvolu("I676", "TUBE", idtmed[274], dits, 3); // was I176 in old geom.
1731
1732      dits[0] = 0;
1733      dits[1] = 0.18;
1734      dits[2] = 0.8;
1735      gMC->Gsvolu("I673", "TUBE", idtmed[274], dits, 3); // was I173 in old geom.
1736
1737      dits[0] = 0;
1738      dits[1] = 0.18;
1739      dits[2] = 3;
1740      gMC->Gsvolu("I671", "TUBE", idtmed[274], dits, 3); // was I171 in old geom.
1741
1742      dits[0] = 0;
1743      dits[1] = 0.075;
1744      dits[2] = 0.8;
1745      gMC->Gsvolu("I669", "TUBE", idtmed[264], dits, 3); // was I169 in old geom.
1746
1747      dits[0] = 3.5;
1748      dits[1] = 5.6;
1749      dits[2] = 0.55;
1750      dits[3] = 0;
1751      dits[4] = 38;
1752      gMC->Gsvolu("I667", "TUBS", idtmed[263], dits, 5); // was I167 in old geom.
1753
1754      dits[0] = 6.6;
1755      dits[1] = 7.6;
1756      dits[2] = 0.5;
1757      dits[3] = 0;
1758      dits[4] = 9;
1759      gMC->Gsvolu("I666", "TUBS", idtmed[263], dits, 5); // was I166 in old geom.
1760
1761      dits[0] = 0.26;
1762      dits[1] = 0.32;
1763      dits[2] = 0.55;
1764      gMC->Gsvolu("I678", "TUBE", idtmed[263], dits, 3); // was I178 in old geom.
1765
1766      if (fluid == 1) {
1767         dits[0] = 0;
1768         dits[1] = 0.3;
1769         dits[2] = 1.5;
1770         gMC->Gsvolu("I677", "TUBE", idtmed[211], dits, 3); //set water as cooling fluid
1771                                                            // was I177 in old geom.
1772      } else {
1773         dits[0] = 0;
1774         dits[1] = 0.3;
1775         dits[2] = 1.5;
1776         gMC->Gsvolu("I677", "TUBE", idtmed[212], dits, 3); //set freon as cooling fluid
1777                                                            // was I177 in old geom.     
1778      }
1779
1780      dits[0] = 0.07;
1781      dits[1] = 0.125;
1782      dits[2] = 0.3;
1783      gMC->Gsvolu("I675", "TUBE", idtmed[263], dits, 3); // was I175 in old geom.
1784
1785      if (fluid == 1) {
1786         dits[0] = 0;
1787         dits[1] = 0.1;
1788         dits[2] = 0.8;
1789         gMC->Gsvolu("I674", "TUBE", idtmed[211], dits, 3); //set water as cooling fluid
1790                                                            // was I174 in old geom.
1791      } else {
1792         dits[0] = 0;
1793         dits[1] = 0.1;
1794         dits[2] = 0.8;
1795         gMC->Gsvolu("I674", "TUBE", idtmed[212], dits, 3); //set freon as cooling fluid
1796                                                            // was I174 in old geom.     
1797      }
1798      
1799      if (fluid == 1) {
1800         dits[0] = 0;
1801         dits[1] = 0.1;
1802         dits[2] = 3;
1803         gMC->Gsvolu("I672", "TUBE", idtmed[211], dits, 3); //set water as cooling fluid
1804                                                            // was I172 in old geom.
1805      } else {
1806         dits[0] = 0;
1807         dits[1] = 0.1;
1808         dits[2] = 3;
1809         gMC->Gsvolu("I672", "TUBE", idtmed[212], dits, 3); //set freon as cooling fluid
1810                                                            // was I172 in old geom.     
1811      }
1812      
1813      if (fluid == 1) {
1814         dits[0] = 0;
1815         dits[1] = 0.0746;
1816         dits[2] = 0.8;
1817         gMC->Gsvolu("I670", "TUBE", idtmed[211], dits, 3); //set water as cooling fluid
1818                                                            // was I170 in old geom.
1819      } else {
1820         dits[0] = 0;
1821         dits[1] = 0.0746;
1822         dits[2] = 0.8;
1823         gMC->Gsvolu("I670", "TUBE", idtmed[212], dits, 3); //set freon as cooling fluid
1824                                                            // was I170 in old geom.     
1825      }
1826      
1827      if (fluid == 1) {
1828         dits[0] = 3.7;
1829         dits[1] = 5.4;
1830         dits[2] = 0.35;
1831         dits[3] = 2;
1832         dits[4] = 36;
1833         gMC->Gsvolu("I668", "TUBS", idtmed[211], dits, 5); //set water as cooling fluid
1834                                                            // was I168 in old geom.
1835      } else {
1836         dits[0] = 3.7;
1837         dits[1] = 5.4;
1838         dits[2] = 0.35;
1839         dits[3] = 2;
1840         dits[4] = 36;
1841         gMC->Gsvolu("I668", "TUBS", idtmed[212], dits, 5); //set freon as cooling fluid
1842                                                            // was I168 in old geom.     
1843      }
1844      
1845
1846   }
1847
1848   // --- Define SDD volumes ------------------------------------------
1849
1850   
1851   cos30 = cos(30.*3.14159/180.);
1852   sin30 = sin(30.*3.14159/180.);
1853
1854   
1855   dits[0] = 0;
1856   dits[1] = 360;
1857   dits[2] = 6;
1858   dits[3] = -34.6; 
1859   dits[4] = 23.49;
1860   dits[5] = 28;
1861   dits[6] = -23.65; 
1862   dits[7] = 23.49;
1863   dits[8] = 28;
1864   dits[9] = -23.65;  
1865   dits[10] = 14.59; 
1866   dits[11] = 28;
1867   dits[12] = 23.65;   
1868   dits[13] = 14.59;
1869   dits[14] = 28;
1870   dits[15] = 23.65;    
1871   dits[16] = 23.49;
1872   dits[17] = 28;
1873   dits[18] = 34.6;  
1874   dits[19] = 23.49;
1875   dits[20] = 28;
1876   gMC->Gsvolu("IT34", "PCON", idtmed[209], dits, 21);  
1877
1878   // block of the SDD electronics and related ladder frame 
1879   I018dits[0] = 3.2;
1880   I018dits[1] = 2;
1881   I018dits[2] = 3.65;
1882   gMC->Gsvolu("I018", "BOX ", idtmed[209], I018dits, 3);  
1883
1884   // block of the SDD end ladder 
1885   I024dits[0] = 3.2;
1886   I024dits[1] = 2;
1887   I024dits[2] = 2.725;
1888   gMC->Gsvolu("I024", "BOX ", idtmed[209], I024dits, 3);  
1889
1890   // ladder frame of layer 3 - F.T. March,7-2001
1891   I047dits[0] = I018dits[0];
1892   I047dits[1] = I018dits[1];
1893   I047dits[2] = 6*I018dits[2] + 2*I024dits[2]; 
1894   gMC->Gsvolu("I047", "BOX ", idtmed[209], I047dits, 3);  
1895
1896   // ladder frame of layer 4 - F.T. March,7-2001
1897   I048dits[0] = I018dits[0];
1898   I048dits[1] = I018dits[1];
1899   I048dits[2] = 8*I018dits[2] + 2*I024dits[2]; 
1900   gMC->Gsvolu("I048", "BOX ", idtmed[209], I048dits, 3);  
1901
1902
1903   // global SDD volume (sensitive + insensitive) 
1904   I302dits[0] = 3.6250;
1905   I302dits[1] = 0.0150;
1906   I302dits[2] = 4.3794;
1907   gMC->Gsvolu("I302", "BOX ", idtmed[278], I302dits, 3);
1908
1909   // Like for I302 - F.T. March,7-2001
1910   I402dits[0] = 3.6250;
1911   I402dits[1] = 0.0150;
1912   I402dits[2] = 4.3794;
1913   gMC->Gsvolu("I402", "BOX ", idtmed[278], I402dits, 3);  
1914
1915   // SDD ladder of layer 3 - F.T. March,7-2001
1916   I004dits[0] = I302dits[0]+0.005;
1917   I004dits[1] = 2*I302dits[1]+Y_SDD_sep/2.;
1918   I004dits[2] = TMath::Abs(Z_SDD_lay3[0]);
1919   if (I004dits[2] < TMath::Abs(Z_SDD_lay3[5])) {
1920     I004dits[2] = TMath::Abs(Z_SDD_lay3[5]);
1921   }
1922   I004dits[2] = I004dits[2] + I302dits[2];
1923   gMC->Gsvolu("I004", "BOX ", idtmed[209], I004dits, 3);  
1924
1925   // SDD ladder of layer 4 - F.T. March,7-2001
1926   I005dits[0] = I402dits[0]+0.005;
1927   I005dits[1] = 2*I402dits[1]+Y_SDD_sep/2.;
1928   I005dits[2] = TMath::Abs(Z_SDD_lay4[0]);
1929   if (I005dits[2] < TMath::Abs(Z_SDD_lay4[7])) {
1930     I005dits[2] = TMath::Abs(Z_SDD_lay4[7]);
1931   }
1932   I005dits[2] = I005dits[2] + I402dits[2];
1933   gMC->Gsvolu("I005", "BOX ", idtmed[209], I005dits, 3);  
1934
1935
1936   // -- block of the SDD ladder foot and end ladder
1937
1938   // ladder foot mother volume
1939   I028dits[0] = 3.0000;
1940   I028dits[1] = 0.4000;
1941   I028dits[2] = 0.9000;
1942   gMC->Gsvolu("I028", "BOX ", idtmed[224], I028dits, 3);  
1943
1944   // positioning-box #1 at SDD end-ladder - F.T. March,7-2001
1945   I420dits[0] = 0.4500;
1946   I420dits[1] = 0.4000;
1947   I420dits[2] = 0.4500;
1948   gMC->Gsvolu("I420", "BOX ", idtmed[264], I420dits, 3);  
1949
1950   // positioning-box #2 at SDD end-ladder - F.T. March,7-2001
1951   I421dits[0] = 0.;
1952   I421dits[1] = 0.25;
1953   I421dits[2] = I420dits[1];
1954   gMC->Gsvolu("I421", "TUBE", idtmed[209], I421dits, 3);  
1955
1956   // reference ruby-sphere at SDD end-ladder - F.T. March,7-2001 
1957   I422dits[0] = 0.0000;
1958   I422dits[1] = 0.2000;
1959   I422dits[2] = 0.0000;
1960   I422dits[3] = 180.00;
1961   I422dits[4] = 0.0000;
1962   I422dits[5] = 360.00;
1963   gMC->Gsvolu("I422", "SPHE", idtmed[277], I422dits, 6);  
1964
1965   // support for ruby-sphere (I422) - F.T. March,7-2001
1966   I423dits[0] = 0.0000;
1967   I423dits[1] = 0.1000;
1968   I423dits[2] = (I420dits[1]-I422dits[1])/2.;
1969   gMC->Gsvolu("I423", "TUBE", idtmed[264], I423dits, 3);  
1970
1971   // passage for HV microcables - F.T. March,7-2001
1972   I424dits[0] = 1.5000;
1973   I424dits[1] = 0.1500;
1974   I424dits[2] = I421dits[2];
1975   gMC->Gsvolu("I424", "BOX ", idtmed[209], I424dits, 3);  
1976
1977   // HV microcables segment at the end ladder - F.T. March,7-2001
1978   I425dits[0] = 1.350000;
1979   I425dits[1] = 0.015250;
1980   I425dits[2] = I024dits[2];
1981   gMC->Gsvolu("I425", "BOX ", idtmed[279], I425dits, 3);  
1982
1983   // lower edge of SDD ladder frame at end-ladder - part 1
1984   dits[0] = 0.2;
1985   dits[1] = 0.1815;
1986   dits[2] = I024dits[2];
1987   dits[3] = 0.015;
1988   gMC->Gsvolu("I025", "TRD1", idtmed[208], dits, 4);  
1989
1990   // lower edge of SDD ladder frame at end-ladder - part 2
1991   dits[0] = 0.183;
1992   dits[1] = 0.165;
1993   dits[2] = I024dits[2];
1994   dits[3] = 0.015;
1995   gMC->Gsvolu("I026", "TRD1", idtmed[208], dits, 4);  
1996
1997   // new: for the 1st top rod of the structure 
1998   // at the end-ladder - F.T. March,7-2001
1999   I029dits[0] = 0.2;
2000   I029dits[1] = 0.1815;
2001   I029dits[2] = 1.0100;
2002   I029dits[3] = 0.015;
2003   gMC->Gsvolu("I029", "TRD1", idtmed[208], I029dits, 4);  
2004
2005   // new: for the 2nd top rod of the structure 
2006   // at the end-ladder - F.T. March,7-2001
2007   I030dits[0] = 0.1830;
2008   I030dits[1] = 0.1650;
2009   I030dits[2] = 1.0100;
2010   I030dits[3] = 0.0150;
2011   gMC->Gsvolu("I030", "TRD1", idtmed[208], I030dits, 4);  
2012
2013   // inox cooling tubes for the end ladder - F.T. March,7-2001
2014   I031dits[0] = 0.093;
2015   I031dits[1] = 0.1;
2016   I031dits[2] = I024dits[2];
2017   gMC->Gsvolu("I031", "TUBE", idtmed[264], I031dits, 3);  
2018
2019   if (fluid == 1) {
2020      // cooling water for the end ladder - F.T. March,7-2001
2021      I032dits[0] = 0;
2022      I032dits[1] = I031dits[0];
2023      I032dits[2] = I024dits[2];
2024      gMC->Gsvolu("I032", "TUBE", idtmed[211], I032dits, 3);  
2025   } else {
2026      // cooling freon for the end ladder - R.B. March,21-2001
2027      I032dits[0] = 0;
2028      I032dits[1] = I031dits[0];
2029      I032dits[2] = I024dits[2];
2030      gMC->Gsvolu("I032", "TUBE", idtmed[212], I032dits, 3);    
2031   }
2032   
2033   // -- block of the SDD ladder frame holding the electronics
2034
2035   // edge of the ladder frame - part 1
2036   dits[0] = 0.2;
2037   dits[1] = 0.182;
2038   dits[2] = 3.65;
2039   dits[3] = 0.015;
2040   gMC->Gsvolu("I019", "TRD1", idtmed[208], dits, 4);  
2041
2042   // edge of the ladder frame - part 2
2043   dits[0] = 0.183;
2044   dits[1] = 0.165;
2045   dits[2] = 3.65;
2046   dits[3] = 0.015;
2047   gMC->Gsvolu("I020", "TRD1", idtmed[208], dits, 4);  
2048
2049   // inclined segments of the ladder frame
2050   dits[0] = 2.23;
2051   dits[1] = 2.1;
2052   dits[2] = 0.05;
2053   dits[3] = 0.03;
2054   gMC->Gsvolu("I021", "TRD1", idtmed[208], dits, 4);  
2055
2056   // horiz.segments of the ladders, normal to ladder edges
2057   dits[0] = 2.1;
2058   dits[1] = 2;
2059   dits[2] = 0.06;
2060   dits[3] = 0.04;
2061   gMC->Gsvolu("I022", "TRD1", idtmed[208], dits, 4);  
2062
2063   // horiz.segments of the ladders, at 45 deg. to ladder edges
2064   dits[0] = 2.615;
2065   dits[1] = 2.465;
2066   dits[2] = 0.06;
2067   dits[3] = 0.04;
2068   gMC->Gsvolu("I023", "TRD1", idtmed[208], dits, 4);  
2069
2070   // supports of the ceramic pins holding the detectors
2071   dits[0] = 0.3;
2072   dits[1] = 0.05;
2073   dits[2] = 0.15;
2074   gMC->Gsvolu("I033", "BOX ", idtmed[208], dits, 3);  
2075
2076   // ceramic pins holding the detectors
2077   dits[0] = 0;
2078   dits[1] = 0.05;
2079   dits[2] = 0.225;
2080   gMC->Gsvolu("I034", "TUBE", idtmed[277], dits, 3);  
2081
2082   // holders of cooling tubes
2083   I035dits[0] = 0.1;
2084   I035dits[1] = 0.15;
2085   I035dits[2] = 0.2;
2086   gMC->Gsvolu("I035", "TUBE", idtmed[208], I035dits, 3);
2087
2088   // top holders of microcables
2089   dits[0] = 0.2;
2090   dits[1] = 0.01;
2091   dits[2] = 0.05;
2092   gMC->Gsvolu("I036", "BOX ", idtmed[208], dits, 3);  
2093
2094   // inox cooling tubes - F.T. March,7-2001
2095   I037dits[0] = 0.093;
2096   I037dits[1] = 0.1;
2097   I037dits[2] = I018dits[2];
2098   gMC->Gsvolu("I037", "TUBE", idtmed[264], I037dits, 3);
2099
2100   if (fluid == 1) {
2101      // cooling water - F.T. March,7-2001
2102      I038dits[0] = 0;
2103      I038dits[1] = I037dits[0];
2104      I038dits[2] = I018dits[2];
2105      gMC->Gsvolu("I038", "TUBE", idtmed[211], I038dits, 3);  
2106   } else {
2107      // cooling freon - R.B. March,21-2001
2108      I038dits[0] = 0;
2109      I038dits[1] = I037dits[0];
2110      I038dits[2] = I018dits[2];
2111      gMC->Gsvolu("I038", "TUBE", idtmed[212], I038dits, 3);    
2112   }
2113   // -- block of the SDD electronics (heat bridge, chips, hybrid, anode microcable)
2114
2115   // SDD heat bridge - F.T. March,7-2001
2116   I039dits[0] = 1.1000;
2117   I039dits[1] = 0.0087;
2118   I039dits[2] = 3.2500;
2119   gMC->Gsvolu("I039", "BOX ", idtmed[268], I039dits, 3);  
2120
2121   // SDD clip part 1
2122   dits[0] = 0.25;
2123   dits[1] = 0.01;
2124   dits[2] = I039dits[2];
2125   gMC->Gsvolu("I040", "BOX ", idtmed[268], dits, 3);  
2126
2127   // SDD clip part 2
2128   I041dits[0] = 0.1;
2129   I041dits[1] = 0.12;
2130   I041dits[2] = I039dits[2];
2131   I041dits[3] = 90;
2132   I041dits[4] = 320;
2133   gMC->Gsvolu("I041", "TUBS", idtmed[268], I041dits, 5);  
2134
2135
2136   // SDD PASCAL - F.T. March,7-2001
2137   I042dits[0] = 0.5000;
2138   I042dits[1] = 0.0175;
2139   I042dits[2] = 0.5000;
2140   gMC->Gsvolu("I042", "BOX ", idtmed[206], I042dits, 3);  
2141
2142   // SDD AMBRA - F.T. March,7-2001
2143   I043dits[0] = 0.3500;
2144   I043dits[1] = 0.0175;
2145   I043dits[2] = 0.5000;
2146   gMC->Gsvolu("I043", "BOX ", idtmed[206], I043dits, 3);  
2147
2148   // SDD capacitors - F.T. March,7-2001
2149   I051dits[0] = 0.1400;
2150   I051dits[1] = 0.0350;
2151   I051dits[2] = 0.0625;
2152   gMC->Gsvolu("I051", "BOX ", idtmed[276], I051dits, 3);  
2153
2154   // SDD hybrid circuit - F.T. March,7-2001
2155   I052dits[0] = 1.725000;
2156   I052dits[1] = 0.003743;
2157   I052dits[2] = I039dits[2];
2158   gMC->Gsvolu("I052", "BOX ", idtmed[281], I052dits, 3);
2159
2160   // SDD anode microcable : changed - F.T. March,7-2001
2161   I044dits[0] = I018dits[2];
2162   I044dits[1] = I039dits[2];
2163   I044dits[2] = 0.00084;
2164   I044dits[3] = (15.189149/(I044dits[0]+I044dits[1]))/2;
2165   gMC->Gsvolu("I044", "TRD1", idtmed[282], I044dits, 4);  
2166   volI044 = ((2*I044dits[0] + 2*I044dits[1]) * 2*I044dits[2])/2 * 2*I044dits[3];
2167
2168   // SDD electronics box - F.T. March,7-2001
2169   I050dits[1] = I039dits[1]+I052dits[1]+I051dits[1]+I044dits[2];
2170   I050dits[0] = I018dits[1]/cos(30.*3.14159/180.)-I050dits[1]*sin(30.*3.14159/180.);
2171   I050dits[2] = I018dits[2];
2172   gMC->Gsvolu("I050", "BOX ", idtmed[209], I050dits, 3);
2173
2174   // SDD sensitive volume
2175   dits[0] = 3.50850;
2176   dits[1] = 0.01499; // not 0.015 because it is included into I302 which is 0.015
2177   dits[2] = 3.76320;
2178   gMC->Gsvolu("ITS3", "BOX ", idtmed[200], dits, 3);  
2179
2180   // Like for ITS3 - F.T. March,7-2001
2181   dits[0] = 3.50850;
2182   dits[1] = 0.01499; // not 0.015 because it is included into I402 which is 0.015
2183   dits[2] = 3.76320;
2184   gMC->Gsvolu("ITS4", "BOX ", idtmed[200], dits, 3);  
2185
2186
2187   // --- Define SSD volumes ------------------------------------------
2188
2189     
2190   dits[0] = 0;
2191   dits[1] = 360;
2192   dits[2] = 6;
2193   dits[3] = -57.45;
2194   dits[4] = 43.6;
2195   dits[5] = 48;  
2196   dits[6] = -49.15; 
2197   dits[7] = 43.6;
2198   dits[8] = 48;  
2199   dits[9] = -49.15;  
2200   dits[10] = 36.9;
2201   dits[11] = 48;  
2202   dits[12] = 50.55;  
2203   dits[13] = 36.9;
2204   dits[14] = 48;  
2205   dits[15] = 50.55;  
2206   dits[16] = 43.6;
2207   dits[17] = 48;  
2208   dits[18] = 57.45;
2209   dits[19] = 43.6;
2210   dits[20] = 48;   
2211   gMC->Gsvolu("IT56", "PCON", idtmed[220], dits, 21);   
2212   
2213   dits[0] =  3.4;
2214   dits[1] = 1.955;
2215   dits[2] = 56.5; 
2216   gMC->Gsvolu("I570", "BOX ", idtmed[204], dits, 3);  
2217   
2218   dits[0] = 3.75;
2219   dits[1] = 0.045;
2220   dits[2] = 50.975;
2221   gMC->Gsvolu("I569", "BOX ", idtmed[204], dits, 3);  
2222   
2223   dits[0] = 3.4;
2224   dits[1] = 1.955;
2225   dits[2] = 47; 
2226   gMC->Gsvolu("I571", "BOX ", idtmed[204], dits, 3);  
2227   
2228   dits[0] = 3.75;
2229   dits[1] = 0.045;
2230   dits[2] = 43.3;  
2231   gMC->Gsvolu("I565", "BOX ", idtmed[204], dits, 3);  
2232   
2233   dits[0] = 3.4;
2234   dits[1] = 1.955;
2235   dits[2] = 3.15;
2236   gMC->Gsvolu("I553", "BOX ", idtmed[204], dits, 3);  
2237   
2238   dits[0] = 3.405;
2239   dits[1] = 1.955;
2240   dits[2] = 1.955;
2241   gMC->Gsvolu("I523", "BOX ", idtmed[204], dits, 3);  
2242   
2243   dits[0] = 3.75;
2244   dits[1] = 0.015;
2245   dits[2] = 2.1;
2246   gMC->Gsvolu("I566", "BOX ", idtmed[206], dits, 3); 
2247   
2248   dits[0] = 3.4;
2249   dits[1] = 1.955;
2250   dits[2] = 3.15;
2251   gMC->Gsvolu("I544", "BOX ", idtmed[204], dits, 3);  
2252   
2253   dits[0] = 3.41;
2254   dits[1] = 1.955;
2255   dits[2] = 1.955;
2256   gMC->Gsvolu("I516", "BOX ", idtmed[204], dits, 3);  
2257   
2258   dits[0] = 3.75;
2259   dits[1] = 0.015;
2260   dits[2] = 2.1;
2261   gMC->Gsvolu("I562", "BOX ", idtmed[206], dits, 3);   
2262   
2263   if (fluid == 1) {
2264      dits[0] = 0;
2265      dits[1] = 0.07;
2266      dits[2] = 3.15;
2267      gMC->Gsvolu("I559", "TUBE", idtmed[211], dits, 3);  // set water as cooling fluid
2268   } else {
2269      dits[0] = 0;
2270      dits[1] = 0.07;
2271      dits[2] = 3.15;
2272      gMC->Gsvolu("I559", "TUBE", idtmed[212], dits, 3);  // set freon as cooling fluid
2273   }
2274   
2275   dits[0] = 0.07;
2276   dits[1] = 0.1;
2277   dits[2] = 3.15;
2278   gMC->Gsvolu("I560", "TUBE", idtmed[210], dits, 3);  
2279   
2280   dits[0] = 0.225;
2281   dits[1] = 0.195;
2282   dits[2] = 3.15;
2283   dits[3] = 0.025;
2284   gMC->Gsvolu("I558", "TRD1", idtmed[203], dits, 4);  
2285   
2286   dits[0] = 0.25;
2287   dits[1] = 0.22;
2288   dits[2] = 3.15;
2289   dits[3] = 0.025;
2290   gMC->Gsvolu("I557", "TRD1", idtmed[203], dits, 4);  
2291   
2292   dits[0] = 2.17;
2293   dits[1] = 0.035;
2294   dits[2] = 0.05;
2295   gMC->Gsvolu("I556", "BOX ", idtmed[203], dits, 3);  
2296   
2297   dits[0] = 2 ;
2298   dits[1] = 0.035;
2299   dits[2] = 0.05;
2300   gMC->Gsvolu("I554", "BOX ", idtmed[203], dits, 3);  
2301   
2302   dits[0] = 2.675;
2303   dits[1] = 0.035;
2304   dits[2] = 0.05;
2305   gMC->Gsvolu("I555", "BOX ", idtmed[203], dits, 3); 
2306   
2307   dits[0] = 0.3;
2308   dits[1] = 0.15;
2309   dits[2] = 0.15;
2310   gMC->Gsvolu("I561", "BOX ", idtmed[203], dits, 3);  
2311   
2312   dits[0] = 0.025;
2313   dits[1] = 0.025;
2314   dits[2] = 0.05;
2315   gMC->Gsvolu("I519", "BOX ", idtmed[214], dits, 3);  
2316   
2317   dits[0] = 0.304;
2318   dits[1] = 0.0275;
2319   dits[2] = 0.432;
2320   gMC->Gsvolu("I521", "BOX ", idtmed[206], dits, 3);   
2321   
2322   dits[0] = 0.16;
2323   dits[1] = 0.08;
2324   dits[2] = 0.08;
2325   gMC->Gsvolu("I520", "BOX ", idtmed[214], dits, 3);  
2326   
2327   dits[0] = 3.4;
2328   dits[1] = 0.015;
2329   dits[2] = 0.525;
2330   gMC->Gsvolu("I518", "BOX ", idtmed[203], dits, 3);  
2331   
2332   dits[0] = 0.15;
2333   dits[1] = 0.105;
2334   dits[2] = 0.29;
2335   dits[3] = 0.08;
2336   gMC->Gsvolu("I522", "TRD1", idtmed[203], dits, 4);  
2337   
2338   dits[0] = 0.07;
2339   dits[1] = 0.1;
2340   dits[2] = 1.955;
2341   gMC->Gsvolu("I542", "TUBE", idtmed[210], dits, 3);  
2342   
2343   if (fluid == 1) {
2344      dits[0] = 0;
2345      dits[1] = 0.07;
2346      dits[2] = 1.955;
2347      gMC->Gsvolu("I541", "TUBE", idtmed[211], dits, 3);  // set water as cooling fluid 
2348   } else {
2349      dits[0] = 0;
2350      dits[1] = 0.07;
2351      dits[2] = 1.955;
2352      gMC->Gsvolu("I541", "TUBE", idtmed[212], dits, 3);  // set freon as cooling fluid
2353   }
2354   
2355   dits[0] = 0.3;
2356   dits[1] = 0.15;
2357   dits[2] = 0.15;
2358   gMC->Gsvolu("I543", "BOX ", idtmed[203], dits, 3);  
2359   
2360   dits[0] = 0.25;
2361   dits[1] = 0.22;
2362   dits[2] = 1.955;
2363   dits[3] = 0.025;
2364   gMC->Gsvolu("I537", "TRD1", idtmed[203], dits, 4); 
2365   
2366   dits[0] = 0.225;
2367   dits[1] = 0.195;
2368   dits[2] = 1.955;
2369   dits[4] = 0.025;
2370   gMC->Gsvolu("I538", "TRD1", idtmed[203], dits, 4);  
2371   
2372   dits[0] = 2.17;
2373   dits[1] = 0.035;
2374   dits[2] = 0.05;
2375   gMC->Gsvolu("I536", "BOX ", idtmed[203], dits, 3);  
2376   
2377   dits[0] = 2.675;
2378   dits[1] = 0.035;
2379   dits[2] = 0.05;
2380   gMC->Gsvolu("I535", "BOX ", idtmed[203], dits, 3);   
2381   
2382   dits[0] = 2;
2383   dits[1] = 0.035;
2384   dits[2] = 0.05;
2385   gMC->Gsvolu("I534", "BOX ", idtmed[203], dits, 3);  
2386   
2387   dits[0] = 0;
2388   dits[1] = 0.05;
2389   dits[2] = 0.17;
2390   gMC->Gsvolu("I540", "TUBE", idtmed[203], dits, 3);  
2391   
2392   dits[0] = 0;
2393   dits[1] = 0.05;
2394   dits[2] = 0.205;
2395   gMC->Gsvolu("I539", "TUBE", idtmed[203], dits, 3);  
2396   
2397   dits[0] = 3.65;
2398   dits[1] = 0.015;
2399   dits[2] = 2;
2400   gMC->Gsvolu("ITS6", "BOX ", idtmed[200], dits, 3);  
2401   
2402   if (fluid == 1) {
2403      dits[0] = 0;
2404      dits[1] = 0.07;
2405      dits[2] = 3.15;
2406      gMC->Gsvolu("I550", "TUBE", idtmed[211], dits, 3);  // set water as cooling fluid
2407   } else {
2408      dits[0] = 0;
2409      dits[1] = 0.07;
2410      dits[2] = 3.15;
2411      gMC->Gsvolu("I550", "TUBE", idtmed[212], dits, 3);  // set freon as cooling fluid
2412   }
2413   
2414   dits[0] = 0.07;
2415   dits[1] = 0.1;
2416   dits[2] = 3.15;
2417   gMC->Gsvolu("I551", "TUBE", idtmed[210], dits, 3);  
2418   
2419   dits[0] = 0.225;
2420   dits[1] = 0.195;
2421   dits[2] = 3.15;
2422   dits[3] = 0.025;
2423   gMC->Gsvolu("I549", "TRD1", idtmed[203], dits, 4); 
2424   
2425   dits[0] = 0.25;
2426   dits[1] = 0.22;
2427   dits[2] = 3.15;
2428   dits[3] = 0.025;
2429   gMC->Gsvolu("I548", "TRD1", idtmed[203], dits, 4);  
2430   
2431   dits[0] = 2.17;
2432   dits[1] = 0.035;
2433   dits[2] = 0.05;
2434   gMC->Gsvolu("I547", "BOX ", idtmed[203], dits, 3);  
2435   
2436   dits[0] = 2;
2437   dits[1] = 0.035;
2438   dits[2] = 0.05;
2439   gMC->Gsvolu("I545", "BOX ", idtmed[203], dits, 3);   
2440   
2441   dits[0] = 2.675;
2442   dits[1] = 0.035;
2443   dits[2] = 0.05;
2444   gMC->Gsvolu("I546", "BOX ", idtmed[203], dits, 3);  
2445   
2446   dits[0] = 0.3;
2447   dits[1] = 0.15;
2448   dits[2] = 0.15;
2449   gMC->Gsvolu("I552", "BOX ", idtmed[203], dits, 3);  
2450   
2451   dits[0] = 0.304;
2452   dits[1] = 0.0275;
2453   dits[2] = 0.4322;
2454   gMC->Gsvolu("I515", "BOX ", idtmed[206], dits, 3);  
2455   
2456   dits[0] = 0.025;
2457   dits[1] = 0.025;
2458   dits[2] = 0.05;
2459   gMC->Gsvolu("I513", "BOX ", idtmed[214], dits, 3);  
2460   
2461   dits[0] = 0.16;
2462   dits[1] = 0.08;
2463   dits[2] = 0.08;
2464   gMC->Gsvolu("I514", "BOX ", idtmed[214], dits, 3);  
2465   
2466   dits[0] = 3.4;
2467   dits[1] = 0.015;
2468   dits[2] = 0.525;
2469   gMC->Gsvolu("I512", "BOX ", idtmed[203], dits, 3);  
2470   
2471   dits[0] = 0.225;
2472   dits[1] = 0.195;
2473   dits[2] = 1.955;
2474   dits[3] = 0.025;
2475   gMC->Gsvolu("I528", "TRD1", idtmed[203], dits, 4); 
2476   
2477   dits[0] = 0.25;
2478   dits[1] = 0.22;
2479   dits[2] = 1.955;
2480   dits[3] = 0.025;
2481   gMC->Gsvolu("I527", "TRD1", idtmed[203], dits, 4);  
2482   
2483   dits[0] = 2.17;
2484   dits[1] = 0.035;
2485   dits[2] = 0.05;
2486   gMC->Gsvolu("I526", "BOX ", idtmed[203], dits, 3);  
2487   
2488   dits[0] = 2.675;
2489   dits[1] = 0.035;
2490   dits[2] = 0.05;
2491   gMC->Gsvolu("I525", "BOX ", idtmed[203], dits, 3);  
2492    
2493   dits[0] = 2;
2494   dits[1] = 0.035;
2495   dits[2] = 0.05;
2496   gMC->Gsvolu("I524", "BOX ", idtmed[203], dits, 3);  
2497    
2498   dits[0] = 0;
2499   dits[1] = 0.05;
2500   dits[2] = 0.205;
2501   gMC->Gsvolu("I529", "TUBE", idtmed[203], dits, 3);  
2502    
2503   dits[0] = 0;
2504   dits[1] = 0.05;
2505   dits[2] = 0.17;
2506   gMC->Gsvolu("I530", "TUBE", idtmed[203], dits, 3);  
2507    
2508   dits[0] = 0.15;
2509   dits[1] = 0.105;
2510   dits[2] = 0.29;
2511   dits[3] = 0.08;
2512   gMC->Gsvolu("I517", "TRD1", idtmed[203], dits, 4);  
2513   
2514   if (fluid == 1) {
2515      dits[0] = 0;
2516      dits[1] = 0.07;
2517      dits[2] = 1.955;
2518      gMC->Gsvolu("I531", "TUBE", idtmed[211], dits, 3);  // set water as cooling fluid
2519   } else {
2520      dits[0] = 0;
2521      dits[1] = 0.07;
2522      dits[2] = 1.955;
2523      gMC->Gsvolu("I531", "TUBE", idtmed[212], dits, 3);  // set freon as cooling fluid
2524   }
2525      
2526   dits[0] = 0.07;
2527   dits[1] = 0.1;
2528   dits[2] = 1.955;
2529   gMC->Gsvolu("I532", "TUBE", idtmed[210], dits, 3);  
2530  
2531   dits[0] = 0.3;
2532   dits[1] = 0.15;
2533   dits[2] = 0.15;
2534   gMC->Gsvolu("I533", "BOX ", idtmed[203], dits, 3);  
2535   
2536   dits[0] = 3.65;
2537   dits[1] = 0.015;
2538   dits[2] = 2;
2539   gMC->Gsvolu("ITS5", "BOX ", idtmed[200], dits, 3);  
2540
2541
2542
2543   // --- Define volumes of shield of SPD ----------------
2544
2545
2546   dits[0] = 8.37;
2547   dits[1] = 9.93;
2548   dits[2] = 25;
2549   gMC->Gsvolu("IC01", "TUBE", idtmed[289], dits, 3);   
2550
2551   dits[0] = 8.3;
2552   dits[1] = 9.995;
2553   dits[2] = 17.5/2.;
2554   gMC->Gsvolu("IC02", "TUBE", idtmed[289], dits, 3);    
2555   
2556  
2557   // --- Define volume of first cylinder between SPD and SDD --------------
2558   
2559   dits[0] = (21.-0.128)/2.;      
2560   dits[1] = 21./2.;
2561   dits[2] = 39.4;      
2562   gMC->Gsvolu("ICY1", "TUBE", idtmed[208], dits, 3);
2563          
2564   // --- Define volume of second cylinder between SDD and SSD --------------
2565
2566   dits[0] = (59.5-0.128)/2.;      
2567   dits[1] = 59.5/2.;
2568   dits[2] = 56.2;      // was 57
2569   gMC->Gsvolu("ICY2", "TUBE", idtmed[208], dits, 3);
2570
2571   // --- Define volumes of SDD cone ---------------------------------- 
2572
2573   dits[0] = 0;
2574   dits[1] = 360;
2575   dits[2] = 12;
2576   dits[3] = -59.7;
2577   dits[4] = 27;
2578   dits[5] = 28.6;
2579   dits[6] = -42.7;
2580   dits[7] = 10;
2581   dits[8] = 28.6;
2582   dits[9] = -34.65;
2583   dits[10] = 10;
2584   dits[11] = 28.6;
2585   dits[12] = -34.65;
2586   dits[13] = 10;
2587   dits[14] = 23.495;
2588   dits[15] = -23.7;
2589   dits[16] = 10;
2590   dits[17] = 23.495;
2591   dits[18] = -23.7;
2592   dits[19] = 10;
2593   dits[20] = 14.595;
2594   dits[21] = 23.7;
2595   dits[22] = 10;
2596   dits[23] = 14.595;
2597   dits[24] = 23.7;
2598   dits[25] = 10;
2599   dits[26] = 23.495;
2600   dits[27] = 34.65;
2601   dits[28] = 10;
2602   dits[29] = 23.495;
2603   dits[30] = 34.65;
2604   dits[31] = 10;
2605   dits[32] = 28.6;
2606   dits[33] = 42.7;
2607   dits[34] = 10;
2608   dits[35] = 28.6;
2609   dits[36] = 59.7;
2610   dits[37] = 27.2637;
2611   dits[38] = 28.6;             
2612   gMC->Gsvolu("IS02", "PCON", idtmed[204], dits, 39);
2613   
2614   dits[0] = 0;
2615   dits[1] = 360;
2616   dits[2] = 6;
2617   dits[3] = 38.65;
2618   dits[4] = 10.75;    
2619   dits[5] = 12.25;      
2620   dits[6] = 40.15;
2621   dits[7] = 10.75;
2622   dits[8] = 13.96;   
2623   dits[9] = 40.15;
2624   dits[10] = 12.46;  
2625   dits[11] = 13.96;
2626   dits[12] = 55.75;
2627   dits[13] = 27;
2628   dits[14] = 28.5;
2629   dits[15] = 55.75;
2630   dits[16] = 27;
2631   dits[17] = 28.5;
2632   dits[18] = 57.25;
2633   dits[19] = 27;
2634   dits[20] = 28.5;       
2635   gMC->Gsvolu("I093", "PCON", idtmed[272], dits, 21);  // SDD cone
2636
2637   dits[0] = 0;
2638   dits[1] = 50;
2639   dits[2] = 3;
2640   dits[3] = 39;  
2641   dits[4] = 14;
2642   dits[5] = 18.75;
2643   dits[6] = 46.7-3;
2644   dits[7] = 14;
2645   dits[8] = 18.75;
2646   dits[9] = 51.45-3;
2647   dits[10] = 18.75;
2648   dits[11] = 18.75;
2649   gMC->Gsvolu("I099", "PCON", idtmed[204], dits, 12); // SDD 3 cone hole
2650
2651   dits[0] = 0;
2652   dits[1] = 25;
2653   dits[2] = 3;
2654   dits[3] = 49;
2655   dits[4] = 23.4;
2656   dits[5] = 26.4;
2657   dits[6] = 56.1-3;
2658   dits[7] = 23.4;
2659   dits[8] = 26.4;
2660   dits[9] = 59.1-3;
2661   dits[10] = 26.4;
2662   dits[11] = 26.4;
2663   gMC->Gsvolu("I200", "PCON", idtmed[204], dits, 12); // SDD 4 cone hole
2664
2665   dits[0] = 10.0;
2666   dits[1] = 10.5;
2667   dits[2] = 0.25;
2668   gMC->Gsvolu("I090", "TUBE", idtmed[224], dits, 3);  // SDD cylinder flange
2669
2670   dits[0] = 21.95;
2671   dits[1] = 22.95;    
2672   dits[2] = 1;
2673   gMC->Gsvolu("I098", "TUBE", idtmed[283], dits, 3);    // ladder support on layer 4
2674
2675   dits[0] = 13.1;    
2676   dits[1] = 14.1;    
2677   dits[2] = 1;
2678   gMC->Gsvolu("I097", "TUBE", idtmed[283], dits, 3);    // ladder support on layer 3
2679
2680   dits[0] = 1;
2681   dits[1] = 1;
2682   dits[2] = 7.74;
2683   gMC->Gsvolu("I202", "BOX ", idtmed[272], dits, 3);
2684
2685   dits[0] = 1;
2686   dits[1] = 1;
2687   dits[2] = 9.14;
2688   gMC->Gsvolu("I203", "BOX ", idtmed[272], dits, 3);
2689
2690   dits[0] = 21.95;
2691   dits[1] = 22.95;
2692   dits[2] = 1;
2693   gMC->Gsvolu("I095", "TUBE", idtmed[224], dits, 3);
2694
2695   dits[0] = 3;
2696   dits[1] = 2.7;
2697   dits[2] = 1;
2698   dits[3] = 0.63;
2699   gMC->Gsvolu("I096", "TRD1", idtmed[264], dits, 4);
2700
2701   dits[0] = 13.1;
2702   dits[1] = 14.1;
2703   dits[2] = 1;
2704   gMC->Gsvolu("I094", "TUBE", idtmed[224], dits, 3);
2705   
2706   
2707   // --- Define volumes of SSD cone ----------------------------------    
2708             
2709
2710   dits[0] = 0;
2711   dits[1] = 360;
2712   dits[2] = 12;
2713   dits[3] = -zmax;
2714   dits[4] = 46;         
2715   dits[5] = 49.25;       
2716   dits[6] = -61.2;
2717   dits[7] = 28.7;
2718   dits[8] = 49.25;       
2719   dits[9] = -57.5;
2720   dits[10] = 28.7;
2721   dits[11] = 49.25;      
2722   dits[12] = -57.5;
2723   dits[13] = 28.7;
2724   dits[14] = 43.5;
2725   dits[15] = -49.2;
2726   dits[16] = 28.7;
2727   dits[17] = 43.5;
2728   dits[18] = -49.2;
2729   dits[19] = 28.7;
2730   dits[20] = 36.85;
2731   dits[21] = 50.6;
2732   dits[22] = 28.7;
2733   dits[23] = 36.85;
2734   dits[24] = 50.6;
2735   dits[25] = 28.7;
2736   dits[26] = 43.5;
2737   dits[27] = 57.5;
2738   dits[28] = 28.7;
2739   dits[29] = 43.5;
2740   dits[30] = 57.5;
2741   dits[31] = 28.7;
2742   dits[32] = 49.25;      
2743   dits[33] = 61.2;
2744   dits[34] = 28.7;
2745   dits[35] = 49.25;      
2746   dits[36] = zmax;
2747   dits[37] = 46;      
2748   dits[38] = 49.25;      
2749   gMC->Gsvolu("IS01", "PCON", idtmed[204], dits, 39);   // SSD cone mother volume
2750   
2751   dits[0] = 0;
2752   dits[1] = 360;
2753   dits[2] = 6;
2754   dits[3] = -zmax;  
2755   dits[4] = 47.75;  
2756   dits[5] = 49.25;  
2757   dits[6] = -zmax+2.;  
2758   dits[7] = 47.75;  
2759   dits[8] = 49.25;   
2760   dits[9] = -71.2819;
2761   dits[10] = 46.75;   
2762   dits[11] = 49.0319;
2763   dits[12] = -57.25;   // was 58.5 
2764   dits[13] = 32.9681;
2765   dits[14] = 34.75;
2766   dits[15] = -57.25;   // was 58.5   
2767   dits[16] = 30;
2768   dits[17] = 34.75;
2769   dits[18] = -55.75;   // was 57 
2770   dits[19] = 30;     
2771   dits[20] = 32.25;    // was 31.5 
2772   gMC->Gsvolu("I212", "PCON", idtmed[272], dits, 21);  // SSD cone
2773   
2774   dits[0] = 28.75;          
2775   dits[1] = 29.75;   
2776   dits[2] = 0.5;
2777   gMC->Gsvolu("I211", "TUBE", idtmed[224], dits, 3);   // SSD cylinder flange
2778   
2779   dits[0] = 35.8;   
2780   dits[1] = 36.8;   
2781   dits[2] = 1;
2782   gMC->Gsvolu("I217", "TUBE", idtmed[283], dits, 3);   // ladder support on layer 5 
2783   
2784   dits[0] = 41.4;  
2785   dits[1] = 42.4;  
2786   dits[2] = 1;
2787   gMC->Gsvolu("I219", "TUBE", idtmed[283], dits, 3);   // ladder support on layer 6
2788         
2789   dits[0] = 42.05+5.;       
2790   dits[1] = 42.55+5.;     
2791   dits[2] = 1.25;
2792   gMC->Gsvolu("I214", "TUBE", idtmed[224], dits, 3);   // layer 6 electronic support
2793                                                        // this will change after PPR
2794   dits[0] = 37.05+5.;   
2795   dits[1] = 37.55+5.;   
2796   dits[2] = 1.25;
2797   gMC->Gsvolu("I213", "TUBE", idtmed[224], dits, 3);   // layer 5 electronic support
2798                                                        // this will change after PPR
2799   dits[0] = 0;
2800   dits[1] = 25;
2801   dits[2] = 5;
2802   dits[3] = -zmax+3;
2803   dits[4] = 45.5;
2804   dits[5] = 45.5;
2805   dits[6] = -69.7+3;
2806   dits[7] = 37;
2807   dits[8] = 45.5;
2808   dits[9] = -68.5+3;
2809   dits[10] = 37;
2810   dits[11] = 45.5;
2811   dits[12] = -68.5+4.8;  
2812   dits[13] = 37;
2813   dits[14] = 45.5; 
2814   dits[15] = -63.5+4.8;
2815   dits[16] = 37;
2816   dits[17] = 45.5;   
2817   gMC->Gsvolu("I215", "PCON", idtmed[204], dits, 18);  // SSD cone hole 
2818  
2819   dits[0] = 0;
2820   dits[1] = 3.2;
2821   dits[2] = 9;
2822   dits[3] = -14;
2823   dits[4] = 30.5;
2824   dits[5] = 33.5;
2825   dits[6] = -9.85;
2826   dits[7] = 30.5;
2827   dits[8] = 33.5;
2828   dits[9] = -9.85;
2829   dits[10] = 30.5;
2830   dits[11] = 43.45;
2831   dits[12] = -7.85;
2832   dits[13] = 30.5;
2833   dits[14] = 43.45;
2834   dits[15] = -7.85;
2835   dits[16] = 30.5;
2836   dits[17] = 36.5;
2837   dits[18] = -7;
2838   dits[19] = 30.5;
2839   dits[20] = 36.5;
2840   dits[21] = -4;
2841   dits[22] = 33.0173;
2842   dits[23] = 36.5;
2843   dits[24] = -4;
2844   dits[25] = 33.0173;
2845   dits[26] = 36.80;
2846   dits[27] = -2;
2847   dits[28] = 34.6955;
2848   dits[29] = 36.80;
2849   gMC->Gsvolu("I216", "PCON", idtmed[272], dits, 30); // supports (1-6) of the ladders
2850        
2851        
2852   // --- Place SPD (option 'a') volumes into their mother volume IT12
2853   
2854   // SPD - option 'a' 
2855   // (this is NOT the default)
2856
2857   if (option == 1) {
2858
2859      gMC->Gspos("I12A",5,"IT12",0.0,0.0,0.0,idrotm[238],"MANY");
2860      gMC->Gspos("I12A",6,"IT12",0.0,0.0,0.0,idrotm[236],"MANY");
2861      gMC->Gspos("I12A",7,"IT12",0.0,0.0,0.0,idrotm[239],"MANY");
2862      gMC->Gspos("I12A",8,"IT12",0.0,0.0,0.0,idrotm[233],"MANY");
2863      gMC->Gspos("I12A",9,"IT12",0.0,0.0,0.0,idrotm[240],"MANY");
2864      gMC->Gspos("I12A",10,"IT12",0.0,0.0,0.0,idrotm[241],"MANY");
2865      gMC->Gspos("I12A",2,"IT12",0.0,0.0,0.0,idrotm[242],"MANY");
2866      gMC->Gspos("I12A",3,"IT12",0.0,0.0,0.0,idrotm[234],"MANY");
2867      gMC->Gspos("I12A",4,"IT12",0.0,0.0,0.0,idrotm[243],"MANY");
2868      gMC->Gspos("I12A",1,"IT12",0.0,0.0,0.0,0,"MANY");
2869      deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(270.*TMath::Pi()/180.);  // see definition of idrotm[244]
2870           deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(270.*TMath::Pi()/180.);  // see definition of idrotm[244]
2871      gMC->Gspos("I10A",2,"I12A",0.203+deltax,3.8206+deltay,0.0,idrotm[244],"ONLY");       
2872      deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(252.*TMath::Pi()/180.);  // see definition of idrotm[245]
2873           deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(252.*TMath::Pi()/180.);  // see definition of idrotm[245]  
2874      gMC->Gspos("I10A",1,"I12A",1.4531+deltax,3.8152+deltay,0.0,idrotm[245],"ONLY");
2875      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(40.*TMath::Pi()/180.);  // see definition of idrotm[246]
2876           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(40.*TMath::Pi()/180.);  // see definition of idrotm[246]  
2877      gMC->Gspos("I20A",1,"I12A",3.0174+deltax,6.5143+deltay,0.0,idrotm[246],"ONLY");
2878      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(49.*TMath::Pi()/180.);  // see definition of idrotm[247]
2879           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(49.*TMath::Pi()/180.);  // see definition of idrotm[247] 
2880      gMC->Gspos("I20A",2,"I12A",1.9612+deltax,6.9062+deltay,0.0,idrotm[247],"ONLY");
2881      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(58.*TMath::Pi()/180.);  // see definition of idrotm[248]
2882           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(58.*TMath::Pi()/180.);  // see definition of idrotm[248] 
2883      gMC->Gspos("I20A",3,"I12A",0.8567+deltax,7.1279+deltay,0.0,idrotm[248],"ONLY");
2884      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(67.*TMath::Pi()/180.);  // see definition of idrotm[249]
2885           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(67.*TMath::Pi()/180.);  // see definition of idrotm[249] 
2886      gMC->Gspos("I20A",4,"I12A",-0.2689+deltax,7.1742+deltay,0.0,idrotm[249],"ONLY");
2887      gMC->Gspos("I123",2,"I12A",-0.2978,5.5196,0.0,idrotm[214],"ONLY");
2888      gMC->Gspos("I121",2,"I12A",-0.2385,4.1518,0.0,idrotm[213],"ONLY");
2889      gMC->Gspos("I122",2,"I12A",-0.2968,4.0207,0.0,idrotm[212],"ONLY");
2890      gMC->Gspos("I120",2,"I12A",-0.3672,3.9056,0.0,0,"ONLY");
2891      gMC->Gspos("I144",1,"I12A",-0.2538,3.8556,0.0,0,"ONLY");
2892      gMC->Gspos("I113",3,"I12A",0.1095,3.9056,0.0,0,"ONLY");
2893      gMC->Gspos("I143",1,"I12A",0.4365,3.8556,0.0,idrotm[236],"ONLY");
2894      gMC->Gspos("I142",1,"I12A",0.5136,3.9056,0.0,idrotm[235],"ONLY");
2895      gMC->Gspos("I141",1,"I12A",0.5636,3.9752,0.0,idrotm[201],"ONLY");
2896      gMC->Gspos("I140",1,"I12A",0.6336,4.0447,0.0,idrotm[234],"ONLY");
2897      gMC->Gspos("I139",1,"I12A",0.8297,4.0545,0.0,idrotm[207],"ONLY");
2898      gMC->Gspos("I113",5,"I12A",1.2575,3.9681,0.0,idrotm[207],"ONLY");
2899      gMC->Gspos("I138",1,"I12A",1.66,3.7848,0.0,idrotm[207],"ONLY");
2900      gMC->Gspos("I137",1,"I12A",1.8556,3.7738,0.0,idrotm[233],"ONLY");
2901      gMC->Gspos("I136",1,"I12A",2.6224,4.874,0.0,idrotm[232],"ONLY");
2902      gMC->Gspos("I135",1,"I12A",3.2967,6.0337,0.0,idrotm[231],"ONLY");
2903      gMC->Gspos("I134",1,"I12A",3.266,6.1636,0.0,idrotm[230],"ONLY");
2904      gMC->Gspos("I113",1,"I12A",2.9903,6.4144,0.0,idrotm[211],"ONLY");
2905      gMC->Gspos("I133",3,"I12A",2.7631,6.7627,0.0,idrotm[230],"ONLY");
2906      gMC->Gspos("I132",3,"I12A",2.62,6.8555,0.0,idrotm[229],"ONLY");
2907      gMC->Gspos("I131",3,"I12A",2.648,6.6023,0.0,idrotm[228],"ONLY");
2908      gMC->Gspos("I130",3,"I12A",2.6569,6.3431,0.0,idrotm[227],"ONLY");
2909      gMC->Gspos("I129",3,"I12A",2.3906,6.4819,0.0,idrotm[226],"ONLY");
2910      gMC->Gspos("I113",2,"I12A",1.9488,6.7998,0.0,idrotm[210],"ONLY");
2911      gMC->Gspos("I133",2,"I12A",1.6699,7.1085,0.0,idrotm[226],"ONLY");
2912      gMC->Gspos("I132",2,"I12A",1.5142,7.1777,0.0,idrotm[225],"ONLY");
2913      gMC->Gspos("I131",2,"I12A",1.5814,6.932,0.0,idrotm[224],"ONLY");
2914      gMC->Gspos("I130",2,"I12A",1.6308,6.6774,0.0,idrotm[223],"ONLY");
2915      gMC->Gspos("I129",2,"I12A",1.346,6.7728,0.0,idrotm[222],"ONLY");
2916      gMC->Gspos("I113",6,"I12A",0.8599,7.0176,0.0,idrotm[209],"ONLY");
2917      gMC->Gspos("I133",1,"I12A",0.5362,7.2789,0.0,idrotm[222],"ONLY");
2918      gMC->Gspos("I132",1,"I12A",0.3715,7.3228,0.0,idrotm[221],"ONLY");
2919      gMC->Gspos("I131",1,"I12A",0.4763,7.0907,0.0,idrotm[220],"ONLY");
2920      gMC->Gspos("I130",1,"I12A",0.5649,6.8469,0.0,idrotm[219],"ONLY");
2921      gMC->Gspos("I129",1,"I12A",0.2688,6.8966,0.0,idrotm[218],"ONLY");
2922      gMC->Gspos("I113",4,"I12A",-0.2497,7.0624,0.0,idrotm[208],"ONLY");
2923      gMC->Gspos("I128",1,"I12A",-0.6103,7.2698,0.0,idrotm[218],"ONLY");
2924      gMC->Gspos("I126",2,"I12A",-0.7799,7.2874,0.0,idrotm[217],"ONLY");
2925      gMC->Gspos("I125",2,"I12A",-0.6315,7.0883,0.0,idrotm[216],"ONLY");
2926      gMC->Gspos("I124",2,"I12A",-0.4965,6.8742,0.0,idrotm[215],"ONLY");
2927      gMC->Gspos("I103",3,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],-3.536,idrotm[237],"ONLY");
2928      gMC->Gspos("I103",4,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],-10.708,idrotm[237],"ONLY");
2929      gMC->Gspos("I103",1,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],10.708,0,"ONLY");
2930      gMC->Gspos("I103",2,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],3.536,0,"ONLY");
2931      gMC->Gspos("I105",1,"I10A",-0.05,0.01,-16.844,idrotm[237],"ONLY");
2932      gMC->Gspos("I105",2,"I10A",-0.05,0.01,16.844,0,"ONLY");
2933      gMC->Gspos("I104",1,"I10A",0.0,-di10a[1]+di104[1],0.0,0,"ONLY");
2934      gMC->Gspos("I1D3",3,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],-3.536,idrotm[237],"ONLY");
2935      gMC->Gspos("I1D3",4,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],-10.708,idrotm[237],"ONLY");
2936      gMC->Gspos("I1D3",1,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],10.708,0,"ONLY");
2937      gMC->Gspos("I1D3",2,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],3.536,0,"ONLY");
2938      gMC->Gspos("I105",3,"I20A",-0.05,0.01,-16.844,idrotm[237],"ONLY");
2939      gMC->Gspos("I105",4,"I20A",-0.05,0.01,16.844,0,"ONLY");
2940      gMC->Gspos("I104",2,"I20A",0.0,-di20a[1]+di104[1],0.0,0,"ONLY");
2941      gMC->Gspos("I112",2,"I113",0.25,0.02,0.0,idrotm[206],"ONLY");
2942      gMC->Gspos("I111",2,"I113",0.1318,-0.0008,0.0,idrotm[205],"ONLY");
2943      gMC->Gspos("I118",1,"I113",0.0,-0.0454,0.0,0,"ONLY");
2944      gMC->Gspos("I110",1,"I113",0.0,0.0492,0.0,0,"ONLY");
2945      gMC->Gspos("I114",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
2946      gMC->Gspos("I115",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
2947      gMC->Gspos("I115",2,"I113",-0.063,0.0042,0.0,idrotm[201],"ONLY");
2948      gMC->Gspos("I114",2,"I113",-0.063,0.0042,0.0,idrotm[201],"ONLY");
2949      gMC->Gspos("I116",1,"I113",0.0,0.0042,0.0,0,"ONLY");
2950      gMC->Gspos("I111",1,"I113",-0.1318,-0.0008,0.0,idrotm[204],"ONLY");
2951      gMC->Gspos("I112",1,"I113",-0.25,0.02,0.0,idrotm[203],"ONLY");
2952      gMC->Gspos("I101",1,"I103",-0.088,ddet1,0.0,0,"ONLY");
2953      gMC->Gspos("I102",1,"I103",0.0,-dchip1,-2.8,0,"ONLY");
2954      gMC->Gspos("I102",2,"I103",0.0,-dchip1,-1.4,0,"ONLY");
2955      gMC->Gspos("I102",3,"I103",0.0,-dchip1,0.0,0,"ONLY");
2956      gMC->Gspos("I102",4,"I103",0.0,-dchip1,1.4,0,"ONLY");
2957      gMC->Gspos("I102",5,"I103",0.0,-dchip1,2.8,0,"ONLY");
2958      gMC->Gspos("I1D1",1,"I1D3",-0.088,ddet2,0.0,0,"ONLY");
2959      gMC->Gspos("I1D2",1,"I1D3",0.0,-dchip2,-2.8,0,"ONLY");
2960      gMC->Gspos("I1D2",2,"I1D3",0.0,-dchip2,-1.4,0,"ONLY");
2961      gMC->Gspos("I1D2",3,"I1D3",0.0,-dchip2,0.0,0,"ONLY");
2962      gMC->Gspos("I1D2",4,"I1D3",0.0,-dchip2,1.4,0,"ONLY");
2963      gMC->Gspos("I1D2",5,"I1D3",0.0,-dchip2,2.8,0,"ONLY");
2964      gMC->Gspos("I117",1,"I116",0.0,0.0,0.0,0,"ONLY");
2965      gMC->Gspos("ITS1",1,"I101",0.0,0.0,0.0,0,"ONLY");
2966      gMC->Gspos("ITS2",1,"I1D1",0.0,0.0,0.0,0,"ONLY");
2967      gMC->Gspos("I650",16,"IT12",0.0,0.0,22.0,idrotm[1104],"MANY");
2968      gMC->Gspos("I650",20,"IT12",0.0,0.0,22.0,idrotm[1130],"MANY");
2969      gMC->Gspos("I650",18,"IT12",0.0,0.0,22.0,idrotm[1117],"MANY");
2970      gMC->Gspos("I650",1,"IT12",0.0,0.0,22.0,0,"MANY");
2971      gMC->Gspos("I650",4,"IT12",0.0,0.0,22.0,idrotm[1106],"MANY");
2972      gMC->Gspos("I650",6,"IT12",0.0,0.0,22.0,idrotm[1039],"MANY");
2973      gMC->Gspos("I650",8,"IT12",0.0,0.0,22.0,idrotm[1107],"MANY");
2974      gMC->Gspos("I650",10,"IT12",0.0,0.0,22.0,idrotm[1065],"MANY");
2975      gMC->Gspos("I650",12,"IT12",0.0,0.0,22.0,idrotm[1078],"MANY");
2976      gMC->Gspos("I650",14,"IT12",0.0,0.0,22.0,idrotm[1091],"MANY");
2977      gMC->Gspos("I650",19,"IT12",0.0,0.0,-22.0,idrotm[1108],"MANY");
2978      gMC->Gspos("I650",2,"IT12",0.0,0.0,-22.0,idrotm[1109],"MANY");
2979      gMC->Gspos("I650",3,"IT12",0.0,0.0,-22.0,idrotm[1110],"MANY");
2980      gMC->Gspos("I650",5,"IT12",0.0,0.0,-22.0,idrotm[1111],"MANY");
2981      gMC->Gspos("I650",7,"IT12",0.0,0.0,-22.0,idrotm[1112],"MANY");
2982      gMC->Gspos("I650",9,"IT12",0.0,0.0,-22.0,idrotm[1113],"MANY");
2983      gMC->Gspos("I650",11,"IT12",0.0,0.0,-22.0,idrotm[1114],"MANY");
2984      gMC->Gspos("I650",13,"IT12",0.0,0.0,-22.0,idrotm[1115],"MANY");
2985      gMC->Gspos("I650",15,"IT12",0.0,0.0,-22.0,idrotm[1116],"MANY");
2986      gMC->Gspos("I650",17,"IT12",0.0,0.0,-22.0,idrotm[1118],"MANY");
2987      gMC->Gspos("I666",1,"I650",0.0,0.0,0.25,idrotm[1003],"MANY");
2988      gMC->Gspos("I667",1,"I650",0.1102,0.9945,0.45,idrotm[1088],"ONLY");
2989      gMC->Gspos("I669",3,"I650",0.1883,4.0372,-3.2,0,"ONLY");
2990      gMC->Gspos("I671",3,"I650",0.1883,4.0372,0.6,0,"ONLY");
2991      gMC->Gspos("I669",2,"I650",1.3343,4.0609,-3.2,0,"ONLY");
2992      gMC->Gspos("I671",2,"I650",1.3343,4.0609,0.6,0,"ONLY");
2993      gMC->Gspos("I669",6,"I650",2.9567,6.1959,-3.2,idrotm[1089],"ONLY");
2994      gMC->Gspos("I671",6,"I650",2.9567,6.1959,0.6,idrotm[1089],"ONLY");
2995      gMC->Gspos("I669",5,"I650",1.9511,6.5822,-3.2,idrotm[1011],"ONLY");
2996      gMC->Gspos("I671",5,"I650",1.9511,6.5822,0.6,idrotm[1011],"ONLY");
2997      gMC->Gspos("I669",4,"I650",0.8974,6.8064,-3.2,idrotm[1090],"ONLY");
2998      gMC->Gspos("I671",4,"I650",0.8974,6.8064,0.6,idrotm[1090],"ONLY");
2999      gMC->Gspos("I669",1,"I650",-0.1784,6.863,-3.2,0,"ONLY");
3000      gMC->Gspos("I671",1,"I650",-0.1784,6.863,0.6,0,"ONLY");
3001      gMC->Gspos("I673",1,"I650",0.2173,4.8037,1.8,0,"ONLY");
3002      gMC->Gspos("I673",6,"I650",1.5093,4.5605,1.8,0,"ONLY");
3003      gMC->Gspos("I673",4,"I650",-0.173,6.2531,1.8,idrotm[1092],"ONLY");
3004      gMC->Gspos("I673",3,"I650",0.8073,6.2032,1.8,idrotm[1093],"ONLY");
3005      gMC->Gspos("I673",2,"I650",1.7678,6.0005,1.8,idrotm[1094],"ONLY");
3006      gMC->Gspos("I673",5,"I650",2.6847,5.6501,1.8,0,"ONLY");
3007      gMC->Gspos("I676",2,"I650",1.7618,5.2269,2.5,0,"ONLY");
3008      gMC->Gspos("I676",1,"I650",0.4018,5.5869,2.5,0,"ONLY");
3009      gMC->Gspos("I668",1,"I667",0.0,0.0,0.0,0,"ONLY");
3010      gMC->Gspos("I670",1,"I669",0.0,0.0,0.0,0,"ONLY");
3011      gMC->Gspos("I672",1,"I671",0.0,0.0,0.0,0,"ONLY");
3012      gMC->Gspos("I674",1,"I673",0.0,0.0,0.0,0,"MANY");
3013      gMC->Gspos("I675",1,"I673",0.0,0.0,-0.5,0,"ONLY");
3014      gMC->Gspos("I677",1,"I676",0.0,0.0,0.0,0,"MANY");
3015      gMC->Gspos("I678",1,"I676",0.0,0.0,-0.95,0,"ONLY");    
3016
3017   }
3018
3019
3020   // --- Place SPD (option 'b') volumes into their mother volume IT12
3021   
3022   // SPD - option 'b' 
3023   // (this is the default)
3024
3025   if (option == 2) {
3026
3027      gMC->Gspos("I12B",1,"IT12",0.0,0.0,0.0,0,"MANY");
3028      gMC->Gspos("I12B",8,"IT12",0.0,0.0,0.0,idrotm[233],"MANY");
3029      gMC->Gspos("I12B",7,"IT12",0.0,0.0,0.0,idrotm[244],"MANY");
3030      gMC->Gspos("I12B",6,"IT12",0.0,0.0,0.0,idrotm[236],"MANY");
3031      gMC->Gspos("I12B",2,"IT12",0.0,0.0,0.0,idrotm[245],"MANY");
3032      gMC->Gspos("I12B",3,"IT12",0.0,0.0,0.0,idrotm[234],"MANY");
3033      gMC->Gspos("I12B",4,"IT12",0.0,0.0,0.0,idrotm[246],"MANY");
3034      gMC->Gspos("I12B",5,"IT12",0.0,0.0,0.0,idrotm[247],"MANY");
3035      gMC->Gspos("I12B",9,"IT12",0.0,0.0,0.0,idrotm[248],"MANY");
3036      gMC->Gspos("I12B",10,"IT12",0.0,0.0,0.0,idrotm[249],"MANY");
3037      deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(270.*TMath::Pi()/180.);  // see definition of idrotm[238]
3038           deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(270.*TMath::Pi()/180.);  // see definition of idrotm[238]
3039      gMC->Gspos("I10B",2,"I12B",0.203+deltax,3.8206+deltay,0.0,idrotm[238],"ONLY");       
3040      deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(252.*TMath::Pi()/180.);  // see definition of idrotm[239]
3041           deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(252.*TMath::Pi()/180.);  // see definition of idrotm[239]  
3042      gMC->Gspos("I10B",1,"I12B",1.4531+deltax,3.8152+deltay,0.0,idrotm[239],"ONLY");
3043      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(40.*TMath::Pi()/180.);  // see definition of idrotm[240]
3044           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(40.*TMath::Pi()/180.);  // see definition of idrotm[240]  
3045      gMC->Gspos("I20B",1,"I12B",3.0174+deltax,6.5143+deltay,0.0,idrotm[240],"ONLY");
3046      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(49.*TMath::Pi()/180.);  // see definition of idrotm[241]
3047           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(49.*TMath::Pi()/180.);  // see definition of idrotm[241] 
3048      gMC->Gspos("I20B",2,"I12B",1.9612+deltax,6.9062+deltay,0.0,idrotm[241],"ONLY");
3049      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(58.*TMath::Pi()/180.);  // see definition of idrotm[242]
3050           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(58.*TMath::Pi()/180.);  // see definition of idrotm[242] 
3051      gMC->Gspos("I20B",3,"I12B",0.8567+deltax,7.1279+deltay,0.0,idrotm[242],"ONLY");
3052      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(67.*TMath::Pi()/180.);  // see definition of idrotm[243]
3053           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(67.*TMath::Pi()/180.);  // see definition of idrotm[243] 
3054      gMC->Gspos("I20B",4,"I12B",-0.2689+deltax,7.1742+deltay,0.0,idrotm[243],"ONLY");
3055      gMC->Gspos("I123",1,"I12B",-0.2978,5.5196,0.0,idrotm[214],"ONLY");
3056      gMC->Gspos("I121",1,"I12B",-0.2385,4.1518,0.0,idrotm[213],"ONLY");
3057      gMC->Gspos("I122",1,"I12B",-0.2968,4.0207,0.0,idrotm[212],"ONLY");
3058      gMC->Gspos("I120",1,"I12B",-0.3672,3.9056,0.0,0,"ONLY");
3059      gMC->Gspos("I144",1,"I12B",-0.2538,3.8556,0.0,0,"ONLY");
3060      gMC->Gspos("I113",3,"I12B",0.1095,3.9056,0.0,0,"ONLY");
3061      gMC->Gspos("I143",1,"I12B",0.4365,3.8556,0.0,idrotm[236],"ONLY");
3062      gMC->Gspos("I142",1,"I12B",0.5136,3.9056,0.0,idrotm[235],"ONLY");
3063      gMC->Gspos("I141",1,"I12B",0.5636,3.9752,0.0,idrotm[237],"ONLY");
3064      gMC->Gspos("I140",1,"I12B",0.6336,4.0447,0.0,idrotm[234],"ONLY");
3065      gMC->Gspos("I139",1,"I12B",0.8297,4.0545,0.0,idrotm[207],"ONLY");
3066      gMC->Gspos("I113",5,"I12B",1.2575,3.9681,0.0,idrotm[207],"ONLY");
3067      gMC->Gspos("I138",1,"I12B",1.66,3.7848,0.0,idrotm[207],"ONLY");
3068      gMC->Gspos("I137",1,"I12B",1.8556,3.7738,0.0,idrotm[233],"ONLY");
3069      gMC->Gspos("I136",1,"I12B",2.6224,4.874,0.0,idrotm[232],"ONLY");
3070      gMC->Gspos("I135",1,"I12B",3.2967,6.0337,0.0,idrotm[231],"ONLY");
3071      gMC->Gspos("I134",1,"I12B",3.266,6.1636,0.0,idrotm[230],"ONLY");
3072      gMC->Gspos("I113",1,"I12B",2.9903,6.4144,0.0,idrotm[211],"ONLY");
3073      gMC->Gspos("I133",3,"I12B",2.7631,6.7627,0.0,idrotm[230],"ONLY");
3074      gMC->Gspos("I132",3,"I12B",2.62,6.8555,0.0,idrotm[229],"ONLY");
3075      gMC->Gspos("I131",3,"I12B",2.648,6.6023,0.0,idrotm[228],"ONLY");
3076      gMC->Gspos("I130",3,"I12B",2.6569,6.3431,0.0,idrotm[227],"ONLY");
3077      gMC->Gspos("I129",3,"I12B",2.3906,6.4819,0.0,idrotm[226],"ONLY");
3078      gMC->Gspos("I113",2,"I12B",1.9488,6.7998,0.0,idrotm[210],"ONLY");
3079      gMC->Gspos("I133",2,"I12B",1.6699,7.1085,0.0,idrotm[226],"ONLY");
3080      gMC->Gspos("I132",2,"I12B",1.5142,7.1777,0.0,idrotm[225],"ONLY");
3081      gMC->Gspos("I131",2,"I12B",1.5814,6.932,0.0,idrotm[224],"ONLY");
3082      gMC->Gspos("I130",2,"I12B",1.6308,6.6774,0.0,idrotm[223],"ONLY");
3083      gMC->Gspos("I129",2,"I12B",1.346,6.7728,0.0,idrotm[222],"ONLY");
3084      gMC->Gspos("I113",6,"I12B",0.8599,7.0176,0.0,idrotm[209],"ONLY");
3085      gMC->Gspos("I133",1,"I12B",0.5362,7.2789,0.0,idrotm[222],"ONLY");
3086      gMC->Gspos("I132",1,"I12B",0.3715,7.3228,0.0,idrotm[221],"ONLY");
3087      gMC->Gspos("I131",1,"I12B",0.4763,7.0907,0.0,idrotm[220],"ONLY");
3088      gMC->Gspos("I130",1,"I12B",0.5649,6.8469,0.0,idrotm[219],"ONLY");
3089      gMC->Gspos("I129",1,"I12B",0.2688,6.8966,0.0,idrotm[218],"ONLY");
3090      gMC->Gspos("I113",4,"I12B",-0.2497,7.0624,0.0,idrotm[208],"ONLY");
3091      gMC->Gspos("I128",1,"I12B",-0.6103,7.2698,0.0,idrotm[218],"ONLY");
3092      gMC->Gspos("I126",1,"I12B",-0.7799,7.2874,0.0,idrotm[217],"ONLY");
3093      gMC->Gspos("I125",1,"I12B",-0.6315,7.0883,0.0,idrotm[216],"ONLY");
3094      gMC->Gspos("I124",1,"I12B",-0.4965,6.8742,0.0,idrotm[215],"ONLY");
3095      gMC->Gspos("I105",3,"I10B",-0.05,-0.01,-16.844,idrotm[201],"ONLY");
3096      gMC->Gspos("I105",4,"I10B",-0.05,-0.01,16.844,0,"ONLY");
3097      gMC->Gspos("I107",2,"I10B",-0.0455,-di10b[1]+di107[1],3.536,0,"ONLY");
3098      gMC->Gspos("I107",1,"I10B",-0.0455,-di10b[1]+di107[1],10.708,0,"ONLY");
3099      gMC->Gspos("I107",4,"I10B",-0.0455,-di10b[1]+di107[1],-10.708,idrotm[201],"ONLY");
3100      gMC->Gspos("I107",3,"I10B",-0.0455,-di10b[1]+di107[1],-3.536,idrotm[201],"ONLY");
3101      gMC->Gspos("I109",1,"I10B",-0.138,0.015,-16.844,idrotm[201],"ONLY");
3102      gMC->Gspos("I109",2,"I10B",-0.138,0.015,16.844,0,"ONLY");
3103      gMC->Gspos("I108",1,"I10B",-0.138,-di10b[1]+2.*di107[1]+di108[1],0.0,0,"ONLY");
3104      gMC->Gspos("I105",1,"I20B",-0.05,-0.01,-16.844,idrotm[201],"ONLY");
3105      gMC->Gspos("I105",2,"I20B",-0.05,-0.01,16.844,0,"ONLY");
3106      gMC->Gspos("I1D7",2,"I20B",-0.0455,-di20b[1]+di1d7[1],3.536,0,"ONLY");
3107      gMC->Gspos("I1D7",1,"I20B",-0.0455,-di20b[1]+di1d7[1],10.708,0,"ONLY");
3108      gMC->Gspos("I1D7",4,"I20B",-0.0455,-di20b[1]+di1d7[1],-10.708,idrotm[201],"ONLY");
3109      gMC->Gspos("I1D7",3,"I20B",-0.0455,-di20b[1]+di1d7[1],-3.536,idrotm[201],"ONLY");
3110      gMC->Gspos("I109",3,"I20B",-0.138,0.015,-16.844,idrotm[201],"ONLY");
3111      gMC->Gspos("I109",4,"I20B",-0.138,0.015,16.844,0,"ONLY");
3112      gMC->Gspos("I108",2,"I20B",-0.138,-di20b[1]+2.*di1d7[1]+di108[1],0.0,0,"ONLY");
3113      gMC->Gspos("I112",2,"I113",0.25,0.02,0.0,idrotm[206],"ONLY");
3114      gMC->Gspos("I111",2,"I113",0.1318,-0.0008,0.0,idrotm[205],"ONLY");
3115      gMC->Gspos("I118",1,"I113",0.0,-0.0454,0.0,0,"ONLY");
3116      gMC->Gspos("I110",1,"I113",0.0,0.0492,0.0,0,"ONLY");
3117      gMC->Gspos("I114",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3118      gMC->Gspos("I115",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3119      gMC->Gspos("I115",2,"I113",-0.063,0.0042,0.0,idrotm[237],"ONLY");
3120      gMC->Gspos("I114",2,"I113",-0.063,0.0042,0.0,idrotm[237],"ONLY");
3121      gMC->Gspos("I116",1,"I113",0.0,0.0042,0.0,0,"ONLY");
3122      gMC->Gspos("I111",1,"I113",-0.1318,-0.0008,0.0,idrotm[204],"ONLY");
3123      gMC->Gspos("I112",1,"I113",-0.25,0.02,0.0,idrotm[203],"ONLY");
3124      gMC->Gspos("I106",1,"I107",0.0,-dchip1,-1.4,0,"ONLY");
3125      gMC->Gspos("I106",2,"I107",0.0,-dchip1,0.0,0,"ONLY");
3126      gMC->Gspos("I106",3,"I107",0.0,-dchip1,1.4,0,"ONLY");
3127      gMC->Gspos("I106",4,"I107",0.0,-dchip1,2.8,0,"ONLY");
3128      gMC->Gspos("I106",5,"I107",0.0,-dchip1,-2.8,0,"ONLY");
3129      gMC->Gspos("I101",1,"I107",0.0,ddet1,0.0,0,"ONLY");
3130      gMC->Gspos("I1D6",1,"I1D7",0.0,-dchip2,-1.4,0,"ONLY");
3131      gMC->Gspos("I1D6",2,"I1D7",0.0,-dchip2,0.0,0,"ONLY");
3132      gMC->Gspos("I1D6",3,"I1D7",0.0,-dchip2,1.4,0,"ONLY");
3133      gMC->Gspos("I1D6",4,"I1D7",0.0,-dchip2,2.8,0,"ONLY");
3134      gMC->Gspos("I1D6",5,"I1D7",0.0,-dchip2,-2.8,0,"ONLY");
3135      gMC->Gspos("I1D1",1,"I1D7",0.0,ddet2,0.0,0,"ONLY");
3136      gMC->Gspos("I117",1,"I116",0.0,0.0,0.0,0,"ONLY");
3137      gMC->Gspos("ITS1",1,"I101",0.0,0.0,0.0,0,"ONLY");
3138      gMC->Gspos("ITS2",1,"I1D1",0.0,0.0,0.0,0,"ONLY");
3139      gMC->Gspos("I650",16,"IT12",0.0,0.0,22.0,idrotm[1104],"MANY");
3140      gMC->Gspos("I650",20,"IT12",0.0,0.0,22.0,idrotm[1130],"MANY");
3141      gMC->Gspos("I650",18,"IT12",0.0,0.0,22.0,idrotm[1117],"MANY");
3142      gMC->Gspos("I650",1,"IT12",0.0,0.0,22.0,0,"MANY");
3143      gMC->Gspos("I650",4,"IT12",0.0,0.0,22.0,idrotm[1106],"MANY");
3144      gMC->Gspos("I650",6,"IT12",0.0,0.0,22.0,idrotm[1039],"MANY");
3145      gMC->Gspos("I650",8,"IT12",0.0,0.0,22.0,idrotm[1107],"MANY");
3146      gMC->Gspos("I650",10,"IT12",0.0,0.0,22.0,idrotm[1065],"MANY");
3147      gMC->Gspos("I650",12,"IT12",0.0,0.0,22.0,idrotm[1078],"MANY");
3148      gMC->Gspos("I650",14,"IT12",0.0,0.0,22.0,idrotm[1091],"MANY");
3149      gMC->Gspos("I650",19,"IT12",0.0,0.0,-22.0,idrotm[1108],"MANY");
3150      gMC->Gspos("I650",2,"IT12",0.0,0.0,-22.0,idrotm[1109],"MANY");
3151      gMC->Gspos("I650",3,"IT12",0.0,0.0,-22.0,idrotm[1110],"MANY");
3152      gMC->Gspos("I650",5,"IT12",0.0,0.0,-22.0,idrotm[1111],"MANY");
3153      gMC->Gspos("I650",7,"IT12",0.0,0.0,-22.0,idrotm[1112],"MANY");
3154      gMC->Gspos("I650",9,"IT12",0.0,0.0,-22.0,idrotm[1113],"MANY");
3155      gMC->Gspos("I650",11,"IT12",0.0,0.0,-22.0,idrotm[1114],"MANY");
3156      gMC->Gspos("I650",13,"IT12",0.0,0.0,-22.0,idrotm[1115],"MANY");
3157      gMC->Gspos("I650",15,"IT12",0.0,0.0,-22.0,idrotm[1116],"MANY");
3158      gMC->Gspos("I650",17,"IT12",0.0,0.0,-22.0,idrotm[1118],"MANY");
3159      gMC->Gspos("I666",1,"I650",0.0,0.0,0.25,idrotm[1003],"MANY");
3160      gMC->Gspos("I667",1,"I650",0.1102,0.9945,0.45,idrotm[1088],"ONLY");
3161      gMC->Gspos("I669",3,"I650",0.1883,4.0372,-3.2,0,"ONLY");
3162      gMC->Gspos("I671",3,"I650",0.1883,4.0372,0.6,0,"ONLY");
3163      gMC->Gspos("I669",2,"I650",1.3343,4.0609,-3.2,0,"ONLY");
3164      gMC->Gspos("I671",2,"I650",1.3343,4.0609,0.6,0,"ONLY");
3165      gMC->Gspos("I669",6,"I650",2.9567,6.1959,-3.2,idrotm[1089],"ONLY");
3166      gMC->Gspos("I671",6,"I650",2.9567,6.1959,0.6,idrotm[1089],"ONLY");
3167      gMC->Gspos("I669",5,"I650",1.9511,6.5822,-3.2,idrotm[1011],"ONLY");
3168      gMC->Gspos("I671",5,"I650",1.9511,6.5822,0.6,idrotm[1011],"ONLY");
3169      gMC->Gspos("I669",4,"I650",0.8974,6.8064,-3.2,idrotm[1090],"ONLY");
3170      gMC->Gspos("I671",4,"I650",0.8974,6.8064,0.6,idrotm[1090],"ONLY");
3171      gMC->Gspos("I669",1,"I650",-0.1784,6.863,-3.2,0,"ONLY");
3172      gMC->Gspos("I671",1,"I650",-0.1784,6.863,0.6,0,"ONLY");
3173      gMC->Gspos("I673",1,"I650",0.2173,4.8037,1.8,0,"ONLY");
3174      gMC->Gspos("I673",6,"I650",1.5093,4.5605,1.8,0,"ONLY");
3175      gMC->Gspos("I673",4,"I650",-0.173,6.2531,1.8,idrotm[1092],"ONLY");
3176      gMC->Gspos("I673",3,"I650",0.8073,6.2032,1.8,idrotm[1093],"ONLY");
3177      gMC->Gspos("I673",2,"I650",1.7678,6.0005,1.8,idrotm[1094],"ONLY");
3178      gMC->Gspos("I673",5,"I650",2.6847,5.6501,1.8,0,"ONLY");
3179      gMC->Gspos("I676",2,"I650",1.7618,5.2269,2.5,0,"ONLY");
3180      gMC->Gspos("I676",1,"I650",0.4018,5.5869,2.5,0,"ONLY");
3181      gMC->Gspos("I668",1,"I667",0.0,0.0,0.0,0,"ONLY");
3182      gMC->Gspos("I670",1,"I669",0.0,0.0,0.0,0,"ONLY");
3183      gMC->Gspos("I672",1,"I671",0.0,0.0,0.0,0,"ONLY");
3184      gMC->Gspos("I674",1,"I673",0.0,0.0,0.0,0,"MANY");
3185      gMC->Gspos("I675",1,"I673",0.0,0.0,-0.5,0,"ONLY");
3186      gMC->Gspos("I677",1,"I676",0.0,0.0,0.0,0,"MANY");
3187      gMC->Gspos("I678",1,"I676",0.0,0.0,-0.95,0,"ONLY");  
3188
3189   }
3190     
3191   // --- Place SDD volumes into their mother volume IT34
3192
3193   
3194   // -- position SDD detectors of ladder 3 / layer 3
3195
3196   gMC->Gspos("ITS3", 1,"I302",  0.0,      0.0,    0.0,    0,           "ONLY");
3197   ySDD = Y_SDD_sep/2.+I302dits[1];
3198   for (iSDD=0; iSDD<6; iSDD++) {
3199     gMC->Gspos("I302", iSDD+1, "I004",  0.0, ySDD,  Z_SDD_lay3[iSDD], 0, "ONLY");
3200     ySDD = -ySDD;
3201   }
3202
3203   gMC->Gspos("I004", 1,"IT34", -3.2777,  14.3607, 0.0,   idrotm[321],"ONLY");
3204   gMC->Gspos("I004", 2,"IT34", -9.5581,  11.9855, 0.0,   idrotm[333],"ONLY");
3205   gMC->Gspos("I004", 3,"IT34",-13.2713,   6.3911, 0.0,   idrotm[336],"ONLY");
3206   gMC->Gspos("I004", 4,"IT34",-15.33,     0.0,    0.0,   idrotm[350],"ONLY");
3207   gMC->Gspos("I004", 5,"IT34",-13.2713,  -6.3911, 0.0,   idrotm[313],"ONLY");
3208   gMC->Gspos("I004", 6,"IT34", -9.5581, -11.9855, 0.0,   idrotm[311],"ONLY");
3209   gMC->Gspos("I004", 7,"IT34", -3.2777, -14.3607, 0.0,   idrotm[310],"ONLY");
3210   gMC->Gspos("I004", 8,"IT34",  3.4112, -14.9456, 0.0,   idrotm[386],"ONLY");
3211   gMC->Gspos("I004", 9,"IT34",  9.184,  -11.5164, 0.0,   idrotm[309],"ONLY");
3212   gMC->Gspos("I004",10,"IT34", 13.8119,  -6.6514, 0.0,   idrotm[308],"ONLY");
3213   gMC->Gspos("I004",11,"IT34", 14.73,     0.0,    0.0,   idrotm[356],"ONLY");
3214   gMC->Gspos("I004",12,"IT34", 13.8119,   6.6514, 0.0,   idrotm[307],"ONLY");
3215   gMC->Gspos("I004",13,"IT34",  9.184,   11.5164, 0.0,   idrotm[306],"ONLY");
3216   gMC->Gspos("I004",14,"IT34",  3.4113,  14.9456, 0.0,   idrotm[305],"ONLY");
3217
3218
3219   // -- position SDD detectors of ladder 4 / layer 4
3220
3221   gMC->Gspos("ITS4", 1,"I402",  0.0,      0.000,  0.0,   0,"ONLY");
3222   ySDD = -(Y_SDD_sep/2.+I402dits[1]);
3223   for (iSDD=0; iSDD<8; iSDD++) {
3224     gMC->Gspos("I402", iSDD+1, "I005",  0.0, ySDD,  Z_SDD_lay4[iSDD], 0, "ONLY");
3225     ySDD = -ySDD;
3226   }
3227   
3228   gMC->Gspos("I005", 1,"IT34", -3.3629,  23.3895,-0.15,  idrotm[335],"ONLY");
3229   gMC->Gspos("I005", 2,"IT34",-10.0447,  21.9949,-0.15,  idrotm[332],"ONLY");
3230   gMC->Gspos("I005", 3,"IT34",-15.4744,  17.8584,-0.15,  idrotm[331],"ONLY");
3231   gMC->Gspos("I005", 4,"IT34",-20.3415,  13.0727,-0.15,  idrotm[366],"ONLY");
3232   gMC->Gspos("I005", 5,"IT34",-22.6728,   6.6573,-0.15,  idrotm[330],"ONLY");
3233   gMC->Gspos("I005", 6,"IT34",-24.18,     0.0,   -0.15,  idrotm[350],"ONLY");
3234   gMC->Gspos("I005", 7,"IT34",-22.6728,  -6.6573,-0.15,  idrotm[329],"ONLY");
3235   gMC->Gspos("I005", 8,"IT34",-20.3415, -13.0727,-0.15,  idrotm[328],"ONLY");
3236   gMC->Gspos("I005", 9,"IT34",-15.4744, -17.8584,-0.15,  idrotm[327],"ONLY");
3237   gMC->Gspos("I005",10,"IT34",-10.0447, -21.9949,-0.15,  idrotm[326],"ONLY");
3238   gMC->Gspos("I005",11,"IT34", -3.3629, -23.3895,-0.15,  idrotm[325],"ONLY");
3239   gMC->Gspos("I005",12,"IT34",  3.4412, -23.9339,-0.15,  idrotm[324],"ONLY");
3240   gMC->Gspos("I005",13,"IT34",  9.8163, -21.4946,-0.15,  idrotm[323],"ONLY");
3241   gMC->Gspos("I005",14,"IT34", 15.8345, -18.274, -0.15,  idrotm[322],"ONLY");
3242   gMC->Gspos("I005",15,"IT34", 19.8788, -12.7753,-0.15,  idrotm[320],"ONLY");
3243   gMC->Gspos("I005",16,"IT34", 23.2005,  -6.8123,-0.15,  idrotm[319],"ONLY");
3244   gMC->Gspos("I005",17,"IT34", 23.63,     0.0,   -0.15,  idrotm[318],"ONLY");
3245   gMC->Gspos("I005",18,"IT34", 23.2005,   6.8123,-0.15,  idrotm[317],"ONLY");
3246   gMC->Gspos("I005",19,"IT34", 19.8788,  12.7753,-0.15,  idrotm[316],"ONLY");
3247   gMC->Gspos("I005",20,"IT34", 15.8345,  18.274, -0.15,  idrotm[315],"ONLY");
3248   gMC->Gspos("I005",21,"IT34",  9.8163,  21.4946,-0.15,  idrotm[314],"ONLY");
3249   gMC->Gspos("I005",22,"IT34",  3.4412,  23.9339,-0.15,  idrotm[334],"ONLY");
3250
3251
3252   // -- build block of the SDD ladder frame holding the electronics
3253
3254   gMC->Gspos("I019", 1,"I018", -1.9,     -1.735,  0.0, idrotm[344], "ONLY");
3255   gMC->Gspos("I019", 2,"I018",  1.987,   -1.5843, 0.0, idrotm[343], "ONLY");
3256   gMC->Gspos("I019", 3,"I018", -0.087,    1.7066, 0.0, idrotm[342], "ONLY");
3257
3258   gMC->Gspos("I020", 1,"I018", -1.9782,  -1.569,  0.0, idrotm[342], "ONLY");
3259   gMC->Gspos("I020", 2,"I018",  1.8824,  -1.735,  0.0, idrotm[344], "ONLY");
3260   gMC->Gspos("I020", 3,"I018",  0.0958,   1.6913, 0.0, idrotm[343], "ONLY");
3261
3262   gMC->Gspos("I021", 1,"I018",  1.0761,   0.0835, 2.6008, idrotm[340], "ONLY");
3263   gMC->Gspos("I021", 2,"I018", -1.0761,   0.0835,-2.8008, idrotm[339], "ONLY");
3264   gMC->Gspos("I021", 3,"I018", -1.0761,   0.0835,-1.0492, idrotm[338], "ONLY");
3265   gMC->Gspos("I021", 4,"I018",  1.0761,   0.0835,-2.8008, idrotm[337], "ONLY");
3266   gMC->Gspos("I021", 5,"I018",  1.0761,   0.0835,-1.0492, idrotm[340], "ONLY");
3267   gMC->Gspos("I021", 6,"I018", -1.0761,   0.0835, 0.8492, idrotm[339], "ONLY");
3268   gMC->Gspos("I021", 7,"I018", -1.0761,   0.0835, 2.6008, idrotm[338], "ONLY");
3269   gMC->Gspos("I021", 8,"I018",  1.0761,   0.0835, 0.8492, idrotm[337], "ONLY");
3270
3271   gMC->Gspos("I022", 1,"I018",  0.0,     -1.79,   3.55,   idrotm[312], "ONLY");
3272   gMC->Gspos("I022", 2,"I018",  0.0,     -1.79,  -0.1,    idrotm[312], "ONLY");
3273
3274   gMC->Gspos("I023", 1,"I018",  0.0,     -1.79,   1.725,  idrotm[341], "ONLY");
3275   gMC->Gspos("I023", 2,"I018",  0.0,     -1.79,  -1.925,  idrotm[341], "ONLY");
3276
3277   gMC->Gspos("I033", 1,"I018",  1.8,     -1.75,   1.35,   0,           "MANY");
3278   gMC->Gspos("I033", 2,"I018", -1.8,     -1.75,  -2.65,   idrotm[345], "MANY");
3279   gMC->Gspos("I033", 3,"I018", -1.8,     -1.75,   1.35,   idrotm[345], "MANY");
3280   gMC->Gspos("I033", 4,"I018",  1.8,     -1.75,  -2.65,   0,           "MANY");
3281
3282   gMC->Gspos("I034", 1,"I018",  1.6,     -1.775,  1.35,   idrotm[312], "ONLY");
3283   gMC->Gspos("I034", 2,"I018", -1.6,     -1.775, -2.65,   idrotm[348], "ONLY");
3284   gMC->Gspos("I034", 3,"I018", -1.6,     -1.775,  1.35,   idrotm[348], "ONLY");
3285   gMC->Gspos("I034", 4,"I018",  1.6,     -1.775, -2.65,   idrotm[312], "ONLY");
3286
3287   gMC->Gspos("I035", 1,"I018",  1.7,     -0.55, I018dits[2]-I035dits[2], 0, "MANY");
3288   gMC->Gspos("I035", 2,"I018", -1.7,     -0.55, I018dits[2]-I035dits[2], 0, "MANY");
3289
3290   gMC->Gspos("I036", 1,"I018",  0.3087,   1.7191, 3.56,   idrotm[346], "ONLY");
3291   gMC->Gspos("I036", 2,"I018",  0.3087,   1.7191,-0.11,   idrotm[346], "ONLY");
3292   gMC->Gspos("I036", 3,"I018", -0.3087,   1.7191,-0.11,   idrotm[347], "ONLY");
3293   gMC->Gspos("I036", 4,"I018", -0.3087,   1.7191, 3.56,   idrotm[347], "ONLY");
3294
3295   gMC->Gspos("I037", 1,"I018",  SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 , "ONLY");
3296   gMC->Gspos("I037", 2,"I018", -SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 , "ONLY");
3297
3298   gMC->Gspos("I038", 1,"I018",  SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 , "ONLY");
3299   gMC->Gspos("I038", 2,"I018", -SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 , "ONLY");
3300
3301   gMC->Gspos("I040", 1,"I018",  1.9204,  -0.7118, 0.0, idrotm[346],"ONLY");
3302   gMC->Gspos("I040", 2,"I018", -1.9204,  -0.7118, 0.0, idrotm[347],"ONLY");
3303   gMC->Gspos("I041", 1,"I018",  SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], idrotm[346], "ONLY");
3304   gMC->Gspos("I041", 2,"I018", -SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], idrotm[347], "ONLY");
3305
3306
3307   // -- build block of the SDD electronics (heat bridge, chips, hybrid, anode microcable)
3308
3309   xI050 = SDD_CoolPipe[0]+SDD_CoolPipe[1]*sin30+I050dits[1]/cos30+I041dits[1];
3310   yI050 = 0;
3311   xI039 = -SDD_CoolPipe[1]/cos30;
3312   yI039 = -I050dits[1]+I039dits[1];
3313   gMC->Gspos("I039", 1,"I050",  xI039, yI039, 0.0, 0, "ONLY");
3314   xI042 = xI039+I039dits[0]-xI042space-I042dits[0];
3315   yI042 = yI039+I039dits[1]+I042dits[1];
3316   xI043 = xI039-I039dits[0]+xI043space+I043dits[0];
3317   yI043 = yI039+I039dits[1]+I043dits[1];
3318   zChipSpace = I042dits[2];
3319   if (zChipSpace < I043dits[2]) {
3320     zChipSpace = I043dits[2];
3321   }
3322   zChipSpace = zChipSpace * 2;
3323   yI051space = (2*I039dits[2] - 4*zChipSpace)/5;
3324   zchip = -I039dits[2] + yI051space + zChipSpace/2.;
3325   for (ichip=0; ichip<4; ichip++) { 
3326     gMC->Gspos("I042", ichip+1, "I050", xI042, yI042, zchip, 0, "ONLY");
3327     gMC->Gspos("I043", ichip+1, "I050", xI043, yI043, zchip, 0, "ONLY");
3328     zchip += zChipSpace + yI051space;
3329   }
3330   xcap = 2*I039dits[0]/5.;
3331   yI051 = yI039+I039dits[1]+I051dits[1];
3332   zI051 = -I039dits[2] + yI051space/3.;
3333   icap = 1;
3334   for (ichip=0; ichip<5; ichip++) { 
3335     xI051 = xI039-I039dits[0]+xcap;
3336     gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3337     zI051 += yI051space/3.;
3338     gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3339     xI051 += xcap;
3340     gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3341     xI051 += xcap;
3342     gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3343     xI051 += xcap;
3344     gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3345     zI051 -= yI051space/3.;
3346     if (ichip == 0) {
3347       gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3348     }
3349     zI051 += zChipSpace + yI051space;
3350   }
3351   xI052 = -I050dits[0]+I052dits[0];
3352   yI052 = yI051+I051dits[1]+I052dits[1];
3353   gMC->Gspos("I052", 1,"I050", xI052, yI052, 0.0, 0, "ONLY");
3354   xI044 = I050dits[0]-I044dits[3];
3355   yI044 = yI052+I052dits[1]+I044dits[2];
3356   gMC->Gspos("I044", 1,"I050", xI044, yI044, 0.0, idrotm[301], "ONLY");
3357   gMC->Gspos("I050", 1,"I018",  xI050,  yI050,  0.0, idrotm[346],"ONLY");
3358   gMC->Gspos("I050", 2,"I018", -xI050,  yI050,  0.0, idrotm[347],"ONLY");
3359
3360
3361   // -- build block of the SDD ladder frame at the end ladders
3362
3363   gMC->Gspos("I021",12,"I024",  1.0761,   0.0836,-0.1242, idrotm[340], "ONLY");
3364   gMC->Gspos("I021",11,"I024", -1.0761,   0.0836,-0.1242, idrotm[338], "ONLY");
3365   gMC->Gspos("I021",13,"I024", -1.0761,   0.0836,-1.8758, idrotm[339], "ONLY");
3366   gMC->Gspos("I021",14,"I024",  1.0761,   0.0836,-1.8758, idrotm[337], "ONLY");
3367
3368   gMC->Gspos("I022", 3,"I024",  0.0,     -1.7899, 0.825,  idrotm[312], "ONLY");
3369
3370   gMC->Gspos("I023", 3,"I024",  0.0,     -1.7899,-1.0,    idrotm[341], "ONLY");
3371
3372   gMC->Gspos("I025", 1,"I024", -1.9,     -1.7349, 0.0,    idrotm[344], "ONLY");
3373   gMC->Gspos("I025", 2,"I024",  1.987,   -1.5842, 0.0,    idrotm[343], "ONLY");
3374
3375   gMC->Gspos("I026", 1,"I024", -1.9782,  -1.5689, 0.0,    idrotm[342], "ONLY");
3376   gMC->Gspos("I026", 2,"I024",  1.8824,  -1.7349, 0.0,    idrotm[344], "ONLY");
3377
3378   gMC->Gspos("I029", 1,"I024", -0.087,    1.7067, I029dits[2]-I024dits[2], idrotm[342], "ONLY");
3379
3380   gMC->Gspos("I030", 1,"I024",  0.0958,   1.6914, I030dits[2]-I024dits[2], idrotm[343], "ONLY");
3381
3382   gMC->Gspos("I031", 1,"I024",  SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 ,"ONLY");
3383   gMC->Gspos("I031", 2,"I024", -SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 ,"ONLY");
3384
3385   gMC->Gspos("I032", 1,"I024",  SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 ,"ONLY");
3386   gMC->Gspos("I032", 2,"I024", -SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 ,"ONLY");
3387
3388
3389   xI424 = I028dits[0]/3.;
3390   yI424 = -I028dits[1]+I424dits[1];
3391   gMC->Gspos("I422", 1,"I421", 0.0, 0.0, 0.0, 0, "ONLY");
3392   gMC->Gspos("I423", 1,"I421", 0.0, 0.0, I421dits[2]-I423dits[2], 0, "ONLY");
3393   gMC->Gspos("I421", 1,"I420", 0.0, 0.0, 0.0, idrotm[312], "ONLY");
3394   gMC->Gspos("I420", 1,"I028", -I028dits[0]/3., I028dits[1]-I420dits[1], 0.0, 0, "ONLY");
3395   gMC->Gspos("I424", 1,"I028", xI424, yI424, 0.0, 0, "ONLY");
3396   gMC->Gspos("I028", 1,"I024", 0.0, I028dits[1]-I024dits[1], I024dits[2]-I028dits[2], 0, "MANY");
3397
3398
3399   // -- build the SDD ladder 3
3400
3401   indI425 = 1;
3402   gMC->Gspos("I024", 1,"I047",  0.0,      0.0,   24.625, 0,           "ONLY");  
3403   gMC->Gspos("I018", 1,"I047",  0.0,      0.0,    3.65,  0,           "ONLY");
3404   gMC->Gspos("I018", 2,"I047",  0.0,      0.0,   10.95,  0,           "ONLY");
3405   gMC->Gspos("I018", 3,"I047",  0.0,      0.0,   18.25,  0,           "ONLY");
3406   gMC->Gspos("I018", 4,"I047",  0.0,      0.0,   -3.65,  0,           "ONLY");
3407   gMC->Gspos("I018", 5,"I047",  0.0,      0.0,  -10.95,  0,           "ONLY");
3408   gMC->Gspos("I018", 6,"I047",  0.0,      0.0,  -18.25,  0,           "ONLY");
3409   gMC->Gspos("I024", 2,"I047",  0.0,      0.0,  -24.625, idrotm[355], "ONLY");
3410   HVname[0] = 'I';
3411   HVname[1] = '3';
3412   HVname[2] = '1';  
3413   HVname[4] = '\0';
3414   for (iSDD=0; iSDD<3; iSDD++) {
3415     HVname[3] = (Char_t)(48+iSDD+5);
3416     dits[0] = 1.350000;
3417     dits[1] = I425dits[1];
3418     dits[2] = (I047dits[2] - 2*I024dits[2] - Z_SDD_lay3[iSDD])/2.;
3419     gMC->Gsvolu(HVname, "BOX ", idtmed[279], dits, 3);
3420     xHV = 0.0;
3421     yHV = -I047dits[1] + (2*iSDD+1)*dits[1];
3422     zHV = I047dits[2] - 2*I024dits[2] - dits[2];
3423     gMC->Gspos(HVname, 1,"I047", xHV, yHV,  zHV, 0, "ONLY");
3424     gMC->Gspos(HVname, 2,"I047", xHV, yHV, -zHV, 0, "ONLY");
3425     gMC->Gspos("I425", indI425++,"I047",  xI424, yHV,   24.625, 0, "ONLY");
3426     gMC->Gspos("I425", indI425++,"I047", -xI424, yHV,  -24.625, 0, "ONLY");
3427   }
3428   LVname[0] = 'I';
3429   LVname[1] = '3';
3430   LVname[2] = '1';  
3431   LVname[4] = '\0';
3432   for (iSDD=0; iSDD<3; iSDD++) {
3433     LVname[3] = (Char_t)(48+iSDD+1);
3434     dits[0] = 1.350000;
3435     dits[1] = 0.004423;
3436     dits[2] = (I047dits[2] - (2*iSDD+1)*I018dits[2] - I039dits[2])/2.;
3437     gMC->Gsvolu(LVname, "BOX ", idtmed[280], dits, 3);
3438     yLV = I018dits[1] - dits[0]*cos30 - dits[1]*sin30;
3439     xLV = xI050 -
3440           fabs(yI050-yLV)*sin30/cos30 +
3441           (I050dits[1]+(2*iSDD+1)*dits[1])/cos30;
3442     zLV = I047dits[2] - dits[2];
3443     gMC->Gspos(LVname, 1,"I047",  xLV, yLV,  zLV, idrotm[346], "ONLY");
3444     gMC->Gspos(LVname, 2,"I047",  xLV, yLV, -zLV, idrotm[346], "ONLY");
3445     gMC->Gspos(LVname, 3,"I047", -xLV, yLV,  zLV, idrotm[347], "ONLY");
3446     gMC->Gspos(LVname, 4,"I047", -xLV, yLV, -zLV, idrotm[347], "ONLY");
3447   }
3448
3449
3450   // -- build the SDD ladder 4
3451
3452
3453   gMC->Gspos("I024", 3,"I048", -0.0001,   0.0,   31.925, 0,           "ONLY");
3454   gMC->Gspos("I018", 7,"I048", -0.0001,   0.0,   -3.65,  0,           "ONLY");
3455   gMC->Gspos("I018", 8,"I048", -0.0001,   0.0,    3.65,  0,           "ONLY");
3456   gMC->Gspos("I018", 9,"I048", -0.0001,   0.0,   10.95,  0,           "ONLY");
3457   gMC->Gspos("I018",10,"I048", -0.0001,   0.0,   18.25,  0,           "ONLY");
3458   gMC->Gspos("I018",11,"I048", -0.0001,   0.0,   25.55,  0,           "ONLY");
3459   gMC->Gspos("I018",12,"I048", -0.0001,   0.0,  -10.95,  0,           "ONLY");
3460   gMC->Gspos("I018",13,"I048", -0.0001,   0.0,  -18.25,  0,           "ONLY");
3461   gMC->Gspos("I018",14,"I048", -0.0001,   0.0,  -25.55,  0,           "ONLY");
3462   gMC->Gspos("I024", 4,"I048", -0.0001,   0.0,  -31.925, idrotm[355], "ONLY");
3463   HVname[0] = 'I';
3464   HVname[1] = '4';
3465   HVname[2] = '1';  
3466   HVname[4] = '\0';  
3467   for (iSDD=0; iSDD<4; iSDD++) {
3468     HVname[3] = (Char_t)(48+iSDD+5);
3469     dits[0] = 1.350000;
3470     dits[1] = I425dits[1];
3471     dits[2] = (I048dits[2] - 2*I024dits[2] - Z_SDD_lay4[iSDD])/2.;
3472     gMC->Gsvolu(HVname, "BOX ", idtmed[279], dits, 3);
3473     xHV = -0.0001;
3474     yHV = -I048dits[1] + (2*iSDD+1)*dits[1];
3475     zHV = I048dits[2] - 2*I024dits[2] - dits[2];
3476     gMC->Gspos(HVname, 1,"I048", xHV, yHV,  zHV, 0, "ONLY");
3477     gMC->Gspos(HVname, 2,"I048", xHV, yHV, -zHV, 0, "ONLY");
3478     gMC->Gspos("I425", indI425++,"I048",  xI424, yHV,   31.925, 0, "ONLY");
3479     gMC->Gspos("I425", indI425++,"I048", -xI424, yHV,  -31.925, 0, "ONLY");
3480   }
3481   LVname[0] = 'I';
3482   LVname[1] = '4';
3483   LVname[2] = '1';  
3484   LVname[4] = '\0';
3485   for (iSDD=0; iSDD<4; iSDD++) {
3486     LVname[3] = (Char_t)(48+iSDD+1);
3487     dits[0] = 1.350000;
3488     dits[1] = 0.004423;
3489     dits[2] = (I048dits[2] - (2*iSDD+1)*I018dits[2] - I039dits[2])/2.;
3490     gMC->Gsvolu(LVname, "BOX ", idtmed[280], dits, 3);
3491     yLV = I018dits[1] - dits[0]*cos30 - dits[1]*sin30;
3492     xLV = xI050 -
3493           fabs(yI050-yLV)*sin30/cos30 +
3494           (I050dits[1]+(2*iSDD+1)*dits[1])/cos30;
3495     zLV = I048dits[2] - dits[2];
3496     gMC->Gspos(LVname, 1,"I048",  xLV, yLV,  zLV, idrotm[346], "ONLY");
3497     gMC->Gspos(LVname, 2,"I048",  xLV, yLV, -zLV, idrotm[346], "ONLY");
3498     gMC->Gspos(LVname, 3,"I048", -xLV, yLV,  zLV, idrotm[347], "ONLY");
3499     gMC->Gspos(LVname, 4,"I048", -xLV, yLV, -zLV, idrotm[347], "ONLY");
3500   }
3501
3502
3503   // -- build the SDD barrel (layers 3 and 4)
3504
3505   gMC->Gspos("I047", 1,"IT34", -3.7528,  16.4422, 0.0,   idrotm[321], "ONLY");
3506   gMC->Gspos("I047", 2,"IT34",-10.8892,  13.6547, 0.0,   idrotm[333], "ONLY");
3507   gMC->Gspos("I047", 3,"IT34",-15.1948,   7.3175, 0.0,   idrotm[336], "ONLY");
3508   gMC->Gspos("I047", 4,"IT34",-17.465,    0.0,    0.0,   idrotm[350], "ONLY");
3509   gMC->Gspos("I047", 5,"IT34",-15.1948,  -7.3174, 0.0,   idrotm[313], "ONLY");
3510   gMC->Gspos("I047", 6,"IT34",-10.8893, -13.6547, 0.0,   idrotm[311], "ONLY");
3511   gMC->Gspos("I047", 7,"IT34", -3.7528, -16.4422, 0.0,   idrotm[310], "ONLY");
3512   gMC->Gspos("I047", 8,"IT34",  3.8863, -17.0271, 0.0,   idrotm[386], "ONLY");
3513   gMC->Gspos("I047", 9,"IT34", 10.5152, -13.1856, 0.0,   idrotm[309], "ONLY");
3514   gMC->Gspos("I047",10,"IT34", 15.7354,  -7.5778, 0.0,   idrotm[308], "ONLY");
3515   gMC->Gspos("I047",11,"IT34", 16.865,    0.0,    0.0,   idrotm[356], "ONLY");
3516   gMC->Gspos("I047",12,"IT34", 15.7354,   7.5778, 0.0,   idrotm[307], "ONLY");
3517   gMC->Gspos("I047",13,"IT34", 10.5152,  13.1856, 0.0,   idrotm[306], "ONLY");
3518   gMC->Gspos("I047",14,"IT34",  3.8863,  17.0271, 0.0,   idrotm[305], "ONLY");
3519
3520   gMC->Gspos("I048", 1,"IT34", -3.6667,  25.5027, 0.0,   idrotm[335], "ONLY");
3521   gMC->Gspos("I048", 2,"IT34",-10.9317,  23.937,  0.0,   idrotm[332], "ONLY");
3522   gMC->Gspos("I048", 3,"IT34",-16.8725,  19.4719, 0.0,   idrotm[331], "ONLY");
3523   gMC->Gspos("I048", 4,"IT34",-22.1376,  14.227,  0.0,   idrotm[366], "ONLY");
3524   gMC->Gspos("I048", 5,"IT34",-24.7213,   7.2588, 0.0,   idrotm[330], "ONLY");
3525   gMC->Gspos("I048", 6,"IT34",-26.315,    0.0,    0.0,   idrotm[350], "ONLY");
3526   gMC->Gspos("I048", 7,"IT34",-24.7213,  -7.2588, 0.0,   idrotm[329], "ONLY");
3527   gMC->Gspos("I048", 8,"IT34",-22.1376, -14.227,  0.0,   idrotm[328], "ONLY");
3528   gMC->Gspos("I048", 9,"IT34",-16.8725, -19.4719, 0.0,   idrotm[327], "ONLY");
3529   gMC->Gspos("I048",10,"IT34",-10.9316, -23.937,  0.0,   idrotm[326], "ONLY");
3530   gMC->Gspos("I048",11,"IT34", -3.6667, -25.5027, 0.0,   idrotm[325], "ONLY");
3531   gMC->Gspos("I048",12,"IT34",  3.745,  -26.0472, 0.0,   idrotm[324], "ONLY");
3532   gMC->Gspos("I048",13,"IT34", 10.7032, -23.4367, 0.0,   idrotm[323], "ONLY");
3533   gMC->Gspos("I048",14,"IT34", 17.2327, -19.8876, 0.0,   idrotm[322], "ONLY");
3534   gMC->Gspos("I048",15,"IT34", 21.6749, -13.9296, 0.0,   idrotm[320], "ONLY");
3535   gMC->Gspos("I048",16,"IT34", 25.2491,  -7.4138, 0.0,   idrotm[319], "ONLY");
3536   gMC->Gspos("I048",17,"IT34", 25.765,    0.0,    0.0,   idrotm[318], "ONLY");
3537   gMC->Gspos("I048",18,"IT34", 25.2491,   7.4138, 0.0,   idrotm[317], "ONLY");
3538   gMC->Gspos("I048",19,"IT34", 21.6749,  13.9296, 0.0,   idrotm[316], "ONLY");
3539   gMC->Gspos("I048",20,"IT34", 17.2327,  19.8876, 0.0,   idrotm[315], "ONLY");
3540   gMC->Gspos("I048",21,"IT34", 10.7032,  23.4367, 0.0,   idrotm[314], "ONLY");
3541   gMC->Gspos("I048",22,"IT34", 3.745,    26.0472, 0.0,   idrotm[334], "ONLY");
3542
3543   
3544   // --- Place SSD volumes into their mother volume IT56  
3545
3546
3547   gMC->Gspos("I570",14,"IT56",-28.0681,-36.0619,-0.27,idrotm[566],"ONLY"); 
3548   gMC->Gspos("I570",15,"IT56",-21.677,-40.0556,-0.27,idrotm[567],"ONLY");
3549   gMC->Gspos("I570",16,"IT56",-14.838,-43.2217,-0.27,idrotm[568],"ONLY");
3550   gMC->Gspos("I570",17,"IT56",-7.4965,-44.9238,-0.27,idrotm[569],"ONLY");
3551   gMC->Gspos("I570",18,"IT56",-0.27,-45.6977,-0.27,idrotm[533],"ONLY");
3552   gMC->Gspos("I570",19,"IT56",7.4965,-44.9238,-0.27,idrotm[534],"ONLY");
3553   gMC->Gspos("I570",20,"IT56",14.838,-43.2217,-0.27,idrotm[535],"ONLY");
3554   gMC->Gspos("I570",21,"IT56",21.677,-40.0556,-0.27,idrotm[623],"ONLY");
3555   gMC->Gspos("I570",22,"IT56",28.0681,-36.0619,-0.27,idrotm[537],"ONLY");
3556   gMC->Gspos("I570",23,"IT56",33.5085,-30.8468,-0.27,idrotm[538],"ONLY");
3557   gMC->Gspos("I570",24,"IT56",38.2566,-24.9943,-0.27,idrotm[539],"ONLY");
3558   gMC->Gspos("I570",25,"IT56",41.7089,-18.2952,-0.27,idrotm[540],"ONLY");
3559   gMC->Gspos("I570",26,"IT56",44.2994,-11.2181,-0.27,idrotm[541],"ONLY");
3560   gMC->Gspos("I570",27,"IT56",45.3894,-3.7611,-0.27,idrotm[542],"ONLY");
3561   gMC->Gspos("I570",28,"IT56",45.5416,3.7737,-0.27,idrotm[543],"ONLY");
3562   gMC->Gspos("I570",29,"IT56",44.1513,11.1806,-0.27,idrotm[544],"ONLY");
3563   gMC->Gspos("I570",30,"IT56",41.8487,18.3566,-0.27,idrotm[545],"ONLY");
3564   gMC->Gspos("I570",31,"IT56",38.1287,24.9107,-0.27,idrotm[546],"ONLY");
3565   gMC->Gspos("I570",32,"IT56",33.6209,30.9502,-0.27,idrotm[547],"ONLY");
3566   gMC->Gspos("I570",33,"IT56",27.9743,35.9414,-0.27,idrotm[548],"ONLY");
3567   gMC->Gspos("I570",34,"IT56",21.7497,40.1899,-0.27,idrotm[549],"ONLY");
3568   gMC->Gspos("I570",35,"IT56",14.7884,43.0772,-0.27,idrotm[550],"ONLY");
3569   gMC->Gspos("I570",36,"IT56",7.5216,45.0744,-0.27,idrotm[551],"ONLY");
3570   gMC->Gspos("I570",37,"IT56",-0.27,45.545,-0.27,0,"ONLY");
3571   gMC->Gspos("I570",38,"IT56",-7.5216,45.0744,-0.27,idrotm[552],"ONLY");
3572   gMC->Gspos("I570",1,"IT56",-14.7884,43.0772,-0.27,idrotm[553],"ONLY");
3573   gMC->Gspos("I570",2,"IT56",-21.7497,40.1899,-0.27,idrotm[620],"ONLY");
3574   gMC->Gspos("I570",3,"IT56",-27.9743,35.9414,-0.27,idrotm[555],"ONLY");
3575   gMC->Gspos("I570",4,"IT56",-33.6209,30.9502,-0.27,idrotm[556],"ONLY");
3576   gMC->Gspos("I570",5,"IT56",-38.1287,24.9108,-0.27,idrotm[557],"ONLY");
3577   gMC->Gspos("I570",6,"IT56",-41.8487,18.3566,-0.27,idrotm[558],"ONLY");
3578   gMC->Gspos("I570",7,"IT56",-44.1513,11.1806,-0.27,idrotm[559],"ONLY");
3579   gMC->Gspos("I570",8,"IT56",-45.5416,3.7737,-0.27,idrotm[560],"ONLY");
3580   gMC->Gspos("I570",9,"IT56",-45.3894,-3.7611,-0.27,idrotm[561],"ONLY");
3581   gMC->Gspos("I570",10,"IT56",-44.2994,-11.2181,-0.27,idrotm[562],"ONLY");
3582   gMC->Gspos("I570",11,"IT56",-41.7089,-18.2952,-0.27,idrotm[563],"ONLY");
3583   gMC->Gspos("I570",12,"IT56",-38.2566,-24.9943,-0.27,idrotm[564],"ONLY");
3584   gMC->Gspos("I570",13,"IT56",-33.5086,-30.8468,-0.27,idrotm[565],"ONLY");
3585   gMC->Gspos("I569",8,"IT56",-43.5484,3.6085,0.0,idrotm[560],"ONLY");
3586   gMC->Gspos("I569",9,"IT56",-43.3963,-3.5959,0.0,idrotm[561],"ONLY");
3587   gMC->Gspos("I569",10,"IT56",-42.3606,-10.7271,0.0,idrotm[562],"ONLY");
3588   gMC->Gspos("I569",11,"IT56",-39.8773,-17.4918,0.0,idrotm[563],"ONLY");
3589   gMC->Gspos("I569",12,"IT56",-36.5823,-23.9004,0.0,idrotm[564],"ONLY");
3590   gMC->Gspos("I569",13,"IT56",-32.0371,-29.4922,0.0,idrotm[565],"ONLY");
3591   gMC->Gspos("I569",14,"IT56",-26.8397,-34.4836,0.0,idrotm[566],"ONLY");
3592   gMC->Gspos("I569",15,"IT56",-20.7251,-38.2967,0.0,idrotm[567],"ONLY");
3593   gMC->Gspos("I569",16,"IT56",-14.1886,-41.33,0.0,idrotm[568],"ONLY");
3594   gMC->Gspos("I569",17,"IT56",-7.1673,-42.9511,0.0,idrotm[569],"ONLY");
3595   gMC->Gspos("I569",18,"IT56",0.0,-43.6977,0.0,idrotm[533],"ONLY");
3596   gMC->Gspos("I569",19,"IT56",7.1673,-42.9511,0.0,idrotm[534],"ONLY");
3597   gMC->Gspos("I569",20,"IT56",14.1886,-41.33,0.0,idrotm[535],"ONLY");
3598   gMC->Gspos("I569",21,"IT56",20.7251,-38.2967,0.0,idrotm[623],"ONLY");
3599   gMC->Gspos("I569",22,"IT56",26.8397,-34.4836,0.0,idrotm[537],"ONLY");
3600   gMC->Gspos("I569",23,"IT56",32.0371,-29.4922,0.0,idrotm[538],"ONLY");
3601   gMC->Gspos("I569",24,"IT56",36.5822,-23.9004,0.0,idrotm[539],"ONLY");
3602   gMC->Gspos("I569",25,"IT56",39.8773,-17.4918,0.0,idrotm[540],"ONLY");
3603   gMC->Gspos("I569",26,"IT56",42.3606,-10.7272,0.0,idrotm[541],"ONLY");
3604   gMC->Gspos("I569",27,"IT56",43.3963,-3.5959,0.0,idrotm[542],"ONLY");
3605   gMC->Gspos("I569",28,"IT56",43.5484,3.6085,0.0,idrotm[543],"ONLY");
3606   gMC->Gspos("I569",29,"IT56",42.2125,10.6897,0.0,idrotm[544],"ONLY");
3607   gMC->Gspos("I569",30,"IT56",40.0172,17.5532,0.0,idrotm[545],"ONLY");
3608   gMC->Gspos("I569",31,"IT56",36.4544,23.8169,0.0,idrotm[546],"ONLY");
3609   gMC->Gspos("I569",32,"IT56",32.1494,29.5956,0.0,idrotm[547],"ONLY");
3610   gMC->Gspos("I569",33,"IT56",26.7459,34.3631,0.0,idrotm[548],"ONLY");
3611   gMC->Gspos("I569",34,"IT56",20.7978,38.431,0.0,idrotm[549],"ONLY");
3612   gMC->Gspos("I569",35,"IT56",14.139,41.1856,0.0,idrotm[550],"ONLY");
3613   gMC->Gspos("I569",36,"IT56",7.1924,43.1017,0.0,idrotm[551],"ONLY");
3614   gMC->Gspos("I569",37,"IT56",0.0,43.545,0.0,0,"ONLY");
3615   gMC->Gspos("I569",38,"IT56",-7.1924,43.1017,0.0,idrotm[552],"ONLY");
3616   gMC->Gspos("I569",1,"IT56",-14.139,41.1856,0.0,idrotm[553],"ONLY");
3617   gMC->Gspos("I569",2,"IT56",-20.7978,38.431,0.0,idrotm[620],"ONLY");
3618   gMC->Gspos("I569",3,"IT56",-26.7459,34.3631,0.0,idrotm[555],"ONLY");
3619   gMC->Gspos("I569",4,"IT56",-32.1494,29.5956,0.0,idrotm[556],"ONLY");
3620   gMC->Gspos("I569",5,"IT56",-36.4544,23.8169,0.0,idrotm[557],"ONLY");
3621   gMC->Gspos("I569",6,"IT56",-40.0172,17.5532,0.0,idrotm[558],"ONLY");
3622   gMC->Gspos("I569",7,"IT56",-42.2125,10.6897,0.0,idrotm[559],"ONLY");
3623   gMC->Gspos("I571",15,"IT56",-21.2916,-34.387,0.0,idrotm[501],"ONLY");
3624   gMC->Gspos("I571",14,"IT56",-27.351,-30.0026,0.0,idrotm[503],"ONLY");
3625   gMC->Gspos("I571",13,"IT56",-32.2758,-24.3735,0.0,idrotm[504],"ONLY");
3626   gMC->Gspos("I571",12,"IT56",-36.3422,-18.0963,0.0,idrotm[505],"ONLY");
3627   gMC->Gspos("I571",11,"IT56",-38.901,-11.0683,0.0,idrotm[506],"ONLY");
3628   gMC->Gspos("I571",10,"IT56",-40.4252,-3.7459,0.0,idrotm[507],"ONLY");
3629   gMC->Gspos("I571",9,"IT56",-40.2725,3.7318,0.0,idrotm[508],"ONLY");
3630   gMC->Gspos("I571",8,"IT56",-39.0486,11.1103,0.0,idrotm[509],"ONLY");
3631   gMC->Gspos("I571",7,"IT56",-36.2049,18.0279,0.0,idrotm[510],"ONLY");
3632   gMC->Gspos("I571",6,"IT56",-32.3982,24.466,0.0,idrotm[511],"ONLY");
3633   gMC->Gspos("I571",5,"IT56",-27.2476,29.8892,0.0,idrotm[512],"ONLY");
3634   gMC->Gspos("I571",4,"IT56",-21.3723,34.5175,0.0,idrotm[513],"ONLY");
3635   gMC->Gspos("I571",3,"IT56",-14.6104,37.7138,0.0,idrotm[653],"ONLY");
3636   gMC->Gspos("I571",2,"IT56",-7.4599,39.9072,0.0,idrotm[514],"ONLY");
3637   gMC->Gspos("I571",1,"IT56",0.0,40.445,0.0,0,"ONLY");
3638   gMC->Gspos("I571",34,"IT56",7.46,39.9071,0.0,idrotm[515],"ONLY");
3639   gMC->Gspos("I571",33,"IT56",14.6104,37.7138,0.0,idrotm[516],"ONLY");
3640   gMC->Gspos("I571",32,"IT56",21.3723,34.5175,0.0,idrotm[517],"ONLY");
3641   gMC->Gspos("I571",31,"IT56",27.2476,29.8892,0.0,idrotm[518],"ONLY");
3642   gMC->Gspos("I571",30,"IT56",32.3983,24.466,0.0,idrotm[519],"ONLY");
3643   gMC->Gspos("I571",29,"IT56",36.2049,18.0279,0.0,idrotm[520],"ONLY");
3644   gMC->Gspos("I571",28,"IT56",39.0486,11.1103,0.0,idrotm[521],"ONLY");
3645   gMC->Gspos("I571",27,"IT56",40.2725,3.7318,0.0,idrotm[522],"ONLY");
3646   gMC->Gspos("I571",26,"IT56",40.4252,-3.746,0.0,idrotm[523],"ONLY");
3647   gMC->Gspos("I571",25,"IT56",38.901,-11.0683,0.0,idrotm[524],"ONLY");
3648   gMC->Gspos("I571",24,"IT56",36.3422,-18.0963,0.0,idrotm[525],"ONLY");
3649   gMC->Gspos("I571",23,"IT56",32.2758,-24.3736,0.0,idrotm[526],"ONLY");
3650   gMC->Gspos("I571",22,"IT56",27.351,-30.0026,0.0,idrotm[527],"ONLY");
3651   gMC->Gspos("I571",21,"IT56",21.2915,-34.387,0.0,idrotm[528],"ONLY");
3652   gMC->Gspos("I571",20,"IT56",14.6658,-37.8569,0.0,idrotm[618],"ONLY");
3653   gMC->Gspos("I571",19,"IT56",7.4317,-39.7563,0.0,idrotm[529],"ONLY");
3654   gMC->Gspos("I571",18,"IT56",0.0,-40.5984,0.0,idrotm[533],"ONLY");
3655   gMC->Gspos("I571",17,"IT56",-7.4318,-39.7563,0.0,idrotm[530],"ONLY");
3656   gMC->Gspos("I571",16,"IT56",-14.6659,-37.8569,0.0,idrotm[531],"ONLY");
3657   gMC->Gspos("I565",13,"IT56",-30.6798,-23.1683,0.0,idrotm[504],"ONLY");
3658   gMC->Gspos("I565",12,"IT56",-34.5519,-17.2048,0.0,idrotm[505],"ONLY");
3659   gMC->Gspos("I565",11,"IT56",-36.9774,-10.521,0.0,idrotm[506],"ONLY");
3660   gMC->Gspos("I565",10,"IT56",-38.4338,-3.5614,0.0,idrotm[507],"ONLY");
3661   gMC->Gspos("I565",9,"IT56",-38.281,3.5473,0.0,idrotm[508],"ONLY");
3662   gMC->Gspos("I565",8,"IT56",-37.1249,10.563,0.0,idrotm[509],"ONLY");
3663   gMC->Gspos("I565",7,"IT56",-34.4146,17.1364,0.0,idrotm[510],"ONLY");
3664   gMC->Gspos("I565",6,"IT56",-30.8022,23.2608,0.0,idrotm[511],"ONLY");
3665   gMC->Gspos("I565",5,"IT56",-25.9002,28.4112,0.0,idrotm[512],"ONLY");
3666   gMC->Gspos("I565",4,"IT56",-20.3195,32.817,0.0,idrotm[513],"ONLY");
3667   gMC->Gspos("I565",3,"IT56",-13.8879,35.8489,0.0,idrotm[653],"ONLY");
3668   gMC->Gspos("I565",2,"IT56",-7.0924,37.9412,0.0,idrotm[514],"ONLY");
3669   gMC->Gspos("I565",1,"IT56",0.0,38.445,0.0,0,"ONLY");
3670   gMC->Gspos("I565",34,"IT56",7.0925,37.9412,0.0,idrotm[515],"ONLY");
3671   gMC->Gspos("I565",33,"IT56",13.888,35.8489,0.0,idrotm[516],"ONLY");
3672   gMC->Gspos("I565",32,"IT56",20.3195,32.817,0.0,idrotm[517],"ONLY");
3673   gMC->Gspos("I565",31,"IT56",25.9002,28.4112,0.0,idrotm[518],"ONLY");
3674   gMC->Gspos("I565",30,"IT56",30.8022,23.2607,0.0,idrotm[519],"ONLY");
3675   gMC->Gspos("I565",29,"IT56",34.4146,17.1364,0.0,idrotm[520],"ONLY");
3676   gMC->Gspos("I565",28,"IT56",37.125,10.5629,0.0,idrotm[521],"ONLY");
3677   gMC->Gspos("I565",27,"IT56",38.281,3.5472,0.0,idrotm[522],"ONLY");
3678   gMC->Gspos("I565",26,"IT56",38.4338,-3.5614,0.0,idrotm[523],"ONLY");
3679   gMC->Gspos("I565",25,"IT56",36.9774,-10.521,0.0,idrotm[524],"ONLY");
3680   gMC->Gspos("I565",24,"IT56",34.5519,-17.2048,0.0,idrotm[525],"ONLY");
3681   gMC->Gspos("I565",23,"IT56",30.6798,-23.1683,0.0,idrotm[526],"ONLY");
3682   gMC->Gspos("I565",22,"IT56",26.0036,-28.5246,0.0,idrotm[527],"ONLY");
3683   gMC->Gspos("I565",21,"IT56",20.2387,-32.6866,0.0,idrotm[528],"ONLY");
3684   gMC->Gspos("I565",20,"IT56",13.9433,-35.992,0.0,idrotm[618],"ONLY");
3685   gMC->Gspos("I565",19,"IT56",7.0642,-37.7904,0.0,idrotm[529],"ONLY");
3686   gMC->Gspos("I565",18,"IT56",0.0,-38.5984,0.0,idrotm[533],"ONLY");
3687   gMC->Gspos("I565",17,"IT56",-7.0643,-37.7904,0.0,idrotm[530],"ONLY");
3688   gMC->Gspos("I565",16,"IT56",-13.9434,-35.992,0.0,idrotm[531],"ONLY");
3689   gMC->Gspos("I565",15,"IT56",-20.2387,-32.6866,0.0,idrotm[501],"ONLY");
3690   gMC->Gspos("I565",14,"IT56",-26.0036,-28.5246,0.0,idrotm[503],"ONLY");
3691   gMC->Gspos("I553",1,"I570",0.005,0.0,52.8453,0,"ONLY");
3692   gMC->Gspos("I523",1,"I570",0.0,0.0,46.9203+0.82,0,"ONLY");
3693   gMC->Gspos("I523",2,"I570",0.0,0.0,43.0103+0.82,0,"ONLY");
3694   gMC->Gspos("I523",3,"I570",0.0,0.0,39.1003+0.82,0,"ONLY");
3695   gMC->Gspos("I523",4,"I570",0.0,0.0,35.1903+0.82,0,"ONLY");
3696   gMC->Gspos("I523",5,"I570",0.0,0.0,31.2803+0.82,0,"ONLY");
3697   gMC->Gspos("I523",6,"I570",0.0,0.0,27.3703+0.82,0,"ONLY");
3698   gMC->Gspos("I523",7,"I570",0.0,0.0,23.4603+0.82,0,"ONLY");
3699   gMC->Gspos("I523",8,"I570",0.0,0.0,19.5503+0.82,0,"ONLY");
3700   gMC->Gspos("I523",9,"I570",0.0,0.0,15.6403+0.82,0,"ONLY");
3701   gMC->Gspos("I523",10,"I570",0.0,0.0,11.7303+0.82,0,"ONLY");
3702   gMC->Gspos("I523",11,"I570",0.0,0.0,7.8203+0.82,0,"ONLY");
3703   gMC->Gspos("I523",12,"I570",0.0,0.0,3.9103+0.82,0,"ONLY");
3704   gMC->Gspos("I523",13,"I570",0.0,0.0,0.0003+0.82,0,"ONLY");
3705   gMC->Gspos("I523",14,"I570",0.0,0.0,-3.9097+0.82,0,"ONLY");
3706   gMC->Gspos("I523",15,"I570",0.0,0.0,-7.8197+0.82,0,"ONLY");
3707   gMC->Gspos("I523",16,"I570",0.0,0.0,-11.7297+0.82,0,"ONLY");
3708   gMC->Gspos("I523",17,"I570",0.0,0.0,-15.6397+0.82,0,"ONLY");
3709   gMC->Gspos("I523",18,"I570",0.0,0.0,-19.5497+0.82,0,"ONLY");
3710   gMC->Gspos("I523",19,"I570",0.0,0.0,-23.4597+0.82,0,"ONLY");
3711   gMC->Gspos("I523",20,"I570",0.0,0.0,-27.3697+0.82,0,"ONLY");
3712   gMC->Gspos("I523",21,"I570",0.0,0.0,-31.2797+0.82,0,"ONLY");
3713   gMC->Gspos("I523",22,"I570",0.0,0.0,-35.1897+0.82,0,"ONLY");
3714   gMC->Gspos("I523",23,"I570",0.0,0.0,-39.0997+0.82,0,"ONLY");
3715   gMC->Gspos("I523",24,"I570",0.0,0.0,-43.0097+0.82,0,"ONLY");
3716   gMC->Gspos("I523",25,"I570",0.0,0.0,-46.9197+0.82,0,"ONLY");
3717   gMC->Gspos("I553",2,"I570",-0.005,0.0,-51.2047,idrotm[570],"ONLY");
3718   gMC->Gspos("I566",1,"I569",0.0,-0.03,46.9203,idrotm[532],"ONLY");
3719   gMC->Gspos("I566",2,"I569",0.0,0.03,43.0103,0,"ONLY");
3720   gMC->Gspos("I566",3,"I569",0.0,-0.03,39.1003,idrotm[532],"ONLY");
3721   gMC->Gspos("I566",4,"I569",0.0,0.03,35.1903,0,"ONLY");
3722   gMC->Gspos("I566",5,"I569",0.0,-0.03,31.2803,idrotm[532],"ONLY");
3723   gMC->Gspos("I566",6,"I569",0.0,0.03,27.3703,0,"ONLY");
3724   gMC->Gspos("I566",7,"I569",0.0,-0.03,23.4603,idrotm[532],"ONLY");
3725   gMC->Gspos("I566",8,"I569",0.0,0.03,19.5503,0,"ONLY");
3726   gMC->Gspos("I566",9,"I569",0.0,-0.03,15.6403,idrotm[532],"ONLY");
3727   gMC->Gspos("I566",10,"I569",0.0,0.03,11.7303,0,"ONLY");
3728   gMC->Gspos("I566",11,"I569",0.0,-0.03,7.8203,idrotm[532],"ONLY");
3729   gMC->Gspos("I566",12,"I569",0.0,0.03,3.9103,0,"ONLY");
3730   gMC->Gspos("I566",13,"I569",0.0,-0.03,0.0003,0,"ONLY");
3731   gMC->Gspos("I566",14,"I569",0.0,0.03,-3.9097,0,"ONLY");
3732   gMC->Gspos("I566",15,"I569",0.0,-0.03,-7.8197,idrotm[532],"ONLY");
3733   gMC->Gspos("I566",16,"I569",0.0,0.03,-11.7297,0,"ONLY");
3734   gMC->Gspos("I566",17,"I569",0.0,-0.03,-15.6397,0,"ONLY");
3735   gMC->Gspos("I566",18,"I569",0.0,0.03,-19.5497,0,"ONLY");
3736   gMC->Gspos("I566",19,"I569",0.0,-0.03,-23.4597,idrotm[532],"ONLY");
3737   gMC->Gspos("I566",20,"I569",0.0,0.03,-27.3697,0,"ONLY");
3738   gMC->Gspos("I566",21,"I569",0.0,-0.03,-31.2797,idrotm[532],"ONLY");
3739   gMC->Gspos("I566",22,"I569",0.0,0.03,-35.1897,0,"ONLY");
3740   gMC->Gspos("I566",23,"I569",0.0,-0.03,-39.0997,0,"ONLY");
3741   gMC->Gspos("I566",24,"I569",0.0,0.03,-43.0097,0,"ONLY");
3742   gMC->Gspos("I566",25,"I569",0.0,-0.03,-46.9197,idrotm[532],"ONLY");
3743   gMC->Gspos("I544",1,"I571",0.0101,0.0,43.125,0,"ONLY");
3744   gMC->Gspos("I516",20,"I571",0.0001,0.0,39.1-1.08,0,"ONLY");
3745   gMC->Gspos("I516",19,"I571",0.0001,0.0,35.19-1.08,0,"ONLY");
3746   gMC->Gspos("I516",18,"I571",0.0001,0.0,31.28-1.08,0,"ONLY");
3747   gMC->Gspos("I516",17,"I571",0.0001,0.0,27.37-1.08,0,"ONLY");
3748   gMC->Gspos("I516",16,"I571",0.0001,0.0,23.46-1.08,0,"ONLY");
3749   gMC->Gspos("I516",15,"I571",0.0001,0.0,19.55-1.08,0,"ONLY");
3750   gMC->Gspos("I516",14,"I571",0.0001,0.0,15.64-1.08,0,"ONLY");
3751   gMC->Gspos("I516",13,"I571",0.0001,0.0,11.73-1.08,0,"ONLY");
3752   gMC->Gspos("I516",12,"I571",0.0001,0.0,7.82-1.08,0,"ONLY");
3753   gMC->Gspos("I516",11,"I571",0.0001,0.0,3.91-1.08,0,"ONLY");
3754   gMC->Gspos("I516",10,"I571",0.0001,0.0,0.0-1.08,0,"ONLY");
3755   gMC->Gspos("I516",9,"I571",0.0001,0.0,-3.91-1.08,0,"ONLY");
3756   gMC->Gspos("I516",8,"I571",0.0001,0.0,-7.82-1.08,0,"ONLY");
3757   gMC->Gspos("I516",7,"I571",0.0001,0.0,-11.73-1.08,0,"ONLY");
3758   gMC->Gspos("I516",6,"I571",0.0001,0.0,-15.64-1.08,0,"ONLY");
3759   gMC->Gspos("I516",5,"I571",0.0001,0.0,-19.55-1.08,0,"ONLY");
3760   gMC->Gspos("I516",4,"I571",0.0001,0.0,-23.46-1.08,0,"ONLY");
3761   gMC->Gspos("I516",3,"I571",0.0001,0.0,-27.37-1.08,0,"ONLY");
3762   gMC->Gspos("I516",2,"I571",0.0001,0.0,-31.28-1.08,0,"ONLY");
3763   gMC->Gspos("I516",1,"I571",0.0001,0.0,-35.19-1.08,0,"ONLY");
3764   gMC->Gspos("I544",2,"I571",-0.0099,0.0,-41.375,idrotm[570],"ONLY");
3765   gMC->Gspos("I562",1,"I565",0.0,0.03,41.1546,0,"ONLY");
3766   gMC->Gspos("I562",2,"I565",0.0,-0.03,37.2246,0,"ONLY");
3767   gMC->Gspos("I562",3,"I565",0.0,0.03,33.3146,0,"ONLY");
3768   gMC->Gspos("I562",4,"I565",0.0,-0.03,29.3846,0,"ONLY");
3769   gMC->Gspos("I562",5,"I565",0.0,0.03,25.4746,0,"ONLY");
3770   gMC->Gspos("I562",6,"I565",0.0,-0.03,21.5446,0,"ONLY");
3771   gMC->Gspos("I562",7,"I565",0.0,0.03,17.6346,0,"ONLY");
3772   gMC->Gspos("I562",8,"I565",0.0,-0.03,13.7046,0,"ONLY");
3773   gMC->Gspos("I562",9,"I565",0.0,0.03,9.7946,0,"ONLY");
3774   gMC->Gspos("I562",10,"I565",0.0,-0.03,5.8645,0,"ONLY");
3775   gMC->Gspos("I562",11,"I565",0.0,0.03,1.9546,0,"ONLY");
3776   gMC->Gspos("I562",12,"I565",0.0,-0.03,-1.9754,0,"ONLY");
3777   gMC->Gspos("I562",13,"I565",0.0,0.03,-5.8855,0,"ONLY");
3778   gMC->Gspos("I562",14,"I565",0.0,-0.03,-9.8154,0,"ONLY");
3779   gMC->Gspos("I562",15,"I565",0.0,0.03,-13.7254,0,"ONLY");
3780   gMC->Gspos("I562",16,"I565",0.0,-0.03,-17.6555,0,"ONLY");
3781   gMC->Gspos("I562",17,"I565",0.0,0.03,-21.5655,0,"ONLY");
3782   gMC->Gspos("I562",18,"I565",0.0,-0.03,-25.4954,0,"ONLY");
3783   gMC->Gspos("I562",19,"I565",0.0,0.03,-29.4054,0,"ONLY");
3784   gMC->Gspos("I562",20,"I565",0.0,-0.03,-33.3354,0,"ONLY");
3785   gMC->Gspos("I562",21,"I565",0.0,0.03,-37.2454,0,"ONLY");
3786   gMC->Gspos("I562",22,"I565",0.0,-0.03,-41.1554,0,"ONLY");
3787   gMC->Gspos("I559",1,"I553",2.25,-1.615,0.0,0,"ONLY");
3788   gMC->Gspos("I560",1,"I553",2.25,-1.615,0.0,0,"ONLY");
3789   gMC->Gspos("I560",2,"I553",-2.25,-1.615,0.0,idrotm[573],"ONLY");
3790   gMC->Gspos("I558",1,"I553",-1.7167,-1.52,0.0,idrotm[583],"ONLY");
3791   gMC->Gspos("I557",1,"I553",-1.8533,-1.341,0.0,idrotm[581],"ONLY");
3792   gMC->Gspos("I558",2,"I553",1.8367,-1.3122,0.0,idrotm[575],"ONLY");
3793   gMC->Gspos("I557",2,"I553",1.75,-1.52,0.0,idrotm[583],"ONLY");
3794   gMC->Gspos("I558",3,"I553",-0.12,1.6613,0.0,idrotm[581],"ONLY");
3795   gMC->Gspos("I557",3,"I553",0.1034,1.6901,0.0,idrotm[575],"ONLY");
3796   gMC->Gspos("I556",3,"I553",-1.031,0.2033,-2.203,idrotm[580],"ONLY");
3797   gMC->Gspos("I556",1,"I553",1.0311,0.2033,-0.287,idrotm[576],"ONLY");
3798   gMC->Gspos("I554",1,"I553",0.0,-1.58,0.71,0,"ONLY");
3799   gMC->Gspos("I555",1,"I553",-0.0072,-1.58,-1.2311,idrotm[633],"ONLY");
3800   gMC->Gspos("I556",2,"I553",1.0311,0.2033,-2.203,idrotm[577],"ONLY");
3801   gMC->Gspos("I556",4,"I553",-1.031,0.2033,-0.287,idrotm[579],"ONLY");
3802   gMC->Gspos("I559",2,"I553",-2.25,-1.615,0.0,idrotm[573],"ONLY");
3803   gMC->Gspos("I561",1,"I553",2.1,-1.615,-0.24,0,"MANY");
3804   gMC->Gspos("I561",2,"I553",-2.1,-1.615,-0.24,idrotm[573],"MANY");
3805   gMC->Gspos("I519",37,"I523",0.0001,-1.79,-0.99,idrotm[586],"ONLY");
3806   gMC->Gspos("I519",36,"I523",-3.2986,-1.79,-1.2943,0,"ONLY");
3807   gMC->Gspos("I519",35,"I523",-3.2986,-1.71,-1.2943,0,"ONLY");
3808   gMC->Gspos("I519",34,"I523",-3.2286,-1.71,-1.2943,0,"ONLY");
3809   gMC->Gspos("I519",33,"I523",-3.2286,-1.79,-1.2943,0,"ONLY");
3810   gMC->Gspos("I519",32,"I523",-3.1586,-1.79,-1.2943,0,"ONLY");
3811   gMC->Gspos("I519",31,"I523",-3.1586,-1.71,-1.2943,0,"ONLY");
3812   gMC->Gspos("I519",30,"I523",-1.3436,-1.71,-1.2943,0,"ONLY");
3813   gMC->Gspos("I519",29,"I523",-1.3436,-1.79,-1.2943,0,"ONLY");
3814   gMC->Gspos("I519",28,"I523",-1.2736,-1.79,-1.2943,0,"ONLY");
3815   gMC->Gspos("I519",27,"I523",-1.2736,-1.71,-1.2943,0,"ONLY");
3816   gMC->Gspos("I519",26,"I523",-1.2036,-1.71,-1.2943,0,"ONLY");
3817   gMC->Gspos("I519",25,"I523",-1.2036,-1.79,-1.2943,0,"ONLY");
3818   gMC->Gspos("I519",24,"I523",-1.0458,-1.79,-1.2943,0,"ONLY");
3819   gMC->Gspos("I519",23,"I523",-1.0458,-1.71,-1.2943,0,"ONLY");
3820   gMC->Gspos("I519",22,"I523",-0.9758,-1.71,-1.2943,0,"ONLY");
3821   gMC->Gspos("I519",21,"I523",-0.9758,-1.79,-1.2943,0,"ONLY");
3822   gMC->Gspos("I519",20,"I523",-0.9058,-1.79,-1.2943,0,"ONLY");
3823   gMC->Gspos("I519",19,"I523",-0.9058,-1.71,-1.2943,0,"ONLY");
3824   gMC->Gspos("I519",18,"I523",0.9092,-1.71,-1.2943,0,"ONLY");
3825   gMC->Gspos("I519",17,"I523",0.9092,-1.79,-1.2943,0,"ONLY");
3826   gMC->Gspos("I519",16,"I523",0.9792,-1.79,-1.2943,0,"ONLY");
3827   gMC->Gspos("I519",15,"I523",0.9792,-1.71,-1.2943,0,"ONLY");
3828   gMC->Gspos("I519",14,"I523",1.0492,-1.71,-1.2943,0,"ONLY");
3829   gMC->Gspos("I519",13,"I523",1.0492,-1.79,-1.2943,0,"ONLY");
3830   gMC->Gspos("I519",12,"I523",1.207,-1.79,-1.2943,0,"ONLY");
3831   gMC->Gspos("I519",11,"I523",1.207,-1.71,-1.2943,0,"ONLY");
3832   gMC->Gspos("I519",10,"I523",1.277,-1.71,-1.2943,0,"ONLY");
3833   gMC->Gspos("I519",9,"I523",1.277,-1.79,-1.2943,0,"ONLY");
3834   gMC->Gspos("I519",8,"I523",1.347,-1.79,-1.2943,0,"ONLY");
3835   gMC->Gspos("I519",7,"I523",1.347,-1.71,-1.2943,0,"ONLY");
3836   gMC->Gspos("I519",6,"I523",3.162,-1.71,-1.2943,0,"ONLY");
3837   gMC->Gspos("I519",5,"I523",3.162,-1.79,-1.2943,0,"ONLY");
3838   gMC->Gspos("I519",4,"I523",3.232,-1.79,-1.2943,0,"ONLY");
3839   gMC->Gspos("I519",3,"I523",3.232,-1.71,-1.2943,0,"ONLY");
3840   gMC->Gspos("I521",12,"I523",-2.8209,-1.7925,-0.982,0,"ONLY");
3841   gMC->Gspos("I521",11,"I523",-1.6895,-1.7925,-0.982,0,"ONLY");
3842   gMC->Gspos("I521",10,"I523",-0.5631,-1.7925,-0.982,0,"ONLY");
3843   gMC->Gspos("I521",9,"I523",0.5633,-1.7925,-0.982,0,"ONLY");
3844   gMC->Gspos("I521",8,"I523",1.6861,-1.7925,-0.982,0,"ONLY");
3845   gMC->Gspos("I521",7,"I523",2.8161,-1.7925,-0.982,0,"ONLY");
3846   gMC->Gspos("I519",2,"I523",3.302,-1.79,-1.2943,0,"ONLY");
3847   gMC->Gspos("I520",3,"I523",0.0001,-1.845,-1.19,0,"ONLY");
3848   gMC->Gspos("I520",2,"I523",-2.2499,-1.845,-1.19,0,"ONLY");
3849   gMC->Gspos("I521",6,"I523",-2.8209,-1.7075,-0.982,0,"ONLY");
3850   gMC->Gspos("I521",5,"I523",-1.6895,-1.7075,-0.982,0,"ONLY");
3851   gMC->Gspos("I521",4,"I523",-0.5631,-1.7075,-0.982,0,"ONLY");
3852   gMC->Gspos("I521",3,"I523",0.5633,-1.7075,-0.982,0,"ONLY");
3853   gMC->Gspos("I521",2,"I523",1.6861,-1.7075,-0.982,0,"ONLY");
3854   gMC->Gspos("I518",1,"I523",0.0001,-1.75,-1.065,0,"ONLY");
3855   gMC->Gspos("I519",1,"I523",3.302,-1.71,-1.2943,0,"ONLY");
3856   gMC->Gspos("I520",1,"I523",2.2501,-1.845,-1.19,0,"ONLY");
3857   gMC->Gspos("I521",1,"I523",2.8161,-1.7075,-0.982,0,"ONLY");
3858   gMC->Gspos("I522",1,"I523",2.2501,-1.655,-1.3,idrotm[583],"MANY");
3859   gMC->Gspos("I522",2,"I523",-2.2499,-1.655,-1.3,idrotm[583],"MANY");
3860   gMC->Gspos("I542",2,"I523",-2.2499,-1.615,0.0,idrotm[573],"ONLY");
3861   gMC->Gspos("I541",2,"I523",-2.2499,-1.615,0.0,idrotm[573],"ONLY");
3862   gMC->Gspos("I541",1,"I523",2.2501,-1.615,0.0,0,"ONLY");
3863   gMC->Gspos("I542",1,"I523",2.2501,-1.615,0.0,0,"ONLY");
3864   gMC->Gspos("I543",1,"I523",2.1001,-1.615,0.955,0,"MANY");
3865   gMC->Gspos("I543",2,"I523",-2.0999,-1.615,0.955,idrotm[573],"MANY");
3866   gMC->Gspos("I537",2,"I523",1.7501,-1.52,0.0,idrotm[583],"ONLY");
3867   gMC->Gspos("I538",2,"I523",1.8368,-1.3122,0.0,idrotm[575],"ONLY");
3868   gMC->Gspos("I537",3,"I523",0.1035,1.6901,0.0,idrotm[575],"ONLY");
3869   gMC->Gspos("I538",3,"I523",-0.1199,1.6612,0.0,idrotm[581],"ONLY");
3870   gMC->Gspos("I538",1,"I523",-1.7166,-1.52,0.0,idrotm[583],"ONLY");
3871   gMC->Gspos("I537",1,"I523",-1.8532,-1.341,0.0,idrotm[581],"ONLY");
3872   gMC->Gspos("I536",3,"I523",-1.031,0.2033,-1.008,idrotm[580],"ONLY");
3873   gMC->Gspos("I536",4,"I523",-1.031,0.2033,0.908,idrotm[579],"ONLY");
3874   gMC->Gspos("I535",1,"I523",-0.0072,-1.58,-0.0361,idrotm[633],"ONLY");
3875   gMC->Gspos("I536",2,"I523",1.0312,0.2033,-1.008,idrotm[577],"ONLY");
3876   gMC->Gspos("I536",1,"I523",1.0312,0.2033,0.908,idrotm[576],"ONLY");
3877   gMC->Gspos("I534",1,"I523",0.0001,-1.58,1.905,0,"ONLY");
3878   gMC->Gspos("I540",1,"I523",0.0001,-1.785,1.905,idrotm[571],"ONLY");
3879   gMC->Gspos("I539",1,"I523",1.8001,-1.75,-0.195,idrotm[571],"ONLY");
3880   gMC->Gspos("I539",2,"I523",-1.7999,-1.75,-0.195,idrotm[572],"ONLY");
3881   gMC->Gspos("ITS6",1,"I566",0.0,0.0,0.0,0,"ONLY");
3882   gMC->Gspos("I550",1,"I544",2.25,-1.615,0.0,0,"ONLY");
3883   gMC->Gspos("I551",1,"I544",2.25,-1.615,0.0,0,"ONLY");
3884   gMC->Gspos("I551",2,"I544",-2.25,-1.615,0.0,idrotm[573],"ONLY");
3885   gMC->Gspos("I550",2,"I544",-2.25,-1.615,0.0,idrotm[573],"ONLY");
3886   gMC->Gspos("I549",1,"I544",1.7167,-1.52,0.0,idrotm[583],"ONLY");
3887   gMC->Gspos("I548",1,"I544",1.8533,-1.341,0.0,idrotm[575],"ONLY");
3888   gMC->Gspos("I547",1,"I544",1.0311,0.2033,-0.287,idrotm[576],"ONLY");
3889   gMC->Gspos("I545",1,"I544",0.0,-1.58,0.71,0,"ONLY");
3890   gMC->Gspos("I547",2,"I544",1.0311,0.2033,-2.203,idrotm[577],"ONLY");
3891   gMC->Gspos("I546",1,"I544",-0.0073,-1.58,-1.2311,idrotm[633],"ONLY");
3892   gMC->Gspos("I547",4,"I544",-1.0311,0.2033,-0.287,idrotm[579],"ONLY");
3893   gMC->Gspos("I547",3,"I544",-1.0311,0.2033,-2.203,idrotm[580],"ONLY");
3894   gMC->Gspos("I548",2,"I544",-0.1033,1.6901,0.0,idrotm[581],"O]NLY");
3895   gMC->Gspos("I549",2,"I544",0.12,1.6613,0.0,idrotm[575],"ONLY");
3896   gMC->Gspos("I549",3,"I544",-1.8367,-1.3122,0.0,idrotm[581],"ONLY");
3897   gMC->Gspos("I548",3,"I544",-1.75,-1.52,0.0,idrotm[583],"ONLY");
3898   gMC->Gspos("I552",1,"I544",2.1,-1.615,-0.24,0,"MANY");
3899   gMC->Gspos("I552",2,"I544",-2.1,-1.615,-0.24,idrotm[573],"MANY");
3900   gMC->Gspos("I515",12,"I516",-1.6896,-1.7075,-0.9822,0,"ONLY");
3901   gMC->Gspos("I515",11,"I516",-1.6896,-1.7925,-0.9822,0,"ONLY");
3902   gMC->Gspos("I513",37,"I516",0.0,-1.79,-1.035,idrotm[586],"ONLY");
3903   gMC->Gspos("I513",1,"I516",-3.2987,-1.71,-1.2943,0,"ONLY");
3904   gMC->Gspos("I515",1,"I516",-2.816,-1.7075,-0.9822,0,"ONLY");
3905   gMC->Gspos("I514",1,"I516",-2.25,-1.845,-1.19,0,"ONLY");
3906   gMC->Gspos("I514",2,"I516",0.0,-1.845,-1.19,0,"ONLY");
3907   gMC->Gspos("I514",3,"I516",2.25,-1.845,-1.19,0,"ONLY");
3908   gMC->Gspos("I515",2,"I516",-2.816,-1.7925,-0.9822,0,"ONLY");
3909   gMC->Gspos("I513",2,"I516",-3.2987,-1.79,-1.2943,0,"ONLY");
3910   gMC->Gspos("I515",3,"I516",-0.5632,-1.7075,-0.9822,0,"ONLY");
3911   gMC->Gspos("I515",4,"I516",-0.5632,-1.7925,-0.9822,0,"ONLY");
3912   gMC->Gspos("I515",5,"I516",0.5632,-1.7925,-0.9822,0,"ONLY");
3913   gMC->Gspos("I515",6,"I516",0.5632,-1.7075,-0.9822,0,"ONLY");
3914   gMC->Gspos("I515",7,"I516",1.6896,-1.7075,-0.9822,0,"ONLY");
3915   gMC->Gspos("I515",8,"I516",1.6896,-1.7925,-0.9822,0,"ONLY");
3916   gMC->Gspos("I515",9,"I516",2.816,-1.7925,-0.9822,0,"ONLY");
3917   gMC->Gspos("I515",10,"I516",2.816,-1.7075,-0.9822,0,"ONLY");
3918   gMC->Gspos("I513",3,"I516",-3.2287,-1.79,-1.2943,0,"ONLY");
3919   gMC->Gspos("I513",4,"I516",-3.2287,-1.71,-1.2943,0,"ONLY");
3920   gMC->Gspos("I513",5,"I516",-3.1587,-1.71,-1.2943,0,"ONLY");
3921   gMC->Gspos("I513",6,"I516",-3.1587,-1.79,-1.2943,0,"ONLY");
3922   gMC->Gspos("I513",7,"I516",-1.3437,-1.79,-1.2943,0,"ONLY");
3923   gMC->Gspos("I513",8,"I516",-1.3437,-1.71,-1.2943,0,"ONLY");
3924   gMC->Gspos("I513",9,"I516",-1.2737,-1.71,-1.2943,0,"ONLY");
3925   gMC->Gspos("I513",10,"I516",-1.2737,-1.79,-1.2943,0,"ONLY");
3926   gMC->Gspos("I513",11,"I516",-1.2037,-1.79,-1.2943,0,"ONLY");
3927   gMC->Gspos("I513",12,"I516",-1.2037,-1.71,-1.2943,0,"ONLY");
3928   gMC->Gspos("I513",13,"I516",-1.046,-1.71,-1.2943,0,"ONLY");
3929   gMC->Gspos("I513",14,"I516",-1.046,-1.79,-1.2943,0,"ONLY");
3930   gMC->Gspos("I513",15,"I516",-0.976,-1.79,-1.2943,0,"ONLY");
3931   gMC->Gspos("I513",16,"I516",-0.976,-1.71,-1.2943,0,"ONLY");
3932   gMC->Gspos("I513",17,"I516",-0.906,-1.71,-1.2943,0,"ONLY");
3933   gMC->Gspos("I513",18,"I516",-0.906,-1.79,-1.2943,0,"ONLY");
3934   gMC->Gspos("I513",19,"I516",0.9091,-1.79,-1.2943,0,"ONLY");
3935   gMC->Gspos("I513",20,"I516",0.9091,-1.71,-1.2943,0,"ONLY");
3936   gMC->Gspos("I513",21,"I516",0.9791,-1.71,-1.2943,0,"ONLY");
3937   gMC->Gspos("I513",22,"I516",0.9791,-1.79,-1.2943,0,"ONLY");
3938   gMC->Gspos("I513",23,"I516",1.0491,-1.79,-1.2943,0,"ONLY");
3939   gMC->Gspos("I513",24,"I516",1.0491,-1.71,-1.2943,0,"ONLY");
3940   gMC->Gspos("I513",25,"I516",1.2068,-1.71,-1.2943,0,"ONLY");
3941   gMC->Gspos("I513",26,"I516",1.2068,-1.79,-1.2943,0,"ONLY");
3942   gMC->Gspos("I513",27,"I516",1.2768,-1.79,-1.2943,0,"ONLY");
3943   gMC->Gspos("I513",28,"I516",1.2768,-1.71,-1.2943,0,"ONLY");
3944   gMC->Gspos("I513",29,"I516",1.3469,-1.71,-1.2943,0,"ONLY");
3945   gMC->Gspos("I513",30,"I516",1.3469,-1.79,-1.2943,0,"ONLY");
3946   gMC->Gspos("I513",31,"I516",3.1619,-1.79,-1.2943,0,"ONLY");
3947   gMC->Gspos("I513",32,"I516",3.1619,-1.71,-1.2943,0,"ONLY");
3948   gMC->Gspos("I513",33,"I516",3.2319,-1.71,-1.2943,0,"ONLY");
3949   gMC->Gspos("I513",34,"I516",3.2319,-1.79,-1.2943,0,"ONLY");
3950   gMC->Gspos("I513",35,"I516",3.3019,-1.79,-1.2943,0,"ONLY");
3951   gMC->Gspos("I513",36,"I516",3.3019,-1.71,-1.2943,0,"ONLY");
3952   gMC->Gspos("I512",1,"I516",0.0,-1.75,-1.065,0,"ONLY");
3953   gMC->Gspos("I528",1,"I516",1.7167,-1.52,0.0,idrotm[583],"ONLY");
3954   gMC->Gspos("I527",1,"I516",1.8534,-1.341,0.0,idrotm[575],"ONLY");
3955   gMC->Gspos("I528",2,"I516",0.12,1.6613,0.0,idrotm[575],"ONLY");
3956   gMC->Gspos("I527",2,"I516",-0.1033,1.6901,0.0,idrotm[581],"ONLY");
3957   gMC->Gspos("I527",3,"I516",-1.75,-1.52,0.0,idrotm[583],"ONLY");
3958   gMC->Gspos("I528",3,"I516",-1.8367,-1.3122,0.0,idrotm[581],"ONLY");
3959   gMC->Gspos("I526",2,"I516",1.0311,0.2033,-1.008,idrotm[577],"ONLY");
3960   gMC->Gspos("I525",1,"I516",-0.0073,-1.58,-0.0361,idrotm[633],"ONLY");
3961   gMC->Gspos("I524",1,"I516",0.0,-1.58,1.905,0,"ONLY");
3962   gMC->Gspos("I526",1,"I516",1.0311,0.2033,0.908,idrotm[576],"ONLY");
3963   gMC->Gspos("I526",3,"I516",-1.0311,0.2033,0.908,idrotm[579],"ONLY");
3964   gMC->Gspos("I526",4,"I516",-1.0311,0.2033,-1.008,idrotm[580],"ONLY");
3965   gMC->Gspos("I529",1,"I516",1.8,-1.75,-0.195,idrotm[571],"ONLY");
3966   gMC->Gspos("I530",1,"I516",0.0,-1.785,1.905,idrotm[571],"ONLY");
3967   gMC->Gspos("I529",2,"I516",-1.8,-1.75,-0.195,idrotm[572],"ONLY");
3968   gMC->Gspos("I517",1,"I516",2.25,-1.655,-1.3,idrotm[583],"MANY");
3969   gMC->Gspos("I517",2,"I516",-2.25,-1.655,-1.3,idrotm[584],"MANY");
3970   gMC->Gspos("I531",2,"I516",-2.25,-1.615,0.0,idrotm[573],"ONLY");
3971   gMC->Gspos("I531",1,"I516",2.25,-1.615,0.0,0,"ONLY");
3972   gMC->Gspos("I532",1,"I516",2.25,-1.615,0.0,0,"ONLY");
3973   gMC->Gspos("I532",2,"I516",-2.25,-1.615,0.0,idrotm[573],"ONLY");
3974   gMC->Gspos("I533",1,"I516",2.1,-1.615,0.955,0,"MANY");
3975   gMC->Gspos("I533",2,"I516",-2.1,-1.615,0.955,idrotm[573],"MANY");
3976   gMC->Gspos("ITS5",1,"I562",0.0,0.0,0.0,0,"ONLY");
3977
3978   
3979   // --- Place volumes of shield between SPD and SDD 
3980
3981
3982   gMC->Gspos("IC01",1,"ITSD",0.0,0.0,0.0,0,"ONLY");
3983   gMC->Gspos("IC02",1,"ITSD",0.0,0.0,25.+8.75,0,"ONLY");  
3984   gMC->Gspos("IC02",2,"ITSD",0.0,0.0,-25.-8.75,idrotm[200],"ONLY");  
3985   //gMC->Gspos("IC03",1,"ITSD",0.0,0.0,25.+17.5+7.875,0,"ONLY");  
3986   //gMC->Gspos("IC03",2,"ITSD",0.0,0.0,-25.-17.5-7.875,idrotm[200],"ONLY");   
3987   
3988   
3989   // --- Place volumes of cylinders between SPD and SDD and SDD and SSD 
3990   
3991   gMC->Gspos("ICY1",1,"ITSD",0.0,0.0,0.,0,"ONLY");    
3992   gMC->Gspos("ICY2",1,"ITSD",0.0,0.0,0.,0,"ONLY");    
3993   
3994
3995   // --- Place volumes of SDD cone ---------------------------------- 
3996   
3997   
3998   gMC->Gspos("I093",1,"IS02",0.0,0.0,0.0,0,"MANY");
3999   gMC->Gspos("I093",2,"IS02",0.0,0.0,0.0,idrotm[856],"MANY");
4000   gMC->Gspos("I099",4,"IS02",0.0,0.0,0.0,idrotm[857],"MANY");
4001   gMC->Gspos("I099",3,"IS02",0.0,0.0,0.0,idrotm[858],"MANY");
4002   gMC->Gspos("I099",5,"IS02",0.0,0.0,0.0,idrotm[859],"MANY");
4003   gMC->Gspos("I099",6,"IS02",0.0,0.0,0.0,idrotm[860],"MANY");
4004   gMC->Gspos("I099",7,"IS02",0.0,0.0,0.0,idrotm[861],"MANY");
4005   gMC->Gspos("I099",2,"IS02",0.0,0.0,0.0,idrotm[862],"MANY");
4006   gMC->Gspos("I200",4,"IS02",0.0,0.0,0.0,idrotm[863],"MANY");
4007   gMC->Gspos("I200",3,"IS02",0.0,0.0,0.0,idrotm[864],"MANY");
4008   gMC->Gspos("I200",2,"IS02",0.0,0.0,0.0,idrotm[865],"MANY");
4009   gMC->Gspos("I200",13,"IS02",0.0,0.0,0.0,idrotm[867],"MANY");
4010   gMC->Gspos("I200",12,"IS02",0.0,0.0,0.0,idrotm[869],"MANY");
4011   gMC->Gspos("I200",11,"IS02",0.0,0.0,0.0,idrotm[870],"MANY");
4012   gMC->Gspos("I200",10,"IS02",0.0,0.0,0.0,idrotm[871],"MANY");
4013   gMC->Gspos("I200",9,"IS02",0.0,0.0,0.0,idrotm[872],"MANY");
4014   gMC->Gspos("I200",8,"IS02",0.0,0.0,0.0,idrotm[873],"MANY");
4015   gMC->Gspos("I200",7,"IS02",0.0,0.0,0.0,idrotm[874],"MANY");
4016   gMC->Gspos("I200",6,"IS02",0.0,0.0,0.0,idrotm[875],"MANY");
4017   gMC->Gspos("I200",5,"IS02",0.0,0.0,0.0,idrotm[876],"MANY");
4018   gMC->Gspos("I090",2,"IS02",0.0,0.0,-39.4,0,"ONLY");    
4019   gMC->Gspos("I090",1,"IS02",0.0,0.0,39.4,idrotm[856],"ONLY");  
4020   gMC->Gspos("I099",9,"IS02",0.0,0.0,0.0,idrotm[877],"ONLY");
4021   gMC->Gspos("I099",8,"IS02",0.0,0.0,0.0,idrotm[879],"ONLY");
4022   gMC->Gspos("I099",1,"IS02",0.0,0.0,0.0,idrotm[880],"ONLY");
4023   gMC->Gspos("I099",12,"IS02",0.0,0.0,0.0,idrotm[881],"ONLY");
4024   gMC->Gspos("I099",11,"IS02",0.0,0.0,0.0,idrotm[851],"ONLY");
4025   gMC->Gspos("I099",10,"IS02",0.0,0.0,0.0,idrotm[882],"ONLY");
4026   gMC->Gspos("I200",23,"IS02",0.0,0.0,0.0,idrotm[898],"ONLY");
4027   gMC->Gspos("I200",24,"IS02",0.0,0.0,0.0,idrotm[883],"ONLY");
4028   gMC->Gspos("I200",1,"IS02",0.0,0.0,0.0,idrotm[884],"ONLY");
4029   gMC->Gspos("I200",14,"IS02",0.0,0.0,0.0,idrotm[885],"ONLY");
4030   gMC->Gspos("I200",15,"IS02",0.0,0.0,0.0,idrotm[887],"ONLY");
4031   gMC->Gspos("I200",16,"IS02",0.0,0.0,0.0,idrotm[888],"ONLY");
4032   gMC->Gspos("I200",17,"IS02",0.0,0.0,0.0,idrotm[889],"ONLY");
4033   gMC->Gspos("I200",18,"IS02",0.0,0.0,0.0,idrotm[890],"ONLY");
4034   gMC->Gspos("I200",22,"IS02",0.0,0.0,0.0,idrotm[891],"ONLY");
4035   gMC->Gspos("I200",21,"IS02",0.0,0.0,0.0,idrotm[892],"ONLY");
4036   gMC->Gspos("I200",20,"IS02",0.0,0.0,0.0,idrotm[868],"ONLY");
4037   gMC->Gspos("I200",19,"IS02",0.0,0.0,0.0,idrotm[893],"ONLY");
4038   gMC->Gspos("I098",1,"IS02",0.0,0.0,33.6,0,"ONLY");    
4039   gMC->Gspos("I097",1,"IS02",0.0,0.0,26.6,0,"ONLY");    
4040   gMC->Gspos("I097",2,"IS02",0.0,0.0,-26.6,idrotm[856],"ONLY");  
4041   gMC->Gspos("I098",2,"IS02",0.0,0.0,-33.6,idrotm[856],"ONLY");  
4042   gMC->Gspos("I202",1,"IS02",12.1,0.0,33.84,0,"ONLY");
4043   gMC->Gspos("I202",6,"IS02",-6.05,-10.4789,33.84,idrotm[930],"ONLY");
4044   gMC->Gspos("I202",5,"IS02",-6.05,10.4789,33.84,idrotm[929],"ONLY");
4045   gMC->Gspos("I202",2,"IS02",12.1,0.0,-33.84,idrotm[856],"ONLY");
4046   gMC->Gspos("I202",3,"IS02",-6.05,10.4789,-33.84,idrotm[932],"ONLY");
4047   gMC->Gspos("I202",4,"IS02",-6.05,-10.4789,-33.84,idrotm[934],"ONLY");
4048   gMC->Gspos("I203",12,"IS02",21.8453,0.0,-42.24,idrotm[856],"ONLY");
4049   gMC->Gspos("I203",11,"IS02",10.9227,-18.9186,-42.24,idrotm[935],"ONLY");
4050   gMC->Gspos("I203",10,"IS02",10.9227,-18.9186,42.24,idrotm[846],"ONLY");
4051   gMC->Gspos("I203",9,"IS02",-10.9227,-18.9186,-42.24,idrotm[934],"ONLY");
4052   gMC->Gspos("I203",8,"IS02",-10.9227,-18.9186,42.24,idrotm[930],"ONLY");
4053   gMC->Gspos("I203",7,"IS02",-21.8453,0.0,-42.24,idrotm[933],"ONLY");
4054   gMC->Gspos("I203",6,"IS02",-21.8453,0.0,42.24,idrotm[878],"ONLY");
4055   gMC->Gspos("I203",5,"IS02",-10.9227,18.9186,-42.24,idrotm[932],"ONLY");
4056   gMC->Gspos("I203",4,"IS02",-10.9227,18.9186,42.24,idrotm[929],"ONLY");
4057   gMC->Gspos("I203",3,"IS02",10.9227,18.9186,-42.24,idrotm[931],"ONLY");
4058   gMC->Gspos("I203",2,"IS02",10.9227,18.9186,42.24,idrotm[853],"ONLY");
4059   gMC->Gspos("I203",1,"IS02",21.8453,0.0,42.24,0,"ONLY");
4060   gMC->Gspos("I095",1,"I098",0.0,0.0,0.0,0,"ONLY");
4061   gMC->Gspos("I096",23,"I098",22.77,0.0,0.0,idrotm[894],"MANY");
4062   gMC->Gspos("I096",14,"I098",22.3754,6.57,0.0,idrotm[895],"MANY");
4063   gMC->Gspos("I096",3,"I098",19.1553,12.3104,0.0,idrotm[896],"MANY");
4064   gMC->Gspos("I096",16,"I098",15.2714,17.6241,0.0,idrotm[897],"MANY");
4065   gMC->Gspos("I096",5,"I098",9.459,20.7123,0.0,idrotm[899],"MANY");
4066   gMC->Gspos("I096",18,"I098",3.3188,23.0826,0.0,idrotm[900],"MANY");
4067   gMC->Gspos("I096",7,"I098",-3.2405,22.5382,0.0,idrotm[901],"MANY");
4068   gMC->Gspos("I096",20,"I098",-9.6875,21.2126,0.0,idrotm[902],"MANY");
4069   gMC->Gspos("I096",9,"I098",-14.9112,17.2084,0.0,idrotm[903],"MANY");
4070   gMC->Gspos("I096",22,"I098",-19.618,12.6077,0.0,idrotm[904],"MANY");
4071   gMC->Gspos("I096",11,"I098",-21.8477,6.4151,0.0,idrotm[905],"MANY");
4072   gMC->Gspos("I096",24,"I098",-23.32,0.0,0.0,idrotm[906],"MANY");
4073   gMC->Gspos("I096",13,"I098",-21.8477,-6.4151,0.0,idrotm[907],"MANY");
4074   gMC->Gspos("I096",4,"I098",-19.618,-12.6077,0.0,idrotm[908],"MANY");
4075   gMC->Gspos("I096",15,"I098",-14.9112,-17.2084,0.0,idrotm[909],"MANY");
4076   gMC->Gspos("I096",6,"I098",-9.6875,-21.2126,0.0,idrotm[910],"MANY");
4077   gMC->Gspos("I096",17,"I098",-3.2405,-22.5382,0.0,idrotm[911],"MANY");
4078   gMC->Gspos("I096",8,"I098",3.3188,-23.0826,0.0,idrotm[912],"MANY");
4079   gMC->Gspos("I096",19,"I098",9.459,-20.7123,0.0,idrotm[913],"MANY");
4080   gMC->Gspos("I096",10,"I098",15.2714,-17.6241,0.0,idrotm[914],"MANY");
4081   gMC->Gspos("I096",21,"I098",19.1553,-12.3104,0.0,idrotm[915],"MANY");
4082   gMC->Gspos("I096",12,"I098",22.3754,-6.57,0.0,idrotm[916],"MANY");
4083   gMC->Gspos("I094",1,"I097",0.0,0.0,0.0,0,"ONLY");
4084   gMC->Gspos("I096",1,"I097",13.87,0.0,0.0,idrotm[894],"MANY");
4085   gMC->Gspos("I096",32,"I097",13.037,6.2783,0.0,idrotm[917],"MANY");
4086   gMC->Gspos("I096",25,"I097",8.6478,10.844,0.0,idrotm[918],"MANY");
4087   gMC->Gspos("I096",34,"I097",3.2199,14.1072,0.0,idrotm[919],"MANY");
4088   gMC->Gspos("I096",27,"I097",-3.0864,13.5223,0.0,idrotm[920],"MANY");
4089   gMC->Gspos("I096",36,"I097",-9.0219,11.3131,0.0,idrotm[921],"MANY");
4090   gMC->Gspos("I096",29,"I097",-12.4964,6.018,0.0,idrotm[922],"MANY");
4091   gMC->Gspos("I096",2,"I097",-14.47,0.0,0.0,idrotm[906],"MANY");
4092   gMC->Gspos("I096",31,"I097",-12.4964,-6.018,0.0,idrotm[923],"MANY");
4093   gMC->Gspos("I096",26,"I097",-9.0219,-11.3131,0.0,idrotm[924],"MANY");
4094   gMC->Gspos("I096",33,"I097",-3.0864,-13.5223,0.0,idrotm[925],"MANY");
4095   gMC->Gspos("I096",28,"I097",3.2199,-14.1072,0.0,idrotm[926],"MANY");
4096   gMC->Gspos("I096",35,"I097",8.6478,-10.844,0.0,idrotm[927],"MANY");
4097   gMC->Gspos("I096",30,"I097",13.037,-6.2783,0.0,idrotm[928],"MANY");
4098   
4099   
4100   // --- Place volumes of SSD cone ----------------------------------    
4101
4102     
4103   gMC->Gspos("I212",2,"IS01",0.0,0.0,0.0,idrotm[701],"MANY");
4104   gMC->Gspos("I212",1,"IS01",0.0,0.0,0.0,0,"MANY");
4105   gMC->Gspos("I211",1,"IS01",0.0,0.0,-56.5,0,"ONLY");
4106   gMC->Gspos("I217",1,"IS01",0.0,0.0,-44.4,0,"ONLY");             // this will change after PPR to be symmetric
4107   gMC->Gspos("I219",1,"IS01",0.0,0.0,-50.25,0,"ONLY");            // this will change after PPR to be symmetric
4108   gMC->Gspos("I211",2,"IS01",0.0,0.0,56.5,idrotm[701],"ONLY");   
4109   gMC->Gspos("I219",2,"IS01",0.0,0.0,51.65,idrotm[701],"ONLY");   // this will change after PPR to be symmetric
4110   gMC->Gspos("I217",2,"IS01",0.0,0.0,45.8,idrotm[701],"ONLY");    // this will change after PPR to be symmetric
4111   gMC->Gspos("I214",2,"IS01",0.0,0.0,67.25,idrotm[701],"ONLY");   
4112   gMC->Gspos("I213",2,"IS01",0.0,0.0,62.25,idrotm[701],"ONLY");  
4113   gMC->Gspos("I213",1,"IS01",0.0,0.0,-62.25,0,"ONLY");             
4114   gMC->Gspos("I214",1,"IS01",0.0,0.0,-67.25,0,"ONLY");           
4115   gMC->Gspos("I215",19,"IS01",0.0,0.0,0.0,idrotm[702],"MANY");
4116   gMC->Gspos("I215",21,"IS01",0.0,0.0,0.0,idrotm[703],"MANY");
4117   gMC->Gspos("I215",23,"IS01",0.0,0.0,0.0,idrotm[704],"MANY");
4118   gMC->Gspos("I215",24,"IS01",0.0,0.0,0.0,idrotm[705],"MANY");
4119   gMC->Gspos("I215",3,"IS01",0.0,0.0,0.0,idrotm[706],"MANY");
4120   gMC->Gspos("I215",5,"IS01",0.0,0.0,0.0,idrotm[707],"MANY");
4121   gMC->Gspos("I215",7,"IS01",0.0,0.0,0.0,idrotm[708],"MANY");
4122   gMC->Gspos("I215",9,"IS01",0.0,0.0,0.0,idrotm[709],"MANY");
4123   gMC->Gspos("I215",11,"IS01",0.0,0.0,0.0,idrotm[710],"MANY");
4124   gMC->Gspos("I215",13,"IS01",0.0,0.0,0.0,idrotm[711],"MANY");
4125   gMC->Gspos("I215",15,"IS01",0.0,0.0,0.0,idrotm[712],"MANY");
4126   gMC->Gspos("I215",17,"IS01",0.0,0.0,0.0,idrotm[713],"MANY");
4127   gMC->Gspos("I216",9,"IS01",0.0,0.0,45.5,idrotm[714],"ONLY");
4128   gMC->Gspos("I216",11,"IS01",0.0,0.0,45.5,idrotm[715],"ONLY");
4129   gMC->Gspos("I216",12,"IS01",0.0,0.0,45.5,idrotm[716],"ONLY");
4130   gMC->Gspos("I216",3,"IS01",0.0,0.0,45.5,idrotm[717],"ONLY");
4131   gMC->Gspos("I216",5,"IS01",0.0,0.0,45.5,idrotm[718],"ONLY");
4132   gMC->Gspos("I216",7,"IS01",0.0,0.0,45.5,idrotm[719],"ONLY");
4133   gMC->Gspos("I216",10,"IS01",0.0,0.0,-44,idrotm[720],"ONLY");
4134   gMC->Gspos("I216",1,"IS01",0.0,0.0,-44,idrotm[721],"ONLY");
4135   gMC->Gspos("I216",2,"IS01",0.0,0.0,-44,idrotm[722],"ONLY");
4136   gMC->Gspos("I216",4,"IS01",0.0,0.0,-44,idrotm[723],"ONLY");
4137   gMC->Gspos("I216",6,"IS01",0.0,0.0,-44,idrotm[724],"ONLY");
4138   gMC->Gspos("I216",8,"IS01",0.0,0.0,-44,idrotm[725],"ONLY");
4139   gMC->Gspos("I215",1,"IS01",0.0,0.0,0.0,idrotm[726],"MANY");
4140   gMC->Gspos("I215",2,"IS01",0.0,0.0,0.0,idrotm[727],"MANY");
4141   gMC->Gspos("I215",4,"IS01",0.0,0.0,0.0,idrotm[728],"MANY");
4142   gMC->Gspos("I215",6,"IS01",0.0,0.0,0.0,idrotm[729],"MANY");
4143   gMC->Gspos("I215",8,"IS01",0.0,0.0,0.0,idrotm[733],"MANY");
4144   gMC->Gspos("I215",10,"IS01",0.0,0.0,0.0,idrotm[730],"MANY");
4145   gMC->Gspos("I215",12,"IS01",0.0,0.0,0.0,idrotm[731],"MANY");
4146   gMC->Gspos("I215",14,"IS01",0.0,0.0,0.0,idrotm[768],"MANY");
4147   gMC->Gspos("I215",16,"IS01",0.0,0.0,0.0,idrotm[732],"MANY");
4148   gMC->Gspos("I215",18,"IS01",0.0,0.0,0.0,idrotm[734],"MANY");
4149   gMC->Gspos("I215",20,"IS01",0.0,0.0,0.0,idrotm[798],"MANY");
4150   gMC->Gspos("I215",22,"IS01",0.0,0.0,0.0,idrotm[735],"MANY");
4151            
4152                     
4153   // --- Place subdetectors' mother volumes and supports' mother volumes
4154   //     into ITS mother volume ITSD
4155     
4156   gMC->Gspos("IT12",1,"ITSD",0.0,0.0,0.0,0,"ONLY");  // SPD mother volume
4157   gMC->Gspos("IT34",1,"ITSD",0.0,0.0,0.0,0,"ONLY");  // SDD mother volume
4158   gMC->Gspos("IT56",1,"ITSD",0.0,0.0,0.0,0,"ONLY");  // SSD mother volume
4159   gMC->Gspos("IS02",1,"ITSD",0.0,0.0,0.0,0,"ONLY");  // SDD cones/supports
4160   gMC->Gspos("IS01",1,"ITSD",0.0,0.0,0.0,0,"ONLY");  // SSD cones/supports
4161         
4162
4163   // ****************************  SERVICES  *********************************
4164   
4165
4166   // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
4167   //     UPPER PART
4168
4169   dgh[0] = 46.;    
4170   dgh[1] = 46.+1.0;  
4171   dgh[2] = 9.5;
4172   dgh[3] = 12.;
4173   dgh[4] = 168.;
4174   
4175   gMC->Gsvolu("I1CU", "TUBS", idtmed[213], dgh, 5);  
4176   gMC->Gspos("I1CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
4177   gMC->Gspos("I1CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
4178   
4179   // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
4180   //     LOWER PART
4181
4182   dgh[0] = 46.;    
4183   dgh[1] = 46.+1.0;  
4184   dgh[2] = 9.5;
4185   dgh[3] = 192.;
4186   dgh[4] = 348.;
4187   
4188   gMC->Gsvolu("I2CU", "TUBS", idtmed[213], dgh, 5);  
4189   gMC->Gspos("I2CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
4190   gMC->Gspos("I2CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
4191
4192
4193   // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
4194   //     UPPER PART
4195   
4196   dgh[0] = 46.+1.0;  
4197   dgh[1] = 46.+1.0+1.5;   
4198   dgh[2] = 9.5;
4199   dgh[3] = 12.;
4200   dgh[4] = 168.;
4201   
4202   gMC->Gsvolu("I1CC", "TUBS", idtmed[225], dgh, 5);  
4203   gMC->Gspos("I1CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
4204   gMC->Gspos("I1CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");  
4205   
4206   // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
4207   //     LOWER PART
4208   
4209   dgh[0] = 46.+1.0;  
4210   dgh[1] = 46.+1.0+1.5;   
4211   dgh[2] = 9.5;
4212   dgh[3] = 192.;
4213   dgh[4] = 348.;
4214   
4215   gMC->Gsvolu("I2CC", "TUBS", idtmed[225], dgh, 5);  
4216   gMC->Gspos("I2CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
4217   gMC->Gspos("I2CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");  
4218
4219
4220   // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
4221   //     UPPER PART
4222   
4223   dgh[0] = 46.;  
4224   dgh[1] = 56.;
4225   dgh[2] = 2.25;
4226   dgh[3] = 12.;
4227   dgh[4] = 168.;
4228   
4229   gMC->Gsvolu("IPA1", "TUBS", idtmed[210], dgh, 5);  
4230   gMC->Gspos("IPA1", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");  
4231   gMC->Gspos("IPA1", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY"); 
4232   
4233   // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
4234   //     LOWER PART
4235   
4236   dgh[0] = 46.;  
4237   dgh[1] = 56.;
4238   dgh[2] = 2.25;
4239   dgh[3] = 192.;
4240   dgh[4] = 348.;
4241   
4242   gMC->Gsvolu("IPA2", "TUBS", idtmed[210], dgh, 5);  
4243   gMC->Gspos("IPA2", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");  
4244   gMC->Gspos("IPA2", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY"); 
4245
4246
4247   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - COPPER PART
4248   //     UPPER PART
4249   
4250   dgh[0] = (ztpc-97.5)/2.;
4251   dgh[1] = 46.2;     
4252   dgh[2] = 46.2+1.0;  
4253   dgh[3] = 62.3;     
4254   dgh[4] = 62.3+1.0;   
4255   dgh[5] = 12.;    
4256   dgh[6] = 168.;
4257   gMC->Gsvolu("ICU1", "CONS", idtmed[213], dgh, 7);    
4258   gMC->Gspos("ICU1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");   
4259   
4260   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - COPPER PART
4261   //     LOWER PART
4262   
4263   dgh[0] = (ztpc-97.5)/2.;
4264   dgh[1] = 46.2;      
4265   dgh[2] = 46.2+1.0;  
4266   dgh[3] = 62.3;      
4267   dgh[4] = 62.3+1.0;  
4268   dgh[5] = 192.;    
4269   dgh[6] = 348.;
4270   gMC->Gsvolu("ICU2", "CONS", idtmed[213], dgh, 7);    
4271   gMC->Gspos("ICU2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");  
4272
4273
4274    // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - CARBON PART
4275    //     UPPER PART
4276   
4277   dgh[0] = (ztpc-97.5)/2.;
4278   dgh[1] = 46.2+1.0;      
4279   dgh[2] = 46.2+1.0+1.5;  
4280   dgh[3] = 62.3+1.0;      
4281   dgh[4] = 62.3+1.0+1.5;  
4282   dgh[5] = 12.;    
4283   dgh[6] = 168.;  
4284   gMC->Gsvolu("ICC1", "CONS", idtmed[225], dgh, 7);    
4285   gMC->Gspos("ICC1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");   
4286   
4287   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - CARBON PART
4288   //     LOWER PART
4289   
4290   dgh[0] = (ztpc-97.5)/2.;
4291   dgh[1] = 46.2+1.0;    
4292   dgh[2] = 46.2+1.0+1.5;
4293   dgh[3] = 62.3+1.0;    
4294   dgh[4] = 62.3+1.0+1.5;
4295   dgh[5] = 192.;    
4296   dgh[6] = 348.;  
4297   gMC->Gsvolu("ICC2", "CONS", idtmed[225], dgh, 7);    
4298   gMC->Gspos("ICC2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");  
4299    
4300   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - COPPER PART
4301   //     UPPER PART
4302     
4303   dgh[0] = 62.1; 
4304   dgh[1] = 74.5;
4305   dgh[2] = 0.5;
4306   dgh[3] = 12.;
4307   dgh[4] = 168.;
4308   gMC->Gsvolu("ICU3", "TUBS", idtmed[213], dgh, 5);    
4309   gMC->Gspos("ICU3", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");  
4310
4311   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - COPPER PART
4312   //     LOWER PART
4313   
4314   dgh[0] = 62.1;  
4315   dgh[1] = 74.5;
4316   dgh[2] = 0.5;
4317   dgh[3] = 192.;
4318   dgh[4] = 348.;
4319   gMC->Gsvolu("ICU4", "TUBS", idtmed[213], dgh, 5);    
4320   gMC->Gspos("ICU4", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");     
4321      
4322   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - CARBON PART
4323   //     UPPER PART
4324
4325   dgh[0] = 62.1;  
4326   dgh[1] = 74.5;
4327   dgh[2] = 0.75;
4328   dgh[3] = 12.;
4329   dgh[4] = 168.;
4330   gMC->Gsvolu("ICC3", "TUBS", idtmed[225], dgh, 5);    
4331   gMC->Gspos("ICC3", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");   
4332     
4333   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - CARBON PART
4334   //     LOWER PART
4335
4336   dgh[0] = 62.1;  
4337   dgh[1] = 74.5;
4338   dgh[2] = 0.75;
4339   dgh[3] = 192.;
4340   dgh[4] = 348.;
4341   gMC->Gsvolu("ICC4", "TUBS", idtmed[225], dgh, 5);    
4342   gMC->Gspos("ICC4", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");  
4343   
4344   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
4345   //     THE ABSORBER - COPPER PART - UPPER PART
4346   
4347   dgh[0] = 46.;      
4348   dgh[1] = 46.+1.0;  
4349   dgh[2] = (ztpc-97.5+1.5)/2.;
4350   dgh[3] = 12.;
4351   dgh[4] = 168.;
4352   gMC->Gsvolu("ICU5", "TUBS", idtmed[213], dgh, 5);   
4353   gMC->Gspos("ICU5", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");  
4354   
4355   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
4356   //     THE ABSORBER - COPPER PART - LOWER PART
4357   
4358   dgh[0] = 46.;  
4359   dgh[1] = 46.+1.0;  
4360   dgh[2] = (ztpc-97.5+1.5)/2.;
4361   dgh[3] = 192.;
4362   dgh[4] = 348.;  
4363   gMC->Gsvolu("ICU6", "TUBS", idtmed[213], dgh, 5);   
4364   gMC->Gspos("ICU6", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");    
4365   
4366   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
4367   //     THE ABSORBER - CARBON PART - UPPER PART
4368   
4369   dgh[0] = 46.+1.0;  
4370   dgh[1] = 46.+1.0+1.5; 
4371   dgh[2] = (ztpc-97.5)/2.;
4372   dgh[3] = 12.;
4373   dgh[4] = 168.;  
4374   gMC->Gsvolu("ICC5", "TUBS", idtmed[225], dgh, 5);   
4375   gMC->Gspos("ICC5", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");   
4376   
4377   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
4378   //     THE ABSORBER - CARBON PART - LOWER PART
4379   
4380   dgh[0] = 46.+1.0;   
4381   dgh[1] = 46.+1.0+1.5;  
4382   dgh[2] = (ztpc-97.5)/2.;
4383   dgh[3] = 192.;
4384   dgh[4] = 348.;  
4385   gMC->Gsvolu("ICC6", "TUBS", idtmed[225], dgh, 5);   
4386   gMC->Gspos("ICC6", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");      
4387
4388   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
4389   //     COPPER PART - UPPER PART
4390     
4391   dgh[0] = 46.;   
4392   dgh[1] = 74.5;
4393   dgh[2] = 0.5;
4394   dgh[3] = 12.;
4395   dgh[4] = 168.;  
4396   gMC->Gsvolu("ICU7", "TUBS", idtmed[213], dgh, 5);   
4397   gMC->Gspos("ICU7", 1, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), 0, "ONLY");  
4398   
4399   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
4400   //     COPPER PART - LOWER PART
4401     
4402   dgh[0] = 46.; 
4403   dgh[1] = 74.5;
4404   dgh[2] = 0.5;
4405   dgh[3] = 192.;
4406   dgh[4] = 348.;   
4407   gMC->Gsvolu("ICU8", "TUBS", idtmed[213], dgh, 5);   
4408   gMC->Gspos("ICU8", 1, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), 0, "ONLY");      
4409     
4410   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
4411   //     CARBON PART - UPPER PART
4412   
4413   dgh[0] = 46.+1.0;  
4414   dgh[1] = 74.5;
4415   dgh[2] = 0.75;
4416   dgh[3] = 12.;
4417   dgh[4] = 168.;   
4418   gMC->Gsvolu("ICC7", "TUBS", idtmed[225], dgh, 5);   
4419   gMC->Gspos("ICC7", 1, "ITSV", 0., 0., -(ztpc+dgh[2]), 0, "ONLY"); 
4420   
4421   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
4422   //     CARBON PART - LOWER PART
4423   
4424   dgh[0] = 46.+1.0;  
4425   dgh[1] = 74.5;
4426   dgh[2] = 0.75;
4427   dgh[3] = 192.;
4428   dgh[4] = 348.;     
4429   gMC->Gsvolu("ICC8", "TUBS", idtmed[225], dgh, 5);   
4430   gMC->Gspos("ICC8", 1, "ITSV", 0., 0., -(ztpc+dgh[2]), 0, "ONLY");        
4431     
4432   // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - UPPER PART
4433   
4434   dgh[0] = 74.5;
4435   dgh[1] = 79.5;
4436   dgh[2] = 2.5;
4437   dgh[3] = 12.;
4438   dgh[4] = 168.;    
4439   gMC->Gsvolu("IHK1", "TUBS", idtmed[264], dgh, 5);  
4440   gMC->Gspos("IHK1", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");   
4441   
4442   // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - LOWER PART
4443   
4444   dgh[0] = 74.5;
4445   dgh[1] = 79.5;
4446   dgh[2] = 2.5;
4447   dgh[3] = 192.;
4448   dgh[4] = 348.;    
4449   gMC->Gsvolu("IHK2", "TUBS", idtmed[264], dgh, 5);  
4450   gMC->Gspos("IHK2", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");      
4451   
4452   // --- DEFINE RAILS BETWEEN THE ITS AND THE TPC
4453   
4454   if (rails == 1) {
4455   
4456      dgh[0] = 2.;          
4457      dgh[1] = 8.;           
4458      dgh[2] = 190.;         
4459      gMC->Gsvolu("IRA1", "BOX ", idtmed[268], dgh, 3);
4460      gMC->Gspos("IRA1", 1, "ITSV", 53.5, 0., -69.5, 0, "ONLY");   
4461      gMC->Gsvolu("IRA2", "BOX ", idtmed[268], dgh, 3);    
4462      gMC->Gspos("IRA2", 1, "ITSV", -53.5, 0., -69.5, 0, "ONLY");    
4463
4464      dgh[0] = 2.-0.5;    // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2      
4465      dgh[1] = 8.-0.5;    // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2       
4466      dgh[2] = 190.;         
4467      gMC->Gsvolu("IRA3", "BOX ", idtmed[205], dgh, 3);   
4468      gMC->Gspos("IRA3", 1, "IRA1", 0., 0., 0., 0, "ONLY");   
4469      gMC->Gsvolu("IRA4", "BOX ", idtmed[205], dgh, 3);     
4470      gMC->Gspos("IRA4", 1, "IRA2", 0., 0., 0., 0, "ONLY");    
4471
4472   }
4473
4474   // --- DEFINE CYLINDERS HOLDING RAILS BETWEEN THE ITS AND THE TPC
4475   
4476   dgh[0] = 56.9;    
4477   dgh[1] = 59.;
4478   dgh[2] = 0.6;    
4479   gMC->Gsvolu("ICYL", "TUBE", idtmed[210], dgh, 3);   
4480   gMC->Gspos("ICYL", 1, "ALIC", 0., 0., 74.1, 0, "ONLY");   
4481   gMC->Gspos("ICYL", 2, "ALIC", 0., 0., -74.1, idrotm[200], "ONLY");  
4482
4483   // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE CYLINDERS
4484
4485   dgh[0] = 0.;        
4486   dgh[1] = 3.;         
4487   dgh[2] = 5.;  // 5. comes from the fact that the volume has to be 567.6/2 cm^3       
4488   gMC->Gsvolu("ISR1", "TUBE", idtmed[284], dgh, 3);   
4489   gMC->Gspos("ISR1", 1, "ALIC", 54.9, 11., 79.5, 0, "ONLY");   
4490   gMC->Gspos("ISR1", 2, "ALIC", 54.9, -11., 79.5, 0, "ONLY");   
4491   gMC->Gspos("ISR1", 3, "ALIC", -54.9, 11., 79.5, 0, "ONLY"); 
4492   gMC->Gspos("ISR1", 4, "ALIC", -54.9, -11., 79.5, 0, "ONLY");  
4493   gMC->Gspos("ISR1", 5, "ALIC", 54.9, 11., -79.5, 0, "ONLY");   
4494   gMC->Gspos("ISR1", 6, "ALIC", 54.9, -11., -79.5, 0, "ONLY");   
4495   gMC->Gspos("ISR1", 7, "ALIC", -54.9, 11., -79.5, 0, "ONLY"); 
4496   gMC->Gspos("ISR1", 8, "ALIC", -54.9, -11., -79.5, 0, "ONLY");         
4497   
4498   // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE ABSORBER
4499
4500   dgh[0] = 5.;        
4501   dgh[1] = 12.;         
4502   dgh[2] = 5.;         
4503   gMC->Gsvolu("ISR2", "BOX ", idtmed[210], dgh, 3);   
4504   gMC->Gspos("ISR2", 1, "ALIC", 53.5, 0., 125.5, 0, "ONLY");
4505   gMC->Gsvolu("ISR3", "BOX ", idtmed[210], dgh, 3);   
4506   gMC->Gspos("ISR3", 1, "ALIC", -53.5, 0., 125.5, 0, "ONLY");  
4507   
4508   dgh[0] = 5.-2.;        
4509   dgh[1] = 12.-2.;         
4510   dgh[2] = 5.;         
4511   gMC->Gsvolu("ISR4", "BOX ", idtmed[205], dgh, 3);   
4512   gMC->Gspos("ISR4", 1, "ISR2", 0., 0., 0., 0, "ONLY");     
4513   gMC->Gsvolu("ISR5", "BOX ", idtmed[205], dgh, 3);   
4514   gMC->Gspos("ISR5", 1, "ISR3", 0., 0., 0., 0, "ONLY");
4515   
4516   // --- DEFINE SUPPORTS TO ATTACH THE ITS TO THE TPC
4517   
4518   dgh[0] = 0.;        
4519   dgh[1] = 5.;         
4520   dgh[2] = 2.;         
4521   gMC->Gsvolu("ISR6", "TUBE", idtmed[210], dgh, 3);   
4522   gMC->Gspos("ISR6", 1, "ALIC", 0., 54., 77., 0, "ONLY"); 
4523   gMC->Gspos("ISR6", 2, "ALIC", 0., 54., -77., 0, "ONLY"); 
4524   gMC->Gspos("ISR6", 3, "ALIC", 0., -54., -77., 0, "ONLY");                   
4525
4526   // --- Outputs the geometry tree in the EUCLID/CAD format 
4527   
4528   if (fEuclidOut) {
4529     gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5);
4530   }
4531
4532 }
4533 //_____________________________________________________________________________
4534 void AliITSvPPRasymm::CreateMaterials(){
4535 ////////////////////////////////////////////////////////////////////////
4536   //
4537   // Create ITS materials
4538   //     This function defines the default materials used in the Geant
4539   // Monte Carlo simulations for the geometries AliITSv1, AliITSv3,
4540   // AliITSvPPRasymm.
4541   // In general it is automatically replaced by
4542   // the CreatMaterials routine defined in AliITSv?. Should the function
4543   // CreateMaterials not exist for the geometry version you are using this
4544   // one is used. See the definition found in AliITSv5 or the other routine
4545   // for a complete definition.
4546   //
4547   
4548   Int_t  isxfld  = gAlice->Field()->Integ();
4549   Float_t sxmgmx = gAlice->Field()->Max();
4550
4551   // Freon
4552   Float_t afre[2]  = { 12.011,18.9984032 };
4553   Float_t zfre[2]  = { 6.,9. };
4554   Float_t wfre[2]  = { 5.,12. };
4555   Float_t densfre  = 1.5;  
4556
4557   // --- Define the various materials and media for GEANT --- 
4558   
4559   AliMaterial(1,"SI$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4560   AliMedium(1,"SI$",1,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4561
4562   AliMaterial(2,"SPD SI CHIP$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4563   AliMedium(2,"SPD SI CHIP$",2,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,   0);
4564
4565   AliMaterial(3,"SPD SI BUS$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4566   AliMedium(3,"SPD SI BUS$",3,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4567
4568   AliMaterial(4,"C (M55J)$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
4569   AliMedium(4,"C (M55J)$",4,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4570
4571   AliMaterial(5,"AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4572   AliMedium(5,"AIR$",5,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
4573
4574   AliMaterial(6,"GEN AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4575   AliMedium(6,"GEN AIR$",6,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
4576
4577   AliMaterial(7,"SDD SI CHIP$",0.374952E+02,0.178184E+02,0.24485E+01,0.76931E+01,0.99900E+03);
4578   AliMedium(7,"SDD SI CHIP$",7,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4579
4580   AliMaterial(9,"SDD C (M55J)$",0.123565E+02,0.64561E+01,0.18097E+01,0.229570E+02,0.99900E+03);
4581   AliMedium(9,"SDD C (M55J)$",9,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4582
4583   AliMaterial(10,"SDD AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4584   AliMedium(10,"SDD AIR$",10,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
4585
4586   AliMaterial(11,"AL$",0.26982E+02,0.13000E+02,0.26989E+01,0.89000E+01,0.99900E+03);
4587   AliMedium(11,"AL$",11,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4588
4589   AliMaterial(12,"WATER$",0.14322E+02,0.72167E+01,0.10000E+01,0.35759E+02,0.94951E+02);
4590   AliMedium(12,"WATER$",12,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4591
4592   AliMixture(13,"Freon$",afre,zfre,densfre,-2,wfre);
4593   AliMedium(13,"Freon$",13,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4594
4595   AliMaterial(14,"COPPER$",0.63546E+02,0.29000E+02,0.89600E+01,0.14300E+01,0.99900E+03);
4596   AliMedium(14,"COPPER$",14,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4597
4598   AliMaterial(15,"CERAMICS$",0.22314E+02,0.10856E+02,0.36000E+01,0.76200E+01,0.31901E+02);
4599   AliMedium(15,"CERAMICS$",15,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4600
4601   AliMaterial(20,"SSD C (M55J)$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
4602   AliMedium(20,"SSD C (M55J)$",20,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4603
4604   AliMaterial(21,"SSD AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4605   AliMedium(21,"SSD AIR$",21,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
4606
4607   AliMaterial(25,"G10FR4$",0.17749E+02,0.88750E+01,0.18000E+01,0.21822E+02,0.99900E+03);
4608   AliMedium(25,"G10FR4$",25,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4609
4610   AliMaterial(26,"GEN C (M55J)$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
4611   AliMedium(26,"GEN C (M55J)$",26,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4612
4613   AliMaterial(27,"GEN Air$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4614   AliMedium(27,"GEN Air$",27,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
4615
4616   AliMaterial(51,"SPD SI$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4617   AliMedium(51,"SPD SI$",51,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4618
4619   AliMaterial(52,"SPD SI CHIP$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4620   AliMedium(52,"SPD SI CHIP$",52,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4621
4622   AliMaterial(53,"SPD SI BUS$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4623   AliMedium(53,"SPD SI BUS$",53,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4624
4625   AliMaterial(54,"SPD C (M55J)$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
4626   AliMedium(54,"SPD C (M55J)$",54,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4627
4628   AliMaterial(55,"SPD AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4629   AliMedium(55,"SPD AIR$",55,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
4630
4631   AliMaterial(56,"SPD KAPTON(POLYCH2)$",0.14000E+02,0.71770E+01,0.13000E+01,0.31270E+02,0.99900E+03);
4632   AliMedium(56,"SPD KAPTON(POLYCH2)$",56,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4633
4634   AliMaterial(61,"EPOXY$",0.17749E+02,0.88750E+01,0.18000E+01,0.21822E+02,0.99900E+03);
4635   AliMedium(61,"EPOXY$",61,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4636
4637   AliMaterial(62,"SILICON$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4638   AliMedium(62,"SILICON$",62,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4639
4640   AliMaterial(63,"KAPTONH(POLYCH2)$",0.14000E+02,0.71770E+01,0.13000E+01,0.31270E+02,0.99900E+03);
4641   AliMedium(63,"KAPTONH(POLYCH2)$",63,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4642
4643   AliMaterial(64,"ALUMINUM$",0.26982E+02,0.13000E+02,0.26989E+01,0.89000E+01,0.99900E+03);
4644   AliMedium(64,"ALUMINUM$",64,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4645
4646   AliMaterial(65,"INOX$",0.55098E+02,0.2572E+02,0.7900E+01,0.17800E+01,0.99900E+03);
4647   AliMedium(65,"INOX$",65,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4648
4649   AliMaterial(68,"ROHACELL$",0.123974E+02,0.62363E+01,0.500E-01,0.80986E+03,0.99900E+03);
4650   AliMedium(68,"ROHACELL$",68,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4651
4652   AliMaterial(69,"SDD C AL (M55J)$",0.138802E+02,0.71315E+01,0.19837E+01,0.176542E+02,0.99900E+03);
4653   AliMedium(69,"SDD C AL (M55J)$",69,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4654
4655   AliMaterial(70,"SDDKAPTON (POLYCH2)$",0.14000E+02,0.71770E+01,0.13000E+01,0.31270E+02,0.99900E+03);
4656   AliMedium(70,"SDDKAPTON (POLYCH2)$",70,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4657
4658   AliMaterial(71,"ITS SANDW A$",0.12011E+02,0.60000E+01,0.2115E+00,0.17479E+03,0.99900E+03);
4659   AliMedium(71,"ITS SANDW A$",71,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4660
4661   AliMaterial(72,"ITS SANDW B$",0.12011E+02,0.60000E+01,0.27000E+00,0.18956E+03,0.99900E+03);
4662   AliMedium(72,"ITS SANDW B$",72,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4663
4664   AliMaterial(73,"ITS SANDW C$",0.12011E+02,0.60000E+01,0.41000E+00,0.90868E+02,0.99900E+03);
4665   AliMedium(73,"ITS SANDW C$",73,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4666
4667   AliMaterial(74,"HEAT COND GLUE$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
4668   AliMedium(74,"HEAT COND GLUE$",74,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4669
4670   AliMaterial(75,"ELASTO SIL$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4671   AliMedium(75,"ELASTO SIL$",75,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4672
4673   AliMaterial(76,"SPDBUS(AL+KPT+EPOX)$",0.19509E+02,0.96502E+01,0.19060E+01,0.15413E+02,0.99900E+03);
4674   AliMedium(76,"SPDBUS(AL+KPT+EPOX)$",76,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4675                
4676   AliMaterial(77,"SDD X7R capacitors$",0.1157516E+03,0.477056E+02,0.67200E+01,0.14236E+01,0.99900E+03);
4677   AliMedium(77,"SDD X7R capacitors$",77,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4678
4679   AliMaterial(78,"SDD ruby sph. Al2O3$",0.218101E+02,0.106467E+02,0.39700E+01,0.48539E+01,0.99900E+03);
4680   AliMedium(78,"SDD ruby sph. Al2O3$",78,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4681
4682   AliMaterial(79,"SDD SI insensitive$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4683   AliMedium(79,"SDD SI insensitive$",79,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4684
4685   AliMaterial(80,"SDD HV microcable$",0.159379E+02,0.78598E+01,0.16087E+01,0.217906E+02,0.99900E+03);
4686   AliMedium(80,"SDD HV microcable$",80,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4687
4688   AliMaterial(81,"SDD LV+signal cable$",0.223689E+02,0.108531+02,0.21035E+01,0.13440E+02,0.99900E+03);
4689   AliMedium(81,"SDD LV+signal cable$",81,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4690
4691   AliMaterial(82,"SDD hybrid microcab$",0.218254E+02,0.106001E+02,0.20502E+01,0.137308E+02,0.99900E+03);
4692   AliMedium(82,"SDD hybrid microcab$",82,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4693
4694   AliMaterial(83,"SDD anode microcab$",0.186438E+02,0.91193E+01,0.17854E+01,0.176451E+02,0.99900E+03);
4695   AliMedium(83,"SDD anode microcab$",83,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4696
4697   AliMaterial(84,"SDD/SSD rings$",0.123565E+02,0.64561E+01,0.18097E+01,0.229570E+02,0.99900E+03);
4698   AliMedium(84,"SDD/SSD rings$",84,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4699
4700   AliMaterial(85,"inox/alum$",0.321502E+02,0.153383E+02,0.30705E+01,0.69197E+01,0.99900E+03);
4701   AliMedium(85,"inox/alum$",85,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4702
4703
4704   // Special media
4705
4706   AliMaterial(90,"SPD shield$", 12.011, 6., 1.93/10. , 22.1*10., 999);
4707   AliMedium(90,"SPD shield$",90, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
4708
4709   AliMaterial(91, "SPD End ladder$", 55.845, 26., 7.87/10., 1.76*10., 999); 
4710   AliMedium(91, "SPD End ladder$",91, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
4711
4712   AliMaterial(92, "SPD cone$",28.0855, 14., 2.33, 9.36, 999);    
4713   AliMedium(92, "SPD cone$",   92, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);   
4714
4715   AliMaterial(93, "SDD End ladder$", 69.9298, 29.8246, 0.3824, 36.5103, 999); 
4716   AliMedium(93, "SDD End ladder$",93, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
4717
4718   AliMaterial(94, "SDD cone$",63.546, 29., 1.15, 1.265, 999);     
4719   AliMedium(94, "SDD cone$",   94, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
4720
4721   AliMaterial(95, "SSD End ladder$", 32.0988, 15.4021, 0.68, 35.3238, 999); 
4722   AliMedium(95, "SSD End ladder$",95, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
4723   
4724   AliMaterial(96, "SSD cone$",63.546, 29., 1.15, 1.265, 999); 
4725   AliMedium(96, "SSD cone$",   96, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
4726
4727 }
4728 //______________________________________________________________________
4729 void AliITSvPPRasymm::InitAliITSgeom(){
4730 //     Based on the geometry tree defined in Geant 3.21, this
4731 // routine initilizes the Class AliITSgeom from the Geant 3.21 ITS geometry
4732 // sturture.
4733     if(!(dynamic_cast<TGeant3*>(gMC))) {
4734         Error("InitAliITSgeom",
4735                 "Wrong Monte Carlo. InitAliITSgeom uses TGeant3 calls");
4736         return;
4737     } // end if
4738     cout << "Reading Geometry transformation directly from Geant 3." << endl;
4739     const Int_t nlayers = 6;
4740     const Int_t ndeep = 9;
4741     Int_t itsGeomTreeNames[nlayers][ndeep],lnam[20],lnum[20];
4742     Int_t nlad[nlayers],ndet[nlayers];
4743     Double_t t[3],r[10];
4744     Float_t  par[20],att[20];
4745     Int_t    npar,natt,idshape,imat,imed;
4746     AliITSGeant3Geometry *ig = new AliITSGeant3Geometry();
4747     Int_t mod,lay,lad,det,i,j,k;
4748     Char_t names[nlayers][ndeep][4];
4749     Int_t itsGeomTreeCopys[nlayers][ndeep];
4750     if(fMinorVersion == 1){ // Option A
4751     Char_t *namesA[nlayers][ndeep] = {
4752      {"ALIC","ITSV","ITSD","IT12","I12A","I10A","I103","I101","ITS1"}, // lay=1
4753      {"ALIC","ITSV","ITSD","IT12","I12A","I20A","I1D3","I1D1","ITS2"}, // lay=2
4754      {"ALIC","ITSV","ITSD","IT34","I004","I302","ITS3","    ","    "}, // lay=3
4755      {"ALIC","ITSV","ITSD","IT34","I005","I402","ITS4","    ","    "}, // lay=4
4756      {"ALIC","ITSV","ITSD","IT56","I565","I562","ITS5","    ","    "}, // lay=5
4757      {"ALIC","ITSV","ITSD","IT56","I569","I566","ITS6","    ","    "}};// lay=6
4758     Int_t itsGeomTreeCopysA[nlayers][ndeep]= {{1,1,1,1,10, 2, 4,1,1},// lay=1
4759                                               {1,1,1,1,10, 4, 4,1,1},// lay=2
4760                                               {1,1,1,1,14, 6, 1,0,0},// lay=3
4761                                               {1,1,1,1,22, 8, 1,0,0},// lay=4
4762                                               {1,1,1,1,34,22, 1,0,0},// lay=5
4763                                               {1,1,1,1,38,25, 1,0,0}};//lay=6
4764     for(i=0;i<nlayers;i++)for(j=0;j<ndeep;j++){
4765         for(k=0;k<4;k++) names[i][j][k] = namesA[i][j][k];
4766         itsGeomTreeCopys[i][j] = itsGeomTreeCopysA[i][j];
4767     } // end for i,j
4768     }else if(fMinorVersion == 2){ // Option B
4769     Char_t *namesB[nlayers][ndeep] = {
4770      {"ALIC","ITSV","ITSD","IT12","I12B","I10B","I107","I101","ITS1"}, // lay=1
4771      {"ALIC","ITSV","ITSD","IT12","I12B","I20B","I1D7","I1D1","ITS2"}, // lay=2
4772      {"ALIC","ITSV","ITSD","IT34","I004","I302","ITS3","    ","    "}, // lay=3
4773      {"ALIC","ITSV","ITSD","IT34","I005","I402","ITS4","    ","    "}, // lay=4
4774      {"ALIC","ITSV","ITSD","IT56","I565","I562","ITS5","    ","    "}, // lay=5
4775      {"ALIC","ITSV","ITSD","IT56","I569","I566","ITS6","    ","    "}};// lay=6
4776     Int_t itsGeomTreeCopysB[nlayers][ndeep]= {{1,1,1,1,10, 2, 4,1,1},// lay=1
4777                                               {1,1,1,1,10, 4, 4,1,1},// lay=2
4778                                               {1,1,1,1,14, 6, 1,0,0},// lay=3
4779                                               {1,1,1,1,22, 8, 1,0,0},// lay=4
4780                                               {1,1,1,1,34,22, 1,0,0},// lay=5
4781                                               {1,1,1,1,38,25, 1,0,0}};//lay=6
4782     for(i=0;i<nlayers;i++)for(j=0;j<ndeep;j++){
4783         for(k=0;k<4;k++) names[i][j][k] = namesB[i][j][k];
4784         itsGeomTreeCopys[i][j] = itsGeomTreeCopysB[i][j];
4785     } // end for i,j
4786     } // end if fMinorVersion
4787     // Sorry, but this is not very pritty code. It should be replaced
4788     // at some point with a version that can search through the geometry
4789     // tree its self.
4790     cout << "Reading Geometry informaton from Geant3 common blocks" << endl;
4791     for(i=0;i<20;i++) lnam[i] = lnum[i] = 0;
4792     for(i=0;i<nlayers;i++)for(j=0;j<ndeep;j++) 
4793         itsGeomTreeNames[i][j] = ig->StringToInt(names[i][j]);
4794     mod = 0;
4795     for(i=0;i<nlayers;i++){
4796         k = 1;
4797         for(j=0;j<ndeep;j++) if(itsGeomTreeCopys[i][j]!=0)
4798             k *= TMath::Abs(itsGeomTreeCopys[i][j]);
4799         mod += k;
4800     } // end for i
4801
4802     if(fITSgeom!=0) delete fITSgeom;
4803     nlad[0]=20;nlad[1]=40;nlad[2]=14;nlad[3]=22;nlad[4]=34;nlad[5]=38;
4804     ndet[0]=4;ndet[1]=4;ndet[2]=6;ndet[3]=8;ndet[4]=22;ndet[5]=25;
4805     fITSgeom = new AliITSgeom(0,6,nlad,ndet,mod);
4806     mod = -1;
4807     for(lay=1;lay<=nlayers;lay++){
4808         for(j=0;j<ndeep;j++) lnam[j] = itsGeomTreeNames[lay-1][j];
4809         for(j=0;j<ndeep;j++) lnum[j] = itsGeomTreeCopys[lay-1][j];
4810         switch (lay){
4811         case 1: case 2: // layers 1 and 2 are a bit special
4812             lad = 0;
4813             for(j=1;j<=itsGeomTreeCopys[lay-1][4];j++){
4814                 lnum[4] = j;
4815                 for(k=1;k<=itsGeomTreeCopys[lay-1][5];k++){
4816                     lad++;
4817                     lnum[5] = k;
4818                     for(det=1;det<=itsGeomTreeCopys[lay-1][6];det++){
4819                         lnum[6] = det;
4820                         mod++;
4821                         ig->GetGeometry(ndeep,lnam,lnum,t,r,idshape,npar,natt,
4822                                         par,att,imat,imed);
4823                         fITSgeom->CreatMatrix(mod,lay,lad,det,kSPD,t,r);
4824                         if(!(fITSgeom->IsShapeDefined((Int_t)kSPD)))
4825                              fITSgeom->ReSetShape(kSPD,
4826                                                   new AliITSgeomSPD425Short());
4827                     } // end for det
4828                 } // end for k
4829             } // end for j
4830             break;
4831         case 3: case 4: case 5: case 6: // layers 3-6
4832             lnum[6] = 1;
4833             for(lad=1;lad<=itsGeomTreeCopys[lay-1][4];lad++){
4834                 lnum[4] = lad;
4835                 for(det=1;det<=itsGeomTreeCopys[lay-1][5];det++){
4836                     lnum[5] = det;
4837                     mod++;
4838                     ig->GetGeometry(7,lnam,lnum,t,r,idshape,npar,natt,
4839                                     par,att,imat,imed);
4840                     switch (lay){
4841                     case 3: case 4:
4842                         fITSgeom->CreatMatrix(mod,lay,lad,det,kSDD,t,r);
4843                         if(!(fITSgeom->IsShapeDefined(kSDD))) 
4844                             fITSgeom->ReSetShape(kSDD,new AliITSgeomSDD256());
4845                             break;
4846                         case 5:
4847                             fITSgeom->CreatMatrix(mod,lay,lad,det,kSSD,t,r);
4848                             if(!(fITSgeom->IsShapeDefined(kSSD))) 
4849                                 fITSgeom->ReSetShape(kSSD,
4850                                                   new AliITSgeomSSD275and75());
4851                             break;
4852                         case 6:
4853                             fITSgeom->CreatMatrix(mod,lay,lad,det,kSSDp,t,r);
4854                             if(!(fITSgeom->IsShapeDefined(kSSDp))) 
4855                                 fITSgeom->ReSetShape(kSSDp,
4856                                                   new AliITSgeomSSD75and275());
4857                             break;
4858                         } // end switch
4859                 } // end for det
4860             } // end for lad
4861             break;
4862         } // end switch
4863     } // end for lay
4864     return;
4865 }
4866 //_____________________________________________________________________________
4867 void AliITSvPPRasymm::Init(){
4868 ////////////////////////////////////////////////////////////////////////
4869 //     Initialise the ITS after it has been created.
4870 ////////////////////////////////////////////////////////////////////////
4871     Int_t i;
4872
4873     cout << endl;
4874     for(i=0;i<26;i++) cout << "*";
4875     cout << " ITSvPPRasymm" << fMinorVersion << "_Init ";
4876     for(i=0;i<25;i++) cout << "*";cout << endl;
4877 //
4878     if(fRead[0]=='\0') strncpy(fRead,fEuclidGeomDet,60);
4879     if(fWrite[0]=='\0') strncpy(fWrite,fEuclidGeomDet,60);
4880     if(fITSgeom!=0) delete fITSgeom;
4881     fITSgeom = new AliITSgeom();
4882     if(fGeomDetIn) fITSgeom->ReadNewFile(fRead);
4883     if(!fGeomDetIn) this->InitAliITSgeom();
4884     if(fGeomDetOut) fITSgeom->WriteNewFile(fWrite);
4885     AliITS::Init();
4886 //
4887     for(i=0;i<72;i++) cout << "*";
4888     cout << endl;
4889 }
4890 //______________________________________________________________________
4891 void AliITSvPPRasymm::DrawModule(){
4892 ////////////////////////////////////////////////////////////////////////
4893 //     Draw a shaded view of the FMD version 8.
4894 ////////////////////////////////////////////////////////////////////////
4895   
4896   // Set everything unseen
4897   gMC->Gsatt("*", "seen", -1);
4898   // 
4899   // Set ALIC mother visible
4900   gMC->Gsatt("ALIC","SEEN",0);
4901   //
4902   // Set the volumes visible
4903   gMC->Gsatt("ITSD","SEEN",0);
4904   gMC->Gsatt("ITS1","SEEN",1);
4905   gMC->Gsatt("ITS2","SEEN",1);
4906   gMC->Gsatt("ITS3","SEEN",1);
4907   gMC->Gsatt("ITS4","SEEN",1);
4908   gMC->Gsatt("ITS5","SEEN",1);
4909   gMC->Gsatt("ITS6","SEEN",1);
4910
4911   gMC->Gsatt("IPCB","SEEN",1);
4912   gMC->Gsatt("ICO2","SEEN",1);
4913   gMC->Gsatt("ICER","SEEN",0);
4914   gMC->Gsatt("ISI2","SEEN",0);
4915   gMC->Gsatt("IPLA","SEEN",0);
4916   gMC->Gsatt("ICO3","SEEN",0);
4917   gMC->Gsatt("IEPX","SEEN",0);
4918   gMC->Gsatt("ISI3","SEEN",1);
4919   gMC->Gsatt("ISUP","SEEN",0);
4920   gMC->Gsatt("ICHO","SEEN",0);
4921   gMC->Gsatt("ICMO","SEEN",0);
4922   gMC->Gsatt("ICMD","SEEN",0);
4923   gMC->Gsatt("ICCO","SEEN",1);
4924   gMC->Gsatt("ICCM","SEEN",0);
4925   gMC->Gsatt("ITMD","SEEN",0);
4926   gMC->Gsatt("ITTT","SEEN",1);
4927
4928   //
4929   gMC->Gdopt("hide", "on");
4930   gMC->Gdopt("shad", "on");
4931   gMC->Gsatt("*", "fill", 7);
4932   gMC->SetClipBox(".");
4933   gMC->SetClipBox("*", 0, 300, -300, 300, -300, 300);
4934   gMC->DefaultRange();
4935   gMC->Gdraw("alic", 40, 30, 0, 11, 10, .07, .07);
4936   gMC->Gdhead(1111, "Inner Tracking System Version 1");
4937   gMC->Gdman(17, 6, "MAN");
4938 }
4939 //_____________________________________________________________________________
4940 void AliITSvPPRasymm::StepManager(){
4941 ////////////////////////////////////////////////////////////////////////
4942 //    Called for every step in the ITS, then calles the AliITShit class
4943 // creator with the information to be recoreded about that hit.
4944 //     The value of the macro ALIITSPRINTGEOM if set to 1 will allow the
4945 // printing of information to a file which can be used to create a .det
4946 // file read in by the routine CreateGeometry(). If set to 0 or any other
4947 // value except 1, the default behavior, then no such file is created nor
4948 // it the extra variables and the like used in the printing allocated.
4949 ////////////////////////////////////////////////////////////////////////
4950   Int_t         copy, id;
4951   Int_t          copy1,copy2;  
4952   Float_t       hits[8];
4953   Int_t         vol[4];
4954   TLorentzVector position, momentum;
4955   TClonesArray &lhits = *fHits;
4956   //
4957   // Track status
4958   vol[3] = 0;
4959   if(gMC->IsTrackInside())      vol[3] +=  1;
4960   if(gMC->IsTrackEntering())    vol[3] +=  2;
4961   if(gMC->IsTrackExiting())     vol[3] +=  4;
4962   if(gMC->IsTrackOut())         vol[3] +=  8;
4963   if(gMC->IsTrackDisappeared()) vol[3] += 16;
4964   if(gMC->IsTrackStop())        vol[3] += 32;
4965   if(gMC->IsTrackAlive())       vol[3] += 64;
4966   //
4967   // Fill hit structure.
4968   if(!(gMC->TrackCharge())) return;
4969   //
4970   // Only entering charged tracks
4971   if((id = gMC->CurrentVolID(copy)) == fIdSens[0]) {
4972       vol[0] = 1;
4973       id = gMC->CurrentVolOffID(0,copy);
4974       //detector copy in the ladder = 1<->4  (ITS1 < I101 < I103 < I10A)
4975       vol[1] = copy;
4976       gMC->CurrentVolOffID(1,copy1);
4977       //ladder copy in the module   = 1<->2  (I10A < I12A)
4978       gMC->CurrentVolOffID(2,copy2);
4979       //module copy in the layer    = 1<->10 (I12A < IT12)
4980       vol[2] = copy1+(copy2-1)*2;//# of ladders in one module  = 2
4981   } else if(id == fIdSens[1]){
4982       vol[0] = 2;
4983       id = gMC->CurrentVolOffID(0,copy);
4984       //detector copy in the ladder = 1<->4  (ITS2 < I1D1 < I1D3 < I20A)
4985       vol[1] = copy;
4986       gMC->CurrentVolOffID(1,copy1);
4987       //ladder copy in the module   = 1<->4  (I20A < I12A)
4988       gMC->CurrentVolOffID(2,copy2);
4989       //module copy in the layer    = 1<->10 (I12A < IT12)
4990       vol[2] = copy1+(copy2-1)*4;//# of ladders in one module  = 4
4991   } else if(id == fIdSens[2]){
4992       vol[0] = 3;
4993       id = gMC->CurrentVolOffID(1,copy);
4994       //detector copy in the ladder = 1<->6  (ITS3 < I302 < I004)
4995       vol[1] = copy;
4996       id = gMC->CurrentVolOffID(2,copy);
4997       //ladder copy in the layer    = 1<->14 (I004 < IT34)
4998       vol[2] = copy;
4999   } else if(id == fIdSens[3]){
5000       vol[0] = 4;
5001       id = gMC->CurrentVolOffID(1,copy);
5002       //detector copy in the ladder = 1<->8  (ITS4 < I402 < I005)
5003       vol[1] = copy;
5004       id = gMC->CurrentVolOffID(2,copy);
5005       //ladder copy in the layer    = 1<->22 (I005 < IT34))
5006       vol[2] = copy;
5007   }else if(id == fIdSens[4]){
5008       vol[0] = 5;
5009       id = gMC->CurrentVolOffID(1,copy);
5010       //detector copy in the ladder = 1<->22  (ITS5 < I562 < I565)
5011       vol[1] = copy;
5012       id = gMC->CurrentVolOffID(2,copy);
5013      //ladder copy in the layer    = 1<->34 (I565 < IT56)
5014       vol[2] = copy;
5015   }else if(id == fIdSens[5]){
5016       vol[0] = 6;
5017       id = gMC->CurrentVolOffID(1,copy);
5018       //detector copy in the ladder = 1<->25  (ITS6 < I566 < I569)
5019       vol[1] = copy;
5020       id = gMC->CurrentVolOffID(2,copy);
5021       //ladder copy in the layer = 1<->38 (I569 < IT56)
5022       vol[2] = copy;
5023   } else {
5024       return; // not an ITS volume?
5025   } // end if/else if (gMC->CurentVolID(copy) == fIdSens[i])
5026 //
5027   gMC->TrackPosition(position);
5028   gMC->TrackMomentum(momentum);
5029   hits[0]=position[0];
5030   hits[1]=position[1];
5031   hits[2]=position[2];
5032   hits[3]=momentum[0];
5033   hits[4]=momentum[1];
5034   hits[5]=momentum[2];
5035   hits[6]=gMC->Edep();
5036   hits[7]=gMC->TrackTime();
5037   // Fill hit structure with this new hit.
5038   new(lhits[fNhits++]) AliITShit(fIshunt,gAlice->CurrentTrack(),vol,hits);
5039
5040   return;
5041
5042 }