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