New version and structure of ITS V11 geometry. Work still in progress.
[u/mrichter/AliRoot.git] / ITS / AliITSGeometrySSDCone.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 $Id$
19 */
20
21 #include <Riostream.h>
22 #include <stdio.h>
23 #include <stdlib.h>
24 #include <TMath.h>
25 #include <TGeometry.h>
26 #include <TNode.h>
27 #include <TTUBE.h>
28 #include <TTUBS.h>
29 #include <TPCON.h>
30 #include <TFile.h>    // only required for Tracking function?
31 #include <TCanvas.h>
32 #include <TObjArray.h>
33 #include <TLorentzVector.h>
34 #include <TObjString.h>
35 #include <TClonesArray.h>
36 #include <TBRIK.h>
37 #include <TSystem.h>
38 #include <TVector3.h>
39
40 #include "AliITSGeometrySSDCone.h"
41
42 ClassImp(AliITSGeometrySSDCone)
43
44 //______________________________________________________________________
45 AliITSGeometrySSDCone::AliITSGeometrySSDCone(){
46     //Default Constructor for SSD Cone geometry
47
48     SetScalemm();
49 }
50 //______________________________________________________________________
51 AliITSGeometrySSDCone::AliITSGeometrySSDCone(TVector3 *&tran,
52                                              const char moth[3],Int_t mat0){
53     //Standard Constructor for SSD Cone geometry
54     // Inputs:
55     //   Double_t z0  Z-axis shift of this volume
56     // Outputs:
57     //   none.
58     // Return:
59     //   none.
60     Double_t t; // some general angle and coordinates [degrees].
61
62     th = 13.0; //mm, Thickness of Rohacell+carbon fiber
63     ct=1.5; //mm, Carbon finber thickness
64     r=15.0; // mm, Radius of curvature.
65     tc=51.0; // angle of SSD cone [degrees].
66     sintc=Sind(tc);costc=Cosd(tc);tantc=Tand(tc);
67     z0=0.0;zcylinder=170.0;zpost=196.0;
68     Routmax=0.5*985.0;RoutHole=0.5*965.0;Routmin=0.5*945.0;
69     Rholemax=0.5*890.0;Rholemin=0.5*740.0;
70     RPostmin=316.0;dRPost=23.0;zpostmax=196.0;phi0post=30.0;
71     Rinmax=0.5*590.0;Rincylinder=0.5*597.0;RinHole=0.5*575.0;
72     Rinmin=0.5*562.0;dzin=15.0;
73     nspoaks=12;ninscrews=40;npost=4;nmounts=4;
74     SSDcf=mat0+1; // SSD support cone Carbon Fiber materal number.
75     SSDfs=mat0+2; // SSD support cone inserto stesalite 4411w.
76     SSDfo=mat0+3; // SSD support cone foam, Rohacell 50A.
77     SSDsw=mat0+4; // SSD support cone screw material,Stainless steal
78     ncse=0; // number of screw ends (copy number)
79     ncpe=0; // number of pin end (copy number)
80     ncst=0; // number of screw tops (copy number)
81
82     SetScalemm();
83     // Lets start with the upper left outer carbon fiber surface.
84     // Between za[2],rmaxa[2] and za[4],rmaxa[4] there is a curved section
85     // given by rmaxa = rmaxa[2]-r*Sind(t) for 0<=t<=tc and 
86     // za = za[2] + r*Cosd(t) for 0<=t<=tc. Simularly between za[1],rmina[1
87     // and za[3],rmina[3] there is a curve section given by
88     // rmina = rmina[1]-r*Sind(t) for 0<=t<=tc and za = za[1]+r&Sind(t)
89     // for t<=0<=tc. These curves have been replaced by straight lines
90     // between the equivelent points for simplicity.
91     Double_t dza = th/sintc-(Routmax-Routmin)/tantc;
92     if(dza<=0){ // The number or order of the points are in error for a proper
93         // call to pcons!
94         Error("SSDcone","The definition of the points for a call to PCONS is"
95               " in error. abort.");
96         return;
97     } // end if
98     dphia=360.0;
99     phi0a= 0.0;
100     za[0]    = z0;
101     rmina[0] = Routmin;
102     rmaxa[0] = Routmax;
103     za[1]    = za[0]+13.5-5.0 - dza; // za[2] - dza.
104     rmina[1] = rmina[0];
105     rmaxa[1] =rmaxa[0];
106     za[2]    = za[0]+13.5-5.0; // From Drawing ALR-0767 and ALR-0767/3
107     rmaxa[2] = rmaxa[0];
108     za[3]    = za[1]+r*sintc;
109     rmina[3] = rmina[1]-r*sintc;
110     rmina[2] = rmina[1]+(rmina[3]-rmina[1])*(za[2]-za[1])/(za[3]-za[1]);
111     za[4]    = za[2]+r*sintc;
112     rmaxa[4] = rmaxa[2]-r*sintc;
113     rmaxa[3] = rmaxa[2]+(rmaxa[4]-rmaxa[2])*(za[3]-za[2])/(za[4]-za[2]);
114     rmina[5] = Rholemax;
115     za[5]    = za[3]+(za[4]-za[3])*(rmina[5]-rmina[3])/(rmina[4]-rmina[3]);
116     rmina[4] = rmina[3]+(rmina[5]-rmina[3])*(za[4]-za[3])/(za[5]-za[3]);
117     za[6]    = th/sintc+za[5];
118     rmina[6] = Rholemax;
119     rmaxa[6] = rmina[6];
120     rmaxa[5] = rmaxa[4]+(rmaxa[6]-rmaxa[4])*(za[5]-za[4])/(za[6]-za[4]);
121     //
122     // Now lets define the Inserto Stesalite 4411w material volume.
123     dphib=360.0;
124     phi0b= 0.0;
125     zb[0] = z0;
126     rminb[0] = rmina[0]+ct;
127     rmaxb[0] = rmaxa[0]-ct;
128     zb[1] = za[1];
129     rminb[1] = rminb[0];
130     rmaxb[1] = rmaxb[0];
131     zb[2] = za[2];
132     rmaxb[2] = rmaxb[1];
133     zb[3] = za[4] - ct/sintc;
134     rmaxb[3] = rmaxb[2] - (r-ct)*sintc;
135     zb[4] = za[3]+ct/sintc;
136     rminb[4] = rminb[1]-(r-ct)*sintc;
137     rminb[2] = rminb[1]+(rminb[4]-rminb[1])*(zb[2]-zb[1])/(zb[4]-zb[1]);
138     rminb[3] = rminb[1]+(rminb[4]-rminb[1])*(zb[3]-zb[1])/(zb[4]-zb[1]);
139     zb[5] = zb[4]+(ct-2.*ct)/sintc;
140     rminb[5] = rminb[4]+(ct-2.*ct)*tantc;
141     rmaxb[5] = rminb[5];
142     rmaxb[4] = rmaxb[3]+(rmaxb[5]-rmaxb[3])*(zb[4]-zb[3])/(zb[5]-zb[3]);
143     //
144     // Now lets define the Rohacell foam material volume.
145     dphic=360.0;
146     phi0c= 0.0;
147     zc[0] = zb[4];
148     rminc[0] = rminb[4];
149     rmaxc[0] = rminc[0];
150     zc[1] = zb[5];
151     rmaxc[1] = rminb[5];
152     zc[2] = za[5] + ct/sintc;
153     rminc[2] = rmina[5]+ct; // leave space for carbon fiber covering hole.
154     rminc[1] = rminc[0] +(rminc[2]-rminc[0])*(zc[1]-zc[0])/(zc[2]-zc[0]);
155     zc[3] = za[6] - ct/sintc;
156     rminc[3] = rmina[6]+ct;
157     rmaxc[3] = rminc[3];
158     rmaxc[2] = rmaxc[1]+(rmaxc[3]-rmaxc[1])*(zc[2]-zc[1])/(zc[3]-zc[1]);
159     //
160     // In volume SCB, th Inserto Stesalite 4411w material volume, there
161     // are a number of Stainless steel screw and pin studs which will be
162     // filled with screws/studs.
163     rmine=0.0,rmaxe=6.0,dze=0.5*10.0; // mm
164     rmine2=0.0;rmaxe2=6.0;dze2=0.5*12.0; // mm
165     //
166     // There is no carbon fiber between this upper left section and the
167     // SSD spoaks. We remove it by replacing it with Rohacell foam.
168     t = ct/(0.5*(Rholemax+Rholemin));// It is not posible to get the
169     // carbon fiber thickness uniform in this phi direction. We can only
170     // make it a fixed angular thickness.
171     t *= 180.0/TMath::Pi();
172     dphif = 5.0 - 2.0*t; // degrees
173     phi0f = 12.5+t; // degrees see drawing ALR-0767.
174     zf[0] = zc[2];
175     rminf[0] = rminc[3];
176     rmaxf[0] = rminf[0];
177     rminf[1] = rmina[5];
178     rmaxf[1] = rminf[0];
179     zf[1] = zc[0]+(zc[2]-zc[0])*(rminf[1]-rminc[0])/(rminc[2]-rminc[0]);
180     zf[2] = zc[3];
181     rminf[2] = rminf[1];
182     rmaxf[2] = rmaxf[1];
183     zf[3] = zc[1]+(zc[3]-zc[1])*(rmaxf[3]-rmaxc[1])/(rmaxc[3]-rmaxc[1]);
184     rminf[3] = rmina[5];
185     rmaxf[3] = rminf[3];
186     //=================================================================
187     // Now for the spoak part of the SSD cone.
188     // It is not posible to inclue the radius of curvature between
189     // the spoak part and the upper left part of the SSD cone or lowwer right
190     // part. This would be discribed by the following curves.
191     // R = Rmax - (5mm)*Sin(t) phi = phi0+(5mm*180/(Pi*RoutHole))*Sin(t) 
192     // where 0<=t<=90 For the inner curve a simular equiation holds.
193     phi0g = 12.5; // degrees see drawing ALR-0767.
194     dphig = 5.0; // degrees
195     zg[0] = zb[5];
196     rming[0] = rmina[5];
197     rmaxg[0] = rming[0];
198     zg[1] = za[6];
199     rming[1] = -tantc*(zg[1]-za[3])+rmina[3];
200     rmaxg[1] = rmaxg[0];
201     rming[2] = Rholemin;
202     zg[2] = za[3]-(rming[2]-rmina[3])/tantc;
203     rmaxg[2] = -tantc*(zg[2]-za[4])+rmaxa[4];
204     rming[3] = rming[2];
205     rmaxg[3] = rming[3];
206     zg[3] = za[4]-(rmaxg[3]-rmaxa[4])/tantc;
207     // For the foam core.
208     t = ct/(0.5*(Rholemax+Rholemin));// It is not posible to get the
209     // carbon fiber thickness uniform in this phi direction. We can only
210     // make it a fixed angular thickness.
211     t *= 180.0/TMath::Pi();
212     dphih = 5.0 - 2.0*t; // degrees
213     phi0h = 12.5+t; // degrees see drawing ALR-0767.
214     zh[0] = zf[2];
215     rminh[0] = rming[0];
216     rmaxh[0] = rmaxg[0];
217     zh[1] = zf[3];
218     rminh[1] = rming[1]-(ct/sintc-(zg[1]-zh[1]))*tantc;
219     rmaxh[1] = rmaxh[0];
220     zh[2] = zg[2]+ct/tantc;
221     rminh[2] = rming[2];
222     rmaxh[2] = rmaxg[2]-(ct/sintc-(zg[2]-zh[2]))*tantc;
223     zh[3] = zg[3]-ct/sintc;
224     rminh[3] = rminh[2];
225     rmaxh[3] = rminh[3];
226     //
227     //==================================================================
228     // Now for the Inner most part of the SSD cone.
229     phi0i = 0.0;
230     dphii = 360.0;
231     Double_t za,rmina,rmaxa; // additional point not needed in call to pcons.
232     zi[0] = zg[2];
233     rmini[0] = rming[2];
234     rmaxi[0] = rmini[0];
235     zi[1] = zg[3];
236     rmini[1] = -tantc*(zi[1]-za[3])+rmina[3];
237     rmaxi[1] = rmaxi[0];
238     rmini[5] = Rinmin;
239     rmaxi[5] = Rinmax+r*sintc;
240     zi[5] =za[4]+(rmaxa[4]-rmaxi[5])/tantc;
241     za = zi[5]+r*costc;
242     rmina = rmini[5];
243     rmaxa = Rinmax;
244     zi[3] = za-dzin;
245     zi[2] = zi[3] -r*costc;
246     rmini[2] = -tantc*(zi[2]-za[3])+rmina[3];
247     rmaxi[2] = -tantc*(zi[2]-za[4])+rmaxa[4];
248     rmini[3] = rmini[2] -r*costc;
249     zi[4] = zi[3];
250     rmini[4] = Rinmin;
251     rmaxi[4] = -tantc*(zi[4]-za[4])+rmaxa[4];
252     rmaxi[3] = rmaxi[4];
253     zi[6] = zcylinder;
254     rmini[6] = Rinmin;
255     rmaxi[6] = rmaxi[5] - (zi[5]-zi[6])*(rmaxi[5]-rmaxa)/(zi[5]-za);
256     zi[7] = zi[6];
257     rmini[7] = Rincylinder;
258     rmaxi[7] = rmaxi[6];
259     rmini[8] = Rincylinder;
260     rmaxi[8] = rmini[8];
261     zi[8] = zi[5]+(rmaxi[8]-rmaxi[5])*(za-zi[5])/(rmaxa-rmaxi[5]);
262     // Now for Inserto volume at the inner most radius.
263     phi0k = 0.0;
264     dphik = 360.0;
265     zk[1] = zi[3]+ct;
266     zk[0] = zk[1]-(r+ct)*costc;
267     rmink[0] = rmini[3]+(r+ct)*sintc;
268     rmaxk[0] = rmink[0];
269     rmink[1] = rmini[3];
270     zk[2] = zk[1];
271     rmink[2] = rmini[6];
272     rmaxk[2] = rmaxk[1];
273     zk[3] = zk[0]+(th+2.0*ct)*costc;
274     rmink[3] = rmini[6];
275     rmaxk[3] = rmaxk[0]+(th+2.0*ct)*sintc;
276     rmaxk[1] = rmaxk[0]+(rmaxk[3]-rmaxk[0])*(zk[1]-zk[0])/(zk[3]-zk[0]);
277     rmink[4] = rmini[6];
278     rmaxk[4] = rmaxi[5]-ct*sintc;
279     zk[4] = zc[1]+(zc3[3]-zc[1])*(rmaxk[4]-rmaxc[1])/(rmaxc[3]-rmaxc[1]);
280     zk[5] = zi[5]-r*costc-ct;
281     rmink[5] = rmini[6];
282     rmaxk[5] = rmini[8];
283     zk[6] = zi[6];
284     rmink[6] = rmini[6];
285     rmaxk[6] = rmaxi[6];
286     // Now for foam core at the inner most radius.
287     phi0j = 0.0;
288     dphij = 360.0;
289     rminj[0] = rmini[0]-ct;
290     zj[0] = zc[0]+(zc[2]-zc[0])*(rminj[0]-rminc[0])/(rminc[2]-rminc[0]);
291     rmaxj[0] = rminj[0];
292     rmaxj[1] = rmaxj[0];
293     zj[1] = zc[1]+(zc[3]-zc[1])*(rmaxj[1]-rmaxc[1])/(rmaxc[3]-rmaxc[1]);
294     rminj[1] = rminc[0]+(rminc[2]-rminc[0])*(zj[1]-zc[0])/(zc[2]-zc[0]);
295     zj[2] = zk[0];
296     rminj[2] = rmink[0];
297     rmaxj[2] = rmaxc[1]+(rmaxc[3]-rmaxc[1])*(zj[2]-zc[1])/(zc[3]-zc[1]);
298     zj[3] = zk[3];
299     rminj[3] = rmaxk[3];
300     rmaxj[3] = rminj[3];
301     // Now for foam core at the top of the inner most radius where 
302     // the spoaks are.
303     t = ct/(0.5*(Rholemax+Rholemin));// It is not posible to get the
304     // carbon fiber thickness uniform in this phi direction. We can only
305     // make it a fixed angular thickness.
306     t *= 180.0/TMath::Pi();
307     dphil = 5.0 - 2.0*t; // degrees
308     phi0l = 12.5+t; // degrees see drawing ALR-0767.
309     zl[0] = zh[2];
310     rminl[0] = rmini[0];
311     rmaxl[0] = rminl[0];
312     zl[1] = zj[0];
313     rminl[1] = rminj[1];
314     rmaxl[1] = rmaxi[0];
315     zl[2] = zh[3];
316     rminl[2] = rminl[1];
317     rmaxl[2] = rmaxl[1];
318     zl[3] = zj[1];
319     rminl[3] = rminl[2];
320     rmaxl[3] = rminl[3];
321     // Now for the SSD mounting posts
322     dphio = 180.0*dRPost/(RPostmin+0.5*dRPost)/TMath::Pi(); // degrees
323     phi0o = phi0post; //
324     rmino[0] = RPostmin+dRPost;
325     rmaxo[0] = rmino[0];
326     zo[0] = za[4]+(rmaxa[4]-rmaxo[0])/tantc;
327     rmino[1] = RPostmin;
328     zo[1] = za[4]+(rmaxa[4]-rmino[1])/tantc;
329     rmaxo[1] = rmaxo[0];
330     zo[2] = z0+zpostmax;
331     rmino[2] = RPostmin;
332     rmaxo[2] = rmino[2]+dRPost;
333     // Now for the SSD mounting posts
334     t = 180.0*ct/(RPostmin+0.5*dRPost)/TMath::Pi();
335     dphip = dphio-2.0*t; // degrees
336     phi0p = phio0+t; //
337     rminp[0] = rmino[0]-ct;
338     rmaxp[0] = rminp[0];
339     zp[0] = za[4]+(rmaxa[4]-rmaxp[0])/tantc;
340     rminp[1] = rmino[0]+ct;
341     rmaxp[1] = rmino[0]-ct;
342     zp[1] = za[4]+(rmaxa[4]-rminp[1])/tantc;
343     rminp[2] = rminp[1];
344     rmaxp[2] = rmaxp[1];
345     zp[2] = z0-zpostmax;
346     // This insrto continues into the SSD cone displacing the foam
347     // and the carbon fiber surface at those points where the posts are.
348     dphim=360.0;
349     phi0m= 0.0;
350     rminm[0] = RPostmin+dRPost-ct;
351     rmaxm[0] = rminm[0];
352     zm[0] = zj[0]+(zj[2]-zj[0])*(rminm[0]-rminj[0])/(rminj[2]-rminj[0]);
353     rmaxm[1] = rmaxm[0];
354     zm[1] = zj[1]+(zj[3]-zj[1])*(rmaxm[1]-rmaxj[1])/(rmaxj[3]-rmaxj[1]);
355     rminm[2] = RPostmin+ct;
356     zm[2] = zj[0]+(zj[2]-zj[0])*(rminm[2]-rminj[0])/(rminj[2]-rminm[0]);
357     rmaxm[2] = rmaxj[1]+(rmaxj[3]-rmaxm[1])*(zm[2]-zj[1])/(zj[3]-zj[1]);
358     rminm[3] = rminm[2];
359     rmaxm[3] = rminm[3];
360     dphin=360.0;
361     phi0n= 0.0;
362     zn[0] = zm[1];
363     rminn[0] = rmaxm[1];
364     rmaxn[0] = rminn[0];
365     rmaxn[1] = rmaxn[0];
366     zn[1] = za[4]+(rmaxa[4]-rmaxn[1])/tantc;
367     rminn[1] = rmaxj[1]+(rmaxj[3]-rmaxj[1])*(zn[1]-zj[1])/(zj[3]-zj[1]);
368     zn[2] = zm[3];
369     rminn[2] = rminm[3];
370     rmaxn[2] = -tantc*(zn[2]-za[4])+rmaxa[4];
371     rminn[3] = rminn[2];
372     rmaxn[3] = rminn[3];
373     zn[3] = za[4]+(rmaxa[4]-rmaxn[3])/tantc;
374 }
375 //______________________________________________________________________
376 void AliITSGeometrySSDCone::CreateG3Geometry(const char moth[3],
377                                              TVector3 &trans){
378     // Calls Geant 3 geometry inilization routines with the information
379     // stored in this class.
380     // Inputs:
381     //    none.
382     // Outputs:
383     //    none.
384     // Return:
385     //    none.
386
387     PolyCone("SCA","SSD Suport cone Carbon Fiber Surface outer left",
388              phi0a,dphia,nza,za,rmina,rmaxa,SSDcf);
389     Pos("SCA",1,moth,trans.x(),trans.y(),trans.z(),0);
390     XMatrix(1,180.0);
391     Pos("SCA",2,moth,trans.x(),trans.y(),-trans.z(),1);
392     PolyCone("SCB","SSD Suport cone Inserto Stesalite left edge",
393              phi0b,dphib,nzb,zb,rminb,rmaxb,SSDfs);
394     Pos("SCB",1,"SCA",0.0,.0,0.0,0);
395     PolyCone("SCC","SSD Suport cone Rohacell foam left edge",
396              phi0,dphi,nz,zc,rminc,rmaxc,SSDfo);
397     Pos("SCC",1,"SCA",0.0,.0,0.0,0);
398     Tube("SCD","Screw+stud used to mount things to the SSD support cone",
399          rmine,rmaxe,dze,SSDsw);
400     Tube("SCE","pin used to mount things to the SSD support cone",
401          rmine2,rmaxe2,dze2,SSDsw);
402     k=l=0;
403     for(i=0;i<2;i++){ // position for ITS-TPC mounting brackets
404         for(j=0;j<2;j++){ // 2 screws per bracket
405             ncse++;
406             t = -5.0+10.0*((Double_t)j)+180.*((Double_t)i);
407             x = RoutHole*Sind(t);
408             y = RoutHole*Cosd(t);
409             z = dz;
410             Pos("SCD",ncse,"SCB",x,y,z,0);
411         } // end for j
412         for(j=0;j<3;j++){ // 3 pins per bracket
413             ncpe++;
414             t = -3.0+3.0*((Double_t)j)+180.*((Double_t)i);
415             x = RoutHole*Sind(t);
416             y = RoutHole*Cosd(t);
417             z = dz;
418             Pos("SCE",ncpe,"SCB",x,y,z,0);
419         } // end for j
420     } // end for i
421     for(i=0;i<2;i++){ // position for ITS-rail mounting brackets
422         for(j=0;j<4;j++){ // 4 screws per bracket
423             a[4]={0.0,2.0,5.0,7.0}; // Relative angles.
424             ncse++;
425             t = 90.0-a[j]+187.*((Double_t)i);
426             x = RoutHole*Sind(t);
427             y = RoutHole*Cosd(t);
428             z = dz;
429             Pos("SCD",kncs,"SCB",x,y,z,0);
430         } // end for j
431         for(j=0;j<2;j++){ // 2 pins per bracket
432             ncpe++;
433             t = 88+7.0*((Double_t)j)+184.*((Double_t)i);
434             x = RoutHole*Sind(t);
435             y = RoutHole*Cosd(t);
436             z = dz;
437             Pos("SCE",ncse,"SCB",x,y,z,0);
438         } // end for j
439     } // end for i
440     for(i=0;i<nmounts;i++){ // mounting holes/screws for beam pipe support
441         // and SPD cone support (dump side,non-dump side has them to).
442         for(j=0;j<2;j++){ // 2 screws per bracket
443             ncse++;
444             t = 180.*20./(RoutHole*TMath::Pi());
445             t = 45.0+((Doulbe_t)(j-1))*t+90.*((Double_t)i);
446             x = RoutHole*Sind(t);
447             y = RoutHole*Cosd(t);
448             z = dz;
449             Pos("SCD",ncse,"SCB",x,y,z,0);
450         } // end for j
451         for(j=0;j<1;j++){ // 1 pins per bracket
452             ncpe++;
453             t = 45.0+90.*((Double_t)i);
454             x = RoutHole*Sind(t);
455             y = RoutHole*Cosd(t);
456             z = dz;
457             Pos("SCE",ncpe,"SCB",x,y,z,0);
458         } // end for j
459     } // end for i
460     PolyCone("SCF","SSD Suport cone Rohacell foam left edge",
461              phi0f,dphif,nzf,zf,rminf,rmaxf,SSDfo);
462     Pos("SCF",1,"SCA",0.0,.0,0.0,0);
463     for(i=1;i<nspoaks;i++){
464         Zmatrix(irot+i,360./((Double_t)nspoaks));
465         Pos("SCG",i+1,"SCA",0.0,.0,0.0,irot+i);
466     } // end for i
467     PolyCone("SCG","SSD spoak carbon fiber surfaces",
468              phi0g,dphig,nzg,zg,rming,rmaxc,SSDcf);
469     Pos("SCG",i+1,"SCA",0.0,.0,0.0,0);
470     for(i=1;i<nspoaks;i++){
471         Pos("SCG",i+1,"SCA",0.0,.0,0.0,irot+i);
472     } // end for i
473     PolyCone("SCH","SSD spoak foam core",
474              phi0h,dphih,nzh,zh,rminh,rmaxh,SSDfo);
475     Pos("SCH",1,"SCG",0.0,.0,0.0,0);
476     PolyCone("SCI","SSD lower/inner right part of SSD cone",
477              phi0i,dphii,nzi,zci,rminci,rmaxci,SSDcf);
478     Pos("SCI",1,moth,0.0,.0,0.0,0);
479     PolyCone("SCK","SSD inner most inserto material",
480              phi0k,dphik,nzk,zk,rmink,rmaxk,SSDfs);
481     Pos("SCK",1,"SCI",0.0,.0,0.0,0);
482     PolyCone("SCJ","SSD inner most foam core",
483              phi0j,dphij,nzj,zj,rminj,rmaxj,SSDfo);
484     Pos("SCJ",1,"SCI",0.0,.0,0.0,0);
485     PolyCone("SCL","SSD inner most foam core",
486              phi0l,dphil,nzl,zl,rminl,rmaxl,SSDfo);
487     Pos("SCL",1,"SCI",0.0,.0,0.0,0);
488     for(i=1;i<nspoaks;i++){
489         Pos("SCG",i+1,"SCA",0.0,.0,0.0,irot+i);
490     } // end for i
491     PolyCone("SCO","SSD mounting post, carbon fiber",
492              phi0,dphi,nz,zc,rminc,rmaxc,SSDcf);
493     Pos("SCO",1,moth,0.0,.0,0.0,0);
494     for(i=1;i<nposts;i++){
495         Zmatrix(irot+i,360./((Double_t)nposts));
496         Pos("SCO",i+1,moth,0.0,.0,0.0,irot+i);
497     } // end for
498     PolyCone("SCP","SSD mounting post, Inserto",
499              phi0p,dphip,nzp,zp,rminp,rmaxp,SSDfs);
500     Pos("SCP",1,"SCO",0.0,.0,0.0,0);
501     Pos("SCM",1,"SCJ",0.0,.0,0.0,0);
502     Pos("SCN",1,"SCI",0.0,.0,0.0,0);
503     for(i=1;i<nposts;i++){
504         Pos("SCN",i+1,"SCJ",0.0,.0,0.0,irot+i);
505         Pos("SCM",i+1,"SCI",0.0,.0,0.0,irot+i);
506     } // end for i
507     return;
508 }
509 //______________________________________________________________________
510 void CreateG3Materials(){
511     // Fills the Geant 3 banks with Material and Medium definisions.
512     // Inputs:
513     //   none.
514     // Outputs:
515     //   none.
516     // Returns:
517     //   none.
518     Double_t Z[5],W[5],dens;
519
520     Z[0] = 1.; W[0] = 0.5; // Hydrogen Content
521     Z[1] = 6.; W[1] = 0.5; // Carbon Content
522     MixtureByWeight(SSDcf,"Carbon Fiber for SSD support cone",Z,W,dens,2);
523     Z[0] = 1.; W[0] = 0.5; // Hydrogen Content
524     Z[1] = 6.; W[1] = 0.5; // Carbon Content
525     MixtureByWeight(SSDfs,"Inserto stealite 4411w for SSD support cone",
526                     Z,W,dens,2);
527     Z[0] = 1.; W[0] = 0.5; // Hydrogen Content
528     Z[1] = 6.; W[1] = 0.5; // Carbon Content
529     MixtureByWeight(SSDfo,"Foam core (Rohacell 50A) for SSD support cone",
530                     Z,W,dens,2);
531     Z[0] =  6.; W[0] = 0.5; // Carbon Content
532     Z[1] = 25.; W[1] = 0.5; // Iron Content
533     MixtureByWeight(SSDsw,"Stainless steal screw, pin, and stud material",
534                     Z,W,dens,2);
535 }
536 //______________________________________________________________________
537 void AliITSGeometrySSDCone::BuildDisplayGeometry(){
538     // Fill Root geometry banks for fast simple ITS simulation event
539     // display. See Display.C, and related code, for more details.
540     // Inputs:
541     //    none.
542     // Outputs:
543     //   none.
544     // Return:
545     //  none.
546
547     // No need to display ITS cones.
548 }