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