ROOT   Reference Guide
station1.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_geom
3/// Drawing a space station, using ROOT geometry class.
4///
5/// Reviewed by Sunman Kim (sunman98@hanmail.net)
6/// Supervisor: Prof. Inkyu Park (icpark@physics.uos.ac.kr)
7///
8/// How to run: .x station1.C in ROOT terminal, then use OpenGL
9///
10/// This macro was created for the evaluation of Computational Physics course in 2006.
11/// We thank to Prof. Inkyu Park for his special lecture on ROOT and to all of ROOT team
12///
13/// \image html geom_station1.png width=800px
14/// \macro_code
15///
16/// \author Chang Yeol Lee, Dept. of Physics, Univ. of Seoul
17
18#include "TGeoManager.h"
19
20void station1()
21{
22
23
24 TGeoManager *geom=new TGeoManager("geom","My first 3D geometry");
25
26 TGeoMaterial *vacuum=new TGeoMaterial("vacuum",0,0,0);
27 TGeoMaterial *Fe=new TGeoMaterial("Fe",55.845,26,7.87);
28 TGeoMaterial *Cu=new TGeoMaterial("Cu",63.549,29,8.92);
29
30 TGeoMedium *Air=new TGeoMedium("Vacuum",0,vacuum);
31 TGeoMedium *Iron=new TGeoMedium("Iron",1,Fe);
32 TGeoMedium *Copper=new TGeoMedium("Copper",2,Cu);
33
34 TGeoVolume *top=geom->MakeBox("top",Air,1000,1000,1000);
35 geom->SetTopVolume(top);
36 geom->SetTopVisible(0);
37 // If you want to see the boundary, please input the number, 1 instead of 0.
38 // Like this, geom->SetTopVisible(1);
39
40
41
42 TGeoVolume *Cone1=geom->MakeCone("Cone1",Copper,650,0,20,0,20);
43 Cone1->SetFillColor(35);
44 Cone1->SetLineColor(35);
46
47 TGeoVolume *Cone2=geom->MakeCone("Cone2",Copper,25,0,30,0,30);
48 Cone2->SetFillColor(7);
49 Cone2->SetLineColor(7);
51
52 TGeoVolume *Cone21=geom->MakeCone("Cone21",Copper,30,0,30,0,30);
53 Cone21->SetFillColor(29);
54 Cone21->SetLineColor(29);
56
57 TGeoVolume *Cone22=geom->MakeCone("Cone22",Copper,5,0,50,0,50);
58 Cone22->SetFillColor(2);
59 Cone22->SetLineColor(2);
61
62for(int i=0;i<28;i++){
63 TGeoVolume *Cone00=geom->MakeCone("Cone00",Copper,3,0,25,0,25);
64 Cone00->SetFillColor(1);
65 Cone00->SetLineColor(1);
67}
68
69 TGeoVolume *Cone3=geom->MakeCone("Cone3",Copper,60,0,70,0,0);
70 Cone3->SetFillColor(13);
71 Cone3->SetLineColor(13);
73
74 TGeoVolume *Cone31=geom->MakeCone("Cone31",Copper,230,0,70,0,70);
75 Cone31->SetFillColor(13);
76 Cone31->SetLineColor(13);
78
79for(int i=0;i<5;i++){
80 Cone31=geom->MakeCone("Cone31",Copper,7,0,73,0,73);
81 Cone31->SetFillColor(21);
82 Cone31->SetLineColor(21);
87}
88
89 TGeoVolume *Cone32=geom->MakeCone("Cone32",Copper,30,60,50,0,70);
90 Cone32->SetFillColor(35);
91 Cone32->SetLineColor(35);
93
94 TGeoVolume *Cone321=geom->MakeCone("Cone321",Copper,5,60,50,0,50);
95 Cone321->SetFillColor(2);
96 Cone321->SetLineColor(2);
98
99 TGeoVolume *Cone4=geom->MakeCone("Cone4",Copper,60,0,70,0,0);
100 Cone4->SetFillColor(13);
101 Cone4->SetLineColor(13);
103
104for(int i=1;i<=8;i++){
105 TGeoVolume *Torus2=geom->MakeTorus("Torus2",Iron,120,20,40,45*i-4,8);
106 Torus2->SetFillColor(18);
107 Torus2->SetLineColor(18);
109
110 TGeoVolume *Tubs=geom->MakeTubs("Line",Iron,0,190,5,45*i-1,45*i+1);
111 Tubs->SetFillColor(18);
112 Tubs->SetLineColor(18);
114}
115
116 TGeoVolume *Cone41=geom->MakeCone("Cone41",Copper,230,0,70,0,70);
117 Cone41->SetFillColor(13);
118 Cone41->SetLineColor(13);
120
121 TGeoVolume *Cone42=geom->MakeCone("Cone42",Copper,30,60,50,0,70);
122 Cone42->SetFillColor(35);
123 Cone42->SetLineColor(35);
125
126 TGeoVolume *Cone421=geom->MakeCone("Cone421",Copper,5,60,50,0,50);
127 Cone421->SetFillColor(2);
128 Cone421->SetLineColor(2);
130
131 TGeoVolume *Cone5=geom->MakeCone("Cone5",Copper,60,0,70,0,0);
132 Cone5->SetFillColor(13);
133 Cone5->SetLineColor(13);
135
136 TGeoVolume *Cone51=geom->MakeCone("Cone51",Copper,230,0,70,0,70);
137 Cone51->SetFillColor(13);
138 Cone51->SetLineColor(13);
140
141 TGeoVolume *Cone52=geom->MakeCone("Cone52",Copper,30,60,50,0,70);
142 Cone52->SetFillColor(35);
143 Cone52->SetLineColor(35);
145
146 TGeoVolume *Cone521=geom->MakeCone("Cone521",Copper,5,60,50,0,50);
147 Cone521->SetFillColor(2);
148 Cone521->SetLineColor(2);
150
151 TGeoVolume *Cone6=geom->MakeCone("Cone6",Copper,60,0,70,0,0);
152 Cone6->SetFillColor(13);
153 Cone6->SetLineColor(13);
155
156 TGeoVolume *Cone61=geom->MakeCone("Cone61",Copper,230,0,70,0,70);
157 Cone61->SetFillColor(13);
158 Cone61->SetLineColor(13);
160
161 TGeoVolume *Cone62=geom->MakeCone("Cone62",Copper,30,60,50,0,70);
162 Cone62->SetFillColor(35);
163 Cone62->SetLineColor(35);
165
166 TGeoVolume *Cone621=geom->MakeCone("Cone621",Copper,5,60,50,0,50);
167 Cone621->SetFillColor(2);
168 Cone621->SetLineColor(2);
170
171 TGeoVolume *Cone7=geom->MakeCone("Cone7",Copper,50,0,40,0,5);
172 Cone7->SetFillColor(13);
173 Cone7->SetLineColor(13);
175
176 TGeoVolume *Cone71=geom->MakeCone("Cone71",Copper,50,0,60,0,40);
177 Cone71->SetFillColor(16);
178 Cone71->SetLineColor(16);
180
181 TGeoVolume *Cone711=geom->MakeCone("Cone711",Copper,10,0,10,0,60);
182 Cone711->SetFillColor(13);
183 Cone711->SetLineColor(13);
185
186 TGeoVolume *Torus1=geom->MakeTorus("Torus1",Iron,120,30,20);
187 Torus1->SetFillColor(33);
188 Torus1->SetLineColor(33);
190
191 TGeoVolume *Cone8=geom->MakeCone("Cone8",Copper,50,0,40,0,5);
192 Cone8->SetFillColor(13);
193 Cone8->SetLineColor(13);
195
196 TGeoVolume *Cone81=geom->MakeCone("Cone81",Copper,50,0,60,0,40);
197 Cone81->SetFillColor(16);
198 Cone81->SetLineColor(16);
200
201 TGeoVolume *Cone811=geom->MakeCone("Cone811",Copper,10,0,10,0,60);
202 Cone811->SetFillColor(13);
203 Cone811->SetLineColor(13);
205
206 TGeoVolume *Box1=geom->MakeBox("Box1",Copper,10,10,3);
207 Box1->SetFillColor(3);
208 Box1->SetLineColor(3);
210
211 TGeoVolume *Box2=geom->MakeBox("Box2",Copper,10,10,3);
212 Box2->SetFillColor(3);
213 Box2->SetLineColor(3);
215
216 TGeoVolume *Box3=geom->MakeBox("Box3",Copper,10,10,3);
217 Box3->SetFillColor(3);
218 Box3->SetLineColor(3);
220
221 TGeoVolume *Box4=geom->MakeBox("Box4",Copper,10,10,3);
222 Box4->SetFillColor(3);
223 Box4->SetLineColor(3);
225
226 TGeoVolume *Box5=geom->MakeBox("Box5",Copper,10,10,3);
227 Box5->SetFillColor(3);
228 Box5->SetLineColor(3);
230
231 TGeoVolume *Box6=geom->MakeBox("Box6",Copper,10,10,3);
232 Box6->SetFillColor(3);
233 Box6->SetLineColor(3);
235
236 TGeoVolume *Box7=geom->MakeBox("Box7",Copper,10,10,3);
237 Box7->SetFillColor(3);
238 Box7->SetLineColor(3);
240
241 TGeoVolume *Box8=geom->MakeBox("Box8",Copper,10,10,3);
242 Box8->SetFillColor(3);
243 Box8->SetLineColor(3);
245
246 Torus1=geom->MakeTorus("Torus1",Iron,120,30,20);
247 Torus1->SetFillColor(33);
248 Torus1->SetLineColor(33);
250
251for(int i=1;i<=8;i++){
252 TGeoVolume *Torus2=geom->MakeTorus("Torus2",Iron,120,20,40,45*i-4,8);
253 Torus2->SetFillColor(18);
254 Torus2->SetLineColor(18);
256
257 TGeoVolume *Tubs=geom->MakeTubs("Line",Iron,0,190,5,45*i-1,45*i+1);
258 Tubs->SetFillColor(18);
259 Tubs->SetLineColor(18);
261}
262
263 TGeoVolume *Sphere00=geom->MakeSphere("Sphere00",Iron,0,15,0,45,0);
264 Sphere00->SetFillColor(2);
265 Sphere00->SetLineColor(2);
267
268 TGeoVolume *Sphere01=geom->MakeSphere("Sphere01",Iron,0,15,0,45,0);
269 Sphere01->SetFillColor(2);
270 Sphere01->SetLineColor(2);
272
273 TGeoVolume *Sphere02=geom->MakeSphere("Sphere02",Iron,0,15,0,45,0);
274 Sphere02->SetFillColor(2);
275 Sphere02->SetLineColor(2);
277
278 TGeoVolume *Sphere03=geom->MakeSphere("Sphere03",Iron,0,15,0,45,0);
279 Sphere03->SetFillColor(2);
280 Sphere03->SetLineColor(2);
282
283 TGeoVolume *Sphere04=geom->MakeSphere("Sphere04",Iron,0,15,0,45,0);
284 Sphere04->SetFillColor(2);
285 Sphere04->SetLineColor(2);
287
288 TGeoVolume *Sphere05=geom->MakeSphere("Sphere05",Iron,0,15,0,45,0);
289 Sphere05->SetFillColor(2);
290 Sphere05->SetLineColor(2);
292
293 TGeoVolume *Sphere06=geom->MakeSphere("Sphere06",Iron,0,15,0,45,0);
294 Sphere06->SetFillColor(2);
295 Sphere06->SetLineColor(2);
297
298 TGeoVolume *Sphere07=geom->MakeSphere("Sphere07",Iron,0,15,0,45,0);
299 Sphere07->SetFillColor(2);
300 Sphere07->SetLineColor(2);
302
303 TGeoVolume *Torus3=geom->MakeTorus("Torus3",Iron,190,0,10);
304 Torus3->SetFillColor(18);
305 Torus3->SetLineColor(18);
307
308 TGeoVolume *Sphere1=geom->MakeSphere("Sphere1",Iron,0,20,0,180,0,360);
309 Sphere1->SetFillColor(2);
310 Sphere1->SetLineColor(2);
312
313 TGeoVolume *Tubs=geom->MakeTubs("Tubs",Iron,0,40,50,0,360);
314 Tubs->SetFillColor(29);
315 Tubs->SetLineColor(29);
317
318 TGeoVolume *Tubs1=geom->MakeTubs("Tubs1",Iron,50,60,230,40,150);
319 Tubs1->SetFillColor(18);
320 Tubs1->SetLineColor(18);
322
323 TGeoVolume *Tubs11=geom->MakeTubs("Tubs11",Iron,50,60,230,220,330);
324 Tubs11->SetFillColor(18);
325 Tubs11->SetLineColor(18);
327
328 TGeoVolume *Sphere111=geom->MakeSphere("Sphere111",Iron,0,10,0,180,0,360);
329 Sphere111->SetFillColor(2);
330 Sphere111->SetLineColor(2);
332
333 TGeoVolume *Sphere112=geom->MakeSphere("Sphere112",Iron,0,10,0,180,0,360);
334 Sphere112->SetFillColor(2);
335 Sphere112->SetLineColor(2);
337
338 TGeoVolume *Sphere113=geom->MakeSphere("Sphere113",Iron,0,10,0,180,0,360);
339 Sphere113->SetFillColor(2);
340 Sphere113->SetLineColor(2);
342
343 TGeoVolume *Tubs2=geom->MakeTubs("Tubs2",Iron,50,60,230,220,330);
344 Tubs2->SetFillColor(18);
345 Tubs2->SetLineColor(18);
347
348 TGeoVolume *Tubs21=geom->MakeTubs("Tubs21",Iron,50,60,230,400,510);
349 Tubs21->SetFillColor(18);
350 Tubs21->SetLineColor(18);
352
353 TGeoVolume *Sphere211=geom->MakeSphere("Sphere211",Iron,0,10,0,180,0,360);
354 Sphere211->SetFillColor(2);
355 Sphere211->SetLineColor(2);
357
358 TGeoVolume *Sphere212=geom->MakeSphere("Sphere212",Iron,0,10,0,180,0,360);
359 Sphere212->SetFillColor(2);
360 Sphere212->SetLineColor(2);
362
363 TGeoVolume *Sphere213=geom->MakeSphere("Sphere213",Iron,0,10,0,180,0,360);
364 Sphere213->SetFillColor(2);
365 Sphere213->SetLineColor(2);
367
368 TGeoVolume *Tubs3=geom->MakeTubs("Tubs3",Iron,50,60,230,130,260);
369 Tubs3->SetFillColor(18);
370 Tubs3->SetLineColor(18);
372
373 TGeoVolume *Tubs31=geom->MakeTubs("Tubs31",Iron,50,60,230,310,440);
374 Tubs31->SetFillColor(18);
375 Tubs31->SetLineColor(18);
377
378 TGeoVolume *Sphere311=geom->MakeSphere("Sphere311",Iron,0,10,0,180,0,360);
379 Sphere311->SetFillColor(2);
380 Sphere311->SetLineColor(2);
382
383 TGeoVolume *Sphere312=geom->MakeSphere("Sphere312",Iron,0,10,0,180,0,360);
384 Sphere312->SetFillColor(2);
385 Sphere312->SetLineColor(2);
387
388 TGeoVolume *Sphere313=geom->MakeSphere("Sphere313",Iron,0,10,0,180,0,360);
389 Sphere313->SetFillColor(2);
390 Sphere313->SetLineColor(2);
392
393 TGeoVolume *Tubs4=geom->MakeTubs("Tubs4",Iron,50,60,230,310,440);
394 Tubs4->SetFillColor(18);
395 Tubs4->SetLineColor(18);
397
398 TGeoVolume *Tubs41=geom->MakeTubs("Tubs41",Iron,50,60,230,490,620);
399 Tubs41->SetFillColor(18);
400 Tubs41->SetLineColor(18);
402
403 TGeoVolume *Sphere411=geom->MakeSphere("Sphere411",Iron,0,10,0,180,0,360);
404 Sphere411->SetFillColor(2);
405 Sphere411->SetLineColor(2);
407
408 TGeoVolume *Sphere412=geom->MakeSphere("Sphere412",Iron,0,10,0,180,0,360);
409 Sphere412->SetFillColor(2);
410 Sphere412->SetLineColor(2);
412
413 TGeoVolume *Sphere413=geom->MakeSphere("Sphere413",Iron,0,10,0,180,0,360);
414 Sphere413->SetFillColor(2);
415 Sphere413->SetLineColor(2);
417
418 TGeoVolume *Cone010=geom->MakeCone("Cone010",Iron,30,0,30,0,30);
419 Cone010->SetFillColor(2);
420 Cone010->SetLineColor(2);
422
423 TGeoVolume *Torus010=geom->MakeTorus("Torus010",Iron,300,50,40);
424 Torus010->SetFillColor(33);
425 Torus010->SetLineColor(33);
427
428 TGeoVolume *Torus011=geom->MakeTorus("Torus011",Iron,400,10,10);
429 Torus011->SetFillColor(33);
430 Torus011->SetLineColor(33);
432
433 TGeoVolume *Torus012=geom->MakeTorus("Torus012",Iron,200,10,10);
434 Torus012->SetFillColor(33);
435 Torus012->SetLineColor(33);
437
438 TGeoVolume *Sphere010=geom->MakeSphere("Sphere010",Iron,0,10,0,180,0,360);
439 Sphere010->SetFillColor(2);
440 Sphere010->SetLineColor(2);
442
443 TGeoVolume *Sphere011=geom->MakeSphere("Sphere011",Iron,0,10,0,180,0,360);
444 Sphere011->SetFillColor(2);
445 Sphere011->SetLineColor(2);
447
448 TGeoVolume *Sphere012=geom->MakeSphere("Sphere012",Iron,0,10,0,180,0,360);
449 Sphere012->SetFillColor(2);
450 Sphere012->SetLineColor(2);
452
453 TGeoVolume *Sphere013=geom->MakeSphere("Sphere013",Iron,0,10,0,180,0,360);
454 Sphere013->SetFillColor(2);
455 Sphere013->SetLineColor(2);
457
458 TGeoVolume *Sphere014=geom->MakeSphere("Sphere014",Iron,0,10,0,180,0,360);
459 Sphere014->SetFillColor(2);
460 Sphere014->SetLineColor(2);
462
463 TGeoVolume *Sphere015=geom->MakeSphere("Sphere015",Iron,0,10,0,180,0,360);
464 Sphere015->SetFillColor(2);
465 Sphere015->SetLineColor(2);
467
468 TGeoVolume *Sphere016=geom->MakeSphere("Sphere016",Iron,0,10,0,180,0,360);
469 Sphere016->SetFillColor(2);
470 Sphere016->SetLineColor(2);
472
473 TGeoVolume *Sphere017=geom->MakeSphere("Sphere017",Iron,0,10,0,180,0,360);
474 Sphere017->SetFillColor(2);
475 Sphere017->SetLineColor(2);
477
478 TGeoVolume *Box010=geom->MakeBox("Box010",Copper,10,10,3);
479 Box010->SetFillColor(3);
480 Box010->SetLineColor(3);
482
483 TGeoVolume *Box011=geom->MakeBox("Box011",Copper,10,10,3);
484 Box011->SetFillColor(3);
485 Box011->SetLineColor(3);
487
488 TGeoVolume *Box012=geom->MakeBox("Box012",Copper,10,10,3);
489 Box012->SetFillColor(3);
490 Box012->SetLineColor(3);
492
493 TGeoVolume *Box013=geom->MakeBox("Box013",Copper,10,10,3);
494 Box013->SetFillColor(3);
495 Box013->SetLineColor(3);
497
498 TGeoVolume *Box014=geom->MakeBox("Box010",Copper,10,10,3);
499 Box014->SetFillColor(3);
500 Box014->SetLineColor(3);
502
503 TGeoVolume *Box015=geom->MakeBox("Box015",Copper,10,10,3);
504 Box015->SetFillColor(3);
505 Box015->SetLineColor(3);
507
508 TGeoVolume *Box016=geom->MakeBox("Box016",Copper,10,10,3);
509 Box016->SetFillColor(3);
510 Box016->SetLineColor(3);
512
513 TGeoVolume *Box017=geom->MakeBox("Box017",Copper,10,10,3);
514 Box017->SetFillColor(3);
515 Box017->SetLineColor(3);
517
518for(int i=1;i<=8;i++){
519 TGeoVolume *Torus0101=geom->MakeTorus("Torus0101",Iron,300,70,40,45*i-4,8);
520 Torus0101->SetFillColor(18);
521 Torus0101->SetLineColor(18);
523
524 TGeoVolume *Tubs0101=geom->MakeTubs("Line",Iron,0,400,5,45*i-1,45*i+1);
525 Tubs0101->SetFillColor(18);
526 Tubs0101->SetLineColor(18);
528}
529
530 Cone31->SetFillColor(38);
531 top->SetVisibility(0);
532 geom->CloseGeometry();
533
534 top->Draw("ogl");
535
536}
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Definition: TAttFill.h:37
Class describing rotation + translation.
Definition: TGeoMatrix.h:292
The manager class for any TGeo geometry.
Definition: TGeoManager.h:45
TGeoVolume * MakeCone(const char *name, TGeoMedium *medium, Double_t dz, Double_t rmin1, Double_t rmax1, Double_t rmin2, Double_t rmax2)
Make in one step a volume pointing to a cone shape with given medium.
TGeoVolume * MakeTorus(const char *name, TGeoMedium *medium, Double_t r, Double_t rmin, Double_t rmax, Double_t phi1=0, Double_t dphi=360)
Make in one step a volume pointing to a torus shape with given medium.
void CloseGeometry(Option_t *option="d")
Closing geometry implies checking the geometry validity, fixing shapes with negative parameters (run-...
TGeoVolume * MakeBox(const char *name, TGeoMedium *medium, Double_t dx, Double_t dy, Double_t dz)
Make in one step a volume pointing to a box shape with given medium.
TGeoVolume * MakeSphere(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t themin=0, Double_t themax=180, Double_t phimin=0, Double_t phimax=360)
Make in one step a volume pointing to a sphere shape with given medium.
void SetTopVolume(TGeoVolume *vol)
Set the top volume and corresponding node as starting point of the geometry.
void SetTopVisible(Bool_t vis=kTRUE)
make top volume visible on screen
TGeoVolume * MakeTubs(const char *name, TGeoMedium *medium, Double_t rmin, Double_t rmax, Double_t dz, Double_t phi1, Double_t phi2)
Make in one step a volume pointing to a tube segment shape with given medium.
Base class describing materials.
Definition: TGeoMaterial.h:36
Media are used to store properties related to tracking and which are useful only when using geometry ...
Definition: TGeoMedium.h:24
Class describing rotations.
Definition: TGeoMatrix.h:175
Class describing translations.
Definition: TGeoMatrix.h:122
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
Definition: TGeoVolume.h:49
virtual void AddNodeOverlap(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=nullptr, Option_t *option="")
Add a TGeoNode to the list of nodes.
Definition: TGeoVolume.cxx:997
virtual void SetVisibility(Bool_t vis=kTRUE)
set visibility of this volume
virtual void Draw(Option_t *option="")
draw top volume according to option
virtual void SetLineColor(Color_t lcolor)
Set the line color.