ROOT  6.07/01
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
shapes.py
Go to the documentation of this file.
1 #
2 # To see the output of this macro, click begin_html <a href="gif/shapes.gif" >here</a> end_html
3 #
4 
5 import ROOT
6 
7 c1 = ROOT.TCanvas( 'c1', 'Geometry Shapes', 200, 10, 700, 500 )
8 
9 # delete previous geometry objects in case this script is reexecuted
10 if hasattr(ROOT, 'gGeometry') and ROOT.gGeometry:
11  ROOT.gGeometry.GetListOfNodes().Delete()
12  ROOT.gGeometry.GetListOfShapes().Delete()
13 
14 # Define some volumes
15 brik = ROOT.TBRIK( 'BRIK', 'BRIK', 'void', 200, 150, 150 )
16 trd1 = ROOT.TTRD1( 'TRD1', 'TRD1', 'void', 200, 50, 100, 100 )
17 trd2 = ROOT.TTRD2( 'TRD2', 'TRD2', 'void', 200, 50, 200, 50, 100 )
18 trap = ROOT.TTRAP( 'TRAP', 'TRAP', 'void', 190, 0, 0, 60, 40, 90, 15, 120, 80, 180, 15 )
19 para = ROOT.TPARA( 'PARA', 'PARA', 'void', 100, 200, 200, 15, 30, 30 )
20 gtra = ROOT.TGTRA( 'GTRA', 'GTRA', 'void', 390, 0, 0, 20, 60, 40, 90, 15, 120, 80, 180, 15 )
21 tube = ROOT.TTUBE( 'TUBE', 'TUBE', 'void', 150, 200, 400 )
22 tubs = ROOT.TTUBS( 'TUBS', 'TUBS', 'void', 80, 100, 100, 90, 235 )
23 cone = ROOT.TCONE( 'CONE', 'CONE', 'void', 100, 50, 70, 120, 150 )
24 cons = ROOT.TCONS( 'CONS', 'CONS', 'void', 50, 100, 100, 200, 300, 90, 270 )
25 sphe = ROOT.TSPHE( 'SPHE', 'SPHE', 'void', 25, 340, 45, 135, 0, 270 )
26 sphe1 = ROOT.TSPHE( 'SPHE1', 'SPHE1', 'void', 0, 140, 0, 180, 0, 360 )
27 sphe2 = ROOT.TSPHE( 'SPHE2', 'SPHE2', 'void', 0, 200, 10, 120, 45, 145 )
28 
29 pcon = ROOT.TPCON( 'PCON', 'PCON', 'void', 180, 270, 4 )
30 pcon.DefineSection( 0, -200, 50, 100 )
31 pcon.DefineSection( 1, -50, 50, 80 )
32 pcon.DefineSection( 2, 50, 50, 80 )
33 pcon.DefineSection( 3, 200, 50, 100 )
34 
35 pgon = ROOT.TPGON( 'PGON', 'PGON', 'void', 180, 270, 8, 4 )
36 pgon.DefineSection( 0, -200, 50, 100 )
37 pgon.DefineSection( 1, -50, 50, 80 )
38 pgon.DefineSection( 2, 50, 50, 80 )
39 pgon.DefineSection( 3, 200, 50, 100 )
40 
41 # Set shapes attributes
42 brik.SetLineColor( 1 )
43 trd1.SetLineColor( 2 )
44 trd2.SetLineColor( 3 )
45 trap.SetLineColor( 4 )
46 para.SetLineColor( 5 )
47 gtra.SetLineColor( 7 )
48 tube.SetLineColor( 6 )
49 tubs.SetLineColor( 7 )
50 cone.SetLineColor( 2 )
51 cons.SetLineColor( 3 )
52 pcon.SetLineColor( 6 )
53 pgon.SetLineColor( 2 )
54 sphe.SetLineColor( ROOT.kRed )
55 sphe1.SetLineColor( ROOT.kBlack )
56 sphe2.SetLineColor( ROOT.kBlue )
57 
58 # Build the geometry hierarchy
59 node1 = ROOT.TNode( 'NODE1', 'NODE1', 'BRIK' )
60 node1.cd()
61 
62 node2 = ROOT.TNode( 'NODE2', 'NODE2', 'TRD1', 0, 0, -1000 )
63 node3 = ROOT.TNode( 'NODE3', 'NODE3', 'TRD2', 0, 0, 1000 )
64 node4 = ROOT.TNode( 'NODE4', 'NODE4', 'TRAP', 0, -1000, 0 )
65 node5 = ROOT.TNode( 'NODE5', 'NODE5', 'PARA', 0, 1000, 0 )
66 node6 = ROOT.TNode( 'NODE6', 'NODE6', 'TUBE', -1000, 0, 0 )
67 node7 = ROOT.TNode( 'NODE7', 'NODE7', 'TUBS', 1000, 0, 0 )
68 node8 = ROOT.TNode( 'NODE8', 'NODE8', 'CONE', -300, -300, 0 )
69 node9 = ROOT.TNode( 'NODE9', 'NODE9', 'CONS', 300, 300, 0 )
70 node10 = ROOT.TNode( 'NODE10', 'NODE10', 'PCON', 0, -1000, -1000 )
71 node11 = ROOT.TNode( 'NODE11', 'NODE11', 'PGON', 0, 1000, 1000 )
72 node12 = ROOT.TNode( 'NODE12', 'NODE12', 'GTRA', 0, -400, 700 )
73 node13 = ROOT.TNode( 'NODE13', 'NODE13', 'SPHE', 10, -400, 500 )
74 node14 = ROOT.TNode( 'NODE14', 'NODE14', 'SPHE1', 10, 250, 300 )
75 node15 = ROOT.TNode( 'NODE15', 'NODE15', 'SPHE2', 10, -100, -200 )
76 
77 # for memory management
78 for l, o in locals().items():
79  if isinstance( o, ROOT.TShape ) or isinstance( o, ROOT.TNode ):
80  ROOT.SetOwnership( o, False )
81 
82 # Draw this geometry in the current canvas
83 node1.cd()
84 node1.Draw( 'gl' )
85 c1.Update()
86 #
87 # Draw the geometry using the x3d viewver.
88 # Note that this viewver may also be invoked from the "View" menu in
89 # the canvas tool bar
90 #
91 # once in x3d viewer, type m to see the menu.
92 # For example typing r will show a solid model of this geometry.