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