Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
shapesAnim.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_geom
3/// Macro illustrating how to animate a geometry picture using a Timer
4///
5/// \macro_code
6///
7/// \author Rene Brun
8
9Double_t pi;
10Float_t theta = 0;
11Float_t phi = 30;
12void shapesAnim()
13{
14 TCanvas *c1 = new TCanvas("c1", "Geometry Shapes", 10, 10, 500, 500);
15
16 // Define some volumes
17 TBRIK *brik = new TBRIK("BRIK", "BRIK", "void", 200, 150, 150);
18 TTRD1 *trd1 = new TTRD1("TRD1", "TRD1", "void", 200, 50, 100, 100);
19 TTRD2 *trd2 = new TTRD2("TRD2", "TRD2", "void", 200, 50, 200, 50, 100);
20 TTRAP *trap = new TTRAP("TRAP", "TRAP", "void", 190, 0, 0, 60, 40, 90, 15, 120, 80, 180, 15);
21 TPARA *para = new TPARA("PARA", "PARA", "void", 100, 200, 200, 15, 30, 30);
22 TGTRA *gtra = new TGTRA("GTRA", "GTRA", "void", 390, 0, 0, 20, 60, 40, 90, 15, 120, 80, 180, 15);
23 TTUBE *tube = new TTUBE("TUBE", "TUBE", "void", 150, 200, 400);
24 TTUBS *tubs = new TTUBS("TUBS", "TUBS", "void", 80, 100, 100, 90, 235);
25 TCONE *cone = new TCONE("CONE", "CONE", "void", 100, 50, 70, 120, 150);
26 TCONS *cons = new TCONS("CONS", "CONS", "void", 50, 100, 100, 200, 300, 90, 270);
27 TSPHE *sphe = new TSPHE("SPHE", "SPHE", "void", 25, 340, 45, 135, 0, 270);
28 TSPHE *sphe1 = new TSPHE("SPHE1", "SPHE1", "void", 0, 140, 0, 180, 0, 360);
29 TSPHE *sphe2 = new TSPHE("SPHE2", "SPHE2", "void", 0, 200, 10, 120, 45, 145);
30
31 TPCON *pcon = new TPCON("PCON", "PCON", "void", 180, 270, 4);
32 pcon->DefineSection(0, -200, 50, 100);
33 pcon->DefineSection(1, -50, 50, 80);
34 pcon->DefineSection(2, 50, 50, 80);
35 pcon->DefineSection(3, 200, 50, 100);
36
37 TPGON *pgon = new TPGON("PGON", "PGON", "void", 180, 270, 8, 4);
38 pgon->DefineSection(0, -200, 50, 100);
39 pgon->DefineSection(1, -50, 50, 80);
40 pgon->DefineSection(2, 50, 50, 80);
41 pgon->DefineSection(3, 200, 50, 100);
42
43 // Set shapes attributes
44 brik->SetLineColor(1);
45 trd1->SetLineColor(2);
46 trd2->SetLineColor(3);
47 trap->SetLineColor(4);
48 para->SetLineColor(5);
49 gtra->SetLineColor(7);
50 tube->SetLineColor(6);
51 tubs->SetLineColor(7);
52 cone->SetLineColor(2);
53 cons->SetLineColor(3);
54 pcon->SetLineColor(6);
55 pgon->SetLineColor(2);
56 sphe->SetLineColor(kRed);
57 sphe1->SetLineColor(kBlack);
58 sphe2->SetLineColor(kBlue);
59
60 // Build the geometry hierarchy
61 TNode *node1 = new TNode("NODE1", "NODE1", "BRIK");
62 node1->cd();
63
64 TNode *node2 = new TNode("NODE2", "NODE2", "TRD1", 0, 0, -1000);
65 TNode *node3 = new TNode("NODE3", "NODE3", "TRD2", 0, 0, 1000);
66 TNode *node4 = new TNode("NODE4", "NODE4", "TRAP", 0, -1000, 0);
67 TNode *node5 = new TNode("NODE5", "NODE5", "PARA", 0, 1000, 0);
68 TNode *node6 = new TNode("NODE6", "NODE6", "TUBE", -1000, 0, 0);
69 TNode *node7 = new TNode("NODE7", "NODE7", "TUBS", 1000, 0, 0);
70 TNode *node8 = new TNode("NODE8", "NODE8", "CONE", -300, -300, 0);
71 TNode *node9 = new TNode("NODE9", "NODE9", "CONS", 300, 300, 0);
72 TNode *node10 = new TNode("NODE10", "NODE10", "PCON", 0, -1000, -1000);
73 TNode *node11 = new TNode("NODE11", "NODE11", "PGON", 0, 1000, 1000);
74 TNode *node12 = new TNode("NODE12", "NODE12", "GTRA", 0, -400, 700);
75 TNode *node13 = new TNode("NODE13", "NODE13", "SPHE", 10, -400, 500);
76 TNode *node14 = new TNode("NODE14", "NODE14", "SPHE1", 10, 250, 300);
77 TNode *node15 = new TNode("NODE15", "NODE15", "SPHE2", 10, -100, -200);
78
79 // Draw this geometry in the current canvas
80 node1->cd();
81 node1->Draw();
82 c1->Update();
83
84 // start a Timer
85 TTimer *timer = new TTimer(20);
86 timer->SetCommand("Animate()");
87 timer->TurnOn();
88}
89void Animate()
90{
91 theta += 2;
92 phi += 2;
93 gPad->GetView()->RotateView(theta, phi);
94 gPad->Modified();
95 gPad->Update();
96}
float Float_t
Definition RtypesCore.h:57
double Double_t
Definition RtypesCore.h:59
@ kRed
Definition Rtypes.h:66
@ kBlack
Definition Rtypes.h:65
@ kBlue
Definition Rtypes.h:66
#define gPad
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Definition TAttLine.h:42
A box with faces perpendicular to the axes.
Definition TBRIK.h:26
A conical tube.
Definition TCONE.h:28
A segment of a conical tube.
Definition TCONS.h:27
The Canvas class.
Definition TCanvas.h:23
A general twisted trapezoid.
Definition TGTRA.h:27
TNode description.
Definition TNode.h:33
void Draw(Option_t *option="") override
Draw Referenced node with current parameters.
Definition TNode.cxx:322
virtual void cd(const char *path=nullptr)
Change Current Reference node to this.
Definition TNode.cxx:249
A parallelepiped.
Definition TPARA.h:30
A polycone.
Definition TPCON.h:33
virtual void DefineSection(Int_t secNum, Float_t z, Float_t rmin, Float_t rmax)
Defines section secNum of the polycone.
Definition TPCON.cxx:174
A polygon.
Definition TPGON.h:30
A Sphere.
Definition TSPHE.h:28
A general trapezoid.
Definition TTRAP.h:33
A trapezoid with the x dimension varying along z.
Definition TTRD1.h:28
A trapezoid with both x and y dimensions varying along z.
Definition TTRD2.h:29
A tube.
Definition TTUBE.h:32
A segment of a tube.
Definition TTUBS.h:29
Handles synchronous and a-synchronous timer events.
Definition TTimer.h:51
virtual void TurnOn()
Add the timer to the system timer list.
Definition TTimer.cxx:243
void SetCommand(const char *command)
Set the interpreter command to be executed at time out.
Definition TTimer.cxx:176
return c1
Definition legend1.C:41