]>
Commit | Line | Data |
---|---|---|
77289c85 | 1 | /////////////////////////////////////////////////////////////////////////////// |
2 | // // | |
3 | // Beam pipe class // | |
4 | // // | |
5 | //Begin_Html | |
6 | /* | |
7 | <img src="gif/AliPIPEClass.gif"> | |
8 | */ | |
9 | //End_Html | |
10 | // // | |
11 | /////////////////////////////////////////////////////////////////////////////// | |
12 | ||
13 | #include "AliPIPEv3.h" | |
14 | #include "AliRun.h" | |
15 | #include "AliMC.h" | |
16 | ||
17 | ClassImp(AliPIPEv3) | |
18 | ||
19 | //_____________________________________________________________________________ | |
20 | AliPIPEv3::AliPIPEv3() | |
21 | { | |
22 | // | |
23 | // Default constructor for beam pipe | |
24 | // | |
25 | } | |
26 | ||
27 | //_____________________________________________________________________________ | |
28 | AliPIPEv3::AliPIPEv3(const char *name, const char *title) | |
29 | : AliPIPE(name,title) | |
30 | { | |
31 | // | |
32 | // Standard constructor for beam pipe | |
33 | // | |
34 | } | |
35 | ||
36 | //_____________________________________________________________________________ | |
37 | void AliPIPEv3::CreateGeometry() | |
38 | { | |
39 | // | |
40 | // Create Beam Pipe geometry | |
41 | // | |
42 | //Begin_Html | |
43 | /* | |
44 | <img src="gif/AliPIPE.gif"> | |
45 | */ | |
46 | //End_Html | |
47 | //Begin_Html | |
48 | /* | |
49 | <img src="gif/AliPIPETree.gif"> | |
50 | */ | |
51 | //End_Html | |
52 | ||
53 | AliMC* pMC = AliMC::GetMC(); | |
54 | ||
55 | Float_t tpar[3], dzmo, zpos; | |
56 | Float_t bepar[3], alpar[3],sspar[3],flange[3],vacpar[3]; | |
57 | Float_t bellow[3]; | |
58 | // Float_t undul[3]; | |
59 | // const Double_t z_flange = 150; | |
60 | //for undulated structure | |
61 | char cn18[][5]={"CN01","CN02","CN03","CN04","CN05","CN06","CN07","CN08"}; | |
62 | char cn48[][5]={"CN21","CN22","CN23","CN24","CN25","CN26","CN27","CN28"}; | |
63 | // char undul[][5]={'BELO','UNDL'}; | |
64 | Float_t zundul; | |
65 | Float_t rundul; | |
66 | Float_t pitch; | |
67 | Float_t thick; | |
68 | ||
69 | ||
70 | Int_t *idtmed = gAlice->Idtmed(); | |
71 | // the mother of all beam pipes | |
72 | ||
73 | tpar[0] = 0.; | |
74 | tpar[1] = 10.; | |
75 | tpar[2] = 1400. / 2; | |
76 | dzmo = tpar[2]; | |
77 | pMC->Gsvolu("QQMO", "TUBE", idtmed[2015], tpar, 3); | |
78 | ||
79 | // All beam pipe details as per the provisonal drawings given by Lars | |
80 | // Leistam on 31.5.99 | |
81 | ||
82 | // Beryllium beam pipe, length 56.6 cm, centered at vertex | |
83 | ||
84 | bepar[0]=0.0; | |
85 | bepar[1]=3.0; | |
86 | bepar[2]=28.3; | |
87 | zpos=0.0; | |
88 | vacpar[0]=0.0; | |
89 | vacpar[1]=2.9; | |
90 | vacpar[2]=bepar[2]; | |
91 | // | |
92 | pMC->Gsvolu("QQBE", "TUBE", idtmed[2004], bepar, 3); | |
93 | pMC->Gsvolu("VAC1", "TUBE", idtmed[2015], vacpar, 3); | |
94 | pMC->Gspos("VAC1", 1, "QQBE", 0., 0., 0., 0, "ONLY"); | |
95 | pMC->Gspos("QQBE", 1, "QQMO", 0., 0., zpos, 0, "ONLY"); | |
96 | ||
97 | // now beam pipes only in negative z-part for use in PMD. | |
98 | ||
99 | // SS Flange 4 cm thick, 5.8 cm ID, 6.3 cm OD | |
100 | flange[0]=0.0; | |
101 | flange[1]=3.15; | |
102 | flange[2]=2.0; | |
103 | zpos = zpos -bepar[2] - flange[2]; | |
104 | vacpar[0]=0.0; | |
105 | vacpar[1]=2.9; | |
106 | vacpar[2]=flange[2]; | |
107 | // | |
108 | pMC->Gsvolu("QFL1", "TUBE", idtmed[2018], flange, 3); | |
109 | pMC->Gsvolu("VAC2", "TUBE", idtmed[2015], vacpar, 3); | |
110 | pMC->Gspos("VAC2", 1, "QFL1", 0., 0., 0., 0, "ONLY"); | |
111 | pMC->Gspos("QFL1", 1, "QQMO", 0., 0., zpos, 0, "ONLY"); | |
112 | ||
113 | // Aluminium alloy beam pipe, 1mm thick, 230 cm long | |
114 | alpar[0]=0.0; | |
115 | alpar[1]=3.0; | |
116 | alpar[2]=115.; | |
117 | zpos = zpos - flange[2] - alpar[2]; | |
118 | ||
119 | vacpar[0]=0.0; | |
120 | vacpar[1]=2.9; | |
121 | vacpar[2]=alpar[2]; | |
122 | pMC->Gsvolu("QQAL", "TUBE", idtmed[2003], alpar, 3); | |
123 | pMC->Gsvolu("VAC3", "TUBE", idtmed[2015], vacpar, 3); | |
124 | pMC->Gspos("VAC3", 1, "QQAL", 0., 0., 0., 0, "ONLY"); | |
125 | pMC->Gspos("QQAL", 1, "QQMO", 0., 0., zpos, 0, "ONLY"); | |
126 | ||
127 | ||
128 | // SS tube 2.0 cm long, 0.8 mm thick, 5.96 cm OD | |
129 | ||
130 | sspar[0]=0.0; | |
131 | sspar[1]=2.98; | |
132 | sspar[2]=1.0; | |
133 | zpos = zpos - alpar[2] - sspar[2]; | |
134 | ||
135 | vacpar[0]=0.0; | |
136 | vacpar[1]=2.9; | |
137 | vacpar[2]=sspar[2]; | |
138 | pMC->Gsvolu("QSS1", "TUBE", idtmed[2018], sspar, 3); | |
139 | pMC->Gsvolu("VAC4", "TUBE", idtmed[2015], vacpar, 3); | |
140 | pMC->Gspos("VAC4", 1, "QSS1", 0., 0., 0., 0, "ONLY"); | |
141 | pMC->Gspos("QSS1", 1, "QQMO", 0., 0., zpos, 0, "ONLY"); | |
142 | ||
143 | ||
144 | // SS Flange 3 cm thick 7.4 cm OD, 5.8 cm ID | |
145 | ||
146 | flange[0]=0.0; | |
147 | flange[1]=3.7; | |
148 | flange[2]=1.5; | |
149 | zpos = zpos - sspar[2] - flange[2]; | |
150 | ||
151 | vacpar[0]=0.0; | |
152 | vacpar[1]=2.9; | |
153 | vacpar[2]=flange[2]; | |
154 | pMC->Gsvolu("QFL2", "TUBE", idtmed[2018], flange, 3); | |
155 | pMC->Gsvolu("VAC5", "TUBE", idtmed[2015], vacpar, 3); | |
156 | pMC->Gspos("VAC5", 1, "QFL2", 0., 0., 0., 0, "ONLY"); | |
157 | pMC->Gspos("QFL2", 1, "QQMO", 0., 0., zpos, 0, "ONLY"); | |
158 | ||
159 | ||
160 | // SS tube 4.0 cm long, 0.8 mm thick, 5.96 cm OD | |
161 | ||
162 | sspar[0]=0.0; | |
163 | sspar[1]=2.98; | |
164 | sspar[2]=2.0; | |
165 | zpos = zpos - flange[2] - sspar[2]; | |
166 | ||
167 | vacpar[0]=0.0; | |
168 | vacpar[1]=2.9; | |
169 | vacpar[2]=sspar[2]; | |
170 | pMC->Gsvolu("QSS2", "TUBE", idtmed[2018], sspar, 3); | |
171 | pMC->Gsvolu("VAC6", "TUBE", idtmed[2015], vacpar, 3); | |
172 | pMC->Gspos("VAC6", 1, "QSS2", 0., 0., 0., 0, "ONLY"); | |
173 | pMC->Gspos("QSS2", 1, "QQMO", 0., 0., zpos, 0, "ONLY"); | |
174 | ||
175 | ||
176 | // ************* | |
177 | // SS Bellow 8.4 cm long, 6.5 cm ID, 7.5 cm OD | |
178 | // 0.8 mm thick material, 0.3 cm pitch. | |
179 | // zundul=4.2, rundul=6.5, thick=0.08 | |
180 | // ************** | |
181 | pitch=0.3; | |
182 | thick=0.08; | |
183 | zundul=4.2; | |
184 | rundul=6.5; | |
185 | Undulation("BELO",pitch,thick,zundul,rundul,cn18); | |
186 | // | |
187 | bellow[2]=zundul; | |
188 | zpos = zpos - sspar[2] - bellow[2]; | |
189 | pMC->Gspos("BELO", 1, "QQMO", 0., 0., zpos, 0, "ONLY"); | |
190 | ||
191 | // SS tube 20.0 cm long, 0.8 mm thick, 5.96 cm OD | |
192 | ||
193 | sspar[0]=0.0; | |
194 | sspar[1]=2.98; | |
195 | sspar[2]=10.0; | |
196 | zpos = zpos - bellow[2] - sspar[2]; | |
197 | ||
198 | vacpar[0]=0.0; | |
199 | vacpar[1]=2.9; | |
200 | vacpar[2]=sspar[2]; | |
201 | pMC->Gsvolu("QSS3", "TUBE", idtmed[2018], sspar, 3); | |
202 | pMC->Gsvolu("VAC7", "TUBE", idtmed[2015], vacpar, 3); | |
203 | pMC->Gspos("VAC7", 1, "QSS3", 0., 0., 0., 0, "ONLY"); | |
204 | pMC->Gspos("QSS3", 1, "QQMO", 0., 0., zpos, 0, "ONLY"); | |
205 | ||
206 | // ************* | |
207 | // SS Bellow 8.4 cm long, 6.5 cm ID, 7.5 cm OD | |
208 | // 0.8 mm thick material, 0.3 cm pitch. | |
209 | // ************** | |
210 | // | |
211 | zpos = zpos - sspar[2] - bellow[2]; | |
212 | pMC->Gspos("BELO", 2, "QQMO", 0., 0., zpos, 0, "ONLY"); | |
213 | ||
214 | // SS tube 4.7 cm long, 0.8 mm thick, | |
215 | ||
216 | sspar[0]=0.0; | |
217 | sspar[1]=2.98; | |
218 | sspar[2]=4.7/2.; | |
219 | zpos = zpos - bellow[2] - sspar[2]; | |
220 | ||
221 | vacpar[0]=0.0; | |
222 | vacpar[1]=2.9; | |
223 | vacpar[2]=sspar[2]; | |
224 | pMC->Gsvolu("QSS4", "TUBE", idtmed[2018], sspar, 3); | |
225 | pMC->Gsvolu("VAC8", "TUBE", idtmed[2015], vacpar, 3); | |
226 | pMC->Gspos("VAC8", 1, "QSS4", 0., 0., 0., 0, "ONLY"); | |
227 | pMC->Gspos("QSS4", 1, "QQMO", 0., 0., zpos, 0, "ONLY"); | |
228 | ||
229 | // SS Flange 2.2 cm thick, ID=5.8 cm, OD=9.8 cm | |
230 | ||
231 | flange[0]=0.0; | |
232 | flange[1]=4.9; | |
233 | flange[2]=1.1; | |
234 | zpos = zpos - sspar[2] - flange[2]; | |
235 | ||
236 | vacpar[0]=0.0; | |
237 | vacpar[1]=2.9; | |
238 | vacpar[2]=flange[2]; | |
239 | pMC->Gsvolu("QFL3", "TUBE", idtmed[2018], flange, 3); | |
240 | pMC->Gsvolu("VAC9", "TUBE", idtmed[2015], vacpar, 3); | |
241 | pMC->Gspos("VAC9", 1, "QFL3", 0., 0., 0., 0, "ONLY"); | |
242 | pMC->Gspos("QFL3", 1, "QQMO", 0., 0., zpos, 0, "ONLY"); | |
243 | ||
244 | //Total of 3150 mm from vertex on the negative side upto this point. | |
245 | ||
246 | // SS tube 20.0 cm long, 0.15 cm thick, 5.8 cm ID, to support vac. pump | |
247 | ||
248 | sspar[0]=0.0; | |
249 | sspar[1]=3.05; | |
250 | sspar[2]=10.0; | |
251 | zpos = zpos - flange[2] - sspar[2]; | |
252 | ||
253 | vacpar[0]=0.0; | |
254 | vacpar[1]=2.9; | |
255 | vacpar[2]=sspar[2]; | |
256 | pMC->Gsvolu("QSS5", "TUBE", idtmed[2018], sspar, 3); | |
257 | pMC->Gsvolu("VA10", "TUBE", idtmed[2015], vacpar, 3); | |
258 | pMC->Gspos("VA10", 1, "QSS5", 0., 0., 0., 0, "ONLY"); | |
259 | pMC->Gspos("QSS5", 1, "QQMO", 0., 0., zpos, 0, "ONLY"); | |
260 | ||
261 | // | |
262 | // last item, undulated SS beam pipe, pitch=0.25, length= 342.0 cm | |
263 | // material thickness 0.015 cm, ID=6.0 cm, | |
264 | // zundul=171.0, thick=0.015, rundul=3.0 | |
265 | pitch=0.25; | |
266 | thick=0.015; | |
267 | zundul=171; | |
268 | rundul=3.0; | |
269 | Undulation("UNDL",pitch,thick,zundul,rundul,cn48); | |
270 | // | |
271 | zpos = zpos - sspar[2] - zundul; | |
272 | pMC->Gspos("UNDL", 1, "QQMO", 0., 0., zpos, 0, "ONLY"); | |
273 | // | |
274 | pMC->Gspos("QQMO", 1, "ALIC", 0., 0., 0.1, 0, "ONLY"); | |
275 | ||
276 | // total of 6770 mm length upto this point, end of undulated beam | |
277 | // pipe section. | |
278 | ||
279 | // SS flange 22*2 mm thick | |
280 | ||
281 | ||
282 | flange[0]=0.0; | |
283 | flange[1]=6.3; | |
284 | flange[2]=2.2; | |
285 | zpos = zpos - zundul - flange[2]; | |
286 | ||
287 | vacpar[0]=0.0; | |
288 | vacpar[1]=2.9; | |
289 | vacpar[2]=flange[2]; | |
290 | pMC->Gsvolu("QFL4", "TUBE", idtmed[2018], flange, 3); | |
291 | pMC->Gsvolu("VC11", "TUBE", idtmed[2015], vacpar, 3); | |
292 | pMC->Gspos("VC11", 1, "QFL4", 0., 0., 0., 0, "ONLY"); | |
293 | pMC->Gspos("QFL4", 1, "QQMO", 0., 0., zpos, 0, "ONLY"); | |
294 | ||
295 | } | |
296 | ||
297 | //_____________________________________________________________________________ | |
298 | void AliPIPEv3::DrawModule() | |
299 | { | |
300 | // | |
301 | // Draw a shaded view of the Beam Pipe | |
302 | // | |
303 | ||
304 | AliMC* pMC = AliMC::GetMC(); | |
305 | ||
306 | // Set everything unseen | |
307 | pMC->Gsatt("*", "seen", -1); | |
308 | // | |
309 | // Set ALIC mother transparent | |
310 | pMC->Gsatt("ALIC","SEEN",0); | |
311 | // | |
312 | // Set the volumes visible | |
313 | pMC->Gsatt("QQMO","seen",1); | |
314 | pMC->Gsatt("QQBE","seen",1); | |
315 | pMC->Gsatt("QFL1","seen",1); | |
316 | pMC->Gsatt("QQAL","seen",1); | |
317 | pMC->Gsatt("QSS1","seen",1); | |
318 | pMC->Gsatt("QFL2","seen",1); | |
319 | pMC->Gsatt("QSS2","seen",1); | |
320 | pMC->Gsatt("QSS3","seen",1); | |
321 | pMC->Gsatt("QSS4","seen",1); | |
322 | pMC->Gsatt("QFL3","seen",1); | |
323 | pMC->Gsatt("QSS5","seen",1); | |
324 | pMC->Gsatt("BELO","seen",1); | |
325 | pMC->Gsatt("UNDL","seen",1); | |
326 | // | |
327 | pMC->Gdopt("hide", "on"); | |
328 | pMC->Gdopt("shad", "on"); | |
329 | pMC->Gsatt("*", "fill", 7); | |
330 | pMC->SetClipBox("."); | |
331 | pMC->SetClipBox("*", 0, 3000, -3000, 3000, -6000, 6000); | |
332 | pMC->DefaultRange(); | |
333 | pMC->Gdraw("alic", 40, 30, 0, 3, 5, .04, .04); | |
334 | pMC->Gdhead(1111, "Beam Pipe"); | |
335 | pMC->Gdman(16, 6, "MAN"); | |
336 | pMC->Gdopt("hide","off"); | |
337 | } | |
338 | ||
339 | //_____________________________________________________________________________ | |
340 | void AliPIPEv3::CreateMaterials() | |
341 | { | |
342 | // | |
343 | // Create materials for beam pipe | |
344 | // | |
345 | ||
346 | Int_t ISXFLD = gAlice->Field()->Integ(); | |
347 | Float_t SXMGMX = gAlice->Field()->Max(); | |
348 | ||
349 | Float_t asteel[4] = { 55.847,51.9961,58.6934,28.0855 }; | |
350 | Float_t zsteel[4] = { 26.,24.,28.,14. }; | |
351 | Float_t wsteel[4] = { .715,.18,.1,.005 }; | |
352 | ||
353 | Float_t epsil, stmin, tmaxfd, deemax, stemax; | |
354 | ||
355 | // STEEL | |
356 | ||
357 | ||
358 | // --- Define the various materials for GEANT --- | |
359 | AliMaterial(5, "BERILLIUM$", 9.01, 4., 1.848, 35.3, 36.7); | |
360 | AliMaterial(4, "ALUMINIUM$", 26.98, 13., 2.7, 8.9, 18.5); | |
361 | AliMaterial(16, "VACUUM$ ", 1e-16, 1e-16, 1e-16, 1e16, 1e16); | |
362 | AliMaterial(15, "AIR$ ", 14.61, 7.3, .001205, 30423.24, 67500); | |
363 | AliMixture(19, "STAINLESS STEEL$", asteel, zsteel, 7.88, 4, wsteel); | |
364 | ||
365 | // **************** | |
366 | // Defines tracking media parameters. | |
367 | // Les valeurs sont commentees pour laisser le defaut | |
368 | // a GEANT (version 3-21, page CONS200), f.m. | |
369 | epsil = .001; // Tracking precision, | |
370 | stemax = -1.; // Maximum displacement for multiple scat | |
371 | tmaxfd = -20.; // Maximum angle due to field deflection | |
372 | deemax = -.3; // Maximum fractional energy loss, DLS | |
373 | stmin = -.8; | |
374 | ||
375 | // Air | |
376 | ||
377 | AliMedium(2015, "AIR_L3_US", 15, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin); | |
378 | ||
379 | // Beryllium | |
380 | ||
381 | AliMedium(2005, "BE_L3_US", 5, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin); | |
382 | ||
383 | ||
384 | // Aluminium | |
385 | ||
386 | AliMedium(2004, "AL_L3_US", 4, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin); | |
387 | ||
388 | // Vacuum | |
389 | ||
390 | AliMedium(2016, "VA_L3_US", 16, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin); | |
391 | ||
392 | // Steel | |
393 | ||
394 | AliMedium(2019, "ST_L3_US", 19, 0, ISXFLD, SXMGMX, tmaxfd, stemax, deemax, epsil, stmin); | |
395 | } | |
396 | // | |
397 | void AliPIPEv3::Undulation(char *undul, Float_t pitch, Float_t thick, | |
398 | Float_t zundul, Float_t rundul, char (*cone)[5]) | |
399 | { | |
400 | // | |
401 | // RUNDUL : Internal radius of the undulated chamber | |
402 | // THICK : material thickness | |
403 | // PITCH : one-QUARTER wave of undulation (cm) | |
404 | // ZUNDUL : half length (cm) | |
405 | // | |
406 | // The undulated structure is desgned as a superposition of eight CONES | |
407 | // of suitable sizes, where the inner/outer radius of the cone increases, | |
408 | // then decreases, each half of the wave is assumed to be a semicircle, | |
409 | // which allows to calculate the thickness and the radii of the cone, by | |
410 | // dividing the semicircle into 4 parts of equal arc length. | |
411 | // Thus apear the constants 0.293 and 0.707. | |
412 | // | |
413 | ||
414 | const Float_t const1 = .293; | |
415 | const Float_t const2 = .707; | |
416 | ||
417 | AliMC* pMC = AliMC::GetMC(); | |
418 | ||
419 | // Local variables | |
420 | Int_t j, nwave; | |
421 | Float_t dcone1[5], dcone2[5], dcone3[5], dcone4[5], dcone5[5], | |
422 | dcone6[5], dcone7[5], dcone8[5]; | |
423 | Float_t xc, yc, zc, dundul[3]; | |
424 | Int_t *idtmed = gAlice->Idtmed(); | |
425 | ||
426 | // Function Body | |
427 | ||
428 | dcone1[0] = const1 * pitch / 2; | |
429 | dcone1[1] = rundul; | |
430 | dcone1[2] = dcone1[1] + thick; | |
431 | dcone1[3] = dcone1[1] + const2 * pitch; | |
432 | dcone1[4] = dcone1[3] + thick; | |
433 | ||
434 | dcone2[0] = const2 * pitch / 2; | |
435 | dcone2[1] = dcone1[3]; | |
436 | dcone2[2] = dcone1[4]; | |
437 | dcone2[3] = dcone2[1] + const1 * pitch; | |
438 | dcone2[4] = dcone2[3] + thick; | |
439 | ||
440 | dcone3[0] = dcone2[0]; | |
441 | dcone3[1] = dcone2[3]; | |
442 | dcone3[2] = dcone2[4]; | |
443 | dcone3[3] = dcone2[1]; | |
444 | dcone3[4] = dcone2[2]; | |
445 | ||
446 | dcone4[0] = dcone1[0]; | |
447 | dcone4[1] = dcone1[3]; | |
448 | dcone4[2] = dcone1[4]; | |
449 | dcone4[3] = dcone1[1]; | |
450 | dcone4[4] = dcone1[2]; | |
451 | ||
452 | dcone5[0] = dcone1[0]; | |
453 | dcone5[1] = dcone1[1] - thick; | |
454 | dcone5[2] = dcone1[1]; | |
455 | dcone5[3] = dcone5[1] - const2 * pitch; | |
456 | dcone5[4] = dcone5[3] + thick; | |
457 | ||
458 | dcone6[0] = dcone2[0]; | |
459 | dcone6[1] = dcone5[3]; | |
460 | dcone6[2] = dcone5[4]; | |
461 | dcone6[3] = dcone6[1] - const1 * pitch; | |
462 | dcone6[4] = dcone6[3] + thick; | |
463 | dcone7[0] = dcone6[0]; | |
464 | dcone7[1] = dcone6[3]; | |
465 | dcone7[2] = dcone6[4]; | |
466 | dcone7[3] = dcone5[3]; | |
467 | dcone7[4] = dcone5[4]; | |
468 | ||
469 | dcone8[0] = dcone5[0]; | |
470 | dcone8[1] = dcone7[3]; | |
471 | dcone8[2] = dcone7[4]; | |
472 | dcone8[3] = dcone5[1]; | |
473 | dcone8[4] = dcone5[2]; | |
474 | ||
475 | pMC->Gsvolu(cone[0], "CONE", idtmed[2015], dcone1, 5); | |
476 | pMC->Gsvolu(cone[1], "CONE", idtmed[2015], dcone2, 5); | |
477 | pMC->Gsvolu(cone[2], "CONE", idtmed[2015], dcone3, 5); | |
478 | pMC->Gsvolu(cone[3], "CONE", idtmed[2015], dcone4, 5); | |
479 | pMC->Gsvolu(cone[4], "CONE", idtmed[2015], dcone5, 5); | |
480 | pMC->Gsvolu(cone[5], "CONE", idtmed[2015], dcone6, 5); | |
481 | pMC->Gsvolu(cone[6], "CONE", idtmed[2015], dcone7, 5); | |
482 | pMC->Gsvolu(cone[7], "CONE", idtmed[2015], dcone8, 5); | |
483 | pMC->Gsatt(cone[0], "SEEN", 0); | |
484 | pMC->Gsatt(cone[1], "SEEN", 0); | |
485 | pMC->Gsatt(cone[2], "SEEN", 0); | |
486 | pMC->Gsatt(cone[3], "SEEN", 0); | |
487 | pMC->Gsatt(cone[4], "SEEN", 0); | |
488 | pMC->Gsatt(cone[5], "SEEN", 0); | |
489 | pMC->Gsatt(cone[6], "SEEN", 0); | |
490 | pMC->Gsatt(cone[7], "SEEN", 0); | |
491 | ||
492 | // DEFINE AN IMAGINARY TUBE VOLUME FOR UNDULATED CHAMBER, FILL WITH VACUUM | |
493 | ||
494 | nwave = Int_t (zundul / (pitch * 2) + .1); | |
495 | dundul[2] = pitch * 2 * nwave; | |
496 | dundul[1] = rundul + pitch + thick * 2; | |
497 | // | |
498 | dundul[0] = 1e-4; | |
499 | pMC->Gsvolu(undul, "TUBE", idtmed[2015], dundul, 3); | |
500 | ||
501 | xc = 0; | |
502 | yc = 0; | |
503 | zc = -dundul[2] + dcone1[0]; | |
504 | for (j = 1; j <= nwave; ++j) { | |
505 | pMC->Gspos(cone[0], j, undul, xc, yc, zc, 0, "ONLY"); | |
506 | zc = zc + dcone1[0] + dcone2[0]; | |
507 | pMC->Gspos(cone[1], j, undul, xc, yc, zc, 0, "ONLY"); | |
508 | zc = zc + dcone2[0] + dcone3[0]; | |
509 | pMC->Gspos(cone[2], j, undul, xc, yc, zc, 0, "ONLY"); | |
510 | zc = zc + dcone3[0] + dcone4[0]; | |
511 | pMC->Gspos(cone[3], j, undul, xc, yc, zc, 0, "ONLY"); | |
512 | zc = zc + dcone4[0] + dcone5[0]; | |
513 | pMC->Gspos(cone[4], j, undul, xc, yc, zc, 0, "ONLY"); | |
514 | zc = zc + dcone5[0] + dcone6[0]; | |
515 | pMC->Gspos(cone[5], j, undul, xc, yc, zc, 0, "ONLY"); | |
516 | zc = zc + dcone6[0] + dcone7[0]; | |
517 | pMC->Gspos(cone[6], j, undul, xc, yc, zc, 0, "ONLY"); | |
518 | zc = zc + dcone7[0] + dcone8[0]; | |
519 | pMC->Gspos(cone[7], j, undul, xc, yc, zc, 0, "ONLY"); | |
520 | zc = zc + dcone8[0] + dcone1[0]; | |
521 | } | |
522 | } |