robot.C: Drawing a famous Korean robot, TaekwonV, using ROOT geometry class. | Geometry package | runplugin.C: Creates and runs a simple iterator plugin connected to TGeoPainter iterator. |
void rootgeom() { //Definition of a simple geometry (the 4 ROOT characters) //Author: Andrei Gheata // gStyle->SetCanvasPreferGL(true); gSystem->Load("libGeom"); TGeoManager *geom = new TGeoManager("simple1", "Simple geometry"); //--- define some materials TGeoMaterial *matVacuum = new TGeoMaterial("Vacuum", 0,0,0); TGeoMaterial *matAl = new TGeoMaterial("Al", 26.98,13,2.7); // //--- define some media TGeoMedium *Vacuum = new TGeoMedium("Vacuum",1, matVacuum); TGeoMedium *Al = new TGeoMedium("Root Material",2, matAl); //--- define the transformations TGeoTranslation *tr1 = new TGeoTranslation(20., 0, 0.); TGeoTranslation *tr2 = new TGeoTranslation(10., 0., 0.); TGeoTranslation *tr3 = new TGeoTranslation(10., 20., 0.); TGeoTranslation *tr4 = new TGeoTranslation(5., 10., 0.); TGeoTranslation *tr5 = new TGeoTranslation(20., 0., 0.); TGeoTranslation *tr6 = new TGeoTranslation(-5., 0., 0.); TGeoTranslation *tr7 = new TGeoTranslation(7.5, 7.5, 0.); TGeoRotation *rot1 = new TGeoRotation("rot1", 90., 0., 90., 270., 0., 0.); TGeoCombiTrans *combi1 = new TGeoCombiTrans(7.5, -7.5, 0., rot1); TGeoTranslation *tr8 = new TGeoTranslation(7.5, -5., 0.); TGeoTranslation *tr9 = new TGeoTranslation(7.5, 20., 0.); TGeoTranslation *tr10 = new TGeoTranslation(85., 0., 0.); TGeoTranslation *tr11 = new TGeoTranslation(35., 0., 0.); TGeoTranslation *tr12 = new TGeoTranslation(-15., 0., 0.); TGeoTranslation *tr13 = new TGeoTranslation(-65., 0., 0.); TGeoTranslation *tr14 = new TGeoTranslation(0,0,-100); TGeoCombiTrans *combi2 = new TGeoCombiTrans(0,0,100, new TGeoRotation("rot2",90,180,90,90,180,0)); TGeoCombiTrans *combi3 = new TGeoCombiTrans(100,0,0, new TGeoRotation("rot3",90,270,0,0,90,180)); TGeoCombiTrans *combi4 = new TGeoCombiTrans(-100,0,0, new TGeoRotation("rot4",90,90,0,0,90,0)); TGeoCombiTrans *combi5 = new TGeoCombiTrans(0,100,0, new TGeoRotation("rot5",0,0,90,180,90,270)); TGeoCombiTrans *combi6 = new TGeoCombiTrans(0,-100,0, new TGeoRotation("rot6",180,0,90,180,90,90)); //--- make the top container volume Double_t worldx = 110.; Double_t worldy = 50.; Double_t worldz = 5.; TGeoVolume *top = geom->MakeBox("TOP", Vacuum, 270., 270., 120.); geom->SetTopVolume(top); TGeoVolume *replica = geom->MakeBox("REPLICA", Vacuum,120,120,120); replica->SetVisibility(kFALSE); TGeoVolume *rootbox = geom->MakeBox("ROOT", Vacuum, 110., 50., 5.); rootbox->SetVisibility(kFALSE); //--- make letter 'R' TGeoVolume *R = geom->MakeBox("R", Vacuum, 25., 25., 5.); R->SetVisibility(kFALSE); TGeoVolume *bar1 = geom->MakeBox("bar1", Al, 5., 25, 5.); bar1->SetLineColor(kRed); R->AddNode(bar1, 1, tr1); TGeoVolume *bar2 = geom->MakeBox("bar2", Al, 5., 5., 5.); bar2->SetLineColor(kRed); R->AddNode(bar2, 1, tr2); R->AddNode(bar2, 2, tr3); TGeoVolume *tub1 = geom->MakeTubs("tub1", Al, 5., 15., 5., 90., 270.); tub1->SetLineColor(kRed); R->AddNode(tub1, 1, tr4); TGeoVolume *bar3 = geom->MakeArb8("bar3", Al, 5.); bar3->SetLineColor(kRed); TGeoArb8 *arb = (TGeoArb8*)bar3->GetShape(); arb->SetVertex(0, 15., -5.); arb->SetVertex(1, 0., -25.); arb->SetVertex(2, -10., -25.); arb->SetVertex(3, 5., -5.); arb->SetVertex(4, 15., -5.); arb->SetVertex(5, 0., -25.); arb->SetVertex(6, -10., -25.); arb->SetVertex(7, 5., -5.); R->AddNode(bar3, 1, gGeoIdentity); //--- make letter 'O' TGeoVolume *O = geom->MakeBox("O", Vacuum, 25., 25., 5.); O->SetVisibility(kFALSE); TGeoVolume *bar4 = geom->MakeBox("bar4", Al, 5., 7.5, 5.); bar4->SetLineColor(kYellow); O->AddNode(bar4, 1, tr5); O->AddNode(bar4, 2, tr6); TGeoVolume *tub2 = geom->MakeTubs("tub1", Al, 7.5, 17.5, 5., 0., 180.); tub2->SetLineColor(kYellow); O->AddNode(tub2, 1, tr7); O->AddNode(tub2, 2, combi1); //--- make letter 'T' TGeoVolume *T = geom->MakeBox("T", Vacuum, 25., 25., 5.); T->SetVisibility(kFALSE); TGeoVolume *bar5 = geom->MakeBox("bar5", Al, 5., 20., 5.); bar5->SetLineColor(kBlue); T->AddNode(bar5, 1, tr8); TGeoVolume *bar6 = geom->MakeBox("bar6", Al, 17.5, 5., 5.); bar6->SetLineColor(kBlue); T->AddNode(bar6, 1, tr9); rootbox->AddNode(R, 1, tr10); rootbox->AddNode(O, 1, tr11); rootbox->AddNode(O, 2, tr12); rootbox->AddNode(T, 1, tr13); replica->AddNode(rootbox, 1, tr14); replica->AddNode(rootbox, 2, combi2); replica->AddNode(rootbox, 3, combi3); replica->AddNode(rootbox, 4, combi4); replica->AddNode(rootbox, 5, combi5); replica->AddNode(rootbox, 6, combi6); top->AddNode(replica, 1, new TGeoTranslation(-150, -150, 0)); top->AddNode(replica, 2, new TGeoTranslation(150, -150, 0)); top->AddNode(replica, 3, new TGeoTranslation(150, 150, 0)); top->AddNode(replica, 4, new TGeoTranslation(-150, 150, 0)); //--- close the geometry geom->CloseGeometry(); //--- draw the ROOT box. // by default the picture will appear in the standard ROOT TPad. //if you have activated the following line in system.rootrc, //it will appear in the GL viewer //#Viewer3D.DefaultDrawOption: ogl geom->SetVisLevel(4); top->Draw("ogle"); } rootgeom.C:1 rootgeom.C:2 rootgeom.C:3 rootgeom.C:4 rootgeom.C:5 rootgeom.C:6 rootgeom.C:7 rootgeom.C:8 rootgeom.C:9 rootgeom.C:10 rootgeom.C:11 rootgeom.C:12 rootgeom.C:13 rootgeom.C:14 rootgeom.C:15 rootgeom.C:16 rootgeom.C:17 rootgeom.C:18 rootgeom.C:19 rootgeom.C:20 rootgeom.C:21 rootgeom.C:22 rootgeom.C:23 rootgeom.C:24 rootgeom.C:25 rootgeom.C:26 rootgeom.C:27 rootgeom.C:28 rootgeom.C:29 rootgeom.C:30 rootgeom.C:31 rootgeom.C:32 rootgeom.C:33 rootgeom.C:34 rootgeom.C:35 rootgeom.C:36 rootgeom.C:37 rootgeom.C:38 rootgeom.C:39 rootgeom.C:40 rootgeom.C:41 rootgeom.C:42 rootgeom.C:43 rootgeom.C:44 rootgeom.C:45 rootgeom.C:46 rootgeom.C:47 rootgeom.C:48 rootgeom.C:49 rootgeom.C:50 rootgeom.C:51 rootgeom.C:52 rootgeom.C:53 rootgeom.C:54 rootgeom.C:55 rootgeom.C:56 rootgeom.C:57 rootgeom.C:58 rootgeom.C:59 rootgeom.C:60 rootgeom.C:61 rootgeom.C:62 rootgeom.C:63 rootgeom.C:64 rootgeom.C:65 rootgeom.C:66 rootgeom.C:67 rootgeom.C:68 rootgeom.C:69 rootgeom.C:70 rootgeom.C:71 rootgeom.C:72 rootgeom.C:73 rootgeom.C:74 rootgeom.C:75 rootgeom.C:76 rootgeom.C:77 rootgeom.C:78 rootgeom.C:79 rootgeom.C:80 rootgeom.C:81 rootgeom.C:82 rootgeom.C:83 rootgeom.C:84 rootgeom.C:85 rootgeom.C:86 rootgeom.C:87 rootgeom.C:88 rootgeom.C:89 rootgeom.C:90 rootgeom.C:91 rootgeom.C:92 rootgeom.C:93 rootgeom.C:94 rootgeom.C:95 rootgeom.C:96 rootgeom.C:97 rootgeom.C:98 rootgeom.C:99 rootgeom.C:100 rootgeom.C:101 rootgeom.C:102 rootgeom.C:103 rootgeom.C:104 rootgeom.C:105 rootgeom.C:106 rootgeom.C:107 rootgeom.C:108 rootgeom.C:109 rootgeom.C:110 rootgeom.C:111 rootgeom.C:112 rootgeom.C:113 rootgeom.C:114 rootgeom.C:115 rootgeom.C:116 rootgeom.C:117 rootgeom.C:118 rootgeom.C:119 rootgeom.C:120 rootgeom.C:121 rootgeom.C:122 rootgeom.C:123 rootgeom.C:124 rootgeom.C:125 rootgeom.C:126 rootgeom.C:127 rootgeom.C:128 rootgeom.C:129 rootgeom.C:130 rootgeom.C:131 rootgeom.C:132 rootgeom.C:133 rootgeom.C:134 rootgeom.C:135 rootgeom.C:136 rootgeom.C:137 |
|