import ROOT, glob, math, sys,numpy,PyQt4 from ROOT import std, AddressOf, gROOT from PyQt4 import QtCore, QtGui from mpl_toolkits.mplot3d import Axes3D from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar import matplotlib.pyplot as plt import Ui_Dialog #ROOT.gROOT.ProcessLine(".x ~/.rootlogon.C") #infileTPC = sys.argv[1] #print("infileTPC: "+infileTPC) from EventDisplay import EventDisplay #------------------------------------------------------------------------ # Preparing gui for next/prev event #------------------------------------------------------------------------ class EventDisplayGui(QtGui.QWidget,Ui_Dialog.Ui_Dialog): def __init__(self,parent=None): super(EventDisplayGui,self).__init__(parent) self.setupUi(self) self.connectActions() self.evnumber=0 #initializing a EventDisplay, takes care of opening the tree, and making the graphs self.EventDisplay=EventDisplay(fileReco,fileMc) # Two figure instances to plot on, matplotlib self.figureClusterMcId = plt.figure(1) self.figureClustersFromTrack = plt.figure(2) # this is the Qt Canvas Widget that displays the `figure` # it takes the `figure` instance as a parameter to __init__ self.canvasClusterMcId = FigureCanvas(self.figureClusterMcId) self.canvasClustersFromTrack = FigureCanvas(self.figureClustersFromTrack) # this is the Navigation widget # it takes the Canvas widget and a parent self.toolbarClusterMcId = NavigationToolbar(self.canvasClusterMcId, self) self.toolbarClustersFromTrack = NavigationToolbar(self.canvasClustersFromTrack, self) self.labelClusterMcId = QtGui.QLabel() self.labelClusterMcId.setObjectName("labelClusterMcId") self.labelClusterMcId.setText("clusters colored by mcid") self.labelClustersFromTrack = QtGui.QLabel() self.labelClustersFromTrack.setObjectName("labelClustersFromTracks") self.labelClustersFromTrack.setText("clusters colored by trackid") sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed) self.labelClusterMcId.setSizePolicy(sizePolicy) self.labelClustersFromTrack.setSizePolicy(sizePolicy) # Just some button connected to `plot` method self.figureLayout=QtGui.QHBoxLayout() self.figureLayout.setObjectName("figureLayout") self.figureClusterMcIdLayout=QtGui.QVBoxLayout() self.figureClusterMcIdLayout.setObjectName("figureClusterMcIdLayout") self.figureClusterMcIdLayout.addWidget(self.toolbarClusterMcId) self.figureClusterMcIdLayout.addWidget(self.canvasClusterMcId) self.figureClusterMcIdLayout.addWidget(self.labelClusterMcId) self.figureLayout.addLayout(self.figureClusterMcIdLayout) self.figureClustersFromTrackLayout=QtGui.QVBoxLayout() self.figureClustersFromTrackLayout.setObjectName("figureClusterMcIdLayout") self.figureClustersFromTrackLayout.addWidget(self.toolbarClustersFromTrack) self.figureClustersFromTrackLayout.addWidget(self.canvasClustersFromTrack) self.figureClustersFromTrackLayout.addWidget(self.labelClustersFromTrack) self.figureLayout.addLayout(self.figureClustersFromTrackLayout) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) self.canvasClustersFromTrack.setSizePolicy(sizePolicy) self.canvasClusterMcId.setSizePolicy(sizePolicy) self.verticalLayout.addLayout(self.figureLayout) #The axis which are used to draw on self.axClusterMcId = Axes3D(self.figureClusterMcId) self.axClustersFromTrack = Axes3D(self.figureClustersFromTrack) def connectActions(self): self.nextEvent.clicked.connect(self.nextTPCEvent) # next button self.prevEvent.clicked.connect(self.previousTPCEvent) #previous button self.gotoEvent.clicked.connect(self.gotoTpcEvent) self.spinBoxEvent.valueChanged.connect(self.gotoTpcEvent) def main(self): self.show() self.gotoTpcEvent(self) def nextTPCEvent(self,bla): print("nextTPC") self.evnumber+=1 self.spinBoxEvent.setValue(self.evnumber) def previousTPCEvent(self,bla): print("prevTPC") if self.evnumber > 0: self.evnumber-=1 self.spinBoxEvent.setValue(self.evnumber) def gotoTpcEvent(self, bla): print("gotoEvent") if self.spinBoxEvent.value() >=0: self.evnumber = self.spinBoxEvent.value() self.EventDisplay.gotoEvent(self.evnumber,self) if __name__=='__main__': fileReco="" fileMc="" for iarg in range(len(sys.argv)) : arg = sys.argv[iarg] if arg == "-file": fileReco=(sys.argv[iarg+1]) if fileReco=="" : print "Proper usage:" print "python EventDisplayGui -file -mcFile " exit() app=QtGui.QApplication(sys.argv) eventdisplayGUI=EventDisplayGui() eventdisplayGUI.main() app.exec_()