Logo ROOT  
Reference Guide
lego.C File Reference

Detailed Description

Drawing a figure, made of lego block, using ROOT geometry class.

Reviewed by Sunman Kim (sunma.nosp@m.n98@.nosp@m.hanma.nosp@m.il.n.nosp@m.et) Supervisor: Prof. Inkyu Park (icpar.nosp@m.k@ph.nosp@m.ysics.nosp@m..uos.nosp@m..ac.k.nosp@m.r)

How to run: .x lego.C in ROOT terminal, then use OpenGL

This macro was created for the evaluation of Computational Physics course in 2006. We thank to Prof. Inkyu Park for his special lecture on ROOT and to all of ROOT team

#include "TSystem.h"
#include "TGeoManager.h"
void lego()
{
TGeoManager *geom = new TGeoManager("geom","My first 3D geometry");
TGeoMaterial *vacuum=new TGeoMaterial("vacuum",0,0,0);
TGeoMaterial *Fe=new TGeoMaterial("Fe",55.845,26,7.87);
TGeoMedium *Air=new TGeoMedium("Vacuum",0,vacuum);
TGeoMedium *Iron=new TGeoMedium("Iron",1,Fe);
// create volume
TGeoVolume *top=geom->MakeBox("top",Air,100,100,100);
geom->SetTopVolume(top);
geom->SetTopVisible(0);
// If you want to see the boundary, please input the number, 1 instead of 0.
// Like this, geom->SetTopVisible(1);
//----------------------------------------------------------------------
TGeoVolume *ha1=geom->MakeSphere("ha1",Iron,0,10,80,90,0,360);
ha1->SetLineColor(41);
top->AddNodeOverlap(ha1,1,new TGeoCombiTrans(0,0,4,new TGeoRotation("ha1",0,0,0)));
TGeoVolume *ha2=geom->MakeSphere("ha2",Iron,0,7,90,180,0,360);
ha2->SetLineColor(41);
top->AddNodeOverlap(ha2,1,new TGeoCombiTrans(0,0,4,new TGeoRotation("ha2",0,180,0)));
TGeoVolume *ha3=geom->MakeSphere("ha3",Iron,0,7.3,80,90,0,360);
ha3->SetLineColor(2);
top->AddNodeOverlap(ha3,1,new TGeoCombiTrans(0,0,4.8,new TGeoRotation("ha3",0,0,0)));
TGeoVolume *h1=geom->MakeTubs("h1",Iron,0,6,4.5,0,0);
h1->SetLineColor(5);
top->AddNodeOverlap(h1,1,new TGeoCombiTrans(0,0,0,new TGeoRotation("h1",0,0,0)));
TGeoVolume *h2=geom->MakeSphere("h2",Iron,0,7.5,0,52.5,0,360);
h2->SetLineColor(5);
top->AddNodeOverlap(h2,1,new TGeoCombiTrans(0,0,0,new TGeoRotation("h2",0,0,0)));
TGeoVolume *h3=geom->MakeSphere("h3",Iron,0,7.5,0,52.5,0,360);
h3->SetLineColor(5);
top->AddNodeOverlap(h3,1,new TGeoCombiTrans(0,0,0,new TGeoRotation("h3",180,180,0)));
TGeoVolume *h4=geom->MakeTubs("h4",Iron,2.5,3.5,1.5,0,0);
h4->SetLineColor(5);
top->AddNodeOverlap(h4,1,new TGeoCombiTrans(0,0,7.5,new TGeoRotation("h4",0,0,0)));
TGeoVolume *t1_1=geom->MakeTubs("t1_1",Iron,0,0.8,1,0,360);
t1_1->SetLineColor(12);
top->AddNodeOverlap(t1_1,1,new TGeoCombiTrans(-5,2,1.5,new TGeoRotation("t1_1",-90,90,0)));
TGeoVolume *t2_1=geom->MakeTubs("t2_1",Iron,0,0.8,1,0,360);
t2_1->SetLineColor(12);
top->AddNodeOverlap(t2_1,1,new TGeoCombiTrans(-5,-2,1.5,new TGeoRotation("t2_1",-90,90,0)));
TGeoVolume *fb1=geom->MakeTubs("fb1",Iron,2,2.3,1,100,260);
fb1->SetLineColor(12);
top->AddNodeOverlap(fb1,1,new TGeoCombiTrans(-5,0,-1,new TGeoRotation("fb1",90,90,90)));
TGeoVolume *m1=geom->MakeBox("m1",Iron,7,8,4);
m1->SetLineColor(2);
top->AddNodeOverlap(m1,1,new TGeoCombiTrans(0,0,-17,new TGeoRotation("m1",90,90,0)));
TGeoVolume *m2=geom->MakeTubs("m2",Iron,0,1,7,90,180);
m2->SetLineColor(2);
top->AddNodeOverlap(m2,1,new TGeoCombiTrans(-3,0,-9,new TGeoRotation("m2",0,90,0)));
TGeoVolume *m3=geom->MakeTubs("m3",Iron,0,1,7,0,90);
m3->SetLineColor(2);
top->AddNodeOverlap(m3,1,new TGeoCombiTrans(3,0,-9,new TGeoRotation("m3",0,90,0)));
TGeoVolume *m4=geom->MakeBox("m4",Iron,3,7,0.5);
m4->SetLineColor(2);
top->AddNodeOverlap(m4,1,new TGeoCombiTrans(0,0,-8.5,new TGeoRotation("m4",90,0,90)));
TGeoVolume *m5=geom->MakeTubs("m5",Iron,0,1.5,1.2,0,0);
m5->SetLineColor(5);
top->AddNodeOverlap(m5,1,new TGeoCombiTrans(0,0,-7.8,new TGeoRotation("m5",0,0,0)));
TGeoVolume *m6=geom->MakeTrd2("m6",Iron,4,4,0,2,8);
m6->SetLineColor(2);
top->AddNodeOverlap(m6,1,new TGeoCombiTrans(0,-7,-17,new TGeoRotation("m6",0,180,0)));
TGeoVolume *m7=geom->MakeTrd2("m7",Iron,4,4,0,2,8);
m7->SetLineColor(2);
top->AddNodeOverlap(m7,1,new TGeoCombiTrans(0,7,-17,new TGeoRotation("m7",0,180,0)));
TGeoVolume *md1=geom->MakeBox("md1",Iron,4,8.5,0.7);
md1->SetLineColor(37);
top->AddNodeOverlap(md1,1,new TGeoCombiTrans(0,0,-25.5,new TGeoRotation("md1",0,0,0)));
TGeoVolume *md2=geom->MakeBox("md2",Iron,3,0.4,2);
md2->SetLineColor(37);
top->AddNodeOverlap(md2,1,new TGeoCombiTrans(0,0,-28,new TGeoRotation("md2",0,0,0)));
TGeoVolume *d1=geom->MakeTrd2("d1",Iron,3,4,4,4,7);
d1->SetLineColor(37);
top->AddNodeOverlap(d1,1,new TGeoCombiTrans(-4.8,4.5,-35,new TGeoRotation("d1",90,45,-90)));
TGeoVolume *d2=geom->MakeTrd2("d2",Iron,3,4,4,4,7);
d2->SetLineColor(37);
top->AddNodeOverlap(d2,1,new TGeoCombiTrans(0,-4.5,-37,new TGeoRotation("d2",0,0,0)));
TGeoVolume *d3=geom->MakeTubs("d3",Iron,0,4,3.98,0,180);
d3->SetLineColor(37);
top->AddNodeOverlap(d3,1,new TGeoCombiTrans(0,4.5,-30.2,new TGeoRotation("d3",0,90,-45)));
TGeoVolume *d4=geom->MakeTubs("d4",Iron,0,4,3.98,0,180);
d4->SetLineColor(37);
top->AddNodeOverlap(d4,1,new TGeoCombiTrans(0,-4.5,-30,new TGeoRotation("d4",0,90,0)));
TGeoVolume *d5=geom->MakeBox("d5",Iron,4,4,1);
d5->SetLineColor(37);
top->AddNodeOverlap(d5,1,new TGeoCombiTrans(-10.2,4.5,-39,new TGeoRotation("d5",90,45,-90)));
TGeoVolume *d6=geom->MakeBox("d6",Iron,4,4,1);
d6->SetLineColor(37);
top->AddNodeOverlap(d6,1,new TGeoCombiTrans(-1,-4.5,-43.4,new TGeoRotation("d6",0,0,0)));
TGeoVolume *a1=geom->MakeTubs("a1",Iron,0,1.5,4,0,0);
a1->SetLineColor(1);
top->AddNodeOverlap(a1,1,new TGeoCombiTrans(0,10,-15.1,new TGeoRotation("a1",0,20,45)));
TGeoVolume *a2=geom->MakeSphere("a2",Iron,0,1.48,0,180,0,200);
a2->SetLineColor(1);
top->AddNodeOverlap(a2,1,new TGeoCombiTrans(0,8.6,-11.5,new TGeoRotation("a2",120,80,20)));
TGeoVolume *a3=geom->MakeTubs("a3",Iron,0,1.5,2.2,0,0);
a3->SetLineColor(1);
top->AddNodeOverlap(a3,1,new TGeoCombiTrans(0,11.3,-20.6,new TGeoRotation("a3",300,0,40)));
TGeoVolume *a4=geom->MakeTubs("a4",Iron,0,1,1,0,0);
a4->SetLineColor(5);
top->AddNodeOverlap(a4,1,new TGeoCombiTrans(0,11.3,-23.8,new TGeoRotation("a4",75,0,30)));
TGeoVolume *a5=geom->MakeTubs("a5",Iron,1.5,2.5,2,0,270);
a5->SetLineColor(5);
top->AddNodeOverlap(a5,1,new TGeoCombiTrans(0,11.3,-26.5,new TGeoRotation("a5",-90,90,00)));
TGeoVolume *a1_1=geom->MakeTubs("a1_1",Iron,0,1.5,4,0,0);
a1_1->SetLineColor(1);
top->AddNodeOverlap(a1_1,1,new TGeoCombiTrans(0,-10,-15.1,new TGeoRotation("a1_1",0,-20,-45)));
TGeoVolume *a2_1=geom->MakeSphere("a2_1",Iron,0,1.48,0,180,0,200);
a2_1->SetLineColor(1);
top->AddNodeOverlap(a2_1,1,new TGeoCombiTrans(0,-8.6,-11.5,new TGeoRotation("a2_1",120,80,-20)));
TGeoVolume *a3_1=geom->MakeTubs("a3_1",Iron,0,1.5,2.2,0,0);
a3_1->SetLineColor(1);
top->AddNodeOverlap(a3_1,1,new TGeoCombiTrans(0,-11.3,-20.6,new TGeoRotation("a3_1",-300,0,-40)));
TGeoVolume *a4_1=geom->MakeTubs("a4_1",Iron,0,1,1,0,0);
a4_1->SetLineColor(5);
top->AddNodeOverlap(a4_1,1,new TGeoCombiTrans(0,-11.3,-23.8,new TGeoRotation("a4_1",-75,0,-30)));
a5=geom->MakeTubs("a5_1",Iron,1.5,2.5,2,0,270);
a5->SetLineColor(5);
top->AddNodeOverlap(a5,1,new TGeoCombiTrans(0,-11.3,-26.5,new TGeoRotation("a5",90,90,00)));
//**********************************NO,2******************
TGeoVolume *ha_1=geom->MakeSphere("ha_1",Iron,0,10,80,90,0,360);
ha_1->SetLineColor(6);
top->AddNodeOverlap(ha_1,1,new TGeoCombiTrans(0,36,4,new TGeoRotation("ha_1",0,0,0)));
TGeoVolume *ha_2=geom->MakeTubs("ha_2",Iron,0,6,5,0,0);
ha_2->SetLineColor(6);
top->AddNodeOverlap(ha_2,1,new TGeoCombiTrans(0,36,10,new TGeoRotation("ha_2",0,180,0)));
TGeoVolume *ha_3=geom->MakeTubs("ha_3",Iron,0,1,12,0,0);
ha_3->SetLineColor(28);
top->AddNodeOverlap(ha_3,1,new TGeoCombiTrans(0,36,8,new TGeoRotation("ha_3",0,90,0)));
TGeoVolume *ha_4=geom->MakeTubs("ha_4",Iron,0,1,3,0,0);
ha_4->SetLineColor(28);
top->AddNodeOverlap(ha_4,1,new TGeoCombiTrans(0,22,10,new TGeoRotation("ha_4",0,0,0)));
TGeoVolume *ha_5=geom->MakeTubs("ha_5",Iron,0,1,3,0,0);
ha_5->SetLineColor(28);
top->AddNodeOverlap(ha_5,1,new TGeoCombiTrans(0,46,10,new TGeoRotation("ha_5",0,0,0)));
TGeoVolume *ha_6=geom->MakeTubs("ha_6",Iron,0,1,3,0,0);
ha_6->SetLineColor(28);
top->AddNodeOverlap(ha_6,1,new TGeoCombiTrans(0,24,10,new TGeoRotation("ha_6",0,0,0)));
TGeoVolume *ha_7=geom->MakeTubs("ha_7",Iron,0,1,3,0,0);
ha_7->SetLineColor(28);
top->AddNodeOverlap(ha_7,1,new TGeoCombiTrans(0,48,10,new TGeoRotation("ha_7",0,0,0)));
TGeoVolume *ha_8=geom->MakeBox("ha_8",Iron,2,0.5,2);
ha_8->SetLineColor(19);
top->AddNodeOverlap(ha_8,1,new TGeoCombiTrans(-4.2,36,9,new TGeoRotation("ha_8",0,45,0)));
TGeoVolume *ha_9=geom->MakeBox("ha_9",Iron,2,0.5,2);
ha_9->SetLineColor(19);
top->AddNodeOverlap(ha_9,1,new TGeoCombiTrans(-4.2,36,9,new TGeoRotation("ha_9",0,135,0)));
TGeoVolume *h_1=geom->MakeTubs("h_1",Iron,0,6,4.5,0,0);
h_1->SetLineColor(5);
top->AddNodeOverlap(h_1,1,new TGeoCombiTrans(0,36,0,new TGeoRotation("h_1",0,0,0)));
TGeoVolume *h_2=geom->MakeSphere("h_2",Iron,0,7.5,0,52.5,0,360);
h_2->SetLineColor(5);
top->AddNodeOverlap(h_2,1,new TGeoCombiTrans(0,36,0,new TGeoRotation("h_2",0,0,0)));
TGeoVolume *h_3=geom->MakeSphere("h_3",Iron,0,7.5,0,52.5,0,360);
h_3->SetLineColor(5);
top->AddNodeOverlap(h_3,1,new TGeoCombiTrans(0,36,0,new TGeoRotation("h_3",180,180,0)));
TGeoVolume *h_4=geom->MakeTubs("h_4",Iron,2.5,3.5,1.5,0,0);
h_4->SetLineColor(5);
top->AddNodeOverlap(h_4,1,new TGeoCombiTrans(0,36,7.5,new TGeoRotation("h_4",0,0,0)));
TGeoVolume *fa1=geom->MakeTubs("fa1",Iron,0,0.5,1,0,360);
fa1->SetLineColor(12);
top->AddNodeOverlap(fa1,1,new TGeoCombiTrans(-5,38,1.5,new TGeoRotation("fa1",-90,90,0)));
TGeoVolume *fa2=geom->MakeTubs("fa2",Iron,0,0.5,1,0,360);
fa2->SetLineColor(12);
top->AddNodeOverlap(fa2,1,new TGeoCombiTrans(-5,34,1.5,new TGeoRotation("fa2",-90,90,0)));
TGeoVolume *fa1_1=geom->MakeTubs("fa1_1",Iron,1,1.2,1,0,360);
fa1_1->SetLineColor(12);
top->AddNodeOverlap(fa1_1,1,new TGeoCombiTrans(-5,38,1.5,new TGeoRotation("fa1_1",-90,90,0)));
TGeoVolume *fa2_1=geom->MakeTubs("fa2_1",Iron,1,1.2,1,0,360);
fa2_1->SetLineColor(12);
top->AddNodeOverlap(fa2_1,1,new TGeoCombiTrans(-5,34,1.5,new TGeoRotation("fa2_1",-90,90,0)));
TGeoVolume *fa3=geom->MakeTubs("fa3",Iron,2,2.3,1,90,270);
fa3->SetLineColor(12);
top->AddNodeOverlap(fa3,1,new TGeoCombiTrans(-5,36,-1,new TGeoRotation("fa3",90,90,90)));
TGeoVolume *m_1=geom->MakeBox("m_1",Iron,7,8,4);
m_1->SetLineColor(25);
top->AddNodeOverlap(m_1,1,new TGeoCombiTrans(0,36,-17,new TGeoRotation("m_1",90,90,0)));
TGeoVolume *m_2=geom->MakeTubs("m_2",Iron,0,1,7,90,180);
m_2->SetLineColor(25);
top->AddNodeOverlap(m_2,1,new TGeoCombiTrans(-3,36,-9,new TGeoRotation("m_2",0,90,0)));
TGeoVolume *m_3=geom->MakeTubs("m_3",Iron,0,1,7,0,90);
m_3->SetLineColor(25);
top->AddNodeOverlap(m_3,1,new TGeoCombiTrans(3,36,-9,new TGeoRotation("m_3",0,90,0)));
TGeoVolume *m_4=geom->MakeBox("m_4",Iron,3,7,0.5);
m_4->SetLineColor(25);
top->AddNodeOverlap(m_4,1,new TGeoCombiTrans(0,36,-8.5,new TGeoRotation("m_4",90,0,90)));
TGeoVolume *m_5=geom->MakeTubs("m_5",Iron,0,1.5,1.2,0,0);
m_5->SetLineColor(5);
top->AddNodeOverlap(m_5,1,new TGeoCombiTrans(0,36,-7.8,new TGeoRotation("m_5",0,0,0)));
TGeoVolume *m_6=geom->MakeTrd2("m_6",Iron,4,4,0,2,8);
m_6->SetLineColor(25);
top->AddNodeOverlap(m_6,1,new TGeoCombiTrans(0,29,-17,new TGeoRotation("m_6",0,180,0)));
TGeoVolume *m_7=geom->MakeTrd2("m_7",Iron,4,4,0,2,8);
m_7->SetLineColor(25);
top->AddNodeOverlap(m_7,1,new TGeoCombiTrans(0,43,-17,new TGeoRotation("m_7",0,180,0)));
TGeoVolume *md_1=geom->MakeBox("md_1",Iron,4,8.5,0.7);
md_1->SetLineColor(48);
top->AddNodeOverlap(md_1,1,new TGeoCombiTrans(0,36,-25.5,new TGeoRotation("md_1",0,0,0)));
TGeoVolume *md_2=geom->MakeBox("md_2",Iron,3,0.4,2);
md_2->SetLineColor(48);
top->AddNodeOverlap(md_2,1,new TGeoCombiTrans(0,36,-28,new TGeoRotation("md_2",0,0,0)));
TGeoVolume *d_1=geom->MakeTrd2("d_1",Iron,3,4,4,4,7);
d_1->SetLineColor(48);
top->AddNodeOverlap(d_1,1,new TGeoCombiTrans(0,40.5,-37.2,new TGeoRotation("d_1",0,0,0)));
TGeoVolume *d_2=geom->MakeTrd2("d_2",Iron,3,4,4,4,7);
d_2->SetLineColor(48);
top->AddNodeOverlap(d_2,1,new TGeoCombiTrans(0,31.5,-37.2,new TGeoRotation("d_2",0,0,0)));
TGeoVolume *d_3=geom->MakeTubs("d_3",Iron,0,4,3.98,0,180);
d_3->SetLineColor(48);
top->AddNodeOverlap(d_3,1,new TGeoCombiTrans(0,40.5,-30.2,new TGeoRotation("d_3",0,90,0)));
TGeoVolume *d_4=geom->MakeTubs("d_4",Iron,0,4,3.98,0,180);
d_4->SetLineColor(48);
top->AddNodeOverlap(d_4,1,new TGeoCombiTrans(0,31.5,-30.2,new TGeoRotation("d_4",0,90,0)));
TGeoVolume *d_5=geom->MakeBox("d_5",Iron,4,4,1);
d_5->SetLineColor(48);
top->AddNodeOverlap(d_5,1,new TGeoCombiTrans(-1,40.5,-43.7,new TGeoRotation("d_5",0,0,0)));
TGeoVolume *d_6=geom->MakeBox("d_6",Iron,4,4,1);
d_6->SetLineColor(48);
top->AddNodeOverlap(d_6,1,new TGeoCombiTrans(-1,31.5,-43.7,new TGeoRotation("d_6",0,0,0)));
TGeoVolume *a_1=geom->MakeTubs("a_1",Iron,0,1.5,4,0,0);
a_1->SetLineColor(45);
top->AddNodeOverlap(a_1,1,new TGeoCombiTrans(0,46,-15.1,new TGeoRotation("a_1",0,20,45)));
TGeoVolume *a_2=geom->MakeSphere("a_2",Iron,0,1.48,0,180,0,200);
a_2->SetLineColor(45);
top->AddNodeOverlap(a_2,1,new TGeoCombiTrans(0,44.6,-11.5,new TGeoRotation("a_2",120,80,20)));
TGeoVolume *a_3=geom->MakeTubs("a_3",Iron,0,1.5,2.2,0,0);
a_3->SetLineColor(45);
top->AddNodeOverlap(a_3,1,new TGeoCombiTrans(0,47.3,-20.6,new TGeoRotation("a_3",300,0,40)));
TGeoVolume *a_4=geom->MakeTubs("a_4",Iron,0,1,1,0,0);
a_4->SetLineColor(12);
top->AddNodeOverlap(a_4,1,new TGeoCombiTrans(0,47.3,-23.8,new TGeoRotation("a_4",75,0,30)));
TGeoVolume *a_5=geom->MakeTubs("a_5",Iron,1.5,2.5,2,0,270);
a_5->SetLineColor(12);
top->AddNodeOverlap(a_5,1,new TGeoCombiTrans(0,47.3,-26.5,new TGeoRotation("a_5",-90,90,0)));
TGeoVolume *Aa1=geom->MakeTubs("Aa1",Iron,0,1.5,4,0,0);
Aa1->SetLineColor(45);
top->AddNodeOverlap(Aa1,1,new TGeoCombiTrans(0,26,-15.1,new TGeoRotation("Aa1",0,-20,-45)));
TGeoVolume *Aa2=geom->MakeSphere("Aa2",Iron,0,1.48,0,180,0,200);
Aa2->SetLineColor(45);
top->AddNodeOverlap(Aa2,1,new TGeoCombiTrans(0,27.4,-11.5,new TGeoRotation("Aa2",120,80,-20)));
TGeoVolume *Aa3=geom->MakeTubs("Aa3",Iron,0,1.5,2.2,0,0);
Aa3->SetLineColor(45);
top->AddNodeOverlap(Aa3,1,new TGeoCombiTrans(0,24.7,-20.6,new TGeoRotation("Aa3",-300,0,-40)));
TGeoVolume *Aa4=geom->MakeTubs("Aa4",Iron,0,1,1,0,0);
Aa4->SetLineColor(12);
top->AddNodeOverlap(Aa4,1,new TGeoCombiTrans(0,24.7,-23.8,new TGeoRotation("Aa4",-75,0,-30)));
TGeoVolume *Aa5=geom->MakeTubs("Aa5",Iron,1.5,2.5,2,0,270);
Aa5->SetLineColor(12);
top->AddNodeOverlap(Aa5,1,new TGeoCombiTrans(0,24.7,-26.5,new TGeoRotation("Aa5",90,90,00)));
TGeoVolume *bag1=geom->MakeBox("bag1",Iron,10,4,6);
bag1->SetLineColor(19);
top->AddNodeOverlap(bag1,1,new TGeoCombiTrans(0,48,-36,new TGeoRotation("bag1",0,0,0)));
TGeoVolume *bag2=geom->MakeTubs("bag2",Iron,3,4,1,180,360);
bag2->SetLineColor(19);
top->AddNodeOverlap(bag2,1,new TGeoCombiTrans(0,48,-30,new TGeoRotation("bag2",0,270,0)));
TGeoVolume *well=geom->MakeBox("well",Iron,5,10,3);
well->SetLineColor(18);
top->AddNodeOverlap(well,1,new TGeoCombiTrans(-26.5,-17,-42,new TGeoRotation("well",0,0,0)));
TGeoVolume *K5=geom->MakeTubs("K5",Iron,0,3,3,0,0);
K5->SetLineColor(18);
top->AddNodeOverlap(K5,1,new TGeoCombiTrans(-27,-12.5,-39,new TGeoRotation("K5",0,0,0)));
TGeoVolume *K4=geom->MakeTubs("K4",Iron,0,3,3,0,0);
K4->SetLineColor(18);
top->AddNodeOverlap(K4,1,new TGeoCombiTrans(-27,-21.5,-39,new TGeoRotation("K4",0,0,0)));
//==============Board=========
char nB[100];
int Z=0,Y=0;
TGeoVolume *bo1;
while(Y<6){
while(Z<10){
sprintf(nB,"B%d_Y%d",Z,Y);
bo1=geom->MakeTubs(nB,Iron,0,3,3,0,0);
bo1->SetLineColor(8);
top->AddNodeOverlap(bo1,1,new TGeoCombiTrans(-27+(Y*9),-21.5+(Z*9),-45,new TGeoRotation("bo1",0,0,0)));
Z++;
}
Y++; Z=0;
}
TGeoVolume *bo2=geom->MakeBox("bo2",Iron,27,45,3);
bo2->SetLineColor(8);
top->AddNodeOverlap(bo2,1,new TGeoCombiTrans(-4.5,18,-48,new TGeoRotation("bo2",0,0,0)));
top->SetVisibility(0);
geom->CloseGeometry();
top->Draw("ogl");
}
Author
Soon Gi Kwon(1116w.nosp@m.on@h.nosp@m.anmai.nosp@m.l.ne.nosp@m.t), Dept. of Physics, Univ. of Seoul

