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