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