Changes in ZDC geometry to avoid overlaps with other detectors
[u/mrichter/AliRoot.git] / ITS / AliITSGeometrySSDCone.cxx
CommitLineData
aa9bc63b 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
42ClassImp(AliITSGeometrySSDCone)
43
44//______________________________________________________________________
45AliITSGeometrySSDCone::AliITSGeometrySSDCone(){
46 //Default Constructor for SSD Cone geometry
47
48 SetScalemm();
49}
50//______________________________________________________________________
51AliITSGeometrySSDCone::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//______________________________________________________________________
376void 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//______________________________________________________________________
510void 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//______________________________________________________________________
537void 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}