409 def __init__(self):
410 self.master = tkinter.Tk()
411 self.master.title('SHiP Event Display GUI')
412 self.master.geometry(u'320x580+165+820')
413 self.fram1 = tkinter.Frame(self.master)
414 b = tkinter.Button(self.fram1, text="Next Event",command=self.nextEvent)
415 b.pack(fill=tkinter.BOTH, expand=1)
416 label = tkinter.Label(self.fram1, text='Event number:')
417 label["relief"] = tkinter.RAISED
418 entry = tkinter.Entry(self.fram1)
419 entry["foreground"] = "blue"
420 label.pack(side=tkinter.LEFT)
421 entry.pack(side=tkinter.RIGHT)
422 self.contents = tkinter.IntVar()
423
424 self.n = 0
425 self.contents.
set(self.n)
426
427 entry["textvariable"] = self.contents
428
429
430
431 entry.bind('<Key-Return>', self.nextEvent)
432 self.lbut = {}
433 x = 'withMC'
434 a = tkinter.IntVar()
435 if globals()['withMCTracks']: a.set(1)
436 else: a.set(0)
437 self.lbut[x] = tkinter.Checkbutton(self.master,text="with MC Tracks",compound=tkinter.LEFT,variable=a)
438 self.lbut[x].var = a
439 self.lbut[x]['command'] = self.toogleMCTracks
440 self.lbut[x].pack(side=tkinter.TOP)
441 self.geoscene = ROOT.gEve.GetScenes().FindChild("Geometry scene")
442 for v in top.GetNodes():
443 x=v.GetName()
444 cmd = 'toogle("'+x+'")'
445 a = tkinter.IntVar()
446 assemb = "Assembly" in v.GetVolume().__str__()
447 if v.IsVisible() or (assemb and v.IsVisDaughters()): a.set(1)
448 else : a.set(0)
449 self.lbut[x] = tkinter.Checkbutton(self.master,text=x.replace('_1',''),compound=tkinter.LEFT,variable=a)
450 self.lbut[x].var = a
451 self.lbut[x]['command'] = lambda j=x: self.toogle(j)
452 self.lbut[x].pack(side=tkinter.BOTTOM)
453 self.fram1.pack()
454
455 gEve = ROOT.gEve
456 slot = ROOT.TEveWindow.CreateWindowInTab(gEve.GetBrowser().GetTabLeft())
457 slot.SetShowTitleBar(ROOT.kFALSE)
458 packs = slot.MakePack();
459 packs.SetShowTitleBar(ROOT.kFALSE);
460 packs.SetElementName("SHiP actions")
461 packs.SetHorizontal()
462 slot = packs.NewSlot()
463 frame = slot.MakeFrame()
464 frame.SetElementName("commands")
465 frame.SetShowTitleBar(ROOT.kFALSE)
466 cf = frame.GetGUICompositeFrame()
467 hf = ROOT.TGVerticalFrame(cf)
468 hf.SetCleanup(ROOT.kLocalCleanup)
469 hf.SetWidth(150)
470 cf.AddFrame(hf)
471 guiFrame = ROOT.TGVerticalFrame(hf)
472 hf.AddFrame(guiFrame, ROOT.TGLayoutHints(ROOT.kLHintsExpandX))
473 guiFrame.SetCleanup(ROOT.kDeepCleanup)
474 b = ROOT.TGTextButton(guiFrame, "Add particle follower")
475 b.SetWidth(150)
476 b.SetToolTipText('start new window with top projection and energy loss')
477 b.SetCommand('TPython::ExecScript("'+os.environ['FAIRSHIP']+'/macro/evd_addParticleFollower.py")')
478 guiFrame.AddFrame(b, ROOT.TGLayoutHints(ROOT.kLHintsExpandX))
479 bn = ROOT.TGTextButton(guiFrame, "fill histogram")
480 bn.SetWidth(150)
481 bn.SetToolTipText('Fill histogram with energy along flight path')
482 bn.SetCommand('TPython::ExecScript("'+os.environ['FAIRSHIP']+'/macro/evd_fillEnergy.py")')
483 guiFrame.AddFrame(bn, ROOT.TGLayoutHints(ROOT.kLHintsExpandX))
484 bt = ROOT.TGTextButton(guiFrame, "switch transparent mode on/off")
485 bt.SetWidth(150)
486 bt.SetToolTipText('switch transparent mode on/off for better visibility of tracks')
487 bt.SetCommand('TPython::ExecScript("'+os.environ['FAIRSHIP']+'/macro/evd_transparentMode.py")')
488 guiFrame.AddFrame(bt, ROOT.TGLayoutHints(ROOT.kLHintsExpandX))
489 bnx = ROOT.TGTextButton(guiFrame, "next event")
490 bnx.SetWidth(150)
491 bnx.SetToolTipText('click for next event')
492 bnx.SetCommand('TPython::ExecScript("'+os.environ['FAIRSHIP']+'/macro/evd_nextEvent.py")')
493 guiFrame.AddFrame(bnx, ROOT.TGLayoutHints(ROOT.kLHintsExpandX))
494 bzt = ROOT.TGTextButton(guiFrame, "synch zoom top->side")
495 bzt.SetWidth(150)
496 bzt.SetToolTipText('synchronize zoom top with side')
497 bzt.SetCommand('TPython::ExecScript("'+os.environ['FAIRSHIP']+'/macro/evd_synchZoomt.py")')
498 guiFrame.AddFrame(bzt, ROOT.TGLayoutHints(ROOT.kLHintsExpandX))
499 bzs = ROOT.TGTextButton(guiFrame, "synch zoom side->top")
500 bzs.SetWidth(150)
501 bzs.SetToolTipText('synchronize zoom side with top')
502 bzs.SetCommand('TPython::ExecScript("'+os.environ['FAIRSHIP']+'/macro/evd_synchZooms.py")')
503 guiFrame.AddFrame(bzs, ROOT.TGLayoutHints(ROOT.kLHintsExpandX))
504
505 cf.MapSubwindows()
506 cf.Layout()
507 cf.MapWindow()
set(INCLUDE_DIRECTORIES ${SYSTEM_INCLUDE_DIRECTORIES} ${VMC_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/shipdata ${CMAKE_SOURCE_DIR}/shipLHC ${CMAKE_SOURCE_DIR}/analysis/cuts ${CMAKE_SOURCE_DIR}/analysis/tools ${FMT_INCLUDE_DIR}) include_directories($