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