shapesAnim.C

Go to the documentation of this file.
00001 //macro illustrating how to animate a geometry picture using a Timer
00002 //Author: Rene Brun
00003    
00004 Double_t pi;
00005 Float_t theta = 0;
00006 Float_t phi   = 30;
00007 void shapesAnim() {
00008    TCanvas *c1 = new TCanvas("c1","Geometry Shapes",10,10,500,500);
00009 
00010    //  Define some volumes
00011    TBRIK *brik  = new TBRIK("BRIK","BRIK","void",200,150,150);
00012    TTRD1 *trd1  = new TTRD1("TRD1","TRD1","void",200,50,100,100);
00013    TTRD2 *trd2  = new TTRD2("TRD2","TRD2","void",200,50,200,50,100);
00014    TTRAP *trap  = new TTRAP("TRAP","TRAP","void",190,0,0,60,40,90,15,120,80,180,15);
00015    TPARA *para  = new TPARA("PARA","PARA","void",100,200,200,15,30,30);
00016    TGTRA *gtra  = new TGTRA("GTRA","GTRA","void",390,0,0,20,60,40,90,15,120,80,180,15);
00017    TTUBE *tube  = new TTUBE("TUBE","TUBE","void",150,200,400);
00018    TTUBS *tubs  = new TTUBS("TUBS","TUBS","void",80,100,100,90,235);
00019    TCONE *cone  = new TCONE("CONE","CONE","void",100,50,70,120,150);
00020    TCONS *cons  = new TCONS("CONS","CONS","void",50,100,100,200,300,90,270);
00021    TSPHE *sphe  = new TSPHE("SPHE","SPHE","void",25,340, 45,135, 0,270);
00022    TSPHE *sphe1 = new TSPHE("SPHE1","SPHE1","void",0,140, 0,180, 0,360);
00023    TSPHE *sphe2 = new TSPHE("SPHE2","SPHE2","void",0,200, 10,120, 45,145);
00024 
00025    TPCON *pcon = new TPCON("PCON","PCON","void",180,270,4);
00026    pcon->DefineSection(0,-200,50,100);
00027    pcon->DefineSection(1,-50,50,80);
00028    pcon->DefineSection(2,50,50,80);
00029    pcon->DefineSection(3,200,50,100);
00030 
00031    TPGON *pgon = new TPGON("PGON","PGON","void",180,270,8,4);
00032    pgon->DefineSection(0,-200,50,100);
00033    pgon->DefineSection(1,-50,50,80);
00034    pgon->DefineSection(2,50,50,80);
00035    pgon->DefineSection(3,200,50,100);
00036 
00037    //  Set shapes attributes
00038    brik->SetLineColor(1);
00039    trd1->SetLineColor(2);
00040    trd2->SetLineColor(3);
00041    trap->SetLineColor(4);
00042    para->SetLineColor(5);
00043    gtra->SetLineColor(7);
00044    tube->SetLineColor(6);
00045    tubs->SetLineColor(7);
00046    cone->SetLineColor(2);
00047    cons->SetLineColor(3);
00048    pcon->SetLineColor(6);
00049    pgon->SetLineColor(2);
00050    sphe->SetLineColor(kRed);
00051    sphe1->SetLineColor(kBlack);
00052    sphe2->SetLineColor(kBlue);
00053 
00054 
00055    //  Build the geometry hierarchy
00056    TNode *node1 = new TNode("NODE1","NODE1","BRIK");
00057    node1->cd();
00058 
00059    TNode *node2  = new TNode("NODE2","NODE2","TRD1",0,0,-1000);
00060    TNode *node3  = new TNode("NODE3","NODE3","TRD2",0,0,1000);
00061    TNode *node4  = new TNode("NODE4","NODE4","TRAP",0,-1000,0);
00062    TNode *node5  = new TNode("NODE5","NODE5","PARA",0,1000,0);
00063    TNode *node6  = new TNode("NODE6","NODE6","TUBE",-1000,0,0);
00064    TNode *node7  = new TNode("NODE7","NODE7","TUBS",1000,0,0);
00065    TNode *node8  = new TNode("NODE8","NODE8","CONE",-300,-300,0);
00066    TNode *node9  = new TNode("NODE9","NODE9","CONS",300,300,0);
00067    TNode *node10 = new TNode("NODE10","NODE10","PCON",0,-1000,-1000);
00068    TNode *node11 = new TNode("NODE11","NODE11","PGON",0,1000,1000);
00069    TNode *node12 = new TNode("NODE12","NODE12","GTRA",0,-400,700);
00070    TNode *node13 = new TNode("NODE13","NODE13","SPHE",10,-400,500);
00071    TNode *node14 = new TNode("NODE14","NODE14","SPHE1",10, 250,300);
00072    TNode *node15 = new TNode("NODE15","NODE15","SPHE2",10,-100,-200);
00073 
00074 
00075    // Draw this geometry in the current canvas
00076    node1->cd();
00077    node1->Draw();
00078    c1->Update();
00079    
00080    //start a Timer
00081    TTimer *timer = new TTimer(20);
00082    timer->SetCommand("Animate()");
00083    timer->TurnOn();   
00084 }
00085 void Animate()
00086 {
00087    theta += 2;
00088    phi   += 2;
00089    gPad->GetView()->RotateView(theta,phi);
00090    gPad->Modified();
00091    gPad->Update();
00092 }

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