Strings compared instead of pointers
[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.41  2001/05/30 14:04:31  hristov
19 Dynamic cast replaced (F.Carminati)
20
21 Revision 1.40  2001/05/25 15:59:59  morsch
22 Overlaps corrected. (R. Barbera)
23
24 Revision 1.38  2001/05/16 08:17:49  hristov
25 Bug fixed in the StepManager to account for the difference in the geometry tree for the ITS pixels. This fixes both the funny distribution of pixel coordinates and the missing hits/digits/points in many sectors of the ITS pixel barrel. Also included is a patch to properly get and use the detector dimensions through out the ITS code. (B.Nilsen)
26
27 Revision 1.37  2001/05/10 00:12:59  nilsen
28 Finished fixing up the default segmentation for the PPR geometry.
29
30 Revision 1.36  2001/05/09 01:02:21  nilsen
31 Finished fixing SetDefaults for the segmentation of SPD, SDD, and SSD.
32
33 Revision 1.35  2001/05/03 08:40:15  barbera
34 Volume ITSD slightly modified to be consistent with v5. Some improvement in the printouts. The last commit did not complete successfully.
35
36 Revision 1.33  2001/05/01 22:40:42  nilsen
37 Partical update of SetDefault.
38
39 Revision 1.32  2001/04/22 13:48:09  barbera
40 New values of media parameters and thickness of SPD end-ladder electronics as given by Fabio Formenti
41
42 Revision 1.31  2001/04/04 07:02:16  barbera
43 Position of the cylinders holding rails corrected
44
45 Revision 1.30  2001/03/29 22:02:30  barbera
46 Some changes to the services due to the new drawings from the engineers.
47
48 Revision 1.29  2001/03/29 05:28:56  barbera
49 Rails material changed from aluminum to carbon fiber according with the decision of the last Technical Board
50
51 Revision 1.28  2001/03/28 06:40:20  barbera
52 Central and services mother volumes made consistenf for detailed and coarse geometry. Switch for rails added to the coarse geometries
53
54 Revision 1.26  2001/03/23 00:12:23  nilsen
55 Set Reading of AliITSgeom data from Geant3 common blocks as the default and
56 not a .det file. Removed redundent calls to BuildGeometry.
57
58 Revision 1.25  2001/03/20 19:22:51  barbera
59 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.
60
61 Revision 1.23  2001/03/13 21:18:44  barbera
62 Some misleading comments removed
63
64 Revision 1.22  2001/03/13 18:13:30  barbera
65 Some mother volumes sligthly modified to eliminate an overlap with the absorber
66
67 Revision 1.21  2001/03/13 08:36:23  hristov
68 fabsf replaced by TMath::Abs
69
70 Revision 1.20  2001/03/13 00:17:41  barbera
71 New SDD geometry got grom F. Tosello and checked by the SDD engineers
72
73 Revision 1.19  2001/02/28 18:23:13  barbera
74 Setters and getters to set/get the detector and chip thickness on SPD layers added
75
76 Revision 1.18  2001/02/27 23:18:24  barbera
77 Full parameterization of detector and chip thicknesses for layer 1 and layer 2 of SPD as requested by the project leader
78
79 Revision 1.17  2001/02/19 22:14:55  nilsen
80 Fix for all 4 versions 11, 12, 21, and 22.
81
82 Revision 1.16  2001/02/19 20:10:34  barbera
83 Set option=2 and thickness=2 as default values --> SetMinorVersion=22
84
85 Revision 1.15  2001/02/19 19:44:00  barbera
86 Air density parameter corrected
87
88 Revision 1.14  2001/02/13 16:53:35  nilsen
89 Fixed a but when trying to use GEANT4. Needed to replace
90 if(!((TGeant3*)gMC)) with if(!(dynamic_casst<TGeant3*>(gMC)))
91 because just casting gMC to be TGeant3* even when it realy is a TGeant3 pointer
92 did not result in a zero value. For AliITSv5asymm and AliITSv5symm, needed
93 to fix a bug in the initilizers and a bug in BuildGeometry. This is now done
94 in the same way as in AliITSv5.cxx.
95
96 Revision 1.13  2001/02/09 20:06:26  nilsen
97 Fixed bug in distructor. Can't distroy fixxed length arrays. Thanks Peter.
98
99 Revision 1.12  2001/02/09 13:53:38  barbera
100 Int_t redefinition avoided
101
102 Revision 1.11  2001/02/09 06:55:38  barbera
103 SPD option re-set to B. It was A by mistake
104
105 Revision 1.10  2001/02/09 00:05:31  nilsen
106 Added fMajor/MinorVersion variables and made other changes to better make
107 use of the new code changes in AliITSgeom related classes.
108
109
110 Revision 1.9  2001/02/08 16:00:37  barbera
111 New thicknesses (300+300 um) added for SPD chips and detectors and set as default. Many other refinements.
112
113 Revision 1.8  2001/02/06 08:03:44  barbera
114 Material redefinition in SDD
115
116 Revision 1.7  2001/02/05 13:34:57  barbera
117 Updated version of the ITS detailed geometry
118
119 Revision 1.5  2001/01/30 09:23:13  hristov
120 Streamers removed (R.Brun)
121
122 Revision 1.4  2001/01/23 20:08:03  barbera
123 Option B for pixels implemented and set as default
124
125 Revision 1.3  2001/01/17 08:08:20  barbera
126 Some media parameters modified
127
128 Revision 1.1.2.1  2001/01/15 13:38:08  barbera
129 New ITS detailed geometry to be used for the PPR
130
131 */
132
133 ///////////////////////////////////////////////////////////////////////////////
134 //                                                                           //
135 //  Inner Traking System version PPR  asymmetric                             //
136 //  This class contains the base procedures for the Inner Tracking System    //
137 //                                                                           //
138 // Authors: R. Barbera                                                       //
139 // version 8.                                                                //
140 // Created  January 15 2001.                                                 //
141 //                                                                           //
142 //  NOTE: THIS IS THE  ASYMMETRIC PPR geometry of the ITS.                   //
143 //                                                                           //
144 ///////////////////////////////////////////////////////////////////////////////
145
146 // See AliITSvPPRasymm::StepManager().
147 #include <iostream.h>
148 #include <iomanip.h>
149 #include <stdio.h>
150 #include <stdlib.h>
151 #include <TMath.h>
152 #include <TGeometry.h>
153 #include <TNode.h>
154 #include <TTUBE.h>
155 #include <TFile.h>    // only required for Tracking function?
156 #include <TCanvas.h>
157 #include <TObjArray.h>
158 #include <TLorentzVector.h>
159 #include <TObjString.h>
160 #include <TClonesArray.h>
161 #include <TBRIK.h>
162 #include <TSystem.h>
163
164 #include "AliMC.h"
165 #include "AliRun.h"
166 #include "AliMagF.h"
167 #include "AliConst.h"
168 #include "../TGeant3/TGeant3.h"
169 #include "AliITSGeant3Geometry.h"
170 #include "AliITShit.h"
171 #include "AliITS.h"
172 #include "AliITSvPPRasymm.h"
173 #include "AliITSgeom.h"
174 #include "AliITSgeomSPD.h"
175 #include "AliITSgeomSDD.h"
176 #include "AliITSgeomSSD.h"
177 #include "AliITSDetType.h"
178 #include "AliITSresponseSPD.h"
179 #include "AliITSresponseSDD.h"
180 #include "AliITSresponseSSD.h"
181 #include "AliITSsegmentationSPD.h"
182 #include "AliITSsegmentationSDD.h"
183 #include "AliITSsegmentationSSD.h"
184 #include "AliITSClusterFinderSPD.h"
185 #include "AliITSClusterFinderSDD.h"
186 #include "AliITSClusterFinderSSD.h"
187
188
189 ClassImp(AliITSvPPRasymm)
190  
191 //_____________________________________________________________________________
192 AliITSvPPRasymm::AliITSvPPRasymm() {
193 ////////////////////////////////////////////////////////////////////////
194 //    Standard default constructor for the ITS version 8.
195 ////////////////////////////////////////////////////////////////////////
196     Int_t i;
197
198     fIdN          = 0;
199     fIdName       = 0;
200     fIdSens       = 0;
201     fEuclidOut    = kFALSE; // Don't write Euclide file
202     fGeomDetOut   = kFALSE; // Don't write .det file
203     fGeomDetIn    = kFALSE; // Don't Read .det file
204     fMajorVersion = IsVersion();
205     fMinorVersion = -1;
206     for(i=0;i<60;i++) fRead[i] = '\0';
207     for(i=0;i<60;i++) fWrite[i] = '\0';
208     for(i=0;i<60;i++) fEuclidGeomDet[i] = '\0';
209 }
210 //_____________________________________________________________________________
211 AliITSvPPRasymm::AliITSvPPRasymm(const char *name, const char *title) : AliITS(name, title){
212 ////////////////////////////////////////////////////////////////////////
213 //    Standard constructor for the ITS version 8.
214 ////////////////////////////////////////////////////////////////////////
215     Int_t i;
216
217     fIdN = 6;
218     fIdName = new TString[fIdN];
219     fIdName[0] = "ITS1";
220     fIdName[1] = "ITS2";
221     fIdName[2] = "ITS3";
222     fIdName[3] = "ITS4";
223     fIdName[4] = "ITS5";
224     fIdName[5] = "ITS6";
225     fIdSens    = new Int_t[fIdN];
226     for(i=0;i<fIdN;i++) fIdSens[i] = 0;
227     fMajorVersion = IsVersion();
228     fMinorVersion = 2;
229     fEuclidOut    = kFALSE; // Don't write Euclide file
230     fGeomDetOut   = kFALSE; // Don't write .det file
231     fGeomDetIn    = kFALSE; // Don't Read .det file
232     SetThicknessDet1();
233     SetThicknessDet2();
234     SetThicknessChip1();
235     SetThicknessChip2();                         
236
237     fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.euc";
238     strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det",60);
239     strncpy(fRead,fEuclidGeomDet,60);
240     strncpy(fWrite,fEuclidGeomDet,60);
241 }
242 //____________________________________________________________________________
243 AliITSvPPRasymm::AliITSvPPRasymm(const AliITSvPPRasymm &source){
244 ////////////////////////////////////////////////////////////////////////
245 //     Copy Constructor for ITS version 8.
246 ////////////////////////////////////////////////////////////////////////
247     if(&source == this) return;
248     Warning("Copy Constructor","Not allowed to copy AliITSvPPRasymm");
249     return;
250 }
251 //_____________________________________________________________________________
252 AliITSvPPRasymm& AliITSvPPRasymm::operator=(const AliITSvPPRasymm &source){
253 ////////////////////////////////////////////////////////////////////////
254 //    Assignment operator for the ITS version 8.
255 ////////////////////////////////////////////////////////////////////////
256     if(&source == this) return *this;
257     Warning("= operator","Not allowed to copy AliITSvPPRasymm");
258     return *this;
259 }
260 //_____________________________________________________________________________
261 AliITSvPPRasymm::~AliITSvPPRasymm() {
262 ////////////////////////////////////////////////////////////////////////
263 //    Standard destructor for the ITS version 8.
264 ////////////////////////////////////////////////////////////////////////
265 }
266 //__________________________________________________________________________
267 void AliITSvPPRasymm::BuildGeometry(){
268 ////////////////////////////////////////////////////////////////////////
269 //    Geometry builder for the ITS version 8.
270 ////////////////////////////////////////////////////////////////////////
271     TNode *node, *top;
272     const int kColorITS=kYellow;
273     //
274     top = gAlice->GetGeometry()->GetNode("alice");
275
276     new TTUBE("S_layer1","Layer1 of ITS","void",3.95,3.95+0.05475,12.25);
277     top->cd();
278     node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
279     node->SetLineColor(kColorITS);
280     fNodes->Add(node);
281
282     new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+0.05475,16.3);
283     top->cd();
284     node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
285     node->SetLineColor(kColorITS);
286     fNodes->Add(node);
287
288     new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.05288,21.1);
289     top->cd();
290     node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
291     node->SetLineColor(kColorITS);
292     fNodes->Add(node);
293
294     new TTUBE("S_layer4","Layer4 of ITS","void",24,24+0.05288,29.6);
295     top->cd();
296     node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
297     node->SetLineColor(kColorITS);
298     fNodes->Add(node);
299
300     new TTUBE("S_layer5","Layer5 of ITS","void",40,40+0.05382,45.1);
301     top->cd();
302     node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
303     node->SetLineColor(kColorITS);
304     fNodes->Add(node);
305
306     new TTUBE("S_layer6","Layer6 of ITS","void",45,45+0.05382,50.4);
307     top->cd();
308     node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
309     node->SetLineColor(kColorITS);
310     fNodes->Add(node);
311 }
312 //_____________________________________________________________________________
313 void AliITSvPPRasymm::CreateGeometry(){
314 ////////////////////////////////////////////////////////////////////////
315 //    This routine defines and Creates the geometry for version 6 of the ITS.
316 ////////////////////////////////////////////////////////////////////////
317   
318   //INNER RADII OF THE SILICON LAYERS 
319   // Float_t rl[6]    = { 3.8095,7.,15.,24.,38.1,43.5765 };   
320   //THICKNESSES OF LAYERS (in % radiation length)
321   Float_t drl[6]   = { 1.03,1.03,0.94,0.95,0.91,0.87 };   
322   //HALF LENGTHS OF LAYERS  
323   // Float_t dzl[6]   = { 14.35,14.35,25.1,32.1,49.405,55.27 };
324   //LENGTHS OF END-LADDER BOXES (ALL INCLUDED)
325   // Float_t dzb[6]   = { 12.4,12.4,13.5,15.,7.5,7.5 };   
326   //THICKNESSES OF END-LADDER BOXES (ALL INCLUDED)
327   // Float_t drb[6]   = { rl[1]-rl[0],0.2,5.,5.,4.,4. };        
328
329  
330   Float_t dits[100], rlim, zmax;
331   // Float_t zpos;
332   // Float_t pcits[50]
333   Float_t ztpc;
334   Int_t idrotm[1999], i;
335   Float_t dgh[100];
336
337
338   // Define some variables for SPD
339
340   Float_t dits1[3], di101[3], di107[3], di10b[3], di106[3];  // for layer 1 
341   Float_t di103[3], di10a[3], di102[3];                      // for layer 1
342   Float_t dits2[3], di1d1[3], di1d7[3], di20b[3], di1d6[3];  // for layer 2
343   Float_t di1d3[3], di20a[3], di1d2[3];                      // for layer 2  
344   Float_t di108[3], di104[3];                                // for both layers  
345
346   Float_t ddet1=300.;     // total detector thickness on layer 1 (micron)
347   Float_t dchip1=300.;    // total chip thickness on layer 1 (micron)
348   
349   Float_t ddet2=300.;     // total detector thickness on layer 2 (micron)                         
350   Float_t dchip2=300.;    // total chip thickness on layer 2 (micron)
351   
352   Float_t dbus=200.;      // total bus thickness on both layers (micron)
353
354   ddet1 = GetThicknessDet1();
355   ddet2 = GetThicknessDet2();
356   dchip1 = GetThicknessChip1();
357   dchip2 = GetThicknessChip2();    
358
359   if(ddet1 < 100. || ddet1 > 300.) {
360      cout << "ITS - WARNING: the detector thickness for layer 1 is outside the range of [100,300] microns."
361           " The default value of 300 microns will be used." << endl;
362           ddet1=300.;
363   }
364   
365   if(ddet2 < 100. || ddet2 > 300.) {
366      cout << "ITS - WARNING: the detector thickness for layer 2 is outside the range of [100,300] microns."
367           " The default value of 300 microns will be used." << endl;
368           ddet2=300.;
369   }
370   
371   if(dchip1 < 150. || dchip1 > 300.) {
372      cout << "ITS - WARNING: the chip thickness for layer 1 is outside the range of [150,300] microns."
373           " The default value of 300 microns will be used." << endl;
374           dchip1=300.;
375   }
376   
377   if(dchip2 < 150. || dchip2 > 300.) {
378      cout << "ITS - WARNING: the chip thickness for layer 2 is outside the range of [150,300] microns."
379           " The default value of 300 microns will be used." << endl;
380           dchip2=300.;
381   }      
382
383   Int_t rails = 1;       // flag for rails (1 --> rails in; 0 --> rails out)
384   
385   Int_t fluid = 1;       // flag for the cooling fluid (1 --> water; 0 --> freon)
386
387   rails = GetRails();
388
389   fluid = GetCoolingFluid();
390
391   if(rails != 0 && rails != 1) {
392      cout << "ITS - WARNING: the switch for rails is not set neither to 0 (rails out) nor to 1 (rails in)." 
393      " The default value of 1 (rails in) will be used." << endl;
394         
395   }  
396   
397   if(fluid != 0 && fluid != 1) {
398      cout << "ITS - WARNING: the switch for cooling fluid is not set neither to 0 (freon) nor to 1 (water)." 
399      " The default value of 1 (water) will be used." << endl;  
400   }       
401    
402   cout << "ITS: Detector thickness on layer 1 is set to " << ddet1 << " microns." << endl;
403   cout << "ITS: Chip thickness on layer 1 is set to " << dchip1 << " microns." << endl;
404   cout << "ITS: Detector thickness on layer 2 is set to " << ddet2 << " microns." << endl;
405   cout << "ITS: Chip thickness on layer 2 is set to " << dchip2 << " microns." << endl;
406   if(rails == 0 ) {
407      cout << "ITS: Rails are out." << endl; 
408   } else {
409      cout << "ITS: Rails are in." << endl;
410   }   
411   if(fluid == 0 ) {
412      cout << "ITS: The cooling fluid is freon." << endl; 
413   } else {
414      cout << "ITS: The cooling fluid is water." << endl;
415   }   
416
417   ddet1  = ddet1*0.0001/2.; // conversion from tot length in um to half in cm
418   ddet2  = ddet2*0.0001/2.; // conversion from tot length in um to half in cm   
419   dchip1 = dchip1*0.0001/2.;// conversion from tot length in um to half in cm   
420   dchip2 = dchip2*0.0001/2.;// conversion from tot length in um to half in cm   
421   dbus   = dbus*0.0001/2.;  // conversion from tot length in um to half in cm       
422                 
423   Float_t deltax, deltay; 
424
425   Int_t thickness = fMinorVersion/10;
426   Int_t option    = fMinorVersion - 10*thickness;
427
428
429   // Define some variables for SDD
430
431
432   Float_t sin30, cos30;
433
434   // SDD electronics+services main volumes
435   Float_t I018dits[3], I024dits[3], I047dits[3], I048dits[3];
436
437   // SDD detector ladder
438
439   Float_t I302dits[3], I402dits[3], I004dits[3], I005dits[3];
440   Float_t Y_SDD_sep = 0.20;
441   Float_t ySDD;
442   Int_t   iSDD;
443   Float_t Z_SDD_lay3[6] = {18.55, 10.95, 3.70, -3.70, -11.20, -18.35};
444   Float_t Z_SDD_lay4[8] = {25.75, 18.60, 11.00, 3.70, -3.70, -11.20, -18.45, -26.05};
445
446   // ladder foot and end-ladder (frame and cooling)
447   Float_t I028dits[3], I420dits[3], I421dits[3], I422dits[6], I423dits[3];
448   Float_t I424dits[3], xI424, yI424;
449   Float_t I425dits[3];
450   Int_t    indI425;
451   Float_t I029dits[4], I030dits[4], I031dits[3], I032dits[3];
452
453   // SDD ladder frame and cooling
454   Float_t SDD_CoolPipe[3] = {1.7000, -0.5500, 0.0000};
455   Float_t I035dits[3], I037dits[3], I038dits[3];
456   Float_t I039dits[3], xI039, yI039;
457   Float_t I041dits[5];
458
459   // SDD hybrid, chips and capacitors
460   Float_t I050dits[3], xI050, yI050;
461   Float_t I052dits[3], xI052, yI052;
462   Float_t I042dits[3], xI042, yI042;
463   Float_t xI042space = 0.17;
464   Float_t I043dits[3], xI043, yI043;
465   Float_t xI043space = 0.17;
466   Float_t zchip, zChipSpace;
467   Float_t I051dits[3], xI051, yI051, zI051, yI051space, xcap;
468   Int_t     ichip, icap;
469
470   // SDD microcables
471   Float_t I044dits[4], xI044, yI044, volI044;
472   Float_t xHV, yHV, zHV, xLV, yLV, zLV;
473   Char_t   HVname[5], LVname[5];
474
475
476   // Define media off-set
477   
478   Int_t *idtmed = fIdtmed->GetArray()-199;
479
480   
481   // Rotation matrices
482   
483   // SPD - option 'a' (this is NOT the default so leave commented)
484   
485   
486   if (option == 1) {
487   
488      AliMatrix(idrotm[201],90.0,90.0,90.0,180.0,0.0,0.0);
489      AliMatrix(idrotm[202],90.0,90.0,90.0,0.0,0.0,0.0);
490      AliMatrix(idrotm[203],90.0,350.0,90.0,260.0,0.0,0.0);
491      AliMatrix(idrotm[204],90.0,170.0,90.0,80.0,0.0,0.0);
492      AliMatrix(idrotm[205],90.0,10.0,90.0,100.0,0.0,0.0);
493      AliMatrix(idrotm[206],90.0,190.0,90.0,280.0,0.0,0.0);
494      AliMatrix(idrotm[207],90.0,342.0,90.0,72.0,0.0,0.0);
495      AliMatrix(idrotm[208],90.0,156.999893,90.0,246.999893,0.0,0.0);
496      AliMatrix(idrotm[209],90.0,147.999802,90.0,237.999893,0.0,0.0);
497      AliMatrix(idrotm[210],90.0,138.999802,90.0,228.999802,0.0,0.0);
498      AliMatrix(idrotm[211],90.0,129.999802,90.0,219.999802,0.0,0.0);
499      AliMatrix(idrotm[212],90.0,36.7896,90.0,126.789597,0.0,0.0);
500      AliMatrix(idrotm[213],90.0,343.579712,90.0,73.579697,0.0,0.0);
501      AliMatrix(idrotm[214],90.0,95.413696,90.0,185.413696,0.0,0.0);
502      AliMatrix(idrotm[215],90.0,5.4141,90.0,95.414101,0.0,0.0);
503      AliMatrix(idrotm[216],90.0,318.296906,90.0,48.296902,0.0,0.0);
504      AliMatrix(idrotm[217],90.0,67.000099,90.0,157.000107,0.0,0.0);
505      AliMatrix(idrotm[218],90.0,337.003998,90.0,67.003998,0.0,0.0);
506      AliMatrix(idrotm[219],90.0,247.000305,90.0,337.000305,0.0,0.0);
507      AliMatrix(idrotm[220],90.0,305.633514,90.0,35.633499,0.0,0.0);
508      AliMatrix(idrotm[221],90.0,58.000198,90.0,148.000198,0.0,0.0);
509      AliMatrix(idrotm[222],90.0,327.997101,90.0,57.997101,0.0,0.0 );
510      AliMatrix(idrotm[223],90.0,237.994202,90.0,327.994202,0.0,0.0);
511      AliMatrix(idrotm[224],90.0,296.627502,90.0,26.627399,0.0,0.0);
512      AliMatrix(idrotm[225],90.0,48.994099,90.0,138.994095,0.0,0.0);
513      AliMatrix(idrotm[226],90.0,318.990997,90.0,48.991001,0.0,0.0);
514      AliMatrix(idrotm[227],90.0,228.988205,90.0,318.98819,0.0,0.0);
515      AliMatrix(idrotm[228],90.0,287.621399,90.0,17.621401,0.0,0.0);
516      AliMatrix(idrotm[229],90.0,39.988098,90.0,129.988098,0.0,0.0);
517      AliMatrix(idrotm[230],90.0,309.984985,90.0,39.985001,0.0,0.0);
518      AliMatrix(idrotm[231],90.0,327.2612,90.0,57.2612,0.0,0.0);
519      AliMatrix(idrotm[232],90.0,237.261398,90.0,327.261414,0.0,0.0);
520      AliMatrix(idrotm[233],90.0,252.000504,90.0,342.000488,0.0,0.0 );
521      AliMatrix(idrotm[234],90.0,71.9991,90.0,161.9991,0.0,0.0);
522      AliMatrix(idrotm[235],90.0,270.0,90.0,0.0,0.0,0.0);
523      AliMatrix(idrotm[236],90.0,180.013702,90.0,270.013702,0.0,0.0);
524      AliMatrix(idrotm[237],90.0,0.0,90.0,90.0,0.0,0.0);
525      AliMatrix(idrotm[238],90.0,144.0,90.0,234.0,0.0,0.0);
526      AliMatrix(idrotm[239],90.0,216.0,90.0,306.0,0.0,0.0);
527      AliMatrix(idrotm[240],90.0,288.0,90.0,18.0,0.0,0.0);
528      AliMatrix(idrotm[241],90.0,324.0,90.0,54.0,0.0,0.0);
529      AliMatrix(idrotm[242],90.0,36.0,90.0,126.0,0.0,0.0);
530      AliMatrix(idrotm[243],90.0,108.0,90.0,198.0,0.0,0.0);
531      AliMatrix(idrotm[244],90.0,180.0,90.0,270.0,0.0,0.0);
532      AliMatrix(idrotm[245],90.0,162.0,90.0,252.0,0.0,0.0);
533      AliMatrix(idrotm[246],90.0,310.0,90.0,40.0,0.0,0.0);
534      AliMatrix(idrotm[247],90.0,319.0,90.0,49.0,0.0,0.0);
535      AliMatrix(idrotm[248],90.0,328.0,90.0,58.0,0.0,0.0);
536      AliMatrix(idrotm[249],90.0,337.0,90.0,67.0,0.0,0.0);
537      AliMatrix(idrotm[1003],90.0,73.5,90.0,163.5,0.0,0.0);
538      AliMatrix(idrotm[1011],90.0,342.0,90.0,72.0,0.0,0.0);
539      AliMatrix(idrotm[1039],90.0,72.0,90.0,162.0,0.0,0.0);
540      AliMatrix(idrotm[1043],90.0,66.91,90.0,156.91,0.0,0.0);
541      AliMatrix(idrotm[1065],90.0,144.0,90.0,234.0,0.0,0.0);
542      AliMatrix(idrotm[1078],90.0,180.0,90.0,270.0,0.0,0.0);
543      AliMatrix(idrotm[1088],90.0,57.41,90.0,147.41,0.0,0.0);
544      AliMatrix(idrotm[1089],90.0,333.0,90.0,63.0,0.0,0.0);
545      AliMatrix(idrotm[1090],90.0,351.0,90.0,81.0,0.0,0.0);
546      AliMatrix(idrotm[1091],90.0,216.0,90.0,306.0,0.0,0.0);
547      AliMatrix(idrotm[1092],90.0,27.0,90.0,117.0,0.0,0.0);
548      AliMatrix(idrotm[1093],90.0,18.0,90.0,108.0,0.0,0.0);
549      AliMatrix(idrotm[1094],90.0,9.0,90.0,99.0,0.0,0.0);
550      AliMatrix(idrotm[1104],90.0,252.0,90.0,342.0,0.0,0.0);
551      AliMatrix(idrotm[1106],90.0,36.0,90.0,126.0,0.0,0.0);
552      AliMatrix(idrotm[1107],90.0,108.0,90.0,198.0,0.0,0.0);
553      AliMatrix(idrotm[1108],90.0,324.0,90.0,54.0,180.0,0.0);
554      AliMatrix(idrotm[1109],90.0,0.0,90.0,90.0,180.0,0.0);
555      AliMatrix(idrotm[1110],90.0,36.0,90.0,126.0,180.0,0.0);
556      AliMatrix(idrotm[1111],90.0,72.0,90.0,162.0,180.0,0.0);
557      AliMatrix(idrotm[1112],90.0,108.0,90.0,198.0,180.0,0.0);
558      AliMatrix(idrotm[1113],90.0,144.0,90.0,234.0,180.0,0.0);
559      AliMatrix(idrotm[1114],90.0,180.0,90.0,270.0,180.0,0.0);
560      AliMatrix(idrotm[1115],90.0,216.0,90.0,306.0,180.0,0.0);
561      AliMatrix(idrotm[1116],90.0,252.0,90.0,342.0,180.0,0.0);
562      AliMatrix(idrotm[1117],90.0,288.0,90.0,18.0,0.0,0.0);
563      AliMatrix(idrotm[1118],90.0,288.0,90.0,18.0,180.0,0.0);
564      AliMatrix(idrotm[1130],90.0,324.0,90.0,54.0,0.0,0.0);  
565
566   }
567   
568   // SPD - option 'b' (this is the default)  
569     
570   if (option == 2) {
571
572      AliMatrix(idrotm[201],90.0,0.0,90.0,90.0,0.0,0.0);
573      AliMatrix(idrotm[202],90.0,90.0,90.0,0.0,0.0,0.0);
574      AliMatrix(idrotm[203],90.0,350.0,90.0,260.0,0.0,0.0);
575      AliMatrix(idrotm[204],90.0,170.0,90.0,80.0,0.0,0.0);
576      AliMatrix(idrotm[205],90.0,10.0,90.0,100.0,0.0,0.0);
577      AliMatrix(idrotm[206],90.0,190.0,90.0,280.0,0.0,0.0);
578      AliMatrix(idrotm[207],90.0,342.0,90.0,72.0,0.0,0.0);
579      AliMatrix(idrotm[208],90.0,156.999893,90.0,246.999893,0.0,0.0);
580      AliMatrix(idrotm[209],90.0,147.999802,90.0,237.999893,0.0,0.0);
581      AliMatrix(idrotm[210],90.0,138.999802,90.0,228.999802,0.0,0.0);
582      AliMatrix(idrotm[211],90.0,129.999802,90.0,219.999802,0.0,0.0);
583      AliMatrix(idrotm[212],90.0,36.7896,90.0,126.789597,0.0,0.0);
584      AliMatrix(idrotm[213],90.0,343.579712,90.0,73.579697,0.0,0.0);
585      AliMatrix(idrotm[214],90.0,95.413696,90.0,185.413696,0.0,0.0);
586      AliMatrix(idrotm[215],90.0,5.4141,90.0,95.414101,0.0,0.0);
587      AliMatrix(idrotm[216],90.0,318.296906,90.0,48.296902,0.0,0.0);
588      AliMatrix(idrotm[217],90.0,67.000099,90.0,157.000107,0.0,0.0);
589      AliMatrix(idrotm[218],90.0,337.003998,90.0,67.003998,0.0,0.0);
590      AliMatrix(idrotm[219],90.0,247.000305,90.0,337.000305,0.0,0.0);
591      AliMatrix(idrotm[220],90.0,305.633514,90.0,35.633499,0.0,0.0);
592      AliMatrix(idrotm[221],90.0,58.000198,90.0,148.000198,0.0,0.0);
593      AliMatrix(idrotm[222],90.0,327.997101,90.0,57.997101,0.0,0.0);
594      AliMatrix(idrotm[223],90.0,237.994202,90.0,327.994202,0.0,0.0);
595      AliMatrix(idrotm[224],90.0,296.627502,90.0,26.627399,0.0,0.0);
596      AliMatrix(idrotm[225],90.0,48.994099,90.0,138.994095,0.0,0.0);
597      AliMatrix(idrotm[226],90.0,318.990997,90.0,48.991001,0.0,0.0);
598      AliMatrix(idrotm[227],90.0,228.988205,90.0,318.98819,0.0,0.0);
599      AliMatrix(idrotm[228],90.0,287.621399,90.0,17.621401,0.0,0.0);
600      AliMatrix(idrotm[229],90.0,39.988098,90.0,129.988098,0.0,0.0);
601      AliMatrix(idrotm[230],90.0,309.984985,90.0,39.985001,0.0,0.0);
602      AliMatrix(idrotm[231],90.0,327.2612,90.0,57.2612,0.0,0.0);
603      AliMatrix(idrotm[232],90.0,237.261398,90.0,327.261414,0.0,0.0);
604      AliMatrix(idrotm[233],90.0,252.000504,90.0,342.000488,0.0,0.0);
605      AliMatrix(idrotm[234],90.0,71.9991,90.0,161.9991,0.0,0.0);
606      AliMatrix(idrotm[235],90.0,270.0,90.0,0.0,0.0,0.0);
607      AliMatrix(idrotm[236],90.0,180.013702,90.0,270.013702,0.0,0.0);
608      AliMatrix(idrotm[237],90.0,90.0,90.0,180.0,0.0,0.0);
609      AliMatrix(idrotm[238],90.0,180.0,90.0,270.0,0.0,0.0);
610      AliMatrix(idrotm[239],90.0,162.0,90.0,252.0,0.0,0.0);
611      AliMatrix(idrotm[240],90.0,310.0,90.0,40.0,0.0,0.0);
612      AliMatrix(idrotm[241],90.0,319.0,90.0,49.0,0.0,0.0);
613      AliMatrix(idrotm[242],90.0,328.0,90.0,58.0,0.0,0.0);
614      AliMatrix(idrotm[243],90.0,337.0,90.0,67.0,0.0,0.0);
615      AliMatrix(idrotm[244],90.0,216.0,90.0,306.0,0.0,0.0);
616      AliMatrix(idrotm[245],90.0,36.0,90.0,126.0,0.0,0.0);
617      AliMatrix(idrotm[246],90.0,108.0,90.0,198.0,0.0,0.0);
618      AliMatrix(idrotm[247],90.0,144.0,90.0,234.0,0.0,0.0);
619      AliMatrix(idrotm[248],90.0,288.0,90.0,18.0,0.0,0.0);
620      AliMatrix(idrotm[249],90.0,324.0,90.0,54.0,0.0,0.0);  
621      AliMatrix(idrotm[1003],90.0,73.5,90.0,163.5,0.0,0.0);
622      AliMatrix(idrotm[1011],90.0,342.0,90.0,72.0,0.0,0.0);
623      AliMatrix(idrotm[1039],90.0,72.0,90.0,162.0,0.0,0.0);
624      AliMatrix(idrotm[1043],90.0,66.91,90.0,156.91,0.0,0.0);
625      AliMatrix(idrotm[1065],90.0,144.0,90.0,234.0,0.0,0.0);
626      AliMatrix(idrotm[1078],90.0,180.0,90.0,270.0,0.0,0.0);
627      AliMatrix(idrotm[1088],90.0,57.41,90.0,147.41,0.0,0.0);
628      AliMatrix(idrotm[1089],90.0,333.0,90.0,63.0,0.0,0.0);
629      AliMatrix(idrotm[1090],90.0,351.0,90.0,81.0,0.0,0.0);
630      AliMatrix(idrotm[1091],90.0,216.0,90.0,306.0,0.0,0.0);
631      AliMatrix(idrotm[1092],90.0,27.0,90.0,117.0,0.0,0.0);
632      AliMatrix(idrotm[1093],90.0,18.0,90.0,108.0,0.0,0.0);
633      AliMatrix(idrotm[1094],90.0,9.0,90.0,99.0,0.0,0.0);
634      AliMatrix(idrotm[1104],90.0,252.0,90.0,342.0,0.0,0.0);
635      AliMatrix(idrotm[1106],90.0,36.0,90.0,126.0,0.0,0.0);
636      AliMatrix(idrotm[1107],90.0,108.0,90.0,198.0,0.0,0.0);
637      AliMatrix(idrotm[1108],90.0,324.0,90.0,54.0,180.0,0.0);
638      AliMatrix(idrotm[1109],90.0,0.0,90.0,90.0,180.0,0.0);
639      AliMatrix(idrotm[1110],90.0,36.0,90.0,126.0,180.0,0.0);
640      AliMatrix(idrotm[1111],90.0,72.0,90.0,162.0,180.0,0.0);
641      AliMatrix(idrotm[1112],90.0,108.0,90.0,198.0,180.0,0.0);
642      AliMatrix(idrotm[1113],90.0,144.0,90.0,234.0,180.0,0.0);
643      AliMatrix(idrotm[1114],90.0,180.0,90.0,270.0,180.0,0.0);
644      AliMatrix(idrotm[1115],90.0,216.0,90.0,306.0,180.0,0.0);
645      AliMatrix(idrotm[1116],90.0,252.0,90.0,342.0,180.0,0.0);
646      AliMatrix(idrotm[1117],90.0,288.0,90.0,18.0,0.0,0.0);
647      AliMatrix(idrotm[1118],90.0,288.0,90.0,18.0,180.0,0.0);
648      AliMatrix(idrotm[1130],90.0,324.0,90.0,54.0,0.0,0.0);  
649
650   }
651     
652   // SDD
653   
654   AliMatrix(idrotm[301],0.0,0.0,90.0,90.0,90.0,180.0);  
655   AliMatrix(idrotm[302],0.0,0.0,90.0,90.0,90.0,0.0);
656   AliMatrix(idrotm[303],180.0,0.0,90.0,90.0,90.0,0.0); 
657   AliMatrix(idrotm[304],180.0,0.0,90.0,90.0,90.0,180.0); 
658   AliMatrix(idrotm[305],90.0,347.14,90.0,77.14,0.0,0.0); 
659   AliMatrix(idrotm[306],90.0,321.43,90.0,51.43,0.0,0.0); 
660   AliMatrix(idrotm[307],90.0,295.71,90.0,25.71,0.0,0.0);
661   AliMatrix(idrotm[308],90.0,244.29,90.0,334.29,0.0,0.0);
662   AliMatrix(idrotm[309],90.0,218.57,90.0,308.57,0.0,0.0);
663   AliMatrix(idrotm[310],90.0,167.14,90.0,257.14,0.0,0.0);
664   AliMatrix(idrotm[311],90.0,141.43,90.0,231.43,0.0,0.0);  
665   AliMatrix(idrotm[312],90.0,0.0,0.0,0.0,90.0,270.0);
666   AliMatrix(idrotm[313],90.0,115.71,90.0,205.71,0.0,0.0); 
667   AliMatrix(idrotm[314],90.0,335.45,90.0,65.45,0.0,0.0); 
668   AliMatrix(idrotm[315],90.0,319.09,90.0,49.09,0.0,0.0); 
669   AliMatrix(idrotm[316],90.0,302.73,90.0,32.73,0.0,0.0); 
670   AliMatrix(idrotm[317],90.0,286.36,90.0,16.36,0.0,0.0);
671   AliMatrix(idrotm[318],90.0,270.0,90.0,360.0,0.0,0.0);
672   AliMatrix(idrotm[319],90.0,253.64,90.0,343.64,0.0,0.0);
673   AliMatrix(idrotm[320],90.0,237.27,90.0,327.27,0.0,0.0);
674   AliMatrix(idrotm[321],90.0,12.86,90.0,102.86,0.0,0.0);  
675   AliMatrix(idrotm[322],90.0,220.91,90.0,310.91,0.0,0.0);
676   AliMatrix(idrotm[323],90.0,204.55,90.0,294.55,0.0,0.0); 
677   AliMatrix(idrotm[324],90.0,188.18,90.0,278.18,0.0,0.0); 
678   AliMatrix(idrotm[325],90.0,171.82,90.0,261.82,0.0,0.0); 
679   AliMatrix(idrotm[326],90.0,155.45,90.0,245.45,0.0,0.0); 
680   AliMatrix(idrotm[327],90.0,139.09,90.0,229.09,0.0,0.0);
681   AliMatrix(idrotm[328],90.0,122.73,90.0,212.73,0.0,0.0);
682   AliMatrix(idrotm[329],90.0,106.36,90.0,196.36,0.0,0.0);
683   AliMatrix(idrotm[330],90.0,73.64,90.0,163.64,0.0,0.0);    
684   AliMatrix(idrotm[331],90.0,40.91,90.0,130.91,0.0,0.0);  
685   AliMatrix(idrotm[332],90.0,24.55,90.0,114.55,0.0,0.0);
686   AliMatrix(idrotm[333],90.0,38.57,90.0,128.57,0.0,0.0); 
687   AliMatrix(idrotm[334],90.0,351.82,90.0,81.82,0.0,0.0); 
688   AliMatrix(idrotm[335],90.0,8.18,90.0,98.18,0.0,0.0); 
689   AliMatrix(idrotm[336],90.0,64.29,90.0,154.29,0.0,0.0); 
690   AliMatrix(idrotm[337],111.0,300.0,21.0,300.0,90.0,30.0);
691   AliMatrix(idrotm[338],69.0,240.0,159.0,240.0,90.0,150.0);
692   AliMatrix(idrotm[339],111.0,240.0,21.0,240.0,90.0,150.0);
693   AliMatrix(idrotm[340],69.0,300.0,159.0,300.0,90.0,30.0);  
694   AliMatrix(idrotm[341],128.0,0.0,38.0,0.0,90.0,270.0);  
695   AliMatrix(idrotm[342],90.0,240.0,180.0,0.0,90.0,330.);
696   AliMatrix(idrotm[343],90.0,120.0,180.0,0.0,90.0,210.0); 
697   AliMatrix(idrotm[344],90.0,0.0,180.0,0.0,90.0,90.0); 
698   AliMatrix(idrotm[345],90.0,180.0,90.0,90.0,0.0,0.0); 
699   AliMatrix(idrotm[346],90.0,300.0,90.0,30.0,0.0,0.0); 
700   AliMatrix(idrotm[347],90.0,240.0,90.0,150.0,0.0,0.0);
701   AliMatrix(idrotm[348],90.0,180.0,0.0,0.0,90.0,270.0);
702   AliMatrix(idrotm[349],90.0,235.0,90.0,145.0,0.0,0.0);
703   AliMatrix(idrotm[350],90.0,90.0,90.0,180.0,0.0,0.0);  
704   AliMatrix(idrotm[351],90.0,305.0,90.0,35.0,0.0,0.0);  
705   AliMatrix(idrotm[352],0.0,0.0,90.0,0.0,90.0,90.0);
706   AliMatrix(idrotm[353],90.0,60.0,90.0,150.0,0.0,0.0); 
707   AliMatrix(idrotm[354],90.0,120.0,90.0,30.0,0.0,0.0); 
708   AliMatrix(idrotm[355],90.0,180.0,90.0,90.0,180.0,0.0); 
709   AliMatrix(idrotm[356],90.0,270.0,90.0,0.0,0.0,0.0); 
710   AliMatrix(idrotm[366],90.0,57.27,90.0,147.27,0.0,0.0); 
711   AliMatrix(idrotm[386],90.0,192.86,90.0,282.86,0.0,0.0);  
712    
713   // SSD
714   
715   AliMatrix(idrotm[501],90.0,148.24,90.0,238.24,0.0,0.0);
716   AliMatrix(idrotm[503],90.0,137.65,90.0,227.65,0.0,0.0); 
717   AliMatrix(idrotm[504],90.0,127.06,90.0,217.06,0.0,0.0);  
718   AliMatrix(idrotm[505],90.0,116.47,90.0,206.47,0.0,0.0);  
719   AliMatrix(idrotm[506],90.0,105.88,90.0,195.88,0.0,0.0);  
720   AliMatrix(idrotm[507],90.0,95.29,90.0,185.29,0.0,0.0);  
721   AliMatrix(idrotm[508],90.0,84.71,90.0,174.71,0.0,0.0);
722   AliMatrix(idrotm[509],90.0,74.12,90.0,164.12,0.0,0.0);
723   AliMatrix(idrotm[510],90.0,63.53,90.0,153.53,0.0,0.0);  
724   AliMatrix(idrotm[511],90.0,52.94,90.0,142.94,0.0,0.0);
725   AliMatrix(idrotm[512],90.0,42.35,90.0,132.35,0.0,0.0);
726   AliMatrix(idrotm[513],90.0,31.76,90.0,121.76,0.0,0.0); 
727   AliMatrix(idrotm[514],90.0,10.59,90.0,100.59,0.0,0.0);  
728   AliMatrix(idrotm[515],90.0,349.41,90.0,79.41,0.0,0.0);  
729   AliMatrix(idrotm[516],90.0,338.82,90.0,68.82,0.0,0.0);  
730   AliMatrix(idrotm[517],90.0,328.24,90.0,58.24,0.0,0.0);  
731   AliMatrix(idrotm[518],90.0,317.65,90.0,47.65,0.0,0.0);
732   AliMatrix(idrotm[519],90.0,307.06,90.0,37.06,0.0,0.0);
733   AliMatrix(idrotm[520],90.0,296.47,90.0,26.47,0.0,0.0);  
734   AliMatrix(idrotm[521],90.0,285.88,90.0,15.88,0.0,0.0);
735   AliMatrix(idrotm[522],90.0,275.29,90.0,5.29,0.0,0.0);
736   AliMatrix(idrotm[523],90.0,264.71,90.0,354.71,0.0,0.0); 
737   AliMatrix(idrotm[524],90.0,254.12,90.0,344.12,0.0,0.0);  
738   AliMatrix(idrotm[525],90.0,243.53,90.0,333.53,0.0,0.0);  
739   AliMatrix(idrotm[526],90.0,232.94,90.0,322.94,0.0,0.0);  
740   AliMatrix(idrotm[527],90.0,222.35,90.0,312.35,0.0,0.0);  
741   AliMatrix(idrotm[528],90.0,211.76,90.0,301.76,0.0,0.0);
742   AliMatrix(idrotm[529],90.0,190.59,90.0,280.59,0.0,0.0);
743   AliMatrix(idrotm[530],90.0,169.41,90.0,259.41,0.0,0.0);  
744   AliMatrix(idrotm[531],90.0,158.82,90.0,248.82,0.0,0.0);
745   AliMatrix(idrotm[532],90.0,360.0,90.0,90.0,0.0,0.0);
746   AliMatrix(idrotm[533],90.0,180.0,90.0,270.0,0.0,0.0); 
747   AliMatrix(idrotm[534],90.0,189.47,90.0,279.47,0.0,0.0);  
748   AliMatrix(idrotm[535],90.0,198.95,90.0,288.95,0.0,0.0);  
749   AliMatrix(idrotm[537],90.0,217.89,90.0,307.89,0.0,0.0);  
750   AliMatrix(idrotm[538],90.0,227.37,90.0,317.37,0.0,0.0);
751   AliMatrix(idrotm[539],90.0,236.84,90.0,326.84,0.0,0.0);
752   AliMatrix(idrotm[540],90.0,246.32,90.0,336.32,0.0,0.0);  
753   AliMatrix(idrotm[541],90.0,255.79,90.0,345.79,0.0,0.0);
754   AliMatrix(idrotm[542],90.0,265.26,90.0,355.26,0.0,0.0);
755   AliMatrix(idrotm[543],90.0,274.74,90.0,4.74,0.0,0.0); 
756   AliMatrix(idrotm[544],90.0,284.21,90.0,14.21,0.0,0.0);  
757   AliMatrix(idrotm[545],90.0,293.68,90.0,23.68,0.0,0.0);  
758   AliMatrix(idrotm[546],90.0,303.16,90.0,33.16,0.0,0.0);  
759   AliMatrix(idrotm[547],90.0,312.63,90.0,42.63,0.0,0.0);  
760   AliMatrix(idrotm[548],90.0,322.11,90.0,52.11,0.0,0.0);
761   AliMatrix(idrotm[549],90.0,331.58,90.0,61.58,0.0,0.0);
762   AliMatrix(idrotm[550],90.0,341.05,90.0,71.05,0.0,0.0);  
763   AliMatrix(idrotm[551],90.0,350.53,90.0,80.53,0.0,0.0);
764   AliMatrix(idrotm[552],90.0,9.47,90.0,99.47,0.0,0.0);
765   AliMatrix(idrotm[553],90.0,18.95,90.0,108.95,0.0,0.0); 
766   AliMatrix(idrotm[555],90.0,37.89,90.0,127.89,0.0,0.0);  
767   AliMatrix(idrotm[556],90.0,47.37,90.0,137.37,0.0,0.0);  
768   AliMatrix(idrotm[557],90.0,56.84,90.0,146.84,0.0,0.0);  
769   AliMatrix(idrotm[558],90.0,66.32,90.0,156.32,0.0,0.0);
770   AliMatrix(idrotm[559],90.0,75.79,90.0,165.79,0.0,0.0);
771   AliMatrix(idrotm[560],90.0,85.26,90.0,175.26,0.0,0.0);  
772   AliMatrix(idrotm[561],90.0,94.74,90.0,184.74,0.0,0.0);
773   AliMatrix(idrotm[562],90.0,104.21,90.0,194.21,0.0,0.0);
774   AliMatrix(idrotm[563],90.0,113.68,90.0,203.68,0.0,0.0); 
775   AliMatrix(idrotm[564],90.0,123.16,90.0,213.16,0.0,0.0);  
776   AliMatrix(idrotm[565],90.0,132.63,90.0,222.63,0.0,0.0);  
777   AliMatrix(idrotm[566],90.0,142.11,90.0,232.11,0.0,0.0);  
778   AliMatrix(idrotm[567],90.0,151.58,90.0,241.58,0.0,0.0);  
779   AliMatrix(idrotm[568],90.0,161.05,90.0,251.05,0.0,0.0);
780   AliMatrix(idrotm[569],90.0,170.53,90.0,260.53,0.0,0.0);
781   AliMatrix(idrotm[570],90.0,180.0,90.0,90.0,180.0,0.0);  
782   AliMatrix(idrotm[571],90.0,0.0,0.0,0.0,90.0,270.0);
783   AliMatrix(idrotm[572],90.0,180.0,0.0,0.0,90.0,270.0);
784   AliMatrix(idrotm[573],90.0,180.0,90.0,90.0,0.0,0.0); 
785   AliMatrix(idrotm[575],90.0,120.0,180.0,0.0,90.0,210.0);  
786   AliMatrix(idrotm[576],65.71,300.0,90.0,30.0,24.29,120.0);  
787   AliMatrix(idrotm[577],114.29,300.0,90.0,30.0,155.71,120.0);  
788   AliMatrix(idrotm[579],65.71,240.0,90.0,150.0,24.29,60.0);
789   AliMatrix(idrotm[580],114.29,240.0,90.0,150.0,155.71,60.0);  
790   AliMatrix(idrotm[581],90.0,240.0,180.0,0.0,90.0,330.0);
791   AliMatrix(idrotm[583],90.0,0.0,180.0,0.0,90.0,90.0); 
792   AliMatrix(idrotm[584],90.0,180.0,180.0,0.0,90.0,90.0);  
793   AliMatrix(idrotm[586],180.0,0.0,90.0,90.0,90.0,0.0);  
794   AliMatrix(idrotm[618],90.0,201.18,90.0,291.18,0.0,0.0);
795   AliMatrix(idrotm[620],90.0,28.42,90.0,118.42,0.0,0.0);  
796   AliMatrix(idrotm[623],90.0,208.42,90.0,298.42,0.0,0.0);
797   AliMatrix(idrotm[633],132.46,0.0,90.0,90.0,42.46,360.0);
798   AliMatrix(idrotm[653],90.0,21.18,90.0,111.18,0.0,0.0); 
799
800   
801   // SDD cone
802
803   AliMatrix(idrotm[846],90.0,300.0,90.0,30.0,0.0,0.0);
804   AliMatrix(idrotm[851],90.0,305.0,90.0,35.0,0.0,0.0);
805   AliMatrix(idrotm[853],90.0,60.0,90.0,150.0,0.0,0.0);
806   AliMatrix(idrotm[856],90.0,0.0,90.0,90.0,180.0,0.0);
807   AliMatrix(idrotm[857],90.0,5.0,90.0,95.0,180.0,0.0);
808   AliMatrix(idrotm[858],90.0,65.0,90.0,155.0,180.0,0.0);
809   AliMatrix(idrotm[859],90.0,305.0,90.0,35.0,180.0,0.0);
810   AliMatrix(idrotm[860],90.0,245.0,90.0,335.0,180.0,0.0);
811   AliMatrix(idrotm[861],90.0,185.0,90.0,275.0,180.0,0.0);
812   AliMatrix(idrotm[862],90.0,125.0,90.0,215.0,180.0,0.0);
813   AliMatrix(idrotm[863],90.0,257.5,90.0,347.5,180.0,0.0);
814   AliMatrix(idrotm[864],90.0,227.5,90.0,317.5,180.0,0.0);
815   AliMatrix(idrotm[865],90.0,197.5,90.0,287.5,180.0,0.0);
816   AliMatrix(idrotm[867],90.0,167.5,90.0,257.5,180.0,0.0);
817   AliMatrix(idrotm[868],90.0,287.5,90.0,17.5,0.0,0.0);  
818   AliMatrix(idrotm[869],90.0,137.5,90.0,227.5,180.0,0.0);
819   AliMatrix(idrotm[870],90.0,107.5,90.0,197.5,180.0,0.0);
820   AliMatrix(idrotm[871],90.0,77.5,90.0,167.5,180.0,0.0);
821   AliMatrix(idrotm[872],90.0,47.5,90.0,137.5,180.0,0.0);
822   AliMatrix(idrotm[873],90.0,17.5,90.0,107.5,180.0,0.0);
823   AliMatrix(idrotm[874],90.0,347.5,90.0,77.5,180.0,0.0);
824   AliMatrix(idrotm[875],90.0,317.5,90.0,47.5,180.0,0.0);
825   AliMatrix(idrotm[876],90.0,287.5,90.0,17.5,180.0,0.0);
826   AliMatrix(idrotm[877],90.0,185.0,90.0,275.0,0.0,0.0);
827   AliMatrix(idrotm[878],90.0,180.0,90.0,270.0,0.0,0.0);  
828   AliMatrix(idrotm[879],90.0,125.0,90.0,215.0,0.0,0.0);
829   AliMatrix(idrotm[880],90.0,65.0,90.0,155.0,0.0,0.0);
830   AliMatrix(idrotm[881],90.0,5.0,90.0,95.0,0.0,0.0);
831   AliMatrix(idrotm[882],90.0,245.0,90.0,335.0,0.0,0.0);
832   AliMatrix(idrotm[883],90.0,47.5,90.0,137.5,0.0,0.0);
833   AliMatrix(idrotm[884],90.0,77.5,90.0,167.5,0.0,0.0);
834   AliMatrix(idrotm[885],90.0,107.5,90.0,197.5,0.0,0.0);
835   AliMatrix(idrotm[887],90.0,137.5,90.0,227.5,0.0,0.0);
836   AliMatrix(idrotm[888],90.0,167.5,90.0,257.5,0.0,0.0);
837   AliMatrix(idrotm[889],90.0,197.5,90.0,287.5,0.0,0.0);
838   AliMatrix(idrotm[890],90.0,227.5,90.0,317.5,0.0,0.0);
839   AliMatrix(idrotm[891],90.0,347.5,90.0,77.5,0.0,0.0);
840   AliMatrix(idrotm[892],90.0,317.5,90.0,47.5,0.0,0.0);
841   AliMatrix(idrotm[893],90.0,257.5,90.0,347.5,0.0,0.0);
842   AliMatrix(idrotm[894],90.0,270.0,0.0,0.0,90.0,180.0);
843   AliMatrix(idrotm[895],90.0,286.36,0.0,0.0,90.0,196.36);
844   AliMatrix(idrotm[896],90.0,302.73,0.0,0.0,90.0,212.73);
845   AliMatrix(idrotm[897],90.0,319.09,0.0,0.0,90.0,229.09);
846   AliMatrix(idrotm[898],90.0,17.5,90.0,107.5,0.0,0.0);
847   AliMatrix(idrotm[899],90.0,335.45,0.0,0.0,90.0,245.45);
848   AliMatrix(idrotm[900],90.0,351.82,0.0,0.0,90.0,261.82);
849   AliMatrix(idrotm[901],90.0,8.18,0.0,0.0,90.0,278.18);
850   AliMatrix(idrotm[902],90.0,24.55,0.0,0.0,90.0,294.55);
851   AliMatrix(idrotm[903],90.0,40.91,0.0,0.0,90.0,310.91);
852   AliMatrix(idrotm[904],90.0,57.27,0.0,0.0,90.0,327.27);
853   AliMatrix(idrotm[905],90.0,73.64,0.0,0.0,90.0,343.64);
854   AliMatrix(idrotm[906],90.0,90.0,0.0,0.0,90.0,360.0);
855   AliMatrix(idrotm[907],90.0,106.36,0.0,0.0,90.0,16.36);
856   AliMatrix(idrotm[908],90.0,122.73,0.0,0.0,90.0,32.73);
857   AliMatrix(idrotm[909],90.0,139.09,0.0,0.0,90.0,49.09);
858   AliMatrix(idrotm[910],90.0,155.45,0.0,0.0,90.0,65.45);
859   AliMatrix(idrotm[911],90.0,171.82,0.0,0.0,90.0,81.82);
860   AliMatrix(idrotm[912],90.0,188.18,0.0,0.0,90.0,98.18);
861   AliMatrix(idrotm[913],90.0,204.55,0.0,0.0,90.0,114.55);
862   AliMatrix(idrotm[914],90.0,220.91,0.0,0.0,90.0,130.91);
863   AliMatrix(idrotm[915],90.0,237.27,0.0,0.0,90.0,147.27);
864   AliMatrix(idrotm[916],90.0,253.64,0.0,0.0,90.0,163.64);
865   AliMatrix(idrotm[917],90.0,295.71,0.0,0.0,90.0,205.71);
866   AliMatrix(idrotm[918],90.0,321.43,0.0,0.0,90.0,231.43);
867   AliMatrix(idrotm[919],90.0,347.14,0.0,0.0,90.0,257.14);
868   AliMatrix(idrotm[920],90.0,12.86,0.0,0.0,90.0,282.86);
869   AliMatrix(idrotm[921],90.0,38.57,0.0,0.0,90.0,308.57);
870   AliMatrix(idrotm[922],90.0,64.29,0.0,0.0,90.0,334.29);
871   AliMatrix(idrotm[923],90.0,115.71,0.0,0.0,90.0,25.71);
872   AliMatrix(idrotm[924],90.0,141.43,0.0,0.0,90.0,51.43);
873   AliMatrix(idrotm[925],90.0,167.14,0.0,0.0,90.0,77.14);
874   AliMatrix(idrotm[926],90.0,192.86,0.0,0.0,90.0,102.86);
875   AliMatrix(idrotm[927],90.0,218.57,0.0,0.0,90.0,128.57);
876   AliMatrix(idrotm[928],90.0,244.29,0.0,0.0,90.0,154.29);
877   AliMatrix(idrotm[929],90.0,120.0,90.0,210.0,0.0,0.0);
878   AliMatrix(idrotm[930],90.0,240.0,90.0,330.0,0.0,0.0);
879   AliMatrix(idrotm[931],90.0,60.0,90.0,150.0,180.0,0.0);
880   AliMatrix(idrotm[932],90.0,120.0,90.0,210.0,180.0,0.0);
881   AliMatrix(idrotm[933],90.0,180.0,90.0,270.0,180.0,0.0);
882   AliMatrix(idrotm[934],90.0,240.0,90.0,330.0,180.0,0.0);
883   AliMatrix(idrotm[935],90.0,300.0,90.0,30.0,180.0,0.0);
884
885   // SSD cone
886
887   AliMatrix(idrotm[701],90.0,0.0,90.0,90.0,180.0,0.0);
888   AliMatrix(idrotm[702],90.0,347.5,90.0,77.5,180.0,0.0);
889   AliMatrix(idrotm[703],90.0,17.5,90.0,107.5,180.0,0.0);
890   AliMatrix(idrotm[704],90.0,47.5,90.0,137.5,180.0,0.0);
891   AliMatrix(idrotm[705],90.0,77.5,90.0,167.5,180.0,0.0);
892   AliMatrix(idrotm[706],90.0,107.5,90.0,197.5,180.0,0.0);
893   AliMatrix(idrotm[707],90.0,137.5,90.0,227.5,180.0,0.0);
894   AliMatrix(idrotm[708],90.0,167.5,90.0,257.5,180.0,0.0);
895   AliMatrix(idrotm[709],90.0,197.5,90.0,287.5,180.0,0.0);
896   AliMatrix(idrotm[710],90.0,227.5,90.0,317.5,180.0,0.0);
897   AliMatrix(idrotm[711],90.0,257.5,90.0,347.5,180.0,0.0);
898   AliMatrix(idrotm[712],90.0,287.5,90.0,17.5,180.0,0.0);
899   AliMatrix(idrotm[713],90.0,317.5,90.0,47.5,180.0,0.0);
900   AliMatrix(idrotm[714],90.0,328.4,90.0,58.4,180.0,0.0);
901   AliMatrix(idrotm[715],90.0,28.4,90.0,118.4,180.0,0.0);
902   AliMatrix(idrotm[716],90.0,88.4,90.0,178.4,180.0,0.0);
903   AliMatrix(idrotm[717],90.0,148.4,90.0,238.4,180.0,0.0);
904   AliMatrix(idrotm[718],90.0,208.4,90.0,298.4,180.0,0.0);
905   AliMatrix(idrotm[719],90.0,268.4,90.0,358.4,180.0,0.0);
906   AliMatrix(idrotm[720],90.0,28.4,90.0,118.4,0.0,0.0);
907   AliMatrix(idrotm[721],90.0,88.4,90.0,178.4,0.0,0.0);
908   AliMatrix(idrotm[722],90.0,148.4,90.0,238.4,0.0,0.0);
909   AliMatrix(idrotm[723],90.0,208.4,90.0,298.4,0.0,0.0);
910   AliMatrix(idrotm[724],90.0,268.4,90.0,358.4,0.0,0.0);
911   AliMatrix(idrotm[725],90.0,328.4,90.0,58.4,0.0,0.0);
912   AliMatrix(idrotm[726],90.0,77.5,90.0,167.5,0.0,0.0);
913   AliMatrix(idrotm[727],90.0,107.5,90.0,197.5,0.0,0.0);
914   AliMatrix(idrotm[728],90.0,137.5,90.0,227.5,0.0,0.0);
915   AliMatrix(idrotm[729],90.0,167.5,90.0,257.5,0.0,0.0);
916   AliMatrix(idrotm[730],90.0,227.5,90.0,317.5,0.0,0.0);
917   AliMatrix(idrotm[731],90.0,257.5,90.0,347.5,0.0,0.0);
918   AliMatrix(idrotm[732],90.0,317.5,90.0,47.5,0.0,0.0);  
919   AliMatrix(idrotm[733],90.0,197.5,90.0,287.5,0.0,0.0);
920   AliMatrix(idrotm[734],90.0,347.5,90.0,77.5,0.0,0.0);
921   AliMatrix(idrotm[735],90.0,47.5,90.0,137.5,0.0,0.0);
922   AliMatrix(idrotm[768],90.0,287.5,90.0,17.5,0.0,0.0);
923   AliMatrix(idrotm[798],90.0,17.5,90.0,107.5,0.0,0.0);
924
925   // Services
926     
927   AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);  
928
929
930   //     CONVERT INTO CM (RL(SI)=9.36 CM) 
931   
932   for (i = 0; i < 6; ++i) {
933     drl[i] = drl[i] / 100. * 9.36;
934   }
935     
936   //     FIELD CAGE HALF LENGTH 
937   
938   rlim  = 50.;
939   zmax  = 74.;
940   ztpc = 284.;
941   
942   // --- Define ghost volume containing the whole ITS (including services) 
943   //     and fill it with air 
944   
945   dgh[0] = 0.;
946   dgh[1] = 360.;
947   dgh[2] = 16.;
948   dgh[3] = -ztpc-5.-0.1;
949   dgh[4] = 46;   
950   dgh[5] = 85.;
951   dgh[6] = -ztpc;
952   dgh[7] = 46;   
953   dgh[8] = 85.;
954   dgh[9] = -ztpc;
955   dgh[10] = 46;  
956   dgh[11] = rlim+6;
957   dgh[12] = -97.5;
958   dgh[13] = 46;  
959   dgh[14] = rlim+6;
960   dgh[15] = -zmax;
961   dgh[16] = 46;  
962   dgh[17] = rlim+6;
963   dgh[18] = -48;   
964   dgh[19] = 6;
965   dgh[20] = rlim+6;
966   dgh[21] = -28.6;   
967   dgh[22] = 6;
968   dgh[23] = rlim+6;    
969   dgh[24] = -27.6;  
970   dgh[25] = 3.295;
971   dgh[26] = rlim+6; 
972   dgh[27] = 27.6;   
973   dgh[28] = 3.295;
974   dgh[29] = rlim+6;
975   dgh[30] = 28.6;   
976   dgh[31] = 6;
977   dgh[32] = rlim+6;
978   dgh[33] = 48;   
979   dgh[34] = 6;
980   dgh[35] = rlim+6;  
981   dgh[36] = zmax;
982   dgh[37] = 46;
983   dgh[38] = rlim+6;
984   dgh[39] = 97.5;
985   dgh[40] = 46;  
986   dgh[41] = rlim+6;
987   dgh[42] = ztpc;
988   dgh[43] = 62;     
989   dgh[44] = 62+4.;  
990   dgh[45] = ztpc;
991   dgh[46] = 62;     
992   dgh[47] = 85.;
993   dgh[48] = ztpc+4.+0.1;
994   dgh[49] = 62.4;
995   dgh[50] = 85.;
996   gMC->Gsvolu("ITSV", "PCON", idtmed[205], dgh, 51);
997
998   
999   // --- Place the ghost volume in its mother volume (ALIC) and make it 
1000   //     invisible 
1001   
1002   gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
1003   //gMC->Gsatt("ITSV", "SEEN", 0); 
1004
1005
1006   // --- Define ghost volume containing the six layers and fill it with air 
1007   
1008   dgh[0] = 0.;
1009   dgh[1] = 360.;
1010   dgh[2] = 8.;
1011   dgh[3] = -zmax;  
1012   dgh[4] = 46.;
1013   dgh[5] = rlim;
1014   dgh[6] = -47.5;    
1015   dgh[7] = 6.005;
1016   dgh[8] = rlim;
1017   dgh[9] = -28.5;    
1018   dgh[10] = 6.005;
1019   dgh[11] = rlim;  
1020   dgh[12] = -27.5;   
1021   dgh[13] = 3.3;
1022   dgh[14] = rlim;
1023   dgh[15] = 27.5;    
1024   dgh[16] = 3.3;
1025   dgh[17] = rlim;
1026   dgh[18] = 28.5;    
1027   dgh[19] = 6.005;
1028   dgh[20] = rlim;
1029   dgh[21] = 47.5;    
1030   dgh[22] = 6.005;
1031   dgh[23] = rlim;
1032   dgh[24] = zmax;    
1033   dgh[25] = 46.;
1034   dgh[26] = rlim;
1035   gMC->Gsvolu("ITSD", "PCON", idtmed[205], dgh, 27);
1036   
1037   // --- Place the ghost volume in its mother volume (ITSV) and make it 
1038   //     invisible 
1039   
1040   gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
1041   //gMC->Gsatt("ITSD", "SEEN", 0);
1042
1043
1044   // --- Define SPD (option 'a') volumes ----------------------------
1045   
1046   // SPD - option 'a' 
1047   // (this is NOT the default)
1048
1049   if (option == 1) {
1050   
1051      dits[0] = 3.7;
1052      dits[1] = 7.75;
1053      dits[2] = 26.1;
1054      gMC->Gsvolu("IT12", "TUBE", idtmed[254], dits, 3);   
1055
1056      dits[0] = 3.7;
1057      dits[1] = 7.7;
1058      dits[2] = 24;
1059      dits[3] = 57;
1060      dits[4] = 100;
1061      gMC->Gsvolu("I12A", "TUBS", idtmed[254], dits, 5);    // sector
1062
1063      di10a[0] = 0.843;
1064      di10a[1] = ddet1+dchip1+dbus+0.0025;
1065      di10a[2] = 19.344;
1066      gMC->Gsvolu("I10A", "BOX ", idtmed[254], di10a, 3);    // mother volume
1067                                                             // on layer 1
1068      di20a[0] = 0.843;
1069      di20a[1] = ddet2+dchip2+dbus+0.0025;
1070      di20a[2] = 19.344;
1071      gMC->Gsvolu("I20A", "BOX ", idtmed[254], di20a, 3);    // mother volume
1072                                                             // on layer 2
1073      dits[0] = 1.3673;
1074      dits[1] = 0.01;
1075      dits[2] = 24;
1076      gMC->Gsvolu("I123", "BOX ", idtmed[253], dits, 3);
1077
1078      dits[0] = 0.06;
1079      dits[1] = 0.08;
1080      dits[2] = 24;
1081      dits[3] = -36.79;
1082      dits[4] = 21.834;
1083      gMC->Gsvolu("I121", "TUBS", idtmed[253], dits, 5);  
1084
1085      dits[0] = 0.1253;
1086      dits[1] = 0.01;
1087      dits[2] = 24;
1088      gMC->Gsvolu("I122", "BOX ", idtmed[253], dits, 3);  
1089
1090      dits[0] = 0.04;
1091      dits[1] = 0.06 ;
1092      dits[2] = 24;
1093      dits[3] = 126.79;
1094      dits[4] = 270;
1095      gMC->Gsvolu("I120", "TUBS", idtmed[253], dits, 5);  
1096
1097      dits[0] = 0.1134;
1098      dits[1] = 0.01;
1099      dits[2] = 24;
1100      gMC->Gsvolu("I144", "BOX ", idtmed[253], dits, 3);  
1101
1102      dits[0] = 0.25;
1103      dits[1] = 0.06;
1104      dits[2] = 24;
1105      gMC->Gsvolu("I113", "BOX ", idtmed[254], dits, 3);  
1106
1107      dits[0] = 0.077;
1108      dits[1] = 0.01;
1109      dits[2] = 24;
1110      gMC->Gsvolu("I143", "BOX ", idtmed[253], dits, 3);   
1111
1112      dits[0] = 0.04;
1113      dits[1] = 0.06;
1114      dits[2] = 24;
1115      dits[3] = 0;
1116      dits[4] = 90;
1117      gMC->Gsvolu("I142", "TUBS", idtmed[253], dits, 5); 
1118
1119      dits[0] = 0.0695;
1120      dits[1] = 0.01;
1121      dits[2] = 24;
1122      gMC->Gsvolu("I141", "BOX ", idtmed[253], dits, 3);  
1123
1124      dits[0] = 0.06;
1125      dits[1] = 0.08;
1126      dits[2] = 24;
1127      dits[3] = 0;
1128      dits[4] = 108;
1129      gMC->Gsvolu("I140", "TUBS", idtmed[253], dits, 5);  
1130
1131      dits[0] = 0.1835;
1132      dits[1] = 0.01;
1133      dits[2] = 24;
1134      gMC->Gsvolu("I139", "BOX ", idtmed[253], dits, 3);
1135
1136      dits[0] = 0.1894 ;
1137      dits[1] = 0.01;
1138      dits[2] = 24;
1139      gMC->Gsvolu("I138", "BOX ", idtmed[253], dits, 3);  
1140
1141      dits[0] = 0.04;
1142      dits[1] = 0.06;
1143      dits[2] = 24;
1144      dits[3] = 0;
1145      dits[4] = 75.261;
1146      gMC->Gsvolu("I137", "TUBS", idtmed[253], dits, 5);  
1147
1148      dits[0] = 1.3401;
1149      dits[1] = 0.01;
1150      dits[2] = 24;
1151      gMC->Gsvolu("I136", "BOX ", idtmed[253], dits, 3);  
1152
1153      dits[0] = 0.05;
1154      dits[1] = 0.07;
1155      dits[2] = 24;
1156      dits[3] = 0;
1157      dits[4] = 72.739;
1158      gMC->Gsvolu("I135", "TUBS", idtmed[253], dits, 5);  
1159
1160      dits[0] = 0.1193;
1161      dits[1] = 0.01;
1162      dits[2] = 24;
1163      gMC->Gsvolu("I134", "BOX ", idtmed[253], dits, 3);    
1164
1165      dits[0] = 0.163;
1166      dits[1] = 0.01;
1167      dits[2] = 24;
1168      gMC->Gsvolu("I133", "BOX ", idtmed[253], dits, 3);   
1169
1170      dits[0] = 0.04;
1171      dits[1] = 0.06;
1172      dits[2] = 24;
1173      dits[3] = 0;
1174      dits[4] = 157.633;
1175      gMC->Gsvolu("I132", "TUBS", idtmed[253], dits, 5); 
1176
1177      dits[0] = 0.2497;
1178      dits[1] = 0.01;
1179      dits[2] = 24;
1180      gMC->Gsvolu("I131", "BOX ", idtmed[253], dits, 3); 
1181
1182      dits[0] = 0.06;
1183      dits[1] = 0.08;
1184      dits[2] = 24;
1185      dits[3] = 0;
1186      dits[4] = 148.633;
1187      gMC->Gsvolu("I130", "TUBS", idtmed[253], dits, 5); 
1188
1189      dits[0] = 0.292;
1190      dits[1] = 0.01;
1191      dits[2] = 24;
1192      gMC->Gsvolu("I129", "BOX ", idtmed[253], dits, 3);  
1193
1194      dits[0] = 0.163;
1195      dits[1] = 0.01;
1196      dits[2] = 24;
1197      gMC->Gsvolu("I128", "BOX ", idtmed[253], dits, 3);  
1198
1199      dits[0] = 0.04;
1200      dits[1] = 0.06;
1201      dits[2] = 24;
1202      dits[3] = 0;
1203      dits[4] = 161.297;
1204      gMC->Gsvolu("I126", "TUBS", idtmed[253], dits, 5);
1205
1206      dits[0] = 0.2433;
1207      dits[1] = 0.01;
1208      dits[2] = 24;
1209      gMC->Gsvolu("I125", "BOX ", idtmed[253], dits, 3);  
1210
1211      dits[0] = 0.06;
1212      dits[1] = 0.08;
1213      dits[2] = 24;
1214      dits[3] = 0;
1215      dits[4] = 42.883;
1216      gMC->Gsvolu("I124", "TUBS", idtmed[253], dits, 5);  
1217
1218      di103[0] = 0.793;
1219      di103[1] = ddet1+dchip1;
1220      di103[2] = 3.536;
1221      gMC->Gsvolu("I103", "BOX ", idtmed[254], di103, 3); // contains det and chip  
1222                                                          // layer 1
1223      dits[0] = 0.793;
1224      dits[1] = 0.475;  //0.685; 0.015
1225      dits[2] = 2.5;
1226      gMC->Gsvolu("I105", "BOX ", idtmed[290], dits, 3);  // end-ladder electr.
1227
1228      di104[0] = 0.843;
1229      di104[1] = dbus;
1230      di104[2] = 14.344;
1231      gMC->Gsvolu("I104", "BOX ", idtmed[275], di104, 3);  // bus for both layers
1232
1233      di1d3[0] = 0.793;
1234      di1d3[1] = ddet2+dchip2;
1235      di1d3[2] = 3.536;
1236      gMC->Gsvolu("I1D3", "BOX ", idtmed[254], di1d3, 3); // contains det and chip
1237                                                          // layer 2
1238      dits[0] = 0.793;
1239      dits[0] = 0.06;
1240      dits[1] = 0.08;
1241      dits[2] = 24;
1242      dits[3] = 0;
1243      dits[4] = 80;
1244      gMC->Gsvolu("I112", "TUBS", idtmed[253], dits, 5);  
1245
1246      dits[0] = 0.04;
1247      dits[1] = 0.06;
1248      dits[2] = 24;
1249      dits[3] = 0;
1250      dits[4] = 80;
1251      gMC->Gsvolu("I111", "TUBS", idtmed[253], dits, 5);  
1252
1253      dits[0] = 0.15;
1254      dits[1] = 0.0146;
1255      dits[2] = 24;
1256      gMC->Gsvolu("I118", "BOX ", idtmed[273], dits, 3);  
1257
1258      dits[0] = 0.1315;
1259      dits[1] = 0.01;
1260      dits[2] = 24;
1261      gMC->Gsvolu("I110", "BOX ", idtmed[253], dits, 3);  
1262
1263      dits[0] = 0.025;
1264      dits[1] = 0.035;
1265      dits[2] = 24;
1266      dits[3] = 0;
1267      dits[4] = 180;
1268      gMC->Gsvolu("I114", "TUBS", idtmed[264], dits, 5);  
1269
1270      if (fluid == 1) {
1271         dits[0] = 0;
1272         dits[1] = 0.025;
1273         dits[2] = 24;
1274         dits[3] = 0;
1275         dits[4] = 180;
1276         gMC->Gsvolu("I115", "TUBS", idtmed[211], dits, 5); // set water as cooling fluid   
1277      } else {
1278         dits[0] = 0;
1279         dits[1] = 0.025;
1280         dits[2] = 24;
1281         dits[3] = 0;
1282         dits[4] = 180;
1283         gMC->Gsvolu("I115", "TUBS", idtmed[212], dits, 5); // set freon as cooling fluid       
1284      }
1285      
1286      dits[0] = 0.063;
1287      dits[1] = 0.035;
1288      dits[2] = 24;
1289      gMC->Gsvolu("I116", "BOX ", idtmed[264], dits, 3); 
1290
1291      di102[0] = 0.793;
1292      di102[1] = dchip1;
1293      di102[2] = 0.68;
1294      gMC->Gsvolu("I102", "BOX ", idtmed[201], di102, 3);   // chip layer 1
1295           
1296      di1d2[0] = 0.793;
1297      di1d2[1] = dchip2;
1298      di1d2[2] = 0.68;
1299      gMC->Gsvolu("I1D2", "BOX ", idtmed[201], di1d2, 3);   // chip      layer 2
1300
1301      di101[0] = 0.705;
1302      di101[1] = ddet1;
1303      di101[2] = 3.536;
1304      gMC->Gsvolu("I101", "BOX ", idtmed[250], di101, 3);   // contains detector 
1305                                                            // layer 1
1306      di1d1[0] = 0.705;
1307      di1d1[1] = ddet2;
1308      di1d1[2] = 3.536;
1309      gMC->Gsvolu("I1D1", "BOX ", idtmed[250], di1d1, 3);   // contains detector 
1310                                                            // layer 2
1311      if (fluid == 1) {
1312         dits[0] = 0.063;
1313         dits[1] = 0.025;
1314         dits[2] = 24;
1315         gMC->Gsvolu("I117", "BOX ", idtmed[211], dits, 3); // set water as cooling fuid
1316      } else {
1317         dits[0] = 0.063;
1318         dits[1] = 0.025;
1319         dits[2] = 24;
1320         gMC->Gsvolu("I117", "BOX ", idtmed[212], dits, 3); // set freon as cooling fluid
1321      }
1322
1323      dits1[0] = 0.64;
1324      dits1[1] = ddet1;
1325      dits1[2] = 3.48;
1326      gMC->Gsvolu("ITS1", "BOX ", idtmed[200], dits1, 3);   // detector layer 1
1327
1328      dits2[0] = 0.64;
1329      dits2[1] = ddet2;
1330      dits2[2] = 3.48;
1331      gMC->Gsvolu("ITS2", "BOX ", idtmed[200], dits2, 3);   // detector layer 2
1332
1333      dits[0] = 3.701;
1334      dits[1] = 7.699;
1335      dits[2] = 4;
1336      dits[3] = 57.1;
1337      dits[4] = 99.9;  
1338      gMC->Gsvolu("I650", "TUBS", idtmed[254], dits, 5);  // was I150 in old geom.
1339
1340      dits[0] = 0;
1341      dits[1] = 0.5;
1342      dits[2] = 1.5;
1343      gMC->Gsvolu("I676", "TUBE", idtmed[274], dits, 3); // was I176 in old geom.
1344
1345      dits[0] = 0;
1346      dits[1] = 0.18;
1347      dits[2] = 0.8;
1348      gMC->Gsvolu("I673", "TUBE", idtmed[274], dits, 3); // was I173 in old geom.
1349
1350      dits[0] = 0;
1351      dits[1] = 0.18;
1352      dits[2] = 3;
1353      gMC->Gsvolu("I671", "TUBE", idtmed[274], dits, 3); // was I171 in old geom.
1354
1355      dits[0] = 0;
1356      dits[1] = 0.075;
1357      dits[2] = 0.8;
1358      gMC->Gsvolu("I669", "TUBE", idtmed[264], dits, 3); // was I169 in old geom.
1359
1360      dits[0] = 3.5;
1361      dits[1] = 5.6;
1362      dits[2] = 0.55;
1363      dits[3] = 0;
1364      dits[4] = 38;
1365      gMC->Gsvolu("I667", "TUBS", idtmed[263], dits, 5); // was I167 in old geom.
1366
1367      dits[0] = 6.6;
1368      dits[1] = 7.6;
1369      dits[2] = 0.5;
1370      dits[3] = 0;
1371      dits[4] = 9;
1372      gMC->Gsvolu("I666", "TUBS", idtmed[263], dits, 5); // was I166 in old geom.
1373
1374      dits[0] = 0.26;
1375      dits[1] = 0.32;
1376      dits[2] = 0.55;
1377      gMC->Gsvolu("I678", "TUBE", idtmed[263], dits, 3); // was I178 in old geom.
1378
1379      if (fluid == 1) {
1380         dits[0] = 0;
1381         dits[1] = 0.3;
1382         dits[2] = 1.5;
1383         gMC->Gsvolu("I677", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
1384                                                            // was I177 in old geom.
1385      } else {
1386          dits[0] = 0;
1387         dits[1] = 0.3;
1388         dits[2] = 1.5;
1389         gMC->Gsvolu("I677", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
1390                                                            // was I177 in old geom.    
1391      }
1392      
1393      dits[0] = 0.07;
1394      dits[1] = 0.125;
1395      dits[2] = 0.3;
1396      gMC->Gsvolu("I675", "TUBE", idtmed[263], dits, 3); // was I175 in old geom.
1397
1398      if (fluid == 1) {
1399         dits[0] = 0;
1400         dits[1] = 0.1;
1401         dits[2] = 0.8;
1402         gMC->Gsvolu("I674", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
1403                                                            // was I174 in old geom.
1404      } else {
1405         dits[0] = 0;
1406         dits[1] = 0.1;
1407         dits[2] = 0.8;
1408         gMC->Gsvolu("I674", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
1409                                                            // was I174 in old geom.     
1410      }
1411      
1412      if (fluid == 1) {
1413         dits[0] = 0;
1414         dits[1] = 0.1;
1415         dits[2] = 3;
1416         gMC->Gsvolu("I672", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
1417                                                            // was I172 in old geom.
1418      } else {
1419         dits[0] = 0;
1420         dits[1] = 0.1;
1421         dits[2] = 3;
1422         gMC->Gsvolu("I672", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
1423                                                            // was I172 in old geom.        
1424      }
1425      
1426      if (fluid == 1) {     
1427         dits[0] = 0;
1428         dits[1] = 0.0746;
1429         dits[2] = 0.8;
1430         gMC->Gsvolu("I670", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
1431                                                            // was I170 in old geom.
1432      } else {
1433         dits[0] = 0;
1434         dits[1] = 0.0746;
1435         dits[2] = 0.8;
1436         gMC->Gsvolu("I670", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
1437                                                            // was I170 in old geom.     
1438      }
1439      
1440      if (fluid == 1) {     
1441         dits[0] = 3.7;
1442         dits[1] = 5.4;
1443         dits[2] = 0.35;
1444         dits[3] = 2;
1445         dits[4] = 36;
1446         gMC->Gsvolu("I668", "TUBS", idtmed[211], dits, 5); // set water as cooling fluid
1447                                                            // was I168 in old geom.
1448      } else {
1449         dits[0] = 3.7;
1450         dits[1] = 5.4;
1451         dits[2] = 0.35;
1452         dits[3] = 2;
1453         dits[4] = 36;
1454         gMC->Gsvolu("I668", "TUBS", idtmed[212], dits, 5); // set freon as cooling fluid
1455                                                            // was I168 in old geom.
1456      }
1457
1458
1459   }
1460
1461   // --- Define SPD (option 'b') volumes ----------------------------
1462   
1463   // SPD - option 'b' 
1464   // (this is the default)
1465
1466   if (option == 2) {
1467   
1468      dits[0] = 3.7;
1469      dits[1] = 7.75;
1470      dits[2] = 26.1;
1471      gMC->Gsvolu("IT12", "TUBE", idtmed[254], dits, 3);   
1472
1473      dits[0] = 3.7;
1474      dits[1] = 7.7;
1475      dits[2] = 24;
1476      dits[3] = 57;
1477      dits[4] = 100;
1478      gMC->Gsvolu("I12B", "TUBS", idtmed[254], dits, 5);   // sector
1479
1480      di10b[0] = 0.843;
1481      di10b[1] = ddet1+dchip1+dbus+0.0025;  
1482      di10b[2] = 19.344;
1483      gMC->Gsvolu("I10B", "BOX ", idtmed[254], di10b, 3);   // mother volume 
1484                                                                 // on layer 1
1485
1486      di20b[0] = 0.843;
1487      di20b[1] = ddet2+dchip2+dbus+0.0025;   
1488      di20b[2] = 19.344;
1489      gMC->Gsvolu("I20B", "BOX ", idtmed[254], di20b, 3);   // mother volume
1490                                                                 // layer 2
1491
1492      dits[0] = 1.3673;
1493      dits[1] = 0.01;
1494      dits[2] = 24;
1495      gMC->Gsvolu("I123", "BOX ", idtmed[253], dits, 3);
1496
1497      dits[0] = 0.06;
1498      dits[1] = 0.08;
1499      dits[2] = 24;
1500      dits[3] = -36.79;
1501      dits[4] = 21.834;
1502      gMC->Gsvolu("I121", "TUBS", idtmed[253], dits, 5);  
1503
1504      dits[0] = 0.1253;
1505      dits[1] = 0.01;
1506      dits[2] = 24;
1507      gMC->Gsvolu("I122", "BOX ", idtmed[253], dits, 3);  
1508
1509      dits[0] = 0.04;
1510      dits[1] = 0.06 ;
1511      dits[2] = 24;
1512      dits[3] = 126.79;
1513      dits[4] = 270;
1514      gMC->Gsvolu("I120", "TUBS", idtmed[253], dits, 5);  
1515
1516      dits[0] = 0.1134;
1517      dits[1] = 0.01;
1518      dits[2] = 24;
1519      gMC->Gsvolu("I144", "BOX ", idtmed[253], dits, 3);  
1520
1521      dits[0] = 0.25;
1522      dits[1] = 0.06;
1523      dits[2] = 24;
1524      gMC->Gsvolu("I113", "BOX ", idtmed[254], dits, 3);  
1525
1526      dits[0] = 0.077;
1527      dits[1] = 0.01;
1528      dits[2] = 24;
1529      gMC->Gsvolu("I143", "BOX ", idtmed[253], dits, 3);   
1530
1531      dits[0] = 0.04;
1532      dits[1] = 0.06;
1533      dits[2] = 24;
1534      dits[3] = 0;
1535      dits[4] = 90;
1536      gMC->Gsvolu("I142", "TUBS", idtmed[253], dits, 5); 
1537
1538      dits[0] = 0.0695;
1539      dits[1] = 0.01;
1540      dits[2] = 24;
1541      gMC->Gsvolu("I141", "BOX ", idtmed[253], dits, 3);  
1542
1543      dits[0] = 0.06;
1544      dits[1] = 0.08;
1545      dits[2] = 24;
1546      dits[3] = 0;
1547      dits[4] = 108;
1548      gMC->Gsvolu("I140", "TUBS", idtmed[253], dits, 5);  
1549
1550      dits[0] = 0.1835;
1551      dits[1] = 0.01;
1552      dits[2] = 24;
1553      gMC->Gsvolu("I139", "BOX ", idtmed[253], dits, 3);
1554
1555      dits[0] = 0.1894 ;
1556      dits[1] = 0.01;
1557      dits[2] = 24;
1558      gMC->Gsvolu("I138", "BOX ", idtmed[253], dits, 3);  
1559
1560      dits[0] = 0.04;
1561      dits[1] = 0.06;
1562      dits[2] = 24;
1563      dits[3] = 0;
1564      dits[4] = 75.261;
1565      gMC->Gsvolu("I137", "TUBS", idtmed[253], dits, 5);  
1566
1567      dits[0] = 1.3401;
1568      dits[1] = 0.01;
1569      dits[2] = 24;
1570      gMC->Gsvolu("I136", "BOX ", idtmed[253], dits, 3);  
1571
1572      dits[0] = 0.05;
1573      dits[1] = 0.07;
1574      dits[2] = 24;
1575      dits[3] = 0;
1576      dits[4] = 72.739;
1577      gMC->Gsvolu("I135", "TUBS", idtmed[253], dits, 5);  
1578
1579      dits[0] = 0.1193;
1580      dits[1] = 0.01;
1581      dits[2] = 24;
1582      gMC->Gsvolu("I134", "BOX ", idtmed[253], dits, 3);    
1583
1584      dits[0] = 0.163;
1585      dits[1] = 0.01;
1586      dits[2] = 24;
1587      gMC->Gsvolu("I133", "BOX ", idtmed[253], dits, 3);   
1588
1589      dits[0] = 0.04;
1590      dits[1] = 0.06;
1591      dits[2] = 24;
1592      dits[3] = 0;
1593      dits[4] = 157.633;
1594      gMC->Gsvolu("I132", "TUBS", idtmed[253], dits, 5); 
1595
1596      dits[0] = 0.2497;
1597      dits[1] = 0.01;
1598      dits[2] = 24;
1599      gMC->Gsvolu("I131", "BOX ", idtmed[253], dits, 3); 
1600
1601      dits[0] = 0.06;
1602      dits[1] = 0.08;
1603      dits[2] = 24;
1604      dits[3] = 0;
1605      dits[4] = 148.633;
1606      gMC->Gsvolu("I130", "TUBS", idtmed[253], dits, 5); 
1607
1608      dits[0] = 0.292;
1609      dits[1] = 0.01;
1610      dits[2] = 24;
1611      gMC->Gsvolu("I129", "BOX ", idtmed[253], dits, 3);  
1612
1613      dits[0] = 0.163;
1614      dits[1] = 0.01;
1615      dits[2] = 24;
1616      gMC->Gsvolu("I128", "BOX ", idtmed[253], dits, 3);  
1617
1618      dits[0] = 0.04;
1619      dits[1] = 0.06;
1620      dits[2] = 24;
1621      dits[3] = 0;
1622      dits[4] = 161.297;
1623      gMC->Gsvolu("I126", "TUBS", idtmed[253], dits, 5);
1624
1625      dits[0] = 0.2433;
1626      dits[1] = 0.01;
1627      dits[2] = 24;
1628      gMC->Gsvolu("I125", "BOX ", idtmed[253], dits, 3);  
1629
1630      dits[0] = 0.06;
1631      dits[1] = 0.08;
1632      dits[2] = 24;
1633      dits[3] = 0;
1634      dits[4] = 42.883;
1635      gMC->Gsvolu("I124", "TUBS", idtmed[253], dits, 5);  
1636
1637      dits[0] = 0.793;
1638      dits[1] = 0.475 ;  //0.685; 0.015
1639      dits[2] = 2.5;
1640      gMC->Gsvolu("I105", "BOX ", idtmed[290], dits, 3);  
1641
1642      di107[0] = 0.793;
1643      di107[1] = ddet1+dchip1;
1644      di107[2] = 3.536;
1645      gMC->Gsvolu("I107", "BOX ", idtmed[254], di107, 3); // contains det and chip   
1646                                                          // layer 1
1647      dits[0] = 0.705;
1648      dits[1] = 0.01;
1649      dits[2] = 2.5;
1650      gMC->Gsvolu("I109", "BOX ", idtmed[275], dits, 3);  
1651
1652      di108[0] = 0.705;
1653      di108[1] = dbus;
1654      di108[2] = 14.344;
1655      gMC->Gsvolu("I108", "BOX ", idtmed[275], di108, 3); // bus for both layers 
1656
1657      di1d7[0] = 0.7975;
1658      di1d7[1] = ddet2+dchip2;   
1659      di1d7[2] = 3.536;
1660      gMC->Gsvolu("I1D7", "BOX ", idtmed[254], di1d7, 3); // contains det and chip
1661                                                          // layer 2
1662      dits[0] = 0.06;
1663      dits[1] = 0.08;
1664      dits[2] = 24;
1665      dits[3] = 0;
1666      dits[4] = 80;
1667      gMC->Gsvolu("I112", "TUBS", idtmed[253], dits, 5);  
1668
1669      dits[0] = 0.04;
1670      dits[1] = 0.06;
1671      dits[2] = 24;
1672      dits[3] = 0;
1673      dits[4] = 80;
1674      gMC->Gsvolu("I111", "TUBS", idtmed[253], dits, 5);  
1675
1676      dits[0] = 0.15;
1677      dits[1] = 0.0146;
1678      dits[2] = 24;
1679      gMC->Gsvolu("I118", "BOX ", idtmed[273], dits, 3);  
1680
1681      dits[0] = 0.1315;
1682      dits[1] = 0.01;
1683      dits[2] = 24;
1684      gMC->Gsvolu("I110", "BOX ", idtmed[253], dits, 3);  
1685
1686      dits[0] = 0.025;
1687      dits[1] = 0.035;
1688      dits[2] = 24;
1689      dits[3] = 0;
1690      dits[4] = 180;
1691      gMC->Gsvolu("I114", "TUBS", idtmed[264], dits, 5);  
1692
1693      if (fluid == 1) {
1694         dits[0] = 0;
1695         dits[1] = 0.025;
1696         dits[2] = 24;
1697         dits[3] = 0;
1698         dits[4] = 180;
1699         gMC->Gsvolu("I115", "TUBS", idtmed[211], dits, 5);  // set water as cooling fluid   
1700      } else {
1701         dits[0] = 0;
1702         dits[1] = 0.025;
1703         dits[2] = 24;
1704         dits[3] = 0;
1705         dits[4] = 180;
1706         gMC->Gsvolu("I115", "TUBS", idtmed[212], dits, 5);  // set freon as cooling fluid
1707      }
1708      
1709      dits[0] = 0.063;
1710      dits[1] = 0.035;
1711      dits[2] = 24;
1712      gMC->Gsvolu("I116", "BOX ", idtmed[264], dits, 3); 
1713
1714      di106[0] = 0.7975;
1715      di106[1] = dchip1;   
1716      di106[2] = 0.68;
1717      gMC->Gsvolu("I106", "BOX ", idtmed[201], di106, 3);   // chip layer 1
1718
1719      di1d6[0] = 0.7975;
1720      di1d6[1] = dchip2;   
1721      di1d6[2] = 0.68;
1722      gMC->Gsvolu("I1D6", "BOX ", idtmed[201], di1d6, 3);   // chip layer 2
1723
1724      di101[0] = 0.705;
1725      di101[1] = ddet1;
1726      di101[2] = 3.536;
1727      gMC->Gsvolu("I101", "BOX ", idtmed[250], di101, 3);  // contains detector  
1728                                                           // layer 1
1729      di1d1[0] = 0.705;
1730      di1d1[1] = ddet2;   
1731      di1d1[2] = 3.536;
1732      gMC->Gsvolu("I1D1", "BOX ", idtmed[250], di1d1, 3);  // contains detector  
1733                                                           // layer 2
1734    
1735      if (fluid == 1) {
1736         dits[0] = 0.063;
1737         dits[1] = 0.025;
1738         dits[2] = 24;
1739         gMC->Gsvolu("I117", "BOX ", idtmed[211], dits, 3); // set water as cooling fluid
1740      } else {
1741         dits[0] = 0.063;
1742         dits[1] = 0.025;
1743         dits[2] = 24;
1744         gMC->Gsvolu("I117", "BOX ", idtmed[212], dits, 3); // set freon as cooling fluid
1745      }
1746
1747      dits1[0] = 0.64;
1748      dits1[1] = ddet1;
1749      dits1[2] = 3.48;
1750      gMC->Gsvolu("ITS1", "BOX ", idtmed[200], dits1, 3);   // detector layer 1
1751
1752      dits2[0] = 0.64;
1753      dits2[1] = ddet2;  
1754      dits2[2] = 3.48;
1755      gMC->Gsvolu("ITS2", "BOX ", idtmed[200], dits2, 3);   // detector layer 2
1756
1757      dits[0] = 3.701;
1758      dits[1] = 7.699;
1759      dits[2] = 4;
1760      dits[3] = 57.1;
1761      dits[4] = 99.9;  
1762      gMC->Gsvolu("I650", "TUBS", idtmed[254], dits, 5);  // was I150 in old geom.
1763
1764      dits[0] = 0;
1765      dits[1] = 0.5;
1766      dits[2] = 1.5;
1767      gMC->Gsvolu("I676", "TUBE", idtmed[274], dits, 3); // was I176 in old geom.
1768
1769      dits[0] = 0;
1770      dits[1] = 0.18;
1771      dits[2] = 0.8;
1772      gMC->Gsvolu("I673", "TUBE", idtmed[274], dits, 3); // was I173 in old geom.
1773
1774      dits[0] = 0;
1775      dits[1] = 0.18;
1776      dits[2] = 3;
1777      gMC->Gsvolu("I671", "TUBE", idtmed[274], dits, 3); // was I171 in old geom.
1778
1779      dits[0] = 0;
1780      dits[1] = 0.075;
1781      dits[2] = 0.8;
1782      gMC->Gsvolu("I669", "TUBE", idtmed[264], dits, 3); // was I169 in old geom.
1783
1784      dits[0] = 3.5;
1785      dits[1] = 5.6;
1786      dits[2] = 0.55;
1787      dits[3] = 0;
1788      dits[4] = 38;
1789      gMC->Gsvolu("I667", "TUBS", idtmed[263], dits, 5); // was I167 in old geom.
1790
1791      dits[0] = 6.6;
1792      dits[1] = 7.6;
1793      dits[2] = 0.5;
1794      dits[3] = 0;
1795      dits[4] = 9;
1796      gMC->Gsvolu("I666", "TUBS", idtmed[263], dits, 5); // was I166 in old geom.
1797
1798      dits[0] = 0.26;
1799      dits[1] = 0.32;
1800      dits[2] = 0.55;
1801      gMC->Gsvolu("I678", "TUBE", idtmed[263], dits, 3); // was I178 in old geom.
1802
1803      if (fluid == 1) {
1804         dits[0] = 0;
1805         dits[1] = 0.3;
1806         dits[2] = 1.5;
1807         gMC->Gsvolu("I677", "TUBE", idtmed[211], dits, 3); //set water as cooling fluid
1808                                                            // was I177 in old geom.
1809      } else {
1810         dits[0] = 0;
1811         dits[1] = 0.3;
1812         dits[2] = 1.5;
1813         gMC->Gsvolu("I677", "TUBE", idtmed[212], dits, 3); //set freon as cooling fluid
1814                                                            // was I177 in old geom.     
1815      }
1816
1817      dits[0] = 0.07;
1818      dits[1] = 0.125;
1819      dits[2] = 0.3;
1820      gMC->Gsvolu("I675", "TUBE", idtmed[263], dits, 3); // was I175 in old geom.
1821
1822      if (fluid == 1) {
1823         dits[0] = 0;
1824         dits[1] = 0.1;
1825         dits[2] = 0.8;
1826         gMC->Gsvolu("I674", "TUBE", idtmed[211], dits, 3); //set water as cooling fluid
1827                                                            // was I174 in old geom.
1828      } else {
1829         dits[0] = 0;
1830         dits[1] = 0.1;
1831         dits[2] = 0.8;
1832         gMC->Gsvolu("I674", "TUBE", idtmed[212], dits, 3); //set freon as cooling fluid
1833                                                            // was I174 in old geom.     
1834      }
1835      
1836      if (fluid == 1) {
1837         dits[0] = 0;
1838         dits[1] = 0.1;
1839         dits[2] = 3;
1840         gMC->Gsvolu("I672", "TUBE", idtmed[211], dits, 3); //set water as cooling fluid
1841                                                            // was I172 in old geom.
1842      } else {
1843         dits[0] = 0;
1844         dits[1] = 0.1;
1845         dits[2] = 3;
1846         gMC->Gsvolu("I672", "TUBE", idtmed[212], dits, 3); //set freon as cooling fluid
1847                                                            // was I172 in old geom.     
1848      }
1849      
1850      if (fluid == 1) {
1851         dits[0] = 0;
1852         dits[1] = 0.0746;
1853         dits[2] = 0.8;
1854         gMC->Gsvolu("I670", "TUBE", idtmed[211], dits, 3); //set water as cooling fluid
1855                                                            // was I170 in old geom.
1856      } else {
1857         dits[0] = 0;
1858         dits[1] = 0.0746;
1859         dits[2] = 0.8;
1860         gMC->Gsvolu("I670", "TUBE", idtmed[212], dits, 3); //set freon as cooling fluid
1861                                                            // was I170 in old geom.     
1862      }
1863      
1864      if (fluid == 1) {
1865         dits[0] = 3.7;
1866         dits[1] = 5.4;
1867         dits[2] = 0.35;
1868         dits[3] = 2;
1869         dits[4] = 36;
1870         gMC->Gsvolu("I668", "TUBS", idtmed[211], dits, 5); //set water as cooling fluid
1871                                                            // was I168 in old geom.
1872      } else {
1873         dits[0] = 3.7;
1874         dits[1] = 5.4;
1875         dits[2] = 0.35;
1876         dits[3] = 2;
1877         dits[4] = 36;
1878         gMC->Gsvolu("I668", "TUBS", idtmed[212], dits, 5); //set freon as cooling fluid
1879                                                            // was I168 in old geom.     
1880      }
1881      
1882
1883   }
1884
1885   // --- Define SDD volumes ------------------------------------------
1886
1887   
1888   cos30 = cos(30.*3.14159/180.);
1889   sin30 = sin(30.*3.14159/180.);
1890
1891   
1892   dits[0] = 0;
1893   dits[1] = 360;
1894   dits[2] = 6;
1895   dits[3] = -34.6; 
1896   dits[4] = 23.49;
1897   dits[5] = 28;
1898   dits[6] = -23.65; 
1899   dits[7] = 23.49;
1900   dits[8] = 28;
1901   dits[9] = -23.65;  
1902   dits[10] = 14.59; 
1903   dits[11] = 28;
1904   dits[12] = 23.65;   
1905   dits[13] = 14.59;
1906   dits[14] = 28;
1907   dits[15] = 23.65;    
1908   dits[16] = 23.49;
1909   dits[17] = 28;
1910   dits[18] = 34.6;  
1911   dits[19] = 23.49;
1912   dits[20] = 28;
1913   gMC->Gsvolu("IT34", "PCON", idtmed[209], dits, 21);  
1914
1915   // block of the SDD electronics and related ladder frame 
1916   I018dits[0] = 3.2;
1917   I018dits[1] = 2;
1918   I018dits[2] = 3.65;
1919   gMC->Gsvolu("I018", "BOX ", idtmed[209], I018dits, 3);  
1920
1921   // block of the SDD end ladder 
1922   I024dits[0] = 3.2;
1923   I024dits[1] = 2;
1924   I024dits[2] = 2.725;
1925   gMC->Gsvolu("I024", "BOX ", idtmed[209], I024dits, 3);  
1926
1927   // ladder frame of layer 3 - F.T. March,7-2001
1928   I047dits[0] = I018dits[0];
1929   I047dits[1] = I018dits[1];
1930   I047dits[2] = 6*I018dits[2] + 2*I024dits[2]; 
1931   gMC->Gsvolu("I047", "BOX ", idtmed[209], I047dits, 3);  
1932
1933   // ladder frame of layer 4 - F.T. March,7-2001
1934   I048dits[0] = I018dits[0];
1935   I048dits[1] = I018dits[1];
1936   I048dits[2] = 8*I018dits[2] + 2*I024dits[2]; 
1937   gMC->Gsvolu("I048", "BOX ", idtmed[209], I048dits, 3);  
1938
1939
1940   // global SDD volume (sensitive + insensitive) 
1941   I302dits[0] = 3.6250;
1942   I302dits[1] = 0.0150;
1943   I302dits[2] = 4.3794;
1944   gMC->Gsvolu("I302", "BOX ", idtmed[278], I302dits, 3);
1945
1946   // Like for I302 - F.T. March,7-2001
1947   I402dits[0] = 3.6250;
1948   I402dits[1] = 0.0150;
1949   I402dits[2] = 4.3794;
1950   gMC->Gsvolu("I402", "BOX ", idtmed[278], I402dits, 3);  
1951
1952   // SDD ladder of layer 3 - F.T. March,7-2001
1953   I004dits[0] = I302dits[0]+0.005;
1954   I004dits[1] = 2*I302dits[1]+Y_SDD_sep/2.;
1955   I004dits[2] = TMath::Abs(Z_SDD_lay3[0]);
1956   if (I004dits[2] < TMath::Abs(Z_SDD_lay3[5])) {
1957     I004dits[2] = TMath::Abs(Z_SDD_lay3[5]);
1958   }
1959   I004dits[2] = I004dits[2] + I302dits[2];
1960   gMC->Gsvolu("I004", "BOX ", idtmed[209], I004dits, 3);  
1961
1962   // SDD ladder of layer 4 - F.T. March,7-2001
1963   I005dits[0] = I402dits[0]+0.005;
1964   I005dits[1] = 2*I402dits[1]+Y_SDD_sep/2.;
1965   I005dits[2] = TMath::Abs(Z_SDD_lay4[0]);
1966   if (I005dits[2] < TMath::Abs(Z_SDD_lay4[7])) {
1967     I005dits[2] = TMath::Abs(Z_SDD_lay4[7]);
1968   }
1969   I005dits[2] = I005dits[2] + I402dits[2];
1970   gMC->Gsvolu("I005", "BOX ", idtmed[209], I005dits, 3);  
1971
1972
1973   // -- block of the SDD ladder foot and end ladder
1974
1975   // ladder foot mother volume
1976   I028dits[0] = 3.0000;
1977   I028dits[1] = 0.4000;
1978   I028dits[2] = 0.9000;
1979   gMC->Gsvolu("I028", "BOX ", idtmed[224], I028dits, 3);  
1980
1981   // positioning-box #1 at SDD end-ladder - F.T. March,7-2001
1982   I420dits[0] = 0.4500;
1983   I420dits[1] = 0.4000;
1984   I420dits[2] = 0.4500;
1985   gMC->Gsvolu("I420", "BOX ", idtmed[264], I420dits, 3);  
1986
1987   // positioning-box #2 at SDD end-ladder - F.T. March,7-2001
1988   I421dits[0] = 0.;
1989   I421dits[1] = 0.25;
1990   I421dits[2] = I420dits[1];
1991   gMC->Gsvolu("I421", "TUBE", idtmed[209], I421dits, 3);  
1992
1993   // reference ruby-sphere at SDD end-ladder - F.T. March,7-2001 
1994   I422dits[0] = 0.0000;
1995   I422dits[1] = 0.2000;
1996   I422dits[2] = 0.0000;
1997   I422dits[3] = 180.00;
1998   I422dits[4] = 0.0000;
1999   I422dits[5] = 360.00;
2000   gMC->Gsvolu("I422", "SPHE", idtmed[277], I422dits, 6);  
2001
2002   // support for ruby-sphere (I422) - F.T. March,7-2001
2003   I423dits[0] = 0.0000;
2004   I423dits[1] = 0.1000;
2005   I423dits[2] = (I420dits[1]-I422dits[1])/2.;
2006   gMC->Gsvolu("I423", "TUBE", idtmed[264], I423dits, 3);  
2007
2008   // passage for HV microcables - F.T. March,7-2001
2009   I424dits[0] = 1.5000;
2010   I424dits[1] = 0.1500;
2011   I424dits[2] = I421dits[2];
2012   gMC->Gsvolu("I424", "BOX ", idtmed[209], I424dits, 3);  
2013
2014   // HV microcables segment at the end ladder - F.T. March,7-2001
2015   I425dits[0] = 1.350000;
2016   I425dits[1] = 0.015250;
2017   I425dits[2] = I024dits[2];
2018   gMC->Gsvolu("I425", "BOX ", idtmed[279], I425dits, 3);  
2019
2020   // lower edge of SDD ladder frame at end-ladder - part 1
2021   dits[0] = 0.2;
2022   dits[1] = 0.1815;
2023   dits[2] = I024dits[2];
2024   dits[3] = 0.015;
2025   gMC->Gsvolu("I025", "TRD1", idtmed[208], dits, 4);  
2026
2027   // lower edge of SDD ladder frame at end-ladder - part 2
2028   dits[0] = 0.183;
2029   dits[1] = 0.165;
2030   dits[2] = I024dits[2];
2031   dits[3] = 0.015;
2032   gMC->Gsvolu("I026", "TRD1", idtmed[208], dits, 4);  
2033
2034   // new: for the 1st top rod of the structure 
2035   // at the end-ladder - F.T. March,7-2001
2036   I029dits[0] = 0.2;
2037   I029dits[1] = 0.1815;
2038   I029dits[2] = 1.0100;
2039   I029dits[3] = 0.015;
2040   gMC->Gsvolu("I029", "TRD1", idtmed[208], I029dits, 4);  
2041
2042   // new: for the 2nd top rod of the structure 
2043   // at the end-ladder - F.T. March,7-2001
2044   I030dits[0] = 0.1830;
2045   I030dits[1] = 0.1650;
2046   I030dits[2] = 1.0100;
2047   I030dits[3] = 0.0150;
2048   gMC->Gsvolu("I030", "TRD1", idtmed[208], I030dits, 4);  
2049
2050   // inox cooling tubes for the end ladder - F.T. March,7-2001
2051   I031dits[0] = 0.093;
2052   I031dits[1] = 0.1;
2053   I031dits[2] = I024dits[2];
2054   gMC->Gsvolu("I031", "TUBE", idtmed[264], I031dits, 3);  
2055
2056   if (fluid == 1) {
2057      // cooling water for the end ladder - F.T. March,7-2001
2058      I032dits[0] = 0;
2059      I032dits[1] = I031dits[0];
2060      I032dits[2] = I024dits[2];
2061      gMC->Gsvolu("I032", "TUBE", idtmed[211], I032dits, 3);  
2062   } else {
2063      // cooling freon for the end ladder - R.B. March,21-2001
2064      I032dits[0] = 0;
2065      I032dits[1] = I031dits[0];
2066      I032dits[2] = I024dits[2];
2067      gMC->Gsvolu("I032", "TUBE", idtmed[212], I032dits, 3);    
2068   }
2069   
2070   // -- block of the SDD ladder frame holding the electronics
2071
2072   // edge of the ladder frame - part 1
2073   dits[0] = 0.2;
2074   dits[1] = 0.182;
2075   dits[2] = 3.65;
2076   dits[3] = 0.015;
2077   gMC->Gsvolu("I019", "TRD1", idtmed[208], dits, 4);  
2078
2079   // edge of the ladder frame - part 2
2080   dits[0] = 0.183;
2081   dits[1] = 0.165;
2082   dits[2] = 3.65;
2083   dits[3] = 0.015;
2084   gMC->Gsvolu("I020", "TRD1", idtmed[208], dits, 4);  
2085
2086   // inclined segments of the ladder frame
2087   dits[0] = 2.23;
2088   dits[1] = 2.1;
2089   dits[2] = 0.05;
2090   dits[3] = 0.03;
2091   gMC->Gsvolu("I021", "TRD1", idtmed[208], dits, 4);  
2092
2093   // horiz.segments of the ladders, normal to ladder edges
2094   dits[0] = 2.1;
2095   dits[1] = 2;
2096   dits[2] = 0.06;
2097   dits[3] = 0.04;
2098   gMC->Gsvolu("I022", "TRD1", idtmed[208], dits, 4);  
2099
2100   // horiz.segments of the ladders, at 45 deg. to ladder edges
2101   dits[0] = 2.615;
2102   dits[1] = 2.465;
2103   dits[2] = 0.06;
2104   dits[3] = 0.04;
2105   gMC->Gsvolu("I023", "TRD1", idtmed[208], dits, 4);  
2106
2107   // supports of the ceramic pins holding the detectors
2108   dits[0] = 0.3;
2109   dits[1] = 0.05;
2110   dits[2] = 0.15;
2111   gMC->Gsvolu("I033", "BOX ", idtmed[208], dits, 3);  
2112
2113   // ceramic pins holding the detectors
2114   dits[0] = 0;
2115   dits[1] = 0.05;
2116   dits[2] = 0.225;
2117   gMC->Gsvolu("I034", "TUBE", idtmed[277], dits, 3);  
2118
2119   // holders of cooling tubes
2120   I035dits[0] = 0.1;
2121   I035dits[1] = 0.15;
2122   I035dits[2] = 0.2;
2123   gMC->Gsvolu("I035", "TUBE", idtmed[208], I035dits, 3);
2124
2125   // top holders of microcables
2126   dits[0] = 0.2;
2127   dits[1] = 0.01;
2128   dits[2] = 0.05;
2129   gMC->Gsvolu("I036", "BOX ", idtmed[208], dits, 3);  
2130
2131   // inox cooling tubes - F.T. March,7-2001
2132   I037dits[0] = 0.093;
2133   I037dits[1] = 0.1;
2134   I037dits[2] = I018dits[2];
2135   gMC->Gsvolu("I037", "TUBE", idtmed[264], I037dits, 3);
2136
2137   if (fluid == 1) {
2138      // cooling water - F.T. March,7-2001
2139      I038dits[0] = 0;
2140      I038dits[1] = I037dits[0];
2141      I038dits[2] = I018dits[2];
2142      gMC->Gsvolu("I038", "TUBE", idtmed[211], I038dits, 3);  
2143   } else {
2144      // cooling freon - R.B. March,21-2001
2145      I038dits[0] = 0;
2146      I038dits[1] = I037dits[0];
2147      I038dits[2] = I018dits[2];
2148      gMC->Gsvolu("I038", "TUBE", idtmed[212], I038dits, 3);    
2149   }
2150   // -- block of the SDD electronics (heat bridge, chips, hybrid, anode microcable)
2151
2152   // SDD heat bridge - F.T. March,7-2001
2153   I039dits[0] = 1.1000;
2154   I039dits[1] = 0.0087;
2155   I039dits[2] = 3.2500;
2156   gMC->Gsvolu("I039", "BOX ", idtmed[268], I039dits, 3);  
2157
2158   // SDD clip part 1
2159   dits[0] = 0.25;
2160   dits[1] = 0.01;
2161   dits[2] = I039dits[2];
2162   gMC->Gsvolu("I040", "BOX ", idtmed[268], dits, 3);  
2163
2164   // SDD clip part 2
2165   I041dits[0] = 0.1;
2166   I041dits[1] = 0.12;
2167   I041dits[2] = I039dits[2];
2168   I041dits[3] = 90;
2169   I041dits[4] = 320;
2170   gMC->Gsvolu("I041", "TUBS", idtmed[268], I041dits, 5);  
2171
2172
2173   // SDD PASCAL - F.T. March,7-2001
2174   I042dits[0] = 0.5000;
2175   I042dits[1] = 0.0175;
2176   I042dits[2] = 0.5000;
2177   gMC->Gsvolu("I042", "BOX ", idtmed[206], I042dits, 3);  
2178
2179   // SDD AMBRA - F.T. March,7-2001
2180   I043dits[0] = 0.3500;
2181   I043dits[1] = 0.0175;
2182   I043dits[2] = 0.5000;
2183   gMC->Gsvolu("I043", "BOX ", idtmed[206], I043dits, 3);  
2184
2185   // SDD capacitors - F.T. March,7-2001
2186   I051dits[0] = 0.1400;
2187   I051dits[1] = 0.0350;
2188   I051dits[2] = 0.0625;
2189   gMC->Gsvolu("I051", "BOX ", idtmed[276], I051dits, 3);  
2190
2191   // SDD hybrid circuit - F.T. March,7-2001
2192   I052dits[0] = 1.725000;
2193   I052dits[1] = 0.003743;
2194   I052dits[2] = I039dits[2];
2195   gMC->Gsvolu("I052", "BOX ", idtmed[281], I052dits, 3);
2196
2197   // SDD anode microcable : changed - F.T. March,7-2001
2198   I044dits[0] = I018dits[2];
2199   I044dits[1] = I039dits[2];
2200   I044dits[2] = 0.00084;
2201   I044dits[3] = (15.189149/(I044dits[0]+I044dits[1]))/2;
2202   gMC->Gsvolu("I044", "TRD1", idtmed[282], I044dits, 4);  
2203   volI044 = ((2*I044dits[0] + 2*I044dits[1]) * 2*I044dits[2])/2 * 2*I044dits[3];
2204
2205   // SDD electronics box - F.T. March,7-2001
2206   I050dits[1] = I039dits[1]+I052dits[1]+I051dits[1]+I044dits[2];
2207   I050dits[0] = I018dits[1]/cos(30.*3.14159/180.)-I050dits[1]*sin(30.*3.14159/180.);
2208   I050dits[2] = I018dits[2];
2209   gMC->Gsvolu("I050", "BOX ", idtmed[209], I050dits, 3);
2210
2211   // SDD sensitive volume
2212   dits[0] = 3.50850;
2213   dits[1] = 0.01499; // not 0.015 because it is included into I302 which is 0.015
2214   dits[2] = 3.76320;
2215   gMC->Gsvolu("ITS3", "BOX ", idtmed[200], dits, 3);  
2216
2217   // Like for ITS3 - F.T. March,7-2001
2218   dits[0] = 3.50850;
2219   dits[1] = 0.01499; // not 0.015 because it is included into I402 which is 0.015
2220   dits[2] = 3.76320;
2221   gMC->Gsvolu("ITS4", "BOX ", idtmed[200], dits, 3);  
2222
2223
2224   // --- Define SSD volumes ------------------------------------------
2225
2226     
2227   dits[0] = 0;
2228   dits[1] = 360;
2229   dits[2] = 6;
2230   dits[3] = -57.45;
2231   dits[4] = 43.6;
2232   dits[5] = 48;  
2233   dits[6] = -49.15; 
2234   dits[7] = 43.6;
2235   dits[8] = 48;  
2236   dits[9] = -49.15;  
2237   dits[10] = 36.9;
2238   dits[11] = 48;  
2239   dits[12] = 50.55;  
2240   dits[13] = 36.9;
2241   dits[14] = 48;  
2242   dits[15] = 50.55;  
2243   dits[16] = 43.6;
2244   dits[17] = 48;  
2245   dits[18] = 57.45;
2246   dits[19] = 43.6;
2247   dits[20] = 48;   
2248   gMC->Gsvolu("IT56", "PCON", idtmed[220], dits, 21);   
2249   
2250   dits[0] =  3.4;
2251   dits[1] = 1.955;
2252   dits[2] = 56.5; 
2253   gMC->Gsvolu("I570", "BOX ", idtmed[204], dits, 3);  
2254   
2255   dits[0] = 3.75;
2256   dits[1] = 0.045;
2257   dits[2] = 50.975;
2258   gMC->Gsvolu("I569", "BOX ", idtmed[204], dits, 3);  
2259   
2260   dits[0] = 3.4;
2261   dits[1] = 1.955;
2262   dits[2] = 47; 
2263   gMC->Gsvolu("I571", "BOX ", idtmed[204], dits, 3);  
2264   
2265   dits[0] = 3.75;
2266   dits[1] = 0.045;
2267   dits[2] = 43.3;  
2268   gMC->Gsvolu("I565", "BOX ", idtmed[204], dits, 3);  
2269   
2270   dits[0] = 3.4;
2271   dits[1] = 1.955;
2272   dits[2] = 3.15;
2273   gMC->Gsvolu("I553", "BOX ", idtmed[204], dits, 3);  
2274   
2275   dits[0] = 3.405;
2276   dits[1] = 1.955;
2277   dits[2] = 1.955;
2278   gMC->Gsvolu("I523", "BOX ", idtmed[204], dits, 3);  
2279   
2280   dits[0] = 3.75;
2281   dits[1] = 0.015;
2282   dits[2] = 2.1;
2283   gMC->Gsvolu("I566", "BOX ", idtmed[206], dits, 3); 
2284   
2285   dits[0] = 3.4;
2286   dits[1] = 1.955;
2287   dits[2] = 3.15;
2288   gMC->Gsvolu("I544", "BOX ", idtmed[204], dits, 3);  
2289   
2290   dits[0] = 3.41;
2291   dits[1] = 1.955;
2292   dits[2] = 1.955;
2293   gMC->Gsvolu("I516", "BOX ", idtmed[204], dits, 3);  
2294   
2295   dits[0] = 3.75;
2296   dits[1] = 0.015;
2297   dits[2] = 2.1;
2298   gMC->Gsvolu("I562", "BOX ", idtmed[206], dits, 3);   
2299   
2300   if (fluid == 1) {
2301      dits[0] = 0;
2302      dits[1] = 0.07;
2303      dits[2] = 3.15;
2304      gMC->Gsvolu("I559", "TUBE", idtmed[211], dits, 3);  // set water as cooling fluid
2305   } else {
2306      dits[0] = 0;
2307      dits[1] = 0.07;
2308      dits[2] = 3.15;
2309      gMC->Gsvolu("I559", "TUBE", idtmed[212], dits, 3);  // set freon as cooling fluid
2310   }
2311   
2312   dits[0] = 0.07;
2313   dits[1] = 0.1;
2314   dits[2] = 3.15;
2315   gMC->Gsvolu("I560", "TUBE", idtmed[210], dits, 3);  
2316   
2317   dits[0] = 0.225;
2318   dits[1] = 0.195;
2319   dits[2] = 3.15;
2320   dits[3] = 0.025;
2321   gMC->Gsvolu("I558", "TRD1", idtmed[203], dits, 4);  
2322   
2323   dits[0] = 0.25;
2324   dits[1] = 0.22;
2325   dits[2] = 3.15;
2326   dits[3] = 0.025;
2327   gMC->Gsvolu("I557", "TRD1", idtmed[203], dits, 4);  
2328   
2329   dits[0] = 2.17;
2330   dits[1] = 0.035;
2331   dits[2] = 0.05;
2332   gMC->Gsvolu("I556", "BOX ", idtmed[203], dits, 3);  
2333   
2334   dits[0] = 2 ;
2335   dits[1] = 0.035;
2336   dits[2] = 0.05;
2337   gMC->Gsvolu("I554", "BOX ", idtmed[203], dits, 3);  
2338   
2339   dits[0] = 2.675;
2340   dits[1] = 0.035;
2341   dits[2] = 0.05;
2342   gMC->Gsvolu("I555", "BOX ", idtmed[203], dits, 3); 
2343   
2344   dits[0] = 0.3;
2345   dits[1] = 0.15;
2346   dits[2] = 0.15;
2347   gMC->Gsvolu("I561", "BOX ", idtmed[203], dits, 3);  
2348   
2349   dits[0] = 0.025;
2350   dits[1] = 0.025;
2351   dits[2] = 0.05;
2352   gMC->Gsvolu("I519", "BOX ", idtmed[214], dits, 3);  
2353   
2354   dits[0] = 0.304;
2355   dits[1] = 0.0275;
2356   dits[2] = 0.432;
2357   gMC->Gsvolu("I521", "BOX ", idtmed[206], dits, 3);   
2358   
2359   dits[0] = 0.16;
2360   dits[1] = 0.08;
2361   dits[2] = 0.08;
2362   gMC->Gsvolu("I520", "BOX ", idtmed[214], dits, 3);  
2363   
2364   dits[0] = 3.4;
2365   dits[1] = 0.015;
2366   dits[2] = 0.525;
2367   gMC->Gsvolu("I518", "BOX ", idtmed[203], dits, 3);  
2368   
2369   dits[0] = 0.15;
2370   dits[1] = 0.105;
2371   dits[2] = 0.29;
2372   dits[3] = 0.08;
2373   gMC->Gsvolu("I522", "TRD1", idtmed[203], dits, 4);  
2374   
2375   dits[0] = 0.07;
2376   dits[1] = 0.1;
2377   dits[2] = 1.955;
2378   gMC->Gsvolu("I542", "TUBE", idtmed[210], dits, 3);  
2379   
2380   if (fluid == 1) {
2381      dits[0] = 0;
2382      dits[1] = 0.07;
2383      dits[2] = 1.955;
2384      gMC->Gsvolu("I541", "TUBE", idtmed[211], dits, 3);  // set water as cooling fluid 
2385   } else {
2386      dits[0] = 0;
2387      dits[1] = 0.07;
2388      dits[2] = 1.955;
2389      gMC->Gsvolu("I541", "TUBE", idtmed[212], dits, 3);  // set freon as cooling fluid
2390   }
2391   
2392   dits[0] = 0.3;
2393   dits[1] = 0.15;
2394   dits[2] = 0.15;
2395   gMC->Gsvolu("I543", "BOX ", idtmed[203], dits, 3);  
2396   
2397   dits[0] = 0.25;
2398   dits[1] = 0.22;
2399   dits[2] = 1.955;
2400   dits[3] = 0.025;
2401   gMC->Gsvolu("I537", "TRD1", idtmed[203], dits, 4); 
2402   
2403   dits[0] = 0.225;
2404   dits[1] = 0.195;
2405   dits[2] = 1.955;
2406   dits[4] = 0.025;
2407   gMC->Gsvolu("I538", "TRD1", idtmed[203], dits, 4);  
2408   
2409   dits[0] = 2.17;
2410   dits[1] = 0.035;
2411   dits[2] = 0.05;
2412   gMC->Gsvolu("I536", "BOX ", idtmed[203], dits, 3);  
2413   
2414   dits[0] = 2.675;
2415   dits[1] = 0.035;
2416   dits[2] = 0.05;
2417   gMC->Gsvolu("I535", "BOX ", idtmed[203], dits, 3);   
2418   
2419   dits[0] = 2;
2420   dits[1] = 0.035;
2421   dits[2] = 0.05;
2422   gMC->Gsvolu("I534", "BOX ", idtmed[203], dits, 3);  
2423   
2424   dits[0] = 0;
2425   dits[1] = 0.05;
2426   dits[2] = 0.17;
2427   gMC->Gsvolu("I540", "TUBE", idtmed[203], dits, 3);  
2428   
2429   dits[0] = 0;
2430   dits[1] = 0.05;
2431   dits[2] = 0.205;
2432   gMC->Gsvolu("I539", "TUBE", idtmed[203], dits, 3);  
2433   
2434   dits[0] = 3.65;
2435   dits[1] = 0.015;
2436   dits[2] = 2;
2437   gMC->Gsvolu("ITS6", "BOX ", idtmed[200], dits, 3);  
2438   
2439   if (fluid == 1) {
2440      dits[0] = 0;
2441      dits[1] = 0.07;
2442      dits[2] = 3.15;
2443      gMC->Gsvolu("I550", "TUBE", idtmed[211], dits, 3);  // set water as cooling fluid
2444   } else {
2445      dits[0] = 0;
2446      dits[1] = 0.07;
2447      dits[2] = 3.15;
2448      gMC->Gsvolu("I550", "TUBE", idtmed[212], dits, 3);  // set freon as cooling fluid
2449   }
2450   
2451   dits[0] = 0.07;
2452   dits[1] = 0.1;
2453   dits[2] = 3.15;
2454   gMC->Gsvolu("I551", "TUBE", idtmed[210], dits, 3);  
2455   
2456   dits[0] = 0.225;
2457   dits[1] = 0.195;
2458   dits[2] = 3.15;
2459   dits[3] = 0.025;
2460   gMC->Gsvolu("I549", "TRD1", idtmed[203], dits, 4); 
2461   
2462   dits[0] = 0.25;
2463   dits[1] = 0.22;
2464   dits[2] = 3.15;
2465   dits[3] = 0.025;
2466   gMC->Gsvolu("I548", "TRD1", idtmed[203], dits, 4);  
2467   
2468   dits[0] = 2.17;
2469   dits[1] = 0.035;
2470   dits[2] = 0.05;
2471   gMC->Gsvolu("I547", "BOX ", idtmed[203], dits, 3);  
2472   
2473   dits[0] = 2;
2474   dits[1] = 0.035;
2475   dits[2] = 0.05;
2476   gMC->Gsvolu("I545", "BOX ", idtmed[203], dits, 3);   
2477   
2478   dits[0] = 2.675;
2479   dits[1] = 0.035;
2480   dits[2] = 0.05;
2481   gMC->Gsvolu("I546", "BOX ", idtmed[203], dits, 3);  
2482   
2483   dits[0] = 0.3;
2484   dits[1] = 0.15;
2485   dits[2] = 0.15;
2486   gMC->Gsvolu("I552", "BOX ", idtmed[203], dits, 3);  
2487   
2488   dits[0] = 0.304;
2489   dits[1] = 0.0275;
2490   dits[2] = 0.4322;
2491   gMC->Gsvolu("I515", "BOX ", idtmed[206], dits, 3);  
2492   
2493   dits[0] = 0.025;
2494   dits[1] = 0.025;
2495   dits[2] = 0.05;
2496   gMC->Gsvolu("I513", "BOX ", idtmed[214], dits, 3);  
2497   
2498   dits[0] = 0.16;
2499   dits[1] = 0.08;
2500   dits[2] = 0.08;
2501   gMC->Gsvolu("I514", "BOX ", idtmed[214], dits, 3);  
2502   
2503   dits[0] = 3.4;
2504   dits[1] = 0.015;
2505   dits[2] = 0.525;
2506   gMC->Gsvolu("I512", "BOX ", idtmed[203], dits, 3);  
2507   
2508   dits[0] = 0.225;
2509   dits[1] = 0.195;
2510   dits[2] = 1.955;
2511   dits[3] = 0.025;
2512   gMC->Gsvolu("I528", "TRD1", idtmed[203], dits, 4); 
2513   
2514   dits[0] = 0.25;
2515   dits[1] = 0.22;
2516   dits[2] = 1.955;
2517   dits[3] = 0.025;
2518   gMC->Gsvolu("I527", "TRD1", idtmed[203], dits, 4);  
2519   
2520   dits[0] = 2.17;
2521   dits[1] = 0.035;
2522   dits[2] = 0.05;
2523   gMC->Gsvolu("I526", "BOX ", idtmed[203], dits, 3);  
2524   
2525   dits[0] = 2.675;
2526   dits[1] = 0.035;
2527   dits[2] = 0.05;
2528   gMC->Gsvolu("I525", "BOX ", idtmed[203], dits, 3);  
2529    
2530   dits[0] = 2;
2531   dits[1] = 0.035;
2532   dits[2] = 0.05;
2533   gMC->Gsvolu("I524", "BOX ", idtmed[203], dits, 3);  
2534    
2535   dits[0] = 0;
2536   dits[1] = 0.05;
2537   dits[2] = 0.205;
2538   gMC->Gsvolu("I529", "TUBE", idtmed[203], dits, 3);  
2539    
2540   dits[0] = 0;
2541   dits[1] = 0.05;
2542   dits[2] = 0.17;
2543   gMC->Gsvolu("I530", "TUBE", idtmed[203], dits, 3);  
2544    
2545   dits[0] = 0.15;
2546   dits[1] = 0.105;
2547   dits[2] = 0.29;
2548   dits[3] = 0.08;
2549   gMC->Gsvolu("I517", "TRD1", idtmed[203], dits, 4);  
2550   
2551   if (fluid == 1) {
2552      dits[0] = 0;
2553      dits[1] = 0.07;
2554      dits[2] = 1.955;
2555      gMC->Gsvolu("I531", "TUBE", idtmed[211], dits, 3);  // set water as cooling fluid
2556   } else {
2557      dits[0] = 0;
2558      dits[1] = 0.07;
2559      dits[2] = 1.955;
2560      gMC->Gsvolu("I531", "TUBE", idtmed[212], dits, 3);  // set freon as cooling fluid
2561   }
2562      
2563   dits[0] = 0.07;
2564   dits[1] = 0.1;
2565   dits[2] = 1.955;
2566   gMC->Gsvolu("I532", "TUBE", idtmed[210], dits, 3);  
2567  
2568   dits[0] = 0.3;
2569   dits[1] = 0.15;
2570   dits[2] = 0.15;
2571   gMC->Gsvolu("I533", "BOX ", idtmed[203], dits, 3);  
2572   
2573   dits[0] = 3.65;
2574   dits[1] = 0.015;
2575   dits[2] = 2;
2576   gMC->Gsvolu("ITS5", "BOX ", idtmed[200], dits, 3);  
2577
2578
2579
2580   // --- Define volumes of shield of SPD ----------------
2581
2582
2583   dits[0] = 8.37;
2584   dits[1] = 9.93;
2585   dits[2] = 25;
2586   gMC->Gsvolu("IC01", "TUBE", idtmed[289], dits, 3);   
2587
2588   dits[0] = 8.3;
2589   dits[1] = 9.995;
2590   dits[2] = 17.5/2.;
2591   gMC->Gsvolu("IC02", "TUBE", idtmed[289], dits, 3);    
2592   
2593  
2594   // --- Define volume of first cylinder between SPD and SDD --------------
2595   
2596   dits[0] = (21.-0.128)/2.;      
2597   dits[1] = 21./2.;
2598   dits[2] = 39.4;      
2599   gMC->Gsvolu("ICY1", "TUBE", idtmed[208], dits, 3);
2600          
2601   // --- Define volume of second cylinder between SDD and SSD --------------
2602
2603   dits[0] = (59.5-0.128)/2.;      
2604   dits[1] = 59.5/2.;
2605   dits[2] = 56.2;      // was 57
2606   gMC->Gsvolu("ICY2", "TUBE", idtmed[208], dits, 3);
2607
2608   // --- Define volumes of SDD cone ---------------------------------- 
2609
2610   dits[0] = 0;
2611   dits[1] = 360;
2612   dits[2] = 12;
2613   dits[3] = -59.7;
2614   dits[4] = 27;
2615   dits[5] = 28.6;
2616   dits[6] = -42.7;
2617   dits[7] = 10;
2618   dits[8] = 28.6;
2619   dits[9] = -34.65;
2620   dits[10] = 10;
2621   dits[11] = 28.6;
2622   dits[12] = -34.65;
2623   dits[13] = 10;
2624   dits[14] = 23.495;
2625   dits[15] = -23.7;
2626   dits[16] = 10;
2627   dits[17] = 23.495;
2628   dits[18] = -23.7;
2629   dits[19] = 10;
2630   dits[20] = 14.595;
2631   dits[21] = 23.7;
2632   dits[22] = 10;
2633   dits[23] = 14.595;
2634   dits[24] = 23.7;
2635   dits[25] = 10;
2636   dits[26] = 23.495;
2637   dits[27] = 34.65;
2638   dits[28] = 10;
2639   dits[29] = 23.495;
2640   dits[30] = 34.65;
2641   dits[31] = 10;
2642   dits[32] = 28.6;
2643   dits[33] = 42.7;
2644   dits[34] = 10;
2645   dits[35] = 28.6;
2646   dits[36] = 59.7;
2647   dits[37] = 27.2637;
2648   dits[38] = 28.6;             
2649   gMC->Gsvolu("IS02", "PCON", idtmed[204], dits, 39);
2650   
2651   dits[0] = 0;
2652   dits[1] = 360;
2653   dits[2] = 6;
2654   dits[3] = 38.65;
2655   dits[4] = 10.75;    
2656   dits[5] = 12.25;      
2657   dits[6] = 40.15;
2658   dits[7] = 10.75;
2659   dits[8] = 13.96;   
2660   dits[9] = 40.15;
2661   dits[10] = 12.46;  
2662   dits[11] = 13.96;
2663   dits[12] = 55.75;
2664   dits[13] = 27;
2665   dits[14] = 28.5;
2666   dits[15] = 55.75;
2667   dits[16] = 27;
2668   dits[17] = 28.5;
2669   dits[18] = 57.25;
2670   dits[19] = 27;
2671   dits[20] = 28.5;       
2672   gMC->Gsvolu("I093", "PCON", idtmed[272], dits, 21);  // SDD cone
2673
2674   dits[0] = 0;
2675   dits[1] = 50;
2676   dits[2] = 3;
2677   dits[3] = 39;  
2678   dits[4] = 14;
2679   dits[5] = 18.75;
2680   dits[6] = 46.7-3;
2681   dits[7] = 14;
2682   dits[8] = 18.75;
2683   dits[9] = 51.45-3;
2684   dits[10] = 18.75;
2685   dits[11] = 18.75;
2686   gMC->Gsvolu("I099", "PCON", idtmed[204], dits, 12); // SDD 3 cone hole
2687
2688   dits[0] = 0;
2689   dits[1] = 25;
2690   dits[2] = 3;
2691   dits[3] = 49;
2692   dits[4] = 23.4;
2693   dits[5] = 26.4;
2694   dits[6] = 56.1-3;
2695   dits[7] = 23.4;
2696   dits[8] = 26.4;
2697   dits[9] = 59.1-3;
2698   dits[10] = 26.4;
2699   dits[11] = 26.4;
2700   gMC->Gsvolu("I200", "PCON", idtmed[204], dits, 12); // SDD 4 cone hole
2701
2702   dits[0] = 10.0;
2703   dits[1] = 10.5;
2704   dits[2] = 0.25;
2705   gMC->Gsvolu("I090", "TUBE", idtmed[224], dits, 3);  // SDD cylinder flange
2706
2707   dits[0] = 21.95;
2708   dits[1] = 22.95;    
2709   dits[2] = 1;
2710   gMC->Gsvolu("I098", "TUBE", idtmed[283], dits, 3);    // ladder support on layer 4
2711
2712   dits[0] = 13.1;    
2713   dits[1] = 14.1;    
2714   dits[2] = 1;
2715   gMC->Gsvolu("I097", "TUBE", idtmed[283], dits, 3);    // ladder support on layer 3
2716
2717   dits[0] = 1;
2718   dits[1] = 1;
2719   dits[2] = 7.74;
2720   gMC->Gsvolu("I202", "BOX ", idtmed[272], dits, 3);
2721
2722   dits[0] = 1;
2723   dits[1] = 1;
2724   dits[2] = 9.14;
2725   gMC->Gsvolu("I203", "BOX ", idtmed[272], dits, 3);
2726
2727   dits[0] = 21.95;
2728   dits[1] = 22.95;
2729   dits[2] = 1;
2730   gMC->Gsvolu("I095", "TUBE", idtmed[224], dits, 3);
2731
2732   dits[0] = 3;
2733   dits[1] = 2.7;
2734   dits[2] = 1;
2735   dits[3] = 0.63;
2736   gMC->Gsvolu("I096", "TRD1", idtmed[264], dits, 4);
2737
2738   dits[0] = 13.1;
2739   dits[1] = 14.1;
2740   dits[2] = 1;
2741   gMC->Gsvolu("I094", "TUBE", idtmed[224], dits, 3);
2742   
2743   
2744   // --- Define volumes of SSD cone ----------------------------------    
2745             
2746
2747   dits[0] = 0;
2748   dits[1] = 360;
2749   dits[2] = 12;
2750   dits[3] = -zmax;
2751   dits[4] = 46;         
2752   dits[5] = 49.25;       
2753   dits[6] = -61.2;
2754   dits[7] = 28.7;
2755   dits[8] = 49.25;       
2756   dits[9] = -57.5;
2757   dits[10] = 28.7;
2758   dits[11] = 49.25;      
2759   dits[12] = -57.5;
2760   dits[13] = 28.7;
2761   dits[14] = 43.5;
2762   dits[15] = -49.2;
2763   dits[16] = 28.7;
2764   dits[17] = 43.5;
2765   dits[18] = -49.2;
2766   dits[19] = 28.7;
2767   dits[20] = 36.85;
2768   dits[21] = 50.6;
2769   dits[22] = 28.7;
2770   dits[23] = 36.85;
2771   dits[24] = 50.6;
2772   dits[25] = 28.7;
2773   dits[26] = 43.5;
2774   dits[27] = 57.5;
2775   dits[28] = 28.7;
2776   dits[29] = 43.5;
2777   dits[30] = 57.5;
2778   dits[31] = 28.7;
2779   dits[32] = 49.25;      
2780   dits[33] = 61.2;
2781   dits[34] = 28.7;
2782   dits[35] = 49.25;      
2783   dits[36] = zmax;
2784   dits[37] = 46;      
2785   dits[38] = 49.25;      
2786   gMC->Gsvolu("IS01", "PCON", idtmed[204], dits, 39);   // SSD cone mother volume
2787   
2788   dits[0] = 0;
2789   dits[1] = 360;
2790   dits[2] = 6;
2791   dits[3] = -zmax;  
2792   dits[4] = 47.75;  
2793   dits[5] = 49.25;  
2794   dits[6] = -zmax+2.;  
2795   dits[7] = 47.75;  
2796   dits[8] = 49.25;   
2797   dits[9] = -71.2819;
2798   dits[10] = 46.75;   
2799   dits[11] = 49.0319;
2800   dits[12] = -57.25;   // was 58.5 
2801   dits[13] = 32.9681;
2802   dits[14] = 34.75;
2803   dits[15] = -57.25;   // was 58.5   
2804   dits[16] = 30;
2805   dits[17] = 34.75;
2806   dits[18] = -55.75;   // was 57 
2807   dits[19] = 30;     
2808   dits[20] = 32.25;    // was 31.5 
2809   gMC->Gsvolu("I212", "PCON", idtmed[272], dits, 21);  // SSD cone
2810   
2811   dits[0] = 28.75;          
2812   dits[1] = 29.75;   
2813   dits[2] = 0.5;
2814   gMC->Gsvolu("I211", "TUBE", idtmed[224], dits, 3);   // SSD cylinder flange
2815   
2816   dits[0] = 35.8;   
2817   dits[1] = 36.8;   
2818   dits[2] = 1;
2819   gMC->Gsvolu("I217", "TUBE", idtmed[283], dits, 3);   // ladder support on layer 5 
2820   
2821   dits[0] = 41.4;  
2822   dits[1] = 42.4;  
2823   dits[2] = 1;
2824   gMC->Gsvolu("I219", "TUBE", idtmed[283], dits, 3);   // ladder support on layer 6
2825         
2826   dits[0] = 42.05+5.;       
2827   dits[1] = 42.55+5.;     
2828   dits[2] = 1.25;
2829   gMC->Gsvolu("I214", "TUBE", idtmed[224], dits, 3);   // layer 6 electronic support
2830                                                        // this will change after PPR
2831   dits[0] = 37.05+5.;   
2832   dits[1] = 37.55+5.;   
2833   dits[2] = 1.25;
2834   gMC->Gsvolu("I213", "TUBE", idtmed[224], dits, 3);   // layer 5 electronic support
2835                                                        // this will change after PPR
2836   dits[0] = 0;
2837   dits[1] = 25;
2838   dits[2] = 5;
2839   dits[3] = -zmax+3;
2840   dits[4] = 45.5;
2841   dits[5] = 45.5;
2842   dits[6] = -69.7+3;
2843   dits[7] = 37;
2844   dits[8] = 45.5;
2845   dits[9] = -68.5+3;
2846   dits[10] = 37;
2847   dits[11] = 45.5;
2848   dits[12] = -68.5+4.8;  
2849   dits[13] = 37;
2850   dits[14] = 45.5; 
2851   dits[15] = -63.5+4.8;
2852   dits[16] = 37;
2853   dits[17] = 45.5;   
2854   gMC->Gsvolu("I215", "PCON", idtmed[204], dits, 18);  // SSD cone hole 
2855  
2856   dits[0] = 0;
2857   dits[1] = 3.2;
2858   dits[2] = 9;
2859   dits[3] = -14;
2860   dits[4] = 30.5;
2861   dits[5] = 33.5;
2862   dits[6] = -9.85;
2863   dits[7] = 30.5;
2864   dits[8] = 33.5;
2865   dits[9] = -9.85;
2866   dits[10] = 30.5;
2867   dits[11] = 43.45;
2868   dits[12] = -7.85;
2869   dits[13] = 30.5;
2870   dits[14] = 43.45;
2871   dits[15] = -7.85;
2872   dits[16] = 30.5;
2873   dits[17] = 36.5;
2874   dits[18] = -7;
2875   dits[19] = 30.5;
2876   dits[20] = 36.5;
2877   dits[21] = -4;
2878   dits[22] = 33.0173;
2879   dits[23] = 36.5;
2880   dits[24] = -4;
2881   dits[25] = 33.0173;
2882   dits[26] = 36.80;
2883   dits[27] = -2;
2884   dits[28] = 34.6955;
2885   dits[29] = 36.80;
2886   gMC->Gsvolu("I216", "PCON", idtmed[272], dits, 30); // supports (1-6) of the ladders
2887        
2888        
2889   // --- Place SPD (option 'a') volumes into their mother volume IT12
2890   
2891   // SPD - option 'a' 
2892   // (this is NOT the default)
2893
2894   if (option == 1) {
2895
2896      gMC->Gspos("I12A",5,"IT12",0.0,0.0,0.0,idrotm[238],"MANY");
2897      gMC->Gspos("I12A",6,"IT12",0.0,0.0,0.0,idrotm[236],"MANY");
2898      gMC->Gspos("I12A",7,"IT12",0.0,0.0,0.0,idrotm[239],"MANY");
2899      gMC->Gspos("I12A",8,"IT12",0.0,0.0,0.0,idrotm[233],"MANY");
2900      gMC->Gspos("I12A",9,"IT12",0.0,0.0,0.0,idrotm[240],"MANY");
2901      gMC->Gspos("I12A",10,"IT12",0.0,0.0,0.0,idrotm[241],"MANY");
2902      gMC->Gspos("I12A",2,"IT12",0.0,0.0,0.0,idrotm[242],"MANY");
2903      gMC->Gspos("I12A",3,"IT12",0.0,0.0,0.0,idrotm[234],"MANY");
2904      gMC->Gspos("I12A",4,"IT12",0.0,0.0,0.0,idrotm[243],"MANY");
2905      gMC->Gspos("I12A",1,"IT12",0.0,0.0,0.0,0,"MANY");
2906      deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(270.*TMath::Pi()/180.);  // see definition of idrotm[244]
2907           deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(270.*TMath::Pi()/180.);  // see definition of idrotm[244]
2908      gMC->Gspos("I10A",2,"I12A",0.203+deltax,3.8206+deltay,0.0,idrotm[244],"ONLY");       
2909      deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(252.*TMath::Pi()/180.);  // see definition of idrotm[245]
2910           deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(252.*TMath::Pi()/180.);  // see definition of idrotm[245]  
2911      gMC->Gspos("I10A",1,"I12A",1.4531+deltax,3.8152+deltay,0.0,idrotm[245],"ONLY");
2912      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(40.*TMath::Pi()/180.);  // see definition of idrotm[246]
2913           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(40.*TMath::Pi()/180.);  // see definition of idrotm[246]  
2914      gMC->Gspos("I20A",1,"I12A",3.0174+deltax,6.5143+deltay,0.0,idrotm[246],"ONLY");
2915      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(49.*TMath::Pi()/180.);  // see definition of idrotm[247]
2916           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(49.*TMath::Pi()/180.);  // see definition of idrotm[247] 
2917      gMC->Gspos("I20A",2,"I12A",1.9612+deltax,6.9062+deltay,0.0,idrotm[247],"ONLY");
2918      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(58.*TMath::Pi()/180.);  // see definition of idrotm[248]
2919           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(58.*TMath::Pi()/180.);  // see definition of idrotm[248] 
2920      gMC->Gspos("I20A",3,"I12A",0.8567+deltax,7.1279+deltay,0.0,idrotm[248],"ONLY");
2921      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(67.*TMath::Pi()/180.);  // see definition of idrotm[249]
2922           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(67.*TMath::Pi()/180.);  // see definition of idrotm[249] 
2923      gMC->Gspos("I20A",4,"I12A",-0.2689+deltax,7.1742+deltay,0.0,idrotm[249],"ONLY");
2924      gMC->Gspos("I123",2,"I12A",-0.2978,5.5196,0.0,idrotm[214],"ONLY");
2925      gMC->Gspos("I121",2,"I12A",-0.2385,4.1518,0.0,idrotm[213],"ONLY");
2926      gMC->Gspos("I122",2,"I12A",-0.2968,4.0207,0.0,idrotm[212],"ONLY");
2927      gMC->Gspos("I120",2,"I12A",-0.3672,3.9056,0.0,0,"ONLY");
2928      gMC->Gspos("I144",1,"I12A",-0.2538,3.8556,0.0,0,"ONLY");
2929      gMC->Gspos("I113",3,"I12A",0.1095,3.9056,0.0,0,"ONLY");
2930      gMC->Gspos("I143",1,"I12A",0.4365,3.8556,0.0,idrotm[236],"ONLY");
2931      gMC->Gspos("I142",1,"I12A",0.5136,3.9056,0.0,idrotm[235],"ONLY");
2932      gMC->Gspos("I141",1,"I12A",0.5636,3.9752,0.0,idrotm[201],"ONLY");
2933      gMC->Gspos("I140",1,"I12A",0.6336,4.0447,0.0,idrotm[234],"ONLY");
2934      gMC->Gspos("I139",1,"I12A",0.8297,4.0545,0.0,idrotm[207],"ONLY");
2935      gMC->Gspos("I113",5,"I12A",1.2575,3.9681,0.0,idrotm[207],"ONLY");
2936      gMC->Gspos("I138",1,"I12A",1.66,3.7848,0.0,idrotm[207],"ONLY");
2937      gMC->Gspos("I137",1,"I12A",1.8556,3.7738,0.0,idrotm[233],"ONLY");
2938      gMC->Gspos("I136",1,"I12A",2.6224,4.874,0.0,idrotm[232],"ONLY");
2939      gMC->Gspos("I135",1,"I12A",3.2967,6.0337,0.0,idrotm[231],"ONLY");
2940      gMC->Gspos("I134",1,"I12A",3.266,6.1636,0.0,idrotm[230],"ONLY");
2941      gMC->Gspos("I113",1,"I12A",2.9903,6.4144,0.0,idrotm[211],"ONLY");
2942      gMC->Gspos("I133",3,"I12A",2.7631,6.7627,0.0,idrotm[230],"ONLY");
2943      gMC->Gspos("I132",3,"I12A",2.62,6.8555,0.0,idrotm[229],"ONLY");
2944      gMC->Gspos("I131",3,"I12A",2.648,6.6023,0.0,idrotm[228],"ONLY");
2945      gMC->Gspos("I130",3,"I12A",2.6569,6.3431,0.0,idrotm[227],"ONLY");
2946      gMC->Gspos("I129",3,"I12A",2.3906,6.4819,0.0,idrotm[226],"ONLY");
2947      gMC->Gspos("I113",2,"I12A",1.9488,6.7998,0.0,idrotm[210],"ONLY");
2948      gMC->Gspos("I133",2,"I12A",1.6699,7.1085,0.0,idrotm[226],"ONLY");
2949      gMC->Gspos("I132",2,"I12A",1.5142,7.1777,0.0,idrotm[225],"ONLY");
2950      gMC->Gspos("I131",2,"I12A",1.5814,6.932,0.0,idrotm[224],"ONLY");
2951      gMC->Gspos("I130",2,"I12A",1.6308,6.6774,0.0,idrotm[223],"ONLY");
2952      gMC->Gspos("I129",2,"I12A",1.346,6.7728,0.0,idrotm[222],"ONLY");
2953      gMC->Gspos("I113",6,"I12A",0.8599,7.0176,0.0,idrotm[209],"ONLY");
2954      gMC->Gspos("I133",1,"I12A",0.5362,7.2789,0.0,idrotm[222],"ONLY");
2955      gMC->Gspos("I132",1,"I12A",0.3715,7.3228,0.0,idrotm[221],"ONLY");
2956      gMC->Gspos("I131",1,"I12A",0.4763,7.0907,0.0,idrotm[220],"ONLY");
2957      gMC->Gspos("I130",1,"I12A",0.5649,6.8469,0.0,idrotm[219],"ONLY");
2958      gMC->Gspos("I129",1,"I12A",0.2688,6.8966,0.0,idrotm[218],"ONLY");
2959      gMC->Gspos("I113",4,"I12A",-0.2497,7.0624,0.0,idrotm[208],"ONLY");
2960      gMC->Gspos("I128",1,"I12A",-0.6103,7.2698,0.0,idrotm[218],"ONLY");
2961      gMC->Gspos("I126",2,"I12A",-0.7799,7.2874,0.0,idrotm[217],"ONLY");
2962      gMC->Gspos("I125",2,"I12A",-0.6315,7.0883,0.0,idrotm[216],"ONLY");
2963      gMC->Gspos("I124",2,"I12A",-0.4965,6.8742,0.0,idrotm[215],"ONLY");
2964      gMC->Gspos("I103",3,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],-3.536,0,"ONLY");
2965      gMC->Gspos("I103",4,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],-10.708,0,"ONLY");
2966      gMC->Gspos("I103",1,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],10.708,0,"ONLY");
2967      gMC->Gspos("I103",2,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],3.536,0,"ONLY");
2968      gMC->Gspos("I105",1,"I10A",-0.05,0.01,-16.844,idrotm[237],"ONLY");
2969      gMC->Gspos("I105",2,"I10A",-0.05,0.01,16.844,0,"ONLY");
2970      gMC->Gspos("I104",1,"I10A",0.0,-di10a[1]+di104[1],0.0,0,"ONLY");
2971      gMC->Gspos("I1D3",3,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],-3.536,0,"ONLY");
2972      gMC->Gspos("I1D3",4,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],-10.708,0,"ONLY");
2973      gMC->Gspos("I1D3",1,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],10.708,0,"ONLY");
2974      gMC->Gspos("I1D3",2,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],3.536,0,"ONLY");
2975      gMC->Gspos("I105",3,"I20A",-0.05,0.01,-16.844,idrotm[237],"ONLY");
2976      gMC->Gspos("I105",4,"I20A",-0.05,0.01,16.844,0,"ONLY");
2977      gMC->Gspos("I104",2,"I20A",0.0,-di20a[1]+di104[1],0.0,0,"ONLY");
2978      gMC->Gspos("I112",2,"I113",0.25,0.02,0.0,idrotm[206],"ONLY");
2979      gMC->Gspos("I111",2,"I113",0.1318,-0.0008,0.0,idrotm[205],"ONLY");
2980      gMC->Gspos("I118",1,"I113",0.0,-0.0454,0.0,0,"ONLY");
2981      gMC->Gspos("I110",1,"I113",0.0,0.0492,0.0,0,"ONLY");
2982      gMC->Gspos("I114",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
2983      gMC->Gspos("I115",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
2984      gMC->Gspos("I115",2,"I113",-0.063,0.0042,0.0,idrotm[201],"ONLY");
2985      gMC->Gspos("I114",2,"I113",-0.063,0.0042,0.0,idrotm[201],"ONLY");
2986      gMC->Gspos("I116",1,"I113",0.0,0.0042,0.0,0,"ONLY");
2987      gMC->Gspos("I111",1,"I113",-0.1318,-0.0008,0.0,idrotm[204],"ONLY");
2988      gMC->Gspos("I112",1,"I113",-0.25,0.02,0.0,idrotm[203],"ONLY");
2989      gMC->Gspos("I101",1,"I103",-0.088,ddet1,0.0,0,"ONLY");
2990      gMC->Gspos("I102",1,"I103",0.0,-dchip1,-2.8,0,"ONLY");
2991      gMC->Gspos("I102",2,"I103",0.0,-dchip1,-1.4,0,"ONLY");
2992      gMC->Gspos("I102",3,"I103",0.0,-dchip1,0.0,0,"ONLY");
2993      gMC->Gspos("I102",4,"I103",0.0,-dchip1,1.4,0,"ONLY");
2994      gMC->Gspos("I102",5,"I103",0.0,-dchip1,2.8,0,"ONLY");
2995      gMC->Gspos("I1D1",1,"I1D3",-0.088,ddet2,0.0,0,"ONLY");
2996      gMC->Gspos("I1D2",1,"I1D3",0.0,-dchip2,-2.8,0,"ONLY");
2997      gMC->Gspos("I1D2",2,"I1D3",0.0,-dchip2,-1.4,0,"ONLY");
2998      gMC->Gspos("I1D2",3,"I1D3",0.0,-dchip2,0.0,0,"ONLY");
2999      gMC->Gspos("I1D2",4,"I1D3",0.0,-dchip2,1.4,0,"ONLY");
3000      gMC->Gspos("I1D2",5,"I1D3",0.0,-dchip2,2.8,0,"ONLY");
3001      gMC->Gspos("I117",1,"I116",0.0,0.0,0.0,0,"ONLY");
3002      gMC->Gspos("ITS1",1,"I101",0.0,0.0,0.0,0,"ONLY");
3003      gMC->Gspos("ITS2",1,"I1D1",0.0,0.0,0.0,0,"ONLY");
3004      gMC->Gspos("I650",16,"IT12",0.0,0.0,22.0,idrotm[1104],"MANY");
3005      gMC->Gspos("I650",20,"IT12",0.0,0.0,22.0,idrotm[1130],"MANY");
3006      gMC->Gspos("I650",18,"IT12",0.0,0.0,22.0,idrotm[1117],"MANY");
3007      gMC->Gspos("I650",1,"IT12",0.0,0.0,22.0,0,"MANY");
3008      gMC->Gspos("I650",4,"IT12",0.0,0.0,22.0,idrotm[1106],"MANY");
3009      gMC->Gspos("I650",6,"IT12",0.0,0.0,22.0,idrotm[1039],"MANY");
3010      gMC->Gspos("I650",8,"IT12",0.0,0.0,22.0,idrotm[1107],"MANY");
3011      gMC->Gspos("I650",10,"IT12",0.0,0.0,22.0,idrotm[1065],"MANY");
3012      gMC->Gspos("I650",12,"IT12",0.0,0.0,22.0,idrotm[1078],"MANY");
3013      gMC->Gspos("I650",14,"IT12",0.0,0.0,22.0,idrotm[1091],"MANY");
3014      gMC->Gspos("I650",19,"IT12",0.0,0.0,-22.0,idrotm[1108],"MANY");
3015      gMC->Gspos("I650",2,"IT12",0.0,0.0,-22.0,idrotm[1109],"MANY");
3016      gMC->Gspos("I650",3,"IT12",0.0,0.0,-22.0,idrotm[1110],"MANY");
3017      gMC->Gspos("I650",5,"IT12",0.0,0.0,-22.0,idrotm[1111],"MANY");
3018      gMC->Gspos("I650",7,"IT12",0.0,0.0,-22.0,idrotm[1112],"MANY");
3019      gMC->Gspos("I650",9,"IT12",0.0,0.0,-22.0,idrotm[1113],"MANY");
3020      gMC->Gspos("I650",11,"IT12",0.0,0.0,-22.0,idrotm[1114],"MANY");
3021      gMC->Gspos("I650",13,"IT12",0.0,0.0,-22.0,idrotm[1115],"MANY");
3022      gMC->Gspos("I650",15,"IT12",0.0,0.0,-22.0,idrotm[1116],"MANY");
3023      gMC->Gspos("I650",17,"IT12",0.0,0.0,-22.0,idrotm[1118],"MANY");
3024      gMC->Gspos("I666",1,"I650",0.0,0.0,0.25,idrotm[1003],"MANY");
3025      gMC->Gspos("I667",1,"I650",0.1102,0.9945,0.45,idrotm[1088],"ONLY");
3026      gMC->Gspos("I669",3,"I650",0.1883,4.0372,-3.2,0,"ONLY");
3027      gMC->Gspos("I671",3,"I650",0.1883,4.0372,0.6,0,"ONLY");
3028      gMC->Gspos("I669",2,"I650",1.3343,4.0609,-3.2,0,"ONLY");
3029      gMC->Gspos("I671",2,"I650",1.3343,4.0609,0.6,0,"ONLY");
3030      gMC->Gspos("I669",6,"I650",2.9567,6.1959,-3.2,idrotm[1089],"ONLY");
3031      gMC->Gspos("I671",6,"I650",2.9567,6.1959,0.6,idrotm[1089],"ONLY");
3032      gMC->Gspos("I669",5,"I650",1.9511,6.5822,-3.2,idrotm[1011],"ONLY");
3033      gMC->Gspos("I671",5,"I650",1.9511,6.5822,0.6,idrotm[1011],"ONLY");
3034      gMC->Gspos("I669",4,"I650",0.8974,6.8064,-3.2,idrotm[1090],"ONLY");
3035      gMC->Gspos("I671",4,"I650",0.8974,6.8064,0.6,idrotm[1090],"ONLY");
3036      gMC->Gspos("I669",1,"I650",-0.1784,6.863,-3.2,0,"ONLY");
3037      gMC->Gspos("I671",1,"I650",-0.1784,6.863,0.6,0,"ONLY");
3038      gMC->Gspos("I673",1,"I650",0.2173,4.8037,1.8,0,"ONLY");
3039      gMC->Gspos("I673",6,"I650",1.5093,4.5605,1.8,0,"ONLY");
3040      gMC->Gspos("I673",4,"I650",-0.173,6.2531,1.8,idrotm[1092],"ONLY");
3041      gMC->Gspos("I673",3,"I650",0.8073,6.2032,1.8,idrotm[1093],"ONLY");
3042      gMC->Gspos("I673",2,"I650",1.7678,6.0005,1.8,idrotm[1094],"ONLY");
3043      gMC->Gspos("I673",5,"I650",2.6847,5.6501,1.8,0,"ONLY");
3044      gMC->Gspos("I676",2,"I650",1.7618,5.2269,2.5,0,"ONLY");
3045      gMC->Gspos("I676",1,"I650",0.4018,5.5869,2.5,0,"ONLY");
3046      gMC->Gspos("I668",1,"I667",0.0,0.0,0.0,0,"ONLY");
3047      gMC->Gspos("I670",1,"I669",0.0,0.0,0.0,0,"ONLY");
3048      gMC->Gspos("I672",1,"I671",0.0,0.0,0.0,0,"ONLY");
3049      gMC->Gspos("I674",1,"I673",0.0,0.0,0.0,0,"MANY");
3050      gMC->Gspos("I675",1,"I673",0.0,0.0,-0.5,0,"ONLY");
3051      gMC->Gspos("I677",1,"I676",0.0,0.0,0.0,0,"MANY");
3052      gMC->Gspos("I678",1,"I676",0.0,0.0,-0.95,0,"ONLY");    
3053
3054   }
3055
3056
3057   // --- Place SPD (option 'b') volumes into their mother volume IT12
3058   
3059   // SPD - option 'b' 
3060   // (this is the default)
3061
3062   if (option == 2) {
3063
3064      gMC->Gspos("I12B",1,"IT12",0.0,0.0,0.0,0,"MANY");
3065      gMC->Gspos("I12B",8,"IT12",0.0,0.0,0.0,idrotm[233],"MANY");
3066      gMC->Gspos("I12B",7,"IT12",0.0,0.0,0.0,idrotm[244],"MANY");
3067      gMC->Gspos("I12B",6,"IT12",0.0,0.0,0.0,idrotm[236],"MANY");
3068      gMC->Gspos("I12B",2,"IT12",0.0,0.0,0.0,idrotm[245],"MANY");
3069      gMC->Gspos("I12B",3,"IT12",0.0,0.0,0.0,idrotm[234],"MANY");
3070      gMC->Gspos("I12B",4,"IT12",0.0,0.0,0.0,idrotm[246],"MANY");
3071      gMC->Gspos("I12B",5,"IT12",0.0,0.0,0.0,idrotm[247],"MANY");
3072      gMC->Gspos("I12B",9,"IT12",0.0,0.0,0.0,idrotm[248],"MANY");
3073      gMC->Gspos("I12B",10,"IT12",0.0,0.0,0.0,idrotm[249],"MANY");
3074      deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(270.*TMath::Pi()/180.);  // see definition of idrotm[238]
3075           deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(270.*TMath::Pi()/180.);  // see definition of idrotm[238]
3076      gMC->Gspos("I10B",2,"I12B",0.203+deltax,3.8206+deltay,0.0,idrotm[238],"ONLY");       
3077      deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(252.*TMath::Pi()/180.);  // see definition of idrotm[239]
3078           deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(252.*TMath::Pi()/180.);  // see definition of idrotm[239]  
3079      gMC->Gspos("I10B",1,"I12B",1.4531+deltax,3.8152+deltay,0.0,idrotm[239],"ONLY");
3080      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(40.*TMath::Pi()/180.);  // see definition of idrotm[240]
3081           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(40.*TMath::Pi()/180.);  // see definition of idrotm[240]  
3082      gMC->Gspos("I20B",1,"I12B",3.0174+deltax,6.5143+deltay,0.0,idrotm[240],"ONLY");
3083      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(49.*TMath::Pi()/180.);  // see definition of idrotm[241]
3084           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(49.*TMath::Pi()/180.);  // see definition of idrotm[241] 
3085      gMC->Gspos("I20B",2,"I12B",1.9612+deltax,6.9062+deltay,0.0,idrotm[241],"ONLY");
3086      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(58.*TMath::Pi()/180.);  // see definition of idrotm[242]
3087           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(58.*TMath::Pi()/180.);  // see definition of idrotm[242] 
3088      gMC->Gspos("I20B",3,"I12B",0.8567+deltax,7.1279+deltay,0.0,idrotm[242],"ONLY");
3089      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(67.*TMath::Pi()/180.);  // see definition of idrotm[243]
3090           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(67.*TMath::Pi()/180.);  // see definition of idrotm[243] 
3091      gMC->Gspos("I20B",4,"I12B",-0.2689+deltax,7.1742+deltay,0.0,idrotm[243],"ONLY");
3092      gMC->Gspos("I123",1,"I12B",-0.2978,5.5196,0.0,idrotm[214],"ONLY");
3093      gMC->Gspos("I121",1,"I12B",-0.2385,4.1518,0.0,idrotm[213],"ONLY");
3094      gMC->Gspos("I122",1,"I12B",-0.2968,4.0207,0.0,idrotm[212],"ONLY");
3095      gMC->Gspos("I120",1,"I12B",-0.3672,3.9056,0.0,0,"ONLY");
3096      gMC->Gspos("I144",1,"I12B",-0.2538,3.8556,0.0,0,"ONLY");
3097      gMC->Gspos("I113",3,"I12B",0.1095,3.9056,0.0,0,"ONLY");
3098      gMC->Gspos("I143",1,"I12B",0.4365,3.8556,0.0,idrotm[236],"ONLY");
3099      gMC->Gspos("I142",1,"I12B",0.5136,3.9056,0.0,idrotm[235],"ONLY");
3100      gMC->Gspos("I141",1,"I12B",0.5636,3.9752,0.0,idrotm[237],"ONLY");
3101      gMC->Gspos("I140",1,"I12B",0.6336,4.0447,0.0,idrotm[234],"ONLY");
3102      gMC->Gspos("I139",1,"I12B",0.8297,4.0545,0.0,idrotm[207],"ONLY");
3103      gMC->Gspos("I113",5,"I12B",1.2575,3.9681,0.0,idrotm[207],"ONLY");
3104      gMC->Gspos("I138",1,"I12B",1.66,3.7848,0.0,idrotm[207],"ONLY");
3105      gMC->Gspos("I137",1,"I12B",1.8556,3.7738,0.0,idrotm[233],"ONLY");
3106      gMC->Gspos("I136",1,"I12B",2.6224,4.874,0.0,idrotm[232],"ONLY");
3107      gMC->Gspos("I135",1,"I12B",3.2967,6.0337,0.0,idrotm[231],"ONLY");
3108      gMC->Gspos("I134",1,"I12B",3.266,6.1636,0.0,idrotm[230],"ONLY");
3109      gMC->Gspos("I113",1,"I12B",2.9903,6.4144,0.0,idrotm[211],"ONLY");
3110      gMC->Gspos("I133",3,"I12B",2.7631,6.7627,0.0,idrotm[230],"ONLY");
3111      gMC->Gspos("I132",3,"I12B",2.62,6.8555,0.0,idrotm[229],"ONLY");
3112      gMC->Gspos("I131",3,"I12B",2.648,6.6023,0.0,idrotm[228],"ONLY");
3113      gMC->Gspos("I130",3,"I12B",2.6569,6.3431,0.0,idrotm[227],"ONLY");
3114      gMC->Gspos("I129",3,"I12B",2.3906,6.4819,0.0,idrotm[226],"ONLY");
3115      gMC->Gspos("I113",2,"I12B",1.9488,6.7998,0.0,idrotm[210],"ONLY");
3116      gMC->Gspos("I133",2,"I12B",1.6699,7.1085,0.0,idrotm[226],"ONLY");
3117      gMC->Gspos("I132",2,"I12B",1.5142,7.1777,0.0,idrotm[225],"ONLY");
3118      gMC->Gspos("I131",2,"I12B",1.5814,6.932,0.0,idrotm[224],"ONLY");
3119      gMC->Gspos("I130",2,"I12B",1.6308,6.6774,0.0,idrotm[223],"ONLY");
3120      gMC->Gspos("I129",2,"I12B",1.346,6.7728,0.0,idrotm[222],"ONLY");
3121      gMC->Gspos("I113",6,"I12B",0.8599,7.0176,0.0,idrotm[209],"ONLY");
3122      gMC->Gspos("I133",1,"I12B",0.5362,7.2789,0.0,idrotm[222],"ONLY");
3123      gMC->Gspos("I132",1,"I12B",0.3715,7.3228,0.0,idrotm[221],"ONLY");
3124      gMC->Gspos("I131",1,"I12B",0.4763,7.0907,0.0,idrotm[220],"ONLY");
3125      gMC->Gspos("I130",1,"I12B",0.5649,6.8469,0.0,idrotm[219],"ONLY");
3126      gMC->Gspos("I129",1,"I12B",0.2688,6.8966,0.0,idrotm[218],"ONLY");
3127      gMC->Gspos("I113",4,"I12B",-0.2497,7.0624,0.0,idrotm[208],"ONLY");
3128      gMC->Gspos("I128",1,"I12B",-0.6103,7.2698,0.0,idrotm[218],"ONLY");
3129      gMC->Gspos("I126",1,"I12B",-0.7799,7.2874,0.0,idrotm[217],"ONLY");
3130      gMC->Gspos("I125",1,"I12B",-0.6315,7.0883,0.0,idrotm[216],"ONLY");
3131      gMC->Gspos("I124",1,"I12B",-0.4965,6.8742,0.0,idrotm[215],"ONLY");
3132      gMC->Gspos("I105",3,"I10B",-0.05,-0.01,-16.844,idrotm[201],"ONLY");
3133      gMC->Gspos("I105",4,"I10B",-0.05,-0.01,16.844,0,"ONLY");
3134      gMC->Gspos("I107",2,"I10B",-0.0455,-di10b[1]+di107[1],3.536,0,"ONLY");
3135      gMC->Gspos("I107",1,"I10B",-0.0455,-di10b[1]+di107[1],10.708,0,"ONLY");
3136      gMC->Gspos("I107",4,"I10B",-0.0455,-di10b[1]+di107[1],-10.708,0,"ONLY");
3137      gMC->Gspos("I107",3,"I10B",-0.0455,-di10b[1]+di107[1],-3.536,0,"ONLY");
3138      gMC->Gspos("I109",1,"I10B",-0.138,0.015,-16.844,idrotm[201],"ONLY");
3139      gMC->Gspos("I109",2,"I10B",-0.138,0.015,16.844,0,"ONLY");
3140      gMC->Gspos("I108",1,"I10B",-0.138,-di10b[1]+2.*di107[1]+di108[1],0.0,0,"ONLY");
3141      gMC->Gspos("I105",1,"I20B",-0.05,-0.01,-16.844,idrotm[201],"ONLY");
3142      gMC->Gspos("I105",2,"I20B",-0.05,-0.01,16.844,0,"ONLY");
3143      gMC->Gspos("I1D7",2,"I20B",-0.0455,-di20b[1]+di1d7[1],3.536,0,"ONLY");
3144      gMC->Gspos("I1D7",1,"I20B",-0.0455,-di20b[1]+di1d7[1],10.708,0,"ONLY");
3145      gMC->Gspos("I1D7",4,"I20B",-0.0455,-di20b[1]+di1d7[1],-10.708,0,"ONLY");
3146      gMC->Gspos("I1D7",3,"I20B",-0.0455,-di20b[1]+di1d7[1],-3.536,0,"ONLY");
3147      gMC->Gspos("I109",3,"I20B",-0.138,0.015,-16.844,idrotm[201],"ONLY");
3148      gMC->Gspos("I109",4,"I20B",-0.138,0.015,16.844,0,"ONLY");
3149      gMC->Gspos("I108",2,"I20B",-0.138,-di20b[1]+2.*di1d7[1]+di108[1],0.0,0,"ONLY");
3150      gMC->Gspos("I112",2,"I113",0.25,0.02,0.0,idrotm[206],"ONLY");
3151      gMC->Gspos("I111",2,"I113",0.1318,-0.0008,0.0,idrotm[205],"ONLY");
3152      gMC->Gspos("I118",1,"I113",0.0,-0.0454,0.0,0,"ONLY");
3153      gMC->Gspos("I110",1,"I113",0.0,0.0492,0.0,0,"ONLY");
3154      gMC->Gspos("I114",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3155      gMC->Gspos("I115",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3156      gMC->Gspos("I115",2,"I113",-0.063,0.0042,0.0,idrotm[237],"ONLY");
3157      gMC->Gspos("I114",2,"I113",-0.063,0.0042,0.0,idrotm[237],"ONLY");
3158      gMC->Gspos("I116",1,"I113",0.0,0.0042,0.0,0,"ONLY");
3159      gMC->Gspos("I111",1,"I113",-0.1318,-0.0008,0.0,idrotm[204],"ONLY");
3160      gMC->Gspos("I112",1,"I113",-0.25,0.02,0.0,idrotm[203],"ONLY");
3161      gMC->Gspos("I106",1,"I107",0.0,-dchip1,-1.4,0,"ONLY");
3162      gMC->Gspos("I106",2,"I107",0.0,-dchip1,0.0,0,"ONLY");
3163      gMC->Gspos("I106",3,"I107",0.0,-dchip1,1.4,0,"ONLY");
3164      gMC->Gspos("I106",4,"I107",0.0,-dchip1,2.8,0,"ONLY");
3165      gMC->Gspos("I106",5,"I107",0.0,-dchip1,-2.8,0,"ONLY");
3166      gMC->Gspos("I101",1,"I107",0.0,ddet1,0.0,0,"ONLY");
3167      gMC->Gspos("I1D6",1,"I1D7",0.0,-dchip2,-1.4,0,"ONLY");
3168      gMC->Gspos("I1D6",2,"I1D7",0.0,-dchip2,0.0,0,"ONLY");
3169      gMC->Gspos("I1D6",3,"I1D7",0.0,-dchip2,1.4,0,"ONLY");
3170      gMC->Gspos("I1D6",4,"I1D7",0.0,-dchip2,2.8,0,"ONLY");
3171      gMC->Gspos("I1D6",5,"I1D7",0.0,-dchip2,-2.8,0,"ONLY");
3172      gMC->Gspos("I1D1",1,"I1D7",0.0,ddet2,0.0,0,"ONLY");
3173      gMC->Gspos("I117",1,"I116",0.0,0.0,0.0,0,"ONLY");
3174      gMC->Gspos("ITS1",1,"I101",0.0,0.0,0.0,0,"ONLY");
3175      gMC->Gspos("ITS2",1,"I1D1",0.0,0.0,0.0,0,"ONLY");
3176      gMC->Gspos("I650",16,"IT12",0.0,0.0,22.0,idrotm[1104],"MANY");
3177      gMC->Gspos("I650",20,"IT12",0.0,0.0,22.0,idrotm[1130],"MANY");
3178      gMC->Gspos("I650",18,"IT12",0.0,0.0,22.0,idrotm[1117],"MANY");
3179      gMC->Gspos("I650",1,"IT12",0.0,0.0,22.0,0,"MANY");
3180      gMC->Gspos("I650",4,"IT12",0.0,0.0,22.0,idrotm[1106],"MANY");
3181      gMC->Gspos("I650",6,"IT12",0.0,0.0,22.0,idrotm[1039],"MANY");
3182      gMC->Gspos("I650",8,"IT12",0.0,0.0,22.0,idrotm[1107],"MANY");
3183      gMC->Gspos("I650",10,"IT12",0.0,0.0,22.0,idrotm[1065],"MANY");
3184      gMC->Gspos("I650",12,"IT12",0.0,0.0,22.0,idrotm[1078],"MANY");
3185      gMC->Gspos("I650",14,"IT12",0.0,0.0,22.0,idrotm[1091],"MANY");
3186      gMC->Gspos("I650",19,"IT12",0.0,0.0,-22.0,idrotm[1108],"MANY");
3187      gMC->Gspos("I650",2,"IT12",0.0,0.0,-22.0,idrotm[1109],"MANY");
3188      gMC->Gspos("I650",3,"IT12",0.0,0.0,-22.0,idrotm[1110],"MANY");
3189      gMC->Gspos("I650",5,"IT12",0.0,0.0,-22.0,idrotm[1111],"MANY");
3190      gMC->Gspos("I650",7,"IT12",0.0,0.0,-22.0,idrotm[1112],"MANY");
3191      gMC->Gspos("I650",9,"IT12",0.0,0.0,-22.0,idrotm[1113],"MANY");
3192      gMC->Gspos("I650",11,"IT12",0.0,0.0,-22.0,idrotm[1114],"MANY");
3193      gMC->Gspos("I650",13,"IT12",0.0,0.0,-22.0,idrotm[1115],"MANY");
3194      gMC->Gspos("I650",15,"IT12",0.0,0.0,-22.0,idrotm[1116],"MANY");
3195      gMC->Gspos("I650",17,"IT12",0.0,0.0,-22.0,idrotm[1118],"MANY");
3196      gMC->Gspos("I666",1,"I650",0.0,0.0,0.25,idrotm[1003],"MANY");
3197      gMC->Gspos("I667",1,"I650",0.1102,0.9945,0.45,idrotm[1088],"ONLY");
3198      gMC->Gspos("I669",3,"I650",0.1883,4.0372,-3.2,0,"ONLY");
3199      gMC->Gspos("I671",3,"I650",0.1883,4.0372,0.6,0,"ONLY");
3200      gMC->Gspos("I669",2,"I650",1.3343,4.0609,-3.2,0,"ONLY");
3201      gMC->Gspos("I671",2,"I650",1.3343,4.0609,0.6,0,"ONLY");
3202      gMC->Gspos("I669",6,"I650",2.9567,6.1959,-3.2,idrotm[1089],"ONLY");
3203      gMC->Gspos("I671",6,"I650",2.9567,6.1959,0.6,idrotm[1089],"ONLY");
3204      gMC->Gspos("I669",5,"I650",1.9511,6.5822,-3.2,idrotm[1011],"ONLY");
3205      gMC->Gspos("I671",5,"I650",1.9511,6.5822,0.6,idrotm[1011],"ONLY");
3206      gMC->Gspos("I669",4,"I650",0.8974,6.8064,-3.2,idrotm[1090],"ONLY");
3207      gMC->Gspos("I671",4,"I650",0.8974,6.8064,0.6,idrotm[1090],"ONLY");
3208      gMC->Gspos("I669",1,"I650",-0.1784,6.863,-3.2,0,"ONLY");
3209      gMC->Gspos("I671",1,"I650",-0.1784,6.863,0.6,0,"ONLY");
3210      gMC->Gspos("I673",1,"I650",0.2173,4.8037,1.8,0,"ONLY");
3211      gMC->Gspos("I673",6,"I650",1.5093,4.5605,1.8,0,"ONLY");
3212      gMC->Gspos("I673",4,"I650",-0.173,6.2531,1.8,idrotm[1092],"ONLY");
3213      gMC->Gspos("I673",3,"I650",0.8073,6.2032,1.8,idrotm[1093],"ONLY");
3214      gMC->Gspos("I673",2,"I650",1.7678,6.0005,1.8,idrotm[1094],"ONLY");
3215      gMC->Gspos("I673",5,"I650",2.6847,5.6501,1.8,0,"ONLY");
3216      gMC->Gspos("I676",2,"I650",1.7618,5.2269,2.5,0,"ONLY");
3217      gMC->Gspos("I676",1,"I650",0.4018,5.5869,2.5,0,"ONLY");
3218      gMC->Gspos("I668",1,"I667",0.0,0.0,0.0,0,"ONLY");
3219      gMC->Gspos("I670",1,"I669",0.0,0.0,0.0,0,"ONLY");
3220      gMC->Gspos("I672",1,"I671",0.0,0.0,0.0,0,"ONLY");
3221      gMC->Gspos("I674",1,"I673",0.0,0.0,0.0,0,"MANY");
3222      gMC->Gspos("I675",1,"I673",0.0,0.0,-0.5,0,"ONLY");
3223      gMC->Gspos("I677",1,"I676",0.0,0.0,0.0,0,"MANY");
3224      gMC->Gspos("I678",1,"I676",0.0,0.0,-0.95,0,"ONLY");  
3225
3226   }
3227     
3228   // --- Place SDD volumes into their mother volume IT34
3229
3230   
3231   // -- position SDD detectors of ladder 3 / layer 3
3232
3233   gMC->Gspos("ITS3", 1,"I302",  0.0,      0.0,    0.0,    0,           "ONLY");
3234   ySDD = Y_SDD_sep/2.+I302dits[1];
3235   for (iSDD=0; iSDD<6; iSDD++) {
3236     gMC->Gspos("I302", iSDD+1, "I004",  0.0, ySDD,  Z_SDD_lay3[iSDD], 0, "ONLY");
3237     ySDD = -ySDD;
3238   }
3239
3240   gMC->Gspos("I004", 1,"IT34", -3.2777,  14.3607, 0.0,   idrotm[321],"ONLY");
3241   gMC->Gspos("I004", 2,"IT34", -9.5581,  11.9855, 0.0,   idrotm[333],"ONLY");
3242   gMC->Gspos("I004", 3,"IT34",-13.2713,   6.3911, 0.0,   idrotm[336],"ONLY");
3243   gMC->Gspos("I004", 4,"IT34",-15.33,     0.0,    0.0,   idrotm[350],"ONLY");
3244   gMC->Gspos("I004", 5,"IT34",-13.2713,  -6.3911, 0.0,   idrotm[313],"ONLY");
3245   gMC->Gspos("I004", 6,"IT34", -9.5581, -11.9855, 0.0,   idrotm[311],"ONLY");
3246   gMC->Gspos("I004", 7,"IT34", -3.2777, -14.3607, 0.0,   idrotm[310],"ONLY");
3247   gMC->Gspos("I004", 8,"IT34",  3.4112, -14.9456, 0.0,   idrotm[386],"ONLY");
3248   gMC->Gspos("I004", 9,"IT34",  9.184,  -11.5164, 0.0,   idrotm[309],"ONLY");
3249   gMC->Gspos("I004",10,"IT34", 13.8119,  -6.6514, 0.0,   idrotm[308],"ONLY");
3250   gMC->Gspos("I004",11,"IT34", 14.73,     0.0,    0.0,   idrotm[356],"ONLY");
3251   gMC->Gspos("I004",12,"IT34", 13.8119,   6.6514, 0.0,   idrotm[307],"ONLY");
3252   gMC->Gspos("I004",13,"IT34",  9.184,   11.5164, 0.0,   idrotm[306],"ONLY");
3253   gMC->Gspos("I004",14,"IT34",  3.4113,  14.9456, 0.0,   idrotm[305],"ONLY");
3254
3255
3256   // -- position SDD detectors of ladder 4 / layer 4
3257
3258   gMC->Gspos("ITS4", 1,"I402",  0.0,      0.000,  0.0,   0,"ONLY");
3259   ySDD = -(Y_SDD_sep/2.+I402dits[1]);
3260   for (iSDD=0; iSDD<8; iSDD++) {
3261     gMC->Gspos("I402", iSDD+1, "I005",  0.0, ySDD,  Z_SDD_lay4[iSDD], 0, "ONLY");
3262     ySDD = -ySDD;
3263   }
3264   
3265   gMC->Gspos("I005", 1,"IT34", -3.3629,  23.3895,-0.15,  idrotm[335],"ONLY");
3266   gMC->Gspos("I005", 2,"IT34",-10.0447,  21.9949,-0.15,  idrotm[332],"ONLY");
3267   gMC->Gspos("I005", 3,"IT34",-15.4744,  17.8584,-0.15,  idrotm[331],"ONLY");
3268   gMC->Gspos("I005", 4,"IT34",-20.3415,  13.0727,-0.15,  idrotm[366],"ONLY");
3269   gMC->Gspos("I005", 5,"IT34",-22.6728,   6.6573,-0.15,  idrotm[330],"ONLY");
3270   gMC->Gspos("I005", 6,"IT34",-24.18,     0.0,   -0.15,  idrotm[350],"ONLY");
3271   gMC->Gspos("I005", 7,"IT34",-22.6728,  -6.6573,-0.15,  idrotm[329],"ONLY");
3272   gMC->Gspos("I005", 8,"IT34",-20.3415, -13.0727,-0.15,  idrotm[328],"ONLY");
3273   gMC->Gspos("I005", 9,"IT34",-15.4744, -17.8584,-0.15,  idrotm[327],"ONLY");
3274   gMC->Gspos("I005",10,"IT34",-10.0447, -21.9949,-0.15,  idrotm[326],"ONLY");
3275   gMC->Gspos("I005",11,"IT34", -3.3629, -23.3895,-0.15,  idrotm[325],"ONLY");
3276   gMC->Gspos("I005",12,"IT34",  3.4412, -23.9339,-0.15,  idrotm[324],"ONLY");
3277   gMC->Gspos("I005",13,"IT34",  9.8163, -21.4946,-0.15,  idrotm[323],"ONLY");
3278   gMC->Gspos("I005",14,"IT34", 15.8345, -18.274, -0.15,  idrotm[322],"ONLY");
3279   gMC->Gspos("I005",15,"IT34", 19.8788, -12.7753,-0.15,  idrotm[320],"ONLY");
3280   gMC->Gspos("I005",16,"IT34", 23.2005,  -6.8123,-0.15,  idrotm[319],"ONLY");
3281   gMC->Gspos("I005",17,"IT34", 23.63,     0.0,   -0.15,  idrotm[318],"ONLY");
3282   gMC->Gspos("I005",18,"IT34", 23.2005,   6.8123,-0.15,  idrotm[317],"ONLY");
3283   gMC->Gspos("I005",19,"IT34", 19.8788,  12.7753,-0.15,  idrotm[316],"ONLY");
3284   gMC->Gspos("I005",20,"IT34", 15.8345,  18.274, -0.15,  idrotm[315],"ONLY");
3285   gMC->Gspos("I005",21,"IT34",  9.8163,  21.4946,-0.15,  idrotm[314],"ONLY");
3286   gMC->Gspos("I005",22,"IT34",  3.4412,  23.9339,-0.15,  idrotm[334],"ONLY");
3287
3288
3289   // -- build block of the SDD ladder frame holding the electronics
3290
3291   gMC->Gspos("I019", 1,"I018", -1.9,     -1.735,  0.0, idrotm[344], "ONLY");
3292   gMC->Gspos("I019", 2,"I018",  1.987,   -1.5843, 0.0, idrotm[343], "ONLY");
3293   gMC->Gspos("I019", 3,"I018", -0.087,    1.7066, 0.0, idrotm[342], "ONLY");
3294
3295   gMC->Gspos("I020", 1,"I018", -1.9782,  -1.569,  0.0, idrotm[342], "ONLY");
3296   gMC->Gspos("I020", 2,"I018",  1.8824,  -1.735,  0.0, idrotm[344], "ONLY");
3297   gMC->Gspos("I020", 3,"I018",  0.0958,   1.6913, 0.0, idrotm[343], "ONLY");
3298
3299   gMC->Gspos("I021", 1,"I018",  1.0761,   0.0835, 2.6008, idrotm[340], "ONLY");
3300   gMC->Gspos("I021", 2,"I018", -1.0761,   0.0835,-2.8008, idrotm[339], "ONLY");
3301   gMC->Gspos("I021", 3,"I018", -1.0761,   0.0835,-1.0492, idrotm[338], "ONLY");
3302   gMC->Gspos("I021", 4,"I018",  1.0761,   0.0835,-2.8008, idrotm[337], "ONLY");
3303   gMC->Gspos("I021", 5,"I018",  1.0761,   0.0835,-1.0492, idrotm[340], "ONLY");
3304   gMC->Gspos("I021", 6,"I018", -1.0761,   0.0835, 0.8492, idrotm[339], "ONLY");
3305   gMC->Gspos("I021", 7,"I018", -1.0761,   0.0835, 2.6008, idrotm[338], "ONLY");
3306   gMC->Gspos("I021", 8,"I018",  1.0761,   0.0835, 0.8492, idrotm[337], "ONLY");
3307
3308   gMC->Gspos("I022", 1,"I018",  0.0,     -1.79,   3.55,   idrotm[312], "ONLY");
3309   gMC->Gspos("I022", 2,"I018",  0.0,     -1.79,  -0.1,    idrotm[312], "ONLY");
3310
3311   gMC->Gspos("I023", 1,"I018",  0.0,     -1.79,   1.725,  idrotm[341], "ONLY");
3312   gMC->Gspos("I023", 2,"I018",  0.0,     -1.79,  -1.925,  idrotm[341], "ONLY");
3313
3314   gMC->Gspos("I033", 1,"I018",  1.8,     -1.75,   1.35,   0,           "MANY");
3315   gMC->Gspos("I033", 2,"I018", -1.8,     -1.75,  -2.65,   idrotm[345], "MANY");
3316   gMC->Gspos("I033", 3,"I018", -1.8,     -1.75,   1.35,   idrotm[345], "MANY");
3317   gMC->Gspos("I033", 4,"I018",  1.8,     -1.75,  -2.65,   0,           "MANY");
3318
3319   gMC->Gspos("I034", 1,"I018",  1.6,     -1.775,  1.35,   idrotm[312], "ONLY");
3320   gMC->Gspos("I034", 2,"I018", -1.6,     -1.775, -2.65,   idrotm[348], "ONLY");
3321   gMC->Gspos("I034", 3,"I018", -1.6,     -1.775,  1.35,   idrotm[348], "ONLY");
3322   gMC->Gspos("I034", 4,"I018",  1.6,     -1.775, -2.65,   idrotm[312], "ONLY");
3323
3324   gMC->Gspos("I035", 1,"I018",  1.7,     -0.55, I018dits[2]-I035dits[2], 0, "MANY");
3325   gMC->Gspos("I035", 2,"I018", -1.7,     -0.55, I018dits[2]-I035dits[2], 0, "MANY");
3326
3327   gMC->Gspos("I036", 1,"I018",  0.3087,   1.7191, 3.56,   idrotm[346], "ONLY");
3328   gMC->Gspos("I036", 2,"I018",  0.3087,   1.7191,-0.11,   idrotm[346], "ONLY");
3329   gMC->Gspos("I036", 3,"I018", -0.3087,   1.7191,-0.11,   idrotm[347], "ONLY");
3330   gMC->Gspos("I036", 4,"I018", -0.3087,   1.7191, 3.56,   idrotm[347], "ONLY");
3331
3332   gMC->Gspos("I037", 1,"I018",  SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 , "ONLY");
3333   gMC->Gspos("I037", 2,"I018", -SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 , "ONLY");
3334
3335   gMC->Gspos("I038", 1,"I018",  SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 , "ONLY");
3336   gMC->Gspos("I038", 2,"I018", -SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 , "ONLY");
3337
3338   gMC->Gspos("I040", 1,"I018",  1.9204,  -0.7118, 0.0, idrotm[346],"ONLY");
3339   gMC->Gspos("I040", 2,"I018", -1.9204,  -0.7118, 0.0, idrotm[347],"ONLY");
3340   gMC->Gspos("I041", 1,"I018",  SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], idrotm[346], "ONLY");
3341   gMC->Gspos("I041", 2,"I018", -SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], idrotm[347], "ONLY");
3342
3343
3344   // -- build block of the SDD electronics (heat bridge, chips, hybrid, anode microcable)
3345
3346   xI050 = SDD_CoolPipe[0]+SDD_CoolPipe[1]*sin30+I050dits[1]/cos30+I041dits[1];
3347   yI050 = 0;
3348   xI039 = -SDD_CoolPipe[1]/cos30;
3349   yI039 = -I050dits[1]+I039dits[1];
3350   gMC->Gspos("I039", 1,"I050",  xI039, yI039, 0.0, 0, "ONLY");
3351   xI042 = xI039+I039dits[0]-xI042space-I042dits[0];
3352   yI042 = yI039+I039dits[1]+I042dits[1];
3353   xI043 = xI039-I039dits[0]+xI043space+I043dits[0];
3354   yI043 = yI039+I039dits[1]+I043dits[1];
3355   zChipSpace = I042dits[2];
3356   if (zChipSpace < I043dits[2]) {
3357     zChipSpace = I043dits[2];
3358   }
3359   zChipSpace = zChipSpace * 2;
3360   yI051space = (2*I039dits[2] - 4*zChipSpace)/5;
3361   zchip = -I039dits[2] + yI051space + zChipSpace/2.;
3362   for (ichip=0; ichip<4; ichip++) { 
3363     gMC->Gspos("I042", ichip+1, "I050", xI042, yI042, zchip, 0, "ONLY");
3364     gMC->Gspos("I043", ichip+1, "I050", xI043, yI043, zchip, 0, "ONLY");
3365     zchip += zChipSpace + yI051space;
3366   }
3367   xcap = 2*I039dits[0]/5.;
3368   yI051 = yI039+I039dits[1]+I051dits[1];
3369   zI051 = -I039dits[2] + yI051space/3.;
3370   icap = 1;
3371   for (ichip=0; ichip<5; ichip++) { 
3372     xI051 = xI039-I039dits[0]+xcap;
3373     gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3374     zI051 += yI051space/3.;
3375     gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3376     xI051 += xcap;
3377     gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3378     xI051 += xcap;
3379     gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3380     xI051 += xcap;
3381     gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3382     zI051 -= yI051space/3.;
3383     if (ichip == 0) {
3384       gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3385     }
3386     zI051 += zChipSpace + yI051space;
3387   }
3388   xI052 = -I050dits[0]+I052dits[0];
3389   yI052 = yI051+I051dits[1]+I052dits[1];
3390   gMC->Gspos("I052", 1,"I050", xI052, yI052, 0.0, 0, "ONLY");
3391   xI044 = I050dits[0]-I044dits[3];
3392   yI044 = yI052+I052dits[1]+I044dits[2];
3393   gMC->Gspos("I044", 1,"I050", xI044, yI044, 0.0, idrotm[301], "ONLY");
3394   gMC->Gspos("I050", 1,"I018",  xI050,  yI050,  0.0, idrotm[346],"ONLY");
3395   gMC->Gspos("I050", 2,"I018", -xI050,  yI050,  0.0, idrotm[347],"ONLY");
3396
3397
3398   // -- build block of the SDD ladder frame at the end ladders
3399
3400   gMC->Gspos("I021",12,"I024",  1.0761,   0.0836,-0.1242, idrotm[340], "ONLY");
3401   gMC->Gspos("I021",11,"I024", -1.0761,   0.0836,-0.1242, idrotm[338], "ONLY");
3402   gMC->Gspos("I021",13,"I024", -1.0761,   0.0836,-1.8758, idrotm[339], "ONLY");
3403   gMC->Gspos("I021",14,"I024",  1.0761,   0.0836,-1.8758, idrotm[337], "ONLY");
3404
3405   gMC->Gspos("I022", 3,"I024",  0.0,     -1.7899, 0.825,  idrotm[312], "ONLY");
3406
3407   gMC->Gspos("I023", 3,"I024",  0.0,     -1.7899,-1.0,    idrotm[341], "ONLY");
3408
3409   gMC->Gspos("I025", 1,"I024", -1.9,     -1.7349, 0.0,    idrotm[344], "ONLY");
3410   gMC->Gspos("I025", 2,"I024",  1.987,   -1.5842, 0.0,    idrotm[343], "ONLY");
3411
3412   gMC->Gspos("I026", 1,"I024", -1.9782,  -1.5689, 0.0,    idrotm[342], "ONLY");
3413   gMC->Gspos("I026", 2,"I024",  1.8824,  -1.7349, 0.0,    idrotm[344], "ONLY");
3414
3415   gMC->Gspos("I029", 1,"I024", -0.087,    1.7067, I029dits[2]-I024dits[2], idrotm[342], "ONLY");
3416
3417   gMC->Gspos("I030", 1,"I024",  0.0958,   1.6914, I030dits[2]-I024dits[2], idrotm[343], "ONLY");
3418
3419   gMC->Gspos("I031", 1,"I024",  SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 ,"ONLY");
3420   gMC->Gspos("I031", 2,"I024", -SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 ,"ONLY");
3421
3422   gMC->Gspos("I032", 1,"I024",  SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 ,"ONLY");
3423   gMC->Gspos("I032", 2,"I024", -SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 ,"ONLY");
3424
3425
3426   xI424 = I028dits[0]/3.;
3427   yI424 = -I028dits[1]+I424dits[1];
3428   gMC->Gspos("I422", 1,"I421", 0.0, 0.0, 0.0, 0, "ONLY");
3429   gMC->Gspos("I423", 1,"I421", 0.0, 0.0, I421dits[2]-I423dits[2], 0, "ONLY");
3430   gMC->Gspos("I421", 1,"I420", 0.0, 0.0, 0.0, idrotm[312], "ONLY");
3431   gMC->Gspos("I420", 1,"I028", -I028dits[0]/3., I028dits[1]-I420dits[1], 0.0, 0, "ONLY");
3432   gMC->Gspos("I424", 1,"I028", xI424, yI424, 0.0, 0, "ONLY");
3433   gMC->Gspos("I028", 1,"I024", 0.0, I028dits[1]-I024dits[1], I024dits[2]-I028dits[2], 0, "MANY");
3434
3435
3436   // -- build the SDD ladder 3
3437
3438   indI425 = 1;
3439   gMC->Gspos("I024", 1,"I047",  0.0,      0.0,   24.625, 0,           "ONLY");  
3440   gMC->Gspos("I018", 1,"I047",  0.0,      0.0,    3.65,  0,           "ONLY");
3441   gMC->Gspos("I018", 2,"I047",  0.0,      0.0,   10.95,  0,           "ONLY");
3442   gMC->Gspos("I018", 3,"I047",  0.0,      0.0,   18.25,  0,           "ONLY");
3443   gMC->Gspos("I018", 4,"I047",  0.0,      0.0,   -3.65,  0,           "ONLY");
3444   gMC->Gspos("I018", 5,"I047",  0.0,      0.0,  -10.95,  0,           "ONLY");
3445   gMC->Gspos("I018", 6,"I047",  0.0,      0.0,  -18.25,  0,           "ONLY");
3446   gMC->Gspos("I024", 2,"I047",  0.0,      0.0,  -24.625, idrotm[355], "ONLY");
3447   HVname[0] = 'I';
3448   HVname[1] = '3';
3449   HVname[2] = '1';  
3450   HVname[4] = '\0';
3451   for (iSDD=0; iSDD<3; iSDD++) {
3452     HVname[3] = (Char_t)(48+iSDD+5);
3453     dits[0] = 1.350000;
3454     dits[1] = I425dits[1];
3455     dits[2] = (I047dits[2] - 2*I024dits[2] - Z_SDD_lay3[iSDD])/2.;
3456     gMC->Gsvolu(HVname, "BOX ", idtmed[279], dits, 3);
3457     xHV = 0.0;
3458     yHV = -I047dits[1] + (2*iSDD+1)*dits[1];
3459     zHV = I047dits[2] - 2*I024dits[2] - dits[2];
3460     gMC->Gspos(HVname, 1,"I047", xHV, yHV,  zHV, 0, "ONLY");