FairShip
Loading...
Searching...
No Matches
eventDisplay.IO Class Reference

Public Member Functions

None __init__ (self)
 
None nextEvent (self, event=None)
 
None toggleMCTracks (self)
 
None toggle (self, x)
 

Public Attributes

 master
 
 fram1
 
 contents
 
 n
 
 lbut
 
 geoscene
 

Detailed Description

Definition at line 559 of file eventDisplay.py.

Constructor & Destructor Documentation

◆ __init__()

None eventDisplay.IO.__init__ (   self)

Definition at line 560 of file eventDisplay.py.

560 def __init__(self) -> None:
561 self.master = tkinter.Tk()
562 self.master.title("SHiP Event Display GUI")
563 self.master.geometry("320x580+165+820")
564 self.fram1 = tkinter.Frame(self.master)
565 b = tkinter.Button(self.fram1, text="Next Event", command=self.nextEvent)
566 b.pack(fill=tkinter.BOTH, expand=1)
567 label = tkinter.Label(self.fram1, text="Event number:")
568 label["relief"] = tkinter.RAISED
569 entry = tkinter.Entry(self.fram1)
570 entry["foreground"] = "blue"
571 label.pack(side=tkinter.LEFT)
572 entry.pack(side=tkinter.RIGHT)
573 self.contents = tkinter.IntVar()
574 # set it to some value
575 self.n = 0
576 self.contents.set(self.n)
577 # tell the entry widget to watch this variable
578 entry["textvariable"] = self.contents
579 # and here we get a callback when the user hits return.
580 # we will have the program print out the value of the
581 # application variable when the user hits return
582 entry.bind("<Key-Return>", self.nextEvent)
583 self.lbut = {}
584 x = "withMC"
585 a = tkinter.IntVar()
586 if globals()["withMCTracks"]:
587 a.set(1)
588 else:
589 a.set(0)
590 self.lbut[x] = tkinter.Checkbutton(self.master, text="with MC Tracks", compound=tkinter.LEFT, variable=a)
591 self.lbut[x].var = a
592 self.lbut[x]["command"] = self.toggleMCTracks
593 self.lbut[x].pack(side=tkinter.TOP)
594 self.geoscene = ROOT.gEve.GetScenes().FindChild("Geometry scene")
595 for v in top.GetNodes():
596 x = v.GetName()
597 a = tkinter.IntVar()
598 assembly = "Assembly" in v.GetVolume().__str__()
599 if v.IsVisible() or (assembly and v.IsVisDaughters()):
600 a.set(1)
601 else:
602 a.set(0)
603 self.lbut[x] = tkinter.Checkbutton(self.master, text=x.replace("_1", ""), compound=tkinter.LEFT, variable=a)
604 self.lbut[x].var = a
605 self.lbut[x]["command"] = lambda x=x: self.toggle(x)
606 self.lbut[x].pack(side=tkinter.BOTTOM)
607 self.fram1.pack()
608 # add ship actions to eve display
609 gEve = ROOT.gEve
610 slot = ROOT.TEveWindow.CreateWindowInTab(gEve.GetBrowser().GetTabLeft())
611 slot.SetShowTitleBar(ROOT.kFALSE)
612 packs = slot.MakePack()
613 packs.SetShowTitleBar(ROOT.kFALSE)
614 packs.SetElementName("SHiP actions")
615 packs.SetHorizontal()
616 slot = packs.NewSlot()
617 frame = slot.MakeFrame()
618 frame.SetElementName("commands")
619 frame.SetShowTitleBar(ROOT.kFALSE)
620 cf = frame.GetGUICompositeFrame()
621 hf = ROOT.TGVerticalFrame(cf)
622 hf.SetCleanup(ROOT.kLocalCleanup)
623 hf.SetWidth(150)
624 cf.AddFrame(hf)
625 guiFrame = ROOT.TGVerticalFrame(hf)
626 hf.AddFrame(guiFrame, ROOT.TGLayoutHints(ROOT.kLHintsExpandX))
627 guiFrame.SetCleanup(ROOT.kDeepCleanup)
628 b = ROOT.TGTextButton(guiFrame, "Add particle follower")
629 b.SetWidth(150)
630 b.SetToolTipText("start new window with top projection and energy loss")
631 b.SetCommand('TPython::ExecScript("' + os.environ["FAIRSHIP"] + '/macro/evd_addParticleFollower.py")')
632 guiFrame.AddFrame(b, ROOT.TGLayoutHints(ROOT.kLHintsExpandX))
633 bn = ROOT.TGTextButton(guiFrame, "fill histogram")
634 bn.SetWidth(150)
635 bn.SetToolTipText("Fill histogram with energy along flight path")
636 bn.SetCommand('TPython::ExecScript("' + os.environ["FAIRSHIP"] + '/macro/evd_fillEnergy.py")')
637 guiFrame.AddFrame(bn, ROOT.TGLayoutHints(ROOT.kLHintsExpandX))
638 bt = ROOT.TGTextButton(guiFrame, "switch transparent mode on/off")
639 bt.SetWidth(150)
640 bt.SetToolTipText("switch transparent mode on/off for better visibility of tracks")
641 bt.SetCommand('TPython::ExecScript("' + os.environ["FAIRSHIP"] + '/macro/evd_transparentMode.py")')
642 guiFrame.AddFrame(bt, ROOT.TGLayoutHints(ROOT.kLHintsExpandX))
643 bnx = ROOT.TGTextButton(guiFrame, "next event")
644 bnx.SetWidth(150)
645 bnx.SetToolTipText("click for next event")
646 bnx.SetCommand('TPython::ExecScript("' + os.environ["FAIRSHIP"] + '/macro/evd_nextEvent.py")')
647 guiFrame.AddFrame(bnx, ROOT.TGLayoutHints(ROOT.kLHintsExpandX))
648 #
649 cf.MapSubwindows()
650 cf.Layout()
651 cf.MapWindow()
652

