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