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