Member Function Documentation

◆ nextEvent()

None eventDisplay.IO.nextEvent (   self,
  event = None 
)

Definition at line 653 of file eventDisplay.py.

653 def nextEvent(self, event=None) -> None:
654 i = int(self.contents.get())
655 if i == self.n:
656 self.n += 1
657 else:
658 self.n = i
659 self.contents.set(self.n)
660 SHiPDisplay.NextEvent(self.n)
661

◆ toggle()

None eventDisplay.IO.toggle (   self,
  x 
)

Definition at line 676 of file eventDisplay.py.

676 def toggle(self, x) -> None:
677 v = top.GetNode(x)
678 assembly = "Assembly" in v.GetVolume().__str__()
679 if v.IsVisible() > 0 or (assembly and v.IsVisDaughters() > 0):
680 print("switch off ", x)
681 v.SetVisibility(0)
682 v.SetVisDaughters(0)
683 self.lbut[x].var.set(0)
684 else:
685 print("switch on ", x)
686 if assembly:
687 v.SetVisDaughters(1)
688 else:
689 v.SetVisibility(1)
690 self.lbut[x].var.set(1)
691 gEve.ElementChanged(self.geoscene, True, True)
692 for v in top.GetNodes():
693 x = v.GetName()
694 if x in self.lbut:
695 assembly = "Assembly" in v.GetVolume().__str__()
696 if v.IsVisible() > 0 or (assembly and v.IsVisDaughters() > 0):
697 self.lbut[x].var.set(1)
698 else:
699 self.lbut[x].var.set(0)
700
701
702#

◆ toggleMCTracks()

None eventDisplay.IO.toggleMCTracks (   self)

Definition at line 662 of file eventDisplay.py.

662 def toggleMCTracks(self) -> None:
663 tl = fRun.GetMainTask().GetListOfTasks()
664 geoTask = tl.FindObject("GeoTracks")
665 if globals()["withMCTracks"]:
666 globals()["withMCTracks"] = False
667 self.lbut["withMC"].var.set(1)
668 if geoTask:
669 geoTask.SetActive(0)
670 else:
671 globals()["withMCTracks"] = True
672 self.lbut["withMC"].var.set(0)
673 if geoTask:
674 geoTask.SetActive(1)
675

Member Data Documentation

◆ contents

eventDisplay.IO.contents

Definition at line 573 of file eventDisplay.py.

◆ fram1

eventDisplay.IO.fram1

Definition at line 564 of file eventDisplay.py.

◆ geoscene

eventDisplay.IO.geoscene

Definition at line 594 of file eventDisplay.py.

◆ lbut

eventDisplay.IO.lbut

Definition at line 583 of file eventDisplay.py.

◆ master

eventDisplay.IO.master

Definition at line 561 of file eventDisplay.py.

◆ n

eventDisplay.IO.n

Definition at line 575 of file eventDisplay.py.


The documentation for this class was generated from the following file: