Logo ROOT  
Reference Guide
shapesAnim.C File Reference

Detailed Description

Macro illustrating how to animate a geometry picture using a Timer

Float_t theta = 0;
Float_t phi = 30;
void shapesAnim() {
TCanvas *c1 = new TCanvas("c1","Geometry Shapes",10,10,500,500);
// Define some volumes
TBRIK *brik = new TBRIK("BRIK","BRIK","void",200,150,150);
TTRD1 *trd1 = new TTRD1("TRD1","TRD1","void",200,50,100,100);
TTRD2 *trd2 = new TTRD2("TRD2","TRD2","void",200,50,200,50,100);
TTRAP *trap = new TTRAP("TRAP","TRAP","void",190,0,0,60,40,90,15,120,80,180,15);
TPARA *para = new TPARA("PARA","PARA","void",100,200,200,15,30,30);
TGTRA *gtra = new TGTRA("GTRA","GTRA","void",390,0,0,20,60,40,90,15,120,80,180,15);
TTUBE *tube = new TTUBE("TUBE","TUBE","void",150,200,400);
TTUBS *tubs = new TTUBS("TUBS","TUBS","void",80,100,100,90,235);
TCONE *cone = new TCONE("CONE","CONE","void",100,50,70,120,150);
TCONS *cons = new TCONS("CONS","CONS","void",50,100,100,200,300,90,270);
TSPHE *sphe = new TSPHE("SPHE","SPHE","void",25,340, 45,135, 0,270);
TSPHE *sphe1 = new TSPHE("SPHE1","SPHE1","void",0,140, 0,180, 0,360);
TSPHE *sphe2 = new TSPHE("SPHE2","SPHE2","void",0,200, 10,120, 45,145);
TPCON *pcon = new TPCON("PCON","PCON","void",180,270,4);
pcon->DefineSection(0,-200,50,100);
pcon->DefineSection(1,-50,50,80);
pcon->DefineSection(2,50,50,80);
pcon->DefineSection(3,200,50,100);
TPGON *pgon = new TPGON("PGON","PGON","void",180,270,8,4);
pgon->DefineSection(0,-200,50,100);
pgon->DefineSection(1,-50,50,80);
pgon->DefineSection(2,50,50,80);
pgon->DefineSection(3,200,50,100);
// Set shapes attributes
brik->SetLineColor(1);
trd1->SetLineColor(2);
trd2->SetLineColor(3);
trap->SetLineColor(4);
para->SetLineColor(5);
gtra->SetLineColor(7);
tube->SetLineColor(6);
tubs->SetLineColor(7);
cone->SetLineColor(2);
cons->SetLineColor(3);
pcon->SetLineColor(6);
pgon->SetLineColor(2);
sphe->SetLineColor(kRed);
sphe1->SetLineColor(kBlack);
sphe2->SetLineColor(kBlue);
// Build the geometry hierarchy
TNode *node1 = new TNode("NODE1","NODE1","BRIK");
node1->cd();
TNode *node2 = new TNode("NODE2","NODE2","TRD1",0,0,-1000);
TNode *node3 = new TNode("NODE3","NODE3","TRD2",0,0,1000);
TNode *node4 = new TNode("NODE4","NODE4","TRAP",0,-1000,0);
TNode *node5 = new TNode("NODE5","NODE5","PARA",0,1000,0);
TNode *node6 = new TNode("NODE6","NODE6","TUBE",-1000,0,0);
TNode *node7 = new TNode("NODE7","NODE7","TUBS",1000,0,0);
TNode *node8 = new TNode("NODE8","NODE8","CONE",-300,-300,0);
TNode *node9 = new TNode("NODE9","NODE9","CONS",300,300,0);
TNode *node10 = new TNode("NODE10","NODE10","PCON",0,-1000,-1000);
TNode *node11 = new TNode("NODE11","NODE11","PGON",0,1000,1000);
TNode *node12 = new TNode("NODE12","NODE12","GTRA",0,-400,700);
TNode *node13 = new TNode("NODE13","NODE13","SPHE",10,-400,500);
TNode *node14 = new TNode("NODE14","NODE14","SPHE1",10, 250,300);
TNode *node15 = new TNode("NODE15","NODE15","SPHE2",10,-100,-200);
// Draw this geometry in the current canvas
node1->cd();
node1->Draw();
c1->Update();
//start a Timer
TTimer *timer = new TTimer(20);
timer->SetCommand("Animate()");
timer->TurnOn();
}
void Animate()
{
theta += 2;
phi += 2;
gPad->GetView()->RotateView(theta,phi);
gPad->Modified();
gPad->Update();
}
Author
Rene Brun

Definition in file shapesAnim.C.

TPCON
Definition: TPCON.h:33
TPGON
Definition: TPGON.h:30
TPCON::DefineSection
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
TTRD1
Definition: TTRD1.h:28
TBRIK
Definition: TBRIK.h:26
TTUBE
Definition: TTUBE.h:32
Float_t
float Float_t
Definition: RtypesCore.h:57
TGTRA
Definition: TGTRA.h:27
TTUBS
Definition: TTUBS.h:29
TCONE
Definition: TCONE.h:28
kBlack
@ kBlack
Definition: Rtypes.h:65
TTimer
Definition: TTimer.h:51
TTimer::SetCommand
void SetCommand(const char *command)
Set the interpreter command to be executed at time out.
Definition: TTimer.cxx:174
TPARA
Definition: TPARA.h:30
TCONS
Definition: TCONS.h:27
kRed
@ kRed
Definition: Rtypes.h:66
TSPHE
Definition: TSPHE.h:28
TNode
Definition: TNode.h:33
Double_t
double Double_t
Definition: RtypesCore.h:59
TCanvas
Definition: TCanvas.h:23
TGeant4Unit::pi
static constexpr double pi
Definition: TGeant4SystemOfUnits.h:73
kBlue
@ kBlue
Definition: Rtypes.h:66
TNode::Draw
virtual void Draw(Option_t *option="")
Draw Referenced node with current parameters.
Definition: TNode.cxx:324
gPad
#define gPad
Definition: TVirtualPad.h:287
TTimer::TurnOn
virtual void TurnOn()
Add the timer to the system timer list.
Definition: TTimer.cxx:241
TTRD2
Definition: TTRD2.h:29
TTRAP
Definition: TTRAP.h:33
TNode::cd
virtual void cd(const char *path=0)
Change Current Reference node to this.
Definition: TNode.cxx:251
c1
return c1
Definition: legend1.C:41