Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
lego.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_geom
3/// Drawing a figure, made of lego block, 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 lego.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_lego.png width=800px
14/// \macro_code
15///
16/// \author Soon Gi Kwon(1116won@hanmail.net), Dept. of Physics, Univ. of Seoul
17
18#include "TSystem.h"
19#include "TGeoManager.h"
20
21void lego()
22{
23 TGeoManager *geom = new TGeoManager("geom", "My first 3D geometry");
24
25 TGeoMaterial *vacuum = new TGeoMaterial("vacuum", 0, 0, 0);
26 TGeoMaterial *Fe = new TGeoMaterial("Fe", 55.845, 26, 7.87);
27
28 TGeoMedium *Air = new TGeoMedium("Vacuum", 0, vacuum);
29 TGeoMedium *Iron = new TGeoMedium("Iron", 1, Fe);
30
31 // create volume
32 TGeoVolume *top = geom->MakeBox("top", Air, 100, 100, 100);
33 geom->SetTopVolume(top);
34 geom->SetTopVisible(false);
35 // If you want to see the boundary, please input the number, 1 instead of 0.
36 // Like this, geom->SetTopVisible(1);
37
38 //----------------------------------------------------------------------
39
40 TGeoVolume *ha1 = geom->MakeSphere("ha1", Iron, 0, 10, 80, 90, 0, 360);
41 ha1->SetLineColor(41);
42 top->AddNodeOverlap(ha1, 1, new TGeoCombiTrans(0, 0, 4, new TGeoRotation("ha1", 0, 0, 0)));
43
44 TGeoVolume *ha2 = geom->MakeSphere("ha2", Iron, 0, 7, 90, 180, 0, 360);
45 ha2->SetLineColor(41);
46 top->AddNodeOverlap(ha2, 1, new TGeoCombiTrans(0, 0, 4, new TGeoRotation("ha2", 0, 180, 0)));
47
48 TGeoVolume *ha3 = geom->MakeSphere("ha3", Iron, 0, 7.3, 80, 90, 0, 360);
49 ha3->SetLineColor(2);
50 top->AddNodeOverlap(ha3, 1, new TGeoCombiTrans(0, 0, 4.8, new TGeoRotation("ha3", 0, 0, 0)));
51
52 TGeoVolume *h1 = geom->MakeTubs("h1", Iron, 0, 6, 4.5, 0, 0);
53 h1->SetLineColor(5);
54 top->AddNodeOverlap(h1, 1, new TGeoCombiTrans(0, 0, 0, new TGeoRotation("h1", 0, 0, 0)));
55
56 TGeoVolume *h2 = geom->MakeSphere("h2", Iron, 0, 7.5, 0, 52.5, 0, 360);
57 h2->SetLineColor(5);
58 top->AddNodeOverlap(h2, 1, new TGeoCombiTrans(0, 0, 0, new TGeoRotation("h2", 0, 0, 0)));
59
60 TGeoVolume *h3 = geom->MakeSphere("h3", Iron, 0, 7.5, 0, 52.5, 0, 360);
61 h3->SetLineColor(5);
62 top->AddNodeOverlap(h3, 1, new TGeoCombiTrans(0, 0, 0, new TGeoRotation("h3", 180, 180, 0)));
63
64 TGeoVolume *h4 = geom->MakeTubs("h4", Iron, 2.5, 3.5, 1.5, 0, 0);
65 h4->SetLineColor(5);
66 top->AddNodeOverlap(h4, 1, new TGeoCombiTrans(0, 0, 7.5, new TGeoRotation("h4", 0, 0, 0)));
67
68 TGeoVolume *t1_1 = geom->MakeTubs("t1_1", Iron, 0, 0.8, 1, 0, 360);
69 t1_1->SetLineColor(12);
70 top->AddNodeOverlap(t1_1, 1, new TGeoCombiTrans(-5, 2, 1.5, new TGeoRotation("t1_1", -90, 90, 0)));
71
72 TGeoVolume *t2_1 = geom->MakeTubs("t2_1", Iron, 0, 0.8, 1, 0, 360);
73 t2_1->SetLineColor(12);
74 top->AddNodeOverlap(t2_1, 1, new TGeoCombiTrans(-5, -2, 1.5, new TGeoRotation("t2_1", -90, 90, 0)));
75
76 TGeoVolume *fb1 = geom->MakeTubs("fb1", Iron, 2, 2.3, 1, 100, 260);
77 fb1->SetLineColor(12);
78 top->AddNodeOverlap(fb1, 1, new TGeoCombiTrans(-5, 0, -1, new TGeoRotation("fb1", 90, 90, 90)));
79
80 TGeoVolume *m1 = geom->MakeBox("m1", Iron, 7, 8, 4);
81 m1->SetLineColor(2);
82 top->AddNodeOverlap(m1, 1, new TGeoCombiTrans(0, 0, -17, new TGeoRotation("m1", 90, 90, 0)));
83
84 TGeoVolume *m2 = geom->MakeTubs("m2", Iron, 0, 1, 7, 90, 180);
85 m2->SetLineColor(2);
86 top->AddNodeOverlap(m2, 1, new TGeoCombiTrans(-3, 0, -9, new TGeoRotation("m2", 0, 90, 0)));
87
88 TGeoVolume *m3 = geom->MakeTubs("m3", Iron, 0, 1, 7, 0, 90);
89 m3->SetLineColor(2);
90 top->AddNodeOverlap(m3, 1, new TGeoCombiTrans(3, 0, -9, new TGeoRotation("m3", 0, 90, 0)));
91
92 TGeoVolume *m4 = geom->MakeBox("m4", Iron, 3, 7, 0.5);
93 m4->SetLineColor(2);
94 top->AddNodeOverlap(m4, 1, new TGeoCombiTrans(0, 0, -8.5, new TGeoRotation("m4", 90, 0, 90)));
95
96 TGeoVolume *m5 = geom->MakeTubs("m5", Iron, 0, 1.5, 1.2, 0, 0);
97 m5->SetLineColor(5);
98 top->AddNodeOverlap(m5, 1, new TGeoCombiTrans(0, 0, -7.8, new TGeoRotation("m5", 0, 0, 0)));
99
100 TGeoVolume *m6 = geom->MakeTrd2("m6", Iron, 4, 4, 0, 2, 8);
101 m6->SetLineColor(2);
102 top->AddNodeOverlap(m6, 1, new TGeoCombiTrans(0, -7, -17, new TGeoRotation("m6", 0, 180, 0)));
103
104 TGeoVolume *m7 = geom->MakeTrd2("m7", Iron, 4, 4, 0, 2, 8);
105 m7->SetLineColor(2);
106 top->AddNodeOverlap(m7, 1, new TGeoCombiTrans(0, 7, -17, new TGeoRotation("m7", 0, 180, 0)));
107
108 TGeoVolume *md1 = geom->MakeBox("md1", Iron, 4, 8.5, 0.7);
109 md1->SetLineColor(37);
110 top->AddNodeOverlap(md1, 1, new TGeoCombiTrans(0, 0, -25.5, new TGeoRotation("md1", 0, 0, 0)));
111
112 TGeoVolume *md2 = geom->MakeBox("md2", Iron, 3, 0.4, 2);
113 md2->SetLineColor(37);
114 top->AddNodeOverlap(md2, 1, new TGeoCombiTrans(0, 0, -28, new TGeoRotation("md2", 0, 0, 0)));
115
116 TGeoVolume *d1 = geom->MakeTrd2("d1", Iron, 3, 4, 4, 4, 7);
117 d1->SetLineColor(37);
118 top->AddNodeOverlap(d1, 1, new TGeoCombiTrans(-4.8, 4.5, -35, new TGeoRotation("d1", 90, 45, -90)));
119
120 TGeoVolume *d2 = geom->MakeTrd2("d2", Iron, 3, 4, 4, 4, 7);
121 d2->SetLineColor(37);
122 top->AddNodeOverlap(d2, 1, new TGeoCombiTrans(0, -4.5, -37, new TGeoRotation("d2", 0, 0, 0)));
123
124 TGeoVolume *d3 = geom->MakeTubs("d3", Iron, 0, 4, 3.98, 0, 180);
125 d3->SetLineColor(37);
126 top->AddNodeOverlap(d3, 1, new TGeoCombiTrans(0, 4.5, -30.2, new TGeoRotation("d3", 0, 90, -45)));
127
128 TGeoVolume *d4 = geom->MakeTubs("d4", Iron, 0, 4, 3.98, 0, 180);
129 d4->SetLineColor(37);
130 top->AddNodeOverlap(d4, 1, new TGeoCombiTrans(0, -4.5, -30, new TGeoRotation("d4", 0, 90, 0)));
131
132 TGeoVolume *d5 = geom->MakeBox("d5", Iron, 4, 4, 1);
133 d5->SetLineColor(37);
134 top->AddNodeOverlap(d5, 1, new TGeoCombiTrans(-10.2, 4.5, -39, new TGeoRotation("d5", 90, 45, -90)));
135
136 TGeoVolume *d6 = geom->MakeBox("d6", Iron, 4, 4, 1);
137 d6->SetLineColor(37);
138 top->AddNodeOverlap(d6, 1, new TGeoCombiTrans(-1, -4.5, -43.4, new TGeoRotation("d6", 0, 0, 0)));
139
140 TGeoVolume *a1 = geom->MakeTubs("a1", Iron, 0, 1.5, 4, 0, 0);
141 a1->SetLineColor(1);
142 top->AddNodeOverlap(a1, 1, new TGeoCombiTrans(0, 10, -15.1, new TGeoRotation("a1", 0, 20, 45)));
143
144 TGeoVolume *a2 = geom->MakeSphere("a2", Iron, 0, 1.48, 0, 180, 0, 200);
145 a2->SetLineColor(1);
146 top->AddNodeOverlap(a2, 1, new TGeoCombiTrans(0, 8.6, -11.5, new TGeoRotation("a2", 120, 80, 20)));
147
148 TGeoVolume *a3 = geom->MakeTubs("a3", Iron, 0, 1.5, 2.2, 0, 0);
149 a3->SetLineColor(1);
150 top->AddNodeOverlap(a3, 1, new TGeoCombiTrans(0, 11.3, -20.6, new TGeoRotation("a3", 300, 0, 40)));
151
152 TGeoVolume *a4 = geom->MakeTubs("a4", Iron, 0, 1, 1, 0, 0);
153 a4->SetLineColor(5);
154 top->AddNodeOverlap(a4, 1, new TGeoCombiTrans(0, 11.3, -23.8, new TGeoRotation("a4", 75, 0, 30)));
155
156 TGeoVolume *a5 = geom->MakeTubs("a5", Iron, 1.5, 2.5, 2, 0, 270);
157 a5->SetLineColor(5);
158 top->AddNodeOverlap(a5, 1, new TGeoCombiTrans(0, 11.3, -26.5, new TGeoRotation("a5", -90, 90, 00)));
159
160 TGeoVolume *a1_1 = geom->MakeTubs("a1_1", Iron, 0, 1.5, 4, 0, 0);
161 a1_1->SetLineColor(1);
162 top->AddNodeOverlap(a1_1, 1, new TGeoCombiTrans(0, -10, -15.1, new TGeoRotation("a1_1", 0, -20, -45)));
163
164 TGeoVolume *a2_1 = geom->MakeSphere("a2_1", Iron, 0, 1.48, 0, 180, 0, 200);
165 a2_1->SetLineColor(1);
166 top->AddNodeOverlap(a2_1, 1, new TGeoCombiTrans(0, -8.6, -11.5, new TGeoRotation("a2_1", 120, 80, -20)));
167
168 TGeoVolume *a3_1 = geom->MakeTubs("a3_1", Iron, 0, 1.5, 2.2, 0, 0);
169 a3_1->SetLineColor(1);
170 top->AddNodeOverlap(a3_1, 1, new TGeoCombiTrans(0, -11.3, -20.6, new TGeoRotation("a3_1", -300, 0, -40)));
171
172 TGeoVolume *a4_1 = geom->MakeTubs("a4_1", Iron, 0, 1, 1, 0, 0);
173 a4_1->SetLineColor(5);
174 top->AddNodeOverlap(a4_1, 1, new TGeoCombiTrans(0, -11.3, -23.8, new TGeoRotation("a4_1", -75, 0, -30)));
175
176 a5 = geom->MakeTubs("a5_1", Iron, 1.5, 2.5, 2, 0, 270);
177 a5->SetLineColor(5);
178 top->AddNodeOverlap(a5, 1, new TGeoCombiTrans(0, -11.3, -26.5, new TGeoRotation("a5", 90, 90, 00)));
179
180 //**********************************NO,2******************
181
182 TGeoVolume *ha_1 = geom->MakeSphere("ha_1", Iron, 0, 10, 80, 90, 0, 360);
183 ha_1->SetLineColor(6);
184 top->AddNodeOverlap(ha_1, 1, new TGeoCombiTrans(0, 36, 4, new TGeoRotation("ha_1", 0, 0, 0)));
185
186 TGeoVolume *ha_2 = geom->MakeTubs("ha_2", Iron, 0, 6, 5, 0, 0);
187 ha_2->SetLineColor(6);
188 top->AddNodeOverlap(ha_2, 1, new TGeoCombiTrans(0, 36, 10, new TGeoRotation("ha_2", 0, 180, 0)));
189
190 TGeoVolume *ha_3 = geom->MakeTubs("ha_3", Iron, 0, 1, 12, 0, 0);
191 ha_3->SetLineColor(28);
192 top->AddNodeOverlap(ha_3, 1, new TGeoCombiTrans(0, 36, 8, new TGeoRotation("ha_3", 0, 90, 0)));
193
194 TGeoVolume *ha_4 = geom->MakeTubs("ha_4", Iron, 0, 1, 3, 0, 0);
195 ha_4->SetLineColor(28);
196 top->AddNodeOverlap(ha_4, 1, new TGeoCombiTrans(0, 22, 10, new TGeoRotation("ha_4", 0, 0, 0)));
197
198 TGeoVolume *ha_5 = geom->MakeTubs("ha_5", Iron, 0, 1, 3, 0, 0);
199 ha_5->SetLineColor(28);
200 top->AddNodeOverlap(ha_5, 1, new TGeoCombiTrans(0, 46, 10, new TGeoRotation("ha_5", 0, 0, 0)));
201
202 TGeoVolume *ha_6 = geom->MakeTubs("ha_6", Iron, 0, 1, 3, 0, 0);
203 ha_6->SetLineColor(28);
204 top->AddNodeOverlap(ha_6, 1, new TGeoCombiTrans(0, 24, 10, new TGeoRotation("ha_6", 0, 0, 0)));
205
206 TGeoVolume *ha_7 = geom->MakeTubs("ha_7", Iron, 0, 1, 3, 0, 0);
207 ha_7->SetLineColor(28);
208 top->AddNodeOverlap(ha_7, 1, new TGeoCombiTrans(0, 48, 10, new TGeoRotation("ha_7", 0, 0, 0)));
209
210 TGeoVolume *ha_8 = geom->MakeBox("ha_8", Iron, 2, 0.5, 2);
211 ha_8->SetLineColor(19);
212 top->AddNodeOverlap(ha_8, 1, new TGeoCombiTrans(-4.2, 36, 9, new TGeoRotation("ha_8", 0, 45, 0)));
213
214 TGeoVolume *ha_9 = geom->MakeBox("ha_9", Iron, 2, 0.5, 2);
215 ha_9->SetLineColor(19);
216 top->AddNodeOverlap(ha_9, 1, new TGeoCombiTrans(-4.2, 36, 9, new TGeoRotation("ha_9", 0, 135, 0)));
217
218 TGeoVolume *h_1 = geom->MakeTubs("h_1", Iron, 0, 6, 4.5, 0, 0);
219 h_1->SetLineColor(5);
220 top->AddNodeOverlap(h_1, 1, new TGeoCombiTrans(0, 36, 0, new TGeoRotation("h_1", 0, 0, 0)));
221
222 TGeoVolume *h_2 = geom->MakeSphere("h_2", Iron, 0, 7.5, 0, 52.5, 0, 360);
223 h_2->SetLineColor(5);
224 top->AddNodeOverlap(h_2, 1, new TGeoCombiTrans(0, 36, 0, new TGeoRotation("h_2", 0, 0, 0)));
225
226 TGeoVolume *h_3 = geom->MakeSphere("h_3", Iron, 0, 7.5, 0, 52.5, 0, 360);
227 h_3->SetLineColor(5);
228 top->AddNodeOverlap(h_3, 1, new TGeoCombiTrans(0, 36, 0, new TGeoRotation("h_3", 180, 180, 0)));
229
230 TGeoVolume *h_4 = geom->MakeTubs("h_4", Iron, 2.5, 3.5, 1.5, 0, 0);
231 h_4->SetLineColor(5);
232 top->AddNodeOverlap(h_4, 1, new TGeoCombiTrans(0, 36, 7.5, new TGeoRotation("h_4", 0, 0, 0)));
233
234 TGeoVolume *fa1 = geom->MakeTubs("fa1", Iron, 0, 0.5, 1, 0, 360);
235 fa1->SetLineColor(12);
236 top->AddNodeOverlap(fa1, 1, new TGeoCombiTrans(-5, 38, 1.5, new TGeoRotation("fa1", -90, 90, 0)));
237
238 TGeoVolume *fa2 = geom->MakeTubs("fa2", Iron, 0, 0.5, 1, 0, 360);
239 fa2->SetLineColor(12);
240 top->AddNodeOverlap(fa2, 1, new TGeoCombiTrans(-5, 34, 1.5, new TGeoRotation("fa2", -90, 90, 0)));
241
242 TGeoVolume *fa1_1 = geom->MakeTubs("fa1_1", Iron, 1, 1.2, 1, 0, 360);
243 fa1_1->SetLineColor(12);
244 top->AddNodeOverlap(fa1_1, 1, new TGeoCombiTrans(-5, 38, 1.5, new TGeoRotation("fa1_1", -90, 90, 0)));
245
246 TGeoVolume *fa2_1 = geom->MakeTubs("fa2_1", Iron, 1, 1.2, 1, 0, 360);
247 fa2_1->SetLineColor(12);
248 top->AddNodeOverlap(fa2_1, 1, new TGeoCombiTrans(-5, 34, 1.5, new TGeoRotation("fa2_1", -90, 90, 0)));
249
250 TGeoVolume *fa3 = geom->MakeTubs("fa3", Iron, 2, 2.3, 1, 90, 270);
251 fa3->SetLineColor(12);
252 top->AddNodeOverlap(fa3, 1, new TGeoCombiTrans(-5, 36, -1, new TGeoRotation("fa3", 90, 90, 90)));
253
254 TGeoVolume *m_1 = geom->MakeBox("m_1", Iron, 7, 8, 4);
255 m_1->SetLineColor(25);
256 top->AddNodeOverlap(m_1, 1, new TGeoCombiTrans(0, 36, -17, new TGeoRotation("m_1", 90, 90, 0)));
257
258 TGeoVolume *m_2 = geom->MakeTubs("m_2", Iron, 0, 1, 7, 90, 180);
259 m_2->SetLineColor(25);
260 top->AddNodeOverlap(m_2, 1, new TGeoCombiTrans(-3, 36, -9, new TGeoRotation("m_2", 0, 90, 0)));
261
262 TGeoVolume *m_3 = geom->MakeTubs("m_3", Iron, 0, 1, 7, 0, 90);
263 m_3->SetLineColor(25);
264 top->AddNodeOverlap(m_3, 1, new TGeoCombiTrans(3, 36, -9, new TGeoRotation("m_3", 0, 90, 0)));
265
266 TGeoVolume *m_4 = geom->MakeBox("m_4", Iron, 3, 7, 0.5);
267 m_4->SetLineColor(25);
268 top->AddNodeOverlap(m_4, 1, new TGeoCombiTrans(0, 36, -8.5, new TGeoRotation("m_4", 90, 0, 90)));
269
270 TGeoVolume *m_5 = geom->MakeTubs("m_5", Iron, 0, 1.5, 1.2, 0, 0);
271 m_5->SetLineColor(5);
272 top->AddNodeOverlap(m_5, 1, new TGeoCombiTrans(0, 36, -7.8, new TGeoRotation("m_5", 0, 0, 0)));
273
274 TGeoVolume *m_6 = geom->MakeTrd2("m_6", Iron, 4, 4, 0, 2, 8);
275 m_6->SetLineColor(25);
276 top->AddNodeOverlap(m_6, 1, new TGeoCombiTrans(0, 29, -17, new TGeoRotation("m_6", 0, 180, 0)));
277
278 TGeoVolume *m_7 = geom->MakeTrd2("m_7", Iron, 4, 4, 0, 2, 8);
279 m_7->SetLineColor(25);
280 top->AddNodeOverlap(m_7, 1, new TGeoCombiTrans(0, 43, -17, new TGeoRotation("m_7", 0, 180, 0)));
281
282 TGeoVolume *md_1 = geom->MakeBox("md_1", Iron, 4, 8.5, 0.7);
283 md_1->SetLineColor(48);
284 top->AddNodeOverlap(md_1, 1, new TGeoCombiTrans(0, 36, -25.5, new TGeoRotation("md_1", 0, 0, 0)));
285
286 TGeoVolume *md_2 = geom->MakeBox("md_2", Iron, 3, 0.4, 2);
287 md_2->SetLineColor(48);
288 top->AddNodeOverlap(md_2, 1, new TGeoCombiTrans(0, 36, -28, new TGeoRotation("md_2", 0, 0, 0)));
289
290 TGeoVolume *d_1 = geom->MakeTrd2("d_1", Iron, 3, 4, 4, 4, 7);
291 d_1->SetLineColor(48);
292 top->AddNodeOverlap(d_1, 1, new TGeoCombiTrans(0, 40.5, -37.2, new TGeoRotation("d_1", 0, 0, 0)));
293
294 TGeoVolume *d_2 = geom->MakeTrd2("d_2", Iron, 3, 4, 4, 4, 7);
295 d_2->SetLineColor(48);
296 top->AddNodeOverlap(d_2, 1, new TGeoCombiTrans(0, 31.5, -37.2, new TGeoRotation("d_2", 0, 0, 0)));
297
298 TGeoVolume *d_3 = geom->MakeTubs("d_3", Iron, 0, 4, 3.98, 0, 180);
299 d_3->SetLineColor(48);
300 top->AddNodeOverlap(d_3, 1, new TGeoCombiTrans(0, 40.5, -30.2, new TGeoRotation("d_3", 0, 90, 0)));
301
302 TGeoVolume *d_4 = geom->MakeTubs("d_4", Iron, 0, 4, 3.98, 0, 180);
303 d_4->SetLineColor(48);
304 top->AddNodeOverlap(d_4, 1, new TGeoCombiTrans(0, 31.5, -30.2, new TGeoRotation("d_4", 0, 90, 0)));
305
306 TGeoVolume *d_5 = geom->MakeBox("d_5", Iron, 4, 4, 1);
307 d_5->SetLineColor(48);
308 top->AddNodeOverlap(d_5, 1, new TGeoCombiTrans(-1, 40.5, -43.7, new TGeoRotation("d_5", 0, 0, 0)));
309
310 TGeoVolume *d_6 = geom->MakeBox("d_6", Iron, 4, 4, 1);
311 d_6->SetLineColor(48);
312 top->AddNodeOverlap(d_6, 1, new TGeoCombiTrans(-1, 31.5, -43.7, new TGeoRotation("d_6", 0, 0, 0)));
313
314 TGeoVolume *a_1 = geom->MakeTubs("a_1", Iron, 0, 1.5, 4, 0, 0);
315 a_1->SetLineColor(45);
316 top->AddNodeOverlap(a_1, 1, new TGeoCombiTrans(0, 46, -15.1, new TGeoRotation("a_1", 0, 20, 45)));
317
318 TGeoVolume *a_2 = geom->MakeSphere("a_2", Iron, 0, 1.48, 0, 180, 0, 200);
319 a_2->SetLineColor(45);
320 top->AddNodeOverlap(a_2, 1, new TGeoCombiTrans(0, 44.6, -11.5, new TGeoRotation("a_2", 120, 80, 20)));
321
322 TGeoVolume *a_3 = geom->MakeTubs("a_3", Iron, 0, 1.5, 2.2, 0, 0);
323 a_3->SetLineColor(45);
324 top->AddNodeOverlap(a_3, 1, new TGeoCombiTrans(0, 47.3, -20.6, new TGeoRotation("a_3", 300, 0, 40)));
325
326 TGeoVolume *a_4 = geom->MakeTubs("a_4", Iron, 0, 1, 1, 0, 0);
327 a_4->SetLineColor(12);
328 top->AddNodeOverlap(a_4, 1, new TGeoCombiTrans(0, 47.3, -23.8, new TGeoRotation("a_4", 75, 0, 30)));
329
330 TGeoVolume *a_5 = geom->MakeTubs("a_5", Iron, 1.5, 2.5, 2, 0, 270);
331 a_5->SetLineColor(12);
332 top->AddNodeOverlap(a_5, 1, new TGeoCombiTrans(0, 47.3, -26.5, new TGeoRotation("a_5", -90, 90, 0)));
333
334 TGeoVolume *Aa1 = geom->MakeTubs("Aa1", Iron, 0, 1.5, 4, 0, 0);
335 Aa1->SetLineColor(45);
336 top->AddNodeOverlap(Aa1, 1, new TGeoCombiTrans(0, 26, -15.1, new TGeoRotation("Aa1", 0, -20, -45)));
337
338 TGeoVolume *Aa2 = geom->MakeSphere("Aa2", Iron, 0, 1.48, 0, 180, 0, 200);
339 Aa2->SetLineColor(45);
340 top->AddNodeOverlap(Aa2, 1, new TGeoCombiTrans(0, 27.4, -11.5, new TGeoRotation("Aa2", 120, 80, -20)));
341
342 TGeoVolume *Aa3 = geom->MakeTubs("Aa3", Iron, 0, 1.5, 2.2, 0, 0);
343 Aa3->SetLineColor(45);
344 top->AddNodeOverlap(Aa3, 1, new TGeoCombiTrans(0, 24.7, -20.6, new TGeoRotation("Aa3", -300, 0, -40)));
345
346 TGeoVolume *Aa4 = geom->MakeTubs("Aa4", Iron, 0, 1, 1, 0, 0);
347 Aa4->SetLineColor(12);
348 top->AddNodeOverlap(Aa4, 1, new TGeoCombiTrans(0, 24.7, -23.8, new TGeoRotation("Aa4", -75, 0, -30)));
349
350 TGeoVolume *Aa5 = geom->MakeTubs("Aa5", Iron, 1.5, 2.5, 2, 0, 270);
351 Aa5->SetLineColor(12);
352 top->AddNodeOverlap(Aa5, 1, new TGeoCombiTrans(0, 24.7, -26.5, new TGeoRotation("Aa5", 90, 90, 00)));
353
354 TGeoVolume *bag1 = geom->MakeBox("bag1", Iron, 10, 4, 6);
355 bag1->SetLineColor(19);
356 top->AddNodeOverlap(bag1, 1, new TGeoCombiTrans(0, 48, -36, new TGeoRotation("bag1", 0, 0, 0)));
357
358 TGeoVolume *bag2 = geom->MakeTubs("bag2", Iron, 3, 4, 1, 180, 360);
359 bag2->SetLineColor(19);
360 top->AddNodeOverlap(bag2, 1, new TGeoCombiTrans(0, 48, -30, new TGeoRotation("bag2", 0, 270, 0)));
361
362 TGeoVolume *well = geom->MakeBox("well", Iron, 5, 10, 3);
363 well->SetLineColor(18);
364 top->AddNodeOverlap(well, 1, new TGeoCombiTrans(-26.5, -17, -42, new TGeoRotation("well", 0, 0, 0)));
365
366 TGeoVolume *K5 = geom->MakeTubs("K5", Iron, 0, 3, 3, 0, 0);
367 K5->SetLineColor(18);
368 top->AddNodeOverlap(K5, 1, new TGeoCombiTrans(-27, -12.5, -39, new TGeoRotation("K5", 0, 0, 0)));
369
370 TGeoVolume *K4 = geom->MakeTubs("K4", Iron, 0, 3, 3, 0, 0);
371 K4->SetLineColor(18);
372 top->AddNodeOverlap(K4, 1, new TGeoCombiTrans(-27, -21.5, -39, new TGeoRotation("K4", 0, 0, 0)));
373
374 //==============Board=========
375 char nB[100];
376 int Z = 0, Y = 0;
377 TGeoVolume *bo1;
378
379 while (Y < 6) {
380 while (Z < 10) {
381 sprintf(nB, "B%d_Y%d", Z, Y);
382 bo1 = geom->MakeTubs(nB, Iron, 0, 3, 3, 0, 0);
383 bo1->SetLineColor(8);
384 top->AddNodeOverlap(bo1, 1,
385 new TGeoCombiTrans(-27 + (Y * 9), -21.5 + (Z * 9), -45, new TGeoRotation("bo1", 0, 0, 0)));
386 Z++;
387 }
388 Y++;
389 Z = 0;
390 }
391
392 TGeoVolume *bo2 = geom->MakeBox("bo2", Iron, 27, 45, 3);
393 bo2->SetLineColor(8);
394 top->AddNodeOverlap(bo2, 1, new TGeoCombiTrans(-4.5, 18, -48, new TGeoRotation("bo2", 0, 0, 0)));
395
396 top->SetVisibility(false);
397 geom->CloseGeometry();
398
399 top->Draw("ogl");
400}
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Definition TAttLine.h:42
Class describing rotation + translation.
Definition TGeoMatrix.h:317
The manager class for any TGeo geometry.
Definition TGeoManager.h:44
void CloseGeometry(Option_t *option="d")
Closing geometry implies checking the geometry validity, fixing shapes with negative parameters (run-...
TGeoVolume * MakeTrd2(const char *name, TGeoMedium *medium, Double_t dx1, Double_t dx2, Double_t dy1, Double_t dy2, Double_t dz)
Make in one step a volume pointing to a TGeoTrd2 shape with given medium.
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.
Media are used to store properties related to tracking and which are useful only when using geometry ...
Definition TGeoMedium.h:23
Class describing rotations.
Definition TGeoMatrix.h:168
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
Definition TGeoVolume.h:43
void SetVisibility(Bool_t vis=kTRUE) override
set visibility of this volume
void Draw(Option_t *option="") override
draw top volume according to option
virtual void AddNodeOverlap(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=nullptr, Option_t *option="")
Add a TGeoNode to the list of nodes.
void SetLineColor(Color_t lcolor) override
Set the line color.
void lego()
Definition lego.C:31
TH1F * h1
Definition legend1.C:5