]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSvPPRsymm.cxx
Finished fixing SetDefaults for the segmentation of SPD, SDD, and SSD.
[u/mrichter/AliRoot.git] / ITS / AliITSvPPRsymm.cxx
1  /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /*
17 $Log$
18 Revision 1.19  2001/05/03 08:40:15  barbera
19 Volume ITSD slightly modified to be consistent with v5. Some improvement in the printouts. The last commit did not complete successfully.
20
21 Revision 1.17  2001/05/01 22:40:42  nilsen
22 Partical update of SetDefault.
23
24 Revision 1.16  2001/04/22 13:48:09  barbera
25 New values of media parameters and thickness of SPD end-ladder electronics as given by Fabio Formenti
26
27 Revision 1.15  2001/04/04 07:02:16  barbera
28 Position of the cylinders holding rails corrected
29
30 Revision 1.14  2001/03/29 22:02:30  barbera
31 Some changes to the services due to the new drawings from the engineers.
32
33 Revision 1.13  2001/03/29 05:28:56  barbera
34 Rails material changed from aluminum to carbon fiber according with the decision of the last Technical Board
35
36 Revision 1.12  2001/03/28 06:40:20  barbera
37 Central and services mother volumes made consistenf for detailed and coarse geometry. Switch for rails added to the coarse geometries
38
39 Revision 1.11  2001/03/23 00:12:23  nilsen
40 Set Reading of AliITSgeom data from Geant3 common blocks as the default and
41 not a .det file. Removed redundent calls to BuildGeometry.
42
43 Revision 1.10  2001/03/15 13:47:55  barbera
44 Some service mother volumes modified
45
46 Revision 1.9  2001/03/13 18:13:30  barbera
47 Some mother volumes sligthly modified to eliminate an overlap with the absorber
48
49 Revision 1.8  2001/03/13 08:36:24  hristov
50 fabsf replaced by TMath::Abs
51
52 Revision 1.7  2001/03/13 00:43:43  barbera
53 Updated version of the PPR detailed geometry with symmetric services. Of course, the central part of the detector (volume ITSD and its daughters) is the same of AliITSvPPRasymm.cxx
54
55 Revision 1.6  2001/02/13 16:53:35  nilsen
56 Fixed a but when trying to use GEANT4. Needed to replace
57 if(!((TGeant3*)gMC)) with if(!(dynamic_casst<TGeant3*>(gMC)))
58 because just casting gMC to be TGeant3* even when it realy is a TGeant3 pointer
59 did not result in a zero value. For AliITSv5asymm and AliITSv5symm, needed
60 to fix a bug in the initilizers and a bug in BuildGeometry. This is now done
61 in the same way as in AliITSv5.cxx.
62
63 Revision 1.5  2001/02/09 20:06:26  nilsen
64 Fixed bug in distructor. Can't distroy fixxed length arrays. Thanks Peter.
65
66 Revision 1.4  2001/02/09 00:05:31  nilsen
67 Added fMajor/MinorVersion variables and made other changes to better make
68 use of the new code changes in AliITSgeom related classes.
69
70 Revision 1.3  2001/01/30 09:23:13  hristov
71 Streamers removed (R.Brun)
72
73 Revision 1.2  2001/01/26 20:01:19  hristov
74 Major upgrade of AliRoot code
75
76 Revision 1.1.2.1  2001/01/15 13:38:32  barbera
77 New ITS detailed geometry to be used for the PPR
78
79 Revision 1.12  2000/12/10 16:00:44  barbera
80 Added last definition of special media like end-ladder boxes and cones
81
82 Revision 1.11  2000/10/30 08:02:25  barbera
83 PCON's changed into simpler CONS and TUBS. Services now allow for the rails to go through them.
84
85 Revision 1.3.2.7  2000/10/27 17:20:00  barbera
86 Position of rails w.r.t. the interaction point corrected.
87
88 Revision 1.9  2000/10/27 13:31:29  barbera
89 Rails between ITS and TPC added.
90
91 Revision 1.8  2000/10/27 13:03:08  barbera
92 Small changes in the SPD volumes and materials
93
94 Revision 1.6  2000/10/16 14:45:37  barbera
95 Mother volume ITSD modified to avoid some overlaps
96
97 Revision 1.5  2000/10/16 13:49:15  barbera
98 Services volumes slightly modified and material added following Pierluigi Barberis' information
99
100 Revision 1.4  2000/10/07 15:33:07  barbera
101 Small corrections to the ITSV mother volume
102
103 Revision 1.3  2000/10/07 13:06:50  barbera
104 Some new materials and media defined
105
106 Revision 1.2  2000/10/07 10:42:43  barbera
107 Mother volume ITSV corrected
108
109 Revision 1.1  2000/10/06 23:09:12  barbera
110 New  geometry (symmetric services
111
112 Revision 1.20  2000/10/02 21:28:08  fca
113 Removal of useless dependecies via forward declarations
114
115 Revision 1.19  2000/07/10 16:07:19  fca
116 Release version of ITS code
117
118 Revision 1.14.2.2  2000/05/19 10:09:21  nilsen
119 fix for bug with HP and Sun unix + fix for event display in ITS-working branch
120
121 Revision 1.14.2.1  2000/03/04 23:45:19  nilsen
122 Fixed up the comments/documentation.
123
124 Revision 1.14  1999/11/25 06:52:56  fca
125 Correct value of drca
126
127 Revision 1.13.2.1  1999/11/25 06:52:21  fca
128 Correct value of drca
129
130 Revision 1.13  1999/10/27 11:16:26  fca
131 Correction of problem in geometry
132
133 Revision 1.12  1999/10/22 08:25:25  fca
134 remove double definition of destructors
135
136 Revision 1.11  1999/10/22 08:16:49  fca
137 Correct destructors, thanks to I.Hrivnacova
138
139 Revision 1.10  1999/10/06 19:56:50  fca
140 Add destructor
141
142 Revision 1.9  1999/10/05 08:05:09  fca
143 Minor corrections for uninitialised variables.
144
145 Revision 1.8  1999/09/29 09:24:20  fca
146 Introduction of the Copyright and cvs Log
147
148 */
149
150 //////////////////////////////////////////////////////////////////////////////
151 //                                                                          //
152 //  Inner Traking System version PPR  symmetric                             //
153 //  This class contains the base procedures for the Inner Tracking System   //
154 //                                                                          //
155 // Authors: R. Barbera                                                      //
156 // version 6.                                                               //
157 // Created  2000.                                                           //
158 //                                                                          //
159 //  NOTE: THIS IS THE  SYMMETRIC PPR geometry of the ITS.                   //
160 // THIS WILL NOT WORK                                                       //
161 // with the geometry or module classes or any analysis classes. You are     //
162 // strongly encouraged to uses AliITSv5.                                    //
163 //                                                                          //
164 //////////////////////////////////////////////////////////////////////////////
165 // See AliITSvPPRsymm::StepManager().
166 #include <iostream.h>
167 #include <iomanip.h>
168 #include <stdio.h>
169 #include <stdlib.h>
170 #include <TMath.h>
171 #include <TGeometry.h>
172 #include <TNode.h>
173 #include <TTUBE.h>
174 #include <TFile.h>    // only required for Tracking function?
175 #include <TCanvas.h>
176 #include <TObjArray.h>
177 #include <TLorentzVector.h>
178 #include <TObjString.h>
179 #include <TClonesArray.h>
180 #include <TBRIK.h>
181 #include <TSystem.h>
182
183 #include "AliMC.h"
184 #include "AliRun.h"
185 #include "AliMagF.h"
186 #include "AliConst.h"
187 #include "../TGeant3/TGeant3.h"
188 #include "AliITSGeant3Geometry.h"
189 #include "AliITShit.h"
190 #include "AliITS.h"
191 #include "AliITSvPPRsymm.h"
192 #include "AliITSgeom.h"
193 #include "AliITSgeomSPD.h"
194 #include "AliITSgeomSDD.h"
195 #include "AliITSgeomSSD.h"
196 #include "AliITSDetType.h"
197 #include "AliITSresponseSPD.h"
198 #include "AliITSresponseSDD.h"
199 #include "AliITSresponseSSD.h"
200 #include "AliITSsegmentationSPD.h"
201 #include "AliITSsegmentationSDD.h"
202 #include "AliITSsegmentationSSD.h"
203 #include "AliITSClusterFinderSPD.h"
204 #include "AliITSClusterFinderSDD.h"
205 #include "AliITSClusterFinderSSD.h"
206
207
208 ClassImp(AliITSvPPRsymm)
209  
210 //_____________________________________________________________________________
211 AliITSvPPRsymm::AliITSvPPRsymm() {
212 ////////////////////////////////////////////////////////////////////////
213 //    Standard default constructor for the ITS version 9.
214 ////////////////////////////////////////////////////////////////////////
215     Int_t i;
216
217     fIdN       = 0;
218     fIdName    = 0;
219     fIdSens    = 0;
220     fEuclidOut    = kFALSE; // Don't write Euclide file
221     fGeomDetOut   = kFALSE; // Don't write .det file
222     fGeomDetIn    = kFALSE; // Don't Read .det file
223     fMajorVersion = IsVersion();
224     fMinorVersion = -1;
225     for(i=0;i<60;i++) fRead[i] = '\0';
226     for(i=0;i<60;i++) fWrite[i] = '\0';
227     for(i=0;i<60;i++) fEuclidGeomDet[i] = '\0';
228 }
229 //_____________________________________________________________________________
230 AliITSvPPRsymm::AliITSvPPRsymm(const char *name, const char *title) : AliITS(name, title){
231 ////////////////////////////////////////////////////////////////////////
232 //    Standard constructor for the ITS version 9.
233 ////////////////////////////////////////////////////////////////////////
234     Int_t i;
235
236     fIdN = 6;
237     fIdName = new TString[fIdN];
238     fIdName[0] = "ITS1";
239     fIdName[1] = "ITS2";
240     fIdName[2] = "ITS3";
241     fIdName[3] = "ITS4";
242     fIdName[4] = "ITS5";
243     fIdName[5] = "ITS6";
244     fIdSens    = new Int_t[fIdN];
245     for (i=0;i<fIdN;i++) fIdSens[i] = 0;
246     fMajorVersion = IsVersion();
247     fMinorVersion = 2;
248     fEuclidOut    = kFALSE; // Don't write Euclide file
249     fGeomDetOut   = kFALSE; // Don't write .det file
250     fGeomDetIn    = kFALSE; // Don't Read .det file
251     SetThicknessDet1();
252     SetThicknessDet2();
253     SetThicknessChip1();
254     SetThicknessChip2();                         
255
256     fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRsymm2.euc";
257     strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRsymm2.det",60);
258     strncpy(fRead,fEuclidGeomDet,60);
259     strncpy(fWrite,fEuclidGeomDet,60);   
260          
261 }
262 //____________________________________________________________________________
263 AliITSvPPRsymm::AliITSvPPRsymm(const AliITSvPPRsymm &source){
264 ////////////////////////////////////////////////////////////////////////
265 //     Copy Constructor for ITS version 9.
266 ////////////////////////////////////////////////////////////////////////
267     if(&source == this) return;
268     Warning("Copy Constructor","Not allowed to copy AliITSvPPRsymm");
269     return;
270 }
271 //_____________________________________________________________________________
272 AliITSvPPRsymm& AliITSvPPRsymm::operator=(const AliITSvPPRsymm &source){
273 ////////////////////////////////////////////////////////////////////////
274 //    Assignment operator for the ITS version 9.
275 ////////////////////////////////////////////////////////////////////////
276     if(&source == this) return *this;
277     Warning("= operator","Not allowed to copy AliITSvPPRsymm");
278     return *this;
279 }
280 //_____________________________________________________________________________
281 AliITSvPPRsymm::~AliITSvPPRsymm() {
282 ////////////////////////////////////////////////////////////////////////
283 //    Standard destructor for the ITS version 9.
284 ////////////////////////////////////////////////////////////////////////
285 }
286 //__________________________________________________________________________
287 void AliITSvPPRsymm::BuildGeometry(){
288 ////////////////////////////////////////////////////////////////////////
289 //    Geometry builder for the ITS version 9.
290 ////////////////////////////////////////////////////////////////////////
291     TNode *node, *top;
292     const int kColorITS=kYellow;
293     //
294     top = gAlice->GetGeometry()->GetNode("alice");
295
296     new TTUBE("S_layer1","Layer1 of ITS","void",3.95,3.95+0.05475,12.25);
297     top->cd();
298     node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
299     node->SetLineColor(kColorITS);
300     fNodes->Add(node);
301
302     new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+0.05475,16.3);
303     top->cd();
304     node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
305     node->SetLineColor(kColorITS);
306     fNodes->Add(node);
307
308     new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.05288,21.1);
309     top->cd();
310     node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
311     node->SetLineColor(kColorITS);
312     fNodes->Add(node);
313
314     new TTUBE("S_layer4","Layer4 of ITS","void",24,24+0.05288,29.6);
315     top->cd();
316     node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
317     node->SetLineColor(kColorITS);
318     fNodes->Add(node);
319
320     new TTUBE("S_layer5","Layer5 of ITS","void",40,40+0.05382,45.1);
321     top->cd();
322     node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
323     node->SetLineColor(kColorITS);
324     fNodes->Add(node);
325
326     new TTUBE("S_layer6","Layer6 of ITS","void",45,45+0.05382,50.4);
327     top->cd();
328     node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
329     node->SetLineColor(kColorITS);
330     fNodes->Add(node);
331 }
332 //_____________________________________________________________________________
333 void AliITSvPPRsymm::CreateGeometry(){
334 ////////////////////////////////////////////////////////////////////////
335 //    This routine defines and Creates the geometry for version 9 of the ITS.
336 ////////////////////////////////////////////////////////////////////////
337   
338   //INNER RADII OF THE SILICON LAYERS 
339   // Float_t rl[6]    = { 3.8095,7.,15.,24.,38.1,43.5765 };   
340   //THICKNESSES OF LAYERS (in % radiation length)
341   Float_t drl[6]   = { 1.03,1.03,0.94,0.95,0.91,0.87 };   
342   //HALF LENGTHS OF LAYERS  
343   // Float_t dzl[6]   = { 14.35,14.35,25.1,32.1,49.405,55.27 };
344   //LENGTHS OF END-LADDER BOXES (ALL INCLUDED)
345   // Float_t dzb[6]   = { 12.4,12.4,13.5,15.,7.5,7.5 };   
346   //THICKNESSES OF END-LADDER BOXES (ALL INCLUDED)
347   // Float_t drb[6]   = { rl[1]-rl[0],0.2,5.,5.,4.,4. };        
348
349  
350   Float_t dits[100], rlim, zmax;
351   // Float_t zpos;
352   // Float_t pcits[50]
353   Float_t ztpc;
354   Int_t idrotm[1999], i;
355   Float_t dgh[100];
356
357
358   // Define some variables for SPD
359
360   Float_t dits1[3], di101[3], di107[3], di10b[3], di106[3];  // for layer 1 
361   Float_t di103[3], di10a[3], di102[3];                      // for layer 1
362   Float_t dits2[3], di1d1[3], di1d7[3], di20b[3], di1d6[3];  // for layer 2
363   Float_t di1d3[3], di20a[3], di1d2[3];                      // for layer 2  
364   Float_t di108[3], di104[3];                                // for both layers  
365
366   Float_t ddet1=300.;     // total detector thickness on layer 1 (micron)
367   Float_t dchip1=300.;    // total chip thickness on layer 1 (micron)
368   
369   Float_t ddet2=300.;     // total detector thickness on layer 2 (micron)                         
370   Float_t dchip2=300.;    // total chip thickness on layer 2 (micron)
371   
372   Float_t dbus=200.;      // total bus thickness on both layers (micron)
373
374   ddet1 = GetThicknessDet1();
375   ddet2 = GetThicknessDet2();
376   dchip1 = GetThicknessChip1();
377   dchip2 = GetThicknessChip2();    
378
379   if(ddet1 < 100. || ddet1 > 300.) {
380      cout << "ITS - WARNING: the detector thickness for layer 1 is outside the range of [100,300] microns."
381           " The default value of 300 microns will be used." << endl;
382           ddet1=300.;
383   }
384   
385   if(ddet2 < 100. || ddet2 > 300.) {
386      cout << "ITS - WARNING: the detector thickness for layer 2 is outside the range of [100,300] microns."
387           " The default value of 300 microns will be used." << endl;
388           ddet2=300.;
389   }
390   
391   if(dchip1 < 150. || dchip1 > 300.) {
392      cout << "ITS - WARNING: the chip thickness for layer 1 is outside the range of [150,300] microns."
393           " The default value of 300 microns will be used." << endl;
394           dchip1=300.;
395   }
396   
397   if(dchip2 < 150. || dchip2 > 300.) {
398      cout << "ITS - WARNING: the chip thickness for layer 2 is outside the range of [150,300] microns."
399           " The default value of 300 microns will be used." << endl;
400           dchip2=300.;
401   }      
402
403   Int_t rails = 1;       // flag for rails (1 --> rails in; 0 --> rails out)
404   
405   Int_t fluid = 1;       // flag for the cooling fluid (1 --> water; 0 --> freon)
406
407   rails = GetRails();
408
409   fluid = GetCoolingFluid();
410
411   if(rails != 0 && rails != 1) {
412      cout << "ITS - WARNING: the switch for rails is not set neither to 0 (rails out) nor to 1 (rails in)." 
413      " The default value of 1 (rails in) will be used." << endl;
414         
415   }  
416   
417   if(fluid != 0 && fluid != 1) {
418      cout << "ITS - WARNING: the switch for cooling fluid is not set neither to 0 (freon) nor to 1 (water)." 
419      " The default value of 1 (water) will be used." << endl;  
420   }       
421    
422   cout << "ITS: Detector thickness on layer 1 is set to " << ddet1 << " microns." << endl;
423   cout << "ITS: Chip thickness on layer 1 is set to " << dchip1 << " microns." << endl;
424   cout << "ITS: Detector thickness on layer 2 is set to " << ddet2 << " microns." << endl;
425   cout << "ITS: Chip thickness on layer 2 is set to " << dchip2 << " microns." << endl;
426   if(rails == 0 ) {
427      cout << "ITS: Rails are out." << endl; 
428   } else {
429      cout << "ITS: Rails are in." << endl;
430   }   
431   if(fluid == 0 ) {
432      cout << "ITS: The cooling fluid is freon." << endl; 
433   } else {
434      cout << "ITS: The cooling fluid is water." << endl;
435   }   
436
437   ddet1  = ddet1*0.0001/2.; // conversion from tot length in um to half in cm
438   ddet2  = ddet2*0.0001/2.; // conversion from tot length in um to half in cm   
439   dchip1 = dchip1*0.0001/2.;// conversion from tot length in um to half in cm   
440   dchip2 = dchip2*0.0001/2.;// conversion from tot length in um to half in cm   
441   dbus   = dbus*0.0001/2.;  // conversion from tot length in um to half in cm       
442                 
443   Float_t deltax, deltay; 
444
445   Int_t thickness = fMinorVersion/10;
446   Int_t option    = fMinorVersion - 10*thickness;
447
448
449   // Define some variables for SDD
450
451
452   Float_t sin30, cos30;
453
454   // SDD electronics+services main volumes
455   Float_t I018dits[3], I024dits[3], I047dits[3], I048dits[3];
456
457   // SDD detector ladder
458
459   Float_t I302dits[3], I402dits[3], I004dits[3], I005dits[3];
460   Float_t Y_SDD_sep = 0.20;
461   Float_t ySDD;
462   Int_t   iSDD;
463   Float_t Z_SDD_lay3[6] = {18.55, 10.95, 3.70, -3.70, -11.20, -18.35};
464   Float_t Z_SDD_lay4[8] = {25.75, 18.60, 11.00, 3.70, -3.70, -11.20, -18.45, -26.05};
465
466   // ladder foot and end-ladder (frame and cooling)
467   Float_t I028dits[3], I420dits[3], I421dits[3], I422dits[6], I423dits[3];
468   Float_t I424dits[3], xI424, yI424;
469   Float_t I425dits[3];
470   Int_t    indI425;
471   Float_t I029dits[4], I030dits[4], I031dits[3], I032dits[3];
472
473   // SDD ladder frame and cooling
474   Float_t SDD_CoolPipe[3] = {1.7000, -0.5500, 0.0000};
475   Float_t I035dits[3], I037dits[3], I038dits[3];
476   Float_t I039dits[3], xI039, yI039;
477   Float_t I041dits[5];
478
479   // SDD hybrid, chips and capacitors
480   Float_t I050dits[3], xI050, yI050;
481   Float_t I052dits[3], xI052, yI052;
482   Float_t I042dits[3], xI042, yI042;
483   Float_t xI042space = 0.17;
484   Float_t I043dits[3], xI043, yI043;
485   Float_t xI043space = 0.17;
486   Float_t zchip, zChipSpace;
487   Float_t I051dits[3], xI051, yI051, zI051, yI051space, xcap;
488   Int_t     ichip, icap;
489
490   // SDD microcables
491   Float_t I044dits[4], xI044, yI044, volI044;
492   Float_t xHV, yHV, zHV, xLV, yLV, zLV;
493   Char_t   HVname[5], LVname[5];
494
495
496   // Define media off-set
497   
498   Int_t *idtmed = fIdtmed->GetArray()-199;
499
500   
501   // Rotation matrices
502   
503   // SPD - option 'a' (this is NOT the default so leave commented)
504   
505   
506   if (option == 1) {
507   
508      AliMatrix(idrotm[201],90.0,90.0,90.0,180.0,0.0,0.0);
509      AliMatrix(idrotm[202],90.0,90.0,90.0,0.0,0.0,0.0);
510      AliMatrix(idrotm[203],90.0,350.0,90.0,260.0,0.0,0.0);
511      AliMatrix(idrotm[204],90.0,170.0,90.0,80.0,0.0,0.0);
512      AliMatrix(idrotm[205],90.0,10.0,90.0,100.0,0.0,0.0);
513      AliMatrix(idrotm[206],90.0,190.0,90.0,280.0,0.0,0.0);
514      AliMatrix(idrotm[207],90.0,342.0,90.0,72.0,0.0,0.0);
515      AliMatrix(idrotm[208],90.0,156.999893,90.0,246.999893,0.0,0.0);
516      AliMatrix(idrotm[209],90.0,147.999802,90.0,237.999893,0.0,0.0);
517      AliMatrix(idrotm[210],90.0,138.999802,90.0,228.999802,0.0,0.0);
518      AliMatrix(idrotm[211],90.0,129.999802,90.0,219.999802,0.0,0.0);
519      AliMatrix(idrotm[212],90.0,36.7896,90.0,126.789597,0.0,0.0);
520      AliMatrix(idrotm[213],90.0,343.579712,90.0,73.579697,0.0,0.0);
521      AliMatrix(idrotm[214],90.0,95.413696,90.0,185.413696,0.0,0.0);
522      AliMatrix(idrotm[215],90.0,5.4141,90.0,95.414101,0.0,0.0);
523      AliMatrix(idrotm[216],90.0,318.296906,90.0,48.296902,0.0,0.0);
524      AliMatrix(idrotm[217],90.0,67.000099,90.0,157.000107,0.0,0.0);
525      AliMatrix(idrotm[218],90.0,337.003998,90.0,67.003998,0.0,0.0);
526      AliMatrix(idrotm[219],90.0,247.000305,90.0,337.000305,0.0,0.0);
527      AliMatrix(idrotm[220],90.0,305.633514,90.0,35.633499,0.0,0.0);
528      AliMatrix(idrotm[221],90.0,58.000198,90.0,148.000198,0.0,0.0);
529      AliMatrix(idrotm[222],90.0,327.997101,90.0,57.997101,0.0,0.0 );
530      AliMatrix(idrotm[223],90.0,237.994202,90.0,327.994202,0.0,0.0);
531      AliMatrix(idrotm[224],90.0,296.627502,90.0,26.627399,0.0,0.0);
532      AliMatrix(idrotm[225],90.0,48.994099,90.0,138.994095,0.0,0.0);
533      AliMatrix(idrotm[226],90.0,318.990997,90.0,48.991001,0.0,0.0);
534      AliMatrix(idrotm[227],90.0,228.988205,90.0,318.98819,0.0,0.0);
535      AliMatrix(idrotm[228],90.0,287.621399,90.0,17.621401,0.0,0.0);
536      AliMatrix(idrotm[229],90.0,39.988098,90.0,129.988098,0.0,0.0);
537      AliMatrix(idrotm[230],90.0,309.984985,90.0,39.985001,0.0,0.0);
538      AliMatrix(idrotm[231],90.0,327.2612,90.0,57.2612,0.0,0.0);
539      AliMatrix(idrotm[232],90.0,237.261398,90.0,327.261414,0.0,0.0);
540      AliMatrix(idrotm[233],90.0,252.000504,90.0,342.000488,0.0,0.0 );
541      AliMatrix(idrotm[234],90.0,71.9991,90.0,161.9991,0.0,0.0);
542      AliMatrix(idrotm[235],90.0,270.0,90.0,0.0,0.0,0.0);
543      AliMatrix(idrotm[236],90.0,180.013702,90.0,270.013702,0.0,0.0);
544      AliMatrix(idrotm[237],90.0,0.0,90.0,90.0,180.0,0.0);
545      AliMatrix(idrotm[238],90.0,144.0,90.0,234.0,0.0,0.0);
546      AliMatrix(idrotm[239],90.0,216.0,90.0,306.0,0.0,0.0);
547      AliMatrix(idrotm[240],90.0,288.0,90.0,18.0,0.0,0.0);
548      AliMatrix(idrotm[241],90.0,324.0,90.0,54.0,0.0,0.0);
549      AliMatrix(idrotm[242],90.0,36.0,90.0,126.0,0.0,0.0);
550      AliMatrix(idrotm[243],90.0,108.0,90.0,198.0,0.0,0.0);
551      AliMatrix(idrotm[244],90.0,0.0,90.0,270.0,180.0,0.0);
552      AliMatrix(idrotm[245],90.0,342.0,90.0,252.0,180.0,0.0);
553      AliMatrix(idrotm[246],90.0,130.0,90.0,40.0,180.0,0.0);
554      AliMatrix(idrotm[247],90.0,139.0,90.0,49.0,180.0,0.0);
555      AliMatrix(idrotm[248],90.0,148.0,90.0,58.0,180.0,0.0);
556      AliMatrix(idrotm[249],90.0,157.0,90.0,67.0,180.0,0.0);
557      AliMatrix(idrotm[1003],90.0,73.5,90.0,163.5,0.0,0.0);
558      AliMatrix(idrotm[1011],90.0,342.0,90.0,72.0,0.0,0.0);
559      AliMatrix(idrotm[1039],90.0,72.0,90.0,162.0,0.0,0.0);
560      AliMatrix(idrotm[1043],90.0,66.91,90.0,156.91,0.0,0.0);
561      AliMatrix(idrotm[1065],90.0,144.0,90.0,234.0,0.0,0.0);
562      AliMatrix(idrotm[1078],90.0,180.0,90.0,270.0,0.0,0.0);
563      AliMatrix(idrotm[1088],90.0,57.41,90.0,147.41,0.0,0.0);
564      AliMatrix(idrotm[1089],90.0,333.0,90.0,63.0,0.0,0.0);
565      AliMatrix(idrotm[1090],90.0,351.0,90.0,81.0,0.0,0.0);
566      AliMatrix(idrotm[1091],90.0,216.0,90.0,306.0,0.0,0.0);
567      AliMatrix(idrotm[1092],90.0,27.0,90.0,117.0,0.0,0.0);
568      AliMatrix(idrotm[1093],90.0,18.0,90.0,108.0,0.0,0.0);
569      AliMatrix(idrotm[1094],90.0,9.0,90.0,99.0,0.0,0.0);
570      AliMatrix(idrotm[1104],90.0,252.0,90.0,342.0,0.0,0.0);
571      AliMatrix(idrotm[1106],90.0,36.0,90.0,126.0,0.0,0.0);
572      AliMatrix(idrotm[1107],90.0,108.0,90.0,198.0,0.0,0.0);
573      AliMatrix(idrotm[1108],90.0,324.0,90.0,54.0,180.0,0.0);
574      AliMatrix(idrotm[1109],90.0,0.0,90.0,90.0,180.0,0.0);
575      AliMatrix(idrotm[1110],90.0,36.0,90.0,126.0,180.0,0.0);
576      AliMatrix(idrotm[1111],90.0,72.0,90.0,162.0,180.0,0.0);
577      AliMatrix(idrotm[1112],90.0,108.0,90.0,198.0,180.0,0.0);
578      AliMatrix(idrotm[1113],90.0,144.0,90.0,234.0,180.0,0.0);
579      AliMatrix(idrotm[1114],90.0,180.0,90.0,270.0,180.0,0.0);
580      AliMatrix(idrotm[1115],90.0,216.0,90.0,306.0,180.0,0.0);
581      AliMatrix(idrotm[1116],90.0,252.0,90.0,342.0,180.0,0.0);
582      AliMatrix(idrotm[1117],90.0,288.0,90.0,18.0,0.0,0.0);
583      AliMatrix(idrotm[1118],90.0,288.0,90.0,18.0,180.0,0.0);
584      AliMatrix(idrotm[1130],90.0,324.0,90.0,54.0,0.0,0.0);  
585
586   }
587   
588   // SPD - option 'b' (this is the default)  
589     
590   if (option == 2) {
591
592      AliMatrix(idrotm[201],90.0,0.0,90.0,90.0,180.0,0.0);
593      AliMatrix(idrotm[202],90.0,90.0,90.0,0.0,0.0,0.0);
594      AliMatrix(idrotm[203],90.0,350.0,90.0,260.0,0.0,0.0);
595      AliMatrix(idrotm[204],90.0,170.0,90.0,80.0,0.0,0.0);
596      AliMatrix(idrotm[205],90.0,10.0,90.0,100.0,0.0,0.0);
597      AliMatrix(idrotm[206],90.0,190.0,90.0,280.0,0.0,0.0);
598      AliMatrix(idrotm[207],90.0,342.0,90.0,72.0,0.0,0.0);
599      AliMatrix(idrotm[208],90.0,156.999893,90.0,246.999893,0.0,0.0);
600      AliMatrix(idrotm[209],90.0,147.999802,90.0,237.999893,0.0,0.0);
601      AliMatrix(idrotm[210],90.0,138.999802,90.0,228.999802,0.0,0.0);
602      AliMatrix(idrotm[211],90.0,129.999802,90.0,219.999802,0.0,0.0);
603      AliMatrix(idrotm[212],90.0,36.7896,90.0,126.789597,0.0,0.0);
604      AliMatrix(idrotm[213],90.0,343.579712,90.0,73.579697,0.0,0.0);
605      AliMatrix(idrotm[214],90.0,95.413696,90.0,185.413696,0.0,0.0);
606      AliMatrix(idrotm[215],90.0,5.4141,90.0,95.414101,0.0,0.0);
607      AliMatrix(idrotm[216],90.0,318.296906,90.0,48.296902,0.0,0.0);
608      AliMatrix(idrotm[217],90.0,67.000099,90.0,157.000107,0.0,0.0);
609      AliMatrix(idrotm[218],90.0,337.003998,90.0,67.003998,0.0,0.0);
610      AliMatrix(idrotm[219],90.0,247.000305,90.0,337.000305,0.0,0.0);
611      AliMatrix(idrotm[220],90.0,305.633514,90.0,35.633499,0.0,0.0);
612      AliMatrix(idrotm[221],90.0,58.000198,90.0,148.000198,0.0,0.0);
613      AliMatrix(idrotm[222],90.0,327.997101,90.0,57.997101,0.0,0.0);
614      AliMatrix(idrotm[223],90.0,237.994202,90.0,327.994202,0.0,0.0);
615      AliMatrix(idrotm[224],90.0,296.627502,90.0,26.627399,0.0,0.0);
616      AliMatrix(idrotm[225],90.0,48.994099,90.0,138.994095,0.0,0.0);
617      AliMatrix(idrotm[226],90.0,318.990997,90.0,48.991001,0.0,0.0);
618      AliMatrix(idrotm[227],90.0,228.988205,90.0,318.98819,0.0,0.0);
619      AliMatrix(idrotm[228],90.0,287.621399,90.0,17.621401,0.0,0.0);
620      AliMatrix(idrotm[229],90.0,39.988098,90.0,129.988098,0.0,0.0);
621      AliMatrix(idrotm[230],90.0,309.984985,90.0,39.985001,0.0,0.0);
622      AliMatrix(idrotm[231],90.0,327.2612,90.0,57.2612,0.0,0.0);
623      AliMatrix(idrotm[232],90.0,237.261398,90.0,327.261414,0.0,0.0);
624      AliMatrix(idrotm[233],90.0,252.000504,90.0,342.000488,0.0,0.0);
625      AliMatrix(idrotm[234],90.0,71.9991,90.0,161.9991,0.0,0.0);
626      AliMatrix(idrotm[235],90.0,270.0,90.0,0.0,0.0,0.0);
627      AliMatrix(idrotm[236],90.0,180.013702,90.0,270.013702,0.0,0.0);
628      AliMatrix(idrotm[237],90.0,90.0,90.0,180.0,0.0,0.0);
629      AliMatrix(idrotm[238],90.0,0.0,90.0,270.0,180.0,0.0);
630      AliMatrix(idrotm[239],90.0,342.0,90.0,252.0,180.0,0.0);
631      AliMatrix(idrotm[240],90.0,130.0,90.0,40.0,180.0,0.0);
632      AliMatrix(idrotm[241],90.0,139.0,90.0,49.0,180.0,0.0);
633      AliMatrix(idrotm[242],90.0,148.0,90.0,58.0,180.0,0.0);
634      AliMatrix(idrotm[243],90.0,157.0,90.0,67.0,180.0,0.0);
635      AliMatrix(idrotm[244],90.0,216.0,90.0,306.0,0.0,0.0);
636      AliMatrix(idrotm[245],90.0,36.0,90.0,126.0,0.0,0.0);
637      AliMatrix(idrotm[246],90.0,108.0,90.0,198.0,0.0,0.0);
638      AliMatrix(idrotm[247],90.0,144.0,90.0,234.0,0.0,0.0);
639      AliMatrix(idrotm[248],90.0,288.0,90.0,18.0,0.0,0.0);
640      AliMatrix(idrotm[249],90.0,324.0,90.0,54.0,0.0,0.0);  
641      AliMatrix(idrotm[1003],90.0,73.5,90.0,163.5,0.0,0.0);
642      AliMatrix(idrotm[1011],90.0,342.0,90.0,72.0,0.0,0.0);
643      AliMatrix(idrotm[1039],90.0,72.0,90.0,162.0,0.0,0.0);
644      AliMatrix(idrotm[1043],90.0,66.91,90.0,156.91,0.0,0.0);
645      AliMatrix(idrotm[1065],90.0,144.0,90.0,234.0,0.0,0.0);
646      AliMatrix(idrotm[1078],90.0,180.0,90.0,270.0,0.0,0.0);
647      AliMatrix(idrotm[1088],90.0,57.41,90.0,147.41,0.0,0.0);
648      AliMatrix(idrotm[1089],90.0,333.0,90.0,63.0,0.0,0.0);
649      AliMatrix(idrotm[1090],90.0,351.0,90.0,81.0,0.0,0.0);
650      AliMatrix(idrotm[1091],90.0,216.0,90.0,306.0,0.0,0.0);
651      AliMatrix(idrotm[1092],90.0,27.0,90.0,117.0,0.0,0.0);
652      AliMatrix(idrotm[1093],90.0,18.0,90.0,108.0,0.0,0.0);
653      AliMatrix(idrotm[1094],90.0,9.0,90.0,99.0,0.0,0.0);
654      AliMatrix(idrotm[1104],90.0,252.0,90.0,342.0,0.0,0.0);
655      AliMatrix(idrotm[1106],90.0,36.0,90.0,126.0,0.0,0.0);
656      AliMatrix(idrotm[1107],90.0,108.0,90.0,198.0,0.0,0.0);
657      AliMatrix(idrotm[1108],90.0,324.0,90.0,54.0,180.0,0.0);
658      AliMatrix(idrotm[1109],90.0,0.0,90.0,90.0,180.0,0.0);
659      AliMatrix(idrotm[1110],90.0,36.0,90.0,126.0,180.0,0.0);
660      AliMatrix(idrotm[1111],90.0,72.0,90.0,162.0,180.0,0.0);
661      AliMatrix(idrotm[1112],90.0,108.0,90.0,198.0,180.0,0.0);
662      AliMatrix(idrotm[1113],90.0,144.0,90.0,234.0,180.0,0.0);
663      AliMatrix(idrotm[1114],90.0,180.0,90.0,270.0,180.0,0.0);
664      AliMatrix(idrotm[1115],90.0,216.0,90.0,306.0,180.0,0.0);
665      AliMatrix(idrotm[1116],90.0,252.0,90.0,342.0,180.0,0.0);
666      AliMatrix(idrotm[1117],90.0,288.0,90.0,18.0,0.0,0.0);
667      AliMatrix(idrotm[1118],90.0,288.0,90.0,18.0,180.0,0.0);
668      AliMatrix(idrotm[1130],90.0,324.0,90.0,54.0,0.0,0.0);  
669
670   }
671     
672   // SDD
673   
674   AliMatrix(idrotm[301],0.0,0.0,90.0,90.0,90.0,180.0);  
675   AliMatrix(idrotm[302],0.0,0.0,90.0,90.0,90.0,0.0);
676   AliMatrix(idrotm[303],180.0,0.0,90.0,90.0,90.0,0.0); 
677   AliMatrix(idrotm[304],180.0,0.0,90.0,90.0,90.0,180.0); 
678   AliMatrix(idrotm[305],90.0,347.14,90.0,77.14,0.0,0.0); 
679   AliMatrix(idrotm[306],90.0,321.43,90.0,51.43,0.0,0.0); 
680   AliMatrix(idrotm[307],90.0,295.71,90.0,25.71,0.0,0.0);
681   AliMatrix(idrotm[308],90.0,244.29,90.0,334.29,0.0,0.0);
682   AliMatrix(idrotm[309],90.0,218.57,90.0,308.57,0.0,0.0);
683   AliMatrix(idrotm[310],90.0,167.14,90.0,257.14,0.0,0.0);
684   AliMatrix(idrotm[311],90.0,141.43,90.0,231.43,0.0,0.0);  
685   AliMatrix(idrotm[312],90.0,0.0,0.0,0.0,90.0,270.0);
686   AliMatrix(idrotm[313],90.0,115.71,90.0,205.71,0.0,0.0); 
687   AliMatrix(idrotm[314],90.0,335.45,90.0,65.45,0.0,0.0); 
688   AliMatrix(idrotm[315],90.0,319.09,90.0,49.09,0.0,0.0); 
689   AliMatrix(idrotm[316],90.0,302.73,90.0,32.73,0.0,0.0); 
690   AliMatrix(idrotm[317],90.0,286.36,90.0,16.36,0.0,0.0);
691   AliMatrix(idrotm[318],90.0,270.0,90.0,360.0,0.0,0.0);
692   AliMatrix(idrotm[319],90.0,253.64,90.0,343.64,0.0,0.0);
693   AliMatrix(idrotm[320],90.0,237.27,90.0,327.27,0.0,0.0);
694   AliMatrix(idrotm[321],90.0,12.86,90.0,102.86,0.0,0.0);  
695   AliMatrix(idrotm[322],90.0,220.91,90.0,310.91,0.0,0.0);
696   AliMatrix(idrotm[323],90.0,204.55,90.0,294.55,0.0,0.0); 
697   AliMatrix(idrotm[324],90.0,188.18,90.0,278.18,0.0,0.0); 
698   AliMatrix(idrotm[325],90.0,171.82,90.0,261.82,0.0,0.0); 
699   AliMatrix(idrotm[326],90.0,155.45,90.0,245.45,0.0,0.0); 
700   AliMatrix(idrotm[327],90.0,139.09,90.0,229.09,0.0,0.0);
701   AliMatrix(idrotm[328],90.0,122.73,90.0,212.73,0.0,0.0);
702   AliMatrix(idrotm[329],90.0,106.36,90.0,196.36,0.0,0.0);
703   AliMatrix(idrotm[330],90.0,73.64,90.0,163.64,0.0,0.0);    
704   AliMatrix(idrotm[331],90.0,40.91,90.0,130.91,0.0,0.0);  
705   AliMatrix(idrotm[332],90.0,24.55,90.0,114.55,0.0,0.0);
706   AliMatrix(idrotm[333],90.0,38.57,90.0,128.57,0.0,0.0); 
707   AliMatrix(idrotm[334],90.0,351.82,90.0,81.82,0.0,0.0); 
708   AliMatrix(idrotm[335],90.0,8.18,90.0,98.18,0.0,0.0); 
709   AliMatrix(idrotm[336],90.0,64.29,90.0,154.29,0.0,0.0); 
710   AliMatrix(idrotm[337],111.0,300.0,21.0,300.0,90.0,30.0);
711   AliMatrix(idrotm[338],69.0,240.0,159.0,240.0,90.0,150.0);
712   AliMatrix(idrotm[339],111.0,240.0,21.0,240.0,90.0,150.0);
713   AliMatrix(idrotm[340],69.0,300.0,159.0,300.0,90.0,30.0);  
714   AliMatrix(idrotm[341],128.0,0.0,38.0,0.0,90.0,270.0);  
715   AliMatrix(idrotm[342],90.0,240.0,180.0,0.0,90.0,330.);
716   AliMatrix(idrotm[343],90.0,120.0,180.0,0.0,90.0,210.0); 
717   AliMatrix(idrotm[344],90.0,0.0,180.0,0.0,90.0,90.0); 
718   AliMatrix(idrotm[345],90.0,180.0,90.0,90.0,0.0,0.0); 
719   AliMatrix(idrotm[346],90.0,300.0,90.0,30.0,0.0,0.0); 
720   AliMatrix(idrotm[347],90.0,240.0,90.0,150.0,0.0,0.0);
721   AliMatrix(idrotm[348],90.0,180.0,0.0,0.0,90.0,270.0);
722   AliMatrix(idrotm[349],90.0,235.0,90.0,145.0,0.0,0.0);
723   AliMatrix(idrotm[350],90.0,90.0,90.0,180.0,0.0,0.0);  
724   AliMatrix(idrotm[351],90.0,305.0,90.0,35.0,0.0,0.0);  
725   AliMatrix(idrotm[352],0.0,0.0,90.0,0.0,90.0,90.0);
726   AliMatrix(idrotm[353],90.0,60.0,90.0,150.0,0.0,0.0); 
727   AliMatrix(idrotm[354],90.0,120.0,90.0,30.0,0.0,0.0); 
728   AliMatrix(idrotm[355],90.0,180.0,90.0,90.0,180.0,0.0); 
729   AliMatrix(idrotm[356],90.0,270.0,90.0,0.0,0.0,0.0); 
730   AliMatrix(idrotm[366],90.0,57.27,90.0,147.27,0.0,0.0); 
731   AliMatrix(idrotm[386],90.0,192.86,90.0,282.86,0.0,0.0);  
732    
733   // SSD
734   
735   AliMatrix(idrotm[501],90.0,148.24,90.0,238.24,0.0,0.0);
736   AliMatrix(idrotm[503],90.0,137.65,90.0,227.65,0.0,0.0); 
737   AliMatrix(idrotm[504],90.0,127.06,90.0,217.06,0.0,0.0);  
738   AliMatrix(idrotm[505],90.0,116.47,90.0,206.47,0.0,0.0);  
739   AliMatrix(idrotm[506],90.0,105.88,90.0,195.88,0.0,0.0);  
740   AliMatrix(idrotm[507],90.0,95.29,90.0,185.29,0.0,0.0);  
741   AliMatrix(idrotm[508],90.0,84.71,90.0,174.71,0.0,0.0);
742   AliMatrix(idrotm[509],90.0,74.12,90.0,164.12,0.0,0.0);
743   AliMatrix(idrotm[510],90.0,63.53,90.0,153.53,0.0,0.0);  
744   AliMatrix(idrotm[511],90.0,52.94,90.0,142.94,0.0,0.0);
745   AliMatrix(idrotm[512],90.0,42.35,90.0,132.35,0.0,0.0);
746   AliMatrix(idrotm[513],90.0,31.76,90.0,121.76,0.0,0.0); 
747   AliMatrix(idrotm[514],90.0,10.59,90.0,100.59,0.0,0.0);  
748   AliMatrix(idrotm[515],90.0,349.41,90.0,79.41,0.0,0.0);  
749   AliMatrix(idrotm[516],90.0,338.82,90.0,68.82,0.0,0.0);  
750   AliMatrix(idrotm[517],90.0,328.24,90.0,58.24,0.0,0.0);  
751   AliMatrix(idrotm[518],90.0,317.65,90.0,47.65,0.0,0.0);
752   AliMatrix(idrotm[519],90.0,307.06,90.0,37.06,0.0,0.0);
753   AliMatrix(idrotm[520],90.0,296.47,90.0,26.47,0.0,0.0);  
754   AliMatrix(idrotm[521],90.0,285.88,90.0,15.88,0.0,0.0);
755   AliMatrix(idrotm[522],90.0,275.29,90.0,5.29,0.0,0.0);
756   AliMatrix(idrotm[523],90.0,264.71,90.0,354.71,0.0,0.0); 
757   AliMatrix(idrotm[524],90.0,254.12,90.0,344.12,0.0,0.0);  
758   AliMatrix(idrotm[525],90.0,243.53,90.0,333.53,0.0,0.0);  
759   AliMatrix(idrotm[526],90.0,232.94,90.0,322.94,0.0,0.0);  
760   AliMatrix(idrotm[527],90.0,222.35,90.0,312.35,0.0,0.0);  
761   AliMatrix(idrotm[528],90.0,211.76,90.0,301.76,0.0,0.0);
762   AliMatrix(idrotm[529],90.0,190.59,90.0,280.59,0.0,0.0);
763   AliMatrix(idrotm[530],90.0,169.41,90.0,259.41,0.0,0.0);  
764   AliMatrix(idrotm[531],90.0,158.82,90.0,248.82,0.0,0.0);
765   AliMatrix(idrotm[532],90.0,360.0,90.0,90.0,0.0,0.0);
766   AliMatrix(idrotm[533],90.0,180.0,90.0,270.0,0.0,0.0); 
767   AliMatrix(idrotm[534],90.0,189.47,90.0,279.47,0.0,0.0);  
768   AliMatrix(idrotm[535],90.0,198.95,90.0,288.95,0.0,0.0);  
769   AliMatrix(idrotm[537],90.0,217.89,90.0,307.89,0.0,0.0);  
770   AliMatrix(idrotm[538],90.0,227.37,90.0,317.37,0.0,0.0);
771   AliMatrix(idrotm[539],90.0,236.84,90.0,326.84,0.0,0.0);
772   AliMatrix(idrotm[540],90.0,246.32,90.0,336.32,0.0,0.0);  
773   AliMatrix(idrotm[541],90.0,255.79,90.0,345.79,0.0,0.0);
774   AliMatrix(idrotm[542],90.0,265.26,90.0,355.26,0.0,0.0);
775   AliMatrix(idrotm[543],90.0,274.74,90.0,4.74,0.0,0.0); 
776   AliMatrix(idrotm[544],90.0,284.21,90.0,14.21,0.0,0.0);  
777   AliMatrix(idrotm[545],90.0,293.68,90.0,23.68,0.0,0.0);  
778   AliMatrix(idrotm[546],90.0,303.16,90.0,33.16,0.0,0.0);  
779   AliMatrix(idrotm[547],90.0,312.63,90.0,42.63,0.0,0.0);  
780   AliMatrix(idrotm[548],90.0,322.11,90.0,52.11,0.0,0.0);
781   AliMatrix(idrotm[549],90.0,331.58,90.0,61.58,0.0,0.0);
782   AliMatrix(idrotm[550],90.0,341.05,90.0,71.05,0.0,0.0);  
783   AliMatrix(idrotm[551],90.0,350.53,90.0,80.53,0.0,0.0);
784   AliMatrix(idrotm[552],90.0,9.47,90.0,99.47,0.0,0.0);
785   AliMatrix(idrotm[553],90.0,18.95,90.0,108.95,0.0,0.0); 
786   AliMatrix(idrotm[555],90.0,37.89,90.0,127.89,0.0,0.0);  
787   AliMatrix(idrotm[556],90.0,47.37,90.0,137.37,0.0,0.0);  
788   AliMatrix(idrotm[557],90.0,56.84,90.0,146.84,0.0,0.0);  
789   AliMatrix(idrotm[558],90.0,66.32,90.0,156.32,0.0,0.0);
790   AliMatrix(idrotm[559],90.0,75.79,90.0,165.79,0.0,0.0);
791   AliMatrix(idrotm[560],90.0,85.26,90.0,175.26,0.0,0.0);  
792   AliMatrix(idrotm[561],90.0,94.74,90.0,184.74,0.0,0.0);
793   AliMatrix(idrotm[562],90.0,104.21,90.0,194.21,0.0,0.0);
794   AliMatrix(idrotm[563],90.0,113.68,90.0,203.68,0.0,0.0); 
795   AliMatrix(idrotm[564],90.0,123.16,90.0,213.16,0.0,0.0);  
796   AliMatrix(idrotm[565],90.0,132.63,90.0,222.63,0.0,0.0);  
797   AliMatrix(idrotm[566],90.0,142.11,90.0,232.11,0.0,0.0);  
798   AliMatrix(idrotm[567],90.0,151.58,90.0,241.58,0.0,0.0);  
799   AliMatrix(idrotm[568],90.0,161.05,90.0,251.05,0.0,0.0);
800   AliMatrix(idrotm[569],90.0,170.53,90.0,260.53,0.0,0.0);
801   AliMatrix(idrotm[570],90.0,180.0,90.0,90.0,180.0,0.0);  
802   AliMatrix(idrotm[571],90.0,0.0,0.0,0.0,90.0,270.0);
803   AliMatrix(idrotm[572],90.0,180.0,0.0,0.0,90.0,270.0);
804   AliMatrix(idrotm[573],90.0,180.0,90.0,90.0,0.0,0.0); 
805   AliMatrix(idrotm[575],90.0,120.0,180.0,0.0,90.0,210.0);  
806   AliMatrix(idrotm[576],65.71,300.0,90.0,30.0,24.29,120.0);  
807   AliMatrix(idrotm[577],114.29,300.0,90.0,30.0,155.71,120.0);  
808   AliMatrix(idrotm[579],65.71,240.0,90.0,150.0,24.29,60.0);
809   AliMatrix(idrotm[580],114.29,240.0,90.0,150.0,155.71,60.0);  
810   AliMatrix(idrotm[581],90.0,240.0,180.0,0.0,90.0,330.0);
811   AliMatrix(idrotm[583],90.0,0.0,180.0,0.0,90.0,90.0); 
812   AliMatrix(idrotm[584],90.0,180.0,180.0,0.0,90.0,90.0);  
813   AliMatrix(idrotm[586],180.0,0.0,90.0,90.0,90.0,0.0);  
814   AliMatrix(idrotm[618],90.0,201.18,90.0,291.18,0.0,0.0);
815   AliMatrix(idrotm[620],90.0,28.42,90.0,118.42,0.0,0.0);  
816   AliMatrix(idrotm[623],90.0,208.42,90.0,298.42,0.0,0.0);
817   AliMatrix(idrotm[633],132.46,0.0,90.0,90.0,42.46,360.0);
818   AliMatrix(idrotm[653],90.0,21.18,90.0,111.18,0.0,0.0); 
819
820   
821   // SDD cone
822
823   AliMatrix(idrotm[846],90.0,300.0,90.0,30.0,0.0,0.0);
824   AliMatrix(idrotm[851],90.0,305.0,90.0,35.0,0.0,0.0);
825   AliMatrix(idrotm[853],90.0,60.0,90.0,150.0,0.0,0.0);
826   AliMatrix(idrotm[856],90.0,0.0,90.0,90.0,180.0,0.0);
827   AliMatrix(idrotm[857],90.0,5.0,90.0,95.0,180.0,0.0);
828   AliMatrix(idrotm[858],90.0,65.0,90.0,155.0,180.0,0.0);
829   AliMatrix(idrotm[859],90.0,305.0,90.0,35.0,180.0,0.0);
830   AliMatrix(idrotm[860],90.0,245.0,90.0,335.0,180.0,0.0);
831   AliMatrix(idrotm[861],90.0,185.0,90.0,275.0,180.0,0.0);
832   AliMatrix(idrotm[862],90.0,125.0,90.0,215.0,180.0,0.0);
833   AliMatrix(idrotm[863],90.0,257.5,90.0,347.5,180.0,0.0);
834   AliMatrix(idrotm[864],90.0,227.5,90.0,317.5,180.0,0.0);
835   AliMatrix(idrotm[865],90.0,197.5,90.0,287.5,180.0,0.0);
836   AliMatrix(idrotm[867],90.0,167.5,90.0,257.5,180.0,0.0);
837   AliMatrix(idrotm[868],90.0,287.5,90.0,17.5,0.0,0.0);  
838   AliMatrix(idrotm[869],90.0,137.5,90.0,227.5,180.0,0.0);
839   AliMatrix(idrotm[870],90.0,107.5,90.0,197.5,180.0,0.0);
840   AliMatrix(idrotm[871],90.0,77.5,90.0,167.5,180.0,0.0);
841   AliMatrix(idrotm[872],90.0,47.5,90.0,137.5,180.0,0.0);
842   AliMatrix(idrotm[873],90.0,17.5,90.0,107.5,180.0,0.0);
843   AliMatrix(idrotm[874],90.0,347.5,90.0,77.5,180.0,0.0);
844   AliMatrix(idrotm[875],90.0,317.5,90.0,47.5,180.0,0.0);
845   AliMatrix(idrotm[876],90.0,287.5,90.0,17.5,180.0,0.0);
846   AliMatrix(idrotm[877],90.0,185.0,90.0,275.0,0.0,0.0);
847   AliMatrix(idrotm[878],90.0,180.0,90.0,270.0,0.0,0.0);  
848   AliMatrix(idrotm[879],90.0,125.0,90.0,215.0,0.0,0.0);
849   AliMatrix(idrotm[880],90.0,65.0,90.0,155.0,0.0,0.0);
850   AliMatrix(idrotm[881],90.0,5.0,90.0,95.0,0.0,0.0);
851   AliMatrix(idrotm[882],90.0,245.0,90.0,335.0,0.0,0.0);
852   AliMatrix(idrotm[883],90.0,47.5,90.0,137.5,0.0,0.0);
853   AliMatrix(idrotm[884],90.0,77.5,90.0,167.5,0.0,0.0);
854   AliMatrix(idrotm[885],90.0,107.5,90.0,197.5,0.0,0.0);
855   AliMatrix(idrotm[887],90.0,137.5,90.0,227.5,0.0,0.0);
856   AliMatrix(idrotm[888],90.0,167.5,90.0,257.5,0.0,0.0);
857   AliMatrix(idrotm[889],90.0,197.5,90.0,287.5,0.0,0.0);
858   AliMatrix(idrotm[890],90.0,227.5,90.0,317.5,0.0,0.0);
859   AliMatrix(idrotm[891],90.0,347.5,90.0,77.5,0.0,0.0);
860   AliMatrix(idrotm[892],90.0,317.5,90.0,47.5,0.0,0.0);
861   AliMatrix(idrotm[893],90.0,257.5,90.0,347.5,0.0,0.0);
862   AliMatrix(idrotm[894],90.0,270.0,0.0,0.0,90.0,180.0);
863   AliMatrix(idrotm[895],90.0,286.36,0.0,0.0,90.0,196.36);
864   AliMatrix(idrotm[896],90.0,302.73,0.0,0.0,90.0,212.73);
865   AliMatrix(idrotm[897],90.0,319.09,0.0,0.0,90.0,229.09);
866   AliMatrix(idrotm[898],90.0,17.5,90.0,107.5,0.0,0.0);
867   AliMatrix(idrotm[899],90.0,335.45,0.0,0.0,90.0,245.45);
868   AliMatrix(idrotm[900],90.0,351.82,0.0,0.0,90.0,261.82);
869   AliMatrix(idrotm[901],90.0,8.18,0.0,0.0,90.0,278.18);
870   AliMatrix(idrotm[902],90.0,24.55,0.0,0.0,90.0,294.55);
871   AliMatrix(idrotm[903],90.0,40.91,0.0,0.0,90.0,310.91);
872   AliMatrix(idrotm[904],90.0,57.27,0.0,0.0,90.0,327.27);
873   AliMatrix(idrotm[905],90.0,73.64,0.0,0.0,90.0,343.64);
874   AliMatrix(idrotm[906],90.0,90.0,0.0,0.0,90.0,360.0);
875   AliMatrix(idrotm[907],90.0,106.36,0.0,0.0,90.0,16.36);
876   AliMatrix(idrotm[908],90.0,122.73,0.0,0.0,90.0,32.73);
877   AliMatrix(idrotm[909],90.0,139.09,0.0,0.0,90.0,49.09);
878   AliMatrix(idrotm[910],90.0,155.45,0.0,0.0,90.0,65.45);
879   AliMatrix(idrotm[911],90.0,171.82,0.0,0.0,90.0,81.82);
880   AliMatrix(idrotm[912],90.0,188.18,0.0,0.0,90.0,98.18);
881   AliMatrix(idrotm[913],90.0,204.55,0.0,0.0,90.0,114.55);
882   AliMatrix(idrotm[914],90.0,220.91,0.0,0.0,90.0,130.91);
883   AliMatrix(idrotm[915],90.0,237.27,0.0,0.0,90.0,147.27);
884   AliMatrix(idrotm[916],90.0,253.64,0.0,0.0,90.0,163.64);
885   AliMatrix(idrotm[917],90.0,295.71,0.0,0.0,90.0,205.71);
886   AliMatrix(idrotm[918],90.0,321.43,0.0,0.0,90.0,231.43);
887   AliMatrix(idrotm[919],90.0,347.14,0.0,0.0,90.0,257.14);
888   AliMatrix(idrotm[920],90.0,12.86,0.0,0.0,90.0,282.86);
889   AliMatrix(idrotm[921],90.0,38.57,0.0,0.0,90.0,308.57);
890   AliMatrix(idrotm[922],90.0,64.29,0.0,0.0,90.0,334.29);
891   AliMatrix(idrotm[923],90.0,115.71,0.0,0.0,90.0,25.71);
892   AliMatrix(idrotm[924],90.0,141.43,0.0,0.0,90.0,51.43);
893   AliMatrix(idrotm[925],90.0,167.14,0.0,0.0,90.0,77.14);
894   AliMatrix(idrotm[926],90.0,192.86,0.0,0.0,90.0,102.86);
895   AliMatrix(idrotm[927],90.0,218.57,0.0,0.0,90.0,128.57);
896   AliMatrix(idrotm[928],90.0,244.29,0.0,0.0,90.0,154.29);
897   AliMatrix(idrotm[929],90.0,120.0,90.0,210.0,0.0,0.0);
898   AliMatrix(idrotm[930],90.0,240.0,90.0,330.0,0.0,0.0);
899   AliMatrix(idrotm[931],90.0,60.0,90.0,150.0,180.0,0.0);
900   AliMatrix(idrotm[932],90.0,120.0,90.0,210.0,180.0,0.0);
901   AliMatrix(idrotm[933],90.0,180.0,90.0,270.0,180.0,0.0);
902   AliMatrix(idrotm[934],90.0,240.0,90.0,330.0,180.0,0.0);
903   AliMatrix(idrotm[935],90.0,300.0,90.0,30.0,180.0,0.0);
904
905   // SSD cone
906
907   AliMatrix(idrotm[701],90.0,0.0,90.0,90.0,180.0,0.0);
908   AliMatrix(idrotm[702],90.0,347.5,90.0,77.5,180.0,0.0);
909   AliMatrix(idrotm[703],90.0,17.5,90.0,107.5,180.0,0.0);
910   AliMatrix(idrotm[704],90.0,47.5,90.0,137.5,180.0,0.0);
911   AliMatrix(idrotm[705],90.0,77.5,90.0,167.5,180.0,0.0);
912   AliMatrix(idrotm[706],90.0,107.5,90.0,197.5,180.0,0.0);
913   AliMatrix(idrotm[707],90.0,137.5,90.0,227.5,180.0,0.0);
914   AliMatrix(idrotm[708],90.0,167.5,90.0,257.5,180.0,0.0);
915   AliMatrix(idrotm[709],90.0,197.5,90.0,287.5,180.0,0.0);
916   AliMatrix(idrotm[710],90.0,227.5,90.0,317.5,180.0,0.0);
917   AliMatrix(idrotm[711],90.0,257.5,90.0,347.5,180.0,0.0);
918   AliMatrix(idrotm[712],90.0,287.5,90.0,17.5,180.0,0.0);
919   AliMatrix(idrotm[713],90.0,317.5,90.0,47.5,180.0,0.0);
920   AliMatrix(idrotm[714],90.0,328.4,90.0,58.4,180.0,0.0);
921   AliMatrix(idrotm[715],90.0,28.4,90.0,118.4,180.0,0.0);
922   AliMatrix(idrotm[716],90.0,88.4,90.0,178.4,180.0,0.0);
923   AliMatrix(idrotm[717],90.0,148.4,90.0,238.4,180.0,0.0);
924   AliMatrix(idrotm[718],90.0,208.4,90.0,298.4,180.0,0.0);
925   AliMatrix(idrotm[719],90.0,268.4,90.0,358.4,180.0,0.0);
926   AliMatrix(idrotm[720],90.0,28.4,90.0,118.4,0.0,0.0);
927   AliMatrix(idrotm[721],90.0,88.4,90.0,178.4,0.0,0.0);
928   AliMatrix(idrotm[722],90.0,148.4,90.0,238.4,0.0,0.0);
929   AliMatrix(idrotm[723],90.0,208.4,90.0,298.4,0.0,0.0);
930   AliMatrix(idrotm[724],90.0,268.4,90.0,358.4,0.0,0.0);
931   AliMatrix(idrotm[725],90.0,328.4,90.0,58.4,0.0,0.0);
932   AliMatrix(idrotm[726],90.0,77.5,90.0,167.5,0.0,0.0);
933   AliMatrix(idrotm[727],90.0,107.5,90.0,197.5,0.0,0.0);
934   AliMatrix(idrotm[728],90.0,137.5,90.0,227.5,0.0,0.0);
935   AliMatrix(idrotm[729],90.0,167.5,90.0,257.5,0.0,0.0);
936   AliMatrix(idrotm[730],90.0,227.5,90.0,317.5,0.0,0.0);
937   AliMatrix(idrotm[731],90.0,257.5,90.0,347.5,0.0,0.0);
938   AliMatrix(idrotm[732],90.0,317.5,90.0,47.5,0.0,0.0);  
939   AliMatrix(idrotm[733],90.0,197.5,90.0,287.5,0.0,0.0);
940   AliMatrix(idrotm[734],90.0,347.5,90.0,77.5,0.0,0.0);
941   AliMatrix(idrotm[735],90.0,47.5,90.0,137.5,0.0,0.0);
942   AliMatrix(idrotm[768],90.0,287.5,90.0,17.5,0.0,0.0);
943   AliMatrix(idrotm[798],90.0,17.5,90.0,107.5,0.0,0.0);
944
945   // Services
946     
947   AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);  
948
949
950   //     CONVERT INTO CM (RL(SI)=9.36 CM) 
951   
952   for (i = 0; i < 6; ++i) {
953     drl[i] = drl[i] / 100. * 9.36;
954   }
955     
956   //     FIELD CAGE HALF LENGTH 
957   
958   rlim  = 50.;
959   zmax  = 74.;
960   ztpc = 284.;
961   
962   // --- Define ghost volume containing the whole ITS (including services) 
963   //     and fill it with air 
964   
965   dgh[0] = 0.;
966   dgh[1] = 360.;
967   dgh[2] = 16.;
968   dgh[3] = -ztpc-5.-0.1;
969   dgh[4] = 62.4;
970   dgh[5] = 85.;
971   dgh[6] = -ztpc;
972   dgh[7] = 62;
973   dgh[8] = 85.;
974   dgh[9] = -ztpc;
975   dgh[10] = 62;
976   dgh[11] = 62+4.;
977   dgh[12] = -97.5;
978   dgh[13] = 46;
979   dgh[14] = rlim+6;
980   dgh[15] = -zmax;
981   dgh[16] = 46;
982   dgh[17] = rlim+6;
983   dgh[18] = -48;
984   dgh[19] = 6;
985   dgh[20] = rlim+6; 
986   dgh[21] = -28.6;
987   dgh[22] = 6;
988   dgh[23] = rlim+6;
989   dgh[24] = -27.6;
990   dgh[25] = 3.295;
991   dgh[26] = rlim+6;
992   dgh[27] = 27.6;
993   dgh[28] = 3.295;
994   dgh[29] = rlim+6;
995   dgh[30] = 28.6;
996   dgh[31] = 6;
997   dgh[32] = rlim+6;
998   dgh[33] = 48;
999   dgh[34] = 6;
1000   dgh[35] = rlim+6;
1001   dgh[36] = zmax;
1002   dgh[37] = 46;
1003   dgh[38] = rlim+6;
1004   dgh[39] = 97.5;
1005   dgh[40] = 46;
1006   dgh[41] = rlim+6;
1007   dgh[42] = ztpc;
1008   dgh[43] = 62;
1009   dgh[44] = 62+4.;
1010   dgh[45] = ztpc;
1011   dgh[46] = 62;
1012   dgh[47] = 85.;
1013   dgh[48] = ztpc+4.+0.1;
1014   dgh[49] = 62.4;
1015   dgh[50] = 85.;
1016   gMC->Gsvolu("ITSV", "PCON", idtmed[205], dgh, 51);
1017
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   // --- Define SPD (option 'a') volumes ----------------------------
1065   
1066   // SPD - option 'a' 
1067   // (this is NOT the default)
1068
1069   if (option == 1) {
1070   
1071      dits[0] = 3.7;
1072      dits[1] = 7.75;
1073      dits[2] = 26.1;
1074      gMC->Gsvolu("IT12", "TUBE", idtmed[254], dits, 3);   
1075
1076      dits[0] = 3.7;
1077      dits[1] = 7.7;
1078      dits[2] = 24;
1079      dits[3] = 57;
1080      dits[4] = 100;
1081      gMC->Gsvolu("I12A", "TUBS", idtmed[254], dits, 5);    // sector
1082
1083      di10a[0] = 0.843;
1084      di10a[1] = ddet1+dchip1+dbus+0.0025;
1085      di10a[2] = 19.344;
1086      gMC->Gsvolu("I10A", "BOX ", idtmed[254], di10a, 3);    // mother volume
1087                                                             // on layer 1
1088      di20a[0] = 0.843;
1089      di20a[1] = ddet2+dchip2+dbus+0.0025;
1090      di20a[2] = 19.344;
1091      gMC->Gsvolu("I20A", "BOX ", idtmed[254], di20a, 3);    // mother volume
1092                                                             // on layer 2
1093      dits[0] = 1.3673;
1094      dits[1] = 0.01;
1095      dits[2] = 24;
1096      gMC->Gsvolu("I123", "BOX ", idtmed[253], dits, 3);
1097
1098      dits[0] = 0.06;
1099      dits[1] = 0.08;
1100      dits[2] = 24;
1101      dits[3] = -36.79;
1102      dits[4] = 21.834;
1103      gMC->Gsvolu("I121", "TUBS", idtmed[253], dits, 5);  
1104
1105      dits[0] = 0.1253;
1106      dits[1] = 0.01;
1107      dits[2] = 24;
1108      gMC->Gsvolu("I122", "BOX ", idtmed[253], dits, 3);  
1109
1110      dits[0] = 0.04;
1111      dits[1] = 0.06 ;
1112      dits[2] = 24;
1113      dits[3] = 126.79;
1114      dits[4] = 270;
1115      gMC->Gsvolu("I120", "TUBS", idtmed[253], dits, 5);  
1116
1117      dits[0] = 0.1134;
1118      dits[1] = 0.01;
1119      dits[2] = 24;
1120      gMC->Gsvolu("I144", "BOX ", idtmed[253], dits, 3);  
1121
1122      dits[0] = 0.25;
1123      dits[1] = 0.06;
1124      dits[2] = 24;
1125      gMC->Gsvolu("I113", "BOX ", idtmed[254], dits, 3);  
1126
1127      dits[0] = 0.077;
1128      dits[1] = 0.01;
1129      dits[2] = 24;
1130      gMC->Gsvolu("I143", "BOX ", idtmed[253], dits, 3);   
1131
1132      dits[0] = 0.04;
1133      dits[1] = 0.06;
1134      dits[2] = 24;
1135      dits[3] = 0;
1136      dits[4] = 90;
1137      gMC->Gsvolu("I142", "TUBS", idtmed[253], dits, 5); 
1138
1139      dits[0] = 0.0695;
1140      dits[1] = 0.01;
1141      dits[2] = 24;
1142      gMC->Gsvolu("I141", "BOX ", idtmed[253], dits, 3);  
1143
1144      dits[0] = 0.06;
1145      dits[1] = 0.08;
1146      dits[2] = 24;
1147      dits[3] = 0;
1148      dits[4] = 108;
1149      gMC->Gsvolu("I140", "TUBS", idtmed[253], dits, 5);  
1150
1151      dits[0] = 0.1835;
1152      dits[1] = 0.01;
1153      dits[2] = 24;
1154      gMC->Gsvolu("I139", "BOX ", idtmed[253], dits, 3);
1155
1156      dits[0] = 0.1894 ;
1157      dits[1] = 0.01;
1158      dits[2] = 24;
1159      gMC->Gsvolu("I138", "BOX ", idtmed[253], dits, 3);  
1160
1161      dits[0] = 0.04;
1162      dits[1] = 0.06;
1163      dits[2] = 24;
1164      dits[3] = 0;
1165      dits[4] = 75.261;
1166      gMC->Gsvolu("I137", "TUBS", idtmed[253], dits, 5);  
1167
1168      dits[0] = 1.3401;
1169      dits[1] = 0.01;
1170      dits[2] = 24;
1171      gMC->Gsvolu("I136", "BOX ", idtmed[253], dits, 3);  
1172
1173      dits[0] = 0.05;
1174      dits[1] = 0.07;
1175      dits[2] = 24;
1176      dits[3] = 0;
1177      dits[4] = 72.739;
1178      gMC->Gsvolu("I135", "TUBS", idtmed[253], dits, 5);  
1179
1180      dits[0] = 0.1193;
1181      dits[1] = 0.01;
1182      dits[2] = 24;
1183      gMC->Gsvolu("I134", "BOX ", idtmed[253], dits, 3);    
1184
1185      dits[0] = 0.163;
1186      dits[1] = 0.01;
1187      dits[2] = 24;
1188      gMC->Gsvolu("I133", "BOX ", idtmed[253], dits, 3);   
1189
1190      dits[0] = 0.04;
1191      dits[1] = 0.06;
1192      dits[2] = 24;
1193      dits[3] = 0;
1194      dits[4] = 157.633;
1195      gMC->Gsvolu("I132", "TUBS", idtmed[253], dits, 5); 
1196
1197      dits[0] = 0.2497;
1198      dits[1] = 0.01;
1199      dits[2] = 24;
1200      gMC->Gsvolu("I131", "BOX ", idtmed[253], dits, 3); 
1201
1202      dits[0] = 0.06;
1203      dits[1] = 0.08;
1204      dits[2] = 24;
1205      dits[3] = 0;
1206      dits[4] = 148.633;
1207      gMC->Gsvolu("I130", "TUBS", idtmed[253], dits, 5); 
1208
1209      dits[0] = 0.292;
1210      dits[1] = 0.01;
1211      dits[2] = 24;
1212      gMC->Gsvolu("I129", "BOX ", idtmed[253], dits, 3);  
1213
1214      dits[0] = 0.163;
1215      dits[1] = 0.01;
1216      dits[2] = 24;
1217      gMC->Gsvolu("I128", "BOX ", idtmed[253], dits, 3);  
1218
1219      dits[0] = 0.04;
1220      dits[1] = 0.06;
1221      dits[2] = 24;
1222      dits[3] = 0;
1223      dits[4] = 161.297;
1224      gMC->Gsvolu("I126", "TUBS", idtmed[253], dits, 5);
1225
1226      dits[0] = 0.2433;
1227      dits[1] = 0.01;
1228      dits[2] = 24;
1229      gMC->Gsvolu("I125", "BOX ", idtmed[253], dits, 3);  
1230
1231      dits[0] = 0.06;
1232      dits[1] = 0.08;
1233      dits[2] = 24;
1234      dits[3] = 0;
1235      dits[4] = 42.883;
1236      gMC->Gsvolu("I124", "TUBS", idtmed[253], dits, 5);  
1237
1238      di103[0] = 0.793;
1239      di103[1] = ddet1+dchip1;
1240      di103[2] = 3.536;
1241      gMC->Gsvolu("I103", "BOX ", idtmed[254], di103, 3); // contains det and chip  
1242                                                          // layer 1
1243      dits[0] = 0.793;
1244      dits[1] = 0.475;  //0.685; 0.015
1245      dits[2] = 2.5;
1246      gMC->Gsvolu("I105", "BOX ", idtmed[290], dits, 3);  
1247
1248      di104[0] = 0.843;
1249      di104[1] = dbus;
1250      di104[2] = 14.344;
1251      gMC->Gsvolu("I104", "BOX ", idtmed[275], di104, 3);  // bus for both layers
1252
1253      di1d3[0] = 0.793;
1254      di1d3[1] = ddet2+dchip2;
1255      di1d3[2] = 3.536;
1256      gMC->Gsvolu("I1D3", "BOX ", idtmed[254], di1d3, 3); // contains det and chip
1257                                                          // layer 2
1258      dits[0] = 0.793;
1259      dits[0] = 0.06;
1260      dits[1] = 0.08;
1261      dits[2] = 24;
1262      dits[3] = 0;
1263      dits[4] = 80;
1264      gMC->Gsvolu("I112", "TUBS", idtmed[253], dits, 5);  
1265
1266      dits[0] = 0.04;
1267      dits[1] = 0.06;
1268      dits[2] = 24;
1269      dits[3] = 0;
1270      dits[4] = 80;
1271      gMC->Gsvolu("I111", "TUBS", idtmed[253], dits, 5);  
1272
1273      dits[0] = 0.15;
1274      dits[1] = 0.0146;
1275      dits[2] = 24;
1276      gMC->Gsvolu("I118", "BOX ", idtmed[273], dits, 3);  
1277
1278      dits[0] = 0.1315;
1279      dits[1] = 0.01;
1280      dits[2] = 24;
1281      gMC->Gsvolu("I110", "BOX ", idtmed[253], dits, 3);  
1282
1283      dits[0] = 0.025;
1284      dits[1] = 0.035;
1285      dits[2] = 24;
1286      dits[3] = 0;
1287      dits[4] = 180;
1288      gMC->Gsvolu("I114", "TUBS", idtmed[264], dits, 5);  
1289
1290      if (fluid == 1) {
1291         dits[0] = 0;
1292         dits[1] = 0.025;
1293         dits[2] = 24;
1294         dits[3] = 0;
1295         dits[4] = 180;
1296         gMC->Gsvolu("I115", "TUBS", idtmed[211], dits, 5); // set water as cooling fluid   
1297      } else {
1298         dits[0] = 0;
1299         dits[1] = 0.025;
1300         dits[2] = 24;
1301         dits[3] = 0;
1302         dits[4] = 180;
1303         gMC->Gsvolu("I115", "TUBS", idtmed[212], dits, 5); // set freon as cooling fluid       
1304      }
1305      
1306      dits[0] = 0.063;
1307      dits[1] = 0.035;
1308      dits[2] = 24;
1309      gMC->Gsvolu("I116", "BOX ", idtmed[264], dits, 3); 
1310
1311      di102[0] = 0.793;
1312      di102[1] = dchip1;
1313      di102[2] = 0.68;
1314      gMC->Gsvolu("I102", "BOX ", idtmed[201], di102, 3);   // chip layer 1
1315           
1316      di1d2[0] = 0.793;
1317      di1d2[1] = dchip2;
1318      di1d2[2] = 0.68;
1319      gMC->Gsvolu("I1D2", "BOX ", idtmed[201], di1d2, 3);   // chip      layer 2
1320
1321      di101[0] = 0.705;
1322      di101[1] = ddet1;
1323      di101[2] = 3.536;
1324      gMC->Gsvolu("I101", "BOX ", idtmed[250], di101, 3);   // contains detector 
1325                                                            // layer 1
1326      di1d1[0] = 0.705;
1327      di1d1[1] = ddet2;
1328      di1d1[2] = 3.536;
1329      gMC->Gsvolu("I1D1", "BOX ", idtmed[250], di1d1, 3);   // contains detector 
1330                                                            // layer 2
1331      if (fluid == 1) {
1332         dits[0] = 0.063;
1333         dits[1] = 0.025;
1334         dits[2] = 24;
1335         gMC->Gsvolu("I117", "BOX ", idtmed[211], dits, 3); // set water as cooling fuid
1336      } else {
1337         dits[0] = 0.063;
1338         dits[1] = 0.025;
1339         dits[2] = 24;
1340         gMC->Gsvolu("I117", "BOX ", idtmed[212], dits, 3); // set freon as cooling fluid
1341      }
1342
1343      dits1[0] = 0.64;
1344      dits1[1] = ddet1;
1345      dits1[2] = 3.48;
1346      gMC->Gsvolu("ITS1", "BOX ", idtmed[200], dits1, 3);   // detector layer 1
1347
1348      dits2[0] = 0.64;
1349      dits2[1] = ddet2;
1350      dits2[2] = 3.48;
1351      gMC->Gsvolu("ITS2", "BOX ", idtmed[200], dits2, 3);   // detector layer 2
1352
1353      dits[0] = 3.701;
1354      dits[1] = 7.699;
1355      dits[2] = 4;
1356      dits[3] = 57.1;
1357      dits[4] = 99.9;  
1358      gMC->Gsvolu("I650", "TUBS", idtmed[254], dits, 5);  // was I150 in old geom.
1359
1360      dits[0] = 0;
1361      dits[1] = 0.5;
1362      dits[2] = 1.5;
1363      gMC->Gsvolu("I676", "TUBE", idtmed[274], dits, 3); // was I176 in old geom.
1364
1365      dits[0] = 0;
1366      dits[1] = 0.18;
1367      dits[2] = 0.8;
1368      gMC->Gsvolu("I673", "TUBE", idtmed[274], dits, 3); // was I173 in old geom.
1369
1370      dits[0] = 0;
1371      dits[1] = 0.18;
1372      dits[2] = 3;
1373      gMC->Gsvolu("I671", "TUBE", idtmed[274], dits, 3); // was I171 in old geom.
1374
1375      dits[0] = 0;
1376      dits[1] = 0.075;
1377      dits[2] = 0.8;
1378      gMC->Gsvolu("I669", "TUBE", idtmed[264], dits, 3); // was I169 in old geom.
1379
1380      dits[0] = 3.5;
1381      dits[1] = 5.6;
1382      dits[2] = 0.55;
1383      dits[3] = 0;
1384      dits[4] = 38;
1385      gMC->Gsvolu("I667", "TUBS", idtmed[263], dits, 5); // was I167 in old geom.
1386
1387      dits[0] = 6.6;
1388      dits[1] = 7.6;
1389      dits[2] = 0.5;
1390      dits[3] = 0;
1391      dits[4] = 9;
1392      gMC->Gsvolu("I666", "TUBS", idtmed[263], dits, 5); // was I166 in old geom.
1393
1394      dits[0] = 0.26;
1395      dits[1] = 0.32;
1396      dits[2] = 0.55;
1397      gMC->Gsvolu("I678", "TUBE", idtmed[263], dits, 3); // was I178 in old geom.
1398
1399      if (fluid == 1) {
1400         dits[0] = 0;
1401         dits[1] = 0.3;
1402         dits[2] = 1.5;
1403         gMC->Gsvolu("I677", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
1404                                                            // was I177 in old geom.
1405      } else {
1406          dits[0] = 0;
1407         dits[1] = 0.3;
1408         dits[2] = 1.5;
1409         gMC->Gsvolu("I677", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
1410                                                            // was I177 in old geom.    
1411      }
1412      
1413      dits[0] = 0.07;
1414      dits[1] = 0.125;
1415      dits[2] = 0.3;
1416      gMC->Gsvolu("I675", "TUBE", idtmed[263], dits, 3); // was I175 in old geom.
1417
1418      if (fluid == 1) {
1419         dits[0] = 0;
1420         dits[1] = 0.1;
1421         dits[2] = 0.8;
1422         gMC->Gsvolu("I674", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
1423                                                            // was I174 in old geom.
1424      } else {
1425         dits[0] = 0;
1426         dits[1] = 0.1;
1427         dits[2] = 0.8;
1428         gMC->Gsvolu("I674", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
1429                                                            // was I174 in old geom.     
1430      }
1431      
1432      if (fluid == 1) {
1433         dits[0] = 0;
1434         dits[1] = 0.1;
1435         dits[2] = 3;
1436         gMC->Gsvolu("I672", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
1437                                                            // was I172 in old geom.
1438      } else {
1439         dits[0] = 0;
1440         dits[1] = 0.1;
1441         dits[2] = 3;
1442         gMC->Gsvolu("I672", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
1443                                                            // was I172 in old geom.        
1444      }
1445      
1446      if (fluid == 1) {     
1447         dits[0] = 0;
1448         dits[1] = 0.0746;
1449         dits[2] = 0.8;
1450         gMC->Gsvolu("I670", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
1451                                                            // was I170 in old geom.
1452      } else {
1453         dits[0] = 0;
1454         dits[1] = 0.0746;
1455         dits[2] = 0.8;
1456         gMC->Gsvolu("I670", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
1457                                                            // was I170 in old geom.     
1458      }
1459      
1460      if (fluid == 1) {     
1461         dits[0] = 3.7;
1462         dits[1] = 5.4;
1463         dits[2] = 0.35;
1464         dits[3] = 2;
1465         dits[4] = 36;
1466         gMC->Gsvolu("I668", "TUBS", idtmed[211], dits, 5); // set water as cooling fluid
1467                                                            // was I168 in old geom.
1468      } else {
1469         dits[0] = 3.7;
1470         dits[1] = 5.4;
1471         dits[2] = 0.35;
1472         dits[3] = 2;
1473         dits[4] = 36;
1474         gMC->Gsvolu("I668", "TUBS", idtmed[212], dits, 5); // set freon as cooling fluid
1475                                                            // was I168 in old geom.
1476      }
1477
1478
1479   }
1480
1481   // --- Define SPD (option 'b') volumes ----------------------------
1482   
1483   // SPD - option 'b' 
1484   // (this is the default)
1485
1486   if (option == 2) {
1487   
1488      dits[0] = 3.7;
1489      dits[1] = 7.75;
1490      dits[2] = 26.1;
1491      gMC->Gsvolu("IT12", "TUBE", idtmed[254], dits, 3);   
1492
1493      dits[0] = 3.7;
1494      dits[1] = 7.7;
1495      dits[2] = 24;
1496      dits[3] = 57;
1497      dits[4] = 100;
1498      gMC->Gsvolu("I12B", "TUBS", idtmed[254], dits, 5);   // sector
1499
1500      di10b[0] = 0.843;
1501      di10b[1] = ddet1+dchip1+dbus+0.0025;  
1502      di10b[2] = 19.344;
1503      gMC->Gsvolu("I10B", "BOX ", idtmed[254], di10b, 3);   // mother volume 
1504                                                                 // on layer 1
1505
1506      di20b[0] = 0.843;
1507      di20b[1] = ddet2+dchip2+dbus+0.0025;   
1508      di20b[2] = 19.344;
1509      gMC->Gsvolu("I20B", "BOX ", idtmed[254], di20b, 3);   // mother volume
1510                                                                 // layer 2
1511
1512      dits[0] = 1.3673;
1513      dits[1] = 0.01;
1514      dits[2] = 24;
1515      gMC->Gsvolu("I123", "BOX ", idtmed[253], dits, 3);
1516
1517      dits[0] = 0.06;
1518      dits[1] = 0.08;
1519      dits[2] = 24;
1520      dits[3] = -36.79;
1521      dits[4] = 21.834;
1522      gMC->Gsvolu("I121", "TUBS", idtmed[253], dits, 5);  
1523
1524      dits[0] = 0.1253;
1525      dits[1] = 0.01;
1526      dits[2] = 24;
1527      gMC->Gsvolu("I122", "BOX ", idtmed[253], dits, 3);  
1528
1529      dits[0] = 0.04;
1530      dits[1] = 0.06 ;
1531      dits[2] = 24;
1532      dits[3] = 126.79;
1533      dits[4] = 270;
1534      gMC->Gsvolu("I120", "TUBS", idtmed[253], dits, 5);  
1535
1536      dits[0] = 0.1134;
1537      dits[1] = 0.01;
1538      dits[2] = 24;
1539      gMC->Gsvolu("I144", "BOX ", idtmed[253], dits, 3);  
1540
1541      dits[0] = 0.25;
1542      dits[1] = 0.06;
1543      dits[2] = 24;
1544      gMC->Gsvolu("I113", "BOX ", idtmed[254], dits, 3);  
1545
1546      dits[0] = 0.077;
1547      dits[1] = 0.01;
1548      dits[2] = 24;
1549      gMC->Gsvolu("I143", "BOX ", idtmed[253], dits, 3);   
1550
1551      dits[0] = 0.04;
1552      dits[1] = 0.06;
1553      dits[2] = 24;
1554      dits[3] = 0;
1555      dits[4] = 90;
1556      gMC->Gsvolu("I142", "TUBS", idtmed[253], dits, 5); 
1557
1558      dits[0] = 0.0695;
1559      dits[1] = 0.01;
1560      dits[2] = 24;
1561      gMC->Gsvolu("I141", "BOX ", idtmed[253], dits, 3);  
1562
1563      dits[0] = 0.06;
1564      dits[1] = 0.08;
1565      dits[2] = 24;
1566      dits[3] = 0;
1567      dits[4] = 108;
1568      gMC->Gsvolu("I140", "TUBS", idtmed[253], dits, 5);  
1569
1570      dits[0] = 0.1835;
1571      dits[1] = 0.01;
1572      dits[2] = 24;
1573      gMC->Gsvolu("I139", "BOX ", idtmed[253], dits, 3);
1574
1575      dits[0] = 0.1894 ;
1576      dits[1] = 0.01;
1577      dits[2] = 24;
1578      gMC->Gsvolu("I138", "BOX ", idtmed[253], dits, 3);  
1579
1580      dits[0] = 0.04;
1581      dits[1] = 0.06;
1582      dits[2] = 24;
1583      dits[3] = 0;
1584      dits[4] = 75.261;
1585      gMC->Gsvolu("I137", "TUBS", idtmed[253], dits, 5);  
1586
1587      dits[0] = 1.3401;
1588      dits[1] = 0.01;
1589      dits[2] = 24;
1590      gMC->Gsvolu("I136", "BOX ", idtmed[253], dits, 3);  
1591
1592      dits[0] = 0.05;
1593      dits[1] = 0.07;
1594      dits[2] = 24;
1595      dits[3] = 0;
1596      dits[4] = 72.739;
1597      gMC->Gsvolu("I135", "TUBS", idtmed[253], dits, 5);  
1598
1599      dits[0] = 0.1193;
1600      dits[1] = 0.01;
1601      dits[2] = 24;
1602      gMC->Gsvolu("I134", "BOX ", idtmed[253], dits, 3);    
1603
1604      dits[0] = 0.163;
1605      dits[1] = 0.01;
1606      dits[2] = 24;
1607      gMC->Gsvolu("I133", "BOX ", idtmed[253], dits, 3);   
1608
1609      dits[0] = 0.04;
1610      dits[1] = 0.06;
1611      dits[2] = 24;
1612      dits[3] = 0;
1613      dits[4] = 157.633;
1614      gMC->Gsvolu("I132", "TUBS", idtmed[253], dits, 5); 
1615
1616      dits[0] = 0.2497;
1617      dits[1] = 0.01;
1618      dits[2] = 24;
1619      gMC->Gsvolu("I131", "BOX ", idtmed[253], dits, 3); 
1620
1621      dits[0] = 0.06;
1622      dits[1] = 0.08;
1623      dits[2] = 24;
1624      dits[3] = 0;
1625      dits[4] = 148.633;
1626      gMC->Gsvolu("I130", "TUBS", idtmed[253], dits, 5); 
1627
1628      dits[0] = 0.292;
1629      dits[1] = 0.01;
1630      dits[2] = 24;
1631      gMC->Gsvolu("I129", "BOX ", idtmed[253], dits, 3);  
1632
1633      dits[0] = 0.163;
1634      dits[1] = 0.01;
1635      dits[2] = 24;
1636      gMC->Gsvolu("I128", "BOX ", idtmed[253], dits, 3);  
1637
1638      dits[0] = 0.04;
1639      dits[1] = 0.06;
1640      dits[2] = 24;
1641      dits[3] = 0;
1642      dits[4] = 161.297;
1643      gMC->Gsvolu("I126", "TUBS", idtmed[253], dits, 5);
1644
1645      dits[0] = 0.2433;
1646      dits[1] = 0.01;
1647      dits[2] = 24;
1648      gMC->Gsvolu("I125", "BOX ", idtmed[253], dits, 3);  
1649
1650      dits[0] = 0.06;
1651      dits[1] = 0.08;
1652      dits[2] = 24;
1653      dits[3] = 0;
1654      dits[4] = 42.883;
1655      gMC->Gsvolu("I124", "TUBS", idtmed[253], dits, 5);  
1656
1657      dits[0] = 0.793;
1658      dits[1] = 0.475;  //0.685; 0.015
1659      dits[2] = 2.5;
1660      gMC->Gsvolu("I105", "BOX ", idtmed[290], dits, 3);  
1661
1662      di107[0] = 0.793;
1663      di107[1] = ddet1+dchip1;
1664      di107[2] = 3.536;
1665      gMC->Gsvolu("I107", "BOX ", idtmed[254], di107, 3); // contains det and chip   
1666                                                          // layer 1
1667      dits[0] = 0.705;
1668      dits[1] = 0.01;
1669      dits[2] = 2.5;
1670      gMC->Gsvolu("I109", "BOX ", idtmed[275], dits, 3);  
1671
1672      di108[0] = 0.705;
1673      di108[1] = dbus;
1674      di108[2] = 14.344;
1675      gMC->Gsvolu("I108", "BOX ", idtmed[275], di108, 3); // bus for both layers 
1676
1677      di1d7[0] = 0.7975;
1678      di1d7[1] = ddet2+dchip2;   
1679      di1d7[2] = 3.536;
1680      gMC->Gsvolu("I1D7", "BOX ", idtmed[254], di1d7, 3); // contains det and chip
1681                                                          // layer 2
1682      dits[0] = 0.06;
1683      dits[1] = 0.08;
1684      dits[2] = 24;
1685      dits[3] = 0;
1686      dits[4] = 80;
1687      gMC->Gsvolu("I112", "TUBS", idtmed[253], dits, 5);  
1688
1689      dits[0] = 0.04;
1690      dits[1] = 0.06;
1691      dits[2] = 24;
1692      dits[3] = 0;
1693      dits[4] = 80;
1694      gMC->Gsvolu("I111", "TUBS", idtmed[253], dits, 5);  
1695
1696      dits[0] = 0.15;
1697      dits[1] = 0.0146;
1698      dits[2] = 24;
1699      gMC->Gsvolu("I118", "BOX ", idtmed[273], dits, 3);  
1700
1701      dits[0] = 0.1315;
1702      dits[1] = 0.01;
1703      dits[2] = 24;
1704      gMC->Gsvolu("I110", "BOX ", idtmed[253], dits, 3);  
1705
1706      dits[0] = 0.025;
1707      dits[1] = 0.035;
1708      dits[2] = 24;
1709      dits[3] = 0;
1710      dits[4] = 180;
1711      gMC->Gsvolu("I114", "TUBS", idtmed[264], dits, 5);  
1712
1713      if (fluid == 1) {
1714         dits[0] = 0;
1715         dits[1] = 0.025;
1716         dits[2] = 24;
1717         dits[3] = 0;
1718         dits[4] = 180;
1719         gMC->Gsvolu("I115", "TUBS", idtmed[211], dits, 5);  // set water as cooling fluid   
1720      } else {
1721         dits[0] = 0;
1722         dits[1] = 0.025;
1723         dits[2] = 24;
1724         dits[3] = 0;
1725         dits[4] = 180;
1726         gMC->Gsvolu("I115", "TUBS", idtmed[212], dits, 5);  // set freon as cooling fluid
1727      }
1728      
1729      dits[0] = 0.063;
1730      dits[1] = 0.035;
1731      dits[2] = 24;
1732      gMC->Gsvolu("I116", "BOX ", idtmed[264], dits, 3); 
1733
1734      di106[0] = 0.7975;
1735      di106[1] = dchip1;   
1736      di106[2] = 0.68;
1737      gMC->Gsvolu("I106", "BOX ", idtmed[201], di106, 3);   // chip layer 1
1738
1739      di1d6[0] = 0.7975;
1740      di1d6[1] = dchip2;   
1741      di1d6[2] = 0.68;
1742      gMC->Gsvolu("I1D6", "BOX ", idtmed[201], di1d6, 3);   // chip layer 2
1743
1744      di101[0] = 0.705;
1745      di101[1] = ddet1;
1746      di101[2] = 3.536;
1747      gMC->Gsvolu("I101", "BOX ", idtmed[250], di101, 3);  // contains detector  
1748                                                           // layer 1
1749      di1d1[0] = 0.705;
1750      di1d1[1] = ddet2;   
1751      di1d1[2] = 3.536;
1752      gMC->Gsvolu("I1D1", "BOX ", idtmed[250], di1d1, 3);  // contains detector  
1753                                                           // layer 2
1754    
1755      if (fluid == 1) {
1756         dits[0] = 0.063;
1757         dits[1] = 0.025;
1758         dits[2] = 24;
1759         gMC->Gsvolu("I117", "BOX ", idtmed[211], dits, 3); // set water as cooling fluid
1760      } else {
1761         dits[0] = 0.063;
1762         dits[1] = 0.025;
1763         dits[2] = 24;
1764         gMC->Gsvolu("I117", "BOX ", idtmed[212], dits, 3); // set freon as cooling fluid
1765      }
1766
1767      dits1[0] = 0.64;
1768      dits1[1] = ddet1;
1769      dits1[2] = 3.48;
1770      gMC->Gsvolu("ITS1", "BOX ", idtmed[200], dits1, 3);   // detector layer 1
1771
1772      dits2[0] = 0.64;
1773      dits2[1] = ddet2;  
1774      dits2[2] = 3.48;
1775      gMC->Gsvolu("ITS2", "BOX ", idtmed[200], dits2, 3);   // detector layer 2
1776
1777      dits[0] = 3.701;
1778      dits[1] = 7.699;
1779      dits[2] = 4;
1780      dits[3] = 57.1;
1781      dits[4] = 99.9;  
1782      gMC->Gsvolu("I650", "TUBS", idtmed[254], dits, 5);  // was I150 in old geom.
1783
1784      dits[0] = 0;
1785      dits[1] = 0.5;
1786      dits[2] = 1.5;
1787      gMC->Gsvolu("I676", "TUBE", idtmed[274], dits, 3); // was I176 in old geom.
1788
1789      dits[0] = 0;
1790      dits[1] = 0.18;
1791      dits[2] = 0.8;
1792      gMC->Gsvolu("I673", "TUBE", idtmed[274], dits, 3); // was I173 in old geom.
1793
1794      dits[0] = 0;
1795      dits[1] = 0.18;
1796      dits[2] = 3;
1797      gMC->Gsvolu("I671", "TUBE", idtmed[274], dits, 3); // was I171 in old geom.
1798
1799      dits[0] = 0;
1800      dits[1] = 0.075;
1801      dits[2] = 0.8;
1802      gMC->Gsvolu("I669", "TUBE", idtmed[264], dits, 3); // was I169 in old geom.
1803
1804      dits[0] = 3.5;
1805      dits[1] = 5.6;
1806      dits[2] = 0.55;
1807      dits[3] = 0;
1808      dits[4] = 38;
1809      gMC->Gsvolu("I667", "TUBS", idtmed[263], dits, 5); // was I167 in old geom.
1810
1811      dits[0] = 6.6;
1812      dits[1] = 7.6;
1813      dits[2] = 0.5;
1814      dits[3] = 0;
1815      dits[4] = 9;
1816      gMC->Gsvolu("I666", "TUBS", idtmed[263], dits, 5); // was I166 in old geom.
1817
1818      dits[0] = 0.26;
1819      dits[1] = 0.32;
1820      dits[2] = 0.55;
1821      gMC->Gsvolu("I678", "TUBE", idtmed[263], dits, 3); // was I178 in old geom.
1822
1823      if (fluid == 1) {
1824         dits[0] = 0;
1825         dits[1] = 0.3;
1826         dits[2] = 1.5;
1827         gMC->Gsvolu("I677", "TUBE", idtmed[211], dits, 3); //set water as cooling fluid
1828                                                            // was I177 in old geom.
1829      } else {
1830         dits[0] = 0;
1831         dits[1] = 0.3;
1832         dits[2] = 1.5;
1833         gMC->Gsvolu("I677", "TUBE", idtmed[212], dits, 3); //set freon as cooling fluid
1834                                                            // was I177 in old geom.     
1835      }
1836
1837      dits[0] = 0.07;
1838      dits[1] = 0.125;
1839      dits[2] = 0.3;
1840      gMC->Gsvolu("I675", "TUBE", idtmed[263], dits, 3); // was I175 in old geom.
1841
1842      if (fluid == 1) {
1843         dits[0] = 0;
1844         dits[1] = 0.1;
1845         dits[2] = 0.8;
1846         gMC->Gsvolu("I674", "TUBE", idtmed[211], dits, 3); //set water as cooling fluid
1847                                                            // was I174 in old geom.
1848      } else {
1849         dits[0] = 0;
1850         dits[1] = 0.1;
1851         dits[2] = 0.8;
1852         gMC->Gsvolu("I674", "TUBE", idtmed[212], dits, 3); //set freon as cooling fluid
1853                                                            // was I174 in old geom.     
1854      }
1855      
1856      if (fluid == 1) {
1857         dits[0] = 0;
1858         dits[1] = 0.1;
1859         dits[2] = 3;
1860         gMC->Gsvolu("I672", "TUBE", idtmed[211], dits, 3); //set water as cooling fluid
1861                                                            // was I172 in old geom.
1862      } else {
1863         dits[0] = 0;
1864         dits[1] = 0.1;
1865         dits[2] = 3;
1866         gMC->Gsvolu("I672", "TUBE", idtmed[212], dits, 3); //set freon as cooling fluid
1867                                                            // was I172 in old geom.     
1868      }
1869      
1870      if (fluid == 1) {
1871         dits[0] = 0;
1872         dits[1] = 0.0746;
1873         dits[2] = 0.8;
1874         gMC->Gsvolu("I670", "TUBE", idtmed[211], dits, 3); //set water as cooling fluid
1875                                                            // was I170 in old geom.
1876      } else {
1877         dits[0] = 0;
1878         dits[1] = 0.0746;
1879         dits[2] = 0.8;
1880         gMC->Gsvolu("I670", "TUBE", idtmed[212], dits, 3); //set freon as cooling fluid
1881                                                            // was I170 in old geom.     
1882      }
1883      
1884      if (fluid == 1) {
1885         dits[0] = 3.7;
1886         dits[1] = 5.4;
1887         dits[2] = 0.35;
1888         dits[3] = 2;
1889         dits[4] = 36;
1890         gMC->Gsvolu("I668", "TUBS", idtmed[211], dits, 5); //set water as cooling fluid
1891                                                            // was I168 in old geom.
1892      } else {
1893         dits[0] = 3.7;
1894         dits[1] = 5.4;
1895         dits[2] = 0.35;
1896         dits[3] = 2;
1897         dits[4] = 36;
1898         gMC->Gsvolu("I668", "TUBS", idtmed[212], dits, 5); //set freon as cooling fluid
1899                                                            // was I168 in old geom.     
1900      }
1901      
1902
1903   }
1904
1905   // --- Define SDD volumes ------------------------------------------
1906
1907   
1908   cos30 = cos(30.*3.14159/180.);
1909   sin30 = sin(30.*3.14159/180.);
1910
1911   
1912   dits[0] = 0;
1913   dits[1] = 360;
1914   dits[2] = 6;
1915   dits[3] = -34.6; 
1916   dits[4] = 23.49;
1917   dits[5] = 28;
1918   dits[6] = -23.65; 
1919   dits[7] = 23.49;
1920   dits[8] = 28;
1921   dits[9] = -23.65;  
1922   dits[10] = 14.59; 
1923   dits[11] = 28;
1924   dits[12] = 23.65;   
1925   dits[13] = 14.59;
1926   dits[14] = 28;
1927   dits[15] = 23.65;    
1928   dits[16] = 23.49;
1929   dits[17] = 28;
1930   dits[18] = 34.6;  
1931   dits[19] = 23.49;
1932   dits[20] = 28;
1933   gMC->Gsvolu("IT34", "PCON", idtmed[209], dits, 21);  
1934
1935   // block of the SDD electronics and related ladder frame 
1936   I018dits[0] = 3.2;
1937   I018dits[1] = 2;
1938   I018dits[2] = 3.65;
1939   gMC->Gsvolu("I018", "BOX ", idtmed[209], I018dits, 3);  
1940
1941   // block of the SDD end ladder 
1942   I024dits[0] = 3.2;
1943   I024dits[1] = 2;
1944   I024dits[2] = 2.725;
1945   gMC->Gsvolu("I024", "BOX ", idtmed[209], I024dits, 3);  
1946
1947   // ladder frame of layer 3 - F.T. March,7-2001
1948   I047dits[0] = I018dits[0];
1949   I047dits[1] = I018dits[1];
1950   I047dits[2] = 6*I018dits[2] + 2*I024dits[2]; 
1951   gMC->Gsvolu("I047", "BOX ", idtmed[209], I047dits, 3);  
1952
1953   // ladder frame of layer 4 - F.T. March,7-2001
1954   I048dits[0] = I018dits[0];
1955   I048dits[1] = I018dits[1];
1956   I048dits[2] = 8*I018dits[2] + 2*I024dits[2]; 
1957   gMC->Gsvolu("I048", "BOX ", idtmed[209], I048dits, 3);  
1958
1959
1960   // global SDD volume (sensitive + insensitive) 
1961   I302dits[0] = 3.6250;
1962   I302dits[1] = 0.0150;
1963   I302dits[2] = 4.3794;
1964   gMC->Gsvolu("I302", "BOX ", idtmed[278], I302dits, 3);
1965
1966   // Like for I302 - F.T. March,7-2001
1967   I402dits[0] = 3.6250;
1968   I402dits[1] = 0.0150;
1969   I402dits[2] = 4.3794;
1970   gMC->Gsvolu("I402", "BOX ", idtmed[278], I402dits, 3);  
1971
1972   // SDD ladder of layer 3 - F.T. March,7-2001
1973   I004dits[0] = I302dits[0]+0.005;
1974   I004dits[1] = 2*I302dits[1]+Y_SDD_sep/2.;
1975   I004dits[2] = TMath::Abs(Z_SDD_lay3[0]);
1976   if (I004dits[2] < TMath::Abs(Z_SDD_lay3[5])) {
1977     I004dits[2] = TMath::Abs(Z_SDD_lay3[5]);
1978   }
1979   I004dits[2] = I004dits[2] + I302dits[2];
1980   gMC->Gsvolu("I004", "BOX ", idtmed[209], I004dits, 3);  
1981
1982   // SDD ladder of layer 4 - F.T. March,7-2001
1983   I005dits[0] = I402dits[0]+0.005;
1984   I005dits[1] = 2*I402dits[1]+Y_SDD_sep/2.;
1985   I005dits[2] = TMath::Abs(Z_SDD_lay4[0]);
1986   if (I005dits[2] < TMath::Abs(Z_SDD_lay4[7])) {
1987     I005dits[2] = TMath::Abs(Z_SDD_lay4[7]);
1988   }
1989   I005dits[2] = I005dits[2] + I402dits[2];
1990   gMC->Gsvolu("I005", "BOX ", idtmed[209], I005dits, 3);  
1991
1992
1993   // -- block of the SDD ladder foot and end ladder
1994
1995   // ladder foot mother volume
1996   I028dits[0] = 3.0000;
1997   I028dits[1] = 0.4000;
1998   I028dits[2] = 0.9000;
1999   gMC->Gsvolu("I028", "BOX ", idtmed[224], I028dits, 3);  
2000
2001   // positioning-box #1 at SDD end-ladder - F.T. March,7-2001
2002   I420dits[0] = 0.4500;
2003   I420dits[1] = 0.4000;
2004   I420dits[2] = 0.4500;
2005   gMC->Gsvolu("I420", "BOX ", idtmed[264], I420dits, 3);  
2006
2007   // positioning-box #2 at SDD end-ladder - F.T. March,7-2001
2008   I421dits[0] = 0.;
2009   I421dits[1] = 0.25;
2010   I421dits[2] = I420dits[1];
2011   gMC->Gsvolu("I421", "TUBE", idtmed[209], I421dits, 3);  
2012
2013   // reference ruby-sphere at SDD end-ladder - F.T. March,7-2001 
2014   I422dits[0] = 0.0000;
2015   I422dits[1] = 0.2000;
2016   I422dits[2] = 0.0000;
2017   I422dits[3] = 180.00;
2018   I422dits[4] = 0.0000;
2019   I422dits[5] = 360.00;
2020   gMC->Gsvolu("I422", "SPHE", idtmed[277], I422dits, 6);  
2021
2022   // support for ruby-sphere (I422) - F.T. March,7-2001
2023   I423dits[0] = 0.0000;
2024   I423dits[1] = 0.1000;
2025   I423dits[2] = (I420dits[1]-I422dits[1])/2.;
2026   gMC->Gsvolu("I423", "TUBE", idtmed[264], I423dits, 3);  
2027
2028   // passage for HV microcables - F.T. March,7-2001
2029   I424dits[0] = 1.5000;
2030   I424dits[1] = 0.1500;
2031   I424dits[2] = I421dits[2];
2032   gMC->Gsvolu("I424", "BOX ", idtmed[209], I424dits, 3);  
2033
2034   // HV microcables segment at the end ladder - F.T. March,7-2001
2035   I425dits[0] = 1.350000;
2036   I425dits[1] = 0.015250;
2037   I425dits[2] = I024dits[2];
2038   gMC->Gsvolu("I425", "BOX ", idtmed[279], I425dits, 3);  
2039
2040   // lower edge of SDD ladder frame at end-ladder - part 1
2041   dits[0] = 0.2;
2042   dits[1] = 0.1815;
2043   dits[2] = I024dits[2];
2044   dits[3] = 0.015;
2045   gMC->Gsvolu("I025", "TRD1", idtmed[208], dits, 4);  
2046
2047   // lower edge of SDD ladder frame at end-ladder - part 2
2048   dits[0] = 0.183;
2049   dits[1] = 0.165;
2050   dits[2] = I024dits[2];
2051   dits[3] = 0.015;
2052   gMC->Gsvolu("I026", "TRD1", idtmed[208], dits, 4);  
2053
2054   // new: for the 1st top rod of the structure 
2055   // at the end-ladder - F.T. March,7-2001
2056   I029dits[0] = 0.2;
2057   I029dits[1] = 0.1815;
2058   I029dits[2] = 1.0100;
2059   I029dits[3] = 0.015;
2060   gMC->Gsvolu("I029", "TRD1", idtmed[208], I029dits, 4);  
2061
2062   // new: for the 2nd top rod of the structure 
2063   // at the end-ladder - F.T. March,7-2001
2064   I030dits[0] = 0.1830;
2065   I030dits[1] = 0.1650;
2066   I030dits[2] = 1.0100;
2067   I030dits[3] = 0.0150;
2068   gMC->Gsvolu("I030", "TRD1", idtmed[208], I030dits, 4);  
2069
2070   // inox cooling tubes for the end ladder - F.T. March,7-2001
2071   I031dits[0] = 0.093;
2072   I031dits[1] = 0.1;
2073   I031dits[2] = I024dits[2];
2074   gMC->Gsvolu("I031", "TUBE", idtmed[264], I031dits, 3);  
2075
2076   if (fluid == 1) {
2077      // cooling water for the end ladder - F.T. March,7-2001
2078      I032dits[0] = 0;
2079      I032dits[1] = I031dits[0];
2080      I032dits[2] = I024dits[2];
2081      gMC->Gsvolu("I032", "TUBE", idtmed[211], I032dits, 3);  
2082   } else {
2083      // cooling freon for the end ladder - R.B. March,21-2001
2084      I032dits[0] = 0;
2085      I032dits[1] = I031dits[0];
2086      I032dits[2] = I024dits[2];
2087      gMC->Gsvolu("I032", "TUBE", idtmed[212], I032dits, 3);    
2088   }
2089   
2090   // -- block of the SDD ladder frame holding the electronics
2091
2092   // edge of the ladder frame - part 1
2093   dits[0] = 0.2;
2094   dits[1] = 0.182;
2095   dits[2] = 3.65;
2096   dits[3] = 0.015;
2097   gMC->Gsvolu("I019", "TRD1", idtmed[208], dits, 4);  
2098
2099   // edge of the ladder frame - part 2
2100   dits[0] = 0.183;
2101   dits[1] = 0.165;
2102   dits[2] = 3.65;
2103   dits[3] = 0.015;
2104   gMC->Gsvolu("I020", "TRD1", idtmed[208], dits, 4);  
2105
2106   // inclined segments of the ladder frame
2107   dits[0] = 2.23;
2108   dits[1] = 2.1;
2109   dits[2] = 0.05;
2110   dits[3] = 0.03;
2111   gMC->Gsvolu("I021", "TRD1", idtmed[208], dits, 4);  
2112
2113   // horiz.segments of the ladders, normal to ladder edges
2114   dits[0] = 2.1;
2115   dits[1] = 2;
2116   dits[2] = 0.06;
2117   dits[3] = 0.04;
2118   gMC->Gsvolu("I022", "TRD1", idtmed[208], dits, 4);  
2119
2120   // horiz.segments of the ladders, at 45 deg. to ladder edges
2121   dits[0] = 2.615;
2122   dits[1] = 2.465;
2123   dits[2] = 0.06;
2124   dits[3] = 0.04;
2125   gMC->Gsvolu("I023", "TRD1", idtmed[208], dits, 4);  
2126
2127   // supports of the ceramic pins holding the detectors
2128   dits[0] = 0.3;
2129   dits[1] = 0.05;
2130   dits[2] = 0.15;
2131   gMC->Gsvolu("I033", "BOX ", idtmed[208], dits, 3);  
2132
2133   // ceramic pins holding the detectors
2134   dits[0] = 0;
2135   dits[1] = 0.05;
2136   dits[2] = 0.225;
2137   gMC->Gsvolu("I034", "TUBE", idtmed[277], dits, 3);  
2138
2139   // holders of cooling tubes
2140   I035dits[0] = 0.1;
2141   I035dits[1] = 0.15;
2142   I035dits[2] = 0.2;
2143   gMC->Gsvolu("I035", "TUBE", idtmed[208], I035dits, 3);
2144
2145   // top holders of microcables
2146   dits[0] = 0.2;
2147   dits[1] = 0.01;
2148   dits[2] = 0.05;
2149   gMC->Gsvolu("I036", "BOX ", idtmed[208], dits, 3);  
2150
2151   // inox cooling tubes - F.T. March,7-2001
2152   I037dits[0] = 0.093;
2153   I037dits[1] = 0.1;
2154   I037dits[2] = I018dits[2];
2155   gMC->Gsvolu("I037", "TUBE", idtmed[264], I037dits, 3);
2156
2157   if (fluid == 1) {
2158      // cooling water - F.T. March,7-2001
2159      I038dits[0] = 0;
2160      I038dits[1] = I037dits[0];
2161      I038dits[2] = I018dits[2];
2162      gMC->Gsvolu("I038", "TUBE", idtmed[211], I038dits, 3);  
2163   } else {
2164      // cooling freon - R.B. March,21-2001
2165      I038dits[0] = 0;
2166      I038dits[1] = I037dits[0];
2167      I038dits[2] = I018dits[2];
2168      gMC->Gsvolu("I038", "TUBE", idtmed[212], I038dits, 3);    
2169   }
2170   // -- block of the SDD electronics (heat bridge, chips, hybrid, anode microcable)
2171
2172   // SDD heat bridge - F.T. March,7-2001
2173   I039dits[0] = 1.1000;
2174   I039dits[1] = 0.0087;
2175   I039dits[2] = 3.2500;
2176   gMC->Gsvolu("I039", "BOX ", idtmed[268], I039dits, 3);  
2177
2178   // SDD clip part 1
2179   dits[0] = 0.25;
2180   dits[1] = 0.01;
2181   dits[2] = I039dits[2];
2182   gMC->Gsvolu("I040", "BOX ", idtmed[268], dits, 3);  
2183
2184   // SDD clip part 2
2185   I041dits[0] = 0.1;
2186   I041dits[1] = 0.12;
2187   I041dits[2] = I039dits[2];
2188   I041dits[3] = 90;
2189   I041dits[4] = 320;
2190   gMC->Gsvolu("I041", "TUBS", idtmed[268], I041dits, 5);  
2191
2192
2193   // SDD PASCAL - F.T. March,7-2001
2194   I042dits[0] = 0.5000;
2195   I042dits[1] = 0.0175;
2196   I042dits[2] = 0.5000;
2197   gMC->Gsvolu("I042", "BOX ", idtmed[206], I042dits, 3);  
2198
2199   // SDD AMBRA - F.T. March,7-2001
2200   I043dits[0] = 0.3500;
2201   I043dits[1] = 0.0175;
2202   I043dits[2] = 0.5000;
2203   gMC->Gsvolu("I043", "BOX ", idtmed[206], I043dits, 3);  
2204
2205   // SDD capacitors - F.T. March,7-2001
2206   I051dits[0] = 0.1400;
2207   I051dits[1] = 0.0350;
2208   I051dits[2] = 0.0625;
2209   gMC->Gsvolu("I051", "BOX ", idtmed[276], I051dits, 3);  
2210
2211   // SDD hybrid circuit - F.T. March,7-2001
2212   I052dits[0] = 1.725000;
2213   I052dits[1] = 0.003743;
2214   I052dits[2] = I039dits[2];
2215   gMC->Gsvolu("I052", "BOX ", idtmed[281], I052dits, 3);
2216
2217   // SDD anode microcable : changed - F.T. March,7-2001
2218   I044dits[0] = I018dits[2];
2219   I044dits[1] = I039dits[2];
2220   I044dits[2] = 0.00084;
2221   I044dits[3] = (15.189149/(I044dits[0]+I044dits[1]))/2;
2222   gMC->Gsvolu("I044", "TRD1", idtmed[282], I044dits, 4);  
2223   volI044 = ((2*I044dits[0] + 2*I044dits[1]) * 2*I044dits[2])/2 * 2*I044dits[3];
2224
2225   // SDD electronics box - F.T. March,7-2001
2226   I050dits[1] = I039dits[1]+I052dits[1]+I051dits[1]+I044dits[2];
2227   I050dits[0] = I018dits[1]/cos(30.*3.14159/180.)-I050dits[1]*sin(30.*3.14159/180.);
2228   I050dits[2] = I018dits[2];
2229   gMC->Gsvolu("I050", "BOX ", idtmed[209], I050dits, 3);
2230
2231   // SDD sensitive volume
2232   dits[0] = 3.50850;
2233   dits[1] = 0.01499; // not 0.015 because it is included into I302 which is 0.015
2234   dits[2] = 3.76320;
2235   gMC->Gsvolu("ITS3", "BOX ", idtmed[200], dits, 3);  
2236
2237   // Like for ITS3 - F.T. March,7-2001
2238   dits[0] = 3.50850;
2239   dits[1] = 0.01499; // not 0.015 because it is included into I402 which is 0.015
2240   dits[2] = 3.76320;
2241   gMC->Gsvolu("ITS4", "BOX ", idtmed[200], dits, 3);  
2242
2243
2244   // --- Define SSD volumes ------------------------------------------
2245
2246     
2247   dits[0] = 0;
2248   dits[1] = 360;
2249   dits[2] = 6;
2250   dits[3] = -57.45;
2251   dits[4] = 43.6;
2252   dits[5] = 48;  
2253   dits[6] = -49.15; 
2254   dits[7] = 43.6;
2255   dits[8] = 48;  
2256   dits[9] = -49.15;  
2257   dits[10] = 36.9;
2258   dits[11] = 48;  
2259   dits[12] = 50.55;  
2260   dits[13] = 36.9;
2261   dits[14] = 48;  
2262   dits[15] = 50.55;  
2263   dits[16] = 43.6;
2264   dits[17] = 48;  
2265   dits[18] = 57.45;
2266   dits[19] = 43.6;
2267   dits[20] = 48;   
2268   gMC->Gsvolu("IT56", "PCON", idtmed[220], dits, 21);   
2269   
2270   dits[0] =  3.4;
2271   dits[1] = 1.955;
2272   dits[2] = 56.5; 
2273   gMC->Gsvolu("I570", "BOX ", idtmed[204], dits, 3);  
2274   
2275   dits[0] = 3.75;
2276   dits[1] = 0.045;
2277   dits[2] = 50.975;
2278   gMC->Gsvolu("I569", "BOX ", idtmed[204], dits, 3);  
2279   
2280   dits[0] = 3.4;
2281   dits[1] = 1.955;
2282   dits[2] = 47; 
2283   gMC->Gsvolu("I571", "BOX ", idtmed[204], dits, 3);  
2284   
2285   dits[0] = 3.75;
2286   dits[1] = 0.045;
2287   dits[2] = 43.3;  
2288   gMC->Gsvolu("I565", "BOX ", idtmed[204], dits, 3);  
2289   
2290   dits[0] = 3.4;
2291   dits[1] = 1.955;
2292   dits[2] = 3.15;
2293   gMC->Gsvolu("I553", "BOX ", idtmed[204], dits, 3);  
2294   
2295   dits[0] = 3.405;
2296   dits[1] = 1.955;
2297   dits[2] = 1.955;
2298   gMC->Gsvolu("I523", "BOX ", idtmed[204], dits, 3);  
2299   
2300   dits[0] = 3.75;
2301   dits[1] = 0.015;
2302   dits[2] = 2.1;
2303   gMC->Gsvolu("I566", "BOX ", idtmed[206], dits, 3); 
2304   
2305   dits[0] = 3.4;
2306   dits[1] = 1.955;
2307   dits[2] = 3.15;
2308   gMC->Gsvolu("I544", "BOX ", idtmed[204], dits, 3);  
2309   
2310   dits[0] = 3.41;
2311   dits[1] = 1.955;
2312   dits[2] = 1.955;
2313   gMC->Gsvolu("I516", "BOX ", idtmed[204], dits, 3);  
2314   
2315   dits[0] = 3.75;
2316   dits[1] = 0.015;
2317   dits[2] = 2.1;
2318   gMC->Gsvolu("I562", "BOX ", idtmed[206], dits, 3);   
2319   
2320   if (fluid == 1) {
2321      dits[0] = 0;
2322      dits[1] = 0.07;
2323      dits[2] = 3.15;
2324      gMC->Gsvolu("I559", "TUBE", idtmed[211], dits, 3);  // set water as cooling fluid
2325   } else {
2326      dits[0] = 0;
2327      dits[1] = 0.07;
2328      dits[2] = 3.15;
2329      gMC->Gsvolu("I559", "TUBE", idtmed[212], dits, 3);  // set freon as cooling fluid
2330   }
2331   
2332   dits[0] = 0.07;
2333   dits[1] = 0.1;
2334   dits[2] = 3.15;
2335   gMC->Gsvolu("I560", "TUBE", idtmed[210], dits, 3);  
2336   
2337   dits[0] = 0.225;
2338   dits[1] = 0.195;
2339   dits[2] = 3.15;
2340   dits[3] = 0.025;
2341   gMC->Gsvolu("I558", "TRD1", idtmed[203], dits, 4);  
2342   
2343   dits[0] = 0.25;
2344   dits[1] = 0.22;
2345   dits[2] = 3.15;
2346   dits[3] = 0.025;
2347   gMC->Gsvolu("I557", "TRD1", idtmed[203], dits, 4);  
2348   
2349   dits[0] = 2.17;
2350   dits[1] = 0.035;
2351   dits[2] = 0.05;
2352   gMC->Gsvolu("I556", "BOX ", idtmed[203], dits, 3);  
2353   
2354   dits[0] = 2 ;
2355   dits[1] = 0.035;
2356   dits[2] = 0.05;
2357   gMC->Gsvolu("I554", "BOX ", idtmed[203], dits, 3);  
2358   
2359   dits[0] = 2.675;
2360   dits[1] = 0.035;
2361   dits[2] = 0.05;
2362   gMC->Gsvolu("I555", "BOX ", idtmed[203], dits, 3); 
2363   
2364   dits[0] = 0.3;
2365   dits[1] = 0.15;
2366   dits[2] = 0.15;
2367   gMC->Gsvolu("I561", "BOX ", idtmed[203], dits, 3);  
2368   
2369   dits[0] = 0.025;
2370   dits[1] = 0.025;
2371   dits[2] = 0.05;
2372   gMC->Gsvolu("I519", "BOX ", idtmed[214], dits, 3);  
2373   
2374   dits[0] = 0.304;
2375   dits[1] = 0.0275;
2376   dits[2] = 0.432;
2377   gMC->Gsvolu("I521", "BOX ", idtmed[206], dits, 3);   
2378   
2379   dits[0] = 0.16;
2380   dits[1] = 0.08;
2381   dits[2] = 0.08;
2382   gMC->Gsvolu("I520", "BOX ", idtmed[214], dits, 3);  
2383   
2384   dits[0] = 3.4;
2385   dits[1] = 0.015;
2386   dits[2] = 0.525;
2387   gMC->Gsvolu("I518", "BOX ", idtmed[203], dits, 3);  
2388   
2389   dits[0] = 0.15;
2390   dits[1] = 0.105;
2391   dits[2] = 0.29;
2392   dits[3] = 0.08;
2393   gMC->Gsvolu("I522", "TRD1", idtmed[203], dits, 4);  
2394   
2395   dits[0] = 0.07;
2396   dits[1] = 0.1;
2397   dits[2] = 1.955;
2398   gMC->Gsvolu("I542", "TUBE", idtmed[210], dits, 3);  
2399   
2400   if (fluid == 1) {
2401      dits[0] = 0;
2402      dits[1] = 0.07;
2403      dits[2] = 1.955;
2404      gMC->Gsvolu("I541", "TUBE", idtmed[211], dits, 3);  // set water as cooling fluid 
2405   } else {
2406      dits[0] = 0;
2407      dits[1] = 0.07;
2408      dits[2] = 1.955;
2409      gMC->Gsvolu("I541", "TUBE", idtmed[212], dits, 3);  // set freon as cooling fluid
2410   }
2411   
2412   dits[0] = 0.3;
2413   dits[1] = 0.15;
2414   dits[2] = 0.15;
2415   gMC->Gsvolu("I543", "BOX ", idtmed[203], dits, 3);  
2416   
2417   dits[0] = 0.25;
2418   dits[1] = 0.22;
2419   dits[2] = 1.955;
2420   dits[3] = 0.025;
2421   gMC->Gsvolu("I537", "TRD1", idtmed[203], dits, 4); 
2422   
2423   dits[0] = 0.225;
2424   dits[1] = 0.195;
2425   dits[2] = 1.955;
2426   dits[4] = 0.025;
2427   gMC->Gsvolu("I538", "TRD1", idtmed[203], dits, 4);  
2428   
2429   dits[0] = 2.17;
2430   dits[1] = 0.035;
2431   dits[2] = 0.05;
2432   gMC->Gsvolu("I536", "BOX ", idtmed[203], dits, 3);  
2433   
2434   dits[0] = 2.675;
2435   dits[1] = 0.035;
2436   dits[2] = 0.05;
2437   gMC->Gsvolu("I535", "BOX ", idtmed[203], dits, 3);   
2438   
2439   dits[0] = 2;
2440   dits[1] = 0.035;
2441   dits[2] = 0.05;
2442   gMC->Gsvolu("I534", "BOX ", idtmed[203], dits, 3);  
2443   
2444   dits[0] = 0;
2445   dits[1] = 0.05;
2446   dits[2] = 0.17;
2447   gMC->Gsvolu("I540", "TUBE", idtmed[203], dits, 3);  
2448   
2449   dits[0] = 0;
2450   dits[1] = 0.05;
2451   dits[2] = 0.205;
2452   gMC->Gsvolu("I539", "TUBE", idtmed[203], dits, 3);  
2453   
2454   dits[0] = 3.65;
2455   dits[1] = 0.015;
2456   dits[2] = 2;
2457   gMC->Gsvolu("ITS6", "BOX ", idtmed[200], dits, 3);  
2458   
2459   if (fluid == 1) {
2460      dits[0] = 0;
2461      dits[1] = 0.07;
2462      dits[2] = 3.15;
2463      gMC->Gsvolu("I550", "TUBE", idtmed[211], dits, 3);  // set water as cooling fluid
2464   } else {
2465      dits[0] = 0;
2466      dits[1] = 0.07;
2467      dits[2] = 3.15;
2468      gMC->Gsvolu("I550", "TUBE", idtmed[212], dits, 3);  // set freon as cooling fluid
2469   }
2470   
2471   dits[0] = 0.07;
2472   dits[1] = 0.1;
2473   dits[2] = 3.15;
2474   gMC->Gsvolu("I551", "TUBE", idtmed[210], dits, 3);  
2475   
2476   dits[0] = 0.225;
2477   dits[1] = 0.195;
2478   dits[2] = 3.15;
2479   dits[3] = 0.025;
2480   gMC->Gsvolu("I549", "TRD1", idtmed[203], dits, 4); 
2481   
2482   dits[0] = 0.25;
2483   dits[1] = 0.22;
2484   dits[2] = 3.15;
2485   dits[3] = 0.025;
2486   gMC->Gsvolu("I548", "TRD1", idtmed[203], dits, 4);  
2487   
2488   dits[0] = 2.17;
2489   dits[1] = 0.035;
2490   dits[2] = 0.05;
2491   gMC->Gsvolu("I547", "BOX ", idtmed[203], dits, 3);  
2492   
2493   dits[0] = 2;
2494   dits[1] = 0.035;
2495   dits[2] = 0.05;
2496   gMC->Gsvolu("I545", "BOX ", idtmed[203], dits, 3);   
2497   
2498   dits[0] = 2.675;
2499   dits[1] = 0.035;
2500   dits[2] = 0.05;
2501   gMC->Gsvolu("I546", "BOX ", idtmed[203], dits, 3);  
2502   
2503   dits[0] = 0.3;
2504   dits[1] = 0.15;
2505   dits[2] = 0.15;
2506   gMC->Gsvolu("I552", "BOX ", idtmed[203], dits, 3);  
2507   
2508   dits[0] = 0.304;
2509   dits[1] = 0.0275;
2510   dits[2] = 0.4322;
2511   gMC->Gsvolu("I515", "BOX ", idtmed[206], dits, 3);  
2512   
2513   dits[0] = 0.025;
2514   dits[1] = 0.025;
2515   dits[2] = 0.05;
2516   gMC->Gsvolu("I513", "BOX ", idtmed[214], dits, 3);  
2517   
2518   dits[0] = 0.16;
2519   dits[1] = 0.08;
2520   dits[2] = 0.08;
2521   gMC->Gsvolu("I514", "BOX ", idtmed[214], dits, 3);  
2522   
2523   dits[0] = 3.4;
2524   dits[1] = 0.015;
2525   dits[2] = 0.525;
2526   gMC->Gsvolu("I512", "BOX ", idtmed[203], dits, 3);  
2527   
2528   dits[0] = 0.225;
2529   dits[1] = 0.195;
2530   dits[2] = 1.955;
2531   dits[3] = 0.025;
2532   gMC->Gsvolu("I528", "TRD1", idtmed[203], dits, 4); 
2533   
2534   dits[0] = 0.25;
2535   dits[1] = 0.22;
2536   dits[2] = 1.955;
2537   dits[3] = 0.025;
2538   gMC->Gsvolu("I527", "TRD1", idtmed[203], dits, 4);  
2539   
2540   dits[0] = 2.17;
2541   dits[1] = 0.035;
2542   dits[2] = 0.05;
2543   gMC->Gsvolu("I526", "BOX ", idtmed[203], dits, 3);  
2544   
2545   dits[0] = 2.675;
2546   dits[1] = 0.035;
2547   dits[2] = 0.05;
2548   gMC->Gsvolu("I525", "BOX ", idtmed[203], dits, 3);  
2549    
2550   dits[0] = 2;
2551   dits[1] = 0.035;
2552   dits[2] = 0.05;
2553   gMC->Gsvolu("I524", "BOX ", idtmed[203], dits, 3);  
2554    
2555   dits[0] = 0;
2556   dits[1] = 0.05;
2557   dits[2] = 0.205;
2558   gMC->Gsvolu("I529", "TUBE", idtmed[203], dits, 3);  
2559    
2560   dits[0] = 0;
2561   dits[1] = 0.05;
2562   dits[2] = 0.17;
2563   gMC->Gsvolu("I530", "TUBE", idtmed[203], dits, 3);  
2564    
2565   dits[0] = 0.15;
2566   dits[1] = 0.105;
2567   dits[2] = 0.29;
2568   dits[3] = 0.08;
2569   gMC->Gsvolu("I517", "TRD1", idtmed[203], dits, 4);  
2570   
2571   if (fluid == 1) {
2572      dits[0] = 0;
2573      dits[1] = 0.07;
2574      dits[2] = 1.955;
2575      gMC->Gsvolu("I531", "TUBE", idtmed[211], dits, 3);  // set water as cooling fluid
2576   } else {
2577      dits[0] = 0;
2578      dits[1] = 0.07;
2579      dits[2] = 1.955;
2580      gMC->Gsvolu("I531", "TUBE", idtmed[212], dits, 3);  // set freon as cooling fluid
2581   }
2582      
2583   dits[0] = 0.07;
2584   dits[1] = 0.1;
2585   dits[2] = 1.955;
2586   gMC->Gsvolu("I532", "TUBE", idtmed[210], dits, 3);  
2587  
2588   dits[0] = 0.3;
2589   dits[1] = 0.15;
2590   dits[2] = 0.15;
2591   gMC->Gsvolu("I533", "BOX ", idtmed[203], dits, 3);  
2592   
2593   dits[0] = 3.65;
2594   dits[1] = 0.015;
2595   dits[2] = 2;
2596   gMC->Gsvolu("ITS5", "BOX ", idtmed[200], dits, 3);  
2597
2598
2599
2600   // --- Define volumes of shield of SPD ----------------
2601
2602
2603   dits[0] = 8.37;
2604   dits[1] = 9.93;
2605   dits[2] = 25;
2606   gMC->Gsvolu("IC01", "TUBE", idtmed[289], dits, 3);   
2607
2608   dits[0] = 8.3;
2609   dits[1] = 9.995;
2610   dits[2] = 17.5/2.;
2611   gMC->Gsvolu("IC02", "TUBE", idtmed[289], dits, 3);    
2612   
2613  
2614   // --- Define volume of first cylinder between SPD and SDD --------------
2615   
2616   dits[0] = (21.-0.128)/2.;      
2617   dits[1] = 21./2.;
2618   dits[2] = 39.4;      
2619   gMC->Gsvolu("ICY1", "TUBE", idtmed[208], dits, 3);
2620          
2621   // --- Define volume of second cylinder between SDD and SSD --------------
2622
2623   dits[0] = (59.5-0.128)/2.;      
2624   dits[1] = 59.5/2.;
2625   dits[2] = 56.2;      // was 57
2626   gMC->Gsvolu("ICY2", "TUBE", idtmed[208], dits, 3);
2627
2628   // --- Define volumes of SDD cone ---------------------------------- 
2629
2630   dits[0] = 0;
2631   dits[1] = 360;
2632   dits[2] = 12;
2633   dits[3] = -59.7;
2634   dits[4] = 27;
2635   dits[5] = 28.6;
2636   dits[6] = -42.7;
2637   dits[7] = 10;
2638   dits[8] = 28.6;
2639   dits[9] = -34.65;
2640   dits[10] = 10;
2641   dits[11] = 28.6;
2642   dits[12] = -34.65;
2643   dits[13] = 10;
2644   dits[14] = 23.495;
2645   dits[15] = -23.7;
2646   dits[16] = 10;
2647   dits[17] = 23.495;
2648   dits[18] = -23.7;
2649   dits[19] = 10;
2650   dits[20] = 14.595;
2651   dits[21] = 23.7;
2652   dits[22] = 10;
2653   dits[23] = 14.595;
2654   dits[24] = 23.7;
2655   dits[25] = 10;
2656   dits[26] = 23.495;
2657   dits[27] = 34.65;
2658   dits[28] = 10;
2659   dits[29] = 23.495;
2660   dits[30] = 34.65;
2661   dits[31] = 10;
2662   dits[32] = 28.6;
2663   dits[33] = 42.7;
2664   dits[34] = 10;
2665   dits[35] = 28.6;
2666   dits[36] = 59.7;
2667   dits[37] = 27.2637;
2668   dits[38] = 28.6;             
2669   gMC->Gsvolu("IS02", "PCON", idtmed[204], dits, 39);
2670   
2671   dits[0] = 0;
2672   dits[1] = 360;
2673   dits[2] = 6;
2674   dits[3] = 38.65;
2675   dits[4] = 10.75;    
2676   dits[5] = 12.25;      
2677   dits[6] = 40.15;
2678   dits[7] = 10.75;
2679   dits[8] = 13.96;   
2680   dits[9] = 40.15;
2681   dits[10] = 12.46;  
2682   dits[11] = 13.96;
2683   dits[12] = 55.75;
2684   dits[13] = 27;
2685   dits[14] = 28.5;
2686   dits[15] = 55.75;
2687   dits[16] = 27;
2688   dits[17] = 28.5;
2689   dits[18] = 57.25;
2690   dits[19] = 27;
2691   dits[20] = 28.5;       
2692   gMC->Gsvolu("I093", "PCON", idtmed[272], dits, 21);  // SDD cone
2693
2694   dits[0] = 0;
2695   dits[1] = 50;
2696   dits[2] = 3;
2697   dits[3] = 39;  
2698   dits[4] = 14;
2699   dits[5] = 18.75;
2700   dits[6] = 46.7-3;
2701   dits[7] = 14;
2702   dits[8] = 18.75;
2703   dits[9] = 51.45-3;
2704   dits[10] = 18.75;
2705   dits[11] = 18.75;
2706   gMC->Gsvolu("I099", "PCON", idtmed[204], dits, 12); // SDD 3 cone hole
2707
2708   dits[0] = 0;
2709   dits[1] = 25;
2710   dits[2] = 3;
2711   dits[3] = 49;
2712   dits[4] = 23.4;
2713   dits[5] = 26.4;
2714   dits[6] = 56.1-3;
2715   dits[7] = 23.4;
2716   dits[8] = 26.4;
2717   dits[9] = 59.1-3;
2718   dits[10] = 26.4;
2719   dits[11] = 26.4;
2720   gMC->Gsvolu("I200", "PCON", idtmed[204], dits, 12); // SDD 4 cone hole
2721
2722   dits[0] = 10.0;
2723   dits[1] = 10.5;
2724   dits[2] = 0.25;
2725   gMC->Gsvolu("I090", "TUBE", idtmed[224], dits, 3);  // SDD cylinder flange
2726
2727   dits[0] = 21.95;
2728   dits[1] = 22.95;    
2729   dits[2] = 1;
2730   gMC->Gsvolu("I098", "TUBE", idtmed[283], dits, 3);    // ladder support on layer 4
2731
2732   dits[0] = 13.1;    
2733   dits[1] = 14.1;    
2734   dits[2] = 1;
2735   gMC->Gsvolu("I097", "TUBE", idtmed[283], dits, 3);    // ladder support on layer 3
2736
2737   dits[0] = 1;
2738   dits[1] = 1;
2739   dits[2] = 7.74;
2740   gMC->Gsvolu("I202", "BOX ", idtmed[272], dits, 3);
2741
2742   dits[0] = 1;
2743   dits[1] = 1;
2744   dits[2] = 9.14;
2745   gMC->Gsvolu("I203", "BOX ", idtmed[272], dits, 3);
2746
2747   dits[0] = 21.95;
2748   dits[1] = 22.95;
2749   dits[2] = 1;
2750   gMC->Gsvolu("I095", "TUBE", idtmed[224], dits, 3);
2751
2752   dits[0] = 3;
2753   dits[1] = 2.7;
2754   dits[2] = 1;
2755   dits[3] = 0.63;
2756   gMC->Gsvolu("I096", "TRD1", idtmed[264], dits, 4);
2757
2758   dits[0] = 13.1;
2759   dits[1] = 14.1;
2760   dits[2] = 1;
2761   gMC->Gsvolu("I094", "TUBE", idtmed[224], dits, 3);
2762   
2763   
2764   // --- Define volumes of SSD cone ----------------------------------    
2765             
2766
2767   dits[0] = 0;
2768   dits[1] = 360;
2769   dits[2] = 12;
2770   dits[3] = -zmax;
2771   dits[4] = 46;         
2772   dits[5] = 49.25;       
2773   dits[6] = -61.2;
2774   dits[7] = 28.7;
2775   dits[8] = 49.25;       
2776   dits[9] = -57.5;
2777   dits[10] = 28.7;
2778   dits[11] = 49.25;      
2779   dits[12] = -57.5;
2780   dits[13] = 28.7;
2781   dits[14] = 43.5;
2782   dits[15] = -49.2;
2783   dits[16] = 28.7;
2784   dits[17] = 43.5;
2785   dits[18] = -49.2;
2786   dits[19] = 28.7;
2787   dits[20] = 36.85;
2788   dits[21] = 50.6;
2789   dits[22] = 28.7;
2790   dits[23] = 36.85;
2791   dits[24] = 50.6;
2792   dits[25] = 28.7;
2793   dits[26] = 43.5;
2794   dits[27] = 57.5;
2795   dits[28] = 28.7;
2796   dits[29] = 43.5;
2797   dits[30] = 57.5;
2798   dits[31] = 28.7;
2799   dits[32] = 49.25;      
2800   dits[33] = 61.2;
2801   dits[34] = 28.7;
2802   dits[35] = 49.25;      
2803   dits[36] = zmax;
2804   dits[37] = 46;      
2805   dits[38] = 49.25;      
2806   gMC->Gsvolu("IS01", "PCON", idtmed[204], dits, 39);   // SSD cone mother volume
2807   
2808   dits[0] = 0;
2809   dits[1] = 360;
2810   dits[2] = 6;
2811   dits[3] = -zmax;  
2812   dits[4] = 47.75;  
2813   dits[5] = 49.25;  
2814   dits[6] = -zmax+2.;  
2815   dits[7] = 47.75;  
2816   dits[8] = 49.25;   
2817   dits[9] = -71.2819;
2818   dits[10] = 46.75;   
2819   dits[11] = 49.0319;
2820   dits[12] = -57.25;   // was 58.5 
2821   dits[13] = 32.9681;
2822   dits[14] = 34.75;
2823   dits[15] = -57.25;   // was 58.5   
2824   dits[16] = 30;
2825   dits[17] = 34.75;
2826   dits[18] = -55.75;   // was 57 
2827   dits[19] = 30;     
2828   dits[20] = 32.25;    // was 31.5 
2829   gMC->Gsvolu("I212", "PCON", idtmed[272], dits, 21);  // SSD cone
2830   
2831   dits[0] = 28.75;          
2832   dits[1] = 29.75;   
2833   dits[2] = 0.5;
2834   gMC->Gsvolu("I211", "TUBE", idtmed[224], dits, 3);   // SSD cylinder flange
2835   
2836   dits[0] = 35.8;   
2837   dits[1] = 36.8;   
2838   dits[2] = 1;
2839   gMC->Gsvolu("I217", "TUBE", idtmed[283], dits, 3);   // ladder support on layer 5 
2840   
2841   dits[0] = 41.4;  
2842   dits[1] = 42.4;  
2843   dits[2] = 1;
2844   gMC->Gsvolu("I219", "TUBE", idtmed[283], dits, 3);   // ladder support on layer 6
2845         
2846   dits[0] = 42.05+5.;       
2847   dits[1] = 42.55+5.;     
2848   dits[2] = 1.25;
2849   gMC->Gsvolu("I214", "TUBE", idtmed[224], dits, 3);   // layer 6 electronic support
2850                                                        // this will change after PPR
2851   dits[0] = 37.05+5.;   
2852   dits[1] = 37.55+5.;   
2853   dits[2] = 1.25;
2854   gMC->Gsvolu("I213", "TUBE", idtmed[224], dits, 3);   // layer 5 electronic support
2855                                                        // this will change after PPR
2856   dits[0] = 0;
2857   dits[1] = 25;
2858   dits[2] = 5;
2859   dits[3] = -zmax+3;
2860   dits[4] = 45.5;
2861   dits[5] = 45.5;
2862   dits[6] = -69.7+3;
2863   dits[7] = 37;
2864   dits[8] = 45.5;
2865   dits[9] = -68.5+3;
2866   dits[10] = 37;
2867   dits[11] = 45.5;
2868   dits[12] = -68.5+4.8;  
2869   dits[13] = 37;
2870   dits[14] = 45.5; 
2871   dits[15] = -63.5+4.8;
2872   dits[16] = 37;
2873   dits[17] = 45.5;   
2874   gMC->Gsvolu("I215", "PCON", idtmed[204], dits, 18);  // SSD cone hole 
2875  
2876   dits[0] = 0;
2877   dits[1] = 3.2;
2878   dits[2] = 9;
2879   dits[3] = -14;
2880   dits[4] = 30.5;
2881   dits[5] = 33.5;
2882   dits[6] = -9.85;
2883   dits[7] = 30.5;
2884   dits[8] = 33.5;
2885   dits[9] = -9.85;
2886   dits[10] = 30.5;
2887   dits[11] = 43.45;
2888   dits[12] = -7.85;
2889   dits[13] = 30.5;
2890   dits[14] = 43.45;
2891   dits[15] = -7.85;
2892   dits[16] = 30.5;
2893   dits[17] = 36.5;
2894   dits[18] = -7;
2895   dits[19] = 30.5;
2896   dits[20] = 36.5;
2897   dits[21] = -4;
2898   dits[22] = 33.0173;
2899   dits[23] = 36.5;
2900   dits[24] = -4;
2901   dits[25] = 33.0173;
2902   dits[26] = 36.80;
2903   dits[27] = -2;
2904   dits[28] = 34.6955;
2905   dits[29] = 36.80;
2906   gMC->Gsvolu("I216", "PCON", idtmed[272], dits, 30); // supports (1-6) of the ladders
2907        
2908        
2909   // --- Place SPD (option 'a') volumes into their mother volume IT12
2910   
2911   // SPD - option 'a' 
2912   // (this is NOT the default)
2913
2914   if (option == 1) {
2915
2916      gMC->Gspos("I12A",5,"IT12",0.0,0.0,0.0,idrotm[238],"MANY");
2917      gMC->Gspos("I12A",6,"IT12",0.0,0.0,0.0,idrotm[236],"MANY");
2918      gMC->Gspos("I12A",7,"IT12",0.0,0.0,0.0,idrotm[239],"MANY");
2919      gMC->Gspos("I12A",8,"IT12",0.0,0.0,0.0,idrotm[233],"MANY");
2920      gMC->Gspos("I12A",9,"IT12",0.0,0.0,0.0,idrotm[240],"MANY");
2921      gMC->Gspos("I12A",10,"IT12",0.0,0.0,0.0,idrotm[241],"MANY");
2922      gMC->Gspos("I12A",2,"IT12",0.0,0.0,0.0,idrotm[242],"MANY");
2923      gMC->Gspos("I12A",3,"IT12",0.0,0.0,0.0,idrotm[234],"MANY");
2924      gMC->Gspos("I12A",4,"IT12",0.0,0.0,0.0,idrotm[243],"MANY");
2925      gMC->Gspos("I12A",1,"IT12",0.0,0.0,0.0,0,"MANY");
2926      deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(270.*TMath::Pi()/180.);  // see definition of idrotm[244]
2927           deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(270.*TMath::Pi()/180.);  // see definition of idrotm[244]
2928      gMC->Gspos("I10A",2,"I12A",0.203+deltax,3.8206+deltay,0.0,idrotm[244],"ONLY");       
2929      deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(252.*TMath::Pi()/180.);  // see definition of idrotm[245]
2930           deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(252.*TMath::Pi()/180.);  // see definition of idrotm[245]  
2931      gMC->Gspos("I10A",1,"I12A",1.4531+deltax,3.8152+deltay,0.0,idrotm[245],"ONLY");
2932      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(40.*TMath::Pi()/180.);  // see definition of idrotm[246]
2933           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(40.*TMath::Pi()/180.);  // see definition of idrotm[246]  
2934      gMC->Gspos("I20A",1,"I12A",3.0174+deltax,6.5143+deltay,0.0,idrotm[246],"ONLY");
2935      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(49.*TMath::Pi()/180.);  // see definition of idrotm[247]
2936           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(49.*TMath::Pi()/180.);  // see definition of idrotm[247] 
2937      gMC->Gspos("I20A",2,"I12A",1.9612+deltax,6.9062+deltay,0.0,idrotm[247],"ONLY");
2938      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(58.*TMath::Pi()/180.);  // see definition of idrotm[248]
2939           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(58.*TMath::Pi()/180.);  // see definition of idrotm[248] 
2940      gMC->Gspos("I20A",3,"I12A",0.8567+deltax,7.1279+deltay,0.0,idrotm[248],"ONLY");
2941      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(67.*TMath::Pi()/180.);  // see definition of idrotm[249]
2942           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(67.*TMath::Pi()/180.);  // see definition of idrotm[249] 
2943      gMC->Gspos("I20A",4,"I12A",-0.2689+deltax,7.1742+deltay,0.0,idrotm[249],"ONLY");
2944      gMC->Gspos("I123",2,"I12A",-0.2978,5.5196,0.0,idrotm[214],"ONLY");
2945      gMC->Gspos("I121",2,"I12A",-0.2385,4.1518,0.0,idrotm[213],"ONLY");
2946      gMC->Gspos("I122",2,"I12A",-0.2968,4.0207,0.0,idrotm[212],"ONLY");
2947      gMC->Gspos("I120",2,"I12A",-0.3672,3.9056,0.0,0,"ONLY");
2948      gMC->Gspos("I144",1,"I12A",-0.2538,3.8556,0.0,0,"ONLY");
2949      gMC->Gspos("I113",3,"I12A",0.1095,3.9056,0.0,0,"ONLY");
2950      gMC->Gspos("I143",1,"I12A",0.4365,3.8556,0.0,idrotm[236],"ONLY");
2951      gMC->Gspos("I142",1,"I12A",0.5136,3.9056,0.0,idrotm[235],"ONLY");
2952      gMC->Gspos("I141",1,"I12A",0.5636,3.9752,0.0,idrotm[201],"ONLY");
2953      gMC->Gspos("I140",1,"I12A",0.6336,4.0447,0.0,idrotm[234],"ONLY");
2954      gMC->Gspos("I139",1,"I12A",0.8297,4.0545,0.0,idrotm[207],"ONLY");
2955      gMC->Gspos("I113",5,"I12A",1.2575,3.9681,0.0,idrotm[207],"ONLY");
2956      gMC->Gspos("I138",1,"I12A",1.66,3.7848,0.0,idrotm[207],"ONLY");
2957      gMC->Gspos("I137",1,"I12A",1.8556,3.7738,0.0,idrotm[233],"ONLY");
2958      gMC->Gspos("I136",1,"I12A",2.6224,4.874,0.0,idrotm[232],"ONLY");
2959      gMC->Gspos("I135",1,"I12A",3.2967,6.0337,0.0,idrotm[231],"ONLY");
2960      gMC->Gspos("I134",1,"I12A",3.266,6.1636,0.0,idrotm[230],"ONLY");
2961      gMC->Gspos("I113",1,"I12A",2.9903,6.4144,0.0,idrotm[211],"ONLY");
2962      gMC->Gspos("I133",3,"I12A",2.7631,6.7627,0.0,idrotm[230],"ONLY");
2963      gMC->Gspos("I132",3,"I12A",2.62,6.8555,0.0,idrotm[229],"ONLY");
2964      gMC->Gspos("I131",3,"I12A",2.648,6.6023,0.0,idrotm[228],"ONLY");
2965      gMC->Gspos("I130",3,"I12A",2.6569,6.3431,0.0,idrotm[227],"ONLY");
2966      gMC->Gspos("I129",3,"I12A",2.3906,6.4819,0.0,idrotm[226],"ONLY");
2967      gMC->Gspos("I113",2,"I12A",1.9488,6.7998,0.0,idrotm[210],"ONLY");
2968      gMC->Gspos("I133",2,"I12A",1.6699,7.1085,0.0,idrotm[226],"ONLY");
2969      gMC->Gspos("I132",2,"I12A",1.5142,7.1777,0.0,idrotm[225],"ONLY");
2970      gMC->Gspos("I131",2,"I12A",1.5814,6.932,0.0,idrotm[224],"ONLY");
2971      gMC->Gspos("I130",2,"I12A",1.6308,6.6774,0.0,idrotm[223],"ONLY");
2972      gMC->Gspos("I129",2,"I12A",1.346,6.7728,0.0,idrotm[222],"ONLY");
2973      gMC->Gspos("I113",6,"I12A",0.8599,7.0176,0.0,idrotm[209],"ONLY");
2974      gMC->Gspos("I133",1,"I12A",0.5362,7.2789,0.0,idrotm[222],"ONLY");
2975      gMC->Gspos("I132",1,"I12A",0.3715,7.3228,0.0,idrotm[221],"ONLY");
2976      gMC->Gspos("I131",1,"I12A",0.4763,7.0907,0.0,idrotm[220],"ONLY");
2977      gMC->Gspos("I130",1,"I12A",0.5649,6.8469,0.0,idrotm[219],"ONLY");
2978      gMC->Gspos("I129",1,"I12A",0.2688,6.8966,0.0,idrotm[218],"ONLY");
2979      gMC->Gspos("I113",4,"I12A",-0.2497,7.0624,0.0,idrotm[208],"ONLY");
2980      gMC->Gspos("I128",1,"I12A",-0.6103,7.2698,0.0,idrotm[218],"ONLY");
2981      gMC->Gspos("I126",2,"I12A",-0.7799,7.2874,0.0,idrotm[217],"ONLY");
2982      gMC->Gspos("I125",2,"I12A",-0.6315,7.0883,0.0,idrotm[216],"ONLY");
2983      gMC->Gspos("I124",2,"I12A",-0.4965,6.8742,0.0,idrotm[215],"ONLY");
2984      gMC->Gspos("I103",3,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],-3.536,idrotm[237],"ONLY");
2985      gMC->Gspos("I103",4,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],-10.708,idrotm[237],"ONLY");
2986      gMC->Gspos("I103",1,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],10.708,0,"ONLY");
2987      gMC->Gspos("I103",2,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],3.536,0,"ONLY");
2988      gMC->Gspos("I105",1,"I10A",-0.05,0.01,-16.844,idrotm[237],"ONLY");
2989      gMC->Gspos("I105",2,"I10A",-0.05,0.01,16.844,0,"ONLY");
2990      gMC->Gspos("I104",1,"I10A",0.0,-di10a[1]+di104[1],0.0,0,"ONLY");
2991      gMC->Gspos("I1D3",3,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],-3.536,idrotm[237],"ONLY");
2992      gMC->Gspos("I1D3",4,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],-10.708,idrotm[237],"ONLY");
2993      gMC->Gspos("I1D3",1,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],10.708,0,"ONLY");
2994      gMC->Gspos("I1D3",2,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],3.536,0,"ONLY");
2995      gMC->Gspos("I105",3,"I20A",-0.05,0.01,-16.844,idrotm[237],"ONLY");
2996      gMC->Gspos("I105",4,"I20A",-0.05,0.01,16.844,0,"ONLY");
2997      gMC->Gspos("I104",2,"I20A",0.0,-di20a[1]+di104[1],0.0,0,"ONLY");
2998      gMC->Gspos("I112",2,"I113",0.25,0.02,0.0,idrotm[206],"ONLY");
2999      gMC->Gspos("I111",2,"I113",0.1318,-0.0008,0.0,idrotm[205],"ONLY");
3000      gMC->Gspos("I118",1,"I113",0.0,-0.0454,0.0,0,"ONLY");
3001      gMC->Gspos("I110",1,"I113",0.0,0.0492,0.0,0,"ONLY");
3002      gMC->Gspos("I114",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3003      gMC->Gspos("I115",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3004      gMC->Gspos("I115",2,"I113",-0.063,0.0042,0.0,idrotm[201],"ONLY");
3005      gMC->Gspos("I114",2,"I113",-0.063,0.0042,0.0,idrotm[201],"ONLY");
3006      gMC->Gspos("I116",1,"I113",0.0,0.0042,0.0,0,"ONLY");
3007      gMC->Gspos("I111",1,"I113",-0.1318,-0.0008,0.0,idrotm[204],"ONLY");
3008      gMC->Gspos("I112",1,"I113",-0.25,0.02,0.0,idrotm[203],"ONLY");
3009      gMC->Gspos("I101",1,"I103",-0.088,ddet1,0.0,0,"ONLY");
3010      gMC->Gspos("I102",1,"I103",0.0,-dchip1,-2.8,0,"ONLY");
3011      gMC->Gspos("I102",2,"I103",0.0,-dchip1,-1.4,0,"ONLY");
3012      gMC->Gspos("I102",3,"I103",0.0,-dchip1,0.0,0,"ONLY");
3013      gMC->Gspos("I102",4,"I103",0.0,-dchip1,1.4,0,"ONLY");
3014      gMC->Gspos("I102",5,"I103",0.0,-dchip1,2.8,0,"ONLY");
3015      gMC->Gspos("I1D1",1,"I1D3",-0.088,ddet2,0.0,0,"ONLY");
3016      gMC->Gspos("I1D2",1,"I1D3",0.0,-dchip2,-2.8,0,"ONLY");
3017      gMC->Gspos("I1D2",2,"I1D3",0.0,-dchip2,-1.4,0,"ONLY");
3018      gMC->Gspos("I1D2",3,"I1D3",0.0,-dchip2,0.0,0,"ONLY");
3019      gMC->Gspos("I1D2",4,"I1D3",0.0,-dchip2,1.4,0,"ONLY");
3020      gMC->Gspos("I1D2",5,"I1D3",0.0,-dchip2,2.8,0,"ONLY");
3021      gMC->Gspos("I117",1,"I116",0.0,0.0,0.0,0,"ONLY");
3022      gMC->Gspos("ITS1",1,"I101",0.0,0.0,0.0,0,"ONLY");
3023      gMC->Gspos("ITS2",1,"I1D1",0.0,0.0,0.0,0,"ONLY");
3024      gMC->Gspos("I650",16,"IT12",0.0,0.0,22.0,idrotm[1104],"MANY");
3025      gMC->Gspos("I650",20,"IT12",0.0,0.0,22.0,idrotm[1130],"MANY");
3026      gMC->Gspos("I650",18,"IT12",0.0,0.0,22.0,idrotm[1117],"MANY");
3027      gMC->Gspos("I650",1,"IT12",0.0,0.0,22.0,0,"MANY");
3028      gMC->Gspos("I650",4,"IT12",0.0,0.0,22.0,idrotm[1106],"MANY");
3029      gMC->Gspos("I650",6,"IT12",0.0,0.0,22.0,idrotm[1039],"MANY");
3030      gMC->Gspos("I650",8,"IT12",0.0,0.0,22.0,idrotm[1107],"MANY");
3031      gMC->Gspos("I650",10,"IT12",0.0,0.0,22.0,idrotm[1065],"MANY");
3032      gMC->Gspos("I650",12,"IT12",0.0,0.0,22.0,idrotm[1078],"MANY");
3033      gMC->Gspos("I650",14,"IT12",0.0,0.0,22.0,idrotm[1091],"MANY");
3034      gMC->Gspos("I650",19,"IT12",0.0,0.0,-22.0,idrotm[1108],"MANY");
3035      gMC->Gspos("I650",2,"IT12",0.0,0.0,-22.0,idrotm[1109],"MANY");
3036      gMC->Gspos("I650",3,"IT12",0.0,0.0,-22.0,idrotm[1110],"MANY");
3037      gMC->Gspos("I650",5,"IT12",0.0,0.0,-22.0,idrotm[1111],"MANY");
3038      gMC->Gspos("I650",7,"IT12",0.0,0.0,-22.0,idrotm[1112],"MANY");
3039      gMC->Gspos("I650",9,"IT12",0.0,0.0,-22.0,idrotm[1113],"MANY");
3040      gMC->Gspos("I650",11,"IT12",0.0,0.0,-22.0,idrotm[1114],"MANY");
3041      gMC->Gspos("I650",13,"IT12",0.0,0.0,-22.0,idrotm[1115],"MANY");
3042      gMC->Gspos("I650",15,"IT12",0.0,0.0,-22.0,idrotm[1116],"MANY");
3043      gMC->Gspos("I650",17,"IT12",0.0,0.0,-22.0,idrotm[1118],"MANY");
3044      gMC->Gspos("I666",1,"I650",0.0,0.0,0.25,idrotm[1003],"MANY");
3045      gMC->Gspos("I667",1,"I650",0.1102,0.9945,0.45,idrotm[1088],"ONLY");
3046      gMC->Gspos("I669",3,"I650",0.1883,4.0372,-3.2,0,"ONLY");
3047      gMC->Gspos("I671",3,"I650",0.1883,4.0372,0.6,0,"ONLY");
3048      gMC->Gspos("I669",2,"I650",1.3343,4.0609,-3.2,0,"ONLY");
3049      gMC->Gspos("I671",2,"I650",1.3343,4.0609,0.6,0,"ONLY");
3050      gMC->Gspos("I669",6,"I650",2.9567,6.1959,-3.2,idrotm[1089],"ONLY");
3051      gMC->Gspos("I671",6,"I650",2.9567,6.1959,0.6,idrotm[1089],"ONLY");
3052      gMC->Gspos("I669",5,"I650",1.9511,6.5822,-3.2,idrotm[1011],"ONLY");
3053      gMC->Gspos("I671",5,"I650",1.9511,6.5822,0.6,idrotm[1011],"ONLY");
3054      gMC->Gspos("I669",4,"I650",0.8974,6.8064,-3.2,idrotm[1090],"ONLY");
3055      gMC->Gspos("I671",4,"I650",0.8974,6.8064,0.6,idrotm[1090],"ONLY");
3056      gMC->Gspos("I669",1,"I650",-0.1784,6.863,-3.2,0,"ONLY");
3057      gMC->Gspos("I671",1,"I650",-0.1784,6.863,0.6,0,"ONLY");
3058      gMC->Gspos("I673",1,"I650",0.2173,4.8037,1.8,0,"ONLY");
3059      gMC->Gspos("I673",6,"I650",1.5093,4.5605,1.8,0,"ONLY");
3060      gMC->Gspos("I673",4,"I650",-0.173,6.2531,1.8,idrotm[1092],"ONLY");
3061      gMC->Gspos("I673",3,"I650",0.8073,6.2032,1.8,idrotm[1093],"ONLY");
3062      gMC->Gspos("I673",2,"I650",1.7678,6.0005,1.8,idrotm[1094],"ONLY");
3063      gMC->Gspos("I673",5,"I650",2.6847,5.6501,1.8,0,"ONLY");
3064      gMC->Gspos("I676",2,"I650",1.7618,5.2269,2.5,0,"ONLY");
3065      gMC->Gspos("I676",1,"I650",0.4018,5.5869,2.5,0,"ONLY");
3066      gMC->Gspos("I668",1,"I667",0.0,0.0,0.0,0,"ONLY");
3067      gMC->Gspos("I670",1,"I669",0.0,0.0,0.0,0,"ONLY");
3068      gMC->Gspos("I672",1,"I671",0.0,0.0,0.0,0,"ONLY");
3069      gMC->Gspos("I674",1,"I673",0.0,0.0,0.0,0,"MANY");
3070      gMC->Gspos("I675",1,"I673",0.0,0.0,-0.5,0,"ONLY");
3071      gMC->Gspos("I677",1,"I676",0.0,0.0,0.0,0,"MANY");
3072      gMC->Gspos("I678",1,"I676",0.0,0.0,-0.95,0,"ONLY");    
3073
3074   }
3075
3076
3077   // --- Place SPD (option 'b') volumes into their mother volume IT12
3078   
3079   // SPD - option 'b' 
3080   // (this is the default)
3081
3082   if (option == 2) {
3083
3084      gMC->Gspos("I12B",1,"IT12",0.0,0.0,0.0,0,"MANY");
3085      gMC->Gspos("I12B",8,"IT12",0.0,0.0,0.0,idrotm[233],"MANY");
3086      gMC->Gspos("I12B",7,"IT12",0.0,0.0,0.0,idrotm[244],"MANY");
3087      gMC->Gspos("I12B",6,"IT12",0.0,0.0,0.0,idrotm[236],"MANY");
3088      gMC->Gspos("I12B",2,"IT12",0.0,0.0,0.0,idrotm[245],"MANY");
3089      gMC->Gspos("I12B",3,"IT12",0.0,0.0,0.0,idrotm[234],"MANY");
3090      gMC->Gspos("I12B",4,"IT12",0.0,0.0,0.0,idrotm[246],"MANY");
3091      gMC->Gspos("I12B",5,"IT12",0.0,0.0,0.0,idrotm[247],"MANY");
3092      gMC->Gspos("I12B",9,"IT12",0.0,0.0,0.0,idrotm[248],"MANY");
3093      gMC->Gspos("I12B",10,"IT12",0.0,0.0,0.0,idrotm[249],"MANY");
3094      deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(270.*TMath::Pi()/180.);  // see definition of idrotm[238]
3095           deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(270.*TMath::Pi()/180.);  // see definition of idrotm[238]
3096      gMC->Gspos("I10B",2,"I12B",0.203+deltax,3.8206+deltay,0.0,idrotm[238],"ONLY");       
3097      deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(252.*TMath::Pi()/180.);  // see definition of idrotm[239]
3098           deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(252.*TMath::Pi()/180.);  // see definition of idrotm[239]  
3099      gMC->Gspos("I10B",1,"I12B",1.4531+deltax,3.8152+deltay,0.0,idrotm[239],"ONLY");
3100      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(40.*TMath::Pi()/180.);  // see definition of idrotm[240]
3101           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(40.*TMath::Pi()/180.);  // see definition of idrotm[240]  
3102      gMC->Gspos("I20B",1,"I12B",3.0174+deltax,6.5143+deltay,0.0,idrotm[240],"ONLY");
3103      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(49.*TMath::Pi()/180.);  // see definition of idrotm[241]
3104           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(49.*TMath::Pi()/180.);  // see definition of idrotm[241] 
3105      gMC->Gspos("I20B",2,"I12B",1.9612+deltax,6.9062+deltay,0.0,idrotm[241],"ONLY");
3106      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(58.*TMath::Pi()/180.);  // see definition of idrotm[242]
3107           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(58.*TMath::Pi()/180.);  // see definition of idrotm[242] 
3108      gMC->Gspos("I20B",3,"I12B",0.8567+deltax,7.1279+deltay,0.0,idrotm[242],"ONLY");
3109      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(67.*TMath::Pi()/180.);  // see definition of idrotm[243]
3110           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(67.*TMath::Pi()/180.);  // see definition of idrotm[243] 
3111      gMC->Gspos("I20B",4,"I12B",-0.2689+deltax,7.1742+deltay,0.0,idrotm[243],"ONLY");
3112      gMC->Gspos("I123",1,"I12B",-0.2978,5.5196,0.0,idrotm[214],"ONLY");
3113      gMC->Gspos("I121",1,"I12B",-0.2385,4.1518,0.0,idrotm[213],"ONLY");
3114      gMC->Gspos("I122",1,"I12B",-0.2968,4.0207,0.0,idrotm[212],"ONLY");
3115      gMC->Gspos("I120",1,"I12B",-0.3672,3.9056,0.0,0,"ONLY");
3116      gMC->Gspos("I144",1,"I12B",-0.2538,3.8556,0.0,0,"ONLY");
3117      gMC->Gspos("I113",3,"I12B",0.1095,3.9056,0.0,0,"ONLY");
3118      gMC->Gspos("I143",1,"I12B",0.4365,3.8556,0.0,idrotm[236],"ONLY");
3119      gMC->Gspos("I142",1,"I12B",0.5136,3.9056,0.0,idrotm[235],"ONLY");
3120      gMC->Gspos("I141",1,"I12B",0.5636,3.9752,0.0,idrotm[237],"ONLY");
3121      gMC->Gspos("I140",1,"I12B",0.6336,4.0447,0.0,idrotm[234],"ONLY");
3122      gMC->Gspos("I139",1,"I12B",0.8297,4.0545,0.0,idrotm[207],"ONLY");
3123      gMC->Gspos("I113",5,"I12B",1.2575,3.9681,0.0,idrotm[207],"ONLY");
3124      gMC->Gspos("I138",1,"I12B",1.66,3.7848,0.0,idrotm[207],"ONLY");
3125      gMC->Gspos("I137",1,"I12B",1.8556,3.7738,0.0,idrotm[233],"ONLY");
3126      gMC->Gspos("I136",1,"I12B",2.6224,4.874,0.0,idrotm[232],"ONLY");
3127      gMC->Gspos("I135",1,"I12B",3.2967,6.0337,0.0,idrotm[231],"ONLY");
3128      gMC->Gspos("I134",1,"I12B",3.266,6.1636,0.0,idrotm[230],"ONLY");
3129      gMC->Gspos("I113",1,"I12B",2.9903,6.4144,0.0,idrotm[211],"ONLY");
3130      gMC->Gspos("I133",3,"I12B",2.7631,6.7627,0.0,idrotm[230],"ONLY");
3131      gMC->Gspos("I132",3,"I12B",2.62,6.8555,0.0,idrotm[229],"ONLY");
3132      gMC->Gspos("I131",3,"I12B",2.648,6.6023,0.0,idrotm[228],"ONLY");
3133      gMC->Gspos("I130",3,"I12B",2.6569,6.3431,0.0,idrotm[227],"ONLY");
3134      gMC->Gspos("I129",3,"I12B",2.3906,6.4819,0.0,idrotm[226],"ONLY");
3135      gMC->Gspos("I113",2,"I12B",1.9488,6.7998,0.0,idrotm[210],"ONLY");
3136      gMC->Gspos("I133",2,"I12B",1.6699,7.1085,0.0,idrotm[226],"ONLY");
3137      gMC->Gspos("I132",2,"I12B",1.5142,7.1777,0.0,idrotm[225],"ONLY");
3138      gMC->Gspos("I131",2,"I12B",1.5814,6.932,0.0,idrotm[224],"ONLY");
3139      gMC->Gspos("I130",2,"I12B",1.6308,6.6774,0.0,idrotm[223],"ONLY");
3140      gMC->Gspos("I129",2,"I12B",1.346,6.7728,0.0,idrotm[222],"ONLY");
3141      gMC->Gspos("I113",6,"I12B",0.8599,7.0176,0.0,idrotm[209],"ONLY");
3142      gMC->Gspos("I133",1,"I12B",0.5362,7.2789,0.0,idrotm[222],"ONLY");
3143      gMC->Gspos("I132",1,"I12B",0.3715,7.3228,0.0,idrotm[221],"ONLY");
3144      gMC->Gspos("I131",1,"I12B",0.4763,7.0907,0.0,idrotm[220],"ONLY");
3145      gMC->Gspos("I130",1,"I12B",0.5649,6.8469,0.0,idrotm[219],"ONLY");
3146      gMC->Gspos("I129",1,"I12B",0.2688,6.8966,0.0,idrotm[218],"ONLY");
3147      gMC->Gspos("I113",4,"I12B",-0.2497,7.0624,0.0,idrotm[208],"ONLY");
3148      gMC->Gspos("I128",1,"I12B",-0.6103,7.2698,0.0,idrotm[218],"ONLY");
3149      gMC->Gspos("I126",1,"I12B",-0.7799,7.2874,0.0,idrotm[217],"ONLY");
3150      gMC->Gspos("I125",1,"I12B",-0.6315,7.0883,0.0,idrotm[216],"ONLY");
3151      gMC->Gspos("I124",1,"I12B",-0.4965,6.8742,0.0,idrotm[215],"ONLY");
3152      gMC->Gspos("I105",3,"I10B",-0.05,-0.01,-16.844,idrotm[201],"ONLY");
3153      gMC->Gspos("I105",4,"I10B",-0.05,-0.01,16.844,0,"ONLY");
3154      gMC->Gspos("I107",2,"I10B",-0.0455,-di10b[1]+di107[1],3.536,0,"ONLY");
3155      gMC->Gspos("I107",1,"I10B",-0.0455,-di10b[1]+di107[1],10.708,0,"ONLY");
3156      gMC->Gspos("I107",4,"I10B",-0.0455,-di10b[1]+di107[1],-10.708,idrotm[201],"ONLY");
3157      gMC->Gspos("I107",3,"I10B",-0.0455,-di10b[1]+di107[1],-3.536,idrotm[201],"ONLY");
3158      gMC->Gspos("I109",1,"I10B",-0.138,0.015,-16.844,idrotm[201],"ONLY");
3159      gMC->Gspos("I109",2,"I10B",-0.138,0.015,16.844,0,"ONLY");
3160      gMC->Gspos("I108",1,"I10B",-0.138,-di10b[1]+2.*di107[1]+di108[1],0.0,0,"ONLY");
3161      gMC->Gspos("I105",1,"I20B",-0.05,-0.01,-16.844,idrotm[201],"ONLY");
3162      gMC->Gspos("I105",2,"I20B",-0.05,-0.01,16.844,0,"ONLY");
3163      gMC->Gspos("I1D7",2,"I20B",-0.0455,-di20b[1]+di1d7[1],3.536,0,"ONLY");
3164      gMC->Gspos("I1D7",1,"I20B",-0.0455,-di20b[1]+di1d7[1],10.708,0,"ONLY");
3165      gMC->Gspos("I1D7",4,"I20B",-0.0455,-di20b[1]+di1d7[1],-10.708,idrotm[201],"ONLY");
3166      gMC->Gspos("I1D7",3,"I20B",-0.0455,-di20b[1]+di1d7[1],-3.536,idrotm[201],"ONLY");
3167      gMC->Gspos("I109",3,"I20B",-0.138,0.015,-16.844,idrotm[201],"ONLY");
3168      gMC->Gspos("I109",4,"I20B",-0.138,0.015,16.844,0,"ONLY");
3169      gMC->Gspos("I108",2,"I20B",-0.138,-di20b[1]+2.*di1d7[1]+di108[1],0.0,0,"ONLY");
3170      gMC->Gspos("I112",2,"I113",0.25,0.02,0.0,idrotm[206],"ONLY");
3171      gMC->Gspos("I111",2,"I113",0.1318,-0.0008,0.0,idrotm[205],"ONLY");
3172      gMC->Gspos("I118",1,"I113",0.0,-0.0454,0.0,0,"ONLY");
3173      gMC->Gspos("I110",1,"I113",0.0,0.0492,0.0,0,"ONLY");
3174      gMC->Gspos("I114",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3175      gMC->Gspos("I115",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3176      gMC->Gspos("I115",2,"I113",-0.063,0.0042,0.0,idrotm[237],"ONLY");
3177      gMC->Gspos("I114",2,"I113",-0.063,0.0042,0.0,idrotm[237],"ONLY");
3178      gMC->Gspos("I116",1,"I113",0.0,0.0042,0.0,0,"ONLY");
3179      gMC->Gspos("I111",1,"I113",-0.1318,-0.0008,0.0,idrotm[204],"ONLY");
3180      gMC->Gspos("I112",1,"I113",-0.25,0.02,0.0,idrotm[203],"ONLY");
3181      gMC->Gspos("I106",1,"I107",0.0,-dchip1,-1.4,0,"ONLY");
3182      gMC->Gspos("I106",2,"I107",0.0,-dchip1,0.0,0,"ONLY");
3183      gMC->Gspos("I106",3,"I107",0.0,-dchip1,1.4,0,"ONLY");
3184      gMC->Gspos("I106",4,"I107",0.0,-dchip1,2.8,0,"ONLY");
3185      gMC->Gspos("I106",5,"I107",0.0,-dchip1,-2.8,0,"ONLY");
3186      gMC->Gspos("I101",1,"I107",0.0,ddet1,0.0,0,"ONLY");
3187      gMC->Gspos("I1D6",1,"I1D7",0.0,-dchip2,-1.4,0,"ONLY");
3188      gMC->Gspos("I1D6",2,"I1D7",0.0,-dchip2,0.0,0,"ONLY");
3189      gMC->Gspos("I1D6",3,"I1D7",0.0,-dchip2,1.4,0,"ONLY");
3190      gMC->Gspos("I1D6",4,"I1D7",0.0,-dchip2,2.8,0,"ONLY");
3191      gMC->Gspos("I1D6",5,"I1D7",0.0,-dchip2,-2.8,0,"ONLY");
3192      gMC->Gspos("I1D1",1,"I1D7",0.0,ddet2,0.0,0,"ONLY");
3193      gMC->Gspos("I117",1,"I116",0.0,0.0,0.0,0,"ONLY");
3194      gMC->Gspos("ITS1",1,"I101",0.0,0.0,0.0,0,"ONLY");
3195      gMC->Gspos("ITS2",1,"I1D1",0.0,0.0,0.0,0,"ONLY");
3196      gMC->Gspos("I650",16,"IT12",0.0,0.0,22.0,idrotm[1104],"MANY");
3197      gMC->Gspos("I650",20,"IT12",0.0,0.0,22.0,idrotm[1130],"MANY");
3198      gMC->Gspos("I650",18,"IT12",0.0,0.0,22.0,idrotm[1117],"MANY");
3199      gMC->Gspos("I650",1,"IT12",0.0,0.0,22.0,0,"MANY");
3200      gMC->Gspos("I650",4,"IT12",0.0,0.0,22.0,idrotm[1106],"MANY");
3201      gMC->Gspos("I650",6,"IT12",0.0,0.0,22.0,idrotm[1039],"MANY");
3202      gMC->Gspos("I650",8,"IT12",0.0,0.0,22.0,idrotm[1107],"MANY");
3203      gMC->Gspos("I650",10,"IT12",0.0,0.0,22.0,idrotm[1065],"MANY");
3204      gMC->Gspos("I650",12,"IT12",0.0,0.0,22.0,idrotm[1078],"MANY");
3205      gMC->Gspos("I650",14,"IT12",0.0,0.0,22.0,idrotm[1091],"MANY");
3206      gMC->Gspos("I650",19,"IT12",0.0,0.0,-22.0,idrotm[1108],"MANY");
3207      gMC->Gspos("I650",2,"IT12",0.0,0.0,-22.0,idrotm[1109],"MANY");
3208      gMC->Gspos("I650",3,"IT12",0.0,0.0,-22.0,idrotm[1110],"MANY");
3209      gMC->Gspos("I650",5,"IT12",0.0,0.0,-22.0,idrotm[1111],"MANY");
3210      gMC->Gspos("I650",7,"IT12",0.0,0.0,-22.0,idrotm[1112],"MANY");
3211      gMC->Gspos("I650",9,"IT12",0.0,0.0,-22.0,idrotm[1113],"MANY");
3212      gMC->Gspos("I650",11,"IT12",0.0,0.0,-22.0,idrotm[1114],"MANY");
3213      gMC->Gspos("I650",13,"IT12",0.0,0.0,-22.0,idrotm[1115],"MANY");
3214      gMC->Gspos("I650",15,"IT12",0.0,0.0,-22.0,idrotm[1116],"MANY");
3215      gMC->Gspos("I650",17,"IT12",0.0,0.0,-22.0,idrotm[1118],"MANY");
3216      gMC->Gspos("I666",1,"I650",0.0,0.0,0.25,idrotm[1003],"MANY");
3217      gMC->Gspos("I667",1,"I650",0.1102,0.9945,0.45,idrotm[1088],"ONLY");
3218      gMC->Gspos("I669",3,"I650",0.1883,4.0372,-3.2,0,"ONLY");
3219      gMC->Gspos("I671",3,"I650",0.1883,4.0372,0.6,0,"ONLY");
3220      gMC->Gspos("I669",2,"I650",1.3343,4.0609,-3.2,0,"ONLY");
3221      gMC->Gspos("I671",2,"I650",1.3343,4.0609,0.6,0,"ONLY");
3222      gMC->Gspos("I669",6,"I650",2.9567,6.1959,-3.2,idrotm[1089],"ONLY");
3223      gMC->Gspos("I671",6,"I650",2.9567,6.1959,0.6,idrotm[1089],"ONLY");
3224      gMC->Gspos("I669",5,"I650",1.9511,6.5822,-3.2,idrotm[1011],"ONLY");
3225      gMC->Gspos("I671",5,"I650",1.9511,6.5822,0.6,idrotm[1011],"ONLY");
3226      gMC->Gspos("I669",4,"I650",0.8974,6.8064,-3.2,idrotm[1090],"ONLY");
3227      gMC->Gspos("I671",4,"I650",0.8974,6.8064,0.6,idrotm[1090],"ONLY");
3228      gMC->Gspos("I669",1,"I650",-0.1784,6.863,-3.2,0,"ONLY");
3229      gMC->Gspos("I671",1,"I650",-0.1784,6.863,0.6,0,"ONLY");
3230      gMC->Gspos("I673",1,"I650",0.2173,4.8037,1.8,0,"ONLY");
3231      gMC->Gspos("I673",6,"I650",1.5093,4.5605,1.8,0,"ONLY");
3232      gMC->Gspos("I673",4,"I650",-0.173,6.2531,1.8,idrotm[1092],"ONLY");
3233      gMC->Gspos("I673",3,"I650",0.8073,6.2032,1.8,idrotm[1093],"ONLY");
3234      gMC->Gspos("I673",2,"I650",1.7678,6.0005,1.8,idrotm[1094],"ONLY");
3235      gMC->Gspos("I673",5,"I650",2.6847,5.6501,1.8,0,"ONLY");
3236      gMC->Gspos("I676",2,"I650",1.7618,5.2269,2.5,0,"ONLY");
3237      gMC->Gspos("I676",1,"I650",0.4018,5.5869,2.5,0,"ONLY");
3238      gMC->Gspos("I668",1,"I667",0.0,0.0,0.0,0,"ONLY");
3239      gMC->Gspos("I670",1,"I669",0.0,0.0,0.0,0,"ONLY");
3240      gMC->Gspos("I672",1,"I671",0.0,0.0,0.0,0,"ONLY");
3241      gMC->Gspos("I674",1,"I673",0.0,0.0,0.0,0,"MANY");
3242      gMC->Gspos("I675",1,"I673",0.0,0.0,-0.5,0,"ONLY");
3243      gMC->Gspos("I677",1,"I676",0.0,0.0,0.0,0,"MANY");
3244      gMC->Gspos("I678",1,"I676",0.0,0.0,-0.95,0,"ONLY");  
3245
3246   }
3247     
3248   // --- Place SDD volumes into their mother volume IT34
3249
3250   
3251   // -- position SDD detectors of ladder 3 / layer 3
3252
3253   gMC->Gspos("ITS3", 1,"I302",  0.0,      0.0,    0.0,    0,           "ONLY");
3254   ySDD = Y_SDD_sep/2.+I302dits[1];
3255   for (iSDD=0; iSDD<6; iSDD++) {
3256     gMC->Gspos("I302", iSDD+1, "I004",  0.0, ySDD,  Z_SDD_lay3[iSDD], 0, "ONLY");
3257     ySDD = -ySDD;
3258   }
3259
3260   gMC->Gspos("I004", 1,"IT34", -3.2777,  14.3607, 0.0,   idrotm[321],"ONLY");
3261   gMC->Gspos("I004", 2,"IT34", -9.5581,  11.9855, 0.0,   idrotm[333],"ONLY");
3262   gMC->Gspos("I004", 3,"IT34",-13.2713,   6.3911, 0.0,   idrotm[336],"ONLY");
3263   gMC->Gspos("I004", 4,"IT34",-15.33,     0.0,    0.0,   idrotm[350],"ONLY");
3264   gMC->Gspos("I004", 5,"IT34",-13.2713,  -6.3911, 0.0,   idrotm[313],"ONLY");
3265   gMC->Gspos("I004", 6,"IT34", -9.5581, -11.9855, 0.0,   idrotm[311],"ONLY");
3266   gMC->Gspos("I004", 7,"IT34", -3.2777, -14.3607, 0.0,   idrotm[310],"ONLY");
3267   gMC->Gspos("I004", 8,"IT34",  3.4112, -14.9456, 0.0,   idrotm[386],"ONLY");
3268   gMC->Gspos("I004", 9,"IT34",  9.184,  -11.5164, 0.0,   idrotm[309],"ONLY");
3269   gMC->Gspos("I004",10,"IT34", 13.8119,  -6.6514, 0.0,   idrotm[308],"ONLY");
3270   gMC->Gspos("I004",11,"IT34", 14.73,     0.0,    0.0,   idrotm[356],"ONLY");
3271   gMC->Gspos("I004",12,"IT34", 13.8119,   6.6514, 0.0,   idrotm[307],"ONLY");
3272   gMC->Gspos("I004",13,"IT34",  9.184,   11.5164, 0.0,   idrotm[306],"ONLY");
3273   gMC->Gspos("I004",14,"IT34",  3.4113,  14.9456, 0.0,   idrotm[305],"ONLY");
3274
3275
3276   // -- position SDD detectors of ladder 4 / layer 4
3277
3278   gMC->Gspos("ITS4", 1,"I402",  0.0,      0.000,  0.0,   0,"ONLY");
3279   ySDD = -(Y_SDD_sep/2.+I402dits[1]);
3280   for (iSDD=0; iSDD<8; iSDD++) {
3281     gMC->Gspos("I402", iSDD+1, "I005",  0.0, ySDD,  Z_SDD_lay4[iSDD], 0, "ONLY");
3282     ySDD = -ySDD;
3283   }
3284   
3285   gMC->Gspos("I005", 1,"IT34", -3.3629,  23.3895,-0.15,  idrotm[335],"ONLY");
3286   gMC->Gspos("I005", 2,"IT34",-10.0447,  21.9949,-0.15,  idrotm[332],"ONLY");
3287   gMC->Gspos("I005", 3,"IT34",-15.4744,  17.8584,-0.15,  idrotm[331],"ONLY");
3288   gMC->Gspos("I005", 4,"IT34",-20.3415,  13.0727,-0.15,  idrotm[366],"ONLY");
3289   gMC->Gspos("I005", 5,"IT34",-22.6728,   6.6573,-0.15,  idrotm[330],"ONLY");
3290   gMC->Gspos("I005", 6,"IT34",-24.18,     0.0,   -0.15,  idrotm[350],"ONLY");
3291   gMC->Gspos("I005", 7,"IT34",-22.6728,  -6.6573,-0.15,  idrotm[329],"ONLY");
3292   gMC->Gspos("I005", 8,"IT34",-20.3415, -13.0727,-0.15,  idrotm[328],"ONLY");
3293   gMC->Gspos("I005", 9,"IT34",-15.4744, -17.8584,-0.15,  idrotm[327],"ONLY");
3294   gMC->Gspos("I005",10,"IT34",-10.0447, -21.9949,-0.15,  idrotm[326],"ONLY");
3295   gMC->Gspos("I005",11,"IT34", -3.3629, -23.3895,-0.15,  idrotm[325],"ONLY");
3296   gMC->Gspos("I005",12,"IT34",  3.4412, -23.9339,-0.15,  idrotm[324],"ONLY");
3297   gMC->Gspos("I005",13,"IT34",  9.8163, -21.4946,-0.15,  idrotm[323],"ONLY");
3298   gMC->Gspos("I005",14,"IT34", 15.8345, -18.274, -0.15,  idrotm[322],"ONLY");
3299   gMC->Gspos("I005",15,"IT34", 19.8788, -12.7753,-0.15,  idrotm[320],"ONLY");
3300   gMC->Gspos("I005",16,"IT34", 23.2005,  -6.8123,-0.15,  idrotm[319],"ONLY");
3301   gMC->Gspos("I005",17,"IT34", 23.63,     0.0,   -0.15,  idrotm[318],"ONLY");
3302   gMC->Gspos("I005",18,"IT34", 23.2005,   6.8123,-0.15,  idrotm[317],"ONLY");
3303   gMC->Gspos("I005",19,"IT34", 19.8788,  12.7753,-0.15,  idrotm[316],"ONLY");
3304   gMC->Gspos("I005",20,"IT34", 15.8345,  18.274, -0.15,  idrotm[315],"ONLY");
3305   gMC->Gspos("I005",21,"IT34",  9.8163,  21.4946,-0.15,  idrotm[314],"ONLY");
3306   gMC->Gspos("I005",22,"IT34",  3.4412,  23.9339,-0.15,  idrotm[334],"ONLY");
3307
3308
3309   // -- build block of the SDD ladder frame holding the electronics
3310
3311   gMC->Gspos("I019", 1,"I018", -1.9,     -1.735,  0.0, idrotm[344], "ONLY");
3312   gMC->Gspos("I019", 2,"I018",  1.987,   -1.5843, 0.0, idrotm[343], "ONLY");
3313   gMC->Gspos("I019", 3,"I018", -0.087,    1.7066, 0.0, idrotm[342], "ONLY");
3314
3315   gMC->Gspos("I020", 1,"I018", -1.9782,  -1.569,  0.0, idrotm[342], "ONLY");
3316   gMC->Gspos("I020", 2,"I018",  1.8824,  -1.735,  0.0, idrotm[344], "ONLY");
3317   gMC->Gspos("I020", 3,"I018",  0.0958,   1.6913, 0.0, idrotm[343], "ONLY");
3318
3319   gMC->Gspos("I021", 1,"I018",  1.0761,   0.0835, 2.6008, idrotm[340], "ONLY");
3320   gMC->Gspos("I021", 2,"I018", -1.0761,   0.0835,-2.8008, idrotm[339], "ONLY");
3321   gMC->Gspos("I021", 3,"I018", -1.0761,   0.0835,-1.0492, idrotm[338], "ONLY");
3322   gMC->Gspos("I021", 4,"I018",  1.0761,   0.0835,-2.8008, idrotm[337], "ONLY");
3323   gMC->Gspos("I021", 5,"I018",  1.0761,   0.0835,-1.0492, idrotm[340], "ONLY");
3324   gMC->Gspos("I021", 6,"I018", -1.0761,   0.0835, 0.8492, idrotm[339], "ONLY");
3325   gMC->Gspos("I021", 7,"I018", -1.0761,   0.0835, 2.6008, idrotm[338], "ONLY");
3326   gMC->Gspos("I021", 8,"I018",  1.0761,   0.0835, 0.8492, idrotm[337], "ONLY");
3327
3328   gMC->Gspos("I022", 1,"I018",  0.0,     -1.79,   3.55,   idrotm[312], "ONLY");
3329   gMC->Gspos("I022", 2,"I018",  0.0,     -1.79,  -0.1,    idrotm[312], "ONLY");
3330
3331   gMC->Gspos("I023", 1,"I018",  0.0,     -1.79,   1.725,  idrotm[341], "ONLY");
3332   gMC->Gspos("I023", 2,"I018",  0.0,     -1.79,  -1.925,  idrotm[341], "ONLY");
3333
3334   gMC->Gspos("I033", 1,"I018",  1.8,     -1.75,   1.35,   0,           "MANY");
3335   gMC->Gspos("I033", 2,"I018", -1.8,     -1.75,  -2.65,   idrotm[345], "MANY");
3336   gMC->Gspos("I033", 3,"I018", -1.8,     -1.75,   1.35,   idrotm[345], "MANY");
3337   gMC->Gspos("I033", 4,"I018",  1.8,     -1.75,  -2.65,   0,           "MANY");
3338
3339   gMC->Gspos("I034", 1,"I018",  1.6,     -1.775,  1.35,   idrotm[312], "ONLY");
3340   gMC->Gspos("I034", 2,"I018", -1.6,     -1.775, -2.65,   idrotm[348], "ONLY");
3341   gMC->Gspos("I034", 3,"I018", -1.6,     -1.775,  1.35,   idrotm[348], "ONLY");
3342   gMC->Gspos("I034", 4,"I018",  1.6,     -1.775, -2.65,   idrotm[312], "ONLY");
3343
3344   gMC->Gspos("I035", 1,"I018",  1.7,     -0.55, I018dits[2]-I035dits[2], 0, "MANY");
3345   gMC->Gspos("I035", 2,"I018", -1.7,     -0.55, I018dits[2]-I035dits[2], 0, "MANY");
3346
3347   gMC->Gspos("I036", 1,"I018",  0.3087,   1.7191, 3.56,   idrotm[346], "ONLY");
3348   gMC->Gspos("I036", 2,"I018",  0.3087,   1.7191,-0.11,   idrotm[346], "ONLY");
3349   gMC->Gspos("I036", 3,"I018", -0.3087,   1.7191,-0.11,   idrotm[347], "ONLY");
3350   gMC->Gspos("I036", 4,"I018", -0.3087,   1.7191, 3.56,   idrotm[347], "ONLY");
3351
3352   gMC->Gspos("I037", 1,"I018",  SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 , "ONLY");
3353   gMC->Gspos("I037", 2,"I018", -SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 , "ONLY");
3354
3355   gMC->Gspos("I038", 1,"I018",  SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 , "ONLY");
3356   gMC->Gspos("I038", 2,"I018", -SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 , "ONLY");
3357
3358   gMC->Gspos("I040", 1,"I018",  1.9204,  -0.7118, 0.0, idrotm[346],"ONLY");
3359   gMC->Gspos("I040", 2,"I018", -1.9204,  -0.7118, 0.0, idrotm[347],"ONLY");
3360   gMC->Gspos("I041", 1,"I018",  SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], idrotm[346], "ONLY");
3361   gMC->Gspos("I041", 2,"I018", -SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], idrotm[347], "ONLY");
3362
3363
3364   // -- build block of the SDD electronics (heat bridge, chips, hybrid, anode microcable)
3365
3366   xI050 = SDD_CoolPipe[0]+SDD_CoolPipe[1]*sin30+I050dits[1]/cos30+I041dits[1];
3367   yI050 = 0;
3368   xI039 = -SDD_CoolPipe[1]/cos30;
3369   yI039 = -I050dits[1]+I039dits[1];
3370   gMC->Gspos("I039", 1,"I050",  xI039, yI039, 0.0, 0, "ONLY");
3371   xI042 = xI039+I039dits[0]-xI042space-I042dits[0];
3372   yI042 = yI039+I039dits[1]+I042dits[1];
3373   xI043 = xI039-I039dits[0]+xI043space+I043dits[0];
3374   yI043 = yI039+I039dits[1]+I043dits[1];
3375   zChipSpace = I042dits[2];
3376   if (zChipSpace < I043dits[2]) {
3377     zChipSpace = I043dits[2];
3378   }
3379   zChipSpace = zChipSpace * 2;
3380   yI051space = (2*I039dits[2] - 4*zChipSpace)/5;
3381   zchip = -I039dits[2] + yI051space + zChipSpace/2.;
3382   for (ichip=0; ichip<4; ichip++) { 
3383     gMC->Gspos("I042", ichip+1, "I050", xI042, yI042, zchip, 0, "ONLY");
3384     gMC->Gspos("I043", ichip+1, "I050", xI043, yI043, zchip, 0, "ONLY");
3385     zchip += zChipSpace + yI051space;
3386   }
3387   xcap = 2*I039dits[0]/5.;
3388   yI051 = yI039+I039dits[1]+I051dits[1];
3389   zI051 = -I039dits[2] + yI051space/3.;
3390   icap = 1;
3391   for (ichip=0; ichip<5; ichip++) { 
3392     xI051 = xI039-I039dits[0]+xcap;
3393     gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3394     zI051 += yI051space/3.;
3395     gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3396     xI051 += xcap;
3397     gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3398     xI051 += xcap;
3399     gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3400     xI051 += xcap;
3401     gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3402     zI051 -= yI051space/3.;
3403     if (ichip == 0) {
3404       gMC->Gspos("I051", icap++,"I050", xI051, yI051, zI051, 0, "ONLY");
3405     }
3406     zI051 += zChipSpace + yI051space;
3407   }
3408   xI052 = -I050dits[0]+I052dits[0];
3409   yI052 = yI051+I051dits[1]+I052dits[1];
3410   gMC->Gspos("I052", 1,"I050", xI052, yI052, 0.0, 0, "ONLY");
3411   xI044 = I050dits[0]-I044dits[3];
3412   yI044 = yI052+I052dits[1]+I044dits[2];
3413   gMC->Gspos("I044", 1,"I050", xI044, yI044, 0.0, idrotm[301], "ONLY");
3414   gMC->Gspos("I050", 1,"I018",  xI050,  yI050,  0.0, idrotm[346],"ONLY");
3415   gMC->Gspos("I050", 2,"I018", -xI050,  yI050,  0.0, idrotm[347],"ONLY");
3416
3417
3418   // -- build block of the SDD ladder frame at the end ladders
3419
3420   gMC->Gspos("I021",12,"I024",  1.0761,   0.0836,-0.1242, idrotm[340], "ONLY");
3421   gMC->Gspos("I021",11,"I024", -1.0761,   0.0836,-0.1242, idrotm[338], "ONLY");
3422   gMC->Gspos("I021",13,"I024", -1.0761,   0.0836,-1.8758, idrotm[339], "ONLY");
3423   gMC->Gspos("I021",14,"I024",  1.0761,   0.0836,-1.8758, idrotm[337], "ONLY");
3424
3425   gMC->Gspos("I022", 3,"I024",  0.0,     -1.7899, 0.825,  idrotm[312], "ONLY");
3426
3427   gMC->Gspos("I023", 3,"I024",  0.0,     -1.7899,-1.0,    idrotm[341], "ONLY");
3428
3429   gMC->Gspos("I025", 1,"I024", -1.9,     -1.7349, 0.0,    idrotm[344], "ONLY");
3430   gMC->Gspos("I025", 2,"I024",  1.987,   -1.5842, 0.0,    idrotm[343], "ONLY");
3431
3432   gMC->Gspos("I026", 1,"I024", -1.9782,  -1.5689, 0.0,    idrotm[342], "ONLY");
3433   gMC->Gspos("I026", 2,"I024",  1.8824,  -1.7349, 0.0,    idrotm[344], "ONLY");
3434
3435   gMC->Gspos("I029", 1,"I024", -0.087,    1.7067, I029dits[2]-I024dits[2], idrotm[342], "ONLY");
3436
3437   gMC->Gspos("I030", 1,"I024",  0.0958,   1.6914, I030dits[2]-I024dits[2], idrotm[343], "ONLY");
3438
3439   gMC->Gspos("I031", 1,"I024",  SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 ,"ONLY");
3440   gMC->Gspos("I031", 2,"I024", -SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 ,"ONLY");
3441
3442   gMC->Gspos("I032", 1,"I024",  SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 ,"ONLY");
3443   gMC->Gspos("I032", 2,"I024", -SDD_CoolPipe[0], SDD_CoolPipe[1], SDD_CoolPipe[2], 0 ,"ONLY");
3444
3445
3446   xI424 = I028dits[0]/3.;
3447   yI424 = -I028dits[1]+I424dits[1];
3448   gMC->Gspos("I422", 1,"I421", 0.0, 0.0, 0.0, 0, "ONLY");
3449   gMC->Gspos("I423", 1,"I421", 0.0, 0.0, I421dits[2]-I423dits[2], 0, "ONLY");
3450   gMC->Gspos("I421", 1,"I420", 0.0, 0.0, 0.0, idrotm[312], "ONLY");
3451   gMC->Gspos("I420", 1,"I028", -I028dits[0]/3., I028dits[1]-I420dits[1], 0.0, 0, "ONLY");
3452   gMC->Gspos("I424", 1,"I028", xI424, yI424, 0.0, 0, "ONLY");
3453   gMC->Gspos("I028", 1,"I024", 0.0, I028dits[1]-I024dits[1], I024dits[2]-I028dits[2], 0, "MANY");
3454
3455
3456   // -- build the SDD ladder 3
3457
3458   indI425 = 1;
3459   gMC->Gspos("I024", 1,"I047",  0.0,      0.0,   24.625, 0,           "ONLY");  
3460   gMC->Gspos("I018", 1,"I047",  0.0,      0.0,    3.65,  0,           "ONLY");
3461   gMC->Gspos("I018", 2,"I047",  0.0,      0.0,   10.95,  0,           "ONLY");
3462   gMC->Gspos("I018", 3,"I047",  0.0,      0.0,   18.25,  0,           "ONLY");
3463   gMC->Gspos("I018", 4,"I047",  0.0,      0.0,   -3.65,  0,           "ONLY");
3464   gMC->Gspos("I018", 5,"I047",  0.0,      0.0,  -10.95,  0,           "ONLY");
3465   gMC->Gspos("I018", 6,"I047",  0.0,      0.0,  -18.25,  0,           "ONLY");
3466   gMC->Gspos("I024", 2,"I047",  0.0,      0.0,  -24.625, idrotm[355], "ONLY");
3467   HVname[0] = 'I';
3468   HVname[1] = '3';
3469   HVname[2] = '1';  
3470   HVname[4] = '\0';
3471   for (iSDD=0; iSDD<3; iSDD++) {
3472     HVname[3] = (Char_t)(48+iSDD+5);
3473     dits[0] = 1.350000;
3474     dits[1] = I425dits[1];
3475     dits[2] = (I047dits[2] - 2*I024dits[2] - Z_SDD_lay3[iSDD])/2.;
3476     gMC->Gsvolu(HVname, "BOX ", idtmed[279], dits, 3);
3477     xHV = 0.0;
3478     yHV = -I047dits[1] + (2*iSDD+1)*dits[1];
3479     zHV = I047dits[2] - 2*I024dits[2] - dits[2];
3480     gMC->Gspos(HVname, 1,"I047", xHV, yHV,  zHV, 0, "ONLY");
3481     gMC->Gspos(HVname, 2,"I047", xHV, yHV, -zHV, 0, "ONLY");
3482     gMC->Gspos("I425", indI425++,"I047",  xI424, yHV,   24.625, 0, "ONLY");
3483     gMC->Gspos("I425", indI425++,"I047", -xI424, yHV,  -24.625, 0, "ONLY");
3484   }
3485   LVname[0] = 'I';
3486   LVname[1] = '3';
3487   LVname[2] = '1';  
3488   LVname[4] = '\0';
3489   for (iSDD=0; iSDD<3; iSDD++) {
3490     LVname[3] = (Char_t)(48+iSDD+1);
3491     dits[0] = 1.350000;
3492     dits[1] = 0.004423;
3493     dits[2] = (I047dits[2] - (2*iSDD+1)*I018dits[2] - I039dits[2])/2.;
3494     gMC->Gsvolu(LVname, "BOX ", idtmed[280], dits, 3);
3495     yLV = I018dits[1] - dits[0]*cos30 - dits[1]*sin30;
3496     xLV = xI050 -
3497           fabs(yI050-yLV)*sin30/cos30 +
3498           (I050dits[1]+(2*iSDD+1)*dits[1])/cos30;
3499     zLV = I047dits[2] - dits[2];
3500     gMC->Gspos(LVname, 1,"I047",  xLV, yLV,  zLV, idrotm[346], "ONLY");
3501     gMC->Gspos(LVname, 2,"I047",  xLV, yLV, -zLV, idrotm[346], "ONLY");
3502     gMC->Gspos(LVname, 3,"I047", -xLV, yLV,  zLV, idrotm[347], "ONLY");
3503     gMC->Gspos(LVname, 4,"I047", -xLV, yLV, -zLV, idrotm[347], "ONLY");
3504   }
3505
3506
3507   // -- build the SDD ladder 4
3508
3509
3510   gMC->Gspos("I024", 3,"I048", -0.0001,   0.0,   31.925, 0,           "ONLY");
3511   gMC->Gspos("I018", 7,"I048", -0.0001,   0.0,   -3.65,  0,           "ONLY");
3512   gMC->Gspos("I018", 8,"I048", -0.0001,   0.0,    3.65,  0,           "ONLY");
3513   gMC->Gspos("I018", 9,"I048", -0.0001,   0.0,   10.95,  0,           "ONLY");
3514   gMC->Gspos("I018",10,"I048", -0.0001,   0.0,   18.25,  0,           "ONLY");
3515   gMC->Gspos("I018",11,"I048", -0.0001,   0.0,   25.55,  0,           "ONLY");
3516   gMC->Gspos("I018",12,"I048", -0.0001,   0.0,  -10.95,  0,           "ONLY");
3517   gMC->Gspos("I018",13,"I048", -0.0001,   0.0,  -18.25,  0,           "ONLY");
3518   gMC->Gspos("I018",14,"I048", -0.0001,   0.0,  -25.55,  0,           "ONLY");
3519   gMC->Gspos("I024", 4,"I048", -0.0001,   0.0,  -31.925, idrotm[355], "ONLY");
3520   HVname[0] = 'I';
3521   HVname[1] = '4';
3522   HVname[2] = '1';  
3523   HVname[4] = '\0';  
3524   for (iSDD=0; iSDD<4; iSDD++) {
3525     HVname[3] = (Char_t)(48+iSDD+5);
3526     dits[0] = 1.350000;
3527     dits[1] = I425dits[1];
3528     dits[2] = (I048dits[2] - 2*I024dits[2] - Z_SDD_lay4[iSDD])/2.;
3529     gMC->Gsvolu(HVname, "BOX ", idtmed[279], dits, 3);
3530     xHV = -0.0001;
3531     yHV = -I048dits[1] + (2*iSDD+1)*dits[1];
3532     zHV = I048dits[2] - 2*I024dits[2] - dits[2];
3533     gMC->Gspos(HVname, 1,"I048", xHV, yHV,  zHV, 0, "ONLY");
3534     gMC->Gspos(HVname, 2,"I048", xHV, yHV, -zHV, 0, "ONLY");
3535     gMC->Gspos("I425", indI425++,"I048",  xI424, yHV,   31.925, 0, "ONLY");
3536     gMC->Gspos("I425", indI425++,"I048", -xI424, yHV,  -31.925, 0, "ONLY");
3537   }
3538   LVname[0] = 'I';
3539   LVname[1] = '4';
3540   LVname[2] = '1';  
3541   LVname[4] = '\0';
3542   for (iSDD=0; iSDD<4; iSDD++) {
3543     LVname[3] = (Char_t)(48+iSDD+1);
3544     dits[0] = 1.350000;
3545     dits[1] = 0.004423;
3546     dits[2] = (I048dits[2] - (2*iSDD+1)*I018dits[2] - I039dits[2])/2.;
3547     gMC->Gsvolu(LVname, "BOX ", idtmed[280], dits, 3);
3548     yLV = I018dits[1] - dits[0]*cos30 - dits[1]*sin30;
3549     xLV = xI050 -
3550           fabs(yI050-yLV)*sin30/cos30 +
3551           (I050dits[1]+(2*iSDD+1)*dits[1])/cos30;
3552     zLV = I048dits[2] - dits[2];
3553     gMC->Gspos(LVname, 1,"I048",  xLV, yLV,  zLV, idrotm[346], "ONLY");
3554     gMC->Gspos(LVname, 2,"I048",  xLV, yLV, -zLV, idrotm[346], "ONLY");
3555     gMC->Gspos(LVname, 3,"I048", -xLV, yLV,  zLV, idrotm[347], "ONLY");
3556     gMC->Gspos(LVname, 4,"I048", -xLV, yLV, -zLV, idrotm[347], "ONLY");
3557   }
3558
3559
3560   // -- build the SDD barrel (layers 3 and 4)
3561
3562   gMC->Gspos("I047", 1,"IT34", -3.7528,  16.4422, 0.0,   idrotm[321], "ONLY");
3563   gMC->Gspos("I047", 2,"IT34",-10.8892,  13.6547, 0.0,   idrotm[333], "ONLY");
3564   gMC->Gspos("I047", 3,"IT34",-15.1948,   7.3175, 0.0,   idrotm[336], "ONLY");
3565   gMC->Gspos("I047", 4,"IT34",-17.465,    0.0,    0.0,   idrotm[350], "ONLY");
3566   gMC->Gspos("I047", 5,"IT34",-15.1948,  -7.3174, 0.0,   idrotm[313], "ONLY");
3567   gMC->Gspos("I047", 6,"IT34",-10.8893, -13.6547, 0.0,   idrotm[311], "ONLY");
3568   gMC->Gspos("I047", 7,"IT34", -3.7528, -16.4422, 0.0,   idrotm[310], "ONLY");
3569   gMC->Gspos("I047", 8,"IT34",  3.8863, -17.0271, 0.0,   idrotm[386], "ONLY");
3570   gMC->Gspos("I047", 9,"IT34", 10.5152, -13.1856, 0.0,   idrotm[309], "ONLY");
3571   gMC->Gspos("I047",10,"IT34", 15.7354,  -7.5778, 0.0,   idrotm[308], "ONLY");
3572   gMC->Gspos("I047",11,"IT34", 16.865,    0.0,    0.0,   idrotm[356], "ONLY");
3573   gMC->Gspos("I047",12,"IT34", 15.7354,   7.5778, 0.0,   idrotm[307], "ONLY");
3574   gMC->Gspos("I047",13,"IT34", 10.5152,  13.1856, 0.0,   idrotm[306], "ONLY");
3575   gMC->Gspos("I047",14,"IT34",  3.8863,  17.0271, 0.0,   idrotm[305], "ONLY");
3576
3577   gMC->Gspos("I048", 1,"IT34", -3.6667,  25.5027, 0.0,   idrotm[335], "ONLY");
3578   gMC->Gspos("I048", 2,"IT34",-10.9317,  23.937,  0.0,   idrotm[332], "ONLY");
3579   gMC->Gspos("I048", 3,"IT34",-16.8725,  19.4719, 0.0,   idrotm[331], "ONLY");
3580   gMC->Gspos("I048", 4,"IT34",-22.1376,  14.227,  0.0,   idrotm[366], "ONLY");
3581   gMC->Gspos("I048", 5,"IT34",-24.7213,   7.2588, 0.0,   idrotm[330], "ONLY");
3582   gMC->Gspos("I048", 6,"IT34",-26.315,    0.0,    0.0,   idrotm[350], "ONLY");
3583   gMC->Gspos("I048", 7,"IT34",-24.7213,  -7.2588, 0.0,   idrotm[329], "ONLY");
3584   gMC->Gspos("I048", 8,"IT34",-22.1376, -14.227,  0.0,   idrotm[328], "ONLY");
3585   gMC->Gspos("I048", 9,"IT34",-16.8725, -19.4719, 0.0,   idrotm[327], "ONLY");
3586   gMC->Gspos("I048",10,"IT34",-10.9316, -23.937,  0.0,   idrotm[326], "ONLY");
3587   gMC->Gspos("I048",11,"IT34", -3.6667, -25.5027, 0.0,   idrotm[325], "ONLY");
3588   gMC->Gspos("I048",12,"IT34",  3.745,  -26.0472, 0.0,   idrotm[324], "ONLY");
3589   gMC->Gspos("I048",13,"IT34", 10.7032, -23.4367, 0.0,   idrotm[323], "ONLY");
3590   gMC->Gspos("I048",14,"IT34", 17.2327, -19.8876, 0.0,   idrotm[322], "ONLY");
3591   gMC->Gspos("I048",15,"IT34", 21.6749, -13.9296, 0.0,   idrotm[320], "ONLY");
3592   gMC->Gspos("I048",16,"IT34", 25.2491,  -7.4138, 0.0,   idrotm[319], "ONLY");
3593   gMC->Gspos("I048",17,"IT34", 25.765,    0.0,    0.0,   idrotm[318], "ONLY");
3594   gMC->Gspos("I048",18,"IT34", 25.2491,   7.4138, 0.0,   idrotm[317], "ONLY");
3595   gMC->Gspos("I048",19,"IT34", 21.6749,  13.9296, 0.0,   idrotm[316], "ONLY");
3596   gMC->Gspos("I048",20,"IT34", 17.2327,  19.8876, 0.0,   idrotm[315], "ONLY");
3597   gMC->Gspos("I048",21,"IT34", 10.7032,  23.4367, 0.0,   idrotm[314], "ONLY");
3598   gMC->Gspos("I048",22,"IT34", 3.745,    26.0472, 0.0,   idrotm[334], "ONLY");
3599
3600   
3601   // --- Place SSD volumes into their mother volume IT56  
3602
3603
3604   gMC->Gspos("I570",14,"IT56",-28.0681,-36.0619,-0.27,idrotm[566],"ONLY"); 
3605   gMC->Gspos("I570",15,"IT56",-21.677,-40.0556,-0.27,idrotm[567],"ONLY");
3606   gMC->Gspos("I570",16,"IT56",-14.838,-43.2217,-0.27,idrotm[568],"ONLY");
3607   gMC->Gspos("I570",17,"IT56",-7.4965,-44.9238,-0.27,idrotm[569],"ONLY");
3608   gMC->Gspos("I570",18,"IT56",-0.27,-45.6977,-0.27,idrotm[533],"ONLY");
3609   gMC->Gspos("I570",19,"IT56",7.4965,-44.9238,-0.27,idrotm[534],"ONLY");
3610   gMC->Gspos("I570",20,"IT56",14.838,-43.2217,-0.27,idrotm[535],"ONLY");
3611   gMC->Gspos("I570",21,"IT56",21.677,-40.0556,-0.27,idrotm[623],"ONLY");
3612   gMC->Gspos("I570",22,"IT56",28.0681,-36.0619,-0.27,idrotm[537],"ONLY");
3613   gMC->Gspos("I570",23,"IT56",33.5085,-30.8468,-0.27,idrotm[538],"ONLY");
3614   gMC->Gspos("I570",24,"IT56",38.2566,-24.9943,-0.27,idrotm[539],"ONLY");
3615   gMC->Gspos("I570",25,"IT56",41.7089,-18.2952,-0.27,idrotm[540],"ONLY");
3616   gMC->Gspos("I570",26,"IT56",44.2994,-11.2181,-0.27,idrotm[541],"ONLY");
3617   gMC->Gspos("I570",27,"IT56",45.3894,-3.7611,-0.27,idrotm[542],"ONLY");
3618   gMC->Gspos("I570",28,"IT56",45.5416,3.7737,-0.27,idrotm[543],"ONLY");
3619   gMC->Gspos("I570",29,"IT56",44.1513,11.1806,-0.27,idrotm[544],"ONLY");
3620   gMC->Gspos("I570",30,"IT56",41.8487,18.3566,-0.27,idrotm[545],"ONLY");
3621   gMC->Gspos("I570",31,"IT56",38.1287,24.9107,-0.27,idrotm[546],"ONLY");
3622   gMC->Gspos("I570",32,"IT56",33.6209,30.9502,-0.27,idrotm[547],"ONLY");
3623   gMC->Gspos("I570",33,"IT56",27.9743,35.9414,-0.27,idrotm[548],"ONLY");
3624   gMC->Gspos("I570",34,"IT56",21.7497,40.1899,-0.27,idrotm[549],"ONLY");
3625   gMC->Gspos("I570",35,"IT56",14.7884,43.0772,-0.27,idrotm[550],"ONLY");
3626   gMC->Gspos("I570",36,"IT56",7.5216,45.0744,-0.27,idrotm[551],"ONLY");
3627   gMC->Gspos("I570",37,"IT56",-0.27,45.545,-0.27,0,"ONLY");
3628   gMC->Gspos("I570",38,"IT56",-7.5216,45.0744,-0.27,idrotm[552],"ONLY");
3629   gMC->Gspos("I570",1,"IT56",-14.7884,43.0772,-0.27,idrotm[553],"ONLY");
3630   gMC->Gspos("I570",2,"IT56",-21.7497,40.1899,-0.27,idrotm[620],"ONLY");
3631   gMC->Gspos("I570",3,"IT56",-27.9743,35.9414,-0.27,idrotm[555],"ONLY");
3632   gMC->Gspos("I570",4,"IT56",-33.6209,30.9502,-0.27,idrotm[556],"ONLY");
3633   gMC->Gspos("I570",5,"IT56",-38.1287,24.9108,-0.27,idrotm[557],"ONLY");
3634   gMC->Gspos("I570",6,"IT56",-41.8487,18.3566,-0.27,idrotm[558],"ONLY");
3635   gMC->Gspos("I570",7,"IT56",-44.1513,11.1806,-0.27,idrotm[559],"ONLY");
3636   gMC->Gspos("I570",8,"IT56",-45.5416,3.7737,-0.27,idrotm[560],"ONLY");
3637   gMC->Gspos("I570",9,"IT56",-45.3894,-3.7611,-0.27,idrotm[561],"ONLY");
3638   gMC->Gspos("I570",10,"IT56",-44.2994,-11.2181,-0.27,idrotm[562],"ONLY");
3639   gMC->Gspos("I570",11,"IT56",-41.7089,-18.2952,-0.27,idrotm[563],"ONLY");
3640   gMC->Gspos("I570",12,"IT56",-38.2566,-24.9943,-0.27,idrotm[564],"ONLY");
3641   gMC->Gspos("I570",13,"IT56",-33.5086,-30.8468,-0.27,idrotm[565],"ONLY");
3642   gMC->Gspos("I569",8,"IT56",-43.5484,3.6085,0.0,idrotm[560],"ONLY");
3643   gMC->Gspos("I569",9,"IT56",-43.3963,-3.5959,0.0,idrotm[561],"ONLY");
3644   gMC->Gspos("I569",10,"IT56",-42.3606,-10.7271,0.0,idrotm[562],"ONLY");
3645   gMC->Gspos("I569",11,"IT56",-39.8773,-17.4918,0.0,idrotm[563],"ONLY");
3646   gMC->Gspos("I569",12,"IT56",-36.5823,-23.9004,0.0,idrotm[564],"ONLY");
3647   gMC->Gspos("I569",13,"IT56",-32.0371,-29.4922,0.0,idrotm[565],"ONLY");
3648   gMC->Gspos("I569",14,"IT56",-26.8397,-34.4836,0.0,idrotm[566],"ONLY");
3649   gMC->Gspos("I569",15,"IT56",-20.7251,-38.2967,0.0,idrotm[567],"ONLY");
3650   gMC->Gspos("I569",16,"IT56",-14.1886,-41.33,0.0,idrotm[568],"ONLY");
3651   gMC->Gspos("I569",17,"IT56",-7.1673,-42.9511,0.0,idrotm[569],"ONLY");
3652   gMC->Gspos("I569",18,"IT56",0.0,-43.6977,0.0,idrotm[533],"ONLY");
3653   gMC->Gspos("I569",19,"IT56",7.1673,-42.9511,0.0,idrotm[534],"ONLY");
3654   gMC->Gspos("I569",20,"IT56",14.1886,-41.33,0.0,idrotm[535],"ONLY");
3655   gMC->Gspos("I569",21,"IT56",20.7251,-38.2967,0.0,idrotm[623],"ONLY");
3656   gMC->Gspos("I569",22,"IT56",26.8397,-34.4836,0.0,idrotm[537],"ONLY");
3657   gMC->Gspos("I569",23,"IT56",32.0371,-29.4922,0.0,idrotm[538],"ONLY");
3658   gMC->Gspos("I569",24,"IT56",36.5822,-23.9004,0.0,idrotm[539],"ONLY");
3659   gMC->Gspos("I569",25,"IT56",39.8773,-17.4918,0.0,idrotm[540],"ONLY");
3660   gMC->Gspos("I569",26,"IT56",42.3606,-10.7272,0.0,idrotm[541],"ONLY");
3661   gMC->Gspos("I569",27,"IT56",43.3963,-3.5959,0.0,idrotm[542],"ONLY");
3662   gMC->Gspos("I569",28,"IT56",43.5484,3.6085,0.0,idrotm[543],"ONLY");
3663   gMC->Gspos("I569",29,"IT56",42.2125,10.6897,0.0,idrotm[544],"ONLY");
3664   gMC->Gspos("I569",30,"IT56",40.0172,17.5532,0.0,idrotm[545],"ONLY");
3665   gMC->Gspos("I569",31,"IT56",36.4544,23.8169,0.0,idrotm[546],"ONLY");
3666   gMC->Gspos("I569",32,"IT56",32.1494,29.5956,0.0,idrotm[547],"ONLY");
3667   gMC->Gspos("I569",33,"IT56",26.7459,34.3631,0.0,idrotm[548],"ONLY");
3668   gMC->Gspos("I569",34,"IT56",20.7978,38.431,0.0,idrotm[549],"ONLY");
3669   gMC->Gspos("I569",35,"IT56",14.139,41.1856,0.0,idrotm[550],"ONLY");
3670   gMC->Gspos("I569",36,"IT56",7.1924,43.1017,0.0,idrotm[551],"ONLY");
3671   gMC->Gspos("I569",37,"IT56",0.0,43.545,0.0,0,"ONLY");
3672   gMC->Gspos("I569",38,"IT56",-7.1924,43.1017,0.0,idrotm[552],"ONLY");
3673   gMC->Gspos("I569",1,"IT56",-14.139,41.1856,0.0,idrotm[553],"ONLY");
3674   gMC->Gspos("I569",2,"IT56",-20.7978,38.431,0.0,idrotm[620],"ONLY");
3675   gMC->Gspos("I569",3,"IT56",-26.7459,34.3631,0.0,idrotm[555],"ONLY");
3676   gMC->Gspos("I569",4,"IT56",-32.1494,29.5956,0.0,idrotm[556],"ONLY");
3677   gMC->Gspos("I569",5,"IT56",-36.4544,23.8169,0.0,idrotm[557],"ONLY");
3678   gMC->Gspos("I569",6,"IT56",-40.0172,17.5532,0.0,idrotm[558],"ONLY");
3679   gMC->Gspos("I569",7,"IT56",-42.2125,10.6897,0.0,idrotm[559],"ONLY");
3680   gMC->Gspos("I571",15,"IT56",-21.2916,-34.387,0.0,idrotm[501],"ONLY");
3681   gMC->Gspos("I571",14,"IT56",-27.351,-30.0026,0.0,idrotm[503],"ONLY");
3682   gMC->Gspos("I571",13,"IT56",-32.2758,-24.3735,0.0,idrotm[504],"ONLY");
3683   gMC->Gspos("I571",12,"IT56",-36.3422,-18.0963,0.0,idrotm[505],"ONLY");
3684   gMC->Gspos("I571",11,"IT56",-38.901,-11.0683,0.0,idrotm[506],"ONLY");
3685   gMC->Gspos("I571",10,"IT56",-40.4252,-3.7459,0.0,idrotm[507],"ONLY");
3686   gMC->Gspos("I571",9,"IT56",-40.2725,3.7318,0.0,idrotm[508],"ONLY");
3687   gMC->Gspos("I571",8,"IT56",-39.0486,11.1103,0.0,idrotm[509],"ONLY");
3688   gMC->Gspos("I571",7,"IT56",-36.2049,18.0279,0.0,idrotm[510],"ONLY");
3689   gMC->Gspos("I571",6,"IT56",-32.3982,24.466,0.0,idrotm[511],"ONLY");
3690   gMC->Gspos("I571",5,"IT56",-27.2476,29.8892,0.0,idrotm[512],"ONLY");
3691   gMC->Gspos("I571",4,"IT56",-21.3723,34.5175,0.0,idrotm[513],"ONLY");
3692   gMC->Gspos("I571",3,"IT56",-14.6104,37.7138,0.0,idrotm[653],"ONLY");
3693   gMC->Gspos("I571",2,"IT56",-7.4599,39.9072,0.0,idrotm[514],"ONLY");
3694   gMC->Gspos("I571",1,"IT56",0.0,40.445,0.0,0,"ONLY");
3695   gMC->Gspos("I571",34,"IT56",7.46,39.9071,0.0,idrotm[515],"ONLY");
3696   gMC->Gspos("I571",33,"IT56",14.6104,37.7138,0.0,idrotm[516],"ONLY");
3697   gMC->Gspos("I571",32,"IT56",21.3723,34.5175,0.0,idrotm[517],"ONLY");
3698   gMC->Gspos("I571",31,"IT56",27.2476,29.8892,0.0,idrotm[518],"ONLY");
3699   gMC->Gspos("I571",30,"IT56",32.3983,24.466,0.0,idrotm[519],"ONLY");
3700   gMC->Gspos("I571",29,"IT56",36.2049,18.0279,0.0,idrotm[520],"ONLY");
3701   gMC->Gspos("I571",28,"IT56",39.0486,11.1103,0.0,idrotm[521],"ONLY");
3702   gMC->Gspos("I571",27,"IT56",40.2725,3.7318,0.0,idrotm[522],"ONLY");
3703   gMC->Gspos("I571",26,"IT56",40.4252,-3.746,0.0,idrotm[523],"ONLY");
3704   gMC->Gspos("I571",25,"IT56",38.901,-11.0683,0.0,idrotm[524],"ONLY");
3705   gMC->Gspos("I571",24,"IT56",36.3422,-18.0963,0.0,idrotm[525],"ONLY");
3706   gMC->Gspos("I571",23,"IT56",32.2758,-24.3736,0.0,idrotm[526],"ONLY");
3707   gMC->Gspos("I571",22,"IT56",27.351,-30.0026,0.0,idrotm[527],"ONLY");
3708   gMC->Gspos("I571",21,"IT56",21.2915,-34.387,0.0,idrotm[528],"ONLY");
3709   gMC->Gspos("I571",20,"IT56",14.6658,-37.8569,0.0,idrotm[618],"ONLY");
3710   gMC->Gspos("I571",19,"IT56",7.4317,-39.7563,0.0,idrotm[529],"ONLY");
3711   gMC->Gspos("I571",18,"IT56",0.0,-40.5984,0.0,idrotm[533],"ONLY");
3712   gMC->Gspos("I571",17,"IT56",-7.4318,-39.7563,0.0,idrotm[530],"ONLY");
3713   gMC->Gspos("I571",16,"IT56",-14.6659,-37.8569,0.0,idrotm[531],"ONLY");
3714   gMC->Gspos("I565",13,"IT56",-30.6798,-23.1683,0.0,idrotm[504],"ONLY");
3715   gMC->Gspos("I565",12,"IT56",-34.5519,-17.2048,0.0,idrotm[505],"ONLY");
3716   gMC->Gspos("I565",11,"IT56",-36.9774,-10.521,0.0,idrotm[506],"ONLY");
3717   gMC->Gspos("I565",10,"IT56",-38.4338,-3.5614,0.0,idrotm[507],"ONLY");
3718   gMC->Gspos("I565",9,"IT56",-38.281,3.5473,0.0,idrotm[508],"ONLY");
3719   gMC->Gspos("I565",8,"IT56",-37.1249,10.563,0.0,idrotm[509],"ONLY");
3720   gMC->Gspos("I565",7,"IT56",-34.4146,17.1364,0.0,idrotm[510],"ONLY");
3721   gMC->Gspos("I565",6,"IT56",-30.8022,23.2608,0.0,idrotm[511],"ONLY");
3722   gMC->Gspos("I565",5,"IT56",-25.9002,28.4112,0.0,idrotm[512],"ONLY");
3723   gMC->Gspos("I565",4,"IT56",-20.3195,32.817,0.0,idrotm[513],"ONLY");
3724   gMC->Gspos("I565",3,"IT56",-13.8879,35.8489,0.0,idrotm[653],"ONLY");
3725   gMC->Gspos("I565",2,"IT56",-7.0924,37.9412,0.0,idrotm[514],"ONLY");
3726   gMC->Gspos("I565",1,"IT56",0.0,38.445,0.0,0,"ONLY");
3727   gMC->Gspos("I565",34,"IT56",7.0925,37.9412,0.0,idrotm[515],"ONLY");
3728   gMC->Gspos("I565",33,"IT56",13.888,35.8489,0.0,idrotm[516],"ONLY");
3729   gMC->Gspos("I565",32,"IT56",20.3195,32.817,0.0,idrotm[517],"ONLY");
3730   gMC->Gspos("I565",31,"IT56",25.9002,28.4112,0.0,idrotm[518],"ONLY");
3731   gMC->Gspos("I565",30,"IT56",30.8022,23.2607,0.0,idrotm[519],"ONLY");
3732   gMC->Gspos("I565",29,"IT56",34.4146,17.1364,0.0,idrotm[520],"ONLY");
3733   gMC->Gspos("I565",28,"IT56",37.125,10.5629,0.0,idrotm[521],"ONLY");
3734   gMC->Gspos("I565",27,"IT56",38.281,3.5472,0.0,idrotm[522],"ONLY");
3735   gMC->Gspos("I565",26,"IT56",38.4338,-3.5614,0.0,idrotm[523],"ONLY");
3736   gMC->Gspos("I565",25,"IT56",36.9774,-10.521,0.0,idrotm[524],"ONLY");
3737   gMC->Gspos("I565",24,"IT56",34.5519,-17.2048,0.0,idrotm[525],"ONLY");
3738   gMC->Gspos("I565",23,"IT56",30.6798,-23.1683,0.0,idrotm[526],"ONLY");
3739   gMC->Gspos("I565",22,"IT56",26.0036,-28.5246,0.0,idrotm[527],"ONLY");
3740   gMC->Gspos("I565",21,"IT56",20.2387,-32.6866,0.0,idrotm[528],"ONLY");
3741   gMC->Gspos("I565",20,"IT56",13.9433,-35.992,0.0,idrotm[618],"ONLY");
3742   gMC->Gspos("I565",19,"IT56",7.0642,-37.7904,0.0,idrotm[529],"ONLY");
3743   gMC->Gspos("I565",18,"IT56",0.0,-38.5984,0.0,idrotm[533],"ONLY");
3744   gMC->Gspos("I565",17,"IT56",-7.0643,-37.7904,0.0,idrotm[530],"ONLY");
3745   gMC->Gspos("I565",16,"IT56",-13.9434,-35.992,0.0,idrotm[531],"ONLY");
3746   gMC->Gspos("I565",15,"IT56",-20.2387,-32.6866,0.0,idrotm[501],"ONLY");
3747   gMC->Gspos("I565",14,"IT56",-26.0036,-28.5246,0.0,idrotm[503],"ONLY");
3748   gMC->Gspos("I553",1,"I570",0.005,0.0,52.8453,0,"ONLY");
3749   gMC->Gspos("I523",1,"I570",0.0,0.0,46.9203+0.82,0,"ONLY");
3750   gMC->Gspos("I523",2,"I570",0.0,0.0,43.0103+0.82,0,"ONLY");
3751   gMC->Gspos("I523",3,"I570",0.0,0.0,39.1003+0.82,0,"ONLY");
3752   gMC->Gspos("I523",4,"I570",0.0,0.0,35.1903+0.82,0,"ONLY");
3753   gMC->Gspos("I523",5,"I570",0.0,0.0,31.2803+0.82,0,"ONLY");
3754   gMC->Gspos("I523",6,"I570",0.0,0.0,27.3703+0.82,0,"ONLY");
3755   gMC->Gspos("I523",7,"I570",0.0,0.0,23.4603+0.82,0,"ONLY");
3756   gMC->Gspos("I523",8,"I570",0.0,0.0,19.5503+0.82,0,"ONLY");
3757   gMC->Gspos("I523",9,"I570",0.0,0.0,15.6403+0.82,0,"ONLY");
3758   gMC->Gspos("I523",10,"I570",0.0,0.0,11.7303+0.82,0,"ONLY");
3759   gMC->Gspos("I523",11,"I570",0.0,0.0,7.8203+0.82,0,"ONLY");
3760   gMC->Gspos("I523",12,"I570",0.0,0.0,3.9103+0.82,0,"ONLY");
3761   gMC->Gspos("I523",13,"I570",0.0,0.0,0.0003+0.82,0,"ONLY");
3762   gMC->Gspos("I523",14,"I570",0.0,0.0,-3.9097+0.82,0,"ONLY");
3763   gMC->Gspos("I523",15,"I570",0.0,0.0,-7.8197+0.82,0,"ONLY");
3764   gMC->Gspos("I523",16,"I570",0.0,0.0,-11.7297+0.82,0,"ONLY");
3765   gMC->Gspos("I523",17,"I570",0.0,0.0,-15.6397+0.82,0,"ONLY");
3766   gMC->Gspos("I523",18,"I570",0.0,0.0,-19.5497+0.82,0,"ONLY");
3767   gMC->Gspos("I523",19,"I570",0.0,0.0,-23.4597+0.82,0,"ONLY");
3768   gMC->Gspos("I523",20,"I570",0.0,0.0,-27.3697+0.82,0,"ONLY");
3769   gMC->Gspos("I523",21,"I570",0.0,0.0,-31.2797+0.82,0,"ONLY");
3770   gMC->Gspos("I523",22,"I570",0.0,0.0,-35.1897+0.82,0,"ONLY");
3771   gMC->Gspos("I523",23,"I570",0.0,0.0,-39.0997+0.82,0,"ONLY");
3772   gMC->Gspos("I523",24,"I570",0.0,0.0,-43.0097+0.82,0,"ONLY");
3773   gMC->Gspos("I523",25,"I570",0.0,0.0,-46.9197+0.82,0,"ONLY");
3774   gMC->Gspos("I553",2,"I570",-0.005,0.0,-51.2047,idrotm[570],"ONLY");
3775   gMC->Gspos("I566",1,"I569",0.0,-0.03,46.9203,idrotm[532],"ONLY");
3776   gMC->Gspos("I566",2,"I569",0.0,0.03,43.0103,0,"ONLY");
3777   gMC->Gspos("I566",3,"I569",0.0,-0.03,39.1003,idrotm[532],"ONLY");
3778   gMC->Gspos("I566",4,"I569",0.0,0.03,35.1903,0,"ONLY");
3779   gMC->Gspos("I566",5,"I569",0.0,-0.03,31.2803,idrotm[532],"ONLY");
3780   gMC->Gspos("I566",6,"I569",0.0,0.03,27.3703,0,"ONLY");
3781   gMC->Gspos("I566",7,"I569",0.0,-0.03,23.4603,idrotm[532],"ONLY");
3782   gMC->Gspos("I566",8,"I569",0.0,0.03,19.5503,0,"ONLY");
3783   gMC->Gspos("I566",9,"I569",0.0,-0.03,15.6403,idrotm[532],"ONLY");
3784   gMC->Gspos("I566",10,"I569",0.0,0.03,11.7303,0,"ONLY");
3785   gMC->Gspos("I566",11,"I569",0.0,-0.03,7.8203,idrotm[532],"ONLY");
3786   gMC->Gspos("I566",12,"I569",0.0,0.03,3.9103,0,"ONLY");
3787   gMC->Gspos("I566",13,"I569",0.0,-0.03,0.0003,0,"ONLY");
3788   gMC->Gspos("I566",14,"I569",0.0,0.03,-3.9097,0,"ONLY");
3789   gMC->Gspos("I566",15,"I569",0.0,-0.03,-7.8197,idrotm[532],"ONLY");
3790   gMC->Gspos("I566",16,"I569",0.0,0.03,-11.7297,0,"ONLY");
3791   gMC->Gspos("I566",17,"I569",0.0,-0.03,-15.6397,0,"ONLY");
3792   gMC->Gspos("I566",18,"I569",0.0,0.03,-19.5497,0,"ONLY");
3793   gMC->Gspos("I566",19,"I569",0.0,-0.03,-23.4597,idrotm[532],"ONLY");
3794   gMC->Gspos("I566",20,"I569",0.0,0.03,-27.3697,0,"ONLY");
3795   gMC->Gspos("I566",21,"I569",0.0,-0.03,-31.2797,idrotm[532],"ONLY");
3796   gMC->Gspos("I566",22,"I569",0.0,0.03,-35.1897,0,"ONLY");
3797   gMC->Gspos("I566",23,"I569",0.0,-0.03,-39.0997,0,"ONLY");
3798   gMC->Gspos("I566",24,"I569",0.0,0.03,-43.0097,0,"ONLY");
3799   gMC->Gspos("I566",25,"I569",0.0,-0.03,-46.9197,idrotm[532],"ONLY");
3800   gMC->Gspos("I544",1,"I571",0.0101,0.0,43.125,0,"ONLY");
3801   gMC->Gspos("I516",20,"I571",0.0001,0.0,39.1-1.08,0,"ONLY");
3802   gMC->Gspos("I516",19,"I571",0.0001,0.0,35.19-1.08,0,"ONLY");
3803   gMC->Gspos("I516",18,"I571",0.0001,0.0,31.28-1.08,0,"ONLY");
3804   gMC->Gspos("I516",17,"I571",0.0001,0.0,27.37-1.08,0,"ONLY");
3805   gMC->Gspos("I516",16,"I571",0.0001,0.0,23.46-1.08,0,"ONLY");
3806   gMC->Gspos("I516",15,"I571",0.0001,0.0,19.55-1.08,0,"ONLY");
3807   gMC->Gspos("I516",14,"I571",0.0001,0.0,15.64-1.08,0,"ONLY");
3808   gMC->Gspos("I516",13,"I571",0.0001,0.0,11.73-1.08,0,"ONLY");
3809   gMC->Gspos("I516",12,"I571",0.0001,0.0,7.82-1.08,0,"ONLY");
3810   gMC->Gspos("I516",11,"I571",0.0001,0.0,3.91-1.08,0,"ONLY");
3811   gMC->Gspos("I516",10,"I571",0.0001,0.0,0.0-1.08,0,"ONLY");
3812   gMC->Gspos("I516",9,"I571",0.0001,0.0,-3.91-1.08,0,"ONLY");
3813   gMC->Gspos("I516",8,"I571",0.0001,0.0,-7.82-1.08,0,"ONLY");
3814   gMC->Gspos("I516",7,"I571",0.0001,0.0,-11.73-1.08,0,"ONLY");
3815   gMC->Gspos("I516",6,"I571",0.0001,0.0,-15.64-1.08,0,"ONLY");
3816   gMC->Gspos("I516",5,"I571",0.0001,0.0,-19.55-1.08,0,"ONLY");
3817   gMC->Gspos("I516",4,"I571",0.0001,0.0,-23.46-1.08,0,"ONLY");
3818   gMC->Gspos("I516",3,"I571",0.0001,0.0,-27.37-1.08,0,"ONLY");
3819   gMC->Gspos("I516",2,"I571",0.0001,0.0,-31.28-1.08,0,"ONLY");
3820   gMC->Gspos("I516",1,"I571",0.0001,0.0,-35.19-1.08,0,"ONLY");
3821   gMC->Gspos("I544",2,"I571",-0.0099,0.0,-41.375,idrotm[570],"ONLY");
3822   gMC->Gspos("I562",1,"I565",0.0,0.03,41.1546,0,"ONLY");
3823   gMC->Gspos("I562",2,"I565",0.0,-0.03,37.2246,0,"ONLY");
3824   gMC->Gspos("I562",3,"I565",0.0,0.03,33.3146,0,"ONLY");
3825   gMC->Gspos("I562",4,"I565",0.0,-0.03,29.3846,0,"ONLY");
3826   gMC->Gspos("I562",5,"I565",0.0,0.03,25.4746,0,"ONLY");
3827   gMC->Gspos("I562",6,"I565",0.0,-0.03,21.5446,0,"ONLY");
3828   gMC->Gspos("I562",7,"I565",0.0,0.03,17.6346,0,"ONLY");
3829   gMC->Gspos("I562",8,"I565",0.0,-0.03,13.7046,0,"ONLY");
3830   gMC->Gspos("I562",9,"I565",0.0,0.03,9.7946,0,"ONLY");
3831   gMC->Gspos("I562",10,"I565",0.0,-0.03,5.8645,0,"ONLY");
3832   gMC->Gspos("I562",11,"I565",0.0,0.03,1.9546,0,"ONLY");
3833   gMC->Gspos("I562",12,"I565",0.0,-0.03,-1.9754,0,"ONLY");
3834   gMC->Gspos("I562",13,"I565",0.0,0.03,-5.8855,0,"ONLY");
3835   gMC->Gspos("I562",14,"I565",0.0,-0.03,-9.8154,0,"ONLY");
3836   gMC->Gspos("I562",15,"I565",0.0,0.03,-13.7254,0,"ONLY");
3837   gMC->Gspos("I562",16,"I565",0.0,-0.03,-17.6555,0,"ONLY");
3838   gMC->Gspos("I562",17,"I565",0.0,0.03,-21.5655,0,"ONLY");
3839   gMC->Gspos("I562",18,"I565",0.0,-0.03,-25.4954,0,"ONLY");
3840   gMC->Gspos("I562",19,"I565",0.0,0.03,-29.4054,0,"ONLY");
3841   gMC->Gspos("I562",20,"I565",0.0,-0.03,-33.3354,0,"ONLY");
3842   gMC->Gspos("I562",21,"I565",0.0,0.03,-37.2454,0,"ONLY");
3843   gMC->Gspos("I562",22,"I565",0.0,-0.03,-41.1554,0,"ONLY");
3844   gMC->Gspos("I559",1,"I553",2.25,-1.615,0.0,0,"ONLY");
3845   gMC->Gspos("I560",1,"I553",2.25,-1.615,0.0,0,"ONLY");
3846   gMC->Gspos("I560",2,"I553",-2.25,-1.615,0.0,idrotm[573],"ONLY");
3847   gMC->Gspos("I558",1,"I553",-1.7167,-1.52,0.0,idrotm[583],"ONLY");
3848   gMC->Gspos("I557",1,"I553",-1.8533,-1.341,0.0,idrotm[581],"ONLY");
3849   gMC->Gspos("I558",2,"I553",1.8367,-1.3122,0.0,idrotm[575],"ONLY");
3850   gMC->Gspos("I557",2,"I553",1.75,-1.52,0.0,idrotm[583],"ONLY");
3851   gMC->Gspos("I558",3,"I553",-0.12,1.6613,0.0,idrotm[581],"ONLY");
3852   gMC->Gspos("I557",3,"I553",0.1034,1.6901,0.0,idrotm[575],"ONLY");
3853   gMC->Gspos("I556",3,"I553",-1.031,0.2033,-2.203,idrotm[580],"ONLY");
3854   gMC->Gspos("I556",1,"I553",1.0311,0.2033,-0.287,idrotm[576],"ONLY");
3855   gMC->Gspos("I554",1,"I553",0.0,-1.58,0.71,0,"ONLY");
3856   gMC->Gspos("I555",1,"I553",-0.0072,-1.58,-1.2311,idrotm[633],"ONLY");
3857   gMC->Gspos("I556",2,"I553",1.0311,0.2033,-2.203,idrotm[577],"ONLY");
3858   gMC->Gspos("I556",4,"I553",-1.031,0.2033,-0.287,idrotm[579],"ONLY");
3859   gMC->Gspos("I559",2,"I553",-2.25,-1.615,0.0,idrotm[573],"ONLY");
3860   gMC->Gspos("I561",1,"I553",2.1,-1.615,-0.24,0,"MANY");
3861   gMC->Gspos("I561",2,"I553",-2.1,-1.615,-0.24,idrotm[573],"MANY");
3862   gMC->Gspos("I519",37,"I523",0.0001,-1.79,-0.99,idrotm[586],"ONLY");
3863   gMC->Gspos("I519",36,"I523",-3.2986,-1.79,-1.2943,0,"ONLY");
3864   gMC->Gspos("I519",35,"I523",-3.2986,-1.71,-1.2943,0,"ONLY");
3865   gMC->Gspos("I519",34,"I523",-3.2286,-1.71,-1.2943,0,"ONLY");
3866   gMC->Gspos("I519",33,"I523",-3.2286,-1.79,-1.2943,0,"ONLY");
3867   gMC->Gspos("I519",32,"I523",-3.1586,-1.79,-1.2943,0,"ONLY");
3868   gMC->Gspos("I519",31,"I523",-3.1586,-1.71,-1.2943,0,"ONLY");
3869   gMC->Gspos("I519",30,"I523",-1.3436,-1.71,-1.2943,0,"ONLY");
3870   gMC->Gspos("I519",29,"I523",-1.3436,-1.79,-1.2943,0,"ONLY");
3871   gMC->Gspos("I519",28,"I523",-1.2736,-1.79,-1.2943,0,"ONLY");
3872   gMC->Gspos("I519",27,"I523",-1.2736,-1.71,-1.2943,0,"ONLY");
3873   gMC->Gspos("I519",26,"I523",-1.2036,-1.71,-1.2943,0,"ONLY");
3874   gMC->Gspos("I519",25,"I523",-1.2036,-1.79,-1.2943,0,"ONLY");
3875   gMC->Gspos("I519",24,"I523",-1.0458,-1.79,-1.2943,0,"ONLY");
3876   gMC->Gspos("I519",23,"I523",-1.0458,-1.71,-1.2943,0,"ONLY");
3877   gMC->Gspos("I519",22,"I523",-0.9758,-1.71,-1.2943,0,"ONLY");
3878   gMC->Gspos("I519",21,"I523",-0.9758,-1.79,-1.2943,0,"ONLY");
3879   gMC->Gspos("I519",20,"I523",-0.9058,-1.79,-1.2943,0,"ONLY");
3880   gMC->Gspos("I519",19,"I523",-0.9058,-1.71,-1.2943,0,"ONLY");
3881   gMC->Gspos("I519",18,"I523",0.9092,-1.71,-1.2943,0,"ONLY");
3882   gMC->Gspos("I519",17,"I523",0.9092,-1.79,-1.2943,0,"ONLY");
3883   gMC->Gspos("I519",16,"I523",0.9792,-1.79,-1.2943,0,"ONLY");
3884   gMC->Gspos("I519",15,"I523",0.9792,-1.71,-1.2943,0,"ONLY");
3885   gMC->Gspos("I519",14,"I523",1.0492,-1.71,-1.2943,0,"ONLY");
3886   gMC->Gspos("I519",13,"I523",1.0492,-1.79,-1.2943,0,"ONLY");
3887   gMC->Gspos("I519",12,"I523",1.207,-1.79,-1.2943,0,"ONLY");
3888   gMC->Gspos("I519",11,"I523",1.207,-1.71,-1.2943,0,"ONLY");
3889   gMC->Gspos("I519",10,"I523",1.277,-1.71,-1.2943,0,"ONLY");
3890   gMC->Gspos("I519",9,"I523",1.277,-1.79,-1.2943,0,"ONLY");
3891   gMC->Gspos("I519",8,"I523",1.347,-1.79,-1.2943,0,"ONLY");
3892   gMC->Gspos("I519",7,"I523",1.347,-1.71,-1.2943,0,"ONLY");
3893   gMC->Gspos("I519",6,"I523",3.162,-1.71,-1.2943,0,"ONLY");
3894   gMC->Gspos("I519",5,"I523",3.162,-1.79,-1.2943,0,"ONLY");
3895   gMC->Gspos("I519",4,"I523",3.232,-1.79,-1.2943,0,"ONLY");
3896   gMC->Gspos("I519",3,"I523",3.232,-1.71,-1.2943,0,"ONLY");
3897   gMC->Gspos("I521",12,"I523",-2.8209,-1.7925,-0.982,0,"ONLY");
3898   gMC->Gspos("I521",11,"I523",-1.6895,-1.7925,-0.982,0,"ONLY");
3899   gMC->Gspos("I521",10,"I523",-0.5631,-1.7925,-0.982,0,"ONLY");
3900   gMC->Gspos("I521",9,"I523",0.5633,-1.7925,-0.982,0,"ONLY");
3901   gMC->Gspos("I521",8,"I523",1.6861,-1.7925,-0.982,0,"ONLY");
3902   gMC->Gspos("I521",7,"I523",2.8161,-1.7925,-0.982,0,"ONLY");
3903   gMC->Gspos("I519",2,"I523",3.302,-1.79,-1.2943,0,"ONLY");
3904   gMC->Gspos("I520",3,"I523",0.0001,-1.845,-1.19,0,"ONLY");
3905   gMC->Gspos("I520",2,"I523",-2.2499,-1.845,-1.19,0,"ONLY");
3906   gMC->Gspos("I521",6,"I523",-2.8209,-1.7075,-0.982,0,"ONLY");
3907   gMC->Gspos("I521",5,"I523",-1.6895,-1.7075,-0.982,0,"ONLY");
3908   gMC->Gspos("I521",4,"I523",-0.5631,-1.7075,-0.982,0,"ONLY");
3909   gMC->Gspos("I521",3,"I523",0.5633,-1.7075,-0.982,0,"ONLY");
3910   gMC->Gspos("I521",2,"I523",1.6861,-1.7075,-0.982,0,"ONLY");
3911   gMC->Gspos("I518",1,"I523",0.0001,-1.75,-1.065,0,"ONLY");
3912   gMC->Gspos("I519",1,"I523",3.302,-1.71,-1.2943,0,"ONLY");
3913   gMC->Gspos("I520",1,"I523",2.2501,-1.845,-1.19,0,"ONLY");
3914   gMC->Gspos("I521",1,"I523",2.8161,-1.7075,-0.982,0,"ONLY");
3915   gMC->Gspos("I522",1,"I523",2.2501,-1.655,-1.3,idrotm[583],"MANY");
3916   gMC->Gspos("I522",2,"I523",-2.2499,-1.655,-1.3,idrotm[583],"MANY");
3917   gMC->Gspos("I542",2,"I523",-2.2499,-1.615,0.0,idrotm[573],"ONLY");
3918   gMC->Gspos("I541",2,"I523",-2.2499,-1.615,0.0,idrotm[573],"ONLY");
3919   gMC->Gspos("I541",1,"I523",2.2501,-1.615,0.0,0,"ONLY");
3920   gMC->Gspos("I542",1,"I523",2.2501,-1.615,0.0,0,"ONLY");
3921   gMC->Gspos("I543",1,"I523",2.1001,-1.615,0.955,0,"MANY");
3922   gMC->Gspos("I543",2,"I523",-2.0999,-1.615,0.955,idrotm[573],"MANY");
3923   gMC->Gspos("I537",2,"I523",1.7501,-1.52,0.0,idrotm[583],"ONLY");
3924   gMC->Gspos("I538",2,"I523",1.8368,-1.3122,0.0,idrotm[575],"ONLY");
3925   gMC->Gspos("I537",3,"I523",0.1035,1.6901,0.0,idrotm[575],"ONLY");
3926   gMC->Gspos("I538",3,"I523",-0.1199,1.6612,0.0,idrotm[581],"ONLY");
3927   gMC->Gspos("I538",1,"I523",-1.7166,-1.52,0.0,idrotm[583],"ONLY");
3928   gMC->Gspos("I537",1,"I523",-1.8532,-1.341,0.0,idrotm[581],"ONLY");
3929   gMC->Gspos("I536",3,"I523",-1.031,0.2033,-1.008,idrotm[580],"ONLY");
3930   gMC->Gspos("I536",4,"I523",-1.031,0.2033,0.908,idrotm[579],"ONLY");
3931   gMC->Gspos("I535",1,"I523",-0.0072,-1.58,-0.0361,idrotm[633],"ONLY");
3932   gMC->Gspos("I536",2,"I523",1.0312,0.2033,-1.008,idrotm[577],"ONLY");
3933   gMC->Gspos("I536",1,"I523",1.0312,0.2033,0.908,idrotm[576],"ONLY");
3934   gMC->Gspos("I534",1,"I523",0.0001,-1.58,1.905,0,"ONLY");
3935   gMC->Gspos("I540",1,"I523",0.0001,-1.785,1.905,idrotm[571],"ONLY");
3936   gMC->Gspos("I539",1,"I523",1.8001,-1.75,-0.195,idrotm[571],"ONLY");
3937   gMC->Gspos("I539",2,"I523",-1.7999,-1.75,-0.195,idrotm[572],"ONLY");
3938   gMC->Gspos("ITS6",1,"I566",0.0,0.0,0.0,0,"ONLY");
3939   gMC->Gspos("I550",1,"I544",2.25,-1.615,0.0,0,"ONLY");
3940   gMC->Gspos("I551",1,"I544",2.25,-1.615,0.0,0,"ONLY");
3941   gMC->Gspos("I551",2,"I544",-2.25,-1.615,0.0,idrotm[573],"ONLY");
3942   gMC->Gspos("I550",2,"I544",-2.25,-1.615,0.0,idrotm[573],"ONLY");
3943   gMC->Gspos("I549",1,"I544",1.7167,-1.52,0.0,idrotm[583],"ONLY");
3944   gMC->Gspos("I548",1,"I544",1.8533,-1.341,0.0,idrotm[575],"ONLY");
3945   gMC->Gspos("I547",1,"I544",1.0311,0.2033,-0.287,idrotm[576],"ONLY");
3946   gMC->Gspos("I545",1,"I544",0.0,-1.58,0.71,0,"ONLY");
3947   gMC->Gspos("I547",2,"I544",1.0311,0.2033,-2.203,idrotm[577],"ONLY");
3948   gMC->Gspos("I546",1,"I544",-0.0073,-1.58,-1.2311,idrotm[633],"ONLY");
3949   gMC->Gspos("I547",4,"I544",-1.0311,0.2033,-0.287,idrotm[579],"ONLY");
3950   gMC->Gspos("I547",3,"I544",-1.0311,0.2033,-2.203,idrotm[580],"ONLY");
3951   gMC->Gspos("I548",2,"I544",-0.1033,1.6901,0.0,idrotm[581],"O]NLY");
3952   gMC->Gspos("I549",2,"I544",0.12,1.6613,0.0,idrotm[575],"ONLY");
3953   gMC->Gspos("I549",3,"I544",-1.8367,-1.3122,0.0,idrotm[581],"ONLY");
3954   gMC->Gspos("I548",3,"I544",-1.75,-1.52,0.0,idrotm[583],"ONLY");
3955   gMC->Gspos("I552",1,"I544",2.1,-1.615,-0.24,0,"MANY");
3956   gMC->Gspos("I552",2,"I544",-2.1,-1.615,-0.24,idrotm[573],"MANY");
3957   gMC->Gspos("I515",12,"I516",-1.6896,-1.7075,-0.9822,0,"ONLY");
3958   gMC->Gspos("I515",11,"I516",-1.6896,-1.7925,-0.9822,0,"ONLY");
3959   gMC->Gspos("I513",37,"I516",0.0,-1.79,-1.035,idrotm[586],"ONLY");
3960   gMC->Gspos("I513",1,"I516",-3.2987,-1.71,-1.2943,0,"ONLY");
3961   gMC->Gspos("I515",1,"I516",-2.816,-1.7075,-0.9822,0,"ONLY");
3962   gMC->Gspos("I514",1,"I516",-2.25,-1.845,-1.19,0,"ONLY");
3963   gMC->Gspos("I514",2,"I516",0.0,-1.845,-1.19,0,"ONLY");
3964   gMC->Gspos("I514",3,"I516",2.25,-1.845,-1.19,0,"ONLY");
3965   gMC->Gspos("I515",2,"I516",-2.816,-1.7925,-0.9822,0,"ONLY");
3966   gMC->Gspos("I513",2,"I516",-3.2987,-1.79,-1.2943,0,"ONLY");
3967   gMC->Gspos("I515",3,"I516",-0.5632,-1.7075,-0.9822,0,"ONLY");
3968   gMC->Gspos("I515",4,"I516",-0.5632,-1.7925,-0.9822,0,"ONLY");
3969   gMC->Gspos("I515",5,"I516",0.5632,-1.7925,-0.9822,0,"ONLY");
3970   gMC->Gspos("I515",6,"I516",0.5632,-1.7075,-0.9822,0,"ONLY");
3971   gMC->Gspos("I515",7,"I516",1.6896,-1.7075,-0.9822,0,"ONLY");
3972   gMC->Gspos("I515",8,"I516",1.6896,-1.7925,-0.9822,0,"ONLY");
3973   gMC->Gspos("I515",9,"I516",2.816,-1.7925,-0.9822,0,"ONLY");
3974   gMC->Gspos("I515",10,"I516",2.816,-1.7075,-0.9822,0,"ONLY");
3975   gMC->Gspos("I513",3,"I516",-3.2287,-1.79,-1.2943,0,"ONLY");
3976   gMC->Gspos("I513",4,"I516",-3.2287,-1.71,-1.2943,0,"ONLY");
3977   gMC->Gspos("I513",5,"I516",-3.1587,-1.71,-1.2943,0,"ONLY");
3978   gMC->Gspos("I513",6,"I516",-3.1587,-1.79,-1.2943,0,"ONLY");
3979   gMC->Gspos("I513",7,"I516",-1.3437,-1.79,-1.2943,0,"ONLY");
3980   gMC->Gspos("I513",8,"I516",-1.3437,-1.71,-1.2943,0,"ONLY");
3981   gMC->Gspos("I513",9,"I516",-1.2737,-1.71,-1.2943,0,"ONLY");
3982   gMC->Gspos("I513",10,"I516",-1.2737,-1.79,-1.2943,0,"ONLY");
3983   gMC->Gspos("I513",11,"I516",-1.2037,-1.79,-1.2943,0,"ONLY");
3984   gMC->Gspos("I513",12,"I516",-1.2037,-1.71,-1.2943,0,"ONLY");
3985   gMC->Gspos("I513",13,"I516",-1.046,-1.71,-1.2943,0,"ONLY");
3986   gMC->Gspos("I513",14,"I516",-1.046,-1.79,-1.2943,0,"ONLY");
3987   gMC->Gspos("I513",15,"I516",-0.976,-1.79,-1.2943,0,"ONLY");
3988   gMC->Gspos("I513",16,"I516",-0.976,-1.71,-1.2943,0,"ONLY");
3989   gMC->Gspos("I513",17,"I516",-0.906,-1.71,-1.2943,0,"ONLY");
3990   gMC->Gspos("I513",18,"I516",-0.906,-1.79,-1.2943,0,"ONLY");
3991   gMC->Gspos("I513",19,"I516",0.9091,-1.79,-1.2943,0,"ONLY");
3992   gMC->Gspos("I513",20,"I516",0.9091,-1.71,-1.2943,0,"ONLY");
3993   gMC->Gspos("I513",21,"I516",0.9791,-1.71,-1.2943,0,"ONLY");
3994   gMC->Gspos("I513",22,"I516",0.9791,-1.79,-1.2943,0,"ONLY");
3995   gMC->Gspos("I513",23,"I516",1.0491,-1.79,-1.2943,0,"ONLY");
3996   gMC->Gspos("I513",24,"I516",1.0491,-1.71,-1.2943,0,"ONLY");
3997   gMC->Gspos("I513",25,"I516",1.2068,-1.71,-1.2943,0,"ONLY");
3998   gMC->Gspos("I513",26,"I516",1.2068,-1.79,-1.2943,0,"ONLY");
3999   gMC->Gspos("I513",27,"I516",1.2768,-1.79,-1.2943,0,"ONLY");
4000   gMC->Gspos("I513",28,"I516",1.2768,-1.71,-1.2943,0,"ONLY");
4001   gMC->Gspos("I513",29,"I516",1.3469,-1.71,-1.2943,0,"ONLY");
4002   gMC->Gspos("I513",30,"I516",1.3469,-1.79,-1.2943,0,"ONLY");
4003   gMC->Gspos("I513",31,"I516",3.1619,-1.79,-1.2943,0,"ONLY");
4004   gMC->Gspos("I513",32,"I516",3.1619,-1.71,-1.2943,0,"ONLY");
4005   gMC->Gspos("I513",33,"I516",3.2319,-1.71,-1.2943,0,"ONLY");
4006   gMC->Gspos("I513",34,"I516",3.2319,-1.79,-1.2943,0,"ONLY");
4007   gMC->Gspos("I513",35,"I516",3.3019,-1.79,-1.2943,0,"ONLY");
4008   gMC->Gspos("I513",36,"I516",3.3019,-1.71,-1.2943,0,"ONLY");
4009   gMC->Gspos("I512",1,"I516",0.0,-1.75,-1.065,0,"ONLY");
4010   gMC->Gspos("I528",1,"I516",1.7167,-1.52,0.0,idrotm[583],"ONLY");
4011   gMC->Gspos("I527",1,"I516",1.8534,-1.341,0.0,idrotm[575],"ONLY");
4012   gMC->Gspos("I528",2,"I516",0.12,1.6613,0.0,idrotm[575],"ONLY");
4013   gMC->Gspos("I527",2,"I516",-0.1033,1.6901,0.0,idrotm[581],"ONLY");
4014   gMC->Gspos("I527",3,"I516",-1.75,-1.52,0.0,idrotm[583],"ONLY");
4015   gMC->Gspos("I528",3,"I516",-1.8367,-1.3122,0.0,idrotm[581],"ONLY");
4016   gMC->Gspos("I526",2,"I516",1.0311,0.2033,-1.008,idrotm[577],"ONLY");
4017   gMC->Gspos("I525",1,"I516",-0.0073,-1.58,-0.0361,idrotm[633],"ONLY");
4018   gMC->Gspos("I524",1,"I516",0.0,-1.58,1.905,0,"ONLY");
4019   gMC->Gspos("I526",1,"I516",1.0311,0.2033,0.908,idrotm[576],"ONLY");
4020   gMC->Gspos("I526",3,"I516",-1.0311,0.2033,0.908,idrotm[579],"ONLY");
4021   gMC->Gspos("I526",4,"I516",-1.0311,0.2033,-1.008,idrotm[580],"ONLY");
4022   gMC->Gspos("I529",1,"I516",1.8,-1.75,-0.195,idrotm[571],"ONLY");
4023   gMC->Gspos("I530",1,"I516",0.0,-1.785,1.905,idrotm[571],"ONLY");
4024   gMC->Gspos("I529",2,"I516",-1.8,-1.75,-0.195,idrotm[572],"ONLY");
4025   gMC->Gspos("I517",1,"I516",2.25,-1.655,-1.3,idrotm[583],"MANY");
4026   gMC->Gspos("I517",2,"I516",-2.25,-1.655,-1.3,idrotm[584],"MANY");
4027   gMC->Gspos("I531",2,"I516",-2.25,-1.615,0.0,idrotm[573],"ONLY");
4028   gMC->Gspos("I531",1,"I516",2.25,-1.615,0.0,0,"ONLY");
4029   gMC->Gspos("I532",1,"I516",2.25,-1.615,0.0,0,"ONLY");
4030   gMC->Gspos("I532",2,"I516",-2.25,-1.615,0.0,idrotm[573],"ONLY");
4031   gMC->Gspos("I533",1,"I516",2.1,-1.615,0.955,0,"MANY");
4032   gMC->Gspos("I533",2,"I516",-2.1,-1.615,0.955,idrotm[573],"MANY");
4033   gMC->Gspos("ITS5",1,"I562",0.0,0.0,0.0,0,"ONLY");
4034
4035   
4036   // --- Place volumes of shield between SPD and SDD 
4037
4038
4039   gMC->Gspos("IC01",1,"ITSD",0.0,0.0,0.0,0,"ONLY");
4040   gMC->Gspos("IC02",1,"ITSD",0.0,0.0,25.+8.75,0,"ONLY");  
4041   gMC->Gspos("IC02",2,"ITSD",0.0,0.0,-25.-8.75,idrotm[200],"ONLY");  
4042   //gMC->Gspos("IC03",1,"ITSD",0.0,0.0,25.+17.5+7.875,0,"ONLY");  
4043   //gMC->Gspos("IC03",2,"ITSD",0.0,0.0,-25.-17.5-7.875,idrotm[200],"ONLY");   
4044   
4045   
4046   // --- Place volumes of cylinders between SPD and SDD and SDD and SSD 
4047   
4048   gMC->Gspos("ICY1",1,"ITSD",0.0,0.0,0.,0,"ONLY");    
4049   gMC->Gspos("ICY2",1,"ITSD",0.0,0.0,0.,0,"ONLY");    
4050   
4051
4052   // --- Place volumes of SDD cone ---------------------------------- 
4053   
4054   
4055   gMC->Gspos("I093",1,"IS02",0.0,0.0,0.0,0,"MANY");
4056   gMC->Gspos("I093",2,"IS02",0.0,0.0,0.0,idrotm[856],"MANY");
4057   gMC->Gspos("I099",4,"IS02",0.0,0.0,0.0,idrotm[857],"MANY");
4058   gMC->Gspos("I099",3,"IS02",0.0,0.0,0.0,idrotm[858],"MANY");
4059   gMC->Gspos("I099",5,"IS02",0.0,0.0,0.0,idrotm[859],"MANY");
4060   gMC->Gspos("I099",6,"IS02",0.0,0.0,0.0,idrotm[860],"MANY");
4061   gMC->Gspos("I099",7,"IS02",0.0,0.0,0.0,idrotm[861],"MANY");
4062   gMC->Gspos("I099",2,"IS02",0.0,0.0,0.0,idrotm[862],"MANY");
4063   gMC->Gspos("I200",4,"IS02",0.0,0.0,0.0,idrotm[863],"MANY");
4064   gMC->Gspos("I200",3,"IS02",0.0,0.0,0.0,idrotm[864],"MANY");
4065   gMC->Gspos("I200",2,"IS02",0.0,0.0,0.0,idrotm[865],"MANY");
4066   gMC->Gspos("I200",13,"IS02",0.0,0.0,0.0,idrotm[867],"MANY");
4067   gMC->Gspos("I200",12,"IS02",0.0,0.0,0.0,idrotm[869],"MANY");
4068   gMC->Gspos("I200",11,"IS02",0.0,0.0,0.0,idrotm[870],"MANY");
4069   gMC->Gspos("I200",10,"IS02",0.0,0.0,0.0,idrotm[871],"MANY");
4070   gMC->Gspos("I200",9,"IS02",0.0,0.0,0.0,idrotm[872],"MANY");
4071   gMC->Gspos("I200",8,"IS02",0.0,0.0,0.0,idrotm[873],"MANY");
4072   gMC->Gspos("I200",7,"IS02",0.0,0.0,0.0,idrotm[874],"MANY");
4073   gMC->Gspos("I200",6,"IS02",0.0,0.0,0.0,idrotm[875],"MANY");
4074   gMC->Gspos("I200",5,"IS02",0.0,0.0,0.0,idrotm[876],"MANY");
4075   gMC->Gspos("I090",2,"IS02",0.0,0.0,-39.4,0,"ONLY");    
4076   gMC->Gspos("I090",1,"IS02",0.0,0.0,39.4,idrotm[856],"ONLY");  
4077   gMC->Gspos("I099",9,"IS02",0.0,0.0,0.0,idrotm[877],"ONLY");
4078   gMC->Gspos("I099",8,"IS02",0.0,0.0,0.0,idrotm[879],"ONLY");
4079   gMC->Gspos("I099",1,"IS02",0.0,0.0,0.0,idrotm[880],"ONLY");
4080   gMC->Gspos("I099",12,"IS02",0.0,0.0,0.0,idrotm[881],"ONLY");
4081   gMC->Gspos("I099",11,"IS02",0.0,0.0,0.0,idrotm[851],"ONLY");
4082   gMC->Gspos("I099",10,"IS02",0.0,0.0,0.0,idrotm[882],"ONLY");
4083   gMC->Gspos("I200",23,"IS02",0.0,0.0,0.0,idrotm[898],"ONLY");
4084   gMC->Gspos("I200",24,"IS02",0.0,0.0,0.0,idrotm[883],"ONLY");
4085   gMC->Gspos("I200",1,"IS02",0.0,0.0,0.0,idrotm[884],"ONLY");
4086   gMC->Gspos("I200",14,"IS02",0.0,0.0,0.0,idrotm[885],"ONLY");
4087   gMC->Gspos("I200",15,"IS02",0.0,0.0,0.0,idrotm[887],"ONLY");
4088   gMC->Gspos("I200",16,"IS02",0.0,0.0,0.0,idrotm[888],"ONLY");
4089   gMC->Gspos("I200",17,"IS02",0.0,0.0,0.0,idrotm[889],"ONLY");
4090   gMC->Gspos("I200",18,"IS02",0.0,0.0,0.0,idrotm[890],"ONLY");
4091   gMC->Gspos("I200",22,"IS02",0.0,0.0,0.0,idrotm[891],"ONLY");
4092   gMC->Gspos("I200",21,"IS02",0.0,0.0,0.0,idrotm[892],"ONLY");
4093   gMC->Gspos("I200",20,"IS02",0.0,0.0,0.0,idrotm[868],"ONLY");
4094   gMC->Gspos("I200",19,"IS02",0.0,0.0,0.0,idrotm[893],"ONLY");
4095   gMC->Gspos("I098",1,"IS02",0.0,0.0,33.6,0,"ONLY");    
4096   gMC->Gspos("I097",1,"IS02",0.0,0.0,26.6,0,"ONLY");    
4097   gMC->Gspos("I097",2,"IS02",0.0,0.0,-26.6,idrotm[856],"ONLY");  
4098   gMC->Gspos("I098",2,"IS02",0.0,0.0,-33.6,idrotm[856],"ONLY");  
4099   gMC->Gspos("I202",1,"IS02",12.1,0.0,33.84,0,"ONLY");
4100   gMC->Gspos("I202",6,"IS02",-6.05,-10.4789,33.84,idrotm[930],"ONLY");
4101   gMC->Gspos("I202",5,"IS02",-6.05,10.4789,33.84,idrotm[929],"ONLY");
4102   gMC->Gspos("I202",2,"IS02",12.1,0.0,-33.84,idrotm[856],"ONLY");
4103   gMC->Gspos("I202",3,"IS02",-6.05,10.4789,-33.84,idrotm[932],"ONLY");
4104   gMC->Gspos("I202",4,"IS02",-6.05,-10.4789,-33.84,idrotm[934],"ONLY");
4105   gMC->Gspos("I203",12,"IS02",21.8453,0.0,-42.24,idrotm[856],"ONLY");
4106   gMC->Gspos("I203",11,"IS02",10.9227,-18.9186,-42.24,idrotm[935],"ONLY");
4107   gMC->Gspos("I203",10,"IS02",10.9227,-18.9186,42.24,idrotm[846],"ONLY");
4108   gMC->Gspos("I203",9,"IS02",-10.9227,-18.9186,-42.24,idrotm[934],"ONLY");
4109   gMC->Gspos("I203",8,"IS02",-10.9227,-18.9186,42.24,idrotm[930],"ONLY");
4110   gMC->Gspos("I203",7,"IS02",-21.8453,0.0,-42.24,idrotm[933],"ONLY");
4111   gMC->Gspos("I203",6,"IS02",-21.8453,0.0,42.24,idrotm[878],"ONLY");
4112   gMC->Gspos("I203",5,"IS02",-10.9227,18.9186,-42.24,idrotm[932],"ONLY");
4113   gMC->Gspos("I203",4,"IS02",-10.9227,18.9186,42.24,idrotm[929],"ONLY");
4114   gMC->Gspos("I203",3,"IS02",10.9227,18.9186,-42.24,idrotm[931],"ONLY");
4115   gMC->Gspos("I203",2,"IS02",10.9227,18.9186,42.24,idrotm[853],"ONLY");
4116   gMC->Gspos("I203",1,"IS02",21.8453,0.0,42.24,0,"ONLY");
4117   gMC->Gspos("I095",1,"I098",0.0,0.0,0.0,0,"ONLY");
4118   gMC->Gspos("I096",23,"I098",22.77,0.0,0.0,idrotm[894],"MANY");
4119   gMC->Gspos("I096",14,"I098",22.3754,6.57,0.0,idrotm[895],"MANY");
4120   gMC->Gspos("I096",3,"I098",19.1553,12.3104,0.0,idrotm[896],"MANY");
4121   gMC->Gspos("I096",16,"I098",15.2714,17.6241,0.0,idrotm[897],"MANY");
4122   gMC->Gspos("I096",5,"I098",9.459,20.7123,0.0,idrotm[899],"MANY");
4123   gMC->Gspos("I096",18,"I098",3.3188,23.0826,0.0,idrotm[900],"MANY");
4124   gMC->Gspos("I096",7,"I098",-3.2405,22.5382,0.0,idrotm[901],"MANY");
4125   gMC->Gspos("I096",20,"I098",-9.6875,21.2126,0.0,idrotm[902],"MANY");
4126   gMC->Gspos("I096",9,"I098",-14.9112,17.2084,0.0,idrotm[903],"MANY");
4127   gMC->Gspos("I096",22,"I098",-19.618,12.6077,0.0,idrotm[904],"MANY");
4128   gMC->Gspos("I096",11,"I098",-21.8477,6.4151,0.0,idrotm[905],"MANY");
4129   gMC->Gspos("I096",24,"I098",-23.32,0.0,0.0,idrotm[906],"MANY");
4130   gMC->Gspos("I096",13,"I098",-21.8477,-6.4151,0.0,idrotm[907],"MANY");
4131   gMC->Gspos("I096",4,"I098",-19.618,-12.6077,0.0,idrotm[908],"MANY");
4132   gMC->Gspos("I096",15,"I098",-14.9112,-17.2084,0.0,idrotm[909],"MANY");
4133   gMC->Gspos("I096",6,"I098",-9.6875,-21.2126,0.0,idrotm[910],"MANY");
4134   gMC->Gspos("I096",17,"I098",-3.2405,-22.5382,0.0,idrotm[911],"MANY");
4135   gMC->Gspos("I096",8,"I098",3.3188,-23.0826,0.0,idrotm[912],"MANY");
4136   gMC->Gspos("I096",19,"I098",9.459,-20.7123,0.0,idrotm[913],"MANY");
4137   gMC->Gspos("I096",10,"I098",15.2714,-17.6241,0.0,idrotm[914],"MANY");
4138   gMC->Gspos("I096",21,"I098",19.1553,-12.3104,0.0,idrotm[915],"MANY");
4139   gMC->Gspos("I096",12,"I098",22.3754,-6.57,0.0,idrotm[916],"MANY");
4140   gMC->Gspos("I094",1,"I097",0.0,0.0,0.0,0,"ONLY");
4141   gMC->Gspos("I096",1,"I097",13.87,0.0,0.0,idrotm[894],"MANY");
4142   gMC->Gspos("I096",32,"I097",13.037,6.2783,0.0,idrotm[917],"MANY");
4143   gMC->Gspos("I096",25,"I097",8.6478,10.844,0.0,idrotm[918],"MANY");
4144   gMC->Gspos("I096",34,"I097",3.2199,14.1072,0.0,idrotm[919],"MANY");
4145   gMC->Gspos("I096",27,"I097",-3.0864,13.5223,0.0,idrotm[920],"MANY");
4146   gMC->Gspos("I096",36,"I097",-9.0219,11.3131,0.0,idrotm[921],"MANY");
4147   gMC->Gspos("I096",29,"I097",-12.4964,6.018,0.0,idrotm[922],"MANY");
4148   gMC->Gspos("I096",2,"I097",-14.47,0.0,0.0,idrotm[906],"MANY");
4149   gMC->Gspos("I096",31,"I097",-12.4964,-6.018,0.0,idrotm[923],"MANY");
4150   gMC->Gspos("I096",26,"I097",-9.0219,-11.3131,0.0,idrotm[924],"MANY");
4151   gMC->Gspos("I096",33,"I097",-3.0864,-13.5223,0.0,idrotm[925],"MANY");
4152   gMC->Gspos("I096",28,"I097",3.2199,-14.1072,0.0,idrotm[926],"MANY");
4153   gMC->Gspos("I096",35,"I097",8.6478,-10.844,0.0,idrotm[927],"MANY");
4154   gMC->Gspos("I096",30,"I097",13.037,-6.2783,0.0,idrotm[928],"MANY");
4155   
4156   
4157   // --- Place volumes of SSD cone ----------------------------------    
4158
4159     
4160   gMC->Gspos("I212",2,"IS01",0.0,0.0,0.0,idrotm[701],"MANY");
4161   gMC->Gspos("I212",1,"IS01",0.0,0.0,0.0,0,"MANY");
4162   gMC->Gspos("I211",1,"IS01",0.0,0.0,-56.5,0,"ONLY");
4163   gMC->Gspos("I217",1,"IS01",0.0,0.0,-44.4,0,"ONLY");             // this will change after PPR to be symmetric
4164   gMC->Gspos("I219",1,"IS01",0.0,0.0,-50.25,0,"ONLY");            // this will change after PPR to be symmetric
4165   gMC->Gspos("I211",2,"IS01",0.0,0.0,56.5,idrotm[701],"ONLY");   
4166   gMC->Gspos("I219",2,"IS01",0.0,0.0,51.65,idrotm[701],"ONLY");   // this will change after PPR to be symmetric
4167   gMC->Gspos("I217",2,"IS01",0.0,0.0,45.8,idrotm[701],"ONLY");    // this will change after PPR to be symmetric
4168   gMC->Gspos("I214",2,"IS01",0.0,0.0,67.25,idrotm[701],"ONLY");   
4169   gMC->Gspos("I213",2,"IS01",0.0,0.0,62.25,idrotm[701],"ONLY");  
4170   gMC->Gspos("I213",1,"IS01",0.0,0.0,-62.25,0,"ONLY");             
4171   gMC->Gspos("I214",1,"IS01",0.0,0.0,-67.25,0,"ONLY");           
4172   gMC->Gspos("I215",19,"IS01",0.0,0.0,0.0,idrotm[702],"MANY");
4173   gMC->Gspos("I215",21,"IS01",0.0,0.0,0.0,idrotm[703],"MANY");
4174   gMC->Gspos("I215",23,"IS01",0.0,0.0,0.0,idrotm[704],"MANY");
4175   gMC->Gspos("I215",24,"IS01",0.0,0.0,0.0,idrotm[705],"MANY");
4176   gMC->Gspos("I215",3,"IS01",0.0,0.0,0.0,idrotm[706],"MANY");
4177   gMC->Gspos("I215",5,"IS01",0.0,0.0,0.0,idrotm[707],"MANY");
4178   gMC->Gspos("I215",7,"IS01",0.0,0.0,0.0,idrotm[708],"MANY");
4179   gMC->Gspos("I215",9,"IS01",0.0,0.0,0.0,idrotm[709],"MANY");
4180   gMC->Gspos("I215",11,"IS01",0.0,0.0,0.0,idrotm[710],"MANY");
4181   gMC->Gspos("I215",13,"IS01",0.0,0.0,0.0,idrotm[711],"MANY");
4182   gMC->Gspos("I215",15,"IS01",0.0,0.0,0.0,idrotm[712],"MANY");
4183   gMC->Gspos("I215",17,"IS01",0.0,0.0,0.0,idrotm[713],"MANY");
4184   gMC->Gspos("I216",9,"IS01",0.0,0.0,45.5,idrotm[714],"ONLY");
4185   gMC->Gspos("I216",11,"IS01",0.0,0.0,45.5,idrotm[715],"ONLY");
4186   gMC->Gspos("I216",12,"IS01",0.0,0.0,45.5,idrotm[716],"ONLY");
4187   gMC->Gspos("I216",3,"IS01",0.0,0.0,45.5,idrotm[717],"ONLY");
4188   gMC->Gspos("I216",5,"IS01",0.0,0.0,45.5,idrotm[718],"ONLY");
4189   gMC->Gspos("I216",7,"IS01",0.0,0.0,45.5,idrotm[719],"ONLY");
4190   gMC->Gspos("I216",10,"IS01",0.0,0.0,-44,idrotm[720],"ONLY");
4191   gMC->Gspos("I216",1,"IS01",0.0,0.0,-44,idrotm[721],"ONLY");
4192   gMC->Gspos("I216",2,"IS01",0.0,0.0,-44,idrotm[722],"ONLY");
4193   gMC->Gspos("I216",4,"IS01",0.0,0.0,-44,idrotm[723],"ONLY");
4194   gMC->Gspos("I216",6,"IS01",0.0,0.0,-44,idrotm[724],"ONLY");
4195   gMC->Gspos("I216",8,"IS01",0.0,0.0,-44,idrotm[725],"ONLY");
4196   gMC->Gspos("I215",1,"IS01",0.0,0.0,0.0,idrotm[726],"MANY");
4197   gMC->Gspos("I215",2,"IS01",0.0,0.0,0.0,idrotm[727],"MANY");
4198   gMC->Gspos("I215",4,"IS01",0.0,0.0,0.0,idrotm[728],"MANY");
4199   gMC->Gspos("I215",6,"IS01",0.0,0.0,0.0,idrotm[729],"MANY");
4200   gMC->Gspos("I215",8,"IS01",0.0,0.0,0.0,idrotm[733],"MANY");
4201   gMC->Gspos("I215",10,"IS01",0.0,0.0,0.0,idrotm[730],"MANY");
4202   gMC->Gspos("I215",12,"IS01",0.0,0.0,0.0,idrotm[731],"MANY");
4203   gMC->Gspos("I215",14,"IS01",0.0,0.0,0.0,idrotm[768],"MANY");
4204   gMC->Gspos("I215",16,"IS01",0.0,0.0,0.0,idrotm[732],"MANY");
4205   gMC->Gspos("I215",18,"IS01",0.0,0.0,0.0,idrotm[734],"MANY");
4206   gMC->Gspos("I215",20,"IS01",0.0,0.0,0.0,idrotm[798],"MANY");
4207   gMC->Gspos("I215",22,"IS01",0.0,0.0,0.0,idrotm[735],"MANY");
4208            
4209                     
4210   // --- Place subdetectors' mother volumes and supports' mother volumes
4211   //     into ITS mother volume ITSD
4212     
4213   gMC->Gspos("IT12",1,"ITSD",0.0,0.0,0.0,0,"ONLY");  // SPD mother volume
4214   gMC->Gspos("IT34",1,"ITSD",0.0,0.0,0.0,0,"ONLY");  // SDD mother volume
4215   gMC->Gspos("IT56",1,"ITSD",0.0,0.0,0.0,0,"ONLY");  // SSD mother volume
4216   gMC->Gspos("IS02",1,"ITSD",0.0,0.0,0.0,0,"ONLY");  // SDD cones/supports
4217   gMC->Gspos("IS01",1,"ITSD",0.0,0.0,0.0,0,"ONLY");  // SSD cones/supports
4218         
4219
4220   // ****************************  SERVICES  *********************************
4221
4222    // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
4223   //     UPPER PART
4224
4225   dgh[0] = 46.;    
4226   dgh[1] = 46.+1.0;  
4227   dgh[2] = 9.5;
4228   dgh[3] = 12.;
4229   dgh[4] = 168.;
4230   
4231   gMC->Gsvolu("I1CU", "TUBS", idtmed[213], dgh, 5);  
4232   gMC->Gspos("I1CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
4233   gMC->Gspos("I1CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
4234   
4235   // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
4236   //     LOWER PART
4237
4238   dgh[0] = 46.;    
4239   dgh[1] = 46.+1.0;  
4240   dgh[2] = 9.5;
4241   dgh[3] = 192.;
4242   dgh[4] = 348.;
4243   
4244   gMC->Gsvolu("I2CU", "TUBS", idtmed[213], dgh, 5);  
4245   gMC->Gspos("I2CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
4246   gMC->Gspos("I2CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
4247
4248
4249   // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
4250   //     UPPER PART
4251   
4252   dgh[0] = 46.+1.0;  
4253   dgh[1] = 46.+1.0+1.5;   
4254   dgh[2] = 9.5;
4255   dgh[3] = 12.;
4256   dgh[4] = 168.;
4257   
4258   gMC->Gsvolu("I1CC", "TUBS", idtmed[225], dgh, 5);  
4259   gMC->Gspos("I1CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
4260   gMC->Gspos("I1CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");  
4261   
4262   // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
4263   //     LOWER PART
4264   
4265   dgh[0] = 46.+1.0;  
4266   dgh[1] = 46.+1.0+1.5;   
4267   dgh[2] = 9.5;
4268   dgh[3] = 192.;
4269   dgh[4] = 348.;
4270   
4271   gMC->Gsvolu("I2CC", "TUBS", idtmed[225], dgh, 5);  
4272   gMC->Gspos("I2CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
4273   gMC->Gspos("I2CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");  
4274
4275
4276   // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
4277   //     UPPER PART
4278   
4279   dgh[0] = 46.;  
4280   dgh[1] = 56.;
4281   dgh[2] = 2.25;
4282   dgh[3] = 12.;
4283   dgh[4] = 168.;
4284   
4285   gMC->Gsvolu("IPA1", "TUBS", idtmed[210], dgh, 5);  
4286   gMC->Gspos("IPA1", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");  
4287   gMC->Gspos("IPA1", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY"); 
4288   
4289   // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
4290   //     LOWER PART
4291   
4292   dgh[0] = 46.;  
4293   dgh[1] = 56.;
4294   dgh[2] = 2.25;
4295   dgh[3] = 192.;
4296   dgh[4] = 348.;
4297   
4298   gMC->Gsvolu("IPA2", "TUBS", idtmed[210], dgh, 5);  
4299   gMC->Gspos("IPA2", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");  
4300   gMC->Gspos("IPA2", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY"); 
4301  
4302   
4303   // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - UPPER PART
4304  
4305   dgh[0] = (ztpc-97.5)/2.;
4306   dgh[1] = 46.2;
4307   dgh[2] = 46.2+1.0;
4308   dgh[3] = 62.3;
4309   dgh[4] = 62.3+1.0;
4310   dgh[5] = 12.;    
4311   dgh[6] = 168.;
4312   gMC->Gsvolu("ICU1", "CONS", idtmed[213], dgh, 7);    
4313   gMC->Gspos("ICU1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");  
4314   gMC->Gspos("ICU1", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");   
4315   
4316   // --- DEFINE CABLES/COOLING BELOW THE TPC - COPPER PART - LOWER PART
4317   
4318   dgh[0] = (ztpc-97.5)/2.;
4319   dgh[1] = 46.2;
4320   dgh[2] = 46.2+1.0;
4321   dgh[3] = 62.3;
4322   dgh[4] = 62.3+1.0;
4323   dgh[5] = 192.;    
4324   dgh[6] = 348.;
4325   gMC->Gsvolu("ICU2", "CONS", idtmed[213], dgh, 7);    
4326   gMC->Gspos("ICU2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");  
4327   gMC->Gspos("ICU2", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");     
4328   
4329   // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - UPPER PART
4330   
4331   dgh[0] = (ztpc-97.5)/2.;
4332   dgh[1] = 46.2+1.0;
4333   dgh[2] = 46.2+1.0+1.5;
4334   dgh[3] = 62.3+1.0;
4335   dgh[4] = 62.3+1.0+1.5;
4336   dgh[5] = 12.;    
4337   dgh[6] = 168.;  
4338   gMC->Gsvolu("ICC1", "CONS", idtmed[225], dgh, 7);    
4339   gMC->Gspos("ICC1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");  
4340   gMC->Gspos("ICC1", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");   
4341   
4342   // --- DEFINE CABLES/COOLING BELOW THE TPC - CARBON PART - LOWER PART
4343   
4344   dgh[0] = (ztpc-97.5)/2.;
4345   dgh[1] = 46.2+1.0;
4346   dgh[2] = 46.2+1.0+1.5;
4347   dgh[3] = 62.3+1.0;
4348   dgh[4] = 62.3+1.0+1.5;
4349   dgh[5] = 192.;    
4350   dgh[6] = 348.;  
4351   gMC->Gsvolu("ICC2", "CONS", idtmed[225], dgh, 7);    
4352   gMC->Gspos("ICC2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");  
4353   gMC->Gspos("ICC2", 2, "ITSV", 0., 0., -(97.5+dgh[0]), idrotm[200], "ONLY");     
4354     
4355   // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - UPPER PART
4356     
4357   dgh[0] = 62.1;
4358   dgh[1] = 74.5;
4359   dgh[2] = 0.5;
4360   dgh[3] = 12.;
4361   dgh[4] = 168.;
4362   gMC->Gsvolu("ICU3", "TUBS", idtmed[213], dgh, 5);    
4363   gMC->Gspos("ICU3", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");  
4364   gMC->Gspos("ICU3", 2, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), idrotm[200], "ONLY");      
4365   
4366   // --- DEFINE CABLES/COOLING BEHIND THE TPC - COPPER PART - LOWER PART
4367   
4368   dgh[0] = 62.1;
4369   dgh[1] = 74.5;
4370   dgh[2] = 0.5;
4371   dgh[3] = 192.;
4372   dgh[4] = 348.;
4373   gMC->Gsvolu("ICU4", "TUBS", idtmed[213], dgh, 5);    
4374   gMC->Gspos("ICU4", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");  
4375   gMC->Gspos("ICU4", 2, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), idrotm[200], "ONLY");      
4376      
4377   // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - UPPER PART
4378
4379   dgh[0] = 62.1;
4380   dgh[1] = 74.5;
4381   dgh[2] = 0.75;
4382   dgh[3] = 12.;
4383   dgh[4] = 168.;
4384   gMC->Gsvolu("ICC3", "TUBS", idtmed[225], dgh, 5);    
4385   gMC->Gspos("ICC3", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");  
4386   gMC->Gspos("ICC3", 2, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[200], "ONLY"); 
4387     
4388   // --- DEFINE CABLES/COOLING BEHIND THE TPC - CARBON PART - LOWER PART
4389
4390   dgh[0] = 62.1;
4391   dgh[1] = 74.5;
4392   dgh[2] = 0.75;
4393   dgh[3] = 192.;
4394   dgh[4] = 348.;
4395   gMC->Gsvolu("ICC4", "TUBS", idtmed[225], dgh, 5);    
4396   gMC->Gspos("ICC4", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");  
4397   gMC->Gspos("ICC4", 2, "ITSV", 0., 0., -(ztpc+dgh[2]), idrotm[200], "ONLY"); 
4398
4399   // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - UPPER PART
4400   
4401   dgh[0] = 74.5;
4402   dgh[1] = 79.5;
4403   dgh[2] = 2.5;
4404   dgh[3] = 12.;
4405   dgh[4] = 168.;
4406   gMC->Gsvolu("IHK1", "TUBS", idtmed[264], dgh, 5);   
4407   gMC->Gspos("IHK1", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");      
4408   
4409   // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - LOWER PART
4410   
4411   dgh[0] = 74.5;
4412   dgh[1] = 79.5;
4413   dgh[2] = 2.5;
4414   dgh[3] = 192.;
4415   dgh[4] = 348.;
4416   gMC->Gsvolu("IHK2", "TUBS", idtmed[264], dgh, 5);   
4417   gMC->Gspos("IHK2", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");        
4418   
4419   // --- DEFINE RAILS BETWEEN THE ITS AND THE TPC
4420   
4421   if (rails == 1) {
4422   
4423      dgh[0] = 2.;          
4424      dgh[1] = 8.;           
4425      dgh[2] = 190.;         
4426      gMC->Gsvolu("IRA1", "BOX ", idtmed[268], dgh, 3);
4427      gMC->Gspos("IRA1", 1, "ITSV", 53.5, 0., -69.5, 0, "ONLY");   
4428      gMC->Gsvolu("IRA2", "BOX ", idtmed[268], dgh, 3);    
4429      gMC->Gspos("IRA2", 1, "ITSV", -53.5, 0., -69.5, 0, "ONLY");    
4430
4431      dgh[0] = 2.-0.5;    // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2      
4432      dgh[1] = 8.-0.5;    // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2       
4433      dgh[2] = 190.;         
4434      gMC->Gsvolu("IRA3", "BOX ", idtmed[205], dgh, 3);   
4435      gMC->Gspos("IRA3", 1, "IRA1", 0., 0., 0., 0, "ONLY");   
4436      gMC->Gsvolu("IRA4", "BOX ", idtmed[205], dgh, 3);     
4437      gMC->Gspos("IRA4", 1, "IRA2", 0., 0., 0., 0, "ONLY");    
4438
4439   }
4440   
4441   // --- DEFINE CYLINDERS HOLDING RAILS BETWEEN THE ITS AND THE TPC
4442   
4443   dgh[0] = 56.9;    
4444   dgh[1] = 59.;
4445   dgh[2] = 0.6;    
4446   gMC->Gsvolu("ICYL", "TUBE", idtmed[210], dgh, 3);   
4447   gMC->Gspos("ICYL", 1, "ALIC", 0., 0., 74.1, 0, "ONLY");       
4448   gMC->Gspos("ICYL", 2, "ALIC", 0., 0., -74.1, idrotm[200], "ONLY");  
4449
4450   // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE CYLINDERS
4451
4452   dgh[0] = 0.;        
4453   dgh[1] = 3.;         
4454   dgh[2] = 5.;  // 5. comes from the fact that the volume has to be 567.6/2 cm^3       
4455   gMC->Gsvolu("ISR1", "TUBE", idtmed[284], dgh, 3);   
4456   gMC->Gspos("ISR1", 1, "ALIC", 54.9, 11., 79.5, 0, "ONLY");   
4457   gMC->Gspos("ISR1", 2, "ALIC", 54.9, -11., 79.5, 0, "ONLY");   
4458   gMC->Gspos("ISR1", 3, "ALIC", -54.9, 11., 79.5, 0, "ONLY"); 
4459   gMC->Gspos("ISR1", 4, "ALIC", -54.9, -11., 79.5, 0, "ONLY");  
4460   gMC->Gspos("ISR1", 5, "ALIC", 54.9, 11., -79.5, 0, "ONLY");   
4461   gMC->Gspos("ISR1", 6, "ALIC", 54.9, -11., -79.5, 0, "ONLY");   
4462   gMC->Gspos("ISR1", 7, "ALIC", -54.9, 11., -79.5, 0, "ONLY"); 
4463   gMC->Gspos("ISR1", 8, "ALIC", -54.9, -11., -79.5, 0, "ONLY");         
4464   
4465   // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE ABSORBER
4466
4467   dgh[0] = 5.;        
4468   dgh[1] = 12.;         
4469   dgh[2] = 5.;         
4470   gMC->Gsvolu("ISR2", "BOX ", idtmed[210], dgh, 3);   
4471   gMC->Gspos("ISR2", 1, "ALIC", 53.5, 0., 125.5, 0, "ONLY");
4472   gMC->Gsvolu("ISR3", "BOX ", idtmed[210], dgh, 3);   
4473   gMC->Gspos("ISR3", 1, "ALIC", -53.5, 0., 125.5, 0, "ONLY");  
4474   
4475   dgh[0] = 5.-2.;        
4476   dgh[1] = 12.-2.;         
4477   dgh[2] = 5.;         
4478   gMC->Gsvolu("ISR4", "BOX ", idtmed[205], dgh, 3);   
4479   gMC->Gspos("ISR4", 1, "ISR2", 0., 0., 0., 0, "ONLY");     
4480   gMC->Gsvolu("ISR5", "BOX ", idtmed[205], dgh, 3);   
4481   gMC->Gspos("ISR5", 1, "ISR3", 0., 0., 0., 0, "ONLY");
4482   
4483   // --- DEFINE SUPPORTS TO ATTACH THE ITS TO THE TPC
4484   
4485   dgh[0] = 0.;        
4486   dgh[1] = 5.;         
4487   dgh[2] = 2.;         
4488   gMC->Gsvolu("ISR6", "TUBE", idtmed[210], dgh, 3);   
4489   gMC->Gspos("ISR6", 1, "ALIC", 0., 54., 77., 0, "ONLY"); 
4490   gMC->Gspos("ISR6", 2, "ALIC", 0., 54., -77., 0, "ONLY"); 
4491   gMC->Gspos("ISR6", 3, "ALIC", 0., -54., -77., 0, "ONLY");       
4492   
4493   // --- Outputs the geometry tree in the EUCLID/CAD format 
4494   
4495   if (fEuclidOut) {
4496     gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5);
4497   }
4498 }
4499 //_____________________________________________________________________________
4500 void AliITSvPPRsymm::CreateMaterials(){
4501 ////////////////////////////////////////////////////////////////////////
4502   //
4503   // Create ITS materials
4504   //     This function defines the default materials used in the Geant
4505   // Monte Carlo simulations for the geometries AliITSv1, AliITSv3,
4506   // AliITSvPPRsymm.
4507   // In general it is automatically replaced by
4508   // the CreatMaterials routine defined in AliITSv?. Should the function
4509   // CreateMaterials not exist for the geometry version you are using this
4510   // one is used. See the definition found in AliITSv5 or the other routine
4511   // for a complete definition.
4512   //
4513     
4514   Int_t  isxfld  = gAlice->Field()->Integ();
4515   Float_t sxmgmx = gAlice->Field()->Max();
4516
4517   // Freon
4518   Float_t afre[2]  = { 12.011,18.9984032 };
4519   Float_t zfre[2]  = { 6.,9. };
4520   Float_t wfre[2]  = { 5.,12. };
4521   Float_t densfre  = 1.5;  
4522
4523   // --- Define the various materials and media for GEANT --- 
4524   
4525   AliMaterial(1,"SI$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4526   AliMedium(1,"SI$",1,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4527
4528   AliMaterial(2,"SPD SI CHIP$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4529   AliMedium(2,"SPD SI CHIP$",2,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,   0);
4530
4531   AliMaterial(3,"SPD SI BUS$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4532   AliMedium(3,"SPD SI BUS$",3,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4533
4534   AliMaterial(4,"C (M55J)$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
4535   AliMedium(4,"C (M55J)$",4,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4536
4537   AliMaterial(5,"AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4538   AliMedium(5,"AIR$",5,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
4539
4540   AliMaterial(6,"GEN AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4541   AliMedium(6,"GEN AIR$",6,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
4542
4543   AliMaterial(7,"SDD SI CHIP$",0.374952E+02,0.178184E+02,0.24485E+01,0.76931E+01,0.99900E+03);
4544   AliMedium(7,"SDD SI CHIP$",7,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4545
4546   AliMaterial(9,"SDD C (M55J)$",0.123565E+02,0.64561E+01,0.18097E+01,0.229570E+02,0.99900E+03);
4547   AliMedium(9,"SDD C (M55J)$",9,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4548
4549   AliMaterial(10,"SDD AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4550   AliMedium(10,"SDD AIR$",10,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
4551
4552   AliMaterial(11,"AL$",0.26982E+02,0.13000E+02,0.26989E+01,0.89000E+01,0.99900E+03);
4553   AliMedium(11,"AL$",11,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4554
4555   AliMaterial(12,"WATER$",0.14322E+02,0.72167E+01,0.10000E+01,0.35759E+02,0.94951E+02);
4556   AliMedium(12,"WATER$",12,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4557
4558   AliMixture(13,"Freon$",afre,zfre,densfre,-2,wfre);
4559   AliMedium(13,"Freon$",13,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4560
4561   AliMaterial(14,"COPPER$",0.63546E+02,0.29000E+02,0.89600E+01,0.14300E+01,0.99900E+03);
4562   AliMedium(14,"COPPER$",14,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4563
4564   AliMaterial(15,"CERAMICS$",0.22314E+02,0.10856E+02,0.36000E+01,0.76200E+01,0.31901E+02);
4565   AliMedium(15,"CERAMICS$",15,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4566
4567   AliMaterial(20,"SSD C (M55J)$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
4568   AliMedium(20,"SSD C (M55J)$",20,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4569
4570   AliMaterial(21,"SSD AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4571   AliMedium(21,"SSD AIR$",21,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
4572
4573   AliMaterial(25,"G10FR4$",0.17749E+02,0.88750E+01,0.18000E+01,0.21822E+02,0.99900E+03);
4574   AliMedium(25,"G10FR4$",25,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4575
4576   AliMaterial(26,"GEN C (M55J)$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
4577   AliMedium(26,"GEN C (M55J)$",26,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4578
4579   AliMaterial(27,"GEN Air$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4580   AliMedium(27,"GEN Air$",27,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
4581
4582   AliMaterial(51,"SPD SI$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4583   AliMedium(51,"SPD SI$",51,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4584
4585   AliMaterial(52,"SPD SI CHIP$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4586   AliMedium(52,"SPD SI CHIP$",52,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4587
4588   AliMaterial(53,"SPD SI BUS$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4589   AliMedium(53,"SPD SI BUS$",53,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4590
4591   AliMaterial(54,"SPD C (M55J)$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
4592   AliMedium(54,"SPD C (M55J)$",54,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4593
4594   AliMaterial(55,"SPD AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4595   AliMedium(55,"SPD AIR$",55,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E-02,.10000E+01,0);
4596
4597   AliMaterial(56,"SPD KAPTON(POLYCH2)$",0.14000E+02,0.71770E+01,0.13000E+01,0.31270E+02,0.99900E+03);
4598   AliMedium(56,"SPD KAPTON(POLYCH2)$",56,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4599
4600   AliMaterial(61,"EPOXY$",0.17749E+02,0.88750E+01,0.18000E+01,0.21822E+02,0.99900E+03);
4601   AliMedium(61,"EPOXY$",61,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4602
4603   AliMaterial(62,"SILICON$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4604   AliMedium(62,"SILICON$",62,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4605
4606   AliMaterial(63,"KAPTONH(POLYCH2)$",0.14000E+02,0.71770E+01,0.13000E+01,0.31270E+02,0.99900E+03);
4607   AliMedium(63,"KAPTONH(POLYCH2)$",63,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4608
4609   AliMaterial(64,"ALUMINUM$",0.26982E+02,0.13000E+02,0.26989E+01,0.89000E+01,0.99900E+03);
4610   AliMedium(64,"ALUMINUM$",64,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4611
4612   AliMaterial(65,"INOX$",0.55098E+02,0.2572E+02,0.7900E+01,0.17800E+01,0.99900E+03);
4613   AliMedium(65,"INOX$",65,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4614
4615   AliMaterial(68,"ROHACELL$",0.123974E+02,0.62363E+01,0.500E-01,0.80986E+03,0.99900E+03);
4616   AliMedium(68,"ROHACELL$",68,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4617
4618   AliMaterial(69,"SDD C AL (M55J)$",0.138802E+02,0.71315E+01,0.19837E+01,0.176542E+02,0.99900E+03);
4619   AliMedium(69,"SDD C AL (M55J)$",69,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4620
4621   AliMaterial(70,"SDDKAPTON (POLYCH2)$",0.14000E+02,0.71770E+01,0.13000E+01,0.31270E+02,0.99900E+03);
4622   AliMedium(70,"SDDKAPTON (POLYCH2)$",70,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4623
4624   AliMaterial(71,"ITS SANDW A$",0.12011E+02,0.60000E+01,0.2115E+00,0.17479E+03,0.99900E+03);
4625   AliMedium(71,"ITS SANDW A$",71,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4626
4627   AliMaterial(72,"ITS SANDW B$",0.12011E+02,0.60000E+01,0.27000E+00,0.18956E+03,0.99900E+03);
4628   AliMedium(72,"ITS SANDW B$",72,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4629
4630   AliMaterial(73,"ITS SANDW C$",0.12011E+02,0.60000E+01,0.41000E+00,0.90868E+02,0.99900E+03);
4631   AliMedium(73,"ITS SANDW C$",73,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4632
4633   AliMaterial(74,"HEAT COND GLUE$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
4634   AliMedium(74,"HEAT COND GLUE$",74,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4635
4636   AliMaterial(75,"ELASTO SIL$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4637   AliMedium(75,"ELASTO SIL$",75,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4638
4639   AliMaterial(76,"SPDBUS(AL+KPT+EPOX)$",0.19509E+02,0.96502E+01,0.19060E+01,0.15413E+02,0.99900E+03);
4640   AliMedium(76,"SPDBUS(AL+KPT+EPOX)$",76,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4641                
4642   AliMaterial(77,"SDD X7R capacitors$",0.1157516E+03,0.477056E+02,0.67200E+01,0.14236E+01,0.99900E+03);
4643   AliMedium(77,"SDD X7R capacitors$",77,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4644
4645   AliMaterial(78,"SDD ruby sph. Al2O3$",0.218101E+02,0.106467E+02,0.39700E+01,0.48539E+01,0.99900E+03);
4646   AliMedium(78,"SDD ruby sph. Al2O3$",78,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4647
4648   AliMaterial(79,"SDD SI insensitive$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4649   AliMedium(79,"SDD SI insensitive$",79,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4650
4651   AliMaterial(80,"SDD HV microcable$",0.159379E+02,0.78598E+01,0.16087E+01,0.217906E+02,0.99900E+03);
4652   AliMedium(80,"SDD HV microcable$",80,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4653
4654   AliMaterial(81,"SDD LV+signal cable$",0.223689E+02,0.108531+02,0.21035E+01,0.13440E+02,0.99900E+03);
4655   AliMedium(81,"SDD LV+signal cable$",81,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4656
4657   AliMaterial(82,"SDD hybrid microcab$",0.218254E+02,0.106001E+02,0.20502E+01,0.137308E+02,0.99900E+03);
4658   AliMedium(82,"SDD hybrid microcab$",82,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4659
4660   AliMaterial(83,"SDD anode microcab$",0.186438E+02,0.91193E+01,0.17854E+01,0.176451E+02,0.99900E+03);
4661   AliMedium(83,"SDD anode microcab$",83,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4662
4663   AliMaterial(84,"SDD/SSD rings$",0.123565E+02,0.64561E+01,0.18097E+01,0.229570E+02,0.99900E+03);
4664   AliMedium(84,"SDD/SSD rings$",84,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4665
4666   AliMaterial(85,"inox/alum$",0.321502E+02,0.153383E+02,0.30705E+01,0.69197E+01,0.99900E+03);
4667   AliMedium(85,"inox/alum$",85,0,isxfld,sxmgmx,.10000E+01,.10000E+01,0.30000E02,.10000E+01,0);
4668
4669
4670   // Special media
4671
4672   AliMaterial(90,"SPD shield$", 12.011, 6., 1.93/10. , 22.1*10., 999);
4673   AliMedium(90,"SPD shield$",90, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
4674
4675   AliMaterial(91, "SPD End ladder$", 47.0447, 21.7963, 3.6374, 4.4711, 999); 
4676   AliMedium(91, "SPD End ladder$",91, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
4677
4678   AliMaterial(92, "SPD cone$",28.0855, 14., 2.33, 9.36, 999);    
4679   AliMedium(92, "SPD cone$",   92, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);   
4680
4681   AliMaterial(93, "SDD End ladder$", 69.9298, 29.8246, 0.3824, 36.5103, 999); 
4682   AliMedium(93, "SDD End ladder$",93, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
4683
4684   AliMaterial(94, "SDD cone$",63.546, 29., 1.15, 1.265, 999);     
4685   AliMedium(94, "SDD cone$",   94, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
4686
4687   AliMaterial(95, "SSD End ladder$", 32.0988, 15.4021, 0.68, 35.3238, 999); 
4688   AliMedium(95, "SSD End ladder$",95, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
4689   
4690   AliMaterial(96, "SSD cone$",63.546, 29., 1.15, 1.265, 999); 
4691   AliMedium(96, "SSD cone$",   96, 0,isxfld,sxmgmx, 10., .01, .1, .003, .003);
4692
4693
4694 }
4695 //______________________________________________________________________
4696 void AliITSvPPRsymm::InitAliITSgeom(){
4697 //     Based on the geometry tree defined in Geant 3.21, this
4698 // routine initilizes the Class AliITSgeom from the Geant 3.21 ITS geometry
4699 // sturture.
4700     if(!(dynamic_cast<TGeant3*>(gMC))) {
4701         Error("InitAliITSgeom",
4702                 "Wrong Monte Carlo. InitAliITSgeom uses TGeant3 calls");
4703         return;
4704     } // end if
4705     cout << "Reading Geometry transformation directly from Geant 3." << endl;
4706     const Int_t nlayers = 6;
4707     const Int_t ndeep = 9;
4708     Int_t itsGeomTreeNames[nlayers][ndeep],lnam[20],lnum[20];
4709     Int_t nlad[nlayers],ndet[nlayers];
4710     Double_t t[3],r[10];
4711     Float_t  par[20],att[20];
4712     Int_t    npar,natt,idshape,imat,imed;
4713     AliITSGeant3Geometry *ig = new AliITSGeant3Geometry();
4714     Int_t mod,lay,lad,det,i,j,k;
4715     Char_t names[nlayers][ndeep][4];
4716     Int_t itsGeomTreeCopys[nlayers][ndeep];
4717     if(fMinorVersion == 1){ // Option A
4718     Char_t *namesA[nlayers][ndeep] = {
4719      {"ALIC","ITSV","ITSD","IT12","I12A","I10A","I103","I101","ITS1"}, // lay=1
4720      {"ALIC","ITSV","ITSD","IT12","I12A","I20A","I1D3","I1D1","ITS2"}, // lay=2
4721      {"ALIC","ITSV","ITSD","IT34","I004","I302","ITS3","    ","    "}, // lay=3
4722      {"ALIC","ITSV","ITSD","IT34","I005","I402","ITS4","    ","    "}, // lay=4
4723      {"ALIC","ITSV","ITSD","IT56","I565","I562","ITS5","    ","    "}, // lay=5
4724      {"ALIC","ITSV","ITSD","IT56","I569","I566","ITS6","    ","    "}};// lay=6
4725     Int_t itsGeomTreeCopysA[nlayers][ndeep]= {{1,1,1,1,10, 2, 4,1,1},// lay=1
4726                                               {1,1,1,1,10, 4, 4,1,1},// lay=2
4727                                               {1,1,1,1,14, 6, 1,0,0},// lay=3
4728                                               {1,1,1,1,22, 8, 1,0,0},// lay=4
4729                                               {1,1,1,1,34,22, 1,0,0},// lay=5
4730                                               {1,1,1,1,38,25, 1,0,0}};//lay=6
4731     for(i=0;i<nlayers;i++)for(j=0;j<ndeep;j++){
4732         for(k=0;k<4;k++) names[i][j][k] = namesA[i][j][k];
4733         itsGeomTreeCopys[i][j] = itsGeomTreeCopysA[i][j];
4734     } // end for i,j
4735     }else if(fMinorVersion == 2){ // Option B
4736     Char_t *namesB[nlayers][ndeep] = {
4737      {"ALIC","ITSV","ITSD","IT12","I12B","I10B","I107","I101","ITS1"}, // lay=1
4738      {"ALIC","ITSV","ITSD","IT12","I12B","I20B","I1D7","I1D1","ITS2"}, // lay=2
4739      {"ALIC","ITSV","ITSD","IT34","I004","I302","ITS3","    ","    "}, // lay=3
4740      {"ALIC","ITSV","ITSD","IT34","I005","I402","ITS4","    ","    "}, // lay=4
4741      {"ALIC","ITSV","ITSD","IT56","I565","I562","ITS5","    ","    "}, // lay=5
4742      {"ALIC","ITSV","ITSD","IT56","I569","I566","ITS6","    ","    "}};// lay=6
4743     Int_t itsGeomTreeCopysB[nlayers][ndeep]= {{1,1,1,1,10, 2, 4,1,1},// lay=1
4744                                               {1,1,1,1,10, 4, 4,1,1},// lay=2
4745                                               {1,1,1,1,14, 6, 1,0,0},// lay=3
4746                                               {1,1,1,1,22, 8, 1,0,0},// lay=4
4747                                               {1,1,1,1,34,22, 1,0,0},// lay=5
4748                                               {1,1,1,1,38,25, 1,0,0}};//lay=6
4749     for(i=0;i<nlayers;i++)for(j=0;j<ndeep;j++){
4750         for(k=0;k<4;k++) names[i][j][k] = namesB[i][j][k];
4751         itsGeomTreeCopys[i][j] = itsGeomTreeCopysB[i][j];
4752     } // end for i,j
4753     } // end if fMinorVersion
4754     // Sorry, but this is not very pritty code. It should be replaced
4755     // at some point with a version that can search through the geometry
4756     // tree its self.
4757     cout << "Reading Geometry informaton from Geant3 common blocks" << endl;
4758     for(i=0;i<20;i++) lnam[i] = lnum[i] = 0;
4759     for(i=0;i<nlayers;i++)for(j=0;j<ndeep;j++) 
4760         itsGeomTreeNames[i][j] = ig->StringToInt(names[i][j]);
4761     mod = 0;
4762     for(i=0;i<nlayers;i++){
4763         k = 1;
4764         for(j=0;j<ndeep;j++) if(itsGeomTreeCopys[i][j]!=0)
4765             k *= TMath::Abs(itsGeomTreeCopys[i][j]);
4766         mod += k;
4767     } // end for i
4768
4769     if(fITSgeom!=0) delete fITSgeom;
4770     nlad[0]=20;nlad[1]=40;nlad[2]=14;nlad[3]=22;nlad[4]=34;nlad[5]=38;
4771     ndet[0]=4;ndet[1]=4;ndet[2]=6;ndet[3]=8;ndet[4]=22;ndet[5]=25;
4772     fITSgeom = new AliITSgeom(0,6,nlad,ndet,mod);
4773     mod = -1;
4774     for(lay=1;lay<=nlayers;lay++){
4775         for(j=0;j<ndeep;j++) lnam[j] = itsGeomTreeNames[lay-1][j];
4776         for(j=0;j<ndeep;j++) lnum[j] = itsGeomTreeCopys[lay-1][j];
4777         switch (lay){
4778         case 1: case 2: // layers 1 and 2 are a bit special
4779             lad = 0;
4780             for(j=1;j<=itsGeomTreeCopys[lay-1][4];j++){
4781                 lnum[4] = j;
4782                 for(k=1;k<=itsGeomTreeCopys[lay-1][5];k++){
4783                     lad++;
4784                     lnum[5] = k;
4785                     for(det=1;det<=itsGeomTreeCopys[lay-1][6];det++){
4786                         lnum[6] = det;
4787                         mod++;
4788                         ig->GetGeometry(ndeep,lnam,lnum,t,r,idshape,npar,natt,
4789                                         par,att,imat,imed);
4790                         fITSgeom->CreatMatrix(mod,lay,lad,det,kSPD,t,r);
4791                         if(!(fITSgeom->IsShapeDefined((Int_t)kSPD)))
4792                              fITSgeom->ReSetShape(kSPD,
4793                                                   new AliITSgeomSPD425Short());
4794                     } // end for det
4795                 } // end for k
4796             } // end for j
4797             break;
4798         case 3: case 4: case 5: case 6: // layers 3-6
4799             lnum[6] = 1;
4800             for(lad=1;lad<=itsGeomTreeCopys[lay-1][4];lad++){
4801                 lnum[4] = lad;
4802                 for(det=1;det<=itsGeomTreeCopys[lay-1][5];det++){
4803                     lnum[5] = det;
4804                     mod++;
4805                     ig->GetGeometry(7,lnam,lnum,t,r,idshape,npar,natt,
4806                                     par,att,imat,imed);
4807                     switch (lay){
4808                     case 3: case 4:
4809                         fITSgeom->CreatMatrix(mod,lay,lad,det,kSDD,t,r);
4810                         if(!(fITSgeom->IsShapeDefined(kSDD))) 
4811                             fITSgeom->ReSetShape(kSDD,new AliITSgeomSDD256());
4812                             break;
4813                         case 5:
4814                             fITSgeom->CreatMatrix(mod,lay,lad,det,kSSD,t,r);
4815                             if(!(fITSgeom->IsShapeDefined(kSSD))) 
4816                                 fITSgeom->ReSetShape(kSSD,
4817                                                   new AliITSgeomSSD275and75());
4818                             break;
4819                         case 6:
4820                             fITSgeom->CreatMatrix(mod,lay,lad,det,kSSDp,t,r);
4821                             if(!(fITSgeom->IsShapeDefined(kSSDp))) 
4822                                 fITSgeom->ReSetShape(kSSDp,
4823                                                   new AliITSgeomSSD75and275());
4824                             break;
4825                         } // end switch
4826                 } // end for det
4827             } // end for lad
4828             break;
4829         } // end switch
4830     } // end for lay
4831     return;
4832 }
4833 //_____________________________________________________________________________
4834 void AliITSvPPRsymm::Init(){
4835 ////////////////////////////////////////////////////////////////////////
4836 //     Initialise the ITS after it has been created.
4837 ////////////////////////////////////////////////////////////////////////
4838     Int_t i;
4839
4840     cout << endl;
4841     for(i=0;i<26;i++) cout << "*";
4842     cout << " ITSvPPRsymm" << fMinorVersion << "_Init ";
4843     for(i=0;i<25;i++) cout << "*";cout << endl;
4844 //
4845     if(fRead[0]=='\0') strncpy(fRead,fEuclidGeomDet,60);
4846     if(fWrite[0]=='\0') strncpy(fWrite,fEuclidGeomDet,60);
4847     if(fITSgeom!=0) delete fITSgeom;
4848     fITSgeom = new AliITSgeom();
4849     if(fGeomDetIn) fITSgeom->ReadNewFile(fRead);
4850     if(!fGeomDetIn) this->InitAliITSgeom();
4851     if(fGeomDetOut) fITSgeom->WriteNewFile(fWrite);
4852     AliITS::Init();
4853 //
4854     for(i=0;i<72;i++) cout << "*";
4855     cout << endl;
4856 }
4857 //_____________________________________________________________________________
4858 void AliITSvPPRsymm::SetDefaults(){
4859     // sets the default segmentation, response, digit and raw cluster classes
4860     const Float_t kconv = 1.0e+04; // convert cm to microns
4861
4862     cout << "AliITSvPPRasymm::SetDefaults" << endl;
4863
4864     AliITSDetType *iDetType;
4865     AliITSgeomSPD  *s0;
4866     AliITSgeomSDD  *s1;
4867     AliITSgeomSSD  *s2;
4868     Int_t i;
4869     Float_t bx[256],bz[280];
4870
4871     //SPD
4872     iDetType=DetType(0);
4873     s0 = (AliITSgeomSPD*) fITSgeom->GetShape(kSPD);// Get shape info. Do it this way for now.
4874     AliITSresponse *resp0=new AliITSresponseSPD();
4875     SetResponseModel(0,resp0);
4876     AliITSsegmentationSPD *seg0=new AliITSsegmentationSPD(fITSgeom);
4877     seg0->SetDetSize(s0->GetDx()*2.*kconv, // base this on AliITSgeomSPD
4878                      s0->GetDz()*2.*kconv, // for now.
4879                      s0->GetDy()*2.*kconv); // x,z,y full width in microns.
4880     seg0->SetNPads(160,256);// Number of Bins in x and z
4881     for(i=000;i<256;i++) bx[i] =  50.0; // in x all are 50 microns.
4882     for(i=000;i<160;i++) bz[i] = 425.0; // most are 425 microns except below
4883     for(i=160;i<280;i++) bz[i] =   0.0; // Outside of detector.
4884     bz[ 31] = bz[ 32] = 625.0; // first chip boundry
4885     bz[ 63] = bz[ 64] = 625.0; // first chip boundry
4886     bz[ 95] = bz[ 96] = 625.0; // first chip boundry
4887     bz[127] = bz[128] = 625.0; // first chip boundry
4888     seg0->SetBinSize(bx,bz); // Based on AliITSgeomSPD for now.
4889     SetSegmentationModel(0,seg0);
4890     // set digit and raw cluster classes to be used
4891     const char *kData0=(iDetType->GetResponseModel())->DataType();
4892     if (strstr(kData0,"real")) iDetType->ClassNames("AliITSdigit",
4893                                                     "AliITSRawClusterSPD");
4894     else iDetType->ClassNames("AliITSdigitSPD","AliITSRawClusterSPD");
4895     //iDetType->SimulationModel(new AliITSsimulationSPD(seg0,resp0));
4896     //iDetType->ReconstructionModel(new AliITSClusterFinderSPD());
4897
4898     // SDD
4899     iDetType=DetType(1);
4900     s1 = (AliITSgeomSDD*) fITSgeom->GetShape(kSDD);// Get shape info. Do it this way for now.
4901     AliITSresponse *resp1=new AliITSresponseSDD();
4902     SetResponseModel(1,resp1);
4903     AliITSsegmentationSDD *seg1=new AliITSsegmentationSDD(fITSgeom,resp1);
4904     seg1->SetDetSize(s1->GetDx()*kconv, // base this on AliITSgeomSDD
4905                      s1->GetDz()*2.*kconv, // for now.
4906                      s1->GetDy()*2.*kconv); // x,z,y full width in microns.
4907     bx[0] = 1000./((s1->GetDx()*kconv/seg1->Dpx(0))/resp1->DriftSpeed()); // clock in Mhz
4908     seg1->SetNPads(256,bx[0]);// Use AliITSgeomSDD for now
4909     SetSegmentationModel(1,seg1);
4910     const char *kData1=(iDetType->GetResponseModel())->DataType();
4911     const char *kopt=iDetType->GetResponseModel()->ZeroSuppOption();
4912     if((!strstr(kopt,"2D")) && (!strstr(kopt,"1D")) || strstr(kData1,"real") ){
4913         iDetType->ClassNames("AliITSdigit","AliITSRawClusterSDD");
4914     } else iDetType->ClassNames("AliITSdigitSDD","AliITSRawClusterSDD");
4915     //iDetType->SimulationModel(new AliITSsimulationSDD(seg1,resp1));
4916     //iDetType->ReconstructionModel(new AliITSClusterFinderSDD());
4917
4918     // SSD  Layer 5
4919     iDetType=DetType(2);
4920     s2 = (AliITSgeomSSD*) fITSgeom->GetShape(kSSD);// Get shape info. Do it this way for now.
4921     AliITSresponse *resp2=new AliITSresponseSSD();
4922     SetResponseModel(2,resp2);
4923     AliITSsegmentationSSD *seg2=new AliITSsegmentationSSD(fITSgeom);
4924     seg2->SetDetSize(s2->GetDx()*2.*kconv, // base this on AliITSgeomSSD
4925                      s2->GetDz()*2.*kconv, // for now.
4926                      s2->GetDy()*2.*kconv); // x,z,y full width in microns.
4927     seg2->SetPadSize(95.,0.); // strip x pitch in microns
4928     seg2->SetNPads(768,0); // number of strips on each side.
4929     seg2->SetAngles(0.0075,0.0275); // strip angels rad P and N side.
4930     seg2->SetAnglesLay5(0.0075,0.0275); // strip angels rad P and N side.
4931     seg2->SetAnglesLay6(0.0275,0.0075); // strip angels rad P and N side.
4932     SetSegmentationModel(2,seg2); 
4933     const char *kData2=(iDetType->GetResponseModel())->DataType();
4934     if(strstr(kData2,"real") ) iDetType->ClassNames("AliITSdigit",
4935                                                     "AliITSRawClusterSSD");
4936     else iDetType->ClassNames("AliITSdigitSSD","AliITSRawClusterSSD");
4937     //iDetType->SimulationModel(new AliITSsimulationSSD(seg2,resp2));
4938     //iDetType->ReconstructionModel(new AliITSClusterFinderSSD());
4939
4940     if(kNTYPES>3){
4941         Warning("SetDefaults",
4942                 "Only the four basic detector types are initialised!");
4943     }// end if
4944     return;
4945 }
4946 //_____________________________________________________________________________
4947 void AliITSvPPRsymm::DrawModule(){
4948 ////////////////////////////////////////////////////////////////////////
4949 //     Draw a shaded view of the FMD version 9.
4950 ////////////////////////////////////////////////////////////////////////
4951   
4952   // Set everything unseen
4953   gMC->Gsatt("*", "seen", -1);
4954   // 
4955   // Set ALIC mother visible
4956   gMC->Gsatt("ALIC","SEEN",0);
4957   //
4958   // Set the volumes visible
4959   gMC->Gsatt("ITSD","SEEN",0);
4960   gMC->Gsatt("ITS1","SEEN",1);
4961   gMC->Gsatt("ITS2","SEEN",1);
4962   gMC->Gsatt("ITS3","SEEN",1);
4963   gMC->Gsatt("ITS4","SEEN",1);
4964   gMC->Gsatt("ITS5","SEEN",1);
4965   gMC->Gsatt("ITS6","SEEN",1);
4966
4967   gMC->Gsatt("IPCB","SEEN",1);
4968   gMC->Gsatt("ICO2","SEEN",1);
4969   gMC->Gsatt("ICER","SEEN",0);
4970   gMC->Gsatt("ISI2","SEEN",0);
4971   gMC->Gsatt("IPLA","SEEN",0);
4972   gMC->Gsatt("ICO3","SEEN",0);
4973   gMC->Gsatt("IEPX","SEEN",0);
4974   gMC->Gsatt("ISI3","SEEN",1);
4975   gMC->Gsatt("ISUP","SEEN",0);
4976   gMC->Gsatt("ICHO","SEEN",0);
4977   gMC->Gsatt("ICMO","SEEN",0);
4978   gMC->Gsatt("ICMD","SEEN",0);
4979   gMC->Gsatt("ICCO","SEEN",1);
4980   gMC->Gsatt("ICCM","SEEN",0);
4981   gMC->Gsatt("ITMD","SEEN",0);
4982   gMC->Gsatt("ITTT","SEEN",1);
4983
4984   //
4985   gMC->Gdopt("hide", "on");
4986   gMC->Gdopt("shad", "on");
4987   gMC->Gsatt("*", "fill", 7);
4988   gMC->SetClipBox(".");
4989   gMC->SetClipBox("*", 0, 300, -300, 300, -300, 300);
4990   gMC->DefaultRange();
4991   gMC->Gdraw("alic", 40, 30, 0, 11, 10, .07, .07);
4992   gMC->Gdhead(1111, "Inner Tracking System Version 1");
4993   gMC->Gdman(17, 6, "MAN");
4994 }
4995 //_____________________________________________________________________________
4996 void AliITSvPPRsymm::StepManager(){
4997 ////////////////////////////////////////////////////////////////////////
4998 //    Called for every step in the ITS, then calles the AliITShit class
4999 // creator with the information to be recoreded about that hit.
5000 //     The value of the macro ALIITSPRINTGEOM if set to 1 will allow the
5001 // printing of information to a file which can be used to create a .det
5002 // file read in by the routine CreateGeometry(). If set to 0 or any other
5003 // value except 1, the default behavior, then no such file is created nor
5004 // it the extra variables and the like used in the printing allocated.
5005 ////////////////////////////////////////////////////////////////////////
5006   Int_t         copy, id;
5007   Int_t          copy1,copy2;  
5008   Float_t       hits[8];
5009   Int_t         vol[4];
5010   TLorentzVector position, momentum;
5011   TClonesArray &lhits = *fHits;
5012   //
5013   // Track status
5014   vol[3] = 0;
5015   if(gMC->IsTrackInside())      vol[3] +=  1;
5016   if(gMC->IsTrackEntering())    vol[3] +=  2;
5017   if(gMC->IsTrackExiting())     vol[3] +=  4;
5018   if(gMC->IsTrackOut())         vol[3] +=  8;
5019   if(gMC->IsTrackDisappeared()) vol[3] += 16;
5020   if(gMC->IsTrackStop())        vol[3] += 32;
5021   if(gMC->IsTrackAlive())       vol[3] += 64;
5022   //
5023   // Fill hit structure.
5024   if(!(gMC->TrackCharge())) return;
5025   //
5026   // Only entering charged tracks
5027   if((id = gMC->CurrentVolID(copy)) == fIdSens[0]) {
5028       vol[0] = 1;
5029       id = gMC->CurrentVolOffID(0,copy);
5030       //detector copy in the ladder = 1<->4  (ITS1 < I101 < I103 < I10A)
5031       vol[1] = copy;
5032       gMC->CurrentVolOffID(1,copy1);
5033       //ladder copy in the module   = 1<->2  (I10A < I12A)
5034       gMC->CurrentVolOffID(2,copy2);
5035       //module copy in the layer    = 1<->10 (I12A < IT12)
5036       vol[2] = copy1+(copy2-1)*2;//# of ladders in one module  = 2
5037   } else if(id == fIdSens[1]){
5038       vol[0] = 2;
5039       id = gMC->CurrentVolOffID(0,copy);
5040       //detector copy in the ladder = 1<->4  (ITS2 < I1D1 < I1D3 < I20A)
5041       vol[1] = copy;
5042       gMC->CurrentVolOffID(1,copy1);
5043       //ladder copy in the module   = 1<->4  (I20A < I12A)
5044       gMC->CurrentVolOffID(2,copy2);
5045       //module copy in the layer    = 1<->10 (I12A < IT12)
5046       vol[2] = copy1+(copy2-1)*4;//# of ladders in one module  = 4
5047   } else if(id == fIdSens[2]){
5048       vol[0] = 3;
5049       id = gMC->CurrentVolOffID(1,copy);
5050       //detector copy in the ladder = 1<->6  (ITS3 < I302 < I004)
5051       vol[1] = copy;
5052       id = gMC->CurrentVolOffID(2,copy);
5053       //ladder copy in the layer    = 1<->14 (I004 < IT34)
5054       vol[2] = copy;
5055   } else if(id == fIdSens[3]){
5056       vol[0] = 4;
5057       id = gMC->CurrentVolOffID(1,copy);
5058       //detector copy in the ladder = 1<->8  (ITS4 < I402 < I005)
5059       vol[1] = copy;
5060       id = gMC->CurrentVolOffID(2,copy);
5061       //ladder copy in the layer    = 1<->22 (I005 < IT34))
5062       vol[2] = copy;
5063   }else if(id == fIdSens[4]){
5064       vol[0] = 5;
5065       id = gMC->CurrentVolOffID(1,copy);
5066       //detector copy in the ladder = 1<->22  (ITS5 < I562 < I565)
5067       vol[1] = copy;
5068       id = gMC->CurrentVolOffID(2,copy);
5069      //ladder copy in the layer    = 1<->34 (I565 < IT56)
5070       vol[2] = copy;
5071   }else if(id == fIdSens[5]){
5072       vol[0] = 6;
5073       id = gMC->CurrentVolOffID(1,copy);
5074       //detector copy in the ladder = 1<->25  (ITS6 < I566 < I569)
5075       vol[1] = copy;
5076       id = gMC->CurrentVolOffID(2,copy);
5077       //ladder copy in the layer = 1<->38 (I569 < IT56)
5078       vol[2] = copy;
5079   } else {
5080       return; // not an ITS volume?
5081   } // end if/else if (gMC->CurentVolID(copy) == fIdSens[i])
5082 //
5083   gMC->TrackPosition(position);
5084   gMC->TrackMomentum(momentum);
5085   hits[0]=position[0];
5086   hits[1]=position[1];
5087   hits[2]=position[2];
5088   hits[3]=momentum[0];
5089   hits[4]=momentum[1];
5090   hits[5]=momentum[2];
5091   hits[6]=gMC->Edep();
5092   hits[7]=gMC->TrackTime();
5093   // Fill hit structure with this new hit.
5094   new(lhits[fNhits++]) AliITShit(fIshunt,gAlice->CurrentTrack(),vol,hits);
5095
5096   return;
5097
5098 }