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