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