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