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