Cat
Acquisition.py
Go to the documentation of this file.
1 import wx
2 from proc import *
3 from plotter import *
4 from libCatKernel import *
5 from matplotlib.path import Path
6 import matplotlib.patches as patches
7 
9  def __init__(self, cat, obj, panel, path):
10  proc.__init__(self,cat,obj,panel,path)
11  self.loadxrc()
12  self.panel.Bind(wx.EVT_TOGGLEBUTTON,self.onSoftTrig,id=xrc.XRCID("softtrigger"))
13  self.panel.Bind(wx.EVT_TOGGLEBUTTON,self.onTree,id=xrc.XRCID("tree"))
14  self.panel.Bind(wx.EVT_TOGGLEBUTTON,self.onTrend,id=xrc.XRCID("trend"))
15  self.panel.Bind(wx.EVT_TOGGLEBUTTON,self.onSample,id=xrc.XRCID("sample"))
16  self.panel.Bind(wx.EVT_SPINCTRL,self.onDeadtime,id=xrc.XRCID("acquisition_deadtime"))
17  self.panel.Bind(wx.EVT_BUTTON,self.onApply,id=xrc.XRCID("apply"))
18  self.panel.Bind(wx.EVT_SPINCTRL, self.onDepth, id=xrc.XRCID("depth"))
19  self.panel.Bind(wx.EVT_SPINCTRL, self.onNSample, id=xrc.XRCID("nsample"))
20  self.panel.Bind(wx.EVT_SPINCTRL, self.onNBins, id=xrc.XRCID("nbins"))
21  self.panel.Bind(wx.EVT_TEXT, self.onMin, id=xrc.XRCID("min"))
22  self.panel.Bind(wx.EVT_TEXT, self.onMax, id=xrc.XRCID("max"))
23 
24  self.update()
25 
26  def onApply(self,event):
27  channels=0
28  if (self.getControl("chl0").GetValue()) : channels=channels|0b1
29  else : channels=channels&0b11111110
30  if (self.getControl("chl1").GetValue()) : channels=channels|0b10
31  else : channels=channels&0b11111101
32  if (self.getControl("chl2").GetValue()) : channels=channels|0b100
33  else : channels=channels&0b11111011
34  if (self.getControl("chl3").GetValue()) : channels=channels|0b1000
35  else : channels=channels&0b11110111
36  if (self.getControl("chl4").GetValue()) : channels=channels|0b10000
37  else : channels=channels&0b11101111
38  if (self.getControl("chl5").GetValue()) : channels=channels|0b100000
39  else : channels=channels&0b11011111
40  if (self.getControl("chl6").GetValue()) : channels=channels|0b1000000
41  else : channels=channels&0b10111111
42  if (self.getControl("chl7").GetValue()) : channels=channels|0b10000000
43  else : channels=channels&0b1111111
44  self.obj.setChannels(channels)
45 
46  def onSoftTrig(self,event):
47  self.obj.setTrigger(self.getControl("softtrigger").GetValue())
48  if self.getControl("softtrigger").GetValue():
49  self.getControl("softtrigger").SetValue(1)
50  self.getControl("softtrigger").SetLabel("Soft. Trig.")
51  else:
52  self.getControl("softtrigger").SetValue(0)
53  self.getControl("softtrigger").SetLabel("Ext. Trig.")
54 
55  def onTree(self,event):
56  self.obj.setStoreTree(self.getControl("tree").GetValue())
57 
58  def onTrend(self,event):
59  self.obj.setStoreTrend(self.getControl("trend").GetValue())
60 
61  def onSample(self,event):
62  self.obj.setStoreSample(self.getControl("sample").GetValue())
63 
64  def onDeadtime(self,event):
65  self.obj.setDeadTime(self.getControl("acquisition_deadtime").GetValue())
66  def onDepth(self,event):
67  self.obj.setDepth(self.getControl("depth").GetValue())
68 
69  def onNSample(self,event):
70  self.obj.setSample(self.getControl("nsample").GetValue())
71 
72  def onNBins(self,event):
73  self.obj.setNBins(self.getControl("nbins").GetValue())
74 
75  def onMin(self,event):
76  self.obj.setMinRange(float(self.getControl("min").GetValue()))
77 
78  def onMax(self,event):
79  self.obj.setMaxRange(float(self.getControl("max").GetValue()))
80 
81  def update(self):
82  if self.obj.trigger():
83  self.getControl("softtrigger").SetValue(1)
84  self.getControl("softtrigger").SetLabel("Soft. Trig.")
85  else:
86  self.getControl("softtrigger").SetValue(0)
87  self.getControl("softtrigger").SetLabel("Ext. Trig.")
88 
89  channels=self.obj.channels()
90  if (channels&1) : self.getControl("chl0").SetValue(True)
91  else : self.getControl("chl0").SetValue(False)
92  if (channels&0b10) : self.getControl("chl1").SetValue(True)
93  else : self.getControl("chl1").SetValue(False)
94  if (channels&0b100) : self.getControl("chl2").SetValue(True)
95  else : self.getControl("chl2").SetValue(False)
96  if (channels&0b1000) : self.getControl("chl3").SetValue(True)
97  else : self.getControl("chl3").SetValue(False)
98  if (channels&0b10000) : self.getControl("chl4").SetValue(True)
99  else : self.getControl("chl4").SetValue(False)
100  if (channels&0b100000) : self.getControl("chl5").SetValue(True)
101  else : self.getControl("chl5").SetValue(False)
102  if (channels&0b1000000) : self.getControl("chl6").SetValue(True)
103  else : self.getControl("chl6").SetValue(False)
104  if (channels&0b10000000) : self.getControl("chl7").SetValue(True)
105  else : self.getControl("chl7").SetValue(False)
106  self.getControl("depth").SetValue(self.obj.depth())
107  self.getControl("tree").SetValue(self.obj.storeTree())
108  self.getControl("trend").SetValue(self.obj.storeTrend())
109  self.getControl("sample").SetValue(self.obj.storeSample())
110  self.getControl("acquisition_deadtime").SetValue(self.obj.deadTime())
111  self.getControl("depth").SetValue(self.obj.depth())
112  self.getControl("nsample").SetValue(self.obj.sample())
113  self.getControl("nbins").SetValue(self.obj.nBins())
114  self.getControl("min").SetValue(str(self.obj.minRange()))
115  self.getControl("max").SetValue(str(self.obj.maxRange()))
116 
117 #----------------------------------------------------------------------
118 
119 def Edit (cat, obj, panel, path):
120  return Acquisition(cat, obj, panel, path)
121 
122 #----------------------------------------------------------------------
123 
124 def Plot(cat, obj, parent, id):
125 
126  if (not obj.storeTrend() and not obj.storeSample):
127  return None
128 
129  from mpl_toolkits.mplot3d import Axes3D
130  import matplotlib.ticker as ticker
131  from matplotlib import cm
132  import matplotlib as mpl
133  import matplotlib.pyplot as plt
134  import numpy as np
135 
136  plot=plotter(parent,id)
137  fig=plot.current()
138 
139  title = 'Acquisition - Channel(s) '
140 
141  channels=obj.channels()
142  nch=0
143  for i in range(0,8):
144  if (channels>>i&1):
145  nch+=1
146  title+=' '+str(i)
147 
148  fig.suptitle(title, fontsize=14, fontweight='bold')
149 
150  col=nch
151  row=0
152  if obj.storeSample() : row+=1
153  if obj.storeTrend() : row+=2
154 
155  index=0
156 
157  if obj.storeTrend() :
158  for c in range(0,col):
159  pl=fig.add_subplot(row,col,c+1)
160 # h=h1d(pl,obj.hist1d(index), facecolor='blue',linestyle='dashed')
161  pl.plot(obj.hist1d(index).xbins(),obj.hist1d(index).bins(),'ro',color='blue')
162  pl.xaxis.set_ticks([0,obj.depth()/2,obj.depth()-1])
163  pl.grid(True)
164  index+=1
165  pl=fig.add_subplot(row,col,c+col+1)
166 # h=h1d(pl,obj.hist1d(index), facecolor='green',linestyle='dashed')
167  pl.plot(obj.hist1d(index).xbins(),obj.hist1d(index).bins(),'ro',color='green')
168  pl.xaxis.set_ticks([0,obj.depth()/2,obj.depth()-1])
169  pl.grid(True)
170  index+=1
171  if (row==3): index+=1
172 
173  if obj.storeSample() :
174  if (row==3): index=2
175  for c in range(0,col):
176  pl=fig.add_subplot(row,col,c+(row-1)*col+1)
177  h=h1d(pl,obj.hist1d(index), facecolor='red',linestyle='dashed')
178  pl.xaxis.set_ticks([obj.hist1d(index).minX(),(obj.hist1d(index).maxX()+obj.hist1d(index).minX())/2.,obj.hist1d(index).maxX()])
179  pl.grid(True)
180  index+=1
181  if (row==3): index+=2
182 
183  return plot
StatusCode setChannels(unsigned int)
def onNBins(self, event)
Definition: Acquisition.py:72
bool storeTree()
Definition: Acquisition.h:49
int deadTime()
Definition: Acquisition.h:67
int nBins()
Definition: Acquisition.h:79
def onSoftTrig(self, event)
Definition: Acquisition.py:46
def onTrend(self, event)
Definition: Acquisition.py:58
void setMaxRange(float maxrange)
Definition: Acquisition.h:87
StatusCode setTrigger(bool trig)
Definition: Acquisition.h:36
bool trigger()
Definition: Acquisition.h:41
void setMinRange(float minrange)
Definition: Acquisition.h:81
bool storeSample()
Definition: Acquisition.h:61
bool storeTrend()
Definition: Acquisition.h:55
void setNBins(int nbins)
Definition: Acquisition.h:75
float minRange()
Definition: Acquisition.h:85
int sample()
Definition: Acquisition.h:73
def Plot(cat, obj, parent, id)
Definition: Acquisition.py:124
float maxRange()
Definition: Acquisition.h:91
def h1d(fig, histo, alpha=0.5, facecolor='green', edgecolor='yellow', linestyle='dashed')
Definition: plotter.py:51
def onMin(self, event)
Definition: Acquisition.py:75
def onMax(self, event)
Definition: Acquisition.py:78
unsigned int channels()
Definition: Acquisition.h:34
void setSample(int nsample)
Definition: Acquisition.h:69
def onDepth(self, event)
Definition: Acquisition.py:66
def onDeadtime(self, event)
Definition: Acquisition.py:64
def onSample(self, event)
Definition: Acquisition.py:61
def Edit(cat, obj, panel, path)
Definition: Acquisition.py:119
unsigned int depth()
Definition: Acquisition.h:31
void setStoreTree(bool store_tree)
Definition: Acquisition.h:45
Definition: proc.py:1
def onNSample(self, event)
Definition: Acquisition.py:69
StatusCode setDepth(unsigned int)
void setStoreSample(bool store_sample)
Definition: Acquisition.h:57
void setDeadTime(int deadtime)
Definition: Acquisition.h:63
def onApply(self, event)
Definition: Acquisition.py:26
def __init__(self, cat, obj, panel, path)
Definition: Acquisition.py:9
def onTree(self, event)
Definition: Acquisition.py:55
void setStoreTrend(bool store_hist)
Definition: Acquisition.h:51