rootgeom.C

Go to the documentation of this file.
00001 void rootgeom()
00002 {
00003 //Definition of a simple geometry (the 4 ROOT characters)
00004 //Author: Andrei Gheata
00005    
00006    // gStyle->SetCanvasPreferGL(true);
00007    gSystem->Load("libGeom");
00008    TGeoManager *geom = new TGeoManager("simple1", "Simple geometry");
00009    
00010    //--- define some materials
00011    TGeoMaterial *matVacuum = new TGeoMaterial("Vacuum", 0,0,0);
00012    TGeoMaterial *matAl = new TGeoMaterial("Al", 26.98,13,2.7);
00013 //   //--- define some media
00014    TGeoMedium *Vacuum = new TGeoMedium("Vacuum",1, matVacuum);
00015    TGeoMedium *Al = new TGeoMedium("Root Material",2, matAl);
00016 
00017    //--- define the transformations
00018    TGeoTranslation *tr1 = new TGeoTranslation(20., 0, 0.);
00019    TGeoTranslation *tr2 = new TGeoTranslation(10., 0., 0.);
00020    TGeoTranslation *tr3 = new TGeoTranslation(10., 20., 0.);
00021    TGeoTranslation *tr4 = new TGeoTranslation(5., 10., 0.);
00022    TGeoTranslation *tr5 = new TGeoTranslation(20., 0., 0.);
00023    TGeoTranslation *tr6 = new TGeoTranslation(-5., 0., 0.);
00024    TGeoTranslation *tr7 = new TGeoTranslation(7.5, 7.5, 0.);
00025    TGeoRotation   *rot1 = new TGeoRotation("rot1", 90., 0., 90., 270., 0., 0.);
00026    TGeoCombiTrans *combi1 = new TGeoCombiTrans(7.5, -7.5, 0., rot1);
00027    TGeoTranslation *tr8 = new TGeoTranslation(7.5, -5., 0.);
00028    TGeoTranslation *tr9 = new TGeoTranslation(7.5, 20., 0.);
00029    TGeoTranslation *tr10 = new TGeoTranslation(85., 0., 0.);
00030    TGeoTranslation *tr11 = new TGeoTranslation(35., 0., 0.);
00031    TGeoTranslation *tr12 = new TGeoTranslation(-15., 0., 0.);
00032    TGeoTranslation *tr13 = new TGeoTranslation(-65., 0., 0.);
00033    
00034    TGeoTranslation  *tr14 = new TGeoTranslation(0,0,-100);
00035    TGeoCombiTrans *combi2 = new TGeoCombiTrans(0,0,100, 
00036                                    new TGeoRotation("rot2",90,180,90,90,180,0));
00037    TGeoCombiTrans *combi3 = new TGeoCombiTrans(100,0,0, 
00038                                    new TGeoRotation("rot3",90,270,0,0,90,180));
00039    TGeoCombiTrans *combi4 = new TGeoCombiTrans(-100,0,0, 
00040                                    new TGeoRotation("rot4",90,90,0,0,90,0));
00041    TGeoCombiTrans *combi5 = new TGeoCombiTrans(0,100,0, 
00042                                    new TGeoRotation("rot5",0,0,90,180,90,270));
00043    TGeoCombiTrans *combi6 = new TGeoCombiTrans(0,-100,0, 
00044                                    new TGeoRotation("rot6",180,0,90,180,90,90));
00045    
00046    //--- make the top container volume
00047    Double_t worldx = 110.;
00048    Double_t worldy = 50.;
00049    Double_t worldz = 5.;
00050    TGeoVolume *top = geom->MakeBox("TOP", Vacuum, 270., 270., 120.);
00051    geom->SetTopVolume(top);
00052    TGeoVolume *replica = geom->MakeBox("REPLICA", Vacuum,120,120,120);
00053    replica->SetVisibility(kFALSE);
00054    TGeoVolume *rootbox = geom->MakeBox("ROOT", Vacuum, 110., 50., 5.);
00055    rootbox->SetVisibility(kFALSE);
00056    
00057    //--- make letter 'R'
00058    TGeoVolume *R = geom->MakeBox("R", Vacuum, 25., 25., 5.);
00059    R->SetVisibility(kFALSE);
00060    TGeoVolume *bar1 = geom->MakeBox("bar1", Al, 5., 25, 5.);
00061    bar1->SetLineColor(kRed);
00062    R->AddNode(bar1, 1, tr1);
00063    TGeoVolume *bar2 = geom->MakeBox("bar2", Al, 5., 5., 5.);
00064    bar2->SetLineColor(kRed);
00065    R->AddNode(bar2, 1, tr2);
00066    R->AddNode(bar2, 2, tr3);
00067    TGeoVolume *tub1 = geom->MakeTubs("tub1", Al, 5., 15., 5., 90., 270.);
00068    tub1->SetLineColor(kRed);
00069    R->AddNode(tub1, 1, tr4);
00070    TGeoVolume *bar3 = geom->MakeArb8("bar3", Al, 5.);
00071    bar3->SetLineColor(kRed);
00072    TGeoArb8 *arb = (TGeoArb8*)bar3->GetShape();
00073    arb->SetVertex(0, 15., -5.);
00074    arb->SetVertex(1, 0., -25.);
00075    arb->SetVertex(2, -10., -25.);
00076    arb->SetVertex(3, 5., -5.);
00077    arb->SetVertex(4, 15., -5.);
00078    arb->SetVertex(5, 0., -25.);
00079    arb->SetVertex(6, -10., -25.);
00080    arb->SetVertex(7, 5., -5.);
00081    R->AddNode(bar3, 1, gGeoIdentity);
00082    
00083    //--- make letter 'O'
00084    TGeoVolume *O = geom->MakeBox("O", Vacuum, 25., 25., 5.);
00085    O->SetVisibility(kFALSE);
00086    TGeoVolume *bar4 = geom->MakeBox("bar4", Al, 5., 7.5, 5.);
00087    bar4->SetLineColor(kYellow);
00088    O->AddNode(bar4, 1, tr5);
00089    O->AddNode(bar4, 2, tr6);
00090    TGeoVolume *tub2 = geom->MakeTubs("tub1", Al, 7.5, 17.5, 5., 0., 180.);
00091    tub2->SetLineColor(kYellow);
00092    O->AddNode(tub2, 1, tr7);
00093    O->AddNode(tub2, 2, combi1);
00094    
00095    //--- make letter 'T'
00096    TGeoVolume *T = geom->MakeBox("T", Vacuum, 25., 25., 5.);
00097    T->SetVisibility(kFALSE);
00098    TGeoVolume *bar5 = geom->MakeBox("bar5", Al, 5., 20., 5.);
00099    bar5->SetLineColor(kBlue);
00100    T->AddNode(bar5, 1, tr8);
00101    TGeoVolume *bar6 = geom->MakeBox("bar6", Al, 17.5, 5., 5.);
00102    bar6->SetLineColor(kBlue);
00103    T->AddNode(bar6, 1, tr9);
00104       
00105    
00106 
00107    rootbox->AddNode(R, 1, tr10);
00108    rootbox->AddNode(O, 1, tr11);
00109    rootbox->AddNode(O, 2, tr12);
00110    rootbox->AddNode(T, 1, tr13);
00111    
00112    replica->AddNode(rootbox, 1, tr14);
00113    replica->AddNode(rootbox, 2, combi2);
00114    replica->AddNode(rootbox, 3, combi3);
00115    replica->AddNode(rootbox, 4, combi4);
00116    replica->AddNode(rootbox, 5, combi5);
00117    replica->AddNode(rootbox, 6, combi6);
00118    
00119    top->AddNode(replica, 1, new TGeoTranslation(-150, -150, 0));
00120    top->AddNode(replica, 2, new TGeoTranslation(150, -150, 0));
00121    top->AddNode(replica, 3, new TGeoTranslation(150, 150, 0));
00122    top->AddNode(replica, 4, new TGeoTranslation(-150, 150, 0));
00123 
00124    //--- close the geometry
00125    geom->CloseGeometry();
00126    
00127    //--- draw the ROOT box.
00128    // by default the picture will appear in the standard ROOT TPad.
00129    //if you have activated the following line in system.rootrc, 
00130    //it will appear in the GL viewer
00131    //#Viewer3D.DefaultDrawOption:   ogl
00132    
00133    geom->SetVisLevel(4);
00134    top->Draw("ogle");
00135 }   
00136    

Generated on Tue Jul 5 15:44:17 2011 for ROOT_528-00b_version by  doxygen 1.5.1