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