ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
g4viscp.py
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file g4viscp.py
1 """
2 # ==================================================================
3 # Python module
4 #
5 # Visualization Control Panel
6 #
7 # Q, 2005
8 # ==================================================================
9 """
10 from G4interface import *
11 
12 # ------------------------------------------------------------------
13 # Scene
14 # ------------------------------------------------------------------
15 class G4Scene :
16  "Scene"
17  def __init__(self, aname, vol= "world", acopyno=0,
18  amode=0, bmode=1):
19  self.name= aname
20  self.volume= vol
21  self.copyno= acopyno
22  self.mode_eventaction= amode # 0: accumulate / 1: refresh
23  self.mode_runaction= bmode # 0: accumulate / 1: refresh
24  self.mode= ("accumulate", "refresh")
25 
26  def create_scene(self):
27  ApplyUICommand("/vis/scene/create " + self.name)
28  ApplyUICommand("/vis/scene/add/volume %s %d" %
29  (self.volume, self.copyno))
30  ApplyUICommand("/vis/scene/add/trajectories")
31  self.update_scene()
32 
33  def update_scene(self):
34  ApplyUICommand("/vis/scene/select " + self.name)
35  ApplyUICommand("/vis/sceneHandler/attach")
36  ApplyUICommand("/vis/scene/endOfEventAction %s" %
37  (self.mode[self.mode_eventaction]) )
38  ApplyUICommand("/vis/scene/endOfRunAction %s" %
39  (self.mode[self.mode_runaction]) )
40 
41 # ------------------------------------------------------------------
42 # Visualization Control Panel
43 # ------------------------------------------------------------------
44 class G4VisCP :
45  "G4 Visualization Control Panel"
46 
47  def __init__(self, gsys="OGLIX"):
48  self.gsystem= gsys
49  self.scenelist= [G4Scene("default")]
50  self.viewpoint= [270., 90.]
51 
52  rc= ApplyUICommand("/vis/open " + gsys)
53  if (rc != 0):
54  return
55 
56  self.scenelist[0].create_scene()
57  ApplyUICommand("/vis/viewer/set/viewpointThetaPhi %f %f"
58  % (self.viewpoint[0], self.viewpoint[1]) )
59  ApplyUICommand("/tracking/storeTrajectory 1")
60 
61  def add_scene(self, ascene):
62  self.scenelist.append(ascene)
63 
64  def select_scene(self, iscene):
65  self.scenelist[iscene].update_scene()
66  ApplyUICommand("/vis/viewer/set/viewpointThetaPhi %f %f"
67  % (self.viewpoint[0], self.viewpoint[1]) )
68