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