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