/// \file
/// \ingroup tutorial_geom
/// Drawing a space station, using ROOT geometry class.
///
/// Reviewed by Sunman Kim (sunman98@hanmail.net)
/// Supervisor: Prof. Inkyu Park (icpark@physics.uos.ac.kr)
///
/// How to run: `.x station1.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
///
/// \image html geom_station1.png width=800px
/// \macro_code
///
/// \author Chang Yeol Lee, Dept. of Physics, Univ. of Seoul

#include "TGeoManager.h"

void station1()
{

   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);
   TGeoMaterial *Cu = new TGeoMaterial("Cu", 63.549, 29, 8.92);

   TGeoMedium *Air = new TGeoMedium("Vacuum", 0, vacuum);
   TGeoMedium *Iron = new TGeoMedium("Iron", 1, Fe);
   TGeoMedium *Copper = new TGeoMedium("Copper", 2, Cu);

   TGeoVolume *top = geom->MakeBox("top", Air, 1000, 1000, 1000);
   geom->SetTopVolume(top);
   geom->SetTopVisible(false);
   // If you want to see the boundary, please input the number, 1 instead of 0.
   // Like this, geom->SetTopVisible(1);

   TGeoVolume *Cone1 = geom->MakeCone("Cone1", Copper, 650, 0, 20, 0, 20);
   Cone1->SetFillColor(35);
   Cone1->SetLineColor(35);
   top->AddNodeOverlap(Cone1, 1, new TGeoTranslation(0, 0, 0));

   TGeoVolume *Cone2 = geom->MakeCone("Cone2", Copper, 25, 0, 30, 0, 30);
   Cone2->SetFillColor(7);
   Cone2->SetLineColor(7);
   top->AddNodeOverlap(Cone2, 1, new TGeoTranslation(0, 0, 630));

   TGeoVolume *Cone21 = geom->MakeCone("Cone21", Copper, 30, 0, 30, 0, 30);
   Cone21->SetFillColor(29);
   Cone21->SetLineColor(29);
   top->AddNodeOverlap(Cone21, 1, new TGeoTranslation(0, 0, 550));

   TGeoVolume *Cone22 = geom->MakeCone("Cone22", Copper, 5, 0, 50, 0, 50);
   Cone22->SetFillColor(2);
   Cone22->SetLineColor(2);
   top->AddNodeOverlap(Cone22, 1, new TGeoTranslation(0, 0, 500));

   for (int i = 0; i < 28; i++) {
      TGeoVolume *Cone00 = geom->MakeCone("Cone00", Copper, 3, 0, 25, 0, 25);
      Cone00->SetFillColor(1);
      Cone00->SetLineColor(1);
      top->AddNodeOverlap(Cone00, 1, new TGeoTranslation(0, 0, -100 + 20 * i));
   }

   TGeoVolume *Cone3 = geom->MakeCone("Cone3", Copper, 60, 0, 70, 0, 0);
   Cone3->SetFillColor(13);
   Cone3->SetLineColor(13);
   top->AddNodeOverlap(Cone3, 1, new TGeoTranslation(-60, 0, -110));

   TGeoVolume *Cone31 = geom->MakeCone("Cone31", Copper, 230, 0, 70, 0, 70);
   Cone31->SetFillColor(13);
   Cone31->SetLineColor(13);
   top->AddNodeOverlap(Cone31, 1, new TGeoTranslation(-60, 0, -400));

   for (int i = 0; i < 5; i++) {
      Cone31 = geom->MakeCone("Cone31", Copper, 7, 0, 73, 0, 73);
      Cone31->SetFillColor(21);
      Cone31->SetLineColor(21);
      top->AddNodeOverlap(Cone31, 1, new TGeoTranslation(-60, 0, -170 - (500 / 6 * (i + 1))));
      top->AddNodeOverlap(Cone31, 1, new TGeoTranslation(60, 0, -170 - (500 / 6 * (i + 1))));
      top->AddNodeOverlap(Cone31, 1, new TGeoTranslation(0, -60, -170 - (500 / 6 * (i + 1))));
      top->AddNodeOverlap(Cone31, 1, new TGeoTranslation(0, 60, -170 - (500 / 6 * (i + 1))));
   }

   TGeoVolume *Cone32 = geom->MakeCone("Cone32", Copper, 30, 60, 50, 0, 70);
   Cone32->SetFillColor(35);
   Cone32->SetLineColor(35);
   top->AddNodeOverlap(Cone32, 1, new TGeoTranslation(-60, 0, -650));

   TGeoVolume *Cone321 = geom->MakeCone("Cone321", Copper, 5, 60, 50, 0, 50);
   Cone321->SetFillColor(2);
   Cone321->SetLineColor(2);
   top->AddNodeOverlap(Cone321, 1, new TGeoTranslation(-60, 0, -680));

   TGeoVolume *Cone4 = geom->MakeCone("Cone4", Copper, 60, 0, 70, 0, 0);
   Cone4->SetFillColor(13);
   Cone4->SetLineColor(13);
   top->AddNodeOverlap(Cone3, 1, new TGeoTranslation(60, 0, -110));

   for (int i = 1; i <= 8; i++) {
      TGeoVolume *Torus2 = geom->MakeTorus("Torus2", Iron, 120, 20, 40, 45 * i - 4, 8);
      Torus2->SetFillColor(18);
      Torus2->SetLineColor(18);
      top->AddNodeOverlap(Torus2, 1, new TGeoTranslation(0, 0, 610));

      TGeoVolume *Tubs = geom->MakeTubs("Line", Iron, 0, 190, 5, 45 * i - 1, 45 * i + 1);
      Tubs->SetFillColor(18);
      Tubs->SetLineColor(18);
      top->AddNodeOverlap(Tubs, 1, new TGeoTranslation(0, 0, 610));
   }

   TGeoVolume *Cone41 = geom->MakeCone("Cone41", Copper, 230, 0, 70, 0, 70);
   Cone41->SetFillColor(13);
   Cone41->SetLineColor(13);
   top->AddNodeOverlap(Cone41, 1, new TGeoTranslation(60, 0, -400));

   TGeoVolume *Cone42 = geom->MakeCone("Cone42", Copper, 30, 60, 50, 0, 70);
   Cone42->SetFillColor(35);
   Cone42->SetLineColor(35);
   top->AddNodeOverlap(Cone42, 1, new TGeoTranslation(60, 0, -650));

   TGeoVolume *Cone421 = geom->MakeCone("Cone421", Copper, 5, 60, 50, 0, 50);
   Cone421->SetFillColor(2);
   Cone421->SetLineColor(2);
   top->AddNodeOverlap(Cone421, 1, new TGeoTranslation(60, 0, -680));

   TGeoVolume *Cone5 = geom->MakeCone("Cone5", Copper, 60, 0, 70, 0, 0);
   Cone5->SetFillColor(13);
   Cone5->SetLineColor(13);
   top->AddNodeOverlap(Cone3, 1, new TGeoTranslation(0, -60, -110));

   TGeoVolume *Cone51 = geom->MakeCone("Cone51", Copper, 230, 0, 70, 0, 70);
   Cone51->SetFillColor(13);
   Cone51->SetLineColor(13);
   top->AddNodeOverlap(Cone51, 1, new TGeoTranslation(0, -60, -400));

   TGeoVolume *Cone52 = geom->MakeCone("Cone52", Copper, 30, 60, 50, 0, 70);
   Cone52->SetFillColor(35);
   Cone52->SetLineColor(35);
   top->AddNodeOverlap(Cone52, 1, new TGeoTranslation(0, -60, -650));

   TGeoVolume *Cone521 = geom->MakeCone("Cone521", Copper, 5, 60, 50, 0, 50);
   Cone521->SetFillColor(2);
   Cone521->SetLineColor(2);
   top->AddNodeOverlap(Cone521, 1, new TGeoTranslation(0, -60, -680));

   TGeoVolume *Cone6 = geom->MakeCone("Cone6", Copper, 60, 0, 70, 0, 0);
   Cone6->SetFillColor(13);
   Cone6->SetLineColor(13);
   top->AddNodeOverlap(Cone3, 1, new TGeoTranslation(0, 60, -110));

   TGeoVolume *Cone61 = geom->MakeCone("Cone61", Copper, 230, 0, 70, 0, 70);
   Cone61->SetFillColor(13);
   Cone61->SetLineColor(13);
   top->AddNodeOverlap(Cone61, 1, new TGeoTranslation(0, 60, -400));

   TGeoVolume *Cone62 = geom->MakeCone("Cone62", Copper, 30, 60, 50, 0, 70);
   Cone62->SetFillColor(35);
   Cone62->SetLineColor(35);
   top->AddNodeOverlap(Cone62, 1, new TGeoTranslation(0, 60, -650));

   TGeoVolume *Cone621 = geom->MakeCone("Cone621", Copper, 5, 60, 50, 0, 50);
   Cone621->SetFillColor(2);
   Cone621->SetLineColor(2);
   top->AddNodeOverlap(Cone621, 1, new TGeoTranslation(0, 60, -680));

   TGeoVolume *Cone7 = geom->MakeCone("Cone7", Copper, 50, 0, 40, 0, 5);
   Cone7->SetFillColor(13);
   Cone7->SetLineColor(13);
   top->AddNodeOverlap(Cone7, 1, new TGeoCombiTrans(-90, -60, 10, new TGeoRotation("Cone7", 90, -90, -90)));

   TGeoVolume *Cone71 = geom->MakeCone("Cone71", Copper, 50, 0, 60, 0, 40);
   Cone71->SetFillColor(16);
   Cone71->SetLineColor(16);
   top->AddNodeOverlap(Cone71, 1, new TGeoCombiTrans(10, -60, 10, new TGeoRotation("Cone7", 90, -90, -90)));

   TGeoVolume *Cone711 = geom->MakeCone("Cone711", Copper, 10, 0, 10, 0, 60);
   Cone711->SetFillColor(13);
   Cone711->SetLineColor(13);
   top->AddNodeOverlap(Cone711, 1, new TGeoCombiTrans(70, -60, 10, new TGeoRotation("Cone7", 90, -90, -90)));

   TGeoVolume *Torus1 = geom->MakeTorus("Torus1", Iron, 120, 30, 20);
   Torus1->SetFillColor(33);
   Torus1->SetLineColor(33);
   top->AddNodeOverlap(Torus1, 1, new TGeoTranslation(0, 0, 610));

   TGeoVolume *Cone8 = geom->MakeCone("Cone8", Copper, 50, 0, 40, 0, 5);
   Cone8->SetFillColor(13);
   Cone8->SetLineColor(13);
   top->AddNodeOverlap(Cone8, 1, new TGeoCombiTrans(100, 60, 10, new TGeoRotation("Cone8", 90, 90, 0)));

   TGeoVolume *Cone81 = geom->MakeCone("Cone81", Copper, 50, 0, 60, 0, 40);
   Cone81->SetFillColor(16);
   Cone81->SetLineColor(16);
   top->AddNodeOverlap(Cone81, 1, new TGeoCombiTrans(0, 60, 10, new TGeoRotation("Cone8", 90, 90, 0)));

   TGeoVolume *Cone811 = geom->MakeCone("Cone811", Copper, 10, 0, 10, 0, 60);
   Cone811->SetFillColor(13);
   Cone811->SetLineColor(13);
   top->AddNodeOverlap(Cone811, 1, new TGeoCombiTrans(-60, 60, 10, new TGeoRotation("Cone8", 90, 90, 0)));

   TGeoVolume *Box1 = geom->MakeBox("Box1", Copper, 10, 10, 3);
   Box1->SetFillColor(3);
   Box1->SetLineColor(3);
   top->AddNodeOverlap(Box1, 1, new TGeoCombiTrans(-110, -50, 645, new TGeoRotation("Box1", 0, 0, 30)));

   TGeoVolume *Box2 = geom->MakeBox("Box2", Copper, 10, 10, 3);
   Box2->SetFillColor(3);
   Box2->SetLineColor(3);
   top->AddNodeOverlap(Box2, 1, new TGeoCombiTrans(110, 45, 645, new TGeoRotation("Box2", 0, 0, 30)));

   TGeoVolume *Box3 = geom->MakeBox("Box3", Copper, 10, 10, 3);
   Box3->SetFillColor(3);
   Box3->SetLineColor(3);
   top->AddNodeOverlap(Box3, 1, new TGeoCombiTrans(-45, -110, 645, new TGeoRotation("Box3", 0, 0, 70)));

   TGeoVolume *Box4 = geom->MakeBox("Box4", Copper, 10, 10, 3);
   Box4->SetFillColor(3);
   Box4->SetLineColor(3);
   top->AddNodeOverlap(Box4, 1, new TGeoCombiTrans(45, 110, 645, new TGeoRotation("Box4", 0, 0, 70)));

   TGeoVolume *Box5 = geom->MakeBox("Box5", Copper, 10, 10, 3);
   Box5->SetFillColor(3);
   Box5->SetLineColor(3);
   top->AddNodeOverlap(Box5, 1, new TGeoCombiTrans(45, -110, 645, new TGeoRotation("Box5", 0, 0, 30)));

   TGeoVolume *Box6 = geom->MakeBox("Box6", Copper, 10, 10, 3);
   Box6->SetFillColor(3);
   Box6->SetLineColor(3);
   top->AddNodeOverlap(Box6, 1, new TGeoCombiTrans(-45, 110, 645, new TGeoRotation("Box6", 0, 0, 25)));

   TGeoVolume *Box7 = geom->MakeBox("Box7", Copper, 10, 10, 3);
   Box7->SetFillColor(3);
   Box7->SetLineColor(3);
   top->AddNodeOverlap(Box7, 1, new TGeoCombiTrans(110, -50, 645, new TGeoRotation("Box7", 0, 0, 60)));

   TGeoVolume *Box8 = geom->MakeBox("Box8", Copper, 10, 10, 3);
   Box8->SetFillColor(3);
   Box8->SetLineColor(3);
   top->AddNodeOverlap(Box8, 1, new TGeoCombiTrans(-110, 45, 645, new TGeoRotation("Box8", 0, 0, 60)));

   Torus1 = geom->MakeTorus("Torus1", Iron, 120, 30, 20);
   Torus1->SetFillColor(33);
   Torus1->SetLineColor(33);
   top->AddNodeOverlap(Torus1, 1, new TGeoTranslation(0, 0, 610));

   for (int i = 1; i <= 8; i++) {
      TGeoVolume *Torus2 = geom->MakeTorus("Torus2", Iron, 120, 20, 40, 45 * i - 4, 8);
      Torus2->SetFillColor(18);
      Torus2->SetLineColor(18);
      top->AddNodeOverlap(Torus2, 1, new TGeoTranslation(0, 0, 610));

      TGeoVolume *Tubs = geom->MakeTubs("Line", Iron, 0, 190, 5, 45 * i - 1, 45 * i + 1);
      Tubs->SetFillColor(18);
      Tubs->SetLineColor(18);
      top->AddNodeOverlap(Tubs, 1, new TGeoTranslation(0, 0, 610));
   }

   TGeoVolume *Sphere00 = geom->MakeSphere("Sphere00", Iron, 0, 15, 0, 45, 0);
   Sphere00->SetFillColor(2);
   Sphere00->SetLineColor(2);
   top->AddNodeOverlap(Sphere00, 1, new TGeoTranslation(-145, -145, 600));

   TGeoVolume *Sphere01 = geom->MakeSphere("Sphere01", Iron, 0, 15, 0, 45, 0);
   Sphere01->SetFillColor(2);
   Sphere01->SetLineColor(2);
   top->AddNodeOverlap(Sphere01, 1, new TGeoTranslation(0, -210, 600));

   TGeoVolume *Sphere02 = geom->MakeSphere("Sphere02", Iron, 0, 15, 0, 45, 0);
   Sphere02->SetFillColor(2);
   Sphere02->SetLineColor(2);
   top->AddNodeOverlap(Sphere02, 1, new TGeoTranslation(145, 145, 600));

   TGeoVolume *Sphere03 = geom->MakeSphere("Sphere03", Iron, 0, 15, 0, 45, 0);
   Sphere03->SetFillColor(2);
   Sphere03->SetLineColor(2);
   top->AddNodeOverlap(Sphere03, 1, new TGeoTranslation(0, 210, 600));

   TGeoVolume *Sphere04 = geom->MakeSphere("Sphere04", Iron, 0, 15, 0, 45, 0);
   Sphere04->SetFillColor(2);
   Sphere04->SetLineColor(2);
   top->AddNodeOverlap(Sphere04, 1, new TGeoTranslation(145, -145, 600));

   TGeoVolume *Sphere05 = geom->MakeSphere("Sphere05", Iron, 0, 15, 0, 45, 0);
   Sphere05->SetFillColor(2);
   Sphere05->SetLineColor(2);
   top->AddNodeOverlap(Sphere05, 1, new TGeoTranslation(-210, 0, 600));

   TGeoVolume *Sphere06 = geom->MakeSphere("Sphere06", Iron, 0, 15, 0, 45, 0);
   Sphere06->SetFillColor(2);
   Sphere06->SetLineColor(2);
   top->AddNodeOverlap(Sphere06, 1, new TGeoTranslation(210, 0, 600));

   TGeoVolume *Sphere07 = geom->MakeSphere("Sphere07", Iron, 0, 15, 0, 45, 0);
   Sphere07->SetFillColor(2);
   Sphere07->SetLineColor(2);
   top->AddNodeOverlap(Sphere07, 1, new TGeoTranslation(-145, 145, 600));

   TGeoVolume *Torus3 = geom->MakeTorus("Torus3", Iron, 190, 0, 10);
   Torus3->SetFillColor(18);
   Torus3->SetLineColor(18);
   top->AddNodeOverlap(Torus3, 1, new TGeoTranslation(0, 0, 610));

   TGeoVolume *Sphere1 = geom->MakeSphere("Sphere1", Iron, 0, 20, 0, 180, 0, 360);
   Sphere1->SetFillColor(2);
   Sphere1->SetLineColor(2);
   top->AddNodeOverlap(Sphere1, 1, new TGeoTranslation(0, 0, 650));

   TGeoVolume *Tubs = geom->MakeTubs("Tubs", Iron, 0, 40, 50, 0, 360);
   Tubs->SetFillColor(29);
   Tubs->SetLineColor(29);
   top->AddNodeOverlap(Tubs, 1, new TGeoTranslation(0, 0, 500));

   TGeoVolume *Tubs1 = geom->MakeTubs("Tubs1", Iron, 50, 60, 230, 40, 150);
   Tubs1->SetFillColor(18);
   Tubs1->SetLineColor(18);
   top->AddNodeOverlap(Tubs1, 1, new TGeoTranslation(-170, -30, -400));

   TGeoVolume *Tubs11 = geom->MakeTubs("Tubs11", Iron, 50, 60, 230, 220, 330);
   Tubs11->SetFillColor(18);
   Tubs11->SetLineColor(18);
   top->AddNodeOverlap(Tubs11, 1, new TGeoTranslation(-260, 35, -400));

   TGeoVolume *Sphere111 = geom->MakeSphere("Sphere111", Iron, 0, 10, 0, 180, 0, 360);
   Sphere111->SetFillColor(2);
   Sphere111->SetLineColor(2);
   top->AddNodeOverlap(Sphere111, 1, new TGeoTranslation(-310, 0, -165));

   TGeoVolume *Sphere112 = geom->MakeSphere("Sphere112", Iron, 0, 10, 0, 180, 0, 360);
   Sphere112->SetFillColor(2);
   Sphere112->SetLineColor(2);
   top->AddNodeOverlap(Sphere112, 1, new TGeoTranslation(-310, 0, -400));

   TGeoVolume *Sphere113 = geom->MakeSphere("Sphere113", Iron, 0, 10, 0, 180, 0, 360);
   Sphere113->SetFillColor(2);
   Sphere113->SetLineColor(2);
   top->AddNodeOverlap(Sphere113, 1, new TGeoTranslation(-310, 0, -635));

   TGeoVolume *Tubs2 = geom->MakeTubs("Tubs2", Iron, 50, 60, 230, 220, 330);
   Tubs2->SetFillColor(18);
   Tubs2->SetLineColor(18);
   top->AddNodeOverlap(Tubs2, 1, new TGeoTranslation(170, 30, -400));

   TGeoVolume *Tubs21 = geom->MakeTubs("Tubs21", Iron, 50, 60, 230, 400, 510);
   Tubs21->SetFillColor(18);
   Tubs21->SetLineColor(18);
   top->AddNodeOverlap(Tubs21, 1, new TGeoTranslation(265, -25, -400));

   TGeoVolume *Sphere211 = geom->MakeSphere("Sphere211", Iron, 0, 10, 0, 180, 0, 360);
   Sphere211->SetFillColor(2);
   Sphere211->SetLineColor(2);
   top->AddNodeOverlap(Sphere211, 1, new TGeoTranslation(310, 0, -165));

   TGeoVolume *Sphere212 = geom->MakeSphere("Sphere212", Iron, 0, 10, 0, 180, 0, 360);
   Sphere212->SetFillColor(2);
   Sphere212->SetLineColor(2);
   top->AddNodeOverlap(Sphere212, 1, new TGeoTranslation(310, 0, -400));

   TGeoVolume *Sphere213 = geom->MakeSphere("Sphere213", Iron, 0, 10, 0, 180, 0, 360);
   Sphere213->SetFillColor(2);
   Sphere213->SetLineColor(2);
   top->AddNodeOverlap(Sphere213, 1, new TGeoTranslation(310, 0, -635));

   TGeoVolume *Tubs3 = geom->MakeTubs("Tubs3", Iron, 50, 60, 230, 130, 260);
   Tubs3->SetFillColor(18);
   Tubs3->SetLineColor(18);
   top->AddNodeOverlap(Tubs3, 1, new TGeoTranslation(30, -170, -400));

   TGeoVolume *Tubs31 = geom->MakeTubs("Tubs31", Iron, 50, 60, 230, 310, 440);
   Tubs31->SetFillColor(18);
   Tubs31->SetLineColor(18);
   top->AddNodeOverlap(Tubs31, 1, new TGeoTranslation(0, -275, -400));

   TGeoVolume *Sphere311 = geom->MakeSphere("Sphere311", Iron, 0, 10, 0, 180, 0, 360);
   Sphere311->SetFillColor(2);
   Sphere311->SetLineColor(2);
   top->AddNodeOverlap(Sphere311, 1, new TGeoTranslation(-35, 320, -165));

   TGeoVolume *Sphere312 = geom->MakeSphere("Sphere312", Iron, 0, 10, 0, 180, 0, 360);
   Sphere312->SetFillColor(2);
   Sphere312->SetLineColor(2);
   top->AddNodeOverlap(Sphere312, 1, new TGeoTranslation(-35, 320, -400));

   TGeoVolume *Sphere313 = geom->MakeSphere("Sphere313", Iron, 0, 10, 0, 180, 0, 360);
   Sphere313->SetFillColor(2);
   Sphere313->SetLineColor(2);
   top->AddNodeOverlap(Sphere313, 1, new TGeoTranslation(-35, 320, -635));

   TGeoVolume *Tubs4 = geom->MakeTubs("Tubs4", Iron, 50, 60, 230, 310, 440);
   Tubs4->SetFillColor(18);
   Tubs4->SetLineColor(18);
   top->AddNodeOverlap(Tubs4, 1, new TGeoTranslation(-30, 170, -400));

   TGeoVolume *Tubs41 = geom->MakeTubs("Tubs41", Iron, 50, 60, 230, 490, 620);
   Tubs41->SetFillColor(18);
   Tubs41->SetLineColor(18);
   top->AddNodeOverlap(Tubs41, 1, new TGeoTranslation(0, 275, -400));

   TGeoVolume *Sphere411 = geom->MakeSphere("Sphere411", Iron, 0, 10, 0, 180, 0, 360);
   Sphere411->SetFillColor(2);
   Sphere411->SetLineColor(2);
   top->AddNodeOverlap(Sphere411, 1, new TGeoTranslation(30, -320, -165));

   TGeoVolume *Sphere412 = geom->MakeSphere("Sphere412", Iron, 0, 10, 0, 180, 0, 360);
   Sphere412->SetFillColor(2);
   Sphere412->SetLineColor(2);
   top->AddNodeOverlap(Sphere412, 1, new TGeoTranslation(30, -320, -400));

   TGeoVolume *Sphere413 = geom->MakeSphere("Sphere413", Iron, 0, 10, 0, 180, 0, 360);
   Sphere413->SetFillColor(2);
   Sphere413->SetLineColor(2);
   top->AddNodeOverlap(Sphere413, 1, new TGeoTranslation(30, -320, -635));

   TGeoVolume *Cone010 = geom->MakeCone("Cone010", Iron, 30, 0, 30, 0, 30);
   Cone010->SetFillColor(2);
   Cone010->SetLineColor(2);
   top->AddNodeOverlap(Cone010, 1, new TGeoTranslation(0, 0, 250));

   TGeoVolume *Torus010 = geom->MakeTorus("Torus010", Iron, 300, 50, 40);
   Torus010->SetFillColor(33);
   Torus010->SetLineColor(33);
   top->AddNodeOverlap(Torus010, 1, new TGeoTranslation(0, 0, 250));

   TGeoVolume *Torus011 = geom->MakeTorus("Torus011", Iron, 400, 10, 10);
   Torus011->SetFillColor(33);
   Torus011->SetLineColor(33);
   top->AddNodeOverlap(Torus011, 1, new TGeoTranslation(0, 0, 250));

   TGeoVolume *Torus012 = geom->MakeTorus("Torus012", Iron, 200, 10, 10);
   Torus012->SetFillColor(33);
   Torus012->SetLineColor(33);
   top->AddNodeOverlap(Torus012, 1, new TGeoTranslation(0, 0, 250));

   TGeoVolume *Sphere010 = geom->MakeSphere("Sphere010", Iron, 0, 10, 0, 180, 0, 360);
   Sphere010->SetFillColor(2);
   Sphere010->SetLineColor(2);
   top->AddNodeOverlap(Sphere010, 1, new TGeoTranslation(-290, -290, 250));

   TGeoVolume *Sphere011 = geom->MakeSphere("Sphere011", Iron, 0, 10, 0, 180, 0, 360);
   Sphere011->SetFillColor(2);
   Sphere011->SetLineColor(2);
   top->AddNodeOverlap(Sphere011, 1, new TGeoTranslation(290, 290, 250));

   TGeoVolume *Sphere012 = geom->MakeSphere("Sphere012", Iron, 0, 10, 0, 180, 0, 360);
   Sphere012->SetFillColor(2);
   Sphere012->SetLineColor(2);
   top->AddNodeOverlap(Sphere012, 1, new TGeoTranslation(0, -410, 250));

   TGeoVolume *Sphere013 = geom->MakeSphere("Sphere013", Iron, 0, 10, 0, 180, 0, 360);
   Sphere013->SetFillColor(2);
   Sphere013->SetLineColor(2);
   top->AddNodeOverlap(Sphere013, 1, new TGeoTranslation(0, 410, 250));

   TGeoVolume *Sphere014 = geom->MakeSphere("Sphere014", Iron, 0, 10, 0, 180, 0, 360);
   Sphere014->SetFillColor(2);
   Sphere014->SetLineColor(2);
   top->AddNodeOverlap(Sphere014, 1, new TGeoTranslation(290, -290, 250));

   TGeoVolume *Sphere015 = geom->MakeSphere("Sphere015", Iron, 0, 10, 0, 180, 0, 360);
   Sphere015->SetFillColor(2);
   Sphere015->SetLineColor(2);
   top->AddNodeOverlap(Sphere015, 1, new TGeoTranslation(-290, 290, 250));

   TGeoVolume *Sphere016 = geom->MakeSphere("Sphere016", Iron, 0, 10, 0, 180, 0, 360);
   Sphere016->SetFillColor(2);
   Sphere016->SetLineColor(2);
   top->AddNodeOverlap(Sphere016, 1, new TGeoTranslation(410, 0, 250));

   TGeoVolume *Sphere017 = geom->MakeSphere("Sphere017", Iron, 0, 10, 0, 180, 0, 360);
   Sphere017->SetFillColor(2);
   Sphere017->SetLineColor(2);
   top->AddNodeOverlap(Sphere017, 1, new TGeoTranslation(-410, 0, 250));

   TGeoVolume *Box010 = geom->MakeBox("Box010", Copper, 10, 10, 3);
   Box010->SetFillColor(3);
   Box010->SetLineColor(3);
   top->AddNodeOverlap(Box1, 1, new TGeoCombiTrans(-120, -280, 300, new TGeoRotation("Box010", 0, 0, 70)));

   TGeoVolume *Box011 = geom->MakeBox("Box011", Copper, 10, 10, 3);
   Box011->SetFillColor(3);
   Box011->SetLineColor(3);
   top->AddNodeOverlap(Box011, 1, new TGeoCombiTrans(120, 280, 300, new TGeoRotation("Box011", 0, 0, 70)));

   TGeoVolume *Box012 = geom->MakeBox("Box012", Copper, 10, 10, 3);
   Box012->SetFillColor(3);
   Box012->SetLineColor(3);
   top->AddNodeOverlap(Box012, 1, new TGeoCombiTrans(120, -280, 300, new TGeoRotation("Box012", 0, 0, 30)));

   TGeoVolume *Box013 = geom->MakeBox("Box013", Copper, 10, 10, 3);
   Box013->SetFillColor(3);
   Box013->SetLineColor(3);
   top->AddNodeOverlap(Box013, 1, new TGeoCombiTrans(-120, 280, 300, new TGeoRotation("Box013", 0, 0, 30)));

   TGeoVolume *Box014 = geom->MakeBox("Box010", Copper, 10, 10, 3);
   Box014->SetFillColor(3);
   Box014->SetLineColor(3);
   top->AddNodeOverlap(Box014, 1, new TGeoCombiTrans(270, -120, 300, new TGeoRotation("Box014", 0, 0, 70)));

   TGeoVolume *Box015 = geom->MakeBox("Box015", Copper, 10, 10, 3);
   Box015->SetFillColor(3);
   Box015->SetLineColor(3);
   top->AddNodeOverlap(Box015, 1, new TGeoCombiTrans(-270, 120, 300, new TGeoRotation("Box015", 0, 0, 70)));

   TGeoVolume *Box016 = geom->MakeBox("Box016", Copper, 10, 10, 3);
   Box016->SetFillColor(3);
   Box016->SetLineColor(3);
   top->AddNodeOverlap(Box016, 1, new TGeoCombiTrans(270, 100, 300, new TGeoRotation("Box016", 0, 0, 30)));

   TGeoVolume *Box017 = geom->MakeBox("Box017", Copper, 10, 10, 3);
   Box017->SetFillColor(3);
   Box017->SetLineColor(3);
   top->AddNodeOverlap(Box017, 1, new TGeoCombiTrans(-270, -120, 300, new TGeoRotation("Box017", 0, 0, 30)));

   for (int i = 1; i <= 8; i++) {
      TGeoVolume *Torus0101 = geom->MakeTorus("Torus0101", Iron, 300, 70, 40, 45 * i - 4, 8);
      Torus0101->SetFillColor(18);
      Torus0101->SetLineColor(18);
      top->AddNodeOverlap(Torus0101, 1, new TGeoTranslation(0, 0, 250));

      TGeoVolume *Tubs0101 = geom->MakeTubs("Line", Iron, 0, 400, 5, 45 * i - 1, 45 * i + 1);
      Tubs0101->SetFillColor(18);
      Tubs0101->SetLineColor(18);
      top->AddNodeOverlap(Tubs0101, 1, new TGeoTranslation(0, 0, 250));
   }

   Cone31->SetFillColor(38);
   top->SetVisibility(false);
   geom->CloseGeometry();

   top->Draw("ogl");
}
