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