Definition in file lego.C.

TGeoCombiTrans
Definition: TGeoMatrix.h:291
TGeoManager::MakeBox
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.
Definition: TGeoManager.cxx:2918
TGeoManager::CloseGeometry
void CloseGeometry(Option_t *option="d")
Closing geometry implies checking the geometry validity, fixing shapes with negative parameters (run-...
Definition: TGeoManager.cxx:1359
TGeoManager::MakeTrd2
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.
Definition: TGeoManager.cxx:3061
TGeoManager::SetTopVisible
void SetTopVisible(Bool_t vis=kTRUE)
make top volume visible on screen
Definition: TGeoManager.cxx:2193
h1
TH1F * h1
Definition: legend1.C:5
TGeoMaterial
Definition: TGeoMaterial.h:34
TGeant4Unit::m2
static constexpr double m2
Definition: TGeant4SystemOfUnits.h:129
TGeoManager::SetTopVolume
void SetTopVolume(TGeoVolume *vol)
Set the top volume and corresponding node as starting point of the geometry.
Definition: TGeoManager.cxx:3397
TSystem.h
TGeoVolume::Draw
virtual void Draw(Option_t *option="")
draw top volume according to option
Definition: TGeoVolume.cxx:1146
TGeoRotation
Definition: TGeoMatrix.h:174
TGeoManager::MakeSphere
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.
Definition: TGeoManager.cxx:2937
TGeant4Unit::m3
static constexpr double m3
Definition: TGeant4SystemOfUnits.h:130
TGeoManager.h
TGeoVolume::AddNodeOverlap
virtual void AddNodeOverlap(TGeoVolume *vol, Int_t copy_no, TGeoMatrix *mat=0, Option_t *option="")
Add a TGeoNode to the list of nodes.
Definition: TGeoVolume.cxx:996
TGeoManager::MakeTubs
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.
Definition: TGeoManager.cxx:2966
TGeoMedium
Definition: TGeoMedium.h:23
TGeoVolume::SetLineColor
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Definition: TGeoVolume.cxx:2035
TGeoManager
Definition: TGeoManager.h:44
TGeoVolume::SetVisibility
virtual void SetVisibility(Bool_t vis=kTRUE)
set visibility of this volume
Definition: TGeoVolume.cxx:2197
TGeoVolume
Definition: TGeoVolume.h:44