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