]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSvPPRasymmFMD.cxx
AliTrackReference constructor without passing pointer to VMC.
[u/mrichter/AliRoot.git] / ITS / AliITSvPPRasymmFMD.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.10  2003/02/12 10:39:08  hristov
19 Updated AliTrackReference class (S.Radomski)
20
21 Revision 1.9  2002/11/21 23:05:28  alibrary
22 Removing AliMC and AliMCProcess
23
24 Revision 1.8  2002/11/14 15:09:58  nilsen
25 Fixed problem of elements of a Mixture having zero concentration. This was
26 done by reordering some of the elements such that those which may have
27 zero concentration were at the end of the array and the array size passed
28 would thereby exclude those zero concentrations.
29
30 Revision 1.7  2002/11/02 15:15:58  hristov
31 Corrected with respect to the previous versions
32
33 Revision 1.6  2002/11/01 19:48:35  nilsen
34 Fixed bug in material numbering for new FMD part of code. Removed large part
35 of commented code (if still needed it is in AliITSvPPRasymm.cxx).
36
37 Revision 1.3  2002/10/05 00:12:39  nilsen
38 Added material to simulate services in front of the SPD, SDD, and SSD support
39 structures. Modified folumes I212, I200, and I099 so that they do not go
40 beyond the volume they are creating holes for. This was nessesary so that
41 the material added to these volumes would be correct.
42
43 Revision 1.2  2002/10/02 17:56:37  barbera
44 Bug in copy 37 of volume I570 corrected (thanks to J. Belikov)
45
46 Revision 1.1  2002/09/16 14:45:31  barbera
47 Updated detailed geometry needed by FMD people for some studies
48
49
50 */
51
52 ///////////////////////////////////////////////////////////////////////////////
53 //                                                                           //
54 //  Inner Traking System version PPR  asymmetric for the FMD                 //
55 //  This class contains the base procedures for the Inner Tracking System    //
56 //                                                                           //
57 // Authors: R. Barbera                                                       //
58 // version 10.                                                               //
59 // Created  January 15 2001.                                                 //
60 //                                                                           //
61 //  NOTE: THIS IS THE  ASYMMETRIC PPR geometry of the ITS for the PMD.       //
62 //                                                                           //
63 ///////////////////////////////////////////////////////////////////////////////
64
65 // See AliITSvPPRasymmFMD::StepManager().
66 #include <Riostream.h>
67 #include <stdio.h>
68 #include <stdlib.h>
69 #include <TMath.h>
70 #include <TGeometry.h>
71 #include <TNode.h>
72 #include <TTUBE.h>
73 #include <TTUBS.h>
74 #include <TPCON.h>
75 #include <TFile.h>    // only required for Tracking function?
76 #include <TCanvas.h>
77 #include <TObjArray.h>
78 #include <TLorentzVector.h>
79 #include <TObjString.h>
80 #include <TClonesArray.h>
81 #include <TBRIK.h>
82 #include <TSystem.h>
83
84 #include "AliRun.h"
85 #include "AliMagF.h"
86 #include "AliConst.h"
87 #include "AliITSGeant3Geometry.h"
88 #include "AliTrackReference.h"
89 #include "AliITShit.h"
90 #include "AliITS.h"
91 #include "AliITSvPPRasymmFMD.h"
92 #include "AliITSgeom.h"
93 #include "AliITSgeomSPD.h"
94 #include "AliITSgeomSDD.h"
95 #include "AliITSgeomSSD.h"
96 #include "AliITSDetType.h"
97 #include "AliITSresponseSPD.h"
98 #include "AliITSresponseSDD.h"
99 #include "AliITSresponseSSD.h"
100 #include "AliITSsegmentationSPD.h"
101 #include "AliITSsegmentationSDD.h"
102 #include "AliITSsegmentationSSD.h"
103 #include "AliITSsimulationSPD.h"
104 #include "AliITSsimulationSDD.h"
105 #include "AliITSsimulationSSD.h"
106 #include "AliITSClusterFinderSPD.h"
107 #include "AliITSClusterFinderSDD.h"
108 #include "AliITSClusterFinderSSD.h"
109
110
111 ClassImp(AliITSvPPRasymmFMD)
112  
113 //_____________________________________________________________________________
114 AliITSvPPRasymmFMD::AliITSvPPRasymmFMD() {
115 ////////////////////////////////////////////////////////////////////////
116 //    Standard default constructor for the ITS version 8.
117 ////////////////////////////////////////////////////////////////////////
118     Int_t i;
119
120     fIdN          = 0;
121     fIdName       = 0;
122     fIdSens       = 0;
123     fEuclidOut    = kFALSE; // Don't write Euclide file
124     fGeomDetOut   = kFALSE; // Don't write .det file
125     fGeomDetIn    = kFALSE; // Don't Read .det file
126     fMajorVersion = IsVersion();
127     fMinorVersion = -1;
128     for(i=0;i<60;i++) fRead[i] = '\0';
129     for(i=0;i<60;i++) fWrite[i] = '\0';
130     for(i=0;i<60;i++) fEuclidGeomDet[i] = '\0';
131 }
132 //_____________________________________________________________________________
133 AliITSvPPRasymmFMD::AliITSvPPRasymmFMD(const char *name, const char *title) : AliITS(name, title){
134 ////////////////////////////////////////////////////////////////////////
135 //    Standard constructor for the ITS version 10.
136 ////////////////////////////////////////////////////////////////////////
137     Int_t i;
138
139     fIdN = 6;
140     fIdName = new TString[fIdN];
141     fIdName[0] = "ITS1";
142     fIdName[1] = "ITS2";
143     fIdName[2] = "ITS3";
144     fIdName[3] = "ITS4";
145     fIdName[4] = "ITS5";
146     fIdName[5] = "ITS6";
147     fIdSens    = new Int_t[fIdN];
148     for(i=0;i<fIdN;i++) fIdSens[i] = 0;
149     fMajorVersion = IsVersion();
150     fMinorVersion = 2;
151     fEuclidOut    = kFALSE; // Don't write Euclide file
152     fGeomDetOut   = kFALSE; // Don't write .det file
153     fGeomDetIn    = kFALSE; // Don't Read .det file
154     SetThicknessDet1();
155     SetThicknessDet2();
156     SetThicknessChip1();
157     SetThicknessChip2();                         
158
159     fEuclidGeometry="$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.euc";
160     strncpy(fEuclidGeomDet,"$ALICE_ROOT/ITS/ITSgeometry_vPPRasymm2.det",60);
161     strncpy(fRead,fEuclidGeomDet,60);
162     strncpy(fWrite,fEuclidGeomDet,60);
163 }
164 //____________________________________________________________________________
165 AliITSvPPRasymmFMD::AliITSvPPRasymmFMD(const AliITSvPPRasymmFMD &source){
166 ////////////////////////////////////////////////////////////////////////
167 //     Copy Constructor for ITS version 8.
168 ////////////////////////////////////////////////////////////////////////
169     if(&source == this) return;
170     Warning("Copy Constructor","Not allowed to copy AliITSvPPRasymmFMD");
171     return;
172 }
173 //_____________________________________________________________________________
174 AliITSvPPRasymmFMD& AliITSvPPRasymmFMD::operator=(const AliITSvPPRasymmFMD &source){
175 ////////////////////////////////////////////////////////////////////////
176 //    Assignment operator for the ITS version 8.
177 ////////////////////////////////////////////////////////////////////////
178     if(&source == this) return *this;
179     Warning("= operator","Not allowed to copy AliITSvPPRasymmFMD");
180     return *this;
181 }
182 //_____________________________________________________________________________
183 AliITSvPPRasymmFMD::~AliITSvPPRasymmFMD() {
184 ////////////////////////////////////////////////////////////////////////
185 //    Standard destructor for the ITS version 8.
186 ////////////////////////////////////////////////////////////////////////
187 }
188 //__________________________________________________________________________
189 void AliITSvPPRasymmFMD::BuildGeometry(){
190 ////////////////////////////////////////////////////////////////////////
191 //    Geometry builder for the ITS version 8.
192 ////////////////////////////////////////////////////////////////////////
193     TNode *node, *top;
194     
195     const Int_t kColorITS=kYellow;
196     //
197     top = gAlice->GetGeometry()->GetNode("alice");
198
199
200     new TTUBE("S_layer1","Layer1 of ITS","void",3.8095,3.8095+1.03*9.36/100.,14.35);
201     top->cd();
202     node = new TNode("Layer1","Layer1","S_layer1",0,0,0,"");
203     node->SetLineColor(kColorITS);
204     fNodes->Add(node);
205
206     new TTUBE("S_layer2","Layer2 of ITS","void",7.,7.+1.03*9.36/100.,14.35);
207     top->cd();
208     node = new TNode("Layer2","Layer2","S_layer2",0,0,0,"");
209     node->SetLineColor(kColorITS);
210     fNodes->Add(node);
211
212     new TTUBE("S_layer3","Layer3 of ITS","void",15.,15.+0.94*9.36/100.,25.1);
213     top->cd();
214     node = new TNode("Layer3","Layer3","S_layer3",0,0,0,"");
215     node->SetLineColor(kColorITS);
216     fNodes->Add(node);
217
218     new TTUBE("S_layer4","Layer4 of ITS","void",24.1,24.1+0.95*9.36/100.,32.1);
219     top->cd();
220     node = new TNode("Layer4","Layer4","S_layer4",0,0,0,"");
221     node->SetLineColor(kColorITS);
222     fNodes->Add(node);
223
224     new TTUBE("S_layer5","Layer5 of ITS","void",38.5,38.5+0.91*9.36/100.,49.405);
225     top->cd();
226     node = new TNode("Layer5","Layer5","S_layer5",0,0,0,"");
227     node->SetLineColor(kColorITS);
228     fNodes->Add(node);
229
230     new TTUBE("S_layer6","Layer6 of ITS","void",43.5765,43.5765+0.87*9.36/100.,55.27);
231     top->cd();
232     node = new TNode("Layer6","Layer6","S_layer6",0,0,0,"");
233     node->SetLineColor(kColorITS);
234     fNodes->Add(node);
235 }
236 //_____________________________________________________________________________
237 void AliITSvPPRasymmFMD::CreateGeometry(){
238 ////////////////////////////////////////////////////////////////////////
239 //    This routine defines and Creates the geometry for version 6 of the ITS.
240 ////////////////////////////////////////////////////////////////////////
241   
242
243 //Begin_Html
244 /*
245 <img src="picts/ITS/ITS_full_vPPRasymm.jpg">
246 </pre>
247 <br clear=left>
248 <font size=+2 color=red>
249 <p>This shows the full ITS geometry.
250 </font>
251
252 <img src="picts/ITS/ITS_SPD_Barrel_vPPRasymm.jpg">
253 </pre>
254 <br clear=left>
255 <font size=+2 color=red>
256 <p>This shows the full SPD Barrel of the ITS geometry.
257 </font>
258
259 <img src="picts/ITS/ITS_SDD_Barrel_vPPRasymm.jpg">
260 </pre>
261 <br clear=left>
262 <font size=+2 color=red>
263 <p>This shows the full SDD Barrel of the ITS geometry.
264 </font>
265
266 <img src="picts/ITS/ITS_SSD_Barrel_vPPRasymm.jpg">
267 </pre>
268 <br clear=left>
269 <font size=+2 color=red>
270 <p>This shows the full SSD Barrel of the ITS geometry.
271 </font>
272 */
273 //End_Html
274   //INNER RADII OF THE SILICON LAYERS 
275   // Float_t rl[6]    = { 3.8095,7.,15.,24.,38.1,43.5765 };   
276   //THICKNESSES OF LAYERS (in % radiation length)
277   Float_t drl[6]   = { 1.03,1.03,0.94,0.95,0.91,0.87 };   
278   //HALF LENGTHS OF LAYERS  
279   // Float_t dzl[6]   = { 14.35,14.35,25.1,32.1,49.405,55.27 };
280   //LENGTHS OF END-LADDER BOXES (ALL INCLUDED)
281   // Float_t dzb[6]   = { 12.4,12.4,13.5,15.,7.5,7.5 };   
282   //THICKNESSES OF END-LADDER BOXES (ALL INCLUDED)
283   // Float_t drb[6]   = { rl[1]-rl[0],0.2,5.,5.,4.,4. };        
284
285  
286   Float_t dits[100], rlim, zmax;
287   // Float_t zpos;
288   // Float_t pcits[50]
289   Float_t ztpc;
290   Int_t idrotm[1999], i;
291   Float_t dgh[100];
292
293
294   // Define some variables for SPD
295
296   Float_t dits1[3], di101[3], di107[3], di10b[3], di106[3];  // for layer 1 
297   Float_t di103[3], di10a[3], di102[3];                      // for layer 1
298   Float_t dits2[3], di1d1[3], di1d7[3], di20b[3], di1d6[3];  // for layer 2
299   Float_t di1d3[3], di20a[3], di1d2[3];                      // for layer 2  
300   Float_t di108[3], di104[3];                                // for both layers  
301
302   Float_t ddet1=200.;     // total detector thickness on layer 1 (micron)
303   Float_t dchip1=200.;    // total chip thickness on layer 1 (micron)
304   
305   Float_t ddet2=200.;     // total detector thickness on layer 2 (micron)                         
306   Float_t dchip2=200.;    // total chip thickness on layer 2 (micron)
307   
308   Float_t dbus=300.;      // total bus thickness on both layers (micron)
309
310   ddet1 = GetThicknessDet1();
311   ddet2 = GetThicknessDet2();
312   dchip1 = GetThicknessChip1();
313   dchip2 = GetThicknessChip2();    
314
315   if(ddet1 < 100. || ddet1 > 300.) {
316      cout << "ITS - WARNING: the detector thickness for layer 1 is outside the range of [100,300] microns."
317           " The default value of 200 microns will be used." << endl;
318           ddet1=200.;
319   }
320   
321   if(ddet2 < 100. || ddet2 > 300.) {
322      cout << "ITS - WARNING: the detector thickness for layer 2 is outside the range of [100,300] microns."
323           " The default value of 200 microns will be used." << endl;
324           ddet2=200.;
325   }
326   
327   if(dchip1 < 100. || dchip1 > 300.) {
328      cout << "ITS - WARNING: the chip thickness for layer 1 is outside the range of [100,300] microns."
329           " The default value of 200 microns will be used." << endl;
330           dchip1=200.;
331   }
332   
333   if(dchip2 < 100. || dchip2 > 300.) {
334      cout << "ITS - WARNING: the chip thickness for layer 2 is outside the range of [100,300] microns."
335           " The default value of 200 microns will be used." << endl;
336           dchip2=200.;
337   }      
338
339   Int_t rails = 1;       // flag for rails (1 --> rails in; 0 --> rails out)
340   
341   Int_t fluid = 1;       // flag for the cooling fluid (1 --> water; 0 --> freon)
342
343   rails = GetRails();
344
345   fluid = GetCoolingFluid();
346
347   if(rails != 0 && rails != 1) {
348      cout << "ITS - WARNING: the switch for rails is not set neither to 0 (rails out) nor to 1 (rails in)." 
349      " The default value of 1 (rails in) will be used." << endl;
350         
351   }  
352   
353   if(fluid != 0 && fluid != 1) {
354      cout << "ITS - WARNING: the switch for cooling fluid is not set neither to 0 (freon) nor to 1 (water)." 
355      " The default value of 1 (water) will be used." << endl;  
356   }       
357    
358   cout << "ITS: Detector thickness on layer 1 is set to " << ddet1 << " microns." << endl;
359   cout << "ITS: Chip thickness on layer 1 is set to " << dchip1 << " microns." << endl;
360   cout << "ITS: Detector thickness on layer 2 is set to " << ddet2 << " microns." << endl;
361   cout << "ITS: Chip thickness on layer 2 is set to " << dchip2 << " microns." << endl;
362   if(rails == 0 ) {
363      cout << "ITS: Rails are out." << endl; 
364   } else {
365      cout << "ITS: Rails are in." << endl;
366   }   
367   if(fluid == 0 ) {
368      cout << "ITS: The cooling fluid is freon." << endl; 
369   } else {
370      cout << "ITS: The cooling fluid is water." << endl;
371   }   
372
373   ddet1  = ddet1*0.0001/2.; // conversion from tot length in um to half in cm
374   ddet2  = ddet2*0.0001/2.; // conversion from tot length in um to half in cm   
375   dchip1 = dchip1*0.0001/2.;// conversion from tot length in um to half in cm   
376   dchip2 = dchip2*0.0001/2.;// conversion from tot length in um to half in cm   
377   dbus   = dbus*0.0001/2.;  // conversion from tot length in um to half in cm       
378                 
379   Float_t deltax, deltay; 
380
381   Int_t thickness = fMinorVersion/10;
382   Int_t option    = fMinorVersion - 10*thickness;
383
384
385   // Define some variables for SDD
386
387
388   Float_t sin30, cos30;
389
390   // SDD electronics+services main volumes
391   Float_t I018dits[3], I024dits[3], I047dits[3], I048dits[3];
392
393   // SDD detector ladder
394
395   Float_t I302dits[3], I402dits[3], I004dits[3], I005dits[3];
396   Float_t Y_SDD_sep = 0.20;
397   Float_t ySDD;
398   Int_t   iSDD;
399   Float_t Z_SDD_lay3[6] = {18.55, 10.95, 3.70, -3.70, -11.20, -18.35};
400   Float_t Z_SDD_lay4[8] = {25.75, 18.60, 11.00, 3.70, -3.70, -11.20, -18.45, -26.05};
401
402   // ladder foot and end-ladder (frame and cooling)
403   Float_t I028dits[3], I420dits[3], I421dits[3], I422dits[6], I423dits[3];
404   Float_t I424dits[3], xI424, yI424;
405   Float_t I425dits[3];
406   Int_t    indI425;
407   Float_t I029dits[4], I030dits[4], I031dits[3], I032dits[3];
408
409   // SDD ladder frame and cooling
410   Float_t SDD_CoolPipe[3] = {1.7000, -0.5500, 0.0000};
411   Float_t I035dits[3], I037dits[3], I038dits[3];
412   Float_t I039dits[3], xI039, yI039;
413   Float_t I041dits[5];
414
415   // SDD hybrid, chips and capacitors
416   Float_t I050dits[3], xI050, yI050;
417   Float_t I052dits[3], xI052, yI052;
418   Float_t I042dits[3], xI042, yI042;
419   Float_t xI042space = 0.17;
420   Float_t I043dits[3], xI043, yI043;
421   Float_t xI043space = 0.17;
422   Float_t zchip, zChipSpace;
423   Float_t I051dits[3], xI051, yI051, zI051, yI051space, xcap;
424   Int_t     ichip, icap;
425
426   // SDD microcables
427   Float_t I044dits[4], xI044, yI044, volI044;
428   Float_t xHV, yHV, zHV, xLV, yLV, zLV;
429   Char_t   HVname[5], LVname[5];
430
431
432   // Define media off-set
433   
434   Int_t *idtmed = fIdtmed->GetArray()-199;
435
436   
437   // Rotation matrices
438   
439   // SPD - option 'a' (this is NOT the default so leave commented)
440   
441   
442   if (option == 1) {
443   
444      AliMatrix(idrotm[201],90.0,90.0,90.0,180.0,0.0,0.0);
445      AliMatrix(idrotm[202],90.0,90.0,90.0,0.0,0.0,0.0);
446      AliMatrix(idrotm[203],90.0,350.0,90.0,260.0,0.0,0.0);
447      AliMatrix(idrotm[204],90.0,170.0,90.0,80.0,0.0,0.0);
448      AliMatrix(idrotm[205],90.0,10.0,90.0,100.0,0.0,0.0);
449      AliMatrix(idrotm[206],90.0,190.0,90.0,280.0,0.0,0.0);
450      AliMatrix(idrotm[207],90.0,342.0,90.0,72.0,0.0,0.0);
451      AliMatrix(idrotm[208],90.0,156.999893,90.0,246.999893,0.0,0.0);
452      AliMatrix(idrotm[209],90.0,147.999802,90.0,237.999893,0.0,0.0);
453      AliMatrix(idrotm[210],90.0,138.999802,90.0,228.999802,0.0,0.0);
454      AliMatrix(idrotm[211],90.0,129.999802,90.0,219.999802,0.0,0.0);
455      AliMatrix(idrotm[212],90.0,36.7896,90.0,126.789597,0.0,0.0);
456      AliMatrix(idrotm[213],90.0,343.579712,90.0,73.579697,0.0,0.0);
457      AliMatrix(idrotm[214],90.0,95.413696,90.0,185.413696,0.0,0.0);
458      AliMatrix(idrotm[215],90.0,5.4141,90.0,95.414101,0.0,0.0);
459      AliMatrix(idrotm[216],90.0,318.296906,90.0,48.296902,0.0,0.0);
460      AliMatrix(idrotm[217],90.0,67.000099,90.0,157.000107,0.0,0.0);
461      AliMatrix(idrotm[218],90.0,337.003998,90.0,67.003998,0.0,0.0);
462      AliMatrix(idrotm[219],90.0,247.000305,90.0,337.000305,0.0,0.0);
463      AliMatrix(idrotm[220],90.0,305.633514,90.0,35.633499,0.0,0.0);
464      AliMatrix(idrotm[221],90.0,58.000198,90.0,148.000198,0.0,0.0);
465      AliMatrix(idrotm[222],90.0,327.997101,90.0,57.997101,0.0,0.0 );
466      AliMatrix(idrotm[223],90.0,237.994202,90.0,327.994202,0.0,0.0);
467      AliMatrix(idrotm[224],90.0,296.627502,90.0,26.627399,0.0,0.0);
468      AliMatrix(idrotm[225],90.0,48.994099,90.0,138.994095,0.0,0.0);
469      AliMatrix(idrotm[226],90.0,318.990997,90.0,48.991001,0.0,0.0);
470      AliMatrix(idrotm[227],90.0,228.988205,90.0,318.98819,0.0,0.0);
471      AliMatrix(idrotm[228],90.0,287.621399,90.0,17.621401,0.0,0.0);
472      AliMatrix(idrotm[229],90.0,39.988098,90.0,129.988098,0.0,0.0);
473      AliMatrix(idrotm[230],90.0,309.984985,90.0,39.985001,0.0,0.0);
474      AliMatrix(idrotm[231],90.0,327.2612,90.0,57.2612,0.0,0.0);
475      AliMatrix(idrotm[232],90.0,237.261398,90.0,327.261414,0.0,0.0);
476      AliMatrix(idrotm[233],90.0,252.000504,90.0,342.000488,0.0,0.0 );
477      AliMatrix(idrotm[234],90.0,71.9991,90.0,161.9991,0.0,0.0);
478      AliMatrix(idrotm[235],90.0,270.0,90.0,0.0,0.0,0.0);
479      AliMatrix(idrotm[236],90.0,180.013702,90.0,270.013702,0.0,0.0);
480      AliMatrix(idrotm[237],90.0,0.0,90.0,90.0,0.0,0.0);
481      AliMatrix(idrotm[238],90.0,144.0,90.0,234.0,0.0,0.0);
482      AliMatrix(idrotm[239],90.0,216.0,90.0,306.0,0.0,0.0);
483      AliMatrix(idrotm[240],90.0,288.0,90.0,18.0,0.0,0.0);
484      AliMatrix(idrotm[241],90.0,324.0,90.0,54.0,0.0,0.0);
485      AliMatrix(idrotm[242],90.0,36.0,90.0,126.0,0.0,0.0);
486      AliMatrix(idrotm[243],90.0,108.0,90.0,198.0,0.0,0.0);
487      AliMatrix(idrotm[244],90.0,180.0,90.0,270.0,0.0,0.0);
488      AliMatrix(idrotm[245],90.0,162.0,90.0,252.0,0.0,0.0);
489      AliMatrix(idrotm[246],90.0,310.0,90.0,40.0,0.0,0.0);
490      AliMatrix(idrotm[247],90.0,319.0,90.0,49.0,0.0,0.0);
491      AliMatrix(idrotm[248],90.0,328.0,90.0,58.0,0.0,0.0);
492      AliMatrix(idrotm[249],90.0,337.0,90.0,67.0,0.0,0.0);
493      AliMatrix(idrotm[1003],90.0,73.5,90.0,163.5,0.0,0.0);
494      AliMatrix(idrotm[1011],90.0,342.0,90.0,72.0,0.0,0.0);
495      AliMatrix(idrotm[1039],90.0,72.0,90.0,162.0,0.0,0.0);
496      AliMatrix(idrotm[1043],90.0,66.91,90.0,156.91,0.0,0.0);
497      AliMatrix(idrotm[1065],90.0,144.0,90.0,234.0,0.0,0.0);
498      AliMatrix(idrotm[1078],90.0,180.0,90.0,270.0,0.0,0.0);
499      AliMatrix(idrotm[1088],90.0,57.41,90.0,147.41,0.0,0.0);
500      AliMatrix(idrotm[1089],90.0,333.0,90.0,63.0,0.0,0.0);
501      AliMatrix(idrotm[1090],90.0,351.0,90.0,81.0,0.0,0.0);
502      AliMatrix(idrotm[1091],90.0,216.0,90.0,306.0,0.0,0.0);
503      AliMatrix(idrotm[1092],90.0,27.0,90.0,117.0,0.0,0.0);
504      AliMatrix(idrotm[1093],90.0,18.0,90.0,108.0,0.0,0.0);
505      AliMatrix(idrotm[1094],90.0,9.0,90.0,99.0,0.0,0.0);
506      AliMatrix(idrotm[1104],90.0,252.0,90.0,342.0,0.0,0.0);
507      AliMatrix(idrotm[1106],90.0,36.0,90.0,126.0,0.0,0.0);
508      AliMatrix(idrotm[1107],90.0,108.0,90.0,198.0,0.0,0.0);
509      AliMatrix(idrotm[1108],90.0,324.0,90.0,54.0,180.0,0.0);
510      AliMatrix(idrotm[1109],90.0,0.0,90.0,90.0,180.0,0.0);
511      AliMatrix(idrotm[1110],90.0,36.0,90.0,126.0,180.0,0.0);
512      AliMatrix(idrotm[1111],90.0,72.0,90.0,162.0,180.0,0.0);
513      AliMatrix(idrotm[1112],90.0,108.0,90.0,198.0,180.0,0.0);
514      AliMatrix(idrotm[1113],90.0,144.0,90.0,234.0,180.0,0.0);
515      AliMatrix(idrotm[1114],90.0,180.0,90.0,270.0,180.0,0.0);
516      AliMatrix(idrotm[1115],90.0,216.0,90.0,306.0,180.0,0.0);
517      AliMatrix(idrotm[1116],90.0,252.0,90.0,342.0,180.0,0.0);
518      AliMatrix(idrotm[1117],90.0,288.0,90.0,18.0,0.0,0.0);
519      AliMatrix(idrotm[1118],90.0,288.0,90.0,18.0,180.0,0.0);
520      AliMatrix(idrotm[1130],90.0,324.0,90.0,54.0,0.0,0.0);  
521
522   }
523   
524   // SPD - option 'b' (this is the default)  
525     
526   if (option == 2) {
527
528      AliMatrix(idrotm[201],90.0,0.0,90.0,90.0,0.0,0.0);
529      AliMatrix(idrotm[202],90.0,90.0,90.0,0.0,0.0,0.0);
530      AliMatrix(idrotm[203],90.0,350.0,90.0,260.0,0.0,0.0);
531      AliMatrix(idrotm[204],90.0,170.0,90.0,80.0,0.0,0.0);
532      AliMatrix(idrotm[205],90.0,10.0,90.0,100.0,0.0,0.0);
533      AliMatrix(idrotm[206],90.0,190.0,90.0,280.0,0.0,0.0);
534      AliMatrix(idrotm[207],90.0,342.0,90.0,72.0,0.0,0.0);
535      AliMatrix(idrotm[208],90.0,156.999893,90.0,246.999893,0.0,0.0);
536      AliMatrix(idrotm[209],90.0,147.999802,90.0,237.999893,0.0,0.0);
537      AliMatrix(idrotm[210],90.0,138.999802,90.0,228.999802,0.0,0.0);
538      AliMatrix(idrotm[211],90.0,129.999802,90.0,219.999802,0.0,0.0);
539      AliMatrix(idrotm[212],90.0,36.7896,90.0,126.789597,0.0,0.0);
540      AliMatrix(idrotm[213],90.0,343.579712,90.0,73.579697,0.0,0.0);
541      AliMatrix(idrotm[214],90.0,95.413696,90.0,185.413696,0.0,0.0);
542      AliMatrix(idrotm[215],90.0,5.4141,90.0,95.414101,0.0,0.0);
543      AliMatrix(idrotm[216],90.0,318.296906,90.0,48.296902,0.0,0.0);
544      AliMatrix(idrotm[217],90.0,67.000099,90.0,157.000107,0.0,0.0);
545      AliMatrix(idrotm[218],90.0,337.003998,90.0,67.003998,0.0,0.0);
546      AliMatrix(idrotm[219],90.0,247.000305,90.0,337.000305,0.0,0.0);
547      AliMatrix(idrotm[220],90.0,305.633514,90.0,35.633499,0.0,0.0);
548      AliMatrix(idrotm[221],90.0,58.000198,90.0,148.000198,0.0,0.0);
549      AliMatrix(idrotm[222],90.0,327.997101,90.0,57.997101,0.0,0.0);
550      AliMatrix(idrotm[223],90.0,237.994202,90.0,327.994202,0.0,0.0);
551      AliMatrix(idrotm[224],90.0,296.627502,90.0,26.627399,0.0,0.0);
552      AliMatrix(idrotm[225],90.0,48.994099,90.0,138.994095,0.0,0.0);
553      AliMatrix(idrotm[226],90.0,318.990997,90.0,48.991001,0.0,0.0);
554      AliMatrix(idrotm[227],90.0,228.988205,90.0,318.98819,0.0,0.0);
555      AliMatrix(idrotm[228],90.0,287.621399,90.0,17.621401,0.0,0.0);
556      AliMatrix(idrotm[229],90.0,39.988098,90.0,129.988098,0.0,0.0);
557      AliMatrix(idrotm[230],90.0,309.984985,90.0,39.985001,0.0,0.0);
558      AliMatrix(idrotm[231],90.0,327.2612,90.0,57.2612,0.0,0.0);
559      AliMatrix(idrotm[232],90.0,237.261398,90.0,327.261414,0.0,0.0);
560      AliMatrix(idrotm[233],90.0,252.000504,90.0,342.000488,0.0,0.0);
561      AliMatrix(idrotm[234],90.0,71.9991,90.0,161.9991,0.0,0.0);
562      AliMatrix(idrotm[235],90.0,270.0,90.0,0.0,0.0,0.0);
563      AliMatrix(idrotm[236],90.0,180.013702,90.0,270.013702,0.0,0.0);
564      AliMatrix(idrotm[237],90.0,90.0,90.0,180.0,0.0,0.0);
565      AliMatrix(idrotm[238],90.0,180.0,90.0,270.0,0.0,0.0);
566      AliMatrix(idrotm[239],90.0,162.0,90.0,252.0,0.0,0.0);
567      AliMatrix(idrotm[240],90.0,310.0,90.0,40.0,0.0,0.0);
568      AliMatrix(idrotm[241],90.0,319.0,90.0,49.0,0.0,0.0);
569      AliMatrix(idrotm[242],90.0,328.0,90.0,58.0,0.0,0.0);
570      AliMatrix(idrotm[243],90.0,337.0,90.0,67.0,0.0,0.0);
571      AliMatrix(idrotm[244],90.0,216.0,90.0,306.0,0.0,0.0);
572      AliMatrix(idrotm[245],90.0,36.0,90.0,126.0,0.0,0.0);
573      AliMatrix(idrotm[246],90.0,108.0,90.0,198.0,0.0,0.0);
574      AliMatrix(idrotm[247],90.0,144.0,90.0,234.0,0.0,0.0);
575      AliMatrix(idrotm[248],90.0,288.0,90.0,18.0,0.0,0.0);
576      AliMatrix(idrotm[249],90.0,324.0,90.0,54.0,0.0,0.0);  
577      AliMatrix(idrotm[1003],90.0,73.5,90.0,163.5,0.0,0.0);
578      AliMatrix(idrotm[1011],90.0,342.0,90.0,72.0,0.0,0.0);
579      AliMatrix(idrotm[1039],90.0,72.0,90.0,162.0,0.0,0.0);
580      AliMatrix(idrotm[1043],90.0,66.91,90.0,156.91,0.0,0.0);
581      AliMatrix(idrotm[1065],90.0,144.0,90.0,234.0,0.0,0.0);
582      AliMatrix(idrotm[1078],90.0,180.0,90.0,270.0,0.0,0.0);
583      AliMatrix(idrotm[1088],90.0,57.41,90.0,147.41,0.0,0.0);
584      AliMatrix(idrotm[1089],90.0,333.0,90.0,63.0,0.0,0.0);
585      AliMatrix(idrotm[1090],90.0,351.0,90.0,81.0,0.0,0.0);
586      AliMatrix(idrotm[1091],90.0,216.0,90.0,306.0,0.0,0.0);
587      AliMatrix(idrotm[1092],90.0,27.0,90.0,117.0,0.0,0.0);
588      AliMatrix(idrotm[1093],90.0,18.0,90.0,108.0,0.0,0.0);
589      AliMatrix(idrotm[1094],90.0,9.0,90.0,99.0,0.0,0.0);
590      AliMatrix(idrotm[1104],90.0,252.0,90.0,342.0,0.0,0.0);
591      AliMatrix(idrotm[1106],90.0,36.0,90.0,126.0,0.0,0.0);
592      AliMatrix(idrotm[1107],90.0,108.0,90.0,198.0,0.0,0.0);
593      AliMatrix(idrotm[1108],90.0,324.0,90.0,54.0,180.0,0.0);
594      AliMatrix(idrotm[1109],90.0,0.0,90.0,90.0,180.0,0.0);
595      AliMatrix(idrotm[1110],90.0,36.0,90.0,126.0,180.0,0.0);
596      AliMatrix(idrotm[1111],90.0,72.0,90.0,162.0,180.0,0.0);
597      AliMatrix(idrotm[1112],90.0,108.0,90.0,198.0,180.0,0.0);
598      AliMatrix(idrotm[1113],90.0,144.0,90.0,234.0,180.0,0.0);
599      AliMatrix(idrotm[1114],90.0,180.0,90.0,270.0,180.0,0.0);
600      AliMatrix(idrotm[1115],90.0,216.0,90.0,306.0,180.0,0.0);
601      AliMatrix(idrotm[1116],90.0,252.0,90.0,342.0,180.0,0.0);
602      AliMatrix(idrotm[1117],90.0,288.0,90.0,18.0,0.0,0.0);
603      AliMatrix(idrotm[1118],90.0,288.0,90.0,18.0,180.0,0.0);
604      AliMatrix(idrotm[1130],90.0,324.0,90.0,54.0,0.0,0.0);  
605
606   }
607     
608   // SDD
609   
610   AliMatrix(idrotm[301],0.0,0.0,90.0,90.0,90.0,180.0);  
611   AliMatrix(idrotm[302],0.0,0.0,90.0,90.0,90.0,0.0);
612   AliMatrix(idrotm[303],180.0,0.0,90.0,90.0,90.0,0.0); 
613   AliMatrix(idrotm[304],180.0,0.0,90.0,90.0,90.0,180.0); 
614   AliMatrix(idrotm[305],90.0,347.14,90.0,77.14,0.0,0.0); 
615   AliMatrix(idrotm[306],90.0,321.43,90.0,51.43,0.0,0.0); 
616   AliMatrix(idrotm[307],90.0,295.71,90.0,25.71,0.0,0.0);
617   AliMatrix(idrotm[308],90.0,244.29,90.0,334.29,0.0,0.0);
618   AliMatrix(idrotm[309],90.0,218.57,90.0,308.57,0.0,0.0);
619   AliMatrix(idrotm[310],90.0,167.14,90.0,257.14,0.0,0.0);
620   AliMatrix(idrotm[311],90.0,141.43,90.0,231.43,0.0,0.0);  
621   AliMatrix(idrotm[312],90.0,0.0,0.0,0.0,90.0,270.0);
622   AliMatrix(idrotm[313],90.0,115.71,90.0,205.71,0.0,0.0); 
623   AliMatrix(idrotm[314],90.0,335.45,90.0,65.45,0.0,0.0); 
624   AliMatrix(idrotm[315],90.0,319.09,90.0,49.09,0.0,0.0); 
625   AliMatrix(idrotm[316],90.0,302.73,90.0,32.73,0.0,0.0); 
626   AliMatrix(idrotm[317],90.0,286.36,90.0,16.36,0.0,0.0);
627   AliMatrix(idrotm[318],90.0,270.0,90.0,360.0,0.0,0.0);
628   AliMatrix(idrotm[319],90.0,253.64,90.0,343.64,0.0,0.0);
629   AliMatrix(idrotm[320],90.0,237.27,90.0,327.27,0.0,0.0);
630   AliMatrix(idrotm[321],90.0,12.86,90.0,102.86,0.0,0.0);  
631   AliMatrix(idrotm[322],90.0,220.91,90.0,310.91,0.0,0.0);
632   AliMatrix(idrotm[323],90.0,204.55,90.0,294.55,0.0,0.0); 
633   AliMatrix(idrotm[324],90.0,188.18,90.0,278.18,0.0,0.0); 
634   AliMatrix(idrotm[325],90.0,171.82,90.0,261.82,0.0,0.0); 
635   AliMatrix(idrotm[326],90.0,155.45,90.0,245.45,0.0,0.0); 
636   AliMatrix(idrotm[327],90.0,139.09,90.0,229.09,0.0,0.0);
637   AliMatrix(idrotm[328],90.0,122.73,90.0,212.73,0.0,0.0);
638   AliMatrix(idrotm[329],90.0,106.36,90.0,196.36,0.0,0.0);
639   AliMatrix(idrotm[330],90.0,73.64,90.0,163.64,0.0,0.0);    
640   AliMatrix(idrotm[331],90.0,40.91,90.0,130.91,0.0,0.0);  
641   AliMatrix(idrotm[332],90.0,24.55,90.0,114.55,0.0,0.0);
642   AliMatrix(idrotm[333],90.0,38.57,90.0,128.57,0.0,0.0); 
643   AliMatrix(idrotm[334],90.0,351.82,90.0,81.82,0.0,0.0); 
644   AliMatrix(idrotm[335],90.0,8.18,90.0,98.18,0.0,0.0); 
645   AliMatrix(idrotm[336],90.0,64.29,90.0,154.29,0.0,0.0); 
646   AliMatrix(idrotm[337],111.0,300.0,21.0,300.0,90.0,30.0);
647   AliMatrix(idrotm[338],69.0,240.0,159.0,240.0,90.0,150.0);
648   AliMatrix(idrotm[339],111.0,240.0,21.0,240.0,90.0,150.0);
649   AliMatrix(idrotm[340],69.0,300.0,159.0,300.0,90.0,30.0);  
650   AliMatrix(idrotm[341],128.0,0.0,38.0,0.0,90.0,270.0);  
651   AliMatrix(idrotm[342],90.0,240.0,180.0,0.0,90.0,330.);
652   AliMatrix(idrotm[343],90.0,120.0,180.0,0.0,90.0,210.0); 
653   AliMatrix(idrotm[344],90.0,0.0,180.0,0.0,90.0,90.0); 
654   AliMatrix(idrotm[345],90.0,180.0,90.0,90.0,0.0,0.0); 
655   AliMatrix(idrotm[346],90.0,300.0,90.0,30.0,0.0,0.0); 
656   AliMatrix(idrotm[347],90.0,240.0,90.0,150.0,0.0,0.0);
657   AliMatrix(idrotm[348],90.0,180.0,0.0,0.0,90.0,270.0);
658   AliMatrix(idrotm[349],90.0,235.0,90.0,145.0,0.0,0.0);
659   AliMatrix(idrotm[350],90.0,90.0,90.0,180.0,0.0,0.0);  
660   AliMatrix(idrotm[351],90.0,305.0,90.0,35.0,0.0,0.0);  
661   AliMatrix(idrotm[352],0.0,0.0,90.0,0.0,90.0,90.0);
662   AliMatrix(idrotm[353],90.0,60.0,90.0,150.0,0.0,0.0); 
663   AliMatrix(idrotm[354],90.0,120.0,90.0,30.0,0.0,0.0); 
664   AliMatrix(idrotm[355],90.0,180.0,90.0,90.0,180.0,0.0); 
665   AliMatrix(idrotm[356],90.0,270.0,90.0,0.0,0.0,0.0); 
666   AliMatrix(idrotm[366],90.0,57.27,90.0,147.27,0.0,0.0); 
667   AliMatrix(idrotm[386],90.0,192.86,90.0,282.86,0.0,0.0);  
668    
669   // SSD
670   
671   AliMatrix(idrotm[501],90.0,148.24,90.0,238.24,0.0,0.0);
672   AliMatrix(idrotm[503],90.0,137.65,90.0,227.65,0.0,0.0); 
673   AliMatrix(idrotm[504],90.0,127.06,90.0,217.06,0.0,0.0);  
674   AliMatrix(idrotm[505],90.0,116.47,90.0,206.47,0.0,0.0);  
675   AliMatrix(idrotm[506],90.0,105.88,90.0,195.88,0.0,0.0);  
676   AliMatrix(idrotm[507],90.0,95.29,90.0,185.29,0.0,0.0);  
677   AliMatrix(idrotm[508],90.0,84.71,90.0,174.71,0.0,0.0);
678   AliMatrix(idrotm[509],90.0,74.12,90.0,164.12,0.0,0.0);
679   AliMatrix(idrotm[510],90.0,63.53,90.0,153.53,0.0,0.0);  
680   AliMatrix(idrotm[511],90.0,52.94,90.0,142.94,0.0,0.0);
681   AliMatrix(idrotm[512],90.0,42.35,90.0,132.35,0.0,0.0);
682   AliMatrix(idrotm[513],90.0,31.76,90.0,121.76,0.0,0.0); 
683   AliMatrix(idrotm[514],90.0,10.59,90.0,100.59,0.0,0.0);  
684   AliMatrix(idrotm[515],90.0,349.41,90.0,79.41,0.0,0.0);  
685   AliMatrix(idrotm[516],90.0,338.82,90.0,68.82,0.0,0.0);  
686   AliMatrix(idrotm[517],90.0,328.24,90.0,58.24,0.0,0.0);  
687   AliMatrix(idrotm[518],90.0,317.65,90.0,47.65,0.0,0.0);
688   AliMatrix(idrotm[519],90.0,307.06,90.0,37.06,0.0,0.0);
689   AliMatrix(idrotm[520],90.0,296.47,90.0,26.47,0.0,0.0);  
690   AliMatrix(idrotm[521],90.0,285.88,90.0,15.88,0.0,0.0);
691   AliMatrix(idrotm[522],90.0,275.29,90.0,5.29,0.0,0.0);
692   AliMatrix(idrotm[523],90.0,264.71,90.0,354.71,0.0,0.0); 
693   AliMatrix(idrotm[524],90.0,254.12,90.0,344.12,0.0,0.0);  
694   AliMatrix(idrotm[525],90.0,243.53,90.0,333.53,0.0,0.0);  
695   AliMatrix(idrotm[526],90.0,232.94,90.0,322.94,0.0,0.0);  
696   AliMatrix(idrotm[527],90.0,222.35,90.0,312.35,0.0,0.0);  
697   AliMatrix(idrotm[528],90.0,211.76,90.0,301.76,0.0,0.0);
698   AliMatrix(idrotm[529],90.0,190.59,90.0,280.59,0.0,0.0);
699   AliMatrix(idrotm[530],90.0,169.41,90.0,259.41,0.0,0.0);  
700   AliMatrix(idrotm[531],90.0,158.82,90.0,248.82,0.0,0.0);
701   AliMatrix(idrotm[532],90.0,360.0,90.0,90.0,0.0,0.0);
702   AliMatrix(idrotm[533],90.0,180.0,90.0,270.0,0.0,0.0); 
703   AliMatrix(idrotm[534],90.0,189.47,90.0,279.47,0.0,0.0);  
704   AliMatrix(idrotm[535],90.0,198.95,90.0,288.95,0.0,0.0);  
705   AliMatrix(idrotm[537],90.0,217.89,90.0,307.89,0.0,0.0);  
706   AliMatrix(idrotm[538],90.0,227.37,90.0,317.37,0.0,0.0);
707   AliMatrix(idrotm[539],90.0,236.84,90.0,326.84,0.0,0.0);
708   AliMatrix(idrotm[540],90.0,246.32,90.0,336.32,0.0,0.0);  
709   AliMatrix(idrotm[541],90.0,255.79,90.0,345.79,0.0,0.0);
710   AliMatrix(idrotm[542],90.0,265.26,90.0,355.26,0.0,0.0);
711   AliMatrix(idrotm[543],90.0,274.74,90.0,4.74,0.0,0.0); 
712   AliMatrix(idrotm[544],90.0,284.21,90.0,14.21,0.0,0.0);  
713   AliMatrix(idrotm[545],90.0,293.68,90.0,23.68,0.0,0.0);  
714   AliMatrix(idrotm[546],90.0,303.16,90.0,33.16,0.0,0.0);  
715   AliMatrix(idrotm[547],90.0,312.63,90.0,42.63,0.0,0.0);  
716   AliMatrix(idrotm[548],90.0,322.11,90.0,52.11,0.0,0.0);
717   AliMatrix(idrotm[549],90.0,331.58,90.0,61.58,0.0,0.0);
718   AliMatrix(idrotm[550],90.0,341.05,90.0,71.05,0.0,0.0);  
719   AliMatrix(idrotm[551],90.0,350.53,90.0,80.53,0.0,0.0);
720   AliMatrix(idrotm[552],90.0,9.47,90.0,99.47,0.0,0.0);
721   AliMatrix(idrotm[553],90.0,18.95,90.0,108.95,0.0,0.0); 
722   AliMatrix(idrotm[555],90.0,37.89,90.0,127.89,0.0,0.0);  
723   AliMatrix(idrotm[556],90.0,47.37,90.0,137.37,0.0,0.0);  
724   AliMatrix(idrotm[557],90.0,56.84,90.0,146.84,0.0,0.0);  
725   AliMatrix(idrotm[558],90.0,66.32,90.0,156.32,0.0,0.0);
726   AliMatrix(idrotm[559],90.0,75.79,90.0,165.79,0.0,0.0);
727   AliMatrix(idrotm[560],90.0,85.26,90.0,175.26,0.0,0.0);  
728   AliMatrix(idrotm[561],90.0,94.74,90.0,184.74,0.0,0.0);
729   AliMatrix(idrotm[562],90.0,104.21,90.0,194.21,0.0,0.0);
730   AliMatrix(idrotm[563],90.0,113.68,90.0,203.68,0.0,0.0); 
731   AliMatrix(idrotm[564],90.0,123.16,90.0,213.16,0.0,0.0);  
732   AliMatrix(idrotm[565],90.0,132.63,90.0,222.63,0.0,0.0);  
733   AliMatrix(idrotm[566],90.0,142.11,90.0,232.11,0.0,0.0);  
734   AliMatrix(idrotm[567],90.0,151.58,90.0,241.58,0.0,0.0);  
735   AliMatrix(idrotm[568],90.0,161.05,90.0,251.05,0.0,0.0);
736   AliMatrix(idrotm[569],90.0,170.53,90.0,260.53,0.0,0.0);
737   AliMatrix(idrotm[570],90.0,180.0,90.0,90.0,180.0,0.0);  
738   AliMatrix(idrotm[571],90.0,0.0,0.0,0.0,90.0,270.0);
739   AliMatrix(idrotm[572],90.0,180.0,0.0,0.0,90.0,270.0);
740   AliMatrix(idrotm[573],90.0,180.0,90.0,90.0,0.0,0.0); 
741   AliMatrix(idrotm[575],90.0,120.0,180.0,0.0,90.0,210.0);  
742   AliMatrix(idrotm[576],65.71,300.0,90.0,30.0,24.29,120.0);  
743   AliMatrix(idrotm[577],114.29,300.0,90.0,30.0,155.71,120.0);  
744   AliMatrix(idrotm[579],65.71,240.0,90.0,150.0,24.29,60.0);
745   AliMatrix(idrotm[580],114.29,240.0,90.0,150.0,155.71,60.0);  
746   AliMatrix(idrotm[581],90.0,240.0,180.0,0.0,90.0,330.0);
747   AliMatrix(idrotm[583],90.0,0.0,180.0,0.0,90.0,90.0); 
748   AliMatrix(idrotm[584],90.0,180.0,180.0,0.0,90.0,90.0);  
749   AliMatrix(idrotm[586],180.0,0.0,90.0,90.0,90.0,0.0);  
750   AliMatrix(idrotm[618],90.0,201.18,90.0,291.18,0.0,0.0);
751   AliMatrix(idrotm[620],90.0,28.42,90.0,118.42,0.0,0.0);  
752   AliMatrix(idrotm[623],90.0,208.42,90.0,298.42,0.0,0.0);
753   AliMatrix(idrotm[633],132.46,0.0,90.0,90.0,42.46,360.0);
754   AliMatrix(idrotm[653],90.0,21.18,90.0,111.18,0.0,0.0); 
755
756   
757   // SDD cone
758
759   AliMatrix(idrotm[846],90.0,300.0,90.0,30.0,0.0,0.0);
760   AliMatrix(idrotm[851],90.0,305.0,90.0,35.0,0.0,0.0);
761   AliMatrix(idrotm[853],90.0,60.0,90.0,150.0,0.0,0.0);
762   AliMatrix(idrotm[856],90.0,0.0,90.0,90.0,180.0,0.0);
763   AliMatrix(idrotm[857],90.0,5.0,90.0,95.0,180.0,0.0);
764   AliMatrix(idrotm[858],90.0,65.0,90.0,155.0,180.0,0.0);
765   AliMatrix(idrotm[859],90.0,305.0,90.0,35.0,180.0,0.0);
766   AliMatrix(idrotm[860],90.0,245.0,90.0,335.0,180.0,0.0);
767   AliMatrix(idrotm[861],90.0,185.0,90.0,275.0,180.0,0.0);
768   AliMatrix(idrotm[862],90.0,125.0,90.0,215.0,180.0,0.0);
769   AliMatrix(idrotm[863],90.0,257.5,90.0,347.5,180.0,0.0);
770   AliMatrix(idrotm[864],90.0,227.5,90.0,317.5,180.0,0.0);
771   AliMatrix(idrotm[865],90.0,197.5,90.0,287.5,180.0,0.0);
772   AliMatrix(idrotm[867],90.0,167.5,90.0,257.5,180.0,0.0);
773   AliMatrix(idrotm[868],90.0,287.5,90.0,17.5,0.0,0.0);  
774   AliMatrix(idrotm[869],90.0,137.5,90.0,227.5,180.0,0.0);
775   AliMatrix(idrotm[870],90.0,107.5,90.0,197.5,180.0,0.0);
776   AliMatrix(idrotm[871],90.0,77.5,90.0,167.5,180.0,0.0);
777   AliMatrix(idrotm[872],90.0,47.5,90.0,137.5,180.0,0.0);
778   AliMatrix(idrotm[873],90.0,17.5,90.0,107.5,180.0,0.0);
779   AliMatrix(idrotm[874],90.0,347.5,90.0,77.5,180.0,0.0);
780   AliMatrix(idrotm[875],90.0,317.5,90.0,47.5,180.0,0.0);
781   AliMatrix(idrotm[876],90.0,287.5,90.0,17.5,180.0,0.0);
782   AliMatrix(idrotm[877],90.0,185.0,90.0,275.0,0.0,0.0);
783   AliMatrix(idrotm[878],90.0,180.0,90.0,270.0,0.0,0.0);  
784   AliMatrix(idrotm[879],90.0,125.0,90.0,215.0,0.0,0.0);
785   AliMatrix(idrotm[880],90.0,65.0,90.0,155.0,0.0,0.0);
786   AliMatrix(idrotm[881],90.0,5.0,90.0,95.0,0.0,0.0);
787   AliMatrix(idrotm[882],90.0,245.0,90.0,335.0,0.0,0.0);
788   AliMatrix(idrotm[883],90.0,47.5,90.0,137.5,0.0,0.0);
789   AliMatrix(idrotm[884],90.0,77.5,90.0,167.5,0.0,0.0);
790   AliMatrix(idrotm[885],90.0,107.5,90.0,197.5,0.0,0.0);
791   AliMatrix(idrotm[887],90.0,137.5,90.0,227.5,0.0,0.0);
792   AliMatrix(idrotm[888],90.0,167.5,90.0,257.5,0.0,0.0);
793   AliMatrix(idrotm[889],90.0,197.5,90.0,287.5,0.0,0.0);
794   AliMatrix(idrotm[890],90.0,227.5,90.0,317.5,0.0,0.0);
795   AliMatrix(idrotm[891],90.0,347.5,90.0,77.5,0.0,0.0);
796   AliMatrix(idrotm[892],90.0,317.5,90.0,47.5,0.0,0.0);
797   AliMatrix(idrotm[893],90.0,257.5,90.0,347.5,0.0,0.0);
798   AliMatrix(idrotm[894],90.0,270.0,0.0,0.0,90.0,180.0);
799   AliMatrix(idrotm[895],90.0,286.36,0.0,0.0,90.0,196.36);
800   AliMatrix(idrotm[896],90.0,302.73,0.0,0.0,90.0,212.73);
801   AliMatrix(idrotm[897],90.0,319.09,0.0,0.0,90.0,229.09);
802   AliMatrix(idrotm[898],90.0,17.5,90.0,107.5,0.0,0.0);
803   AliMatrix(idrotm[899],90.0,335.45,0.0,0.0,90.0,245.45);
804   AliMatrix(idrotm[900],90.0,351.82,0.0,0.0,90.0,261.82);
805   AliMatrix(idrotm[901],90.0,8.18,0.0,0.0,90.0,278.18);
806   AliMatrix(idrotm[902],90.0,24.55,0.0,0.0,90.0,294.55);
807   AliMatrix(idrotm[903],90.0,40.91,0.0,0.0,90.0,310.91);
808   AliMatrix(idrotm[904],90.0,57.27,0.0,0.0,90.0,327.27);
809   AliMatrix(idrotm[905],90.0,73.64,0.0,0.0,90.0,343.64);
810   AliMatrix(idrotm[906],90.0,90.0,0.0,0.0,90.0,360.0);
811   AliMatrix(idrotm[907],90.0,106.36,0.0,0.0,90.0,16.36);
812   AliMatrix(idrotm[908],90.0,122.73,0.0,0.0,90.0,32.73);
813   AliMatrix(idrotm[909],90.0,139.09,0.0,0.0,90.0,49.09);
814   AliMatrix(idrotm[910],90.0,155.45,0.0,0.0,90.0,65.45);
815   AliMatrix(idrotm[911],90.0,171.82,0.0,0.0,90.0,81.82);
816   AliMatrix(idrotm[912],90.0,188.18,0.0,0.0,90.0,98.18);
817   AliMatrix(idrotm[913],90.0,204.55,0.0,0.0,90.0,114.55);
818   AliMatrix(idrotm[914],90.0,220.91,0.0,0.0,90.0,130.91);
819   AliMatrix(idrotm[915],90.0,237.27,0.0,0.0,90.0,147.27);
820   AliMatrix(idrotm[916],90.0,253.64,0.0,0.0,90.0,163.64);
821   AliMatrix(idrotm[917],90.0,295.71,0.0,0.0,90.0,205.71);
822   AliMatrix(idrotm[918],90.0,321.43,0.0,0.0,90.0,231.43);
823   AliMatrix(idrotm[919],90.0,347.14,0.0,0.0,90.0,257.14);
824   AliMatrix(idrotm[920],90.0,12.86,0.0,0.0,90.0,282.86);
825   AliMatrix(idrotm[921],90.0,38.57,0.0,0.0,90.0,308.57);
826   AliMatrix(idrotm[922],90.0,64.29,0.0,0.0,90.0,334.29);
827   AliMatrix(idrotm[923],90.0,115.71,0.0,0.0,90.0,25.71);
828   AliMatrix(idrotm[924],90.0,141.43,0.0,0.0,90.0,51.43);
829   AliMatrix(idrotm[925],90.0,167.14,0.0,0.0,90.0,77.14);
830   AliMatrix(idrotm[926],90.0,192.86,0.0,0.0,90.0,102.86);
831   AliMatrix(idrotm[927],90.0,218.57,0.0,0.0,90.0,128.57);
832   AliMatrix(idrotm[928],90.0,244.29,0.0,0.0,90.0,154.29);
833   AliMatrix(idrotm[929],90.0,120.0,90.0,210.0,0.0,0.0);
834   AliMatrix(idrotm[930],90.0,240.0,90.0,330.0,0.0,0.0);
835   AliMatrix(idrotm[931],90.0,60.0,90.0,150.0,180.0,0.0);
836   AliMatrix(idrotm[932],90.0,120.0,90.0,210.0,180.0,0.0);
837   AliMatrix(idrotm[933],90.0,180.0,90.0,270.0,180.0,0.0);
838   AliMatrix(idrotm[934],90.0,240.0,90.0,330.0,180.0,0.0);
839   AliMatrix(idrotm[935],90.0,300.0,90.0,30.0,180.0,0.0);
840
841   // SSD cone
842
843   AliMatrix(idrotm[701],90.0,0.0,90.0,90.0,180.0,0.0);
844   AliMatrix(idrotm[702],90.0,347.5,90.0,77.5,180.0,0.0);
845   AliMatrix(idrotm[703],90.0,17.5,90.0,107.5,180.0,0.0);
846   AliMatrix(idrotm[704],90.0,47.5,90.0,137.5,180.0,0.0);
847   AliMatrix(idrotm[705],90.0,77.5,90.0,167.5,180.0,0.0);
848   AliMatrix(idrotm[706],90.0,107.5,90.0,197.5,180.0,0.0);
849   AliMatrix(idrotm[707],90.0,137.5,90.0,227.5,180.0,0.0);
850   AliMatrix(idrotm[708],90.0,167.5,90.0,257.5,180.0,0.0);
851   AliMatrix(idrotm[709],90.0,197.5,90.0,287.5,180.0,0.0);
852   AliMatrix(idrotm[710],90.0,227.5,90.0,317.5,180.0,0.0);
853   AliMatrix(idrotm[711],90.0,257.5,90.0,347.5,180.0,0.0);
854   AliMatrix(idrotm[712],90.0,287.5,90.0,17.5,180.0,0.0);
855   AliMatrix(idrotm[713],90.0,317.5,90.0,47.5,180.0,0.0);
856   AliMatrix(idrotm[714],90.0,328.4,90.0,58.4,180.0,0.0);
857   AliMatrix(idrotm[715],90.0,28.4,90.0,118.4,180.0,0.0);
858   AliMatrix(idrotm[716],90.0,88.4,90.0,178.4,180.0,0.0);
859   AliMatrix(idrotm[717],90.0,148.4,90.0,238.4,180.0,0.0);
860   AliMatrix(idrotm[718],90.0,208.4,90.0,298.4,180.0,0.0);
861   AliMatrix(idrotm[719],90.0,268.4,90.0,358.4,180.0,0.0);
862   AliMatrix(idrotm[720],90.0,28.4,90.0,118.4,0.0,0.0);
863   AliMatrix(idrotm[721],90.0,88.4,90.0,178.4,0.0,0.0);
864   AliMatrix(idrotm[722],90.0,148.4,90.0,238.4,0.0,0.0);
865   AliMatrix(idrotm[723],90.0,208.4,90.0,298.4,0.0,0.0);
866   AliMatrix(idrotm[724],90.0,268.4,90.0,358.4,0.0,0.0);
867   AliMatrix(idrotm[725],90.0,328.4,90.0,58.4,0.0,0.0);
868   AliMatrix(idrotm[726],90.0,77.5,90.0,167.5,0.0,0.0);
869   AliMatrix(idrotm[727],90.0,107.5,90.0,197.5,0.0,0.0);
870   AliMatrix(idrotm[728],90.0,137.5,90.0,227.5,0.0,0.0);
871   AliMatrix(idrotm[729],90.0,167.5,90.0,257.5,0.0,0.0);
872   AliMatrix(idrotm[730],90.0,227.5,90.0,317.5,0.0,0.0);
873   AliMatrix(idrotm[731],90.0,257.5,90.0,347.5,0.0,0.0);
874   AliMatrix(idrotm[732],90.0,317.5,90.0,47.5,0.0,0.0);  
875   AliMatrix(idrotm[733],90.0,197.5,90.0,287.5,0.0,0.0);
876   AliMatrix(idrotm[734],90.0,347.5,90.0,77.5,0.0,0.0);
877   AliMatrix(idrotm[735],90.0,47.5,90.0,137.5,0.0,0.0);
878   AliMatrix(idrotm[768],90.0,287.5,90.0,17.5,0.0,0.0);
879   AliMatrix(idrotm[798],90.0,17.5,90.0,107.5,0.0,0.0);
880
881   // Services
882     
883   AliMatrix(idrotm[200], 90., 0., 90., 90., 180., 0.);  
884
885
886   //     CONVERT INTO CM (RL(SI)=9.36 CM) 
887   
888   for (i = 0; i < 6; ++i) {
889     drl[i] = drl[i] / 100. * 9.36;
890   }
891     
892   //     FIELD CAGE HALF LENGTH 
893   
894   rlim  = 50.;
895   zmax  = 74.;
896   ztpc = 284.;
897   
898   // --- Define ghost volume containing the whole ITS (including services) 
899   //     and fill it with air 
900   
901   dgh[0] = 0.;
902   dgh[1] = 360.;
903   dgh[2] = 16.;
904   dgh[3] = -ztpc-5.-0.1;
905   dgh[4] = 46;   
906   dgh[5] = 85.;
907   dgh[6] = -ztpc;
908   dgh[7] = 46;   
909   dgh[8] = 85.;
910   dgh[9] = -ztpc;
911   dgh[10] = 46;  
912   dgh[11] = rlim+6;
913   dgh[12] = -97.5;
914   dgh[13] = 46;  
915   dgh[14] = rlim+6;
916   dgh[15] = -zmax;
917   dgh[16] = 46;  
918   dgh[17] = rlim+6;
919   dgh[18] = -48;   
920   dgh[19] = 6;
921   dgh[20] = rlim+6;
922   dgh[21] = -28.6;   
923   dgh[22] = 6;
924   dgh[23] = rlim+6;    
925   dgh[24] = -27.6;  
926   dgh[25] = 3.295;
927   dgh[26] = rlim+6; 
928   dgh[27] = 27.6;   
929   dgh[28] = 3.295;
930   dgh[29] = rlim+6;
931   dgh[30] = 28.6;   
932   dgh[31] = 6;
933   dgh[32] = rlim+6;
934   dgh[33] = 48;   
935   dgh[34] = 6;
936   dgh[35] = rlim+6;  
937   dgh[36] = zmax;
938   dgh[37] = 46;
939   dgh[38] = rlim+6;
940   dgh[39] = 97.5;
941   dgh[40] = 46;  
942   dgh[41] = rlim+6;
943   dgh[42] = ztpc;
944   dgh[43] = 62;     
945   dgh[44] = 62+4.;  
946   dgh[45] = ztpc;
947   dgh[46] = 62;     
948   dgh[47] = 85.;
949   dgh[48] = ztpc+4.+0.1;
950   dgh[49] = 62.4;
951   dgh[50] = 85.;
952   gMC->Gsvolu("ITSV", "PCON", idtmed[205], dgh, 51);
953
954   
955   // --- Place the ghost volume in its mother volume (ALIC) and make it 
956   //     invisible 
957   
958   gMC->Gspos("ITSV", 1, "ALIC", 0., 0., 0., 0, "ONLY");
959   //gMC->Gsatt("ITSV", "SEEN", 0); 
960
961
962   // --- Define ghost volume containing the six layers and fill it with air 
963   
964   dgh[0] = 0.;
965   dgh[1] = 360.;
966   dgh[2] = 8.;
967   dgh[3] = -zmax;  
968   dgh[4] = 46.;
969   dgh[5] = rlim;
970   dgh[6] = -47.5;    
971   dgh[7] = 6.005;
972   dgh[8] = rlim;
973   dgh[9] = -28.5;    
974   dgh[10] = 6.005;
975   dgh[11] = rlim;  
976   dgh[12] = -27.5;   
977   dgh[13] = 3.3;
978   dgh[14] = rlim;
979   dgh[15] = 27.5;    
980   dgh[16] = 3.3;
981   dgh[17] = rlim;
982   dgh[18] = 28.5;    
983   dgh[19] = 6.005;
984   dgh[20] = rlim;
985   dgh[21] = 47.5;    
986   dgh[22] = 6.005;
987   dgh[23] = rlim;
988   dgh[24] = zmax;    
989   dgh[25] = 46.;
990   dgh[26] = rlim;
991   gMC->Gsvolu("ITSD", "PCON", idtmed[205], dgh, 27);
992   
993   // --- Place the ghost volume in its mother volume (ITSV) and make it 
994   //     invisible 
995   
996   gMC->Gspos("ITSD", 1, "ITSV", 0., 0., 0., 0, "ONLY");
997   //gMC->Gsatt("ITSD", "SEEN", 0);
998
999
1000   // --- Define SPD (option 'a') volumes ----------------------------
1001   
1002   // SPD - option 'a' 
1003   // (this is NOT the default)
1004
1005   if (option == 1) {
1006   
1007      dits[0] = 3.7;
1008      dits[1] = 7.75;
1009      dits[2] = 26.1;
1010      gMC->Gsvolu("IT12", "TUBE", idtmed[254], dits, 3);
1011
1012      dits[0] = 3.7;
1013      dits[1] = 7.7;
1014      dits[2] = 24;
1015      dits[3] = 57;
1016      dits[4] = 100;
1017      gMC->Gsvolu("I12A", "TUBS", idtmed[254], dits, 5);    // sector
1018
1019      di10a[0] = 0.843;
1020      di10a[1] = ddet1+dchip1+dbus+0.0025;
1021      di10a[2] = 19.344;
1022      gMC->Gsvolu("I10A", "BOX ", idtmed[254], di10a, 3);    // mother volume
1023                                                             // on layer 1
1024      di20a[0] = 0.843;
1025      di20a[1] = ddet2+dchip2+dbus+0.0025;
1026      di20a[2] = 19.344;
1027      gMC->Gsvolu("I20A", "BOX ", idtmed[254], di20a, 3);    // mother volume
1028                                                             // on layer 2
1029      dits[0] = 1.3673;
1030      dits[1] = 0.01;
1031      dits[2] = 24;
1032      gMC->Gsvolu("I123", "BOX ", idtmed[253], dits, 3);
1033
1034      dits[0] = 0.06;
1035      dits[1] = 0.08;
1036      dits[2] = 24;
1037      dits[3] = -36.79;
1038      dits[4] = 21.834;
1039      gMC->Gsvolu("I121", "TUBS", idtmed[253], dits, 5);  
1040
1041      dits[0] = 0.1253;
1042      dits[1] = 0.01;
1043      dits[2] = 24;
1044      gMC->Gsvolu("I122", "BOX ", idtmed[253], dits, 3);
1045
1046      dits[0] = 0.04;
1047      dits[1] = 0.06 ;
1048      dits[2] = 24;
1049      dits[3] = 126.79;
1050      dits[4] = 270;
1051      gMC->Gsvolu("I120", "TUBS", idtmed[253], dits, 5);  
1052
1053      dits[0] = 0.1134;
1054      dits[1] = 0.01;
1055      dits[2] = 24;
1056      gMC->Gsvolu("I144", "BOX ", idtmed[253], dits, 3);  
1057
1058      dits[0] = 0.25;
1059      dits[1] = 0.06;
1060      dits[2] = 24;
1061      gMC->Gsvolu("I113", "BOX ", idtmed[254], dits, 3);  
1062
1063      dits[0] = 0.077;
1064      dits[1] = 0.01;
1065      dits[2] = 24;
1066      gMC->Gsvolu("I143", "BOX ", idtmed[253], dits, 3);   
1067
1068      dits[0] = 0.04;
1069      dits[1] = 0.06;
1070      dits[2] = 24;
1071      dits[3] = 0;
1072      dits[4] = 90;
1073      gMC->Gsvolu("I142", "TUBS", idtmed[253], dits, 5); 
1074
1075      dits[0] = 0.0695;
1076      dits[1] = 0.01;
1077      dits[2] = 24;
1078      gMC->Gsvolu("I141", "BOX ", idtmed[253], dits, 3);  
1079
1080      dits[0] = 0.06;
1081      dits[1] = 0.08;
1082      dits[2] = 24;
1083      dits[3] = 0;
1084      dits[4] = 108;
1085      gMC->Gsvolu("I140", "TUBS", idtmed[253], dits, 5);  
1086
1087      dits[0] = 0.1835;
1088      dits[1] = 0.01;
1089      dits[2] = 24;
1090      gMC->Gsvolu("I139", "BOX ", idtmed[253], dits, 3);
1091
1092      dits[0] = 0.1894 ;
1093      dits[1] = 0.01;
1094      dits[2] = 24;
1095      gMC->Gsvolu("I138", "BOX ", idtmed[253], dits, 3);  
1096
1097      dits[0] = 0.04;
1098      dits[1] = 0.06;
1099      dits[2] = 24;
1100      dits[3] = 0;
1101      dits[4] = 75.261;
1102      gMC->Gsvolu("I137", "TUBS", idtmed[253], dits, 5);  
1103
1104      dits[0] = 1.3401;
1105      dits[1] = 0.01;
1106      dits[2] = 24;
1107      gMC->Gsvolu("I136", "BOX ", idtmed[253], dits, 3);  
1108
1109      dits[0] = 0.05;
1110      dits[1] = 0.07;
1111      dits[2] = 24;
1112      dits[3] = 0;
1113      dits[4] = 72.739;
1114      gMC->Gsvolu("I135", "TUBS", idtmed[253], dits, 5);  
1115
1116      dits[0] = 0.1193;
1117      dits[1] = 0.01;
1118      dits[2] = 24;
1119      gMC->Gsvolu("I134", "BOX ", idtmed[253], dits, 3);    
1120
1121      dits[0] = 0.163;
1122      dits[1] = 0.01;
1123      dits[2] = 24;
1124      gMC->Gsvolu("I133", "BOX ", idtmed[253], dits, 3);   
1125
1126      dits[0] = 0.04;
1127      dits[1] = 0.06;
1128      dits[2] = 24;
1129      dits[3] = 0;
1130      dits[4] = 157.633;
1131      gMC->Gsvolu("I132", "TUBS", idtmed[253], dits, 5); 
1132
1133      dits[0] = 0.2497;
1134      dits[1] = 0.01;
1135      dits[2] = 24;
1136      gMC->Gsvolu("I131", "BOX ", idtmed[253], dits, 3); 
1137
1138      dits[0] = 0.06;
1139      dits[1] = 0.08;
1140      dits[2] = 24;
1141      dits[3] = 0;
1142      dits[4] = 148.633;
1143      gMC->Gsvolu("I130", "TUBS", idtmed[253], dits, 5); 
1144
1145      dits[0] = 0.292;
1146      dits[1] = 0.01;
1147      dits[2] = 24;
1148      gMC->Gsvolu("I129", "BOX ", idtmed[253], dits, 3);  
1149
1150      dits[0] = 0.163;
1151      dits[1] = 0.01;
1152      dits[2] = 24;
1153      gMC->Gsvolu("I128", "BOX ", idtmed[253], dits, 3);  
1154
1155      dits[0] = 0.04;
1156      dits[1] = 0.06;
1157      dits[2] = 24;
1158      dits[3] = 0;
1159      dits[4] = 161.297;
1160      gMC->Gsvolu("I126", "TUBS", idtmed[253], dits, 5);
1161
1162      dits[0] = 0.2433;
1163      dits[1] = 0.01;
1164      dits[2] = 24;
1165      gMC->Gsvolu("I125", "BOX ", idtmed[253], dits, 3);  
1166
1167      dits[0] = 0.06;
1168      dits[1] = 0.08;
1169      dits[2] = 24;
1170      dits[3] = 0;
1171      dits[4] = 42.883;
1172      gMC->Gsvolu("I124", "TUBS", idtmed[253], dits, 5);  
1173
1174      di103[0] = 0.793;
1175      di103[1] = ddet1+dchip1;
1176      di103[2] = 3.536;
1177      gMC->Gsvolu("I103", "BOX ", idtmed[254], di103, 3); // contains det and chip  
1178                                                          // layer 1
1179      dits[0] = 0.793;
1180      dits[1] = 0.475;  //0.685; 0.015
1181      dits[2] = 2.5;
1182      gMC->Gsvolu("I105", "BOX ", idtmed[290], dits, 3);  // end-ladder electr.
1183
1184      di104[0] = 0.843;
1185      di104[1] = dbus;
1186      di104[2] = 14.344;
1187      gMC->Gsvolu("I104", "BOX ", idtmed[275], di104, 3);  // bus for both layers
1188
1189      di1d3[0] = 0.793;
1190      di1d3[1] = ddet2+dchip2;
1191      di1d3[2] = 3.536;
1192      gMC->Gsvolu("I1D3", "BOX ", idtmed[254], di1d3, 3); // contains det and chip
1193                                                          // layer 2
1194      dits[0] = 0.793;
1195      dits[0] = 0.06;
1196      dits[1] = 0.08;
1197      dits[2] = 24;
1198      dits[3] = 0;
1199      dits[4] = 80;
1200      gMC->Gsvolu("I112", "TUBS", idtmed[253], dits, 5);  
1201
1202      dits[0] = 0.04;
1203      dits[1] = 0.06;
1204      dits[2] = 24;
1205      dits[3] = 0;
1206      dits[4] = 80;
1207      gMC->Gsvolu("I111", "TUBS", idtmed[253], dits, 5);  
1208
1209      dits[0] = 0.15;
1210      dits[1] = 0.0146;
1211      dits[2] = 24;
1212      gMC->Gsvolu("I118", "BOX ", idtmed[273], dits, 3);  
1213
1214      dits[0] = 0.1315;
1215      dits[1] = 0.01;
1216      dits[2] = 24;
1217      gMC->Gsvolu("I110", "BOX ", idtmed[253], dits, 3);  
1218
1219      dits[0] = 0.025;
1220      dits[1] = 0.035;
1221      dits[2] = 24;
1222      dits[3] = 0;
1223      dits[4] = 180;
1224      gMC->Gsvolu("I114", "TUBS", idtmed[264], dits, 5);  
1225
1226      if (fluid == 1) {
1227         dits[0] = 0;
1228         dits[1] = 0.025;
1229         dits[2] = 24;
1230         dits[3] = 0;
1231         dits[4] = 180;
1232         gMC->Gsvolu("I115", "TUBS", idtmed[211], dits, 5); // set water as cooling fluid   
1233      } else {
1234         dits[0] = 0;
1235         dits[1] = 0.025;
1236         dits[2] = 24;
1237         dits[3] = 0;
1238         dits[4] = 180;
1239         gMC->Gsvolu("I115", "TUBS", idtmed[212], dits, 5); // set freon as cooling fluid       
1240      }
1241      
1242      dits[0] = 0.063;
1243      dits[1] = 0.035;
1244      dits[2] = 24;
1245      gMC->Gsvolu("I116", "BOX ", idtmed[264], dits, 3); 
1246
1247      di102[0] = 0.793;
1248      di102[1] = dchip1;
1249      di102[2] = 0.68;
1250      gMC->Gsvolu("I102", "BOX ", idtmed[201], di102, 3);   // chip layer 1
1251           
1252      di1d2[0] = 0.793;
1253      di1d2[1] = dchip2;
1254      di1d2[2] = 0.68;
1255      gMC->Gsvolu("I1D2", "BOX ", idtmed[201], di1d2, 3);   // chip      layer 2
1256
1257      di101[0] = 0.705;
1258      di101[1] = ddet1;
1259      di101[2] = 3.536;
1260      gMC->Gsvolu("I101", "BOX ", idtmed[250], di101, 3);   // contains detector 
1261                                                            // layer 1
1262      di1d1[0] = 0.705;
1263      di1d1[1] = ddet2;
1264      di1d1[2] = 3.536;
1265      gMC->Gsvolu("I1D1", "BOX ", idtmed[250], di1d1, 3);   // contains detector 
1266                                                            // layer 2
1267      if (fluid == 1) {
1268         dits[0] = 0.063;
1269         dits[1] = 0.025;
1270         dits[2] = 24;
1271         gMC->Gsvolu("I117", "BOX ", idtmed[211], dits, 3); // set water as cooling fuid
1272      } else {
1273         dits[0] = 0.063;
1274         dits[1] = 0.025;
1275         dits[2] = 24;
1276         gMC->Gsvolu("I117", "BOX ", idtmed[212], dits, 3); // set freon as cooling fluid
1277      }
1278
1279      dits1[0] = 0.64;
1280      dits1[1] = ddet1;
1281      dits1[2] = 3.48;
1282      gMC->Gsvolu("ITS1", "BOX ", idtmed[200], dits1, 3);   // detector layer 1
1283
1284      dits2[0] = 0.64;
1285      dits2[1] = ddet2;
1286      dits2[2] = 3.48;
1287      gMC->Gsvolu("ITS2", "BOX ", idtmed[200], dits2, 3);   // detector layer 2
1288
1289      dits[0] = 3.701;
1290      dits[1] = 7.699;
1291      dits[2] = 4;
1292      dits[3] = 57.1;
1293      dits[4] = 99.9;  
1294      gMC->Gsvolu("I650", "TUBS", idtmed[254], dits, 5);  // was I150 in old geom.
1295
1296      dits[0] = 3.7;
1297      dits[1] = 7.75;
1298      dits[2] = 0.05;
1299      gMC->Gsvolu("I651", "TUBE", idtmed[296], dits, 3);  // services disk
1300  
1301      dits[0] = 0;
1302      dits[1] = 0.5;
1303      dits[2] = 1.5;
1304      gMC->Gsvolu("I676", "TUBE", idtmed[274], dits, 3); // was I176 in old geom.
1305
1306      dits[0] = 0;
1307      dits[1] = 0.18;
1308      dits[2] = 0.8;
1309      gMC->Gsvolu("I673", "TUBE", idtmed[274], dits, 3); // was I173 in old geom.
1310
1311      dits[0] = 0;
1312      dits[1] = 0.18;
1313      dits[2] = 3;
1314      gMC->Gsvolu("I671", "TUBE", idtmed[274], dits, 3); // was I171 in old geom.
1315
1316      dits[0] = 0;
1317      dits[1] = 0.075;
1318      dits[2] = 0.8;
1319      gMC->Gsvolu("I669", "TUBE", idtmed[264], dits, 3); // was I169 in old geom.
1320
1321      dits[0] = 3.5;
1322      dits[1] = 5.6;
1323      dits[2] = 0.55;
1324      dits[3] = 0;
1325      dits[4] = 38;
1326      gMC->Gsvolu("I667", "TUBS", idtmed[263], dits, 5); // was I167 in old geom.
1327
1328      dits[0] = 6.6;
1329      dits[1] = 7.6;
1330      dits[2] = 0.5;
1331      dits[3] = 0;
1332      dits[4] = 9;
1333      gMC->Gsvolu("I666", "TUBS", idtmed[263], dits, 5); // was I166 in old geom.
1334
1335      dits[0] = 0.26;
1336      dits[1] = 0.32;
1337      dits[2] = 0.55;
1338      gMC->Gsvolu("I678", "TUBE", idtmed[263], dits, 3); // was I178 in old geom.
1339
1340      if (fluid == 1) {
1341         dits[0] = 0;
1342         dits[1] = 0.3;
1343         dits[2] = 1.5;
1344         gMC->Gsvolu("I677", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
1345                                                            // was I177 in old geom.
1346      } else {
1347          dits[0] = 0;
1348         dits[1] = 0.3;
1349         dits[2] = 1.5;
1350         gMC->Gsvolu("I677", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
1351                                                            // was I177 in old geom.    
1352      }
1353      
1354      dits[0] = 0.07;
1355      dits[1] = 0.125;
1356      dits[2] = 0.3;
1357      gMC->Gsvolu("I675", "TUBE", idtmed[263], dits, 3); // was I175 in old geom.
1358
1359      if (fluid == 1) {
1360         dits[0] = 0;
1361         dits[1] = 0.1;
1362         dits[2] = 0.8;
1363         gMC->Gsvolu("I674", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
1364                                                            // was I174 in old geom.
1365      } else {
1366         dits[0] = 0;
1367         dits[1] = 0.1;
1368         dits[2] = 0.8;
1369         gMC->Gsvolu("I674", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
1370                                                            // was I174 in old geom.     
1371      }
1372      
1373      if (fluid == 1) {
1374         dits[0] = 0;
1375         dits[1] = 0.1;
1376         dits[2] = 3;
1377         gMC->Gsvolu("I672", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
1378                                                            // was I172 in old geom.
1379      } else {
1380         dits[0] = 0;
1381         dits[1] = 0.1;
1382         dits[2] = 3;
1383         gMC->Gsvolu("I672", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
1384                                                            // was I172 in old geom.        
1385      }
1386      
1387      if (fluid == 1) {     
1388         dits[0] = 0;
1389         dits[1] = 0.0746;
1390         dits[2] = 0.8;
1391         gMC->Gsvolu("I670", "TUBE", idtmed[211], dits, 3); // set water as cooling fluid
1392                                                            // was I170 in old geom.
1393      } else {
1394         dits[0] = 0;
1395         dits[1] = 0.0746;
1396         dits[2] = 0.8;
1397         gMC->Gsvolu("I670", "TUBE", idtmed[212], dits, 3); // set freon as cooling fluid
1398                                                            // was I170 in old geom.     
1399      }
1400      
1401      if (fluid == 1) {     
1402         dits[0] = 3.7;
1403         dits[1] = 5.4;
1404         dits[2] = 0.35;
1405         dits[3] = 2;
1406         dits[4] = 36;
1407         gMC->Gsvolu("I668", "TUBS", idtmed[211], dits, 5); // set water as cooling fluid
1408                                                            // was I168 in old geom.
1409      } else {
1410         dits[0] = 3.7;
1411         dits[1] = 5.4;
1412         dits[2] = 0.35;
1413         dits[3] = 2;
1414         dits[4] = 36;
1415         gMC->Gsvolu("I668", "TUBS", idtmed[212], dits, 5); // set freon as cooling fluid
1416                                                            // was I168 in old geom.
1417      }
1418
1419
1420   }
1421
1422   // --- Define SPD (option 'b') volumes ----------------------------
1423   
1424   // SPD - option 'b' 
1425   // (this is the default)
1426
1427   if (option == 2) {
1428   
1429      dits[0] = 3.7;
1430      dits[1] = 7.75;
1431      dits[2] = 26.1;
1432      gMC->Gsvolu("IT12", "TUBE", idtmed[254], dits, 3);   
1433
1434      dits[0] = 3.7;
1435      dits[1] = 7.7;
1436      dits[2] = 24;
1437      dits[3] = 57;
1438      dits[4] = 100;
1439      gMC->Gsvolu("I12B", "TUBS", idtmed[254], dits, 5);   // sector
1440
1441      di10b[0] = 0.843;
1442      di10b[1] = ddet1+dchip1+dbus+0.0025;  
1443      di10b[2] = 19.344;
1444      gMC->Gsvolu("I10B", "BOX ", idtmed[254], di10b, 3);   // mother volume 
1445                                                                 // on layer 1
1446
1447      di20b[0] = 0.843;
1448      di20b[1] = ddet2+dchip2+dbus+0.0025;   
1449      di20b[2] = 19.344;
1450      gMC->Gsvolu("I20B", "BOX ", idtmed[254], di20b, 3);   // mother volume
1451                                                                 // layer 2
1452
1453      dits[0] = 1.3673;
1454      dits[1] = 0.01;
1455      dits[2] = 24;
1456      gMC->Gsvolu("I123", "BOX ", idtmed[253], dits, 3);
1457
1458      dits[0] = 0.06;
1459      dits[1] = 0.08;
1460      dits[2] = 24;
1461      dits[3] = -36.79;
1462      dits[4] = 21.834;
1463      gMC->Gsvolu("I121", "TUBS", idtmed[253], dits, 5);  
1464
1465      dits[0] = 0.1253;
1466      dits[1] = 0.01;
1467      dits[2] = 24;
1468      gMC->Gsvolu("I122", "BOX ", idtmed[253], dits, 3);  
1469
1470      dits[0] = 0.04;
1471      dits[1] = 0.06 ;
1472      dits[2] = 24;
1473      dits[3] = 126.79;
1474      dits[4] = 270;
1475      gMC->Gsvolu("I120", "TUBS", idtmed[253], dits, 5);  
1476
1477      dits[0] = 0.1134;
1478      dits[1] = 0.01;
1479      dits[2] = 24;
1480      gMC->Gsvolu("I144", "BOX ", idtmed[253], dits, 3);  
1481
1482      dits[0] = 0.25;
1483      dits[1] = 0.06;
1484      dits[2] = 24;
1485      gMC->Gsvolu("I113", "BOX ", idtmed[254], dits, 3);  
1486
1487      dits[0] = 0.077;
1488      dits[1] = 0.01;
1489      dits[2] = 24;
1490      gMC->Gsvolu("I143", "BOX ", idtmed[253], dits, 3);   
1491
1492      dits[0] = 0.04;
1493      dits[1] = 0.06;
1494      dits[2] = 24;
1495      dits[3] = 0;
1496      dits[4] = 90;
1497      gMC->Gsvolu("I142", "TUBS", idtmed[253], dits, 5); 
1498
1499      dits[0] = 0.0695;
1500      dits[1] = 0.01;
1501      dits[2] = 24;
1502      gMC->Gsvolu("I141", "BOX ", idtmed[253], dits, 3);  
1503
1504      dits[0] = 0.06;
1505      dits[1] = 0.08;
1506      dits[2] = 24;
1507      dits[3] = 0;
1508      dits[4] = 108;
1509      gMC->Gsvolu("I140", "TUBS", idtmed[253], dits, 5);  
1510
1511      dits[0] = 0.1835;
1512      dits[1] = 0.01;
1513      dits[2] = 24;
1514      gMC->Gsvolu("I139", "BOX ", idtmed[253], dits, 3);
1515
1516      dits[0] = 0.1894 ;
1517      dits[1] = 0.01;
1518      dits[2] = 24;
1519      gMC->Gsvolu("I138", "BOX ", idtmed[253], dits, 3);  
1520
1521      dits[0] = 0.04;
1522      dits[1] = 0.06;
1523      dits[2] = 24;
1524      dits[3] = 0;
1525      dits[4] = 75.261;
1526      gMC->Gsvolu("I137", "TUBS", idtmed[253], dits, 5);  
1527
1528      dits[0] = 1.3401;
1529      dits[1] = 0.01;
1530      dits[2] = 24;
1531      gMC->Gsvolu("I136", "BOX ", idtmed[253], dits, 3);  
1532
1533      dits[0] = 0.05;
1534      dits[1] = 0.07;
1535      dits[2] = 24;
1536      dits[3] = 0;
1537      dits[4] = 72.739;
1538      gMC->Gsvolu("I135", "TUBS", idtmed[253], dits, 5);  
1539
1540      dits[0] = 0.1193;
1541      dits[1] = 0.01;
1542      dits[2] = 24;
1543      gMC->Gsvolu("I134", "BOX ", idtmed[253], dits, 3);    
1544
1545      dits[0] = 0.163;
1546      dits[1] = 0.01;
1547      dits[2] = 24;
1548      gMC->Gsvolu("I133", "BOX ", idtmed[253], dits, 3);   
1549
1550      dits[0] = 0.04;
1551      dits[1] = 0.06;
1552      dits[2] = 24;
1553      dits[3] = 0;
1554      dits[4] = 157.633;
1555      gMC->Gsvolu("I132", "TUBS", idtmed[253], dits, 5); 
1556
1557      dits[0] = 0.2497;
1558      dits[1] = 0.01;
1559      dits[2] = 24;
1560      gMC->Gsvolu("I131", "BOX ", idtmed[253], dits, 3); 
1561
1562      dits[0] = 0.06;
1563      dits[1] = 0.08;
1564      dits[2] = 24;
1565      dits[3] = 0;
1566      dits[4] = 148.633;
1567      gMC->Gsvolu("I130", "TUBS", idtmed[253], dits, 5); 
1568
1569      dits[0] = 0.292;
1570      dits[1] = 0.01;
1571      dits[2] = 24;
1572      gMC->Gsvolu("I129", "BOX ", idtmed[253], dits, 3);  
1573
1574      dits[0] = 0.163;
1575      dits[1] = 0.01;
1576      dits[2] = 24;
1577      gMC->Gsvolu("I128", "BOX ", idtmed[253], dits, 3);  
1578
1579      dits[0] = 0.04;
1580      dits[1] = 0.06;
1581      dits[2] = 24;
1582      dits[3] = 0;
1583      dits[4] = 161.297;
1584      gMC->Gsvolu("I126", "TUBS", idtmed[253], dits, 5);
1585
1586      dits[0] = 0.2433;
1587      dits[1] = 0.01;
1588      dits[2] = 24;
1589      gMC->Gsvolu("I125", "BOX ", idtmed[253], dits, 3);  
1590
1591      dits[0] = 0.06;
1592      dits[1] = 0.08;
1593      dits[2] = 24;
1594      dits[3] = 0;
1595      dits[4] = 42.883;
1596      gMC->Gsvolu("I124", "TUBS", idtmed[253], dits, 5);  
1597
1598      dits[0] = 0.793;
1599      dits[1] = 0.475 ;  //0.685; 0.015
1600      dits[2] = 2.5;
1601      gMC->Gsvolu("I105", "BOX ", idtmed[290], dits, 3);  
1602
1603      di107[0] = 0.793;
1604      di107[1] = ddet1+dchip1;
1605      di107[2] = 3.536;
1606      gMC->Gsvolu("I107", "BOX ", idtmed[254], di107, 3); // contains det and chip   
1607                                                          // layer 1
1608      dits[0] = 0.705;
1609      dits[1] = 0.01;
1610      dits[2] = 2.5;
1611      gMC->Gsvolu("I109", "BOX ", idtmed[275], dits, 3);  
1612
1613      di108[0] = 0.705;
1614      di108[1] = dbus;
1615      di108[2] = 14.344;
1616      gMC->Gsvolu("I108", "BOX ", idtmed[275], di108, 3); // bus for both layers 
1617
1618      di1d7[0] = 0.7975;
1619      di1d7[1] = ddet2+dchip2;   
1620      di1d7[2] = 3.536;
1621      gMC->Gsvolu("I1D7", "BOX ", idtmed[254], di1d7, 3); // contains det and chip
1622                                                          // layer 2
1623      dits[0] = 0.06;
1624      dits[1] = 0.08;
1625      dits[2] = 24;
1626      dits[3] = 0;
1627      dits[4] = 80;
1628      gMC->Gsvolu("I112", "TUBS", idtmed[253], dits, 5);  
1629
1630      dits[0] = 0.04;
1631      dits[1] = 0.06;
1632      dits[2] = 24;
1633      dits[3] = 0;
1634      dits[4] = 80;
1635      gMC->Gsvolu("I111", "TUBS", idtmed[253], dits, 5);  
1636
1637      dits[0] = 0.15;
1638      dits[1] = 0.0146;
1639      dits[2] = 24;
1640      gMC->Gsvolu("I118", "BOX ", idtmed[273], dits, 3);  
1641
1642      dits[0] = 0.1315;
1643      dits[1] = 0.01;
1644      dits[2] = 24;
1645      gMC->Gsvolu("I110", "BOX ", idtmed[253], dits, 3);  
1646
1647      dits[0] = 0.025;
1648      dits[1] = 0.035;
1649      dits[2] = 24;
1650      dits[3] = 0;
1651      dits[4] = 180;
1652      gMC->Gsvolu("I114", "TUBS", idtmed[264], dits, 5);  
1653
1654      if (fluid == 1) {
1655         dits[0] = 0;
1656         dits[1] = 0.025;
1657         dits[2] = 24;
1658         dits[3] = 0;
1659         dits[4] = 180;
1660         gMC->Gsvolu("I115", "TUBS", idtmed[211], dits, 5);  // set water as cooling fluid   
1661      } else {
1662         dits[0] = 0;
1663         dits[1] = 0.025;
1664         dits[2] = 24;
1665         dits[3] = 0;
1666         dits[4] = 180;
1667         gMC->Gsvolu("I115", "TUBS", idtmed[212], dits, 5);  // set freon as cooling fluid
1668      }
1669      
1670      dits[0] = 0.063;
1671      dits[1] = 0.035;
1672      dits[2] = 24;
1673      gMC->Gsvolu("I116", "BOX ", idtmed[264], dits, 3); 
1674
1675      di106[0] = 0.7975;
1676      di106[1] = dchip1;   
1677      di106[2] = 0.68;
1678      gMC->Gsvolu("I106", "BOX ", idtmed[201], di106, 3);   // chip layer 1
1679
1680      di1d6[0] = 0.7975;
1681      di1d6[1] = dchip2;   
1682      di1d6[2] = 0.68;
1683      gMC->Gsvolu("I1D6", "BOX ", idtmed[201], di1d6, 3);   // chip layer 2
1684
1685      di101[0] = 0.705;
1686      di101[1] = ddet1;
1687      di101[2] = 3.536;
1688      gMC->Gsvolu("I101", "BOX ", idtmed[250], di101, 3);  // contains detector  
1689                                                           // layer 1
1690      di1d1[0] = 0.705;
1691      di1d1[1] = ddet2;   
1692      di1d1[2] = 3.536;
1693      gMC->Gsvolu("I1D1", "BOX ", idtmed[250], di1d1, 3);  // contains detector  
1694                                                           // layer 2
1695    
1696      if (fluid == 1) {
1697         dits[0] = 0.063;
1698         dits[1] = 0.025;
1699         dits[2] = 24;
1700         gMC->Gsvolu("I117", "BOX ", idtmed[211], dits, 3); // set water as cooling fluid
1701      } else {
1702         dits[0] = 0.063;
1703         dits[1] = 0.025;
1704         dits[2] = 24;
1705         gMC->Gsvolu("I117", "BOX ", idtmed[212], dits, 3); // set freon as cooling fluid
1706      }
1707
1708      dits1[0] = 0.64;
1709      dits1[1] = ddet1;
1710      dits1[2] = 3.48;
1711      gMC->Gsvolu("ITS1", "BOX ", idtmed[200], dits1, 3);   // detector layer 1
1712
1713      dits2[0] = 0.64;
1714      dits2[1] = ddet2;  
1715      dits2[2] = 3.48;
1716      gMC->Gsvolu("ITS2", "BOX ", idtmed[200], dits2, 3);   // detector layer 2
1717
1718      dits[0] = 3.701;
1719      dits[1] = 7.699;
1720      dits[2] = 4;
1721      dits[3] = 57.1;
1722      dits[4] = 99.9;  
1723      gMC->Gsvolu("I650", "TUBS", idtmed[254], dits, 5);  // was I150 in old geom.
1724
1725      dits[0] = 3.7;
1726      dits[1] = 7.75;
1727      dits[2] = 0.05;
1728      gMC->Gsvolu("I651", "TUBE", idtmed[296], dits, 3);  // services disk
1729  
1730      dits[0] = 0;
1731      dits[1] = 0.5;
1732      dits[2] = 1.5;
1733      gMC->Gsvolu("I676", "TUBE", idtmed[274], dits, 3); // was I176 in old geom.
1734
1735      dits[0] = 0;
1736      dits[1] = 0.18;
1737      dits[2] = 0.8;
1738      gMC->Gsvolu("I673", "TUBE", idtmed[274], dits, 3); // was I173 in old geom.
1739
1740      dits[0] = 0;
1741      dits[1] = 0.18;
1742      dits[2] = 3;
1743      gMC->Gsvolu("I671", "TUBE", idtmed[274], dits, 3); // was I171 in old geom.
1744
1745      dits[0] = 0;
1746      dits[1] = 0.075;
1747      dits[2] = 0.8;
1748      gMC->Gsvolu("I669", "TUBE", idtmed[264], dits, 3); // was I169 in old geom.
1749
1750      dits[0] = 3.5;
1751      dits[1] = 5.6;
1752      dits[2] = 0.55;
1753      dits[3] = 0;
1754      dits[4] = 38;
1755      gMC->Gsvolu("I667", "TUBS", idtmed[263], dits, 5); // was I167 in old geom.
1756
1757      dits[0] = 6.6;
1758      dits[1] = 7.6;
1759      dits[2] = 0.5;
1760      dits[3] = 0;
1761      dits[4] = 9;
1762      gMC->Gsvolu("I666", "TUBS", idtmed[263], dits, 5); // was I166 in old geom.
1763
1764      dits[0] = 0.26;
1765      dits[1] = 0.32;
1766      dits[2] = 0.55;
1767      gMC->Gsvolu("I678", "TUBE", idtmed[263], dits, 3); // was I178 in old geom.
1768
1769      if (fluid == 1) {
1770         dits[0] = 0;
1771         dits[1] = 0.3;
1772         dits[2] = 1.5;
1773         gMC->Gsvolu("I677", "TUBE", idtmed[211], dits, 3); //set water as cooling fluid
1774                                                            // was I177 in old geom.
1775      } else {
1776         dits[0] = 0;
1777         dits[1] = 0.3;
1778         dits[2] = 1.5;
1779         gMC->Gsvolu("I677", "TUBE", idtmed[212], dits, 3); //set freon as cooling fluid
1780                                                            // was I177 in old geom.     
1781      }
1782
1783      dits[0] = 0.07;
1784      dits[1] = 0.125;
1785      dits[2] = 0.3;
1786      gMC->Gsvolu("I675", "TUBE", idtmed[263], dits, 3); // was I175 in old geom.
1787
1788      if (fluid == 1) {
1789         dits[0] = 0;
1790         dits[1] = 0.1;
1791         dits[2] = 0.8;
1792         gMC->Gsvolu("I674", "TUBE", idtmed[211], dits, 3); //set water as cooling fluid
1793                                                            // was I174 in old geom.
1794      } else {
1795         dits[0] = 0;
1796         dits[1] = 0.1;
1797         dits[2] = 0.8;
1798         gMC->Gsvolu("I674", "TUBE", idtmed[212], dits, 3); //set freon as cooling fluid
1799                                                            // was I174 in old geom.     
1800      }
1801      
1802      if (fluid == 1) {
1803         dits[0] = 0;
1804         dits[1] = 0.1;
1805         dits[2] = 3;
1806         gMC->Gsvolu("I672", "TUBE", idtmed[211], dits, 3); //set water as cooling fluid
1807                                                            // was I172 in old geom.
1808      } else {
1809         dits[0] = 0;
1810         dits[1] = 0.1;
1811         dits[2] = 3;
1812         gMC->Gsvolu("I672", "TUBE", idtmed[212], dits, 3); //set freon as cooling fluid
1813                                                            // was I172 in old geom.     
1814      }
1815      
1816      if (fluid == 1) {
1817         dits[0] = 0;
1818         dits[1] = 0.0746;
1819         dits[2] = 0.8;
1820         gMC->Gsvolu("I670", "TUBE", idtmed[211], dits, 3); //set water as cooling fluid
1821                                                            // was I170 in old geom.
1822      } else {
1823         dits[0] = 0;
1824         dits[1] = 0.0746;
1825         dits[2] = 0.8;
1826         gMC->Gsvolu("I670", "TUBE", idtmed[212], dits, 3); //set freon as cooling fluid
1827                                                            // was I170 in old geom.     
1828      }
1829      
1830      if (fluid == 1) {
1831         dits[0] = 3.7;
1832         dits[1] = 5.4;
1833         dits[2] = 0.35;
1834         dits[3] = 2;
1835         dits[4] = 36;
1836         gMC->Gsvolu("I668", "TUBS", idtmed[211], dits, 5); //set water as cooling fluid
1837                                                            // was I168 in old geom.
1838      } else {
1839         dits[0] = 3.7;
1840         dits[1] = 5.4;
1841         dits[2] = 0.35;
1842         dits[3] = 2;
1843         dits[4] = 36;
1844         gMC->Gsvolu("I668", "TUBS", idtmed[212], dits, 5); //set freon as cooling fluid
1845                                                            // was I168 in old geom.     
1846      }
1847      
1848
1849   }
1850
1851   // --- Define SDD volumes ------------------------------------------
1852
1853   
1854   cos30 = cos(30.*3.14159/180.);
1855   sin30 = sin(30.*3.14159/180.);
1856
1857   
1858   dits[0] = 0;
1859   dits[1] = 360;
1860   dits[2] = 6;
1861   dits[3] = -34.6; 
1862   dits[4] = 23.49;
1863   dits[5] = 28;
1864   dits[6] = -23.65; 
1865   dits[7] = 23.49;
1866   dits[8] = 28;
1867   dits[9] = -23.65;  
1868   dits[10] = 14.59; 
1869   dits[11] = 28;
1870   dits[12] = 23.65;   
1871   dits[13] = 14.59;
1872   dits[14] = 28;
1873   dits[15] = 23.65;    
1874   dits[16] = 23.49;
1875   dits[17] = 28;
1876   dits[18] = 34.6;  
1877   dits[19] = 23.49;
1878   dits[20] = 28;
1879   gMC->Gsvolu("IT34", "PCON", idtmed[209], dits, 21);  
1880
1881   // block of the SDD electronics and related ladder frame 
1882   I018dits[0] = 3.2;
1883   I018dits[1] = 2;
1884   I018dits[2] = 3.65;
1885   gMC->Gsvolu("I018", "BOX ", idtmed[209], I018dits, 3);  
1886
1887   // block of the SDD end ladder 
1888   I024dits[0] = 3.2;
1889   I024dits[1] = 2;
1890   I024dits[2] = 2.725;
1891   gMC->Gsvolu("I024", "BOX ", idtmed[209], I024dits, 3);  
1892
1893   // ladder frame of layer 3 - F.T. March,7-2001
1894   I047dits[0] = I018dits[0];
1895   I047dits[1] = I018dits[1];
1896   I047dits[2] = 6*I018dits[2] + 2*I024dits[2]; 
1897   gMC->Gsvolu("I047", "BOX ", idtmed[209], I047dits, 3);  
1898
1899   // ladder frame of layer 4 - F.T. March,7-2001
1900   I048dits[0] = I018dits[0];
1901   I048dits[1] = I018dits[1];
1902   I048dits[2] = 8*I018dits[2] + 2*I024dits[2]; 
1903   gMC->Gsvolu("I048", "BOX ", idtmed[209], I048dits, 3);  
1904
1905
1906   // global SDD volume (sensitive + insensitive) 
1907   I302dits[0] = 3.6250;
1908   I302dits[1] = 0.0150;
1909   I302dits[2] = 4.3794;
1910   gMC->Gsvolu("I302", "BOX ", idtmed[278], I302dits, 3);
1911
1912   // Like for I302 - F.T. March,7-2001
1913   I402dits[0] = 3.6250;
1914   I402dits[1] = 0.0150;
1915   I402dits[2] = 4.3794;
1916   gMC->Gsvolu("I402", "BOX ", idtmed[278], I402dits, 3);  
1917
1918   // SDD ladder of layer 3 - F.T. March,7-2001
1919   I004dits[0] = I302dits[0]+0.005;
1920   I004dits[1] = 2*I302dits[1]+Y_SDD_sep/2.;
1921   I004dits[2] = TMath::Abs(Z_SDD_lay3[0]);
1922   if (I004dits[2] < TMath::Abs(Z_SDD_lay3[5])) {
1923     I004dits[2] = TMath::Abs(Z_SDD_lay3[5]);
1924   }
1925   I004dits[2] = I004dits[2] + I302dits[2];
1926   gMC->Gsvolu("I004", "BOX ", idtmed[209], I004dits, 3);  
1927
1928   // SDD ladder of layer 4 - F.T. March,7-2001
1929   I005dits[0] = I402dits[0]+0.005;
1930   I005dits[1] = 2*I402dits[1]+Y_SDD_sep/2.;
1931   I005dits[2] = TMath::Abs(Z_SDD_lay4[0]);
1932   if (I005dits[2] < TMath::Abs(Z_SDD_lay4[7])) {
1933     I005dits[2] = TMath::Abs(Z_SDD_lay4[7]);
1934   }
1935   I005dits[2] = I005dits[2] + I402dits[2];
1936   gMC->Gsvolu("I005", "BOX ", idtmed[209], I005dits, 3);  
1937
1938
1939   // -- block of the SDD ladder foot and end ladder
1940
1941   // ladder foot mother volume
1942   I028dits[0] = 3.0000;
1943   I028dits[1] = 0.4000;
1944   I028dits[2] = 0.9000;
1945   gMC->Gsvolu("I028", "BOX ", idtmed[224], I028dits, 3);  
1946
1947   // positioning-box #1 at SDD end-ladder - F.T. March,7-2001
1948   I420dits[0] = 0.4500;
1949   I420dits[1] = 0.4000;
1950   I420dits[2] = 0.4500;
1951   gMC->Gsvolu("I420", "BOX ", idtmed[264], I420dits, 3);  
1952
1953   // positioning-box #2 at SDD end-ladder - F.T. March,7-2001
1954   I421dits[0] = 0.;
1955   I421dits[1] = 0.25;
1956   I421dits[2] = I420dits[1];
1957   gMC->Gsvolu("I421", "TUBE", idtmed[209], I421dits, 3);  
1958
1959   // reference ruby-sphere at SDD end-ladder - F.T. March,7-2001 
1960   I422dits[0] = 0.0000;
1961   I422dits[1] = 0.2000;
1962   I422dits[2] = 0.0000;
1963   I422dits[3] = 180.00;
1964   I422dits[4] = 0.0000;
1965   I422dits[5] = 360.00;
1966   gMC->Gsvolu("I422", "SPHE", idtmed[277], I422dits, 6);  
1967
1968   // support for ruby-sphere (I422) - F.T. March,7-2001
1969   I423dits[0] = 0.0000;
1970   I423dits[1] = 0.1000;
1971   I423dits[2] = (I420dits[1]-I422dits[1])/2.;
1972   gMC->Gsvolu("I423", "TUBE", idtmed[264], I423dits, 3);  
1973
1974   // passage for HV microcables - F.T. March,7-2001
1975   I424dits[0] = 1.5000;
1976   I424dits[1] = 0.1500;
1977   I424dits[2] = I421dits[2];
1978   gMC->Gsvolu("I424", "BOX ", idtmed[209], I424dits, 3);  
1979
1980   // HV microcables segment at the end ladder - F.T. March,7-2001
1981   I425dits[0] = 1.350000;
1982   I425dits[1] = 0.015250;
1983   I425dits[2] = I024dits[2];
1984   gMC->Gsvolu("I425", "BOX ", idtmed[279], I425dits, 3);  
1985
1986   // lower edge of SDD ladder frame at end-ladder - part 1
1987   dits[0] = 0.2;
1988   dits[1] = 0.1815;
1989   dits[2] = I024dits[2];
1990   dits[3] = 0.015;
1991   gMC->Gsvolu("I025", "TRD1", idtmed[208], dits, 4);  
1992
1993   // lower edge of SDD ladder frame at end-ladder - part 2
1994   dits[0] = 0.183;
1995   dits[1] = 0.165;
1996   dits[2] = I024dits[2];
1997   dits[3] = 0.015;
1998   gMC->Gsvolu("I026", "TRD1", idtmed[208], dits, 4);  
1999
2000   // new: for the 1st top rod of the structure 
2001   // at the end-ladder - F.T. March,7-2001
2002   I029dits[0] = 0.2;
2003   I029dits[1] = 0.1815;
2004   I029dits[2] = 1.0100;
2005   I029dits[3] = 0.015;
2006   gMC->Gsvolu("I029", "TRD1", idtmed[208], I029dits, 4);  
2007
2008   // new: for the 2nd top rod of the structure 
2009   // at the end-ladder - F.T. March,7-2001
2010   I030dits[0] = 0.1830;
2011   I030dits[1] = 0.1650;
2012   I030dits[2] = 1.0100;
2013   I030dits[3] = 0.0150;
2014   gMC->Gsvolu("I030", "TRD1", idtmed[208], I030dits, 4);  
2015
2016   // inox cooling tubes for the end ladder - F.T. March,7-2001
2017   I031dits[0] = 0.093;
2018   I031dits[1] = 0.1;
2019   I031dits[2] = I024dits[2];
2020   gMC->Gsvolu("I031", "TUBE", idtmed[264], I031dits, 3);  
2021
2022   if (fluid == 1) {
2023      // cooling water for the end ladder - F.T. March,7-2001
2024      I032dits[0] = 0;
2025      I032dits[1] = I031dits[0];
2026      I032dits[2] = I024dits[2];
2027      gMC->Gsvolu("I032", "TUBE", idtmed[211], I032dits, 3);  
2028   } else {
2029      // cooling freon for the end ladder - R.B. March,21-2001
2030      I032dits[0] = 0;
2031      I032dits[1] = I031dits[0];
2032      I032dits[2] = I024dits[2];
2033      gMC->Gsvolu("I032", "TUBE", idtmed[212], I032dits, 3);    
2034   }
2035   
2036   // -- block of the SDD ladder frame holding the electronics
2037
2038   // edge of the ladder frame - part 1
2039   dits[0] = 0.2;
2040   dits[1] = 0.182;
2041   dits[2] = 3.65;
2042   dits[3] = 0.015;
2043   gMC->Gsvolu("I019", "TRD1", idtmed[208], dits, 4);  
2044
2045   // edge of the ladder frame - part 2
2046   dits[0] = 0.183;
2047   dits[1] = 0.165;
2048   dits[2] = 3.65;
2049   dits[3] = 0.015;
2050   gMC->Gsvolu("I020", "TRD1", idtmed[208], dits, 4);  
2051
2052   // inclined segments of the ladder frame
2053   dits[0] = 2.23;
2054   dits[1] = 2.1;
2055   dits[2] = 0.05;
2056   dits[3] = 0.03;
2057   gMC->Gsvolu("I021", "TRD1", idtmed[208], dits, 4);  
2058
2059   // horiz.segments of the ladders, normal to ladder edges
2060   dits[0] = 2.1;
2061   dits[1] = 2;
2062   dits[2] = 0.06;
2063   dits[3] = 0.04;
2064   gMC->Gsvolu("I022", "TRD1", idtmed[208], dits, 4);  
2065
2066   // horiz.segments of the ladders, at 45 deg. to ladder edges
2067   dits[0] = 2.615;
2068   dits[1] = 2.465;
2069   dits[2] = 0.06;
2070   dits[3] = 0.04;
2071   gMC->Gsvolu("I023", "TRD1", idtmed[208], dits, 4);  
2072
2073   // supports of the ceramic pins holding the detectors
2074   dits[0] = 0.3;
2075   dits[1] = 0.05;
2076   dits[2] = 0.15;
2077   gMC->Gsvolu("I033", "BOX ", idtmed[208], dits, 3);  
2078
2079   // ceramic pins holding the detectors
2080   dits[0] = 0;
2081   dits[1] = 0.05;
2082   dits[2] = 0.225;
2083   gMC->Gsvolu("I034", "TUBE", idtmed[277], dits, 3);  
2084
2085   // holders of cooling tubes
2086   I035dits[0] = 0.1;
2087   I035dits[1] = 0.15;
2088   I035dits[2] = 0.2;
2089   gMC->Gsvolu("I035", "TUBE", idtmed[208], I035dits, 3);
2090
2091   // top holders of microcables
2092   dits[0] = 0.2;
2093   dits[1] = 0.01;
2094   dits[2] = 0.05;
2095   gMC->Gsvolu("I036", "BOX ", idtmed[208], dits, 3);  
2096
2097   // inox cooling tubes - F.T. March,7-2001
2098   I037dits[0] = 0.093;
2099   I037dits[1] = 0.1;
2100   I037dits[2] = I018dits[2];
2101   gMC->Gsvolu("I037", "TUBE", idtmed[264], I037dits, 3);
2102
2103   if (fluid == 1) {
2104      // cooling water - F.T. March,7-2001
2105      I038dits[0] = 0;
2106      I038dits[1] = I037dits[0];
2107      I038dits[2] = I018dits[2];
2108      gMC->Gsvolu("I038", "TUBE", idtmed[211], I038dits, 3);  
2109   } else {
2110      // cooling freon - R.B. March,21-2001
2111      I038dits[0] = 0;
2112      I038dits[1] = I037dits[0];
2113      I038dits[2] = I018dits[2];
2114      gMC->Gsvolu("I038", "TUBE", idtmed[212], I038dits, 3);    
2115   }
2116   // -- block of the SDD electronics (heat bridge, chips, hybrid, anode microcable)
2117
2118   // SDD heat bridge - F.T. March,7-2001
2119   I039dits[0] = 1.1000;
2120   I039dits[1] = 0.0087;
2121   I039dits[2] = 3.2500;
2122   gMC->Gsvolu("I039", "BOX ", idtmed[268], I039dits, 3);  
2123
2124   // SDD clip part 1
2125   dits[0] = 0.25;
2126   dits[1] = 0.01;
2127   dits[2] = I039dits[2];
2128   gMC->Gsvolu("I040", "BOX ", idtmed[268], dits, 3);  
2129
2130   // SDD clip part 2
2131   I041dits[0] = 0.1;
2132   I041dits[1] = 0.12;
2133   I041dits[2] = I039dits[2];
2134   I041dits[3] = 90;
2135   I041dits[4] = 320;
2136   gMC->Gsvolu("I041", "TUBS", idtmed[268], I041dits, 5);  
2137
2138
2139   // SDD PASCAL - F.T. March,7-2001
2140   I042dits[0] = 0.5000;
2141   I042dits[1] = 0.0175;
2142   I042dits[2] = 0.5000;
2143   gMC->Gsvolu("I042", "BOX ", idtmed[206], I042dits, 3);  
2144
2145   // SDD AMBRA - F.T. March,7-2001
2146   I043dits[0] = 0.3500;
2147   I043dits[1] = 0.0175;
2148   I043dits[2] = 0.5000;
2149   gMC->Gsvolu("I043", "BOX ", idtmed[206], I043dits, 3);  
2150
2151   // SDD capacitors - F.T. March,7-2001
2152   I051dits[0] = 0.1400;
2153   I051dits[1] = 0.0350;
2154   I051dits[2] = 0.0625;
2155   gMC->Gsvolu("I051", "BOX ", idtmed[276], I051dits, 3);  
2156
2157   // SDD hybrid circuit - F.T. March,7-2001
2158   I052dits[0] = 1.725000;
2159   I052dits[1] = 0.003743;
2160   I052dits[2] = I039dits[2];
2161   gMC->Gsvolu("I052", "BOX ", idtmed[281], I052dits, 3);
2162
2163   // SDD anode microcable : changed - F.T. March,7-2001
2164   I044dits[0] = I018dits[2];
2165   I044dits[1] = I039dits[2];
2166   I044dits[2] = 0.00084;
2167   I044dits[3] = (15.189149/(I044dits[0]+I044dits[1]))/2;
2168   gMC->Gsvolu("I044", "TRD1", idtmed[282], I044dits, 4);  
2169   volI044 = ((2*I044dits[0] + 2*I044dits[1]) * 2*I044dits[2])/2 * 2*I044dits[3];
2170
2171   // SDD electronics box - F.T. March,7-2001
2172   I050dits[1] = I039dits[1]+I052dits[1]+I051dits[1]+I044dits[2];
2173   I050dits[0] = I018dits[1]/cos(30.*3.14159/180.)-I050dits[1]*sin(30.*3.14159/180.);
2174   I050dits[2] = I018dits[2];
2175   gMC->Gsvolu("I050", "BOX ", idtmed[209], I050dits, 3);
2176
2177   // SDD sensitive volume
2178   dits[0] = 3.50850;
2179   dits[1] = 0.01499; // not 0.015 because it is included into I302 which is 0.015
2180   dits[2] = 3.76320;
2181   gMC->Gsvolu("ITS3", "BOX ", idtmed[200], dits, 3);  
2182
2183   // Like for ITS3 - F.T. March,7-2001
2184   dits[0] = 3.50850;
2185   dits[1] = 0.01499; // not 0.015 because it is included into I402 which is 0.015
2186   dits[2] = 3.76320;
2187   gMC->Gsvolu("ITS4", "BOX ", idtmed[200], dits, 3);  
2188
2189
2190   // --- Define SSD volumes ------------------------------------------
2191
2192     
2193   dits[0] = 0;
2194   dits[1] = 360;
2195   dits[2] = 6;
2196   dits[3] = -57.45;
2197   dits[4] = 43.6;
2198   dits[5] = 48;  
2199   dits[6] = -49.15; 
2200   dits[7] = 43.6;
2201   dits[8] = 48;  
2202   dits[9] = -49.15;  
2203   dits[10] = 36.9;
2204   dits[11] = 48;  
2205   dits[12] = 50.55;  
2206   dits[13] = 36.9;
2207   dits[14] = 48;  
2208   dits[15] = 50.55;  
2209   dits[16] = 43.6;
2210   dits[17] = 48;  
2211   dits[18] = 57.45;
2212   dits[19] = 43.6;
2213   dits[20] = 48;   
2214   gMC->Gsvolu("IT56", "PCON", idtmed[220], dits, 21);   
2215   
2216   dits[0] =  3.4;
2217   dits[1] = 1.955;
2218   dits[2] = 56.5; 
2219   gMC->Gsvolu("I570", "BOX ", idtmed[204], dits, 3);  
2220   
2221   dits[0] = 3.75;
2222   dits[1] = 0.045;
2223   dits[2] = 50.975;
2224   gMC->Gsvolu("I569", "BOX ", idtmed[204], dits, 3);  
2225   
2226   dits[0] = 3.4;
2227   dits[1] = 1.955;
2228   dits[2] = 47; 
2229   gMC->Gsvolu("I571", "BOX ", idtmed[204], dits, 3);  
2230   
2231   dits[0] = 3.75;
2232   dits[1] = 0.045;
2233   dits[2] = 43.3;  
2234   gMC->Gsvolu("I565", "BOX ", idtmed[204], dits, 3);  
2235   
2236   dits[0] = 3.4;
2237   dits[1] = 1.955;
2238   dits[2] = 3.15;
2239   gMC->Gsvolu("I553", "BOX ", idtmed[204], dits, 3);  
2240   
2241   dits[0] = 3.405;
2242   dits[1] = 1.955;
2243   dits[2] = 1.955;
2244   gMC->Gsvolu("I523", "BOX ", idtmed[204], dits, 3);  
2245   
2246   dits[0] = 3.75;
2247   dits[1] = 0.015;
2248   dits[2] = 2.1;
2249   gMC->Gsvolu("I566", "BOX ", idtmed[206], dits, 3); 
2250   
2251   dits[0] = 3.4;
2252   dits[1] = 1.955;
2253   dits[2] = 3.15;
2254   gMC->Gsvolu("I544", "BOX ", idtmed[204], dits, 3);  
2255   
2256   dits[0] = 3.41;
2257   dits[1] = 1.955;
2258   dits[2] = 1.955;
2259   gMC->Gsvolu("I516", "BOX ", idtmed[204], dits, 3);  
2260   
2261   dits[0] = 3.75;
2262   dits[1] = 0.015;
2263   dits[2] = 2.1;
2264   gMC->Gsvolu("I562", "BOX ", idtmed[206], dits, 3);   
2265   
2266   if (fluid == 1) {
2267      dits[0] = 0;
2268      dits[1] = 0.07;
2269      dits[2] = 3.15;
2270      gMC->Gsvolu("I559", "TUBE", idtmed[211], dits, 3);  // set water as cooling fluid
2271   } else {
2272      dits[0] = 0;
2273      dits[1] = 0.07;
2274      dits[2] = 3.15;
2275      gMC->Gsvolu("I559", "TUBE", idtmed[212], dits, 3);  // set freon as cooling fluid
2276   }
2277   
2278   dits[0] = 0.07;
2279   dits[1] = 0.1;
2280   dits[2] = 3.15;
2281   gMC->Gsvolu("I560", "TUBE", idtmed[210], dits, 3);  
2282   
2283   dits[0] = 0.225;
2284   dits[1] = 0.195;
2285   dits[2] = 3.15;
2286   dits[3] = 0.025;
2287   gMC->Gsvolu("I558", "TRD1", idtmed[203], dits, 4);  
2288   
2289   dits[0] = 0.25;
2290   dits[1] = 0.22;
2291   dits[2] = 3.15;
2292   dits[3] = 0.025;
2293   gMC->Gsvolu("I557", "TRD1", idtmed[203], dits, 4);  
2294   
2295   dits[0] = 2.17;
2296   dits[1] = 0.035;
2297   dits[2] = 0.05;
2298   gMC->Gsvolu("I556", "BOX ", idtmed[203], dits, 3);  
2299   
2300   dits[0] = 2 ;
2301   dits[1] = 0.035;
2302   dits[2] = 0.05;
2303   gMC->Gsvolu("I554", "BOX ", idtmed[203], dits, 3);  
2304   
2305   dits[0] = 2.675;
2306   dits[1] = 0.035;
2307   dits[2] = 0.05;
2308   gMC->Gsvolu("I555", "BOX ", idtmed[203], dits, 3); 
2309   
2310   dits[0] = 0.3;
2311   dits[1] = 0.15;
2312   dits[2] = 0.15;
2313   gMC->Gsvolu("I561", "BOX ", idtmed[203], dits, 3);  
2314   
2315   dits[0] = 0.025;
2316   dits[1] = 0.025;
2317   dits[2] = 0.05;
2318   gMC->Gsvolu("I519", "BOX ", idtmed[214], dits, 3);  
2319   
2320   dits[0] = 0.304;
2321   dits[1] = 0.0275;
2322   dits[2] = 0.432;
2323   gMC->Gsvolu("I521", "BOX ", idtmed[206], dits, 3);   
2324   
2325   dits[0] = 0.16;
2326   dits[1] = 0.08;
2327   dits[2] = 0.08;
2328   gMC->Gsvolu("I520", "BOX ", idtmed[214], dits, 3);  
2329   
2330   dits[0] = 3.4;
2331   dits[1] = 0.015;
2332   dits[2] = 0.525;
2333   gMC->Gsvolu("I518", "BOX ", idtmed[203], dits, 3);  
2334   
2335   dits[0] = 0.15;
2336   dits[1] = 0.105;
2337   dits[2] = 0.29;
2338   dits[3] = 0.08;
2339   gMC->Gsvolu("I522", "TRD1", idtmed[203], dits, 4);  
2340   
2341   dits[0] = 0.07;
2342   dits[1] = 0.1;
2343   dits[2] = 1.955;
2344   gMC->Gsvolu("I542", "TUBE", idtmed[210], dits, 3);  
2345   
2346   if (fluid == 1) {
2347      dits[0] = 0;
2348      dits[1] = 0.07;
2349      dits[2] = 1.955;
2350      gMC->Gsvolu("I541", "TUBE", idtmed[211], dits, 3);  // set water as cooling fluid 
2351   } else {
2352      dits[0] = 0;
2353      dits[1] = 0.07;
2354      dits[2] = 1.955;
2355      gMC->Gsvolu("I541", "TUBE", idtmed[212], dits, 3);  // set freon as cooling fluid
2356   }
2357   
2358   dits[0] = 0.3;
2359   dits[1] = 0.15;
2360   dits[2] = 0.15;
2361   gMC->Gsvolu("I543", "BOX ", idtmed[203], dits, 3);  
2362   
2363   dits[0] = 0.25;
2364   dits[1] = 0.22;
2365   dits[2] = 1.955;
2366   dits[3] = 0.025;
2367   gMC->Gsvolu("I537", "TRD1", idtmed[203], dits, 4); 
2368   
2369   dits[0] = 0.225;
2370   dits[1] = 0.195;
2371   dits[2] = 1.955;
2372   dits[4] = 0.025;
2373   gMC->Gsvolu("I538", "TRD1", idtmed[203], dits, 4);  
2374   
2375   dits[0] = 2.17;
2376   dits[1] = 0.035;
2377   dits[2] = 0.05;
2378   gMC->Gsvolu("I536", "BOX ", idtmed[203], dits, 3);  
2379   
2380   dits[0] = 2.675;
2381   dits[1] = 0.035;
2382   dits[2] = 0.05;
2383   gMC->Gsvolu("I535", "BOX ", idtmed[203], dits, 3);   
2384   
2385   dits[0] = 2;
2386   dits[1] = 0.035;
2387   dits[2] = 0.05;
2388   gMC->Gsvolu("I534", "BOX ", idtmed[203], dits, 3);  
2389   
2390   dits[0] = 0;
2391   dits[1] = 0.05;
2392   dits[2] = 0.17;
2393   gMC->Gsvolu("I540", "TUBE", idtmed[203], dits, 3);  
2394   
2395   dits[0] = 0;
2396   dits[1] = 0.05;
2397   dits[2] = 0.205;
2398   gMC->Gsvolu("I539", "TUBE", idtmed[203], dits, 3);  
2399   
2400   dits[0] = 3.65;
2401   dits[1] = 0.015;
2402   dits[2] = 2;
2403   gMC->Gsvolu("ITS6", "BOX ", idtmed[200], dits, 3);  
2404   
2405   if (fluid == 1) {
2406      dits[0] = 0;
2407      dits[1] = 0.07;
2408      dits[2] = 3.15;
2409      gMC->Gsvolu("I550", "TUBE", idtmed[211], dits, 3);  // set water as cooling fluid
2410   } else {
2411      dits[0] = 0;
2412      dits[1] = 0.07;
2413      dits[2] = 3.15;
2414      gMC->Gsvolu("I550", "TUBE", idtmed[212], dits, 3);  // set freon as cooling fluid
2415   }
2416   
2417   dits[0] = 0.07;
2418   dits[1] = 0.1;
2419   dits[2] = 3.15;
2420   gMC->Gsvolu("I551", "TUBE", idtmed[210], dits, 3);  
2421   
2422   dits[0] = 0.225;
2423   dits[1] = 0.195;
2424   dits[2] = 3.15;
2425   dits[3] = 0.025;
2426   gMC->Gsvolu("I549", "TRD1", idtmed[203], dits, 4); 
2427   
2428   dits[0] = 0.25;
2429   dits[1] = 0.22;
2430   dits[2] = 3.15;
2431   dits[3] = 0.025;
2432   gMC->Gsvolu("I548", "TRD1", idtmed[203], dits, 4);  
2433   
2434   dits[0] = 2.17;
2435   dits[1] = 0.035;
2436   dits[2] = 0.05;
2437   gMC->Gsvolu("I547", "BOX ", idtmed[203], dits, 3);  
2438   
2439   dits[0] = 2;
2440   dits[1] = 0.035;
2441   dits[2] = 0.05;
2442   gMC->Gsvolu("I545", "BOX ", idtmed[203], dits, 3);   
2443   
2444   dits[0] = 2.675;
2445   dits[1] = 0.035;
2446   dits[2] = 0.05;
2447   gMC->Gsvolu("I546", "BOX ", idtmed[203], dits, 3);  
2448   
2449   dits[0] = 0.3;
2450   dits[1] = 0.15;
2451   dits[2] = 0.15;
2452   gMC->Gsvolu("I552", "BOX ", idtmed[203], dits, 3);  
2453   
2454   dits[0] = 0.304;
2455   dits[1] = 0.0275;
2456   dits[2] = 0.4322;
2457   gMC->Gsvolu("I515", "BOX ", idtmed[206], dits, 3);  
2458   
2459   dits[0] = 0.025;
2460   dits[1] = 0.025;
2461   dits[2] = 0.05;
2462   gMC->Gsvolu("I513", "BOX ", idtmed[214], dits, 3);  
2463   
2464   dits[0] = 0.16;
2465   dits[1] = 0.08;
2466   dits[2] = 0.08;
2467   gMC->Gsvolu("I514", "BOX ", idtmed[214], dits, 3);  
2468   
2469   dits[0] = 3.4;
2470   dits[1] = 0.015;
2471   dits[2] = 0.525;
2472   gMC->Gsvolu("I512", "BOX ", idtmed[203], dits, 3);  
2473   
2474   dits[0] = 0.225;
2475   dits[1] = 0.195;
2476   dits[2] = 1.955;
2477   dits[3] = 0.025;
2478   gMC->Gsvolu("I528", "TRD1", idtmed[203], dits, 4); 
2479   
2480   dits[0] = 0.25;
2481   dits[1] = 0.22;
2482   dits[2] = 1.955;
2483   dits[3] = 0.025;
2484   gMC->Gsvolu("I527", "TRD1", idtmed[203], dits, 4);  
2485   
2486   dits[0] = 2.17;
2487   dits[1] = 0.035;
2488   dits[2] = 0.05;
2489   gMC->Gsvolu("I526", "BOX ", idtmed[203], dits, 3);  
2490   
2491   dits[0] = 2.675;
2492   dits[1] = 0.035;
2493   dits[2] = 0.05;
2494   gMC->Gsvolu("I525", "BOX ", idtmed[203], dits, 3);  
2495    
2496   dits[0] = 2;
2497   dits[1] = 0.035;
2498   dits[2] = 0.05;
2499   gMC->Gsvolu("I524", "BOX ", idtmed[203], dits, 3);  
2500    
2501   dits[0] = 0;
2502   dits[1] = 0.05;
2503   dits[2] = 0.205;
2504   gMC->Gsvolu("I529", "TUBE", idtmed[203], dits, 3);  
2505    
2506   dits[0] = 0;
2507   dits[1] = 0.05;
2508   dits[2] = 0.17;
2509   gMC->Gsvolu("I530", "TUBE", idtmed[203], dits, 3);  
2510    
2511   dits[0] = 0.15;
2512   dits[1] = 0.105;
2513   dits[2] = 0.29;
2514   dits[3] = 0.08;
2515   gMC->Gsvolu("I517", "TRD1", idtmed[203], dits, 4);  
2516   
2517   if (fluid == 1) {
2518      dits[0] = 0;
2519      dits[1] = 0.07;
2520      dits[2] = 1.955;
2521      gMC->Gsvolu("I531", "TUBE", idtmed[211], dits, 3);  // set water as cooling fluid
2522   } else {
2523      dits[0] = 0;
2524      dits[1] = 0.07;
2525      dits[2] = 1.955;
2526      gMC->Gsvolu("I531", "TUBE", idtmed[212], dits, 3);  // set freon as cooling fluid
2527   }
2528      
2529   dits[0] = 0.07;
2530   dits[1] = 0.1;
2531   dits[2] = 1.955;
2532   gMC->Gsvolu("I532", "TUBE", idtmed[210], dits, 3);  
2533  
2534   dits[0] = 0.3;
2535   dits[1] = 0.15;
2536   dits[2] = 0.15;
2537   gMC->Gsvolu("I533", "BOX ", idtmed[203], dits, 3);  
2538   
2539   dits[0] = 3.65;
2540   dits[1] = 0.015;
2541   dits[2] = 2;
2542   gMC->Gsvolu("ITS5", "BOX ", idtmed[200], dits, 3);  
2543
2544
2545
2546   // --- Define volumes of shield of SPD ----------------
2547
2548
2549   dits[0] = 8.37;
2550   dits[1] = 9.93;
2551   dits[2] = 25;
2552   gMC->Gsvolu("IC01", "TUBE", idtmed[289], dits, 3);   
2553
2554   dits[0] = 8.3;
2555   dits[1] = 9.995;
2556   dits[2] = 17.5/2.;
2557   gMC->Gsvolu("IC02", "TUBE", idtmed[289], dits, 3);    
2558   
2559  
2560   // --- Define volume of first cylinder between SPD and SDD --------------
2561   
2562   dits[0] = (21.-0.128)/2.;      
2563   dits[1] = 21./2.;
2564   dits[2] = 39.4;      
2565   gMC->Gsvolu("ICY1", "TUBE", idtmed[208], dits, 3);
2566          
2567   // --- Define volume of second cylinder between SDD and SSD --------------
2568
2569   dits[0] = (59.5-0.128)/2.;      
2570   dits[1] = 59.5/2.;
2571   dits[2] = 56.2;      // was 57
2572   gMC->Gsvolu("ICY2", "TUBE", idtmed[208], dits, 3);
2573
2574   // --- Define volumes of SDD cone ---------------------------------- 
2575
2576   dits[0] = 0;
2577   dits[1] = 360;
2578   dits[2] = 12;
2579   dits[3] = -59.7;
2580   dits[4] = 27;
2581   dits[5] = 28.6;
2582   dits[6] = -42.7;
2583   dits[7] = 10;
2584   dits[8] = 28.6;
2585   dits[9] = -34.65;
2586   dits[10] = 10;
2587   dits[11] = 28.6;
2588   dits[12] = -34.65;
2589   dits[13] = 10;
2590   dits[14] = 23.495;
2591   dits[15] = -23.7;
2592   dits[16] = 10;
2593   dits[17] = 23.495;
2594   dits[18] = -23.7;
2595   dits[19] = 10;
2596   dits[20] = 14.595;
2597   dits[21] = 23.7;
2598   dits[22] = 10;
2599   dits[23] = 14.595;
2600   dits[24] = 23.7;
2601   dits[25] = 10;
2602   dits[26] = 23.495;
2603   dits[27] = 34.65;
2604   dits[28] = 10;
2605   dits[29] = 23.495;
2606   dits[30] = 34.65;
2607   dits[31] = 10;
2608   dits[32] = 28.6;
2609   dits[33] = 42.7;
2610   dits[34] = 10;
2611   dits[35] = 28.6;
2612   dits[36] = 59.7;
2613   dits[37] = 27.2637;
2614   dits[38] = 28.6;             
2615   gMC->Gsvolu("IS02", "PCON", idtmed[204], dits, 39);
2616   
2617   dits[0] = 0;
2618   dits[1] = 360;
2619   dits[2] = 6;
2620   dits[3] = 38.65;
2621   dits[4] = 10.75;    
2622   dits[5] = 12.25;      
2623   dits[6] = 40.15;
2624   dits[7] = 10.75;
2625   dits[8] = 13.96;   
2626   dits[9] = 40.15;
2627   dits[10] = 12.46;  
2628   dits[11] = 13.96;
2629   dits[12] = 55.75;
2630   dits[13] = 27;
2631   dits[14] = 28.5;
2632   dits[15] = 55.75;
2633   dits[16] = 27;
2634   dits[17] = 28.5;
2635   dits[18] = 57.25;
2636   dits[19] = 27;
2637   dits[20] = 28.5;
2638 //  gMC->Gsvolu("I093", "PCON", idtmed[272], dits, 21);  // SDD cone
2639   gMC->Gsvolu("I093", "PCON", idtmed[287], dits, 21);  // SDD cone
2640
2641   // Redefined to make adding material for cables easier (FMD geometry)
2642   Double_t s1,s2,b1,b2;
2643   s1 = (dits[16]-dits[10])/(dits[15]-dits[9]); // Slope of conical section
2644   s2 = (dits[16]-dits[10])/(dits[15]-dits[9]); // Slope of conical section
2645   b1 = dits[13] - s1*dits[15]; // inside cone axis intersept
2646   b2 = dits[14] - s2*dits[15]; // outside cone axis intersept
2647   dits[0] = 0; //dits[0] = 0;
2648   dits[1] = 50; //dits[1] = 50;
2649   dits[2] = 4; //dits[2] = 3;
2650
2651   dits[4] = 14.0; //dits[4] = 14;            // r inner
2652   dits[5] = dits[4]; //dits[5] = 18.75;      // r outer
2653   dits[3] = (dits[4]-b2)/s2; //dits[3] = 39;  // Z
2654
2655   dits[7] = dits[4]; //dits[7] = 14;             // r inner
2656   dits[6] = (dits[7]-b1)/s1; //dits[6] = 46.7-3;  // Z
2657   dits[8] = s2*dits[6]+b2; //dits[8] = 18.75;     // r outer
2658
2659   dits[11] = 18.75; //dits[11] = 18.75;           // r outer
2660   dits[9] = (dits[11]-b2)/s2; //dits[9] = 51.45-3; // Z
2661   dits[10] = s1*dits[9]+b1; //dits[10] = 18.75;    // r inner
2662
2663   dits[13] = dits[11];         // r inner
2664   dits[14] = dits[11];         // r outer
2665   dits[12] = (dits[13]-b1)/s1;  // Z
2666 //  gMC->Gsvolu("I099", "PCON", idtmed[204], dits, 12); // SDD 3 cone hole
2667   gMC->Gsvolu("I099", "PCON", idtmed[285], dits, 15); // SDD 3 cone hole
2668
2669   dits[0] = 0; //dits[0] = 0;
2670   dits[1] = 25; //dits[1] = 25;
2671   dits[2] = 4; //dits[2] = 3;
2672
2673   dits[4] = 23.4; //dits[4] = 23.4;  // r inner
2674   dits[5] = dits[4]; //dits[5] = 26.4;  // r outer
2675   dits[3] = (dits[4]-b2)/s2; //dits[3] = 49;  // Z
2676
2677   dits[7] = dits[4]; //dits[7] = 23.4;  // r inner
2678   dits[6] = (dits[7]-b1)/s1; //dits[6] = 56.1-3;  // Z
2679   dits[8] = s2*dits[6]+b2; //dits[8] = 26.4;  // r outer
2680
2681   dits[11] = 26.4; //dits[11] = 26.4;  // r outer
2682   dits[9] = (dits[11]-b2)/s2; //dits[9] = 59.1-3;  // Z
2683   dits[10] = s1*dits[9]+b1; //dits[10] = 26.4;  // r inner
2684
2685   dits[13] = dits[11];         // r inner
2686   dits[14] = dits[11];         // r outer
2687   dits[12] = (dits[13]-b1)/s1;  // Z
2688 //  gMC->Gsvolu("I200", "PCON", idtmed[204], dits, 12); // SDD 4 cone hole
2689   gMC->Gsvolu("I200", "PCON", idtmed[285], dits, 15); // SDD 4 cone hole
2690
2691   dits[0] = 10.0;
2692   dits[1] = 10.5;
2693   dits[2] = 0.25;
2694   gMC->Gsvolu("I090", "TUBE", idtmed[224], dits, 3);  // SDD cylinder flange
2695
2696   dits[0] = 21.95;
2697   dits[1] = 22.95;    
2698   dits[2] = 1;
2699   gMC->Gsvolu("I098", "TUBE", idtmed[283], dits, 3);    // ladder support on layer 4
2700
2701   dits[0] = 13.1;    
2702   dits[1] = 14.1;    
2703   dits[2] = 1;
2704   gMC->Gsvolu("I097", "TUBE", idtmed[283], dits, 3);    // ladder support on layer 3
2705
2706   dits[0] = 1;
2707   dits[1] = 1;
2708   dits[2] = 7.74;
2709   gMC->Gsvolu("I202", "BOX ", idtmed[272], dits, 3);
2710
2711   dits[0] = 1;
2712   dits[1] = 1;
2713   dits[2] = 9.14;
2714   gMC->Gsvolu("I203", "BOX ", idtmed[272], dits, 3);
2715
2716   dits[0] = 21.95;
2717   dits[1] = 22.95;
2718   dits[2] = 1;
2719   gMC->Gsvolu("I095", "TUBE", idtmed[224], dits, 3);
2720
2721   dits[0] = 3;
2722   dits[1] = 2.7;
2723   dits[2] = 1;
2724   dits[3] = 0.63;
2725   gMC->Gsvolu("I096", "TRD1", idtmed[264], dits, 4);
2726
2727   dits[0] = 13.1;
2728   dits[1] = 14.1;
2729   dits[2] = 1;
2730   gMC->Gsvolu("I094", "TUBE", idtmed[224], dits, 3);
2731   
2732   
2733   // --- Define volumes of SSD cone ----------------------------------    
2734             
2735
2736   dits[0] = 0;
2737   dits[1] = 360;
2738   dits[2] = 12;
2739   dits[3] = -zmax;
2740   dits[4] = 46;         
2741   dits[5] = 49.25;       
2742   dits[6] = -61.2;
2743   dits[7] = 28.7;
2744   dits[8] = 49.25;       
2745   dits[9] = -57.5;
2746   dits[10] = 28.7;
2747   dits[11] = 49.25;      
2748   dits[12] = -57.5;
2749   dits[13] = 28.7;
2750   dits[14] = 43.5;
2751   dits[15] = -49.2;
2752   dits[16] = 28.7;
2753   dits[17] = 43.5;
2754   dits[18] = -49.2;
2755   dits[19] = 28.7;
2756   dits[20] = 36.85;
2757   dits[21] = 50.6;
2758   dits[22] = 28.7;
2759   dits[23] = 36.85;
2760   dits[24] = 50.6;
2761   dits[25] = 28.7;
2762   dits[26] = 43.5;
2763   dits[27] = 57.5;
2764   dits[28] = 28.7;
2765   dits[29] = 43.5;
2766   dits[30] = 57.5;
2767   dits[31] = 28.7;
2768   dits[32] = 49.25;      
2769   dits[33] = 61.2;
2770   dits[34] = 28.7;
2771   dits[35] = 49.25;      
2772   dits[36] = zmax;
2773   dits[37] = 46;      
2774   dits[38] = 49.25;      
2775   gMC->Gsvolu("IS01", "PCON", idtmed[204], dits, 39);   // SSD cone mother volume
2776   
2777   dits[0] = 0;
2778   dits[1] = 360;
2779   dits[2] = 6;
2780   dits[3] = -zmax;  
2781   dits[4] = 47.75;  
2782   dits[5] = 49.25;  
2783   dits[6] = -zmax+2.;  
2784   dits[7] = 47.75;  
2785   dits[8] = 49.25;   
2786   dits[9] = -71.2819;
2787   dits[10] = 46.75;   
2788   dits[11] = 49.0319;
2789   dits[12] = -57.25;   // was 58.5 
2790   dits[13] = 32.9681;
2791   dits[14] = 34.75;
2792   dits[15] = -57.25;   // was 58.5   
2793   dits[16] = 30;
2794   dits[17] = 34.75;
2795   dits[18] = -55.75;   // was 57 
2796   dits[19] = 30;     
2797   dits[20] = 32.25;    // was 31.5 
2798 //  gMC->Gsvolu("I212", "PCON", idtmed[272], dits, 21);  // SSD cone
2799   gMC->Gsvolu("I212", "PCON", idtmed[288], dits, 21);  // SSD cone
2800
2801   s1 = (dits[5]-dits[14])/(dits[9]-dits[12]); // Slope of conical section
2802   s2 = (dits[10]-dits[13])/(dits[9]-dits[12]); // Slope of conical section
2803   b1 = dits[14] - s1*dits[12]; // inside cone axis intersept
2804   b2 = dits[13] - s2*dits[12]; // outside cone axis intersept
2805   dits[0] = 0;
2806   dits[1] = 25;
2807   dits[2] = 4; //dits[2] = 5;
2808
2809   dits[4] = 45.50; //dits[4] = 45.5;  // r inner
2810   dits[5] = dits[4]; //dits[5] = 45.5;  // r outer
2811   dits[3] = (dits[4] - b2)/s2; //dits[3] = -zmax+3; // z
2812
2813   dits[8] = dits[4]; //dits[8] = 45.5;  // r outer
2814   dits[6] = (dits[8] - b1)/s1; //dits[6] = -69.7+3;; // z
2815   dits[7] = s2*dits[6] + b2; //dits[7] = 37;  // r inner
2816
2817   dits[10] = 37.00; //dits[10] = 37;  // r inner
2818   dits[9] = (dits[10]-b2)/s2; //dits[9] = -68.5+3;; // z
2819   dits[11] = s1*dits[9]+b1; //dits[11] = 45.5;  // r outer
2820
2821   dits[13] = dits[10]; //dits[13] = 37;  // r inner
2822   dits[14] = dits[13]; //dits[14] = 45.5;   // r outer
2823   dits[12] = s2*dits[14] + b2; //dits[12] = -68.5+4.8;; // z
2824 //  gMC->Gsvolu("I215", "PCON", idtmed[204], dits, 18);  // SSD cone hole 
2825   gMC->Gsvolu("I215", "PCON", idtmed[286], dits, 15);  // SSD cone hole 
2826   
2827   dits[0] = 28.75;          
2828   dits[1] = 29.75;   
2829   dits[2] = 0.5;
2830   gMC->Gsvolu("I211", "TUBE", idtmed[224], dits, 3);   // SSD cylinder flange
2831   
2832   dits[0] = 35.8;   
2833   dits[1] = 36.8;   
2834   dits[2] = 1;
2835   gMC->Gsvolu("I217", "TUBE", idtmed[283], dits, 3);   // ladder support on layer 5 
2836   
2837   dits[0] = 41.4;  
2838   dits[1] = 42.4;  
2839   dits[2] = 1;
2840   gMC->Gsvolu("I219", "TUBE", idtmed[283], dits, 3);   // ladder support on layer 6
2841         
2842   dits[0] = 42.05+5.;       
2843   dits[1] = 42.55+5.;     
2844   dits[2] = 1.25;
2845   gMC->Gsvolu("I214", "TUBE", idtmed[224], dits, 3);   // layer 6 electronic support
2846                                                        // this will change after PPR
2847   dits[0] = 37.05+5.;   
2848   dits[1] = 37.55+5.;   
2849   dits[2] = 1.25;
2850   gMC->Gsvolu("I213", "TUBE", idtmed[224], dits, 3);   // layer 5 electronic support
2851                                                        // this will change after PPR
2852  
2853   dits[0] = 0;
2854   dits[1] = 3.2;
2855   dits[2] = 9;
2856   dits[3] = -14;
2857   dits[4] = 30.5;
2858   dits[5] = 33.5;
2859   dits[6] = -9.85;
2860   dits[7] = 30.5;
2861   dits[8] = 33.5;
2862   dits[9] = -9.85;
2863   dits[10] = 30.5;
2864   dits[11] = 43.45;
2865   dits[12] = -7.85;
2866   dits[13] = 30.5;
2867   dits[14] = 43.45;
2868   dits[15] = -7.85;
2869   dits[16] = 30.5;
2870   dits[17] = 36.5;
2871   dits[18] = -7;
2872   dits[19] = 30.5;
2873   dits[20] = 36.5;
2874   dits[21] = -4;
2875   dits[22] = 33.0173;
2876   dits[23] = 36.5;
2877   dits[24] = -4;
2878   dits[25] = 33.0173;
2879   dits[26] = 36.80;
2880   dits[27] = -2;
2881   dits[28] = 34.6955;
2882   dits[29] = 36.80;
2883   gMC->Gsvolu("I216", "PCON", idtmed[272], dits, 30); // supports (1-6) of the ladders
2884        
2885        
2886   // --- Place SPD (option 'a') volumes into their mother volume IT12
2887   
2888   // SPD - option 'a' 
2889   // (this is NOT the default)
2890
2891   if (option == 1) {
2892
2893      gMC->Gspos("I12A",5,"IT12",0.0,0.0,0.0,idrotm[238],"MANY");
2894      gMC->Gspos("I12A",6,"IT12",0.0,0.0,0.0,idrotm[236],"MANY");
2895      gMC->Gspos("I12A",7,"IT12",0.0,0.0,0.0,idrotm[239],"MANY");
2896      gMC->Gspos("I12A",8,"IT12",0.0,0.0,0.0,idrotm[233],"MANY");
2897      gMC->Gspos("I12A",9,"IT12",0.0,0.0,0.0,idrotm[240],"MANY");
2898      gMC->Gspos("I12A",10,"IT12",0.0,0.0,0.0,idrotm[241],"MANY");
2899      gMC->Gspos("I12A",2,"IT12",0.0,0.0,0.0,idrotm[242],"MANY");
2900      gMC->Gspos("I12A",3,"IT12",0.0,0.0,0.0,idrotm[234],"MANY");
2901      gMC->Gspos("I12A",4,"IT12",0.0,0.0,0.0,idrotm[243],"MANY");
2902      gMC->Gspos("I12A",1,"IT12",0.0,0.0,0.0,0,"MANY");
2903      deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(270.*TMath::Pi()/180.);  // see definition of idrotm[244]
2904           deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(270.*TMath::Pi()/180.);  // see definition of idrotm[244]
2905      gMC->Gspos("I10A",2,"I12A",0.203+deltax,3.8206+deltay,0.0,idrotm[244],"ONLY");       
2906      deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(252.*TMath::Pi()/180.);  // see definition of idrotm[245]
2907           deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(252.*TMath::Pi()/180.);  // see definition of idrotm[245]  
2908      gMC->Gspos("I10A",1,"I12A",1.4531+deltax,3.8152+deltay,0.0,idrotm[245],"ONLY");
2909      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(40.*TMath::Pi()/180.);  // see definition of idrotm[246]
2910           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(40.*TMath::Pi()/180.);  // see definition of idrotm[246]  
2911      gMC->Gspos("I20A",1,"I12A",3.0174+deltax,6.5143+deltay,0.0,idrotm[246],"ONLY");
2912      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(49.*TMath::Pi()/180.);  // see definition of idrotm[247]
2913           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(49.*TMath::Pi()/180.);  // see definition of idrotm[247] 
2914      gMC->Gspos("I20A",2,"I12A",1.9612+deltax,6.9062+deltay,0.0,idrotm[247],"ONLY");
2915      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(58.*TMath::Pi()/180.);  // see definition of idrotm[248]
2916           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(58.*TMath::Pi()/180.);  // see definition of idrotm[248] 
2917      gMC->Gspos("I20A",3,"I12A",0.8567+deltax,7.1279+deltay,0.0,idrotm[248],"ONLY");
2918      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(67.*TMath::Pi()/180.);  // see definition of idrotm[249]
2919           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(67.*TMath::Pi()/180.);  // see definition of idrotm[249] 
2920      gMC->Gspos("I20A",4,"I12A",-0.2689+deltax,7.1742+deltay,0.0,idrotm[249],"ONLY");
2921      gMC->Gspos("I123",2,"I12A",-0.2978,5.5196,0.0,idrotm[214],"ONLY");
2922      gMC->Gspos("I121",2,"I12A",-0.2385,4.1518,0.0,idrotm[213],"ONLY");
2923      gMC->Gspos("I122",2,"I12A",-0.2968,4.0207,0.0,idrotm[212],"ONLY");
2924      gMC->Gspos("I120",2,"I12A",-0.3672,3.9056,0.0,0,"ONLY");
2925      gMC->Gspos("I144",1,"I12A",-0.2538,3.8556,0.0,0,"ONLY");
2926      gMC->Gspos("I113",3,"I12A",0.1095,3.9056,0.0,0,"ONLY");
2927      gMC->Gspos("I143",1,"I12A",0.4365,3.8556,0.0,idrotm[236],"ONLY");
2928      gMC->Gspos("I142",1,"I12A",0.5136,3.9056,0.0,idrotm[235],"ONLY");
2929      gMC->Gspos("I141",1,"I12A",0.5636,3.9752,0.0,idrotm[201],"ONLY");
2930      gMC->Gspos("I140",1,"I12A",0.6336,4.0447,0.0,idrotm[234],"ONLY");
2931      gMC->Gspos("I139",1,"I12A",0.8297,4.0545,0.0,idrotm[207],"ONLY");
2932      gMC->Gspos("I113",5,"I12A",1.2575,3.9681,0.0,idrotm[207],"ONLY");
2933      gMC->Gspos("I138",1,"I12A",1.66,3.7848,0.0,idrotm[207],"ONLY");
2934      gMC->Gspos("I137",1,"I12A",1.8556,3.7738,0.0,idrotm[233],"ONLY");
2935      gMC->Gspos("I136",1,"I12A",2.6224,4.874,0.0,idrotm[232],"ONLY");
2936      gMC->Gspos("I135",1,"I12A",3.2967,6.0337,0.0,idrotm[231],"ONLY");
2937      gMC->Gspos("I134",1,"I12A",3.266,6.1636,0.0,idrotm[230],"ONLY");
2938      gMC->Gspos("I113",1,"I12A",2.9903,6.4144,0.0,idrotm[211],"ONLY");
2939      gMC->Gspos("I133",3,"I12A",2.7631,6.7627,0.0,idrotm[230],"ONLY");
2940      gMC->Gspos("I132",3,"I12A",2.62,6.8555,0.0,idrotm[229],"ONLY");
2941      gMC->Gspos("I131",3,"I12A",2.648,6.6023,0.0,idrotm[228],"ONLY");
2942      gMC->Gspos("I130",3,"I12A",2.6569,6.3431,0.0,idrotm[227],"ONLY");
2943      gMC->Gspos("I129",3,"I12A",2.3906,6.4819,0.0,idrotm[226],"ONLY");
2944      gMC->Gspos("I113",2,"I12A",1.9488,6.7998,0.0,idrotm[210],"ONLY");
2945      gMC->Gspos("I133",2,"I12A",1.6699,7.1085,0.0,idrotm[226],"ONLY");
2946      gMC->Gspos("I132",2,"I12A",1.5142,7.1777,0.0,idrotm[225],"ONLY");
2947      gMC->Gspos("I131",2,"I12A",1.5814,6.932,0.0,idrotm[224],"ONLY");
2948      gMC->Gspos("I130",2,"I12A",1.6308,6.6774,0.0,idrotm[223],"ONLY");
2949      gMC->Gspos("I129",2,"I12A",1.346,6.7728,0.0,idrotm[222],"ONLY");
2950      gMC->Gspos("I113",6,"I12A",0.8599,7.0176,0.0,idrotm[209],"ONLY");
2951      gMC->Gspos("I133",1,"I12A",0.5362,7.2789,0.0,idrotm[222],"ONLY");
2952      gMC->Gspos("I132",1,"I12A",0.3715,7.3228,0.0,idrotm[221],"ONLY");
2953      gMC->Gspos("I131",1,"I12A",0.4763,7.0907,0.0,idrotm[220],"ONLY");
2954      gMC->Gspos("I130",1,"I12A",0.5649,6.8469,0.0,idrotm[219],"ONLY");
2955      gMC->Gspos("I129",1,"I12A",0.2688,6.8966,0.0,idrotm[218],"ONLY");
2956      gMC->Gspos("I113",4,"I12A",-0.2497,7.0624,0.0,idrotm[208],"ONLY");
2957      gMC->Gspos("I128",1,"I12A",-0.6103,7.2698,0.0,idrotm[218],"ONLY");
2958      gMC->Gspos("I126",2,"I12A",-0.7799,7.2874,0.0,idrotm[217],"ONLY");
2959      gMC->Gspos("I125",2,"I12A",-0.6315,7.0883,0.0,idrotm[216],"ONLY");
2960      gMC->Gspos("I124",2,"I12A",-0.4965,6.8742,0.0,idrotm[215],"ONLY");
2961      gMC->Gspos("I103",3,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],-3.536,0,"ONLY");
2962      gMC->Gspos("I103",4,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],-10.708,0,"ONLY");
2963      gMC->Gspos("I103",1,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],10.708,0,"ONLY");
2964      gMC->Gspos("I103",2,"I10A",-0.05,-di10a[1]+2.*di104[1]+di103[1],3.536,0,"ONLY");
2965      gMC->Gspos("I105",1,"I10A",-0.05,0.01,-16.844,idrotm[237],"ONLY");
2966      gMC->Gspos("I105",2,"I10A",-0.05,0.01,16.844,0,"ONLY");
2967      gMC->Gspos("I104",1,"I10A",0.0,-di10a[1]+di104[1],0.0,0,"ONLY");
2968      gMC->Gspos("I1D3",3,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],-3.536,0,"ONLY");
2969      gMC->Gspos("I1D3",4,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],-10.708,0,"ONLY");
2970      gMC->Gspos("I1D3",1,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],10.708,0,"ONLY");
2971      gMC->Gspos("I1D3",2,"I20A",-0.05,-di20a[1]+2.*di104[1]+di1d3[1],3.536,0,"ONLY");
2972      gMC->Gspos("I105",3,"I20A",-0.05,0.01,-16.844,idrotm[237],"ONLY");
2973      gMC->Gspos("I105",4,"I20A",-0.05,0.01,16.844,0,"ONLY");
2974      gMC->Gspos("I104",2,"I20A",0.0,-di20a[1]+di104[1],0.0,0,"ONLY");
2975      gMC->Gspos("I112",2,"I113",0.25,0.02,0.0,idrotm[206],"ONLY");
2976      gMC->Gspos("I111",2,"I113",0.1318,-0.0008,0.0,idrotm[205],"ONLY");
2977      gMC->Gspos("I118",1,"I113",0.0,-0.0454,0.0,0,"ONLY");
2978      gMC->Gspos("I110",1,"I113",0.0,0.0492,0.0,0,"ONLY");
2979      gMC->Gspos("I114",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
2980      gMC->Gspos("I115",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
2981      gMC->Gspos("I115",2,"I113",-0.063,0.0042,0.0,idrotm[201],"ONLY");
2982      gMC->Gspos("I114",2,"I113",-0.063,0.0042,0.0,idrotm[201],"ONLY");
2983      gMC->Gspos("I116",1,"I113",0.0,0.0042,0.0,0,"ONLY");
2984      gMC->Gspos("I111",1,"I113",-0.1318,-0.0008,0.0,idrotm[204],"ONLY");
2985      gMC->Gspos("I112",1,"I113",-0.25,0.02,0.0,idrotm[203],"ONLY");
2986      gMC->Gspos("I101",1,"I103",-0.088,ddet1,0.0,0,"ONLY");
2987      gMC->Gspos("I102",1,"I103",0.0,-dchip1,-2.8,0,"ONLY");
2988      gMC->Gspos("I102",2,"I103",0.0,-dchip1,-1.4,0,"ONLY");
2989      gMC->Gspos("I102",3,"I103",0.0,-dchip1,0.0,0,"ONLY");
2990      gMC->Gspos("I102",4,"I103",0.0,-dchip1,1.4,0,"ONLY");
2991      gMC->Gspos("I102",5,"I103",0.0,-dchip1,2.8,0,"ONLY");
2992      gMC->Gspos("I1D1",1,"I1D3",-0.088,ddet2,0.0,0,"ONLY");
2993      gMC->Gspos("I1D2",1,"I1D3",0.0,-dchip2,-2.8,0,"ONLY");
2994      gMC->Gspos("I1D2",2,"I1D3",0.0,-dchip2,-1.4,0,"ONLY");
2995      gMC->Gspos("I1D2",3,"I1D3",0.0,-dchip2,0.0,0,"ONLY");
2996      gMC->Gspos("I1D2",4,"I1D3",0.0,-dchip2,1.4,0,"ONLY");
2997      gMC->Gspos("I1D2",5,"I1D3",0.0,-dchip2,2.8,0,"ONLY");
2998      gMC->Gspos("I117",1,"I116",0.0,0.0,0.0,0,"ONLY");
2999      gMC->Gspos("ITS1",1,"I101",0.0,0.0,0.0,0,"ONLY");
3000      gMC->Gspos("ITS2",1,"I1D1",0.0,0.0,0.0,0,"ONLY");
3001      gMC->Gspos("I651",1,"IT12",0.0,0.0,26.05,0,"ONLY");
3002      gMC->Gspos("I651",2,"IT12",0.0,0.0,-26.05,0,"ONLY");     
3003      gMC->Gspos("I650",16,"IT12",0.0,0.0,22.0,idrotm[1104],"MANY");
3004      gMC->Gspos("I650",20,"IT12",0.0,0.0,22.0,idrotm[1130],"MANY");
3005      gMC->Gspos("I650",18,"IT12",0.0,0.0,22.0,idrotm[1117],"MANY");
3006      gMC->Gspos("I650",1,"IT12",0.0,0.0,22.0,0,"MANY");
3007      gMC->Gspos("I650",4,"IT12",0.0,0.0,22.0,idrotm[1106],"MANY");
3008      gMC->Gspos("I650",6,"IT12",0.0,0.0,22.0,idrotm[1039],"MANY");
3009      gMC->Gspos("I650",8,"IT12",0.0,0.0,22.0,idrotm[1107],"MANY");
3010      gMC->Gspos("I650",10,"IT12",0.0,0.0,22.0,idrotm[1065],"MANY");
3011      gMC->Gspos("I650",12,"IT12",0.0,0.0,22.0,idrotm[1078],"MANY");
3012      gMC->Gspos("I650",14,"IT12",0.0,0.0,22.0,idrotm[1091],"MANY");
3013      gMC->Gspos("I650",19,"IT12",0.0,0.0,-22.0,idrotm[1108],"MANY");
3014      gMC->Gspos("I650",2,"IT12",0.0,0.0,-22.0,idrotm[1109],"MANY");
3015      gMC->Gspos("I650",3,"IT12",0.0,0.0,-22.0,idrotm[1110],"MANY");
3016      gMC->Gspos("I650",5,"IT12",0.0,0.0,-22.0,idrotm[1111],"MANY");
3017      gMC->Gspos("I650",7,"IT12",0.0,0.0,-22.0,idrotm[1112],"MANY");
3018      gMC->Gspos("I650",9,"IT12",0.0,0.0,-22.0,idrotm[1113],"MANY");
3019      gMC->Gspos("I650",11,"IT12",0.0,0.0,-22.0,idrotm[1114],"MANY");
3020      gMC->Gspos("I650",13,"IT12",0.0,0.0,-22.0,idrotm[1115],"MANY");
3021      gMC->Gspos("I650",15,"IT12",0.0,0.0,-22.0,idrotm[1116],"MANY");
3022      gMC->Gspos("I650",17,"IT12",0.0,0.0,-22.0,idrotm[1118],"MANY");
3023      gMC->Gspos("I666",1,"I650",0.0,0.0,0.25,idrotm[1003],"MANY");
3024      gMC->Gspos("I667",1,"I650",0.1102,0.9945,0.45,idrotm[1088],"ONLY");
3025      gMC->Gspos("I669",3,"I650",0.1883,4.0372,-3.2,0,"ONLY");
3026      gMC->Gspos("I671",3,"I650",0.1883,4.0372,0.6,0,"ONLY");
3027      gMC->Gspos("I669",2,"I650",1.3343,4.0609,-3.2,0,"ONLY");
3028      gMC->Gspos("I671",2,"I650",1.3343,4.0609,0.6,0,"ONLY");
3029      gMC->Gspos("I669",6,"I650",2.9567,6.1959,-3.2,idrotm[1089],"ONLY");
3030      gMC->Gspos("I671",6,"I650",2.9567,6.1959,0.6,idrotm[1089],"ONLY");
3031      gMC->Gspos("I669",5,"I650",1.9511,6.5822,-3.2,idrotm[1011],"ONLY");
3032      gMC->Gspos("I671",5,"I650",1.9511,6.5822,0.6,idrotm[1011],"ONLY");
3033      gMC->Gspos("I669",4,"I650",0.8974,6.8064,-3.2,idrotm[1090],"ONLY");
3034      gMC->Gspos("I671",4,"I650",0.8974,6.8064,0.6,idrotm[1090],"ONLY");
3035      gMC->Gspos("I669",1,"I650",-0.1784,6.863,-3.2,0,"ONLY");
3036      gMC->Gspos("I671",1,"I650",-0.1784,6.863,0.6,0,"ONLY");
3037      gMC->Gspos("I673",1,"I650",0.2173,4.8037,1.8,0,"ONLY");
3038      gMC->Gspos("I673",6,"I650",1.5093,4.5605,1.8,0,"ONLY");
3039      gMC->Gspos("I673",4,"I650",-0.173,6.2531,1.8,idrotm[1092],"ONLY");
3040      gMC->Gspos("I673",3,"I650",0.8073,6.2032,1.8,idrotm[1093],"ONLY");
3041      gMC->Gspos("I673",2,"I650",1.7678,6.0005,1.8,idrotm[1094],"ONLY");
3042      gMC->Gspos("I673",5,"I650",2.6847,5.6501,1.8,0,"ONLY");
3043      gMC->Gspos("I676",2,"I650",1.7618,5.2269,2.5,0,"ONLY");
3044      gMC->Gspos("I676",1,"I650",0.4018,5.5869,2.5,0,"ONLY");
3045      gMC->Gspos("I668",1,"I667",0.0,0.0,0.0,0,"ONLY");
3046      gMC->Gspos("I670",1,"I669",0.0,0.0,0.0,0,"ONLY");
3047      gMC->Gspos("I672",1,"I671",0.0,0.0,0.0,0,"ONLY");
3048      gMC->Gspos("I674",1,"I673",0.0,0.0,0.0,0,"MANY");
3049      gMC->Gspos("I675",1,"I673",0.0,0.0,-0.5,0,"ONLY");
3050      gMC->Gspos("I677",1,"I676",0.0,0.0,0.0,0,"MANY");
3051      gMC->Gspos("I678",1,"I676",0.0,0.0,-0.95,0,"ONLY");    
3052
3053   }
3054
3055
3056   // --- Place SPD (option 'b') volumes into their mother volume IT12
3057   
3058   // SPD - option 'b' 
3059   // (this is the default)
3060
3061   if (option == 2) {
3062
3063      gMC->Gspos("I12B",1,"IT12",0.0,0.0,0.0,0,"MANY");
3064      gMC->Gspos("I12B",8,"IT12",0.0,0.0,0.0,idrotm[233],"MANY");
3065      gMC->Gspos("I12B",7,"IT12",0.0,0.0,0.0,idrotm[244],"MANY");
3066      gMC->Gspos("I12B",6,"IT12",0.0,0.0,0.0,idrotm[236],"MANY");
3067      gMC->Gspos("I12B",2,"IT12",0.0,0.0,0.0,idrotm[245],"MANY");
3068      gMC->Gspos("I12B",3,"IT12",0.0,0.0,0.0,idrotm[234],"MANY");
3069      gMC->Gspos("I12B",4,"IT12",0.0,0.0,0.0,idrotm[246],"MANY");
3070      gMC->Gspos("I12B",5,"IT12",0.0,0.0,0.0,idrotm[247],"MANY");
3071      gMC->Gspos("I12B",9,"IT12",0.0,0.0,0.0,idrotm[248],"MANY");
3072      gMC->Gspos("I12B",10,"IT12",0.0,0.0,0.0,idrotm[249],"MANY");
3073      deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(270.*TMath::Pi()/180.);  // see definition of idrotm[238]
3074           deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(270.*TMath::Pi()/180.);  // see definition of idrotm[238]
3075      gMC->Gspos("I10B",2,"I12B",0.203+deltax,3.8206+deltay,0.0,idrotm[238],"ONLY");       
3076      deltax=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Cos(252.*TMath::Pi()/180.);  // see definition of idrotm[239]
3077           deltay=((ddet1-0.01/2.)+(dchip1-0.015/2.))*TMath::Sin(252.*TMath::Pi()/180.);  // see definition of idrotm[239]  
3078      gMC->Gspos("I10B",1,"I12B",1.4531+deltax,3.8152+deltay,0.0,idrotm[239],"ONLY");
3079      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(40.*TMath::Pi()/180.);  // see definition of idrotm[240]
3080           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(40.*TMath::Pi()/180.);  // see definition of idrotm[240]  
3081      gMC->Gspos("I20B",1,"I12B",3.0174+deltax,6.5143+deltay,0.0,idrotm[240],"ONLY");
3082      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(49.*TMath::Pi()/180.);  // see definition of idrotm[241]
3083           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(49.*TMath::Pi()/180.);  // see definition of idrotm[241] 
3084      gMC->Gspos("I20B",2,"I12B",1.9612+deltax,6.9062+deltay,0.0,idrotm[241],"ONLY");
3085      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(58.*TMath::Pi()/180.);  // see definition of idrotm[242]
3086           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(58.*TMath::Pi()/180.);  // see definition of idrotm[242] 
3087      gMC->Gspos("I20B",3,"I12B",0.8567+deltax,7.1279+deltay,0.0,idrotm[242],"ONLY");
3088      deltax=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Cos(67.*TMath::Pi()/180.);  // see definition of idrotm[243]
3089           deltay=((ddet2-0.01/2.)+(dchip2-0.015/2.))*TMath::Sin(67.*TMath::Pi()/180.);  // see definition of idrotm[243] 
3090      gMC->Gspos("I20B",4,"I12B",-0.2689+deltax,7.1742+deltay,0.0,idrotm[243],"ONLY");
3091      gMC->Gspos("I123",1,"I12B",-0.2978,5.5196,0.0,idrotm[214],"ONLY");
3092      gMC->Gspos("I121",1,"I12B",-0.2385,4.1518,0.0,idrotm[213],"ONLY");
3093      gMC->Gspos("I122",1,"I12B",-0.2968,4.0207,0.0,idrotm[212],"ONLY");
3094      gMC->Gspos("I120",1,"I12B",-0.3672,3.9056,0.0,0,"ONLY");
3095      gMC->Gspos("I144",1,"I12B",-0.2538,3.8556,0.0,0,"ONLY");
3096      gMC->Gspos("I113",3,"I12B",0.1095,3.9056,0.0,0,"ONLY");
3097      gMC->Gspos("I143",1,"I12B",0.4365,3.8556,0.0,idrotm[236],"ONLY");
3098      gMC->Gspos("I142",1,"I12B",0.5136,3.9056,0.0,idrotm[235],"ONLY");
3099      gMC->Gspos("I141",1,"I12B",0.5636,3.9752,0.0,idrotm[237],"ONLY");
3100      gMC->Gspos("I140",1,"I12B",0.6336,4.0447,0.0,idrotm[234],"ONLY");
3101      gMC->Gspos("I139",1,"I12B",0.8297,4.0545,0.0,idrotm[207],"ONLY");
3102      gMC->Gspos("I113",5,"I12B",1.2575,3.9681,0.0,idrotm[207],"ONLY");
3103      gMC->Gspos("I138",1,"I12B",1.66,3.7848,0.0,idrotm[207],"ONLY");
3104      gMC->Gspos("I137",1,"I12B",1.8556,3.7738,0.0,idrotm[233],"ONLY");
3105      gMC->Gspos("I136",1,"I12B",2.6224,4.874,0.0,idrotm[232],"ONLY");
3106      gMC->Gspos("I135",1,"I12B",3.2967,6.0337,0.0,idrotm[231],"ONLY");
3107      gMC->Gspos("I134",1,"I12B",3.266,6.1636,0.0,idrotm[230],"ONLY");
3108      gMC->Gspos("I113",1,"I12B",2.9903,6.4144,0.0,idrotm[211],"ONLY");
3109      gMC->Gspos("I133",3,"I12B",2.7631,6.7627,0.0,idrotm[230],"ONLY");
3110      gMC->Gspos("I132",3,"I12B",2.62,6.8555,0.0,idrotm[229],"ONLY");
3111      gMC->Gspos("I131",3,"I12B",2.648,6.6023,0.0,idrotm[228],"ONLY");
3112      gMC->Gspos("I130",3,"I12B",2.6569,6.3431,0.0,idrotm[227],"ONLY");
3113      gMC->Gspos("I129",3,"I12B",2.3906,6.4819,0.0,idrotm[226],"ONLY");
3114      gMC->Gspos("I113",2,"I12B",1.9488,6.7998,0.0,idrotm[210],"ONLY");
3115      gMC->Gspos("I133",2,"I12B",1.6699,7.1085,0.0,idrotm[226],"ONLY");
3116      gMC->Gspos("I132",2,"I12B",1.5142,7.1777,0.0,idrotm[225],"ONLY");
3117      gMC->Gspos("I131",2,"I12B",1.5814,6.932,0.0,idrotm[224],"ONLY");
3118      gMC->Gspos("I130",2,"I12B",1.6308,6.6774,0.0,idrotm[223],"ONLY");
3119      gMC->Gspos("I129",2,"I12B",1.346,6.7728,0.0,idrotm[222],"ONLY");
3120      gMC->Gspos("I113",6,"I12B",0.8599,7.0176,0.0,idrotm[209],"ONLY");
3121      gMC->Gspos("I133",1,"I12B",0.5362,7.2789,0.0,idrotm[222],"ONLY");
3122      gMC->Gspos("I132",1,"I12B",0.3715,7.3228,0.0,idrotm[221],"ONLY");
3123      gMC->Gspos("I131",1,"I12B",0.4763,7.0907,0.0,idrotm[220],"ONLY");
3124      gMC->Gspos("I130",1,"I12B",0.5649,6.8469,0.0,idrotm[219],"ONLY");
3125      gMC->Gspos("I129",1,"I12B",0.2688,6.8966,0.0,idrotm[218],"ONLY");
3126      gMC->Gspos("I113",4,"I12B",-0.2497,7.0624,0.0,idrotm[208],"ONLY");
3127      gMC->Gspos("I128",1,"I12B",-0.6103,7.2698,0.0,idrotm[218],"ONLY");
3128      gMC->Gspos("I126",1,"I12B",-0.7799,7.2874,0.0,idrotm[217],"ONLY");
3129      gMC->Gspos("I125",1,"I12B",-0.6315,7.0883,0.0,idrotm[216],"ONLY");
3130      gMC->Gspos("I124",1,"I12B",-0.4965,6.8742,0.0,idrotm[215],"ONLY");
3131      gMC->Gspos("I105",3,"I10B",-0.05,-0.01,-16.844,idrotm[201],"ONLY");
3132      gMC->Gspos("I105",4,"I10B",-0.05,-0.01,16.844,0,"ONLY");
3133      gMC->Gspos("I107",2,"I10B",-0.0455,-di10b[1]+di107[1],3.536,0,"ONLY");
3134      gMC->Gspos("I107",1,"I10B",-0.0455,-di10b[1]+di107[1],10.708,0,"ONLY");
3135      gMC->Gspos("I107",4,"I10B",-0.0455,-di10b[1]+di107[1],-10.708,0,"ONLY");
3136      gMC->Gspos("I107",3,"I10B",-0.0455,-di10b[1]+di107[1],-3.536,0,"ONLY");
3137      gMC->Gspos("I109",1,"I10B",-0.138,0.015,-16.844,idrotm[201],"ONLY");
3138      gMC->Gspos("I109",2,"I10B",-0.138,0.015,16.844,0,"ONLY");
3139      gMC->Gspos("I108",1,"I10B",-0.138,-di10b[1]+2.*di107[1]+di108[1],0.0,0,"ONLY");
3140      gMC->Gspos("I105",1,"I20B",-0.05,-0.01,-16.844,idrotm[201],"ONLY");
3141      gMC->Gspos("I105",2,"I20B",-0.05,-0.01,16.844,0,"ONLY");
3142      gMC->Gspos("I1D7",2,"I20B",-0.0455,-di20b[1]+di1d7[1],3.536,0,"ONLY");
3143      gMC->Gspos("I1D7",1,"I20B",-0.0455,-di20b[1]+di1d7[1],10.708,0,"ONLY");
3144      gMC->Gspos("I1D7",4,"I20B",-0.0455,-di20b[1]+di1d7[1],-10.708,0,"ONLY");
3145      gMC->Gspos("I1D7",3,"I20B",-0.0455,-di20b[1]+di1d7[1],-3.536,0,"ONLY");
3146      gMC->Gspos("I109",3,"I20B",-0.138,0.015,-16.844,idrotm[201],"ONLY");
3147      gMC->Gspos("I109",4,"I20B",-0.138,0.015,16.844,0,"ONLY");
3148      gMC->Gspos("I108",2,"I20B",-0.138,-di20b[1]+2.*di1d7[1]+di108[1],0.0,0,"ONLY");
3149      gMC->Gspos("I112",2,"I113",0.25,0.02,0.0,idrotm[206],"ONLY");
3150      gMC->Gspos("I111",2,"I113",0.1318,-0.0008,0.0,idrotm[205],"ONLY");
3151      gMC->Gspos("I118",1,"I113",0.0,-0.0454,0.0,0,"ONLY");
3152      gMC->Gspos("I110",1,"I113",0.0,0.0492,0.0,0,"ONLY");
3153      gMC->Gspos("I114",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3154      gMC->Gspos("I115",1,"I113",0.063,0.0042,0.0,idrotm[202],"ONLY");
3155      gMC->Gspos("I115",2,"I113",-0.063,0.0042,0.0,idrotm[237],"ONLY");
3156      gMC->Gspos("I114",2,"I113",-0.063,0.0042,0.0,idrotm[237],"ONLY");
3157      gMC->Gspos("I116",1,"I113",0.0,0.0042,0.0,0,"ONLY");
3158      gMC->Gspos("I111",1,"I113",-0.1318,-0.0008,0.0,idrotm[204],"ONLY");
3159      gMC->Gspos("I112",1,"I113",-0.25,0.02,0.0,idrotm[203],"ONLY");
3160      gMC->Gspos("I106",1,"I107",0.0,-dchip1,-1.4,0,"ONLY");
3161      gMC->Gspos("I106",2,"I107",0.0,-dchip1,0.0,0,"ONLY");
3162      gMC->Gspos("I106",3,"I107",0.0,-dchip1,1.4,0,"ONLY");
3163      gMC->Gspos("I106",4,"I107",0.0,-dchip1,2.8,0,"ONLY");
3164      gMC->Gspos("I106",5,"I107",0.0,-dchip1,-2.8,0,"ONLY");
3165      gMC->Gspos("I101",1,"I107",0.0,ddet1,0.0,0,"ONLY");
3166      gMC->Gspos("I1D6",1,"I1D7",0.0,-dchip2,-1.4,0,"ONLY");
3167      gMC->Gspos("I1D6",2,"I1D7",0.0,-dchip2,0.0,0,"ONLY");
3168      gMC->Gspos("I1D6",3,"I1D7",0.0,-dchip2,1.4,0,"ONLY");
3169      gMC->Gspos("I1D6",4,"I1D7",0.0,-dchip2,2.8,0,"ONLY");
3170      gMC->Gspos("I1D6",5,"I1D7",0.0,-dchip2,-2.8,0,"ONLY");
3171      gMC->Gspos("I1D1",1,"I1D7",0.0,ddet2,0.0,0,"ONLY");
3172      gMC->Gspos("I117",1,"I116",0.0,0.0,0.0,0,"ONLY");
3173      gMC->Gspos("ITS1",1,"I101",0.0,0.0,0.0,0,"ONLY");
3174      gMC->Gspos("ITS2",1,"I1D1",0.0,0.0,0.0,0,"ONLY");
3175      gMC->Gspos("I651",1,"IT12",0.0,0.0,26.05,0,"ONLY");
3176      gMC->Gspos("I651",2,"IT12",0.0,0.0,-26.05,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.00,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,"IS02",0.0,0.0,0.,0,"ONLY");    
4030   gMC->Gspos("ICY2",1,"IS01",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
4204   // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
4205   //     UPPER PART
4206
4207   dgh[0] = 46.;    
4208   dgh[1] = 46.+1.0;  
4209   dgh[2] = 9.5;
4210   dgh[3] = 12.;
4211   dgh[4] = 168.;
4212   
4213   gMC->Gsvolu("I1CU", "TUBS", idtmed[213], dgh, 5);  
4214   gMC->Gspos("I1CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
4215   gMC->Gspos("I1CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
4216   
4217   // --- DEFINE CABLES AT THE END OF THE ITS CONES - COPPER PART
4218   //     LOWER PART
4219
4220   dgh[0] = 46.;    
4221   dgh[1] = 46.+1.0;  
4222   dgh[2] = 9.5;
4223   dgh[3] = 192.;
4224   dgh[4] = 348.;
4225   
4226   gMC->Gsvolu("I2CU", "TUBS", idtmed[213], dgh, 5);  
4227   gMC->Gspos("I2CU", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
4228   gMC->Gspos("I2CU", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");
4229
4230
4231   // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
4232   //     UPPER PART
4233   
4234   dgh[0] = 46.+1.0;  
4235   dgh[1] = 46.+1.0+1.5;   
4236   dgh[2] = 9.5;
4237   dgh[3] = 12.;
4238   dgh[4] = 168.;
4239   
4240   gMC->Gsvolu("I1CC", "TUBS", idtmed[225], dgh, 5);  
4241   gMC->Gspos("I1CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
4242   gMC->Gspos("I1CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");  
4243   
4244   // --- DEFINE CABLES AT THE END OF THE ITS CONES - CARBON PART
4245   //     LOWER PART
4246   
4247   dgh[0] = 46.+1.0;  
4248   dgh[1] = 46.+1.0+1.5;   
4249   dgh[2] = 9.5;
4250   dgh[3] = 192.;
4251   dgh[4] = 348.;
4252   
4253   gMC->Gsvolu("I2CC", "TUBS", idtmed[225], dgh, 5);  
4254   gMC->Gspos("I2CC", 1, "ITSV", 0., 0., 83.5, 0, "ONLY");
4255   gMC->Gspos("I2CC", 2, "ITSV", 0., 0., -83.5, idrotm[200], "ONLY");  
4256
4257
4258   // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
4259   //     UPPER PART
4260   
4261   dgh[0] = 46.;  
4262   dgh[1] = 56.;
4263   dgh[2] = 2.25;
4264   dgh[3] = 12.;
4265   dgh[4] = 168.;
4266   
4267   gMC->Gsvolu("IPA1", "TUBS", idtmed[210], dgh, 5);  
4268   gMC->Gspos("IPA1", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");  
4269   gMC->Gspos("IPA1", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY"); 
4270   
4271   // --- DEFINE PATCH PANELS AT THE END OF THE ITS CONES
4272   //     LOWER PART
4273   
4274   dgh[0] = 46.;  
4275   dgh[1] = 56.;
4276   dgh[2] = 2.25;
4277   dgh[3] = 192.;
4278   dgh[4] = 348.;
4279   
4280   gMC->Gsvolu("IPA2", "TUBS", idtmed[210], dgh, 5);  
4281   gMC->Gspos("IPA2", 1, "ITSV", 0., 0., 95.25, 0, "ONLY");  
4282   gMC->Gspos("IPA2", 2, "ITSV", 0., 0., -95.25, idrotm[200], "ONLY"); 
4283
4284
4285   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - COPPER PART
4286   //     UPPER PART
4287   
4288   dgh[0] = (ztpc-97.5)/2.;
4289   dgh[1] = 46.2;     
4290   dgh[2] = 46.2+1.0;  
4291   dgh[3] = 62.3;     
4292   dgh[4] = 62.3+1.0;   
4293   dgh[5] = 12.;    
4294   dgh[6] = 168.;
4295   gMC->Gsvolu("ICU1", "CONS", idtmed[213], dgh, 7);    
4296   gMC->Gspos("ICU1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");   
4297   
4298   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - COPPER PART
4299   //     LOWER PART
4300   
4301   dgh[0] = (ztpc-97.5)/2.;
4302   dgh[1] = 46.2;      
4303   dgh[2] = 46.2+1.0;  
4304   dgh[3] = 62.3;      
4305   dgh[4] = 62.3+1.0;  
4306   dgh[5] = 192.;    
4307   dgh[6] = 348.;
4308   gMC->Gsvolu("ICU2", "CONS", idtmed[213], dgh, 7);    
4309   gMC->Gspos("ICU2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");  
4310
4311
4312    // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - CARBON PART
4313    //     UPPER PART
4314   
4315   dgh[0] = (ztpc-97.5)/2.;
4316   dgh[1] = 46.2+1.0;      
4317   dgh[2] = 46.2+1.0+1.5;  
4318   dgh[3] = 62.3+1.0;      
4319   dgh[4] = 62.3+1.0+1.5;  
4320   dgh[5] = 12.;    
4321   dgh[6] = 168.;  
4322   gMC->Gsvolu("ICC1", "CONS", idtmed[225], dgh, 7);    
4323   gMC->Gspos("ICC1", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");   
4324   
4325   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE ABSORBER SIDE - CARBON PART
4326   //     LOWER PART
4327   
4328   dgh[0] = (ztpc-97.5)/2.;
4329   dgh[1] = 46.2+1.0;    
4330   dgh[2] = 46.2+1.0+1.5;
4331   dgh[3] = 62.3+1.0;    
4332   dgh[4] = 62.3+1.0+1.5;
4333   dgh[5] = 192.;    
4334   dgh[6] = 348.;  
4335   gMC->Gsvolu("ICC2", "CONS", idtmed[225], dgh, 7);    
4336   gMC->Gspos("ICC2", 1, "ITSV", 0., 0., 97.5+dgh[0], 0, "ONLY");  
4337    
4338   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - COPPER PART
4339   //     UPPER PART
4340     
4341   dgh[0] = 62.1; 
4342   dgh[1] = 74.5;
4343   dgh[2] = 0.5;
4344   dgh[3] = 12.;
4345   dgh[4] = 168.;
4346   gMC->Gsvolu("ICU3", "TUBS", idtmed[213], dgh, 5);    
4347   gMC->Gspos("ICU3", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");  
4348
4349   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - COPPER PART
4350   //     LOWER PART
4351   
4352   dgh[0] = 62.1;  
4353   dgh[1] = 74.5;
4354   dgh[2] = 0.5;
4355   dgh[3] = 192.;
4356   dgh[4] = 348.;
4357   gMC->Gsvolu("ICU4", "TUBS", idtmed[213], dgh, 5);    
4358   gMC->Gspos("ICU4", 1, "ITSV", 0., 0., ztpc+1.5+dgh[2], 0, "ONLY");     
4359      
4360   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - CARBON PART
4361   //     UPPER PART
4362
4363   dgh[0] = 62.1;  
4364   dgh[1] = 74.5;
4365   dgh[2] = 0.75;
4366   dgh[3] = 12.;
4367   dgh[4] = 168.;
4368   gMC->Gsvolu("ICC3", "TUBS", idtmed[225], dgh, 5);    
4369   gMC->Gspos("ICC3", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");   
4370     
4371   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON THE ABSORBER SIDE - CARBON PART
4372   //     LOWER PART
4373
4374   dgh[0] = 62.1;  
4375   dgh[1] = 74.5;
4376   dgh[2] = 0.75;
4377   dgh[3] = 192.;
4378   dgh[4] = 348.;
4379   gMC->Gsvolu("ICC4", "TUBS", idtmed[225], dgh, 5);    
4380   gMC->Gspos("ICC4", 1, "ITSV", 0., 0., ztpc+dgh[2], 0, "ONLY");  
4381   
4382   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
4383   //     THE ABSORBER - COPPER PART - UPPER PART
4384   
4385   dgh[0] = 46.;      
4386   dgh[1] = 46.+1.0;  
4387   dgh[2] = (ztpc-97.5+1.5)/2.;
4388   dgh[3] = 12.;
4389   dgh[4] = 168.;
4390   gMC->Gsvolu("ICU5", "TUBS", idtmed[213], dgh, 5);   
4391   gMC->Gspos("ICU5", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");  
4392   
4393   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
4394   //     THE ABSORBER - COPPER PART - LOWER PART
4395   
4396   dgh[0] = 46.;  
4397   dgh[1] = 46.+1.0;  
4398   dgh[2] = (ztpc-97.5+1.5)/2.;
4399   dgh[3] = 192.;
4400   dgh[4] = 348.;  
4401   gMC->Gsvolu("ICU6", "TUBS", idtmed[213], dgh, 5);   
4402   gMC->Gspos("ICU6", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");    
4403   
4404   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
4405   //     THE ABSORBER - CARBON PART - UPPER PART
4406   
4407   dgh[0] = 46.+1.0;  
4408   dgh[1] = 46.+1.0+1.5; 
4409   dgh[2] = (ztpc-97.5)/2.;
4410   dgh[3] = 12.;
4411   dgh[4] = 168.;  
4412   gMC->Gsvolu("ICC5", "TUBS", idtmed[225], dgh, 5);   
4413   gMC->Gspos("ICC5", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");   
4414   
4415   // --- DEFINE CABLES/COOLING BELOW THE TPC ON THE OTHER SIDE W.R.T.
4416   //     THE ABSORBER - CARBON PART - LOWER PART
4417   
4418   dgh[0] = 46.+1.0;   
4419   dgh[1] = 46.+1.0+1.5;  
4420   dgh[2] = (ztpc-97.5)/2.;
4421   dgh[3] = 192.;
4422   dgh[4] = 348.;  
4423   gMC->Gsvolu("ICC6", "TUBS", idtmed[225], dgh, 5);   
4424   gMC->Gspos("ICC6", 1, "ITSV", 0., 0., -97.5-dgh[2], 0, "ONLY");      
4425
4426   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
4427   //     COPPER PART - UPPER PART
4428     
4429   dgh[0] = 46.;   
4430   dgh[1] = 74.5;
4431   dgh[2] = 0.5;
4432   dgh[3] = 12.;
4433   dgh[4] = 168.;  
4434   gMC->Gsvolu("ICU7", "TUBS", idtmed[213], dgh, 5);   
4435   gMC->Gspos("ICU7", 1, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), 0, "ONLY");  
4436   
4437   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
4438   //     COPPER PART - LOWER PART
4439     
4440   dgh[0] = 46.; 
4441   dgh[1] = 74.5;
4442   dgh[2] = 0.5;
4443   dgh[3] = 192.;
4444   dgh[4] = 348.;   
4445   gMC->Gsvolu("ICU8", "TUBS", idtmed[213], dgh, 5);   
4446   gMC->Gspos("ICU8", 1, "ITSV", 0., 0., -(ztpc+1.5+dgh[2]), 0, "ONLY");      
4447     
4448   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
4449   //     CARBON PART - UPPER PART
4450   
4451   dgh[0] = 46.+1.0;  
4452   dgh[1] = 74.5;
4453   dgh[2] = 0.75;
4454   dgh[3] = 12.;
4455   dgh[4] = 168.;   
4456   gMC->Gsvolu("ICC7", "TUBS", idtmed[225], dgh, 5);   
4457   gMC->Gspos("ICC7", 1, "ITSV", 0., 0., -(ztpc+dgh[2]), 0, "ONLY"); 
4458   
4459   // --- DEFINE CABLES/COOLING BEHIND THE TPC ON OTHER SIDE W.R.T. THE ABSORBER
4460   //     CARBON PART - LOWER PART
4461   
4462   dgh[0] = 46.+1.0;  
4463   dgh[1] = 74.5;
4464   dgh[2] = 0.75;
4465   dgh[3] = 192.;
4466   dgh[4] = 348.;     
4467   gMC->Gsvolu("ICC8", "TUBS", idtmed[225], dgh, 5);   
4468   gMC->Gspos("ICC8", 1, "ITSV", 0., 0., -(ztpc+dgh[2]), 0, "ONLY");        
4469     
4470   // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - UPPER PART
4471   
4472   dgh[0] = 74.5;
4473   dgh[1] = 79.5;
4474   dgh[2] = 2.5;
4475   dgh[3] = 12.;
4476   dgh[4] = 168.;    
4477   gMC->Gsvolu("IHK1", "TUBS", idtmed[264], dgh, 5);  
4478   gMC->Gspos("IHK1", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");   
4479   
4480   // --- DEFINE HOOK TO THE TPC ON OTHER SIDE W.R.T. THE ABSORBER - LOWER PART
4481   
4482   dgh[0] = 74.5;
4483   dgh[1] = 79.5;
4484   dgh[2] = 2.5;
4485   dgh[3] = 192.;
4486   dgh[4] = 348.;    
4487   gMC->Gsvolu("IHK2", "TUBS", idtmed[264], dgh, 5);  
4488   gMC->Gspos("IHK2", 1, "ITSV", 0., 0., -ztpc-dgh[2], 0, "ONLY");      
4489   
4490   // --- DEFINE RAILS BETWEEN THE ITS AND THE TPC
4491   
4492   if (rails == 1) {
4493   
4494      dgh[0] = 2.;          
4495      dgh[1] = 8.;           
4496      dgh[2] = 190.;         
4497      gMC->Gsvolu("IRA1", "BOX ", idtmed[268], dgh, 3);
4498      gMC->Gspos("IRA1", 1, "ITSV", 53.5, 0., -69.5, 0, "ONLY");   
4499      gMC->Gsvolu("IRA2", "BOX ", idtmed[268], dgh, 3);    
4500      gMC->Gspos("IRA2", 1, "ITSV", -53.5, 0., -69.5, 0, "ONLY");    
4501
4502      dgh[0] = 2.-0.5;    // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2      
4503      dgh[1] = 8.-0.5;    // 0.5 was determined in such a way that the aluminum area is 20.9 cm^2       
4504      dgh[2] = 190.;         
4505      gMC->Gsvolu("IRA3", "BOX ", idtmed[205], dgh, 3);   
4506      gMC->Gspos("IRA3", 1, "IRA1", 0., 0., 0., 0, "ONLY");   
4507      gMC->Gsvolu("IRA4", "BOX ", idtmed[205], dgh, 3);     
4508      gMC->Gspos("IRA4", 1, "IRA2", 0., 0., 0., 0, "ONLY");    
4509
4510   }
4511
4512   // --- DEFINE CYLINDERS HOLDING RAILS BETWEEN THE ITS AND THE TPC
4513   
4514   dgh[0] = 56.9;    
4515   dgh[1] = 59.;
4516   dgh[2] = 0.6;    
4517   gMC->Gsvolu("ICYL", "TUBE", idtmed[210], dgh, 3);   
4518   gMC->Gspos("ICYL", 1, "ALIC", 0., 0., 74.1, 0, "ONLY");   
4519   gMC->Gspos("ICYL", 2, "ALIC", 0., 0., -74.1, idrotm[200], "ONLY");  
4520
4521   // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE CYLINDERS
4522
4523   dgh[0] = 0.;        
4524   dgh[1] = 3.;         
4525   dgh[2] = 5.;  // 5. comes from the fact that the volume has to be 567.6/2 cm^3       
4526   gMC->Gsvolu("ISR1", "TUBE", idtmed[284], dgh, 3);   
4527   gMC->Gspos("ISR1", 1, "ITSV", 53.4292, 10.7053, 79.75, 0, "ONLY");    
4528   gMC->Gspos("ISR1", 2, "ITSV", 53.4292, -10.7053, 79.75, 0, "ONLY");   
4529   gMC->Gspos("ISR1", 3, "ITSV", -53.4292, 10.7053, 79.75, 0, "ONLY"); 
4530   gMC->Gspos("ISR1", 4, "ITSV", -53.4292, -10.7053, 79.75, 0, "ONLY");  
4531   gMC->Gspos("ISR1", 5, "ITSV", 53.4292, 10.7053, -79.75, 0, "ONLY");   
4532   gMC->Gspos("ISR1", 6, "ITSV", 53.4292, -10.7053, -79.75, 0, "ONLY");   
4533   gMC->Gspos("ISR1", 7, "ITSV", -53.4292, 10.7053, -79.75, 0, "ONLY"); 
4534   gMC->Gspos("ISR1", 8, "ITSV", -53.4292, -10.7053, -79.75, 0, "ONLY");           
4535   
4536   // --- DEFINE SUPPORTS FOR RAILS ATTACHED TO THE ABSORBER
4537
4538   dgh[0] = 5.;        
4539   dgh[1] = 12.;         
4540   dgh[2] = 5.;         
4541   gMC->Gsvolu("ISR2", "BOX ", idtmed[210], dgh, 3);   
4542   gMC->Gspos("ISR2", 1, "ALIC", 53.5, 0., 125.5, 0, "ONLY");
4543   gMC->Gsvolu("ISR3", "BOX ", idtmed[210], dgh, 3);   
4544   gMC->Gspos("ISR3", 1, "ALIC", -53.5, 0., 125.5, 0, "ONLY");  
4545   
4546   dgh[0] = 5.-2.;        
4547   dgh[1] = 12.-2.;         
4548   dgh[2] = 5.;         
4549   gMC->Gsvolu("ISR4", "BOX ", idtmed[205], dgh, 3);   
4550   gMC->Gspos("ISR4", 1, "ISR2", 0., 0., 0., 0, "ONLY");     
4551   gMC->Gsvolu("ISR5", "BOX ", idtmed[205], dgh, 3);   
4552   gMC->Gspos("ISR5", 1, "ISR3", 0., 0., 0., 0, "ONLY");
4553   
4554   // --- DEFINE SUPPORTS TO ATTACH THE ITS TO THE TPC
4555   
4556   dgh[0] = 0.;        
4557   dgh[1] = 5.;         
4558   dgh[2] = 2.;         
4559   gMC->Gsvolu("ISR6", "TUBE", idtmed[210], dgh, 3);   
4560   gMC->Gspos("ISR6", 1, "ALIC", 0., 54., 77., 0, "ONLY"); 
4561   gMC->Gspos("ISR6", 2, "ALIC", 0., 54., -77., 0, "ONLY"); 
4562   gMC->Gspos("ISR6", 3, "ALIC", 0., -54., -77., 0, "ONLY");                   
4563
4564   // --- Outputs the geometry tree in the EUCLID/CAD format 
4565   
4566   if (fEuclidOut) {
4567     gMC->WriteEuclid("ITSgeometry", "ITSV", 1, 5);
4568   }
4569
4570 }
4571 //_____________________________________________________________________________
4572 void AliITSvPPRasymmFMD::CreateMaterials(){
4573 ////////////////////////////////////////////////////////////////////////
4574   //
4575   // Create ITS materials
4576   //     This function defines the default materials used in the Geant
4577   // Monte Carlo simulations for the geometries AliITSv1, AliITSv3,
4578   // AliITSvPPRasymmFMD.
4579   // In general it is automatically replaced by
4580   // the CreatMaterials routine defined in AliITSv?. Should the function
4581   // CreateMaterials not exist for the geometry version you are using this
4582   // one is used. See the definition found in AliITSv5 or the other routine
4583   // for a complete definition.
4584   //
4585
4586   Int_t   ifield = gAlice->Field()->Integ();
4587   Float_t fieldm = gAlice->Field()->Max();
4588
4589   Float_t tmaxfd = 0.1; // 1.0; // Degree
4590   Float_t stemax = 1.0; // cm
4591   Float_t deemax = 0.1; // 30.0; // Fraction of particle's energy 0<deemax<=1
4592   Float_t epsil  = 1.0E-4; // 1.0; // cm
4593   Float_t stmin  = 0.0; // cm "Default value used"
4594
4595   Float_t tmaxfdSi = 0.1; // .10000E+01; // Degree
4596   Float_t stemaxSi = 0.0075; //  .10000E+01; // cm
4597   Float_t deemaxSi = 0.1; // 0.30000E-02; // Fraction of particle's energy 0<deemax<=1
4598   Float_t epsilSi  = 1.0E-4;// .10000E+01;
4599   Float_t stminSi  = 0.0; // cm "Default value used"
4600
4601   Float_t tmaxfdAir = 0.1; // .10000E+01; // Degree
4602   Float_t stemaxAir = .10000E+01; // cm
4603   Float_t deemaxAir = 0.1; // 0.30000E-02; // Fraction of particle's energy 0<deemax<=1
4604   Float_t epsilAir  = 1.0E-4;// .10000E+01;
4605   Float_t stminAir  = 0.0; // cm "Default value used"
4606
4607   Float_t tmaxfdServ = 1.0; // 10.0; // Degree
4608   Float_t stemaxServ = 1.0; // 0.01; // cm
4609   Float_t deemaxServ = 0.5; // 0.1; // Fraction of particle's energy 0<deemax<=1
4610   Float_t epsilServ  = 1.0E-3; // 0.003; // cm
4611   Float_t stminServ  = 0.0; //0.003; // cm "Default value used"
4612
4613   // Freon
4614   Float_t afre[2]  = { 12.011,18.9984032 };
4615   Float_t zfre[2]  = { 6., 9. };
4616   Float_t wfre[2]  = { 5.,12. };
4617   Float_t densfre  = 1.5;
4618
4619   // --- Define the various materials and media for GEANT --- 
4620   // AliMaterial(Int_t imat, const char* name, Float_t a, Float_t z,
4621   //              Float_t dens, Float_t radl, Float_t absl,
4622   //              Float_t *buf=0, Int_t nwbuf=0)
4623   //AliMedium(Int_t numed, const char *name, Int_t nmat,
4624   //          Int_t isvol, Int_t ifield, Float_t fieldm,
4625   //          Float_t tmaxfd, Float_t stemax, Float_t deemax,
4626   //          Float_t epsil, Float_t stmin, Float_t *ubuf=0, Int_t nbuf=0)
4627   AliMaterial(1,"SI$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4628   AliMedium(1,"SI$",1,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
4629
4630   AliMaterial(2,"SPD SI CHIP$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4631   AliMedium(2,"SPD SI CHIP$",2,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
4632
4633   AliMaterial(3,"SPD SI BUS$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4634   AliMedium(3,"SPD SI BUS$",3,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
4635
4636   AliMaterial(4,"C (M55J)$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
4637   AliMedium(4,"C (M55J)$",4,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4638
4639   AliMaterial(5,"AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4640   AliMedium(5,"AIR$",5,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
4641
4642   AliMaterial(6,"GEN AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4643   AliMedium(6,"GEN AIR$",6,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
4644
4645   AliMaterial(7,"SDD SI CHIP$",0.374952E+02,0.178184E+02,0.24485E+01,0.76931E+01,0.99900E+03);
4646   AliMedium(7,"SDD SI CHIP$",7,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
4647
4648   AliMaterial(9,"SDD C (M55J)$",0.123565E+02,0.64561E+01,0.18097E+01,0.229570E+02,0.99900E+03);
4649   AliMedium(9,"SDD C (M55J)$",9,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4650
4651   AliMaterial(10,"SDD AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4652   AliMedium(10,"SDD AIR$",10,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
4653
4654   AliMaterial(11,"AL$",0.26982E+02,0.13000E+02,0.26989E+01,0.89000E+01,0.99900E+03);
4655   AliMedium(11,"AL$",11,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4656
4657   AliMaterial(12,"WATER$",0.14322E+02,0.72167E+01,0.10000E+01,0.35759E+02,0.94951E+02);
4658   AliMedium(12,"WATER$",12,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4659
4660   AliMixture(13,"Freon$",afre,zfre,densfre,-2,wfre);
4661   AliMedium(13,"Freon$",13,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4662
4663   AliMaterial(14,"COPPER$",0.63546E+02,0.29000E+02,0.89600E+01,0.14300E+01,0.99900E+03);
4664   AliMedium(14,"COPPER$",14,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4665
4666   AliMaterial(15,"CERAMICS$",0.22314E+02,0.10856E+02,0.36000E+01,0.76200E+01,0.31901E+02);
4667   AliMedium(15,"CERAMICS$",15,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4668
4669   AliMaterial(20,"SSD C (M55J)$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
4670   AliMedium(20,"SSD C (M55J)$",20,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4671
4672   AliMaterial(21,"SSD AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4673   AliMedium(21,"SSD AIR$",21,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
4674
4675   AliMaterial(25,"G10FR4$",0.17749E+02,0.88750E+01,0.18000E+01,0.21822E+02,0.99900E+03);
4676   AliMedium(25,"G10FR4$",25,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4677
4678   AliMaterial(26,"GEN C (M55J)$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
4679   AliMedium(26,"GEN C (M55J)$",26,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4680
4681   AliMaterial(27,"GEN Air$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4682   AliMedium(27,"GEN Air$",27,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
4683
4684   AliMaterial(51,"SPD SI$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4685   AliMedium(51,"SPD SI$",51,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
4686
4687   AliMaterial(52,"SPD SI CHIP$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4688   AliMedium(52,"SPD SI CHIP$",52,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
4689
4690   AliMaterial(53,"SPD SI BUS$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4691   AliMedium(53,"SPD SI BUS$",53,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
4692
4693   AliMaterial(54,"SPD C (M55J)$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
4694   AliMedium(54,"SPD C (M55J)$",54,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4695
4696   AliMaterial(55,"SPD AIR$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4697   AliMedium(55,"SPD AIR$",55,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
4698
4699   AliMaterial(56,"SPD KAPTON(POLYCH2)$",0.14000E+02,0.71770E+01,0.13000E+01,0.31270E+02,0.99900E+03);
4700   AliMedium(56,"SPD KAPTON(POLYCH2)$",56,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4701
4702   AliMaterial(61,"EPOXY$",0.17749E+02,0.88750E+01,0.18000E+01,0.21822E+02,0.99900E+03);
4703   AliMedium(61,"EPOXY$",61,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4704
4705   AliMaterial(62,"SILICON$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4706   AliMedium(62,"SILICON$",62,0,ifield,fieldm,tmaxfdSi,stemaxSi,deemaxSi,epsilSi,stminSi);
4707
4708   AliMaterial(63,"KAPTONH(POLYCH2)$",0.14000E+02,0.71770E+01,0.13000E+01,0.31270E+02,0.99900E+03);
4709   AliMedium(63,"KAPTONH(POLYCH2)$",63,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4710
4711   AliMaterial(64,"ALUMINUM$",0.26982E+02,0.13000E+02,0.26989E+01,0.89000E+01,0.99900E+03);
4712   AliMedium(64,"ALUMINUM$",64,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4713
4714   AliMaterial(65,"INOX$",0.55098E+02,0.2572E+02,0.7900E+01,0.17800E+01,0.99900E+03);
4715   AliMedium(65,"INOX$",65,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4716
4717   AliMaterial(68,"ROHACELL$",0.123974E+02,0.62363E+01,0.500E-01,0.80986E+03,0.99900E+03);
4718   AliMedium(68,"ROHACELL$",68,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4719
4720   AliMaterial(69,"SDD C AL (M55J)$",0.138802E+02,0.71315E+01,0.19837E+01,0.176542E+02,0.99900E+03);
4721   AliMedium(69,"SDD C AL (M55J)$",69,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4722
4723   AliMaterial(70,"SDDKAPTON (POLYCH2)$",0.14000E+02,0.71770E+01,0.13000E+01,0.31270E+02,0.99900E+03);
4724   AliMedium(70,"SDDKAPTON (POLYCH2)$",70,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4725
4726   AliMaterial(71,"ITS SANDW A$",0.12011E+02,0.60000E+01,0.2115E+00,0.17479E+03,0.99900E+03);
4727   AliMedium(71,"ITS SANDW A$",71,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4728
4729   AliMaterial(72,"ITS SANDW B$",0.12011E+02,0.60000E+01,0.27000E+00,0.18956E+03,0.99900E+03);
4730   AliMedium(72,"ITS SANDW B$",72,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4731
4732   AliMaterial(73,"ITS SANDW C$",0.12011E+02,0.60000E+01,0.41000E+00,0.90868E+02,0.99900E+03);
4733   AliMedium(73,"ITS SANDW C$",73,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4734
4735   AliMaterial(74,"HEAT COND GLUE$",0.12011E+02,0.60000E+01,0.1930E+01,0.22100E+02,0.99900E+03);
4736   AliMedium(74,"HEAT COND GLUE$",74,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4737
4738   AliMaterial(75,"ELASTO SIL$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4739   AliMedium(75,"ELASTO SIL$",75,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4740
4741   AliMaterial(76,"SPDBUS(AL+KPT+EPOX)$",0.19509E+02,0.96502E+01,0.19060E+01,0.15413E+02,0.99900E+03);
4742   AliMedium(76,"SPDBUS(AL+KPT+EPOX)$",76,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4743                
4744   AliMaterial(77,"SDD X7R capacitors$",0.1157516E+03,0.477056E+02,0.67200E+01,0.14236E+01,0.99900E+03);
4745   AliMedium(77,"SDD X7R capacitors$",77,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4746
4747   AliMaterial(78,"SDD ruby sph. Al2O3$",0.218101E+02,0.106467E+02,0.39700E+01,0.48539E+01,0.99900E+03);
4748   AliMedium(78,"SDD ruby sph. Al2O3$",78,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4749
4750   AliMaterial(79,"SDD SI insensitive$",0.28086E+02,0.14000E+02,0.23300E+01,0.93600E+01,0.99900E+03);
4751   AliMedium(79,"SDD SI insensitive$",79,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4752
4753   AliMaterial(80,"SDD HV microcable$",0.159379E+02,0.78598E+01,0.16087E+01,0.217906E+02,0.99900E+03);
4754   AliMedium(80,"SDD HV microcable$",80,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4755
4756   AliMaterial(81,"SDD LV+signal cable$",0.223689E+02,0.108531+02,0.21035E+01,0.13440E+02,0.99900E+03);
4757   AliMedium(81,"SDD LV+signal cable$",81,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4758
4759   AliMaterial(82,"SDD hybrid microcab$",0.218254E+02,0.106001E+02,0.20502E+01,0.137308E+02,0.99900E+03);
4760   AliMedium(82,"SDD hybrid microcab$",82,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4761
4762   AliMaterial(83,"SDD anode microcab$",0.186438E+02,0.91193E+01,0.17854E+01,0.176451E+02,0.99900E+03);
4763   AliMedium(83,"SDD anode microcab$",83,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4764
4765   AliMaterial(84,"SDD/SSD rings$",0.123565E+02,0.64561E+01,0.18097E+01,0.229570E+02,0.99900E+03);
4766   AliMedium(84,"SDD/SSD rings$",84,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4767
4768   AliMaterial(85,"inox/alum$",0.321502E+02,0.153383E+02,0.30705E+01,0.69197E+01,0.99900E+03);
4769   AliMedium(85,"inox/alum$",85,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4770
4771 // special media to take into account services in the SDD and SSD 
4772 // cones for the FMD
4773
4774 //  AliMaterial(86,"AIRFMDSDD$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4775   Float_t A[13],Z[13],W[13],den;
4776   // From Pierluigi Barberis calculations of 2SPD+1SDD October 2 2002.
4777   Z[0] = 1.0; A[0] = 1.00794; // Hydrogen
4778   Z[1] = 6.0; A[1] = 12.011; // Carbon
4779   Z[2] = 7.0; A[2] = 14.00674; // Nitrogen
4780   Z[3] = 8.0; A[3] = 15.9994; // Oxigen
4781   Z[4] = 14.0; A[4] = 28.0855; // Silicon
4782   Z[5] = 24.0; A[5] = 51.9961; //Cromium
4783   Z[6] = 25.0; A[6] = 54.938049; // Manganese
4784   Z[7] = 26.0; A[7] = 55.845; // Iron
4785   Z[8] = 28.0; A[8] = 58.6934; // Nickle
4786   Z[9] = 29.0; A[9] = 63.546; // Copper
4787   Z[10] = 13.0; A[10] = 26.981539; // Alulminum
4788   Z[11] = 47.0; A[11] = 107.8682; // Silver
4789   Z[12] = 27.0; A[12] = 58.9332; // Cobolt
4790   W[0] = 0.019965;
4791   W[1] = 0.340961;
4792   W[2] = 0.041225;
4793   W[3] = 0.200352;
4794   W[4] = 0.000386;
4795   W[5] = 0.001467;
4796   W[6] = 0.000155;
4797   W[7] = 0.005113;
4798   W[8] = 0.000993;
4799   W[9] = 0.381262;
4800   W[10] = 0.008121;
4801   W[11] = 0.000000;
4802   W[12] = 0.000000;
4803   den = (538.16+6161.7)/(3671.58978); // g/cm^3 Volume does not exclude holes
4804   AliMixture(86,"AIRFMDSDD$",A,Z,den,+11,W);
4805   AliMedium(86,"AIRFMDSDD$",86,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
4806
4807   //AliMaterial(87,"AIRFMDSSD$",0.14610E+02,0.73000E+01,0.12050E-02,0.30423E+05,0.99900E+03);
4808   // From Pierluigi Barberis calculations of SSD October 2 2002.
4809   W[0] = 0.019777;
4810   W[1] = 0.325901;
4811   W[2] = 0.031848;
4812   W[3] = 0.147668;
4813   W[4] = 0.030609;
4814   W[5] = 0.013993;
4815   W[6] = 0.001479;
4816   W[7] = 0.048792;
4817   W[8] = 0.009477;
4818   W[9] = 0.350697;
4819   W[10] = 0.014546;
4820   W[11] = 0.005213;
4821   W[12] = 0.000000;
4822   den = (2180.4+7666.3)/(9753.553259); // volume does not exclude holes
4823   AliMixture(87,"AIRFMDSSD$",A,Z,den,+12,W); 
4824   AliMedium(87,"AIRFMDSSD$",87,0,ifield,fieldm,tmaxfdAir,stemaxAir,deemaxAir,epsilAir,stminAir);
4825
4826   //AliMaterial(88,"ITS SANDW CFMDSDD$",0.12011E+02,0.60000E+01,0.41000E+00,0.90868E+02,0.99900E+03);
4827   // From Pierluigi Barberis calculations of 1SDD+Carbon fiber October 2 2002.
4828   W[0] = 0.016302;
4829   W[1] = 0.461870;
4830   W[2] = 0.033662;
4831   W[3] = 0.163595;
4832   W[4] = 0.000315;
4833   W[5] = 0.001197;
4834   W[6] = 0.000127;
4835   W[7] = 0.004175;
4836   W[8] = 0.000811;
4837   W[9] = 0.311315;
4838   W[10] = 0.006631;
4839   W[11] = 0.000000;
4840   W[12] = 0.000000;
4841   den = (538.16+76671)/(3671.58978); // Volume does not excludeholes
4842   AliMixture(88,"ITS SANDW CFMDSDD$",A,Z,den,+11,W); 
4843   AliMedium(88,"ITS SANDW CFMDSDD$",88,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4844
4845   //AliMaterial(89,"ITS SANDW CFMDSSD$",0.12011E+02,0.60000E+01,0.41000E+00,0.90868E+02,0.99900E+03);
4846   // From Pierluigi Barberis calculations of SSD+Carbon fiber October 2 2002.
4847   W[0] = 0.014065;
4848   W[1] = 0.520598;
4849   W[2] = 0.022650;
4850   W[3] = 0.105018;
4851   W[4] = 0.021768;
4852   W[5] = 0.009952;
4853   W[6] = 0.001051;
4854   W[7] = 0.034700;
4855   W[8] = 0.006740;
4856   W[9] = 0.249406;
4857   W[10] = 0.010345;
4858   W[11] = 0.0003707;
4859   W[12] = 0.000000;
4860   den = (2180.4+11665.)/(3671.58978); // Volume does not exclude holes
4861   AliMixture(89,"ITS SANDW CFMDSSD$",A,Z,den,+12,W); 
4862   AliMedium(89,"ITS SANDW CFMDSSD$",89,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4863
4864   //AliMaterial(97,"SPD SERVICES$",0.12011E+02,0.60000E+01,0.41000E+00,0.90868E+02,0.99900E+03);
4865   // From Pierluigi Barberis calculations of 1SPD October 2 2002.
4866   W[0] = 0.005970;
4867   W[1] = 0.304704;
4868   W[2] = 0.042510;
4869   W[3] = 0.121715;
4870   W[4] = 0.001118;
4871   W[5] = 0.030948;
4872   W[6] = 0.003270;
4873   W[7] = 0.107910;
4874   W[8] = 0.020960;
4875   W[9] = 0.360895;
4876   W[10] = 0.000000;
4877   W[11] = 0.000000;
4878   W[12] = 0.000000;
4879   den = 1251.3/(0.05*2.0*TMath::Pi()*(7.75*7.75 - 3.7*3.7)); // g/cm^3
4880   AliMixture(97,"SPD SERVICES$",A,Z,den,+10,W); 
4881   AliMedium(97,"SPD SERVICES$",97,0,ifield,fieldm,tmaxfd,stemax,deemax,epsil,stmin);
4882
4883
4884   // Special media
4885
4886   AliMaterial(90,"SPD shield$", 12.011, 6., 1.93/10. , 22.1*10., 999);
4887   AliMedium(90,"SPD shield$",90,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ);
4888
4889   AliMaterial(91, "SPD End ladder$", 47.0447, 21.7963, 3.6374, 4.4711, 999); 
4890   AliMedium(91,"SPD End ladder$",91,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ);
4891
4892   AliMaterial(92, "SPD cone$",28.0855, 14., 2.33, 9.36, 999);    
4893   AliMedium(92,"SPD cone$",92,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ);
4894
4895   AliMaterial(93, "SDD End ladder$", 69.9298, 29.8246, 0.3824, 36.5103, 999); 
4896   AliMedium(93,"SDD End ladder$",93,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ);
4897
4898   AliMaterial(94, "SDD cone$",63.546, 29., 1.15, 1.265, 999);
4899   AliMedium(94,"SDD cone$",94,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ);
4900
4901   AliMaterial(95, "SSD End ladder$", 32.0988, 15.4021, 0.68, 35.3238, 999); 
4902   AliMedium(95,"SSD End ladder$",95,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ);
4903   
4904   AliMaterial(96, "SSD cone$",63.546, 29., 1.15, 1.265, 999);
4905   AliMedium(96,"SSD cone$",96,0,ifield,fieldm,tmaxfdServ,stemaxServ,deemaxServ,epsilServ,stminServ);
4906
4907
4908 }
4909 //______________________________________________________________________
4910 void AliITSvPPRasymmFMD::InitAliITSgeom(){
4911 //     Based on the geometry tree defined in Geant 3.21, this
4912 // routine initilizes the Class AliITSgeom from the Geant 3.21 ITS geometry
4913 // sturture.
4914     if(strcmp(gMC->GetName(),"TGeant3")) {
4915         Error("InitAliITSgeom",
4916                 "Wrong Monte Carlo. InitAliITSgeom uses TGeant3 calls");
4917         return;
4918     } // end if
4919     cout << "Reading Geometry transformation directly from Geant 3." << endl;
4920     const Int_t nlayers = 6;
4921     const Int_t ndeep = 9;
4922     Int_t itsGeomTreeNames[nlayers][ndeep],lnam[20],lnum[20];
4923     Int_t nlad[nlayers],ndet[nlayers];
4924     Double_t t[3],r[10];
4925     Float_t  par[20],att[20];
4926     Int_t    npar,natt,idshape,imat,imed;
4927     AliITSGeant3Geometry *ig = new AliITSGeant3Geometry();
4928     Int_t mod,lay,lad,det,i,j,k;
4929     Char_t names[nlayers][ndeep][4];
4930     Int_t itsGeomTreeCopys[nlayers][ndeep];
4931     if(fMinorVersion == 1){ // Option A
4932     Char_t *namesA[nlayers][ndeep] = {
4933      {"ALIC","ITSV","ITSD","IT12","I12A","I10A","I103","I101","ITS1"}, // lay=1
4934      {"ALIC","ITSV","ITSD","IT12","I12A","I20A","I1D3","I1D1","ITS2"}, // lay=2
4935      {"ALIC","ITSV","ITSD","IT34","I004","I302","ITS3","    ","    "}, // lay=3
4936      {"ALIC","ITSV","ITSD","IT34","I005","I402","ITS4","    ","    "}, // lay=4
4937      {"ALIC","ITSV","ITSD","IT56","I565","I562","ITS5","    ","    "}, // lay=5
4938      {"ALIC","ITSV","ITSD","IT56","I569","I566","ITS6","    ","    "}};// lay=6
4939     Int_t itsGeomTreeCopysA[nlayers][ndeep]= {{1,1,1,1,10, 2, 4,1,1},// lay=1
4940                                               {1,1,1,1,10, 4, 4,1,1},// lay=2
4941                                               {1,1,1,1,14, 6, 1,0,0},// lay=3
4942                                               {1,1,1,1,22, 8, 1,0,0},// lay=4
4943                                               {1,1,1,1,34,22, 1,0,0},// lay=5
4944                                               {1,1,1,1,38,25, 1,0,0}};//lay=6
4945     for(i=0;i<nlayers;i++)for(j=0;j<ndeep;j++){
4946         for(k=0;k<4;k++) names[i][j][k] = namesA[i][j][k];
4947         itsGeomTreeCopys[i][j] = itsGeomTreeCopysA[i][j];
4948     } // end for i,j
4949     }else if(fMinorVersion == 2){ // Option B
4950     Char_t *namesB[nlayers][ndeep] = {
4951      {"ALIC","ITSV","ITSD","IT12","I12B","I10B","I107","I101","ITS1"}, // lay=1
4952      {"ALIC","ITSV","ITSD","IT12","I12B","I20B","I1D7","I1D1","ITS2"}, // lay=2
4953      {"ALIC","ITSV","ITSD","IT34","I004","I302","ITS3","    ","    "}, // lay=3
4954      {"ALIC","ITSV","ITSD","IT34","I005","I402","ITS4","    ","    "}, // lay=4
4955      {"ALIC","ITSV","ITSD","IT56","I565","I562","ITS5","    ","    "}, // lay=5
4956      {"ALIC","ITSV","ITSD","IT56","I569","I566","ITS6","    ","    "}};// lay=6
4957     Int_t itsGeomTreeCopysB[nlayers][ndeep]= {{1,1,1,1,10, 2, 4,1,1},// lay=1
4958                                               {1,1,1,1,10, 4, 4,1,1},// lay=2
4959                                               {1,1,1,1,14, 6, 1,0,0},// lay=3
4960                                               {1,1,1,1,22, 8, 1,0,0},// lay=4
4961                                               {1,1,1,1,34,22, 1,0,0},// lay=5
4962                                               {1,1,1,1,38,25, 1,0,0}};//lay=6
4963     for(i=0;i<nlayers;i++)for(j=0;j<ndeep;j++){
4964         for(k=0;k<4;k++) names[i][j][k] = namesB[i][j][k];
4965         itsGeomTreeCopys[i][j] = itsGeomTreeCopysB[i][j];
4966     } // end for i,j
4967     } // end if fMinorVersion
4968     // Sorry, but this is not very pritty code. It should be replaced
4969     // at some point with a version that can search through the geometry
4970     // tree its self.
4971     cout << "Reading Geometry informaton from Geant3 common blocks" << endl;
4972     for(i=0;i<20;i++) lnam[i] = lnum[i] = 0;
4973     for(i=0;i<nlayers;i++)for(j=0;j<ndeep;j++) 
4974         itsGeomTreeNames[i][j] = ig->StringToInt(names[i][j]);
4975     mod = 0;
4976     for(i=0;i<nlayers;i++){
4977         k = 1;
4978         for(j=0;j<ndeep;j++) if(itsGeomTreeCopys[i][j]!=0)
4979             k *= TMath::Abs(itsGeomTreeCopys[i][j]);
4980         mod += k;
4981     } // end for i
4982
4983     if(fITSgeom!=0) delete fITSgeom;
4984     nlad[0]=20;nlad[1]=40;nlad[2]=14;nlad[3]=22;nlad[4]=34;nlad[5]=38;
4985     ndet[0]=4;ndet[1]=4;ndet[2]=6;ndet[3]=8;ndet[4]=22;ndet[5]=25;
4986     fITSgeom = new AliITSgeom(0,6,nlad,ndet,mod);
4987     mod = -1;
4988     for(lay=1;lay<=nlayers;lay++){
4989         for(j=0;j<ndeep;j++) lnam[j] = itsGeomTreeNames[lay-1][j];
4990         for(j=0;j<ndeep;j++) lnum[j] = itsGeomTreeCopys[lay-1][j];
4991         switch (lay){
4992         case 1: case 2: // layers 1 and 2 are a bit special
4993             lad = 0;
4994             for(j=1;j<=itsGeomTreeCopys[lay-1][4];j++){
4995                 lnum[4] = j;
4996                 for(k=1;k<=itsGeomTreeCopys[lay-1][5];k++){
4997                     lad++;
4998                     lnum[5] = k;
4999                     for(det=1;det<=itsGeomTreeCopys[lay-1][6];det++){
5000                         lnum[6] = det;
5001                         mod++;
5002                         ig->GetGeometry(ndeep,lnam,lnum,t,r,idshape,npar,natt,
5003                                         par,att,imat,imed);
5004                         fITSgeom->CreatMatrix(mod,lay,lad,det,kSPD,t,r);
5005                         if(!(fITSgeom->IsShapeDefined((Int_t)kSPD)))
5006                              fITSgeom->ReSetShape(kSPD,
5007                                          new AliITSgeomSPD425Short(npar,par));
5008                     } // end for det
5009                 } // end for k
5010             } // end for j
5011             break;
5012         case 3: case 4: case 5: case 6: // layers 3-6
5013             lnum[6] = 1;
5014             for(lad=1;lad<=itsGeomTreeCopys[lay-1][4];lad++){
5015                 lnum[4] = lad;
5016                 for(det=1;det<=itsGeomTreeCopys[lay-1][5];det++){
5017                     lnum[5] = det;
5018                     mod++;
5019                     ig->GetGeometry(7,lnam,lnum,t,r,idshape,npar,natt,
5020                                     par,att,imat,imed);
5021                     switch (lay){
5022                     case 3: case 4:
5023                         fITSgeom->CreatMatrix(mod,lay,lad,det,kSDD,t,r);
5024                         if(!(fITSgeom->IsShapeDefined(kSDD))) 
5025                             fITSgeom->ReSetShape(kSDD,
5026                                             new AliITSgeomSDD256(npar,par));
5027                             break;
5028                         case 5:
5029                             fITSgeom->CreatMatrix(mod,lay,lad,det,kSSD,t,r);
5030                             if(!(fITSgeom->IsShapeDefined(kSSD))) 
5031                                 fITSgeom->ReSetShape(kSSD,
5032                                          new AliITSgeomSSD275and75(npar,par));
5033                             break;
5034                         case 6:
5035                             fITSgeom->CreatMatrix(mod,lay,lad,det,kSSD,t,r);
5036                             if(!(fITSgeom->IsShapeDefined(kSSD))) 
5037                                 fITSgeom->ReSetShape(kSSD,
5038                                          new AliITSgeomSSD75and275(npar,par));
5039                             break;
5040                         } // end switch
5041                 } // end for det
5042             } // end for lad
5043             break;
5044         } // end switch
5045     } // end for lay
5046     return;
5047 }
5048 //_____________________________________________________________________________
5049 void AliITSvPPRasymmFMD::Init(){
5050 ////////////////////////////////////////////////////////////////////////
5051 //     Initialise the ITS after it has been created.
5052 ////////////////////////////////////////////////////////////////////////
5053     Int_t i;
5054
5055     cout << endl;
5056     for(i=0;i<26;i++) cout << "*";
5057     cout << " ITSvPPRasymm" << fMinorVersion << "_Init ";
5058     for(i=0;i<25;i++) cout << "*";cout << endl;
5059 //
5060     if(fRead[0]=='\0') strncpy(fRead,fEuclidGeomDet,60);
5061     if(fWrite[0]=='\0') strncpy(fWrite,fEuclidGeomDet,60);
5062     if(fITSgeom!=0) delete fITSgeom;
5063     fITSgeom = new AliITSgeom();
5064     if(fGeomDetIn) fITSgeom->ReadNewFile(fRead);
5065     if(!fGeomDetIn) this->InitAliITSgeom();
5066     if(fGeomDetOut) fITSgeom->WriteNewFile(fWrite);
5067     AliITS::Init();
5068 //
5069     for(i=0;i<72;i++) cout << "*";
5070     cout << endl;
5071     fIDMother = gMC->VolId("ITSV"); // ITS Mother Volume ID.
5072 }
5073 //_____________________________________________________________________________
5074 void AliITSvPPRasymmFMD::SetDefaults(){
5075     // sets the default segmentation, response, digit and raw cluster classes
5076     const Float_t kconv = 1.0e+04; // convert cm to microns
5077
5078     cout << "AliITSvPPRasymmFMD::SetDefaults" << endl;
5079
5080     AliITSDetType *iDetType;
5081     AliITSgeomSPD  *s0;
5082     AliITSgeomSDD  *s1;
5083     AliITSgeomSSD  *s2;
5084     Int_t i;
5085     Float_t bx[256],bz[280];
5086
5087     //SPD
5088     iDetType=DetType(kSPD);
5089     s0 = (AliITSgeomSPD*) fITSgeom->GetShape(kSPD);// Get shape info. Do it this way for now.
5090     AliITSresponse *resp0=new AliITSresponseSPD();
5091     SetResponseModel(kSPD,resp0);
5092     AliITSsegmentationSPD *seg0=new AliITSsegmentationSPD(fITSgeom);
5093     seg0->SetDetSize(s0->GetDx()*2.*kconv, // base this on AliITSgeomSPD
5094                      s0->GetDz()*2.*kconv, // for now.
5095                      s0->GetDy()*2.*kconv); // x,z,y full width in microns.
5096     seg0->SetNPads(256,160);// Number of Bins in x and z
5097     for(i=000;i<256;i++) bx[i] =  50.0; // in x all are 50 microns.
5098     for(i=000;i<160;i++) bz[i] = 425.0; // most are 425 microns except below
5099     for(i=160;i<280;i++) bz[i] =   0.0; // Outside of detector.
5100     bz[ 31] = bz[ 32] = 625.0; // first chip boundry
5101     bz[ 63] = bz[ 64] = 625.0; // first chip boundry
5102     bz[ 95] = bz[ 96] = 625.0; // first chip boundry
5103     bz[127] = bz[128] = 625.0; // first chip boundry
5104     bz[160] = 425.0; // Set so that there is no zero pixel size for fNz.
5105     seg0->SetBinSize(bx,bz); // Based on AliITSgeomSPD for now.
5106     SetSegmentationModel(kSPD,seg0);
5107     // set digit and raw cluster classes to be used
5108     const char *kData0=(iDetType->GetResponseModel())->DataType();
5109     if (strstr(kData0,"real")) iDetType->ClassNames("AliITSdigit",
5110                                                     "AliITSRawClusterSPD");
5111     else iDetType->ClassNames("AliITSdigitSPD","AliITSRawClusterSPD");
5112 //    SetSimulationModel(kSPD,new AliITSsimulationSPD(seg0,resp0));
5113 //    iDetType->ReconstructionModel(new AliITSClusterFinderSPD());
5114
5115     // SDD
5116     iDetType=DetType(kSDD);
5117     s1 = (AliITSgeomSDD*) fITSgeom->GetShape(kSDD);// Get shape info. Do it this way for now.
5118     AliITSresponseSDD *resp1=new AliITSresponseSDD("simulated");
5119     SetResponseModel(kSDD,resp1);
5120     AliITSsegmentationSDD *seg1=new AliITSsegmentationSDD(fITSgeom,resp1);
5121     seg1->SetDetSize(s1->GetDx()*kconv, // base this on AliITSgeomSDD
5122                      s1->GetDz()*2.*kconv, // for now.
5123                      s1->GetDy()*2.*kconv); // x,z,y full width in microns.
5124     seg1->SetNPads(256,256);// Use AliITSgeomSDD for now
5125     SetSegmentationModel(kSDD,seg1);
5126     const char *kData1=(iDetType->GetResponseModel())->DataType();
5127     const char *kopt=iDetType->GetResponseModel()->ZeroSuppOption();
5128     if((!strstr(kopt,"2D")) && (!strstr(kopt,"1D")) || strstr(kData1,"real") ){
5129         iDetType->ClassNames("AliITSdigit","AliITSRawClusterSDD");
5130     } else iDetType->ClassNames("AliITSdigitSDD","AliITSRawClusterSDD");
5131 //    SetSimulationModel(kSDD,new AliITSsimulationSDD(seg1,resp1));
5132 //    iDetType->ReconstructionModel(new AliITSClusterFinderSDD());
5133
5134     // SSD  Layer 5
5135     iDetType=DetType(kSSD);
5136     s2 = (AliITSgeomSSD*) fITSgeom->GetShape(kSSD);// Get shape info. Do it this way for now.
5137     AliITSresponse *resp2=new AliITSresponseSSD("simulated");
5138     SetResponseModel(kSSD,resp2);
5139     AliITSsegmentationSSD *seg2=new AliITSsegmentationSSD(fITSgeom);
5140     seg2->SetDetSize(s2->GetDx()*2.*kconv, // base this on AliITSgeomSSD
5141                      s2->GetDz()*2.*kconv, // for now.
5142                      s2->GetDy()*2.*kconv); // x,z,y full width in microns.
5143     seg2->SetPadSize(95.,0.); // strip x pitch in microns
5144     seg2->SetNPads(768,0); // number of strips on each side.
5145     seg2->SetAngles(0.0075,0.0275); // strip angels rad P and N side.
5146     seg2->SetAnglesLay5(0.0075,0.0275); // strip angels rad P and N side.
5147     seg2->SetAnglesLay6(0.0275,0.0075); // strip angels rad P and N side.
5148     SetSegmentationModel(kSSD,seg2); 
5149     const char *kData2=(iDetType->GetResponseModel())->DataType();
5150     if(strstr(kData2,"real") ) iDetType->ClassNames("AliITSdigit",
5151                                                     "AliITSRawClusterSSD");
5152     else iDetType->ClassNames("AliITSdigitSSD","AliITSRawClusterSSD");
5153 //    SetSimulationModel(kSSD,new AliITSsimulationSSD(seg2,resp2));
5154 //    iDetType->ReconstructionModel(new AliITSClusterFinderSSD());
5155
5156     if(kNTYPES>3){
5157         Warning("SetDefaults",
5158                 "Only the four basic detector types are initialised!");
5159     }// end if
5160     return;
5161 }
5162 //______________________________________________________________________
5163 void AliITSvPPRasymmFMD::DrawModule(){
5164 ////////////////////////////////////////////////////////////////////////
5165 //     Draw a shaded view of the FMD version 8.
5166 ////////////////////////////////////////////////////////////////////////
5167   
5168   // Set everything unseen
5169   gMC->Gsatt("*", "seen", -1);
5170   // 
5171   // Set ALIC mother visible
5172   gMC->Gsatt("ALIC","SEEN",0);
5173   //
5174   // Set the volumes visible
5175   gMC->Gsatt("ITSD","SEEN",0);
5176   gMC->Gsatt("ITS1","SEEN",1);
5177   gMC->Gsatt("ITS2","SEEN",1);
5178   gMC->Gsatt("ITS3","SEEN",1);
5179   gMC->Gsatt("ITS4","SEEN",1);
5180   gMC->Gsatt("ITS5","SEEN",1);
5181   gMC->Gsatt("ITS6","SEEN",1);
5182
5183   gMC->Gsatt("IPCB","SEEN",1);
5184   gMC->Gsatt("ICO2","SEEN",1);
5185   gMC->Gsatt("ICER","SEEN",0);
5186   gMC->Gsatt("ISI2","SEEN",0);
5187   gMC->Gsatt("IPLA","SEEN",0);
5188   gMC->Gsatt("ICO3","SEEN",0);
5189   gMC->Gsatt("IEPX","SEEN",0);
5190   gMC->Gsatt("ISI3","SEEN",1);
5191   gMC->Gsatt("ISUP","SEEN",0);
5192   gMC->Gsatt("ICHO","SEEN",0);
5193   gMC->Gsatt("ICMO","SEEN",0);
5194   gMC->Gsatt("ICMD","SEEN",0);
5195   gMC->Gsatt("ICCO","SEEN",1);
5196   gMC->Gsatt("ICCM","SEEN",0);
5197   gMC->Gsatt("ITMD","SEEN",0);
5198   gMC->Gsatt("ITTT","SEEN",1);
5199
5200   //
5201   gMC->Gdopt("hide", "on");
5202   gMC->Gdopt("shad", "on");
5203   gMC->Gsatt("*", "fill", 7);
5204   gMC->SetClipBox(".");
5205   gMC->SetClipBox("*", 0, 300, -300, 300, -300, 300);
5206   gMC->DefaultRange();
5207   gMC->Gdraw("alic", 40, 30, 0, 11, 10, .07, .07);
5208   gMC->Gdhead(1111, "Inner Tracking System Version 1");
5209   gMC->Gdman(17, 6, "MAN");
5210 }
5211 //_____________________________________________________________________________
5212 void AliITSvPPRasymmFMD::StepManager(){
5213 ////////////////////////////////////////////////////////////////////////
5214 //    Called for every step in the ITS, then calles the AliITShit class
5215 // creator with the information to be recoreded about that hit.
5216 //     The value of the macro ALIITSPRINTGEOM if set to 1 will allow the
5217 // printing of information to a file which can be used to create a .det
5218 // file read in by the routine CreateGeometry(). If set to 0 or any other
5219 // value except 1, the default behavior, then no such file is created nor
5220 // it the extra variables and the like used in the printing allocated.
5221 ////////////////////////////////////////////////////////////////////////
5222     Int_t         copy, id;
5223     TLorentzVector position, momentum;
5224     static TLorentzVector position0;
5225     static Int_t stat0=0;
5226     if((id=gMC->CurrentVolID(copy) == fIDMother)&&
5227        (gMC->IsTrackEntering()||gMC->IsTrackExiting())){
5228         copy = fTrackReferences->GetEntriesFast();
5229         TClonesArray &lTR = *fTrackReferences;
5230         // Fill TrackReference structure with this new TrackReference.
5231         new(lTR[copy]) AliTrackReference(gAlice->CurrentTrack());
5232     } // if Outer ITS mother Volume
5233     if(!(this->IsActive())){
5234         return;
5235     } // end if !Active volume.
5236     Int_t   copy1,copy2;  
5237 //    Float_t hits[8];
5238     Int_t   vol[5];
5239     TClonesArray &lhits = *fHits;
5240     //
5241     // Track status
5242     vol[3] = 0;
5243     vol[4] = 0;
5244     if(gMC->IsTrackInside())      vol[3] +=  1;
5245     if(gMC->IsTrackEntering())    vol[3] +=  2;
5246     if(gMC->IsTrackExiting())     vol[3] +=  4;
5247     if(gMC->IsTrackOut())         vol[3] +=  8;
5248     if(gMC->IsTrackDisappeared()) vol[3] += 16;
5249     if(gMC->IsTrackStop())        vol[3] += 32;
5250     if(gMC->IsTrackAlive())       vol[3] += 64;
5251     //
5252     // Fill hit structure.
5253     if(!(gMC->TrackCharge())) return;
5254     //
5255     // Only entering charged tracks
5256     if((id = gMC->CurrentVolID(copy)) == fIdSens[0]) {
5257         vol[0] = 1;
5258         id = gMC->CurrentVolOffID(2,copy);
5259         //detector copy in the ladder = 1<->4  (ITS1 < I101 < I103 < I10A)
5260         vol[1] = copy;
5261         gMC->CurrentVolOffID(3,copy1);
5262         //ladder copy in the module   = 1<->2  (I10A < I12A)
5263         gMC->CurrentVolOffID(4,copy2);
5264         //module copy in the layer    = 1<->10 (I12A < IT12)
5265         vol[2] = copy1+(copy2-1)*2;//# of ladders in one module  = 2
5266     } else if(id == fIdSens[1]){
5267         vol[0] = 2;
5268         id = gMC->CurrentVolOffID(2,copy);
5269         //detector copy in the ladder = 1<->4  (ITS2 < I1D1 < I1D3 < I20A)
5270         vol[1] = copy;
5271         gMC->CurrentVolOffID(3,copy1);
5272         //ladder copy in the module   = 1<->4  (I20A < I12A)
5273         gMC->CurrentVolOffID(4,copy2);
5274         //module copy in the layer    = 1<->10 (I12A < IT12)
5275         vol[2] = copy1+(copy2-1)*4;//# of ladders in one module  = 4
5276     } else if(id == fIdSens[2]){
5277         vol[0] = 3;
5278         id = gMC->CurrentVolOffID(1,copy);
5279         //detector copy in the ladder = 1<->6  (ITS3 < I302 < I004)
5280         vol[1] = copy;
5281         id = gMC->CurrentVolOffID(2,copy);
5282         //ladder copy in the layer    = 1<->14 (I004 < IT34)
5283         vol[2] = copy;
5284     } else if(id == fIdSens[3]){
5285         vol[0] = 4;
5286         id = gMC->CurrentVolOffID(1,copy);
5287         //detector copy in the ladder = 1<->8  (ITS4 < I402 < I005)
5288         vol[1] = copy;
5289         id = gMC->CurrentVolOffID(2,copy);
5290         //ladder copy in the layer    = 1<->22 (I005 < IT34))
5291         vol[2] = copy;
5292     }else if(id == fIdSens[4]){
5293         vol[0] = 5;
5294         id = gMC->CurrentVolOffID(1,copy);
5295         //detector copy in the ladder = 1<->22  (ITS5 < I562 < I565)
5296         vol[1] = copy;
5297         id = gMC->CurrentVolOffID(2,copy);
5298         //ladder copy in the layer    = 1<->34 (I565 < IT56)
5299         vol[2] = copy;
5300     }else if(id == fIdSens[5]){
5301         vol[0] = 6;
5302         id = gMC->CurrentVolOffID(1,copy);
5303         //detector copy in the ladder = 1<->25  (ITS6 < I566 < I569)
5304         vol[1] = copy;
5305         id = gMC->CurrentVolOffID(2,copy);
5306         //ladder copy in the layer = 1<->38 (I569 < IT56)
5307         vol[2] = copy;
5308     } else {
5309         return; // not an ITS volume?
5310     } // end if/else if (gMC->CurentVolID(copy) == fIdSens[i])
5311     //
5312     gMC->TrackPosition(position);
5313     gMC->TrackMomentum(momentum);
5314 /*
5315     hits[0]=position[0];
5316     hits[1]=position[1];
5317     hits[2]=position[2];
5318     hits[3]=momentum[0];
5319     hits[4]=momentum[1];
5320     hits[5]=momentum[2];
5321     hits[6]=gMC->Edep();
5322     hits[7]=gMC->TrackTime();
5323 */
5324     vol[4] = stat0;
5325     if(gMC->IsTrackEntering()){
5326         position0 = position;
5327         stat0 = vol[3];
5328     } // end if IsEntering
5329     // Fill hit structure with this new hit.
5330 //    new(lhits[fNhits++]) AliITShit(fIshunt,gAlice->CurrentTrack(),vol,hits);
5331     new(lhits[fNhits++]) AliITShit(fIshunt,gAlice->CurrentTrack(),vol,
5332                                    gMC->Edep(),gMC->TrackTime(),position,
5333                                    position0,momentum);
5334     //
5335     position0 = position;
5336     stat0 = vol[3];
5337
5338     return;
5339 }