Cat
ProtoFEB_v1.py
Go to the documentation of this file.
1 import wx.gizmos
2 
3 from element import *
4 from libCatKernel import *
5 
7  def __init__(self, cat, obj, panel, path):
8  element.__init__(self,cat,obj,panel,path)
9  self.loadxrc()
10 
11  self.softTrig=self.getControl("softtrig")
12  self.modeCh=self.getControl("modeCh")
13 
14  self.ph0_0=self.getControl("phaser0_0")
15  self.ph0_1=self.getControl("phaser0_1")
16  self.ph0_2=self.getControl("phaser0_2")
17  self.ph0_3=self.getControl("phaser0_3")
18  self.ph1_0=self.getControl("phaser1_0")
19  self.ph1_1=self.getControl("phaser1_1")
20  self.ph1_2=self.getControl("phaser1_2")
21  self.ph1_3=self.getControl("phaser1_3")
22  self.ph2_0=self.getControl("phaser2_0")
23  self.ph2_1=self.getControl("phaser2_1")
24  self.ph2_2=self.getControl("phaser2_2")
25  self.ph2_3=self.getControl("phaser2_3")
26 
27  self.panel.Bind(wx.EVT_BUTTON,self.onAcquisition,id=xrc.XRCID("acquisition"))
28  self.panel.Bind(wx.EVT_BUTTON,self.isReady,id=xrc.XRCID("isReady"))
29  self.panel.Bind(wx.EVT_BUTTON,self.onTrigger,id=xrc.XRCID("trigger"))
30  self.panel.Bind(wx.EVT_BUTTON,self.onEnableStorage,id=xrc.XRCID("enableStorage"))
31  self.panel.Bind(wx.EVT_TOGGLEBUTTON,self.onSoftTrig,id=xrc.XRCID("softtrig"))
32  self.panel.Bind(wx.EVT_TOGGLEBUTTON,self.onModeAX,id=xrc.XRCID("modeAX"))
33 
34  self.panel.Bind(wx.EVT_CHOICE,self.onModeCh,id=xrc.XRCID("modeCh"))
35 
36  self.panel.Bind(wx.EVT_CHOICE,self.onPipeline,id=xrc.XRCID("pipeline"))
37 
38  self.panel.Bind(wx.EVT_BUTTON,self.onGlobalReset,id=xrc.XRCID("global_reset"))
39  self.panel.Bind(wx.EVT_BUTTON,self.onUsbPhasersReset,id=xrc.XRCID("usb_phasers_reset"))
40  self.panel.Bind(wx.EVT_BUTTON,self.onResetFE,id=xrc.XRCID("reset_fe"))
41  self.panel.Bind(wx.EVT_BUTTON,self.onResetSPI,id=xrc.XRCID("reset_spi"))
42  self.panel.Bind(wx.EVT_BUTTON,self.onFifoReset,id=xrc.XRCID("fifo_reset"))
43 
44  self.panel.Bind(wx.EVT_BUTTON,self.onFifoRAZ,id=xrc.XRCID("fifo_raz"))
45  self.panel.Bind(wx.EVT_BUTTON,self.onPatternRAZ,id=xrc.XRCID("pattern_raz"))
46  self.panel.Bind(wx.EVT_BUTTON,self.onTriggerRAZ,id=xrc.XRCID("trigger_raz"))
47  self.panel.Bind(wx.EVT_BUTTON,self.onToAXRAZ,id=xrc.XRCID("toax_raz"))
48  self.panel.Bind(wx.EVT_BUTTON,self.onFromAXRAZ,id=xrc.XRCID("from_raz"))
49 
50  self.panel.Bind(wx.EVT_BUTTON,self.onFifoWrite,id=xrc.XRCID("fifo_write"))
51  self.panel.Bind(wx.EVT_BUTTON,self.onPatternWrite,id=xrc.XRCID("pattern_write"))
52  self.panel.Bind(wx.EVT_BUTTON,self.onTriggerWrite,id=xrc.XRCID("trigger_write"))
53  self.panel.Bind(wx.EVT_BUTTON,self.onToAXWrite,id=xrc.XRCID("toax_write"))
54  self.panel.Bind(wx.EVT_BUTTON,self.onFromAXWrite,id=xrc.XRCID("fromax_write"))
55  self.panel.Bind(wx.EVT_BUTTON,self.onReadFifo,id=xrc.XRCID("fifo_read"))
56  self.panel.Bind(wx.EVT_BUTTON,self.onReadPattern,id=xrc.XRCID("pattern_read"))
57  self.panel.Bind(wx.EVT_BUTTON,self.onReadTrigger,id=xrc.XRCID("trigger_read"))
58  self.panel.Bind(wx.EVT_BUTTON,self.onReadToAX,id=xrc.XRCID("toax_read"))
59  self.panel.Bind(wx.EVT_BUTTON,self.onReadFromAX,id=xrc.XRCID("fromax_read"))
60 
61  self.panel.Bind(wx.EVT_BUTTON,self.onFromAXPtrRaz,id=xrc.XRCID("fromax_ptr_raz"))
62  self.panel.Bind(wx.EVT_BUTTON,self.onToAXPtrRaz,id=xrc.XRCID("toax_ptr_raz"))
63  self.panel.Bind(wx.EVT_BUTTON,self.onStartSequenceAX,id=xrc.XRCID("startAXSequence"))
64 
65  self.panel.Bind(wx.EVT_BUTTON,self.onLatencyReset,id=xrc.XRCID("latency_reset"))
66  self.panel.Bind(wx.EVT_BUTTON,self.onAcquisitionReset,id=xrc.XRCID("acquisition_reset"))
67 
68  self.panel.Bind(wx.EVT_BUTTON,self.onPhaser0,id=xrc.XRCID("apply_ph0"))
69  self.panel.Bind(wx.EVT_BUTTON,self.onPhaser1,id=xrc.XRCID("apply_ph1"))
70  self.panel.Bind(wx.EVT_BUTTON,self.onPhaser2,id=xrc.XRCID("apply_ph2"))
71 
72 
73  self.panel.Bind(wx.EVT_BUTTON,self.onapplyCh,id=xrc.XRCID("applyCh"))
74  self.panel.Bind(wx.EVT_BUTTON,self.onenableAll,id=xrc.XRCID("enableAll"))
75  self.panel.Bind(wx.EVT_BUTTON,self.onunableAll,id=xrc.XRCID("unableAll"))
76 
77  self.panel.Bind(wx.EVT_BUTTON,self.onapplyfifodepth,id=xrc.XRCID("applyfifodepth"))
78 
79  self.panel.Bind(wx.EVT_BUTTON,self.onapplyclockdiv,id=xrc.XRCID("applyclockdiv"))
80 
81  self.panel.Bind(wx.EVT_BUTTON,self.onapplynumber,id=xrc.XRCID("applynumber"))
82  self.panel.Bind(wx.EVT_BUTTON,self.onapplydelay,id=xrc.XRCID("applydelay"))
83 # self.panel.Bind(wx.EVT_BUTTON,self.onapplyseqpulsedelay,
84 # id=xrc.XRCID("applyseqpulsedelay"))
85  self.panel.Bind(wx.EVT_BUTTON,self.onapplyfreq,id=xrc.XRCID("applyfreq"))
86  self.panel.Bind(wx.EVT_BUTTON,self.onapplytrig,id=xrc.XRCID("applytrig"))
87 
88  self.panel.Bind(wx.EVT_BUTTON,self.onapplyaxlatency,id=xrc.XRCID("apply_ax_latency"))
89  self.panel.Bind(wx.EVT_BUTTON,self.onapplyaxlength,id=xrc.XRCID("apply_ax_length"))
90 
91  def update(self):
92 
93  if self.obj.a3pe().softwareTrigger():
94  self.getControl("softtrig").SetValue(1)
95  self.getControl("softtrig").SetLabel("Soft. Trig.")
96  else:
97  self.getControl("softtrig").SetValue(0)
98  self.getControl("softtrig").SetLabel("Ext. Trig.")
99 
100  # if self.obj.a3pe().internalAXSequence():
101  # self.getControl("modeAX").SetValue(1)
102  # self.getControl("modeAX").SetLabel("Internal")
103  # else:
104  # self.getControl("modeAX").SetValue(0)
105  # self.getControl("modeAX").SetLabel("AX loop")
106 
107  self.getControl("isReady").SetBackgroundColour('BLUE')
108 
109  if self.obj.a3pe().writeStorageFifoUsb() :
110  self.getControl("modeCh").SetSelection(1)
111  else:
112  self.getControl("modeCh").SetSelection(0)
113 
114  pipeline=self.obj.a3pe().pipeline()
115  if pipeline==0: self.getControl("pipeline").SetSelection(0)
116  elif pipeline==1: self.getControl("pipeline").SetSelection(1)
117  else: self.getControl("pipeline").SetSelection(2)
118 
119  self.getControl("ch0").SetValue(self.obj.a3pe().enableADC(0))
120  self.getControl("ch1").SetValue(self.obj.a3pe().enableADC(1))
121  self.getControl("ch2").SetValue(self.obj.a3pe().enableADC(2))
122  self.getControl("ch3").SetValue(self.obj.a3pe().enableADC(3))
123  self.getControl("ch4").SetValue(self.obj.a3pe().enableADC(4))
124  self.getControl("ch5").SetValue(self.obj.a3pe().enableADC(5))
125  self.getControl("ch6").SetValue(self.obj.a3pe().enableADC(6))
126  self.getControl("ch7").SetValue(self.obj.a3pe().enableADC(7))
127  self.getControl("clockdiv").SetValue(self.obj.a3pe().clockDivision())
128  self.getControl("fifodepth").SetValue(self.obj.a3pe().fifoDepth())
129  self.getControl("fifolatency").SetValue(self.obj.a3pe().fifoLatency())
130  self.getControl("trignumber").SetValue(self.obj.a3pe().nTrigger())
131 # self.getControl("ax_length").SetValue(self.obj.a3pe().lengthAX())
132 # self.getControl("ax_latency").SetValue(self.obj.a3pe().latencyAX())
133  self.getControl("trigfreq").SetValue(self.obj.a3pe().triggerRate())
134  self.getControl("trigdelay").SetValue(self.obj.a3pe().triggerDelay())
135 # self.getControl("seqpulsedelay").SetValue(self.obj.a3pe().seqPulseDelay())
136  self.ph0_0.SetValue(self.obj.phaser0().phase(0))
137  self.ph0_1.SetValue(self.obj.phaser0().phase(1))
138  self.ph0_2.SetValue(self.obj.phaser0().phase(2))
139  self.ph0_3.SetValue(self.obj.phaser0().phase(3))
140  self.ph1_0.SetValue(self.obj.phaser1().phase(0))
141  self.ph1_1.SetValue(self.obj.phaser1().phase(1))
142  self.ph1_2.SetValue(self.obj.phaser1().phase(2))
143  self.ph1_3.SetValue(self.obj.phaser1().phase(3))
144  self.ph2_0.SetValue(self.obj.phaser2().phase(0))
145  self.ph2_1.SetValue(self.obj.phaser2().phase(1))
146  self.ph2_2.SetValue(self.obj.phaser2().phase(2))
147  self.ph2_3.SetValue(self.obj.phaser2().phase(3))
148 
149  def onAcquisition(self, event):
150 # self.obj.a3pe().acquisition()
151  self.obj.a3pe().enableStorage()
152  self.obj.a3pe().trigger()
153  self.obj.a3pe().dumpStorage()
154 
155  def isReady(self, event):
156  val=self.obj.a3pe().dataReady
157  if val: self.getControl("isReady").SetBackgroundColour('GREEN')
158  else : self.getControl("isReady").SetBackgroundColour('RED')
159 
160 
161  def onTrigger(self, event):
162  self.obj.a3pe().trigger()
163 
164  def onEnableStorage(self, event):
165  self.obj.a3pe().enableStorage()
166 
167  def onReadFifo(self, event):
168  self.obj.a3pe().dumpStorage()
169 
170  def onReadPattern(self, event):
171  self.obj.a3pe().dumpPattern()
172 
173  def onReadTrigger(self, event):
174  self.obj.a3pe().dumpTrigger()
175 
176  def onReadToAX(self, event):
177  self.obj.a3pe().dumpToAX()
178 
179  def onReadFromAX(self, event):
180  self.obj.a3pe().dumpFromAX()
181 
182  def onSoftTrig(self, event):
183  self.obj.a3pe().setSoftwareTrigger(self.softTrig.GetValue())
184  if self.softTrig.GetValue():
185  self.getControl("softtrig").SetLabel("Soft. Trig.")
186  else:
187  self.getControl("softtrig").SetLabel("Ext. Trig.")
188 
189  def onModeAX(self, event):
190  if self.getControl("modeAX").GetValue():
191  self.getControl("modeAX").SetLabel("Internal")
192  else:
193  self.getControl("modeAX").SetLabel("AX loop")
194  self.obj.a3pe().setInternalAXSequence(self.getControl("modeAX").GetValue())
195 
196  def onPipeline(self, event):
197  pipeline=self.getControl("pipeline").GetSelection()
198  self.obj.a3pe().setPipeline(pipeline)
199 
200  def onGlobalReset(self, event):
201  self.obj.reset()
202 
203  def onUsbPhasersReset(self, event):
204  self.obj.a3pe().resetUsbPhasers()
205 
206  def onFifoReset(self, event):
207  self.obj.a3pe().resetStorageFifo()
208 
209  def onResetFE(self, event):
210  self.obj.a3pe().resetFE()
211 
212  def onResetSPI(self, event):
213  self.obj.a3pe().resetSPI()
214 
215  def onFifoRAZ(self, event):
216  self.obj.a3pe().setWriteStorageFifoUsb(True)
217  self.obj.a3pe().storageRam().raz()
218  self.obj.a3pe().setWriteStorageFifoUsb(False)
219 
220  def onPatternRAZ(self, event):
221  self.obj.a3pe().patternRam().raz()
222 
223  def onTriggerRAZ(self, event):
224  self.obj.a3pe().triggerRam().raz()
225 
226  def onToAXRAZ(self, event):
227  self.obj.a3pe().toAXRam().raz()
228 
229  def onFromAXRAZ(self, event):
230  self.obj.a3pe().fromAXRam().raz()
231 
232  def onFifoWrite(self,event):
233  filename = self.getFile()
234  if filename!="":
235  self.obj.a3pe().loadStorage(filename)
236 
237  def onPatternWrite(self,event):
238  filename = self.getFile()
239  if filename!="":
240  self.obj.a3pe().loadPattern(filename)
241 
242  def onTriggerWrite(self,event):
243  filename = self.getFile()
244  if filename!="":
245  self.obj.a3pe().loadTrigger(filename)
246 
247  def onToAXWrite(self,event):
248  filename = self.getFile()
249  if filename!="":
250  self.obj.a3pe().loadToAX(filename)
251 
252  def onFromAXWrite(self,event):
253  filename = self.getFile()
254  if filename!="":
255  self.obj.a3pe().loadFromAX(filename)
256 
257  def onLatencyReset(self, event):
258  self.obj.a3pe().resetLatencyCounter()
259 
260  def onAcquisitionReset(self, event):
261  self.obj.a3pe().resetAcquisitionWriteCounter()
262 
263  def onToAXPtrRaz(self, event):
264  print "toAxPtrRaz"
265  self.obj.a3pe().setAddToAXRam(0)
266 
267  def onFromAXPtrRaz(self, event):
268  print "FromAxPtrRaz"
269  self.obj.a3pe().setAddFromAXRam(0)
270 
271  def onStartSequenceAX(self,event):
272  print "StartSequence"
273  self.obj.a3pe().startSequenceAX()
274 
275  def onPhaser0(self, event):
276  phaser=self.obj.phaser0()
277  phaser.setPhase(0,self.ph0_0.GetValue())
278  phaser.setPhase(1,self.ph0_1.GetValue())
279  phaser.setPhase(2,self.ph0_2.GetValue())
280  phaser.setPhase(3,self.ph0_3.GetValue())
281 
282  def onPhaser1(self, event):
283  phaser=self.obj.phaser1()
284  phaser.setPhase(0,self.ph1_0.GetValue())
285  phaser.setPhase(1,self.ph1_1.GetValue())
286  phaser.setPhase(2,self.ph1_2.GetValue())
287  phaser.setPhase(3,self.ph1_3.GetValue())
288 
289  def onPhaser2(self, event):
290  phaser=self.obj.phaser2()
291  phaser.setPhase(0,self.ph2_0.GetValue())
292  phaser.setPhase(1,self.ph2_1.GetValue())
293  phaser.setPhase(2,self.ph2_2.GetValue())
294  phaser.setPhase(3,self.ph2_3.GetValue())
295 
296 
297  def onapplyCh(self, event):
298  self.obj.a3pe().setEnableADC(0,self.getControl("ch0").GetValue())
299  self.obj.a3pe().setEnableADC(1,self.getControl("ch1").GetValue())
300  self.obj.a3pe().setEnableADC(2,self.getControl("ch2").GetValue())
301  self.obj.a3pe().setEnableADC(3,self.getControl("ch3").GetValue())
302  self.obj.a3pe().setEnableADC(4,self.getControl("ch4").GetValue())
303  self.obj.a3pe().setEnableADC(5,self.getControl("ch5").GetValue())
304  self.obj.a3pe().setEnableADC(6,self.getControl("ch6").GetValue())
305  self.obj.a3pe().setEnableADC(7,self.getControl("ch7").GetValue())
306 
307  def onModeCh(self,event):
308  mode=self.getControl("modeCh").GetSelection()
309  if (mode==0) : self.obj.a3pe().setWriteStorageFifoUsb(False)
310  if (mode==1) : self.obj.a3pe().setWriteStorageFifoUsb(True)
311 
312  def onenableAll(self, event):
313  self.getControl("ch0").SetValue(True)
314  self.getControl("ch1").SetValue(True)
315  self.getControl("ch2").SetValue(True)
316  self.getControl("ch3").SetValue(True)
317  self.getControl("ch4").SetValue(True)
318  self.getControl("ch5").SetValue(True)
319  self.getControl("ch6").SetValue(True)
320  self.getControl("ch7").SetValue(True)
321 
322  def onunableAll(self, event):
323  self.getControl("ch0").SetValue(False)
324  self.getControl("ch1").SetValue(False)
325  self.getControl("ch2").SetValue(False)
326  self.getControl("ch3").SetValue(False)
327  self.getControl("ch4").SetValue(False)
328  self.getControl("ch5").SetValue(False)
329  self.getControl("ch6").SetValue(False)
330  self.getControl("ch7").SetValue(False)
331 
332  def onapplyfifodepth(self, event):
333  self.obj.a3pe().setFifoDepth(self.getControl("fifodepth").GetValue())
334  self.obj.a3pe().setFifoLatency(self.getControl("fifolatency").GetValue())
335 
336  def onapplyclockdiv(self, event):
337  self.obj.a3pe().setClockDivision(self.getControl("clockdiv").GetValue())
338 
339  def onapplynumber(self, event):
340  self.obj.a3pe().setNTrigger(self.getControl("trignumber").GetValue())
341 
342  def onapplydelay(self, event):
343  self.obj.a3pe().setTriggerDelay(self.getControl("trigdelay").GetValue())
344 
345 # def onapplyseqpulsedelay(self, event):
346 # self.obj.a3pe().setSeqPulseDelay(self.getControl("seqpulsedelay").GetValue())
347 
348  def onapplyfreq(self, event):
349  self.obj.a3pe().setTriggerRate(self.getControl("trigfreq").GetValue())
350 
351  def onapplytrig(self, event):
352  self.obj.a3pe().setNTrigger(self.getControl("trignumber").GetValue())
353  self.obj.a3pe().setTriggerDelay(self.getControl("trigdelay").GetValue())
354  self.obj.a3pe().setTriggerRate(self.getControl("trigfreq").GetValue())
355 
356  def onapplyaxlength(self, event):
357  self.obj.a3pe().setLengthAX(self.getControl("ax_length").GetValue())
358 
359  def onapplyaxlatency(self, event):
360  self.obj.a3pe().setLatencyAX(self.getControl("ax_latency").GetValue())
361 
362 
363  def getFile(self):
364  path=[]
365  dlg = wx.FileDialog(
366  self.panel, message="Choose a file",
367  defaultDir=os.getcwd(),
368  defaultFile="",
369  wildcard="data file (*.dat)|*.dat|" "text files (*.txt)|*.txt" "All files (*.*)|*.*",
370  style=wx.OPEN | wx.CHANGE_DIR
371  )
372  if dlg.ShowModal() == wx.ID_OK:
373  path = dlg.GetPaths()
374  dlg.Destroy()
375  if len(path)==1:
376  filename=str(path[0])
377  return filename
378  else:
379  return ""
380 
381 #----------------------------------------------------------------------
382 
383 
384 
385 def Edit (cat, obj, panel, path):
386  return ProtoFEB_v1(cat, obj, panel, path)
387 
388 #----------------------------------------------------------------------
def onFromAXWrite(self, event)
Definition: ProtoFEB_v1.py:252
def onResetSPI(self, event)
Definition: ProtoFEB_v1.py:212
def onGlobalReset(self, event)
Definition: ProtoFEB_v1.py:200
def onPhaser1(self, event)
Definition: ProtoFEB_v1.py:282
def onenableAll(self, event)
Definition: ProtoFEB_v1.py:312
def onAcquisitionReset(self, event)
Definition: ProtoFEB_v1.py:260
def onResetFE(self, event)
Definition: ProtoFEB_v1.py:209
def onEnableStorage(self, event)
Definition: ProtoFEB_v1.py:164
def isReady(self, event)
Definition: ProtoFEB_v1.py:155
def onReadFromAX(self, event)
Definition: ProtoFEB_v1.py:179
def onReadPattern(self, event)
Definition: ProtoFEB_v1.py:170
def onapplyclockdiv(self, event)
Definition: ProtoFEB_v1.py:336
def onunableAll(self, event)
Definition: ProtoFEB_v1.py:322
def onapplytrig(self, event)
Definition: ProtoFEB_v1.py:351
def onPhaser2(self, event)
Definition: ProtoFEB_v1.py:289
def onLatencyReset(self, event)
Definition: ProtoFEB_v1.py:257
def onPatternRAZ(self, event)
Definition: ProtoFEB_v1.py:220
def Edit(cat, obj, panel, path)
Definition: ProtoFEB_v1.py:385
def onTrigger(self, event)
Definition: ProtoFEB_v1.py:161
def onToAXWrite(self, event)
Definition: ProtoFEB_v1.py:247
def onPhaser0(self, event)
Definition: ProtoFEB_v1.py:275
def onTriggerWrite(self, event)
Definition: ProtoFEB_v1.py:242
def onReadTrigger(self, event)
Definition: ProtoFEB_v1.py:173
def onFromAXPtrRaz(self, event)
Definition: ProtoFEB_v1.py:267
def onapplyfreq(self, event)
Definition: ProtoFEB_v1.py:348
def onTriggerRAZ(self, event)
Definition: ProtoFEB_v1.py:223
def loadxrc(self)
Definition: element.py:15
def getControl(self, xmlid, item)
Definition: object.py:14
def onToAXRAZ(self, event)
Definition: ProtoFEB_v1.py:226
def onapplynumber(self, event)
Definition: ProtoFEB_v1.py:339
def onFifoReset(self, event)
Definition: ProtoFEB_v1.py:206
def onapplyCh(self, event)
Definition: ProtoFEB_v1.py:297
def onFifoWrite(self, event)
Definition: ProtoFEB_v1.py:232
def onModeCh(self, event)
Definition: ProtoFEB_v1.py:307
def onAcquisition(self, event)
Definition: ProtoFEB_v1.py:149
def onapplydelay(self, event)
Definition: ProtoFEB_v1.py:342
def onFromAXRAZ(self, event)
Definition: ProtoFEB_v1.py:229
def onUsbPhasersReset(self, event)
Definition: ProtoFEB_v1.py:203
def reset(path='')
Definition: shell.py:212
def onapplyaxlength(self, event)
Definition: ProtoFEB_v1.py:356
def onToAXPtrRaz(self, event)
Definition: ProtoFEB_v1.py:263
def onapplyaxlatency(self, event)
Definition: ProtoFEB_v1.py:359
def onPatternWrite(self, event)
Definition: ProtoFEB_v1.py:237
def onFifoRAZ(self, event)
Definition: ProtoFEB_v1.py:215
def onPipeline(self, event)
Definition: ProtoFEB_v1.py:196
def onapplyfifodepth(self, event)
Definition: ProtoFEB_v1.py:332
def onModeAX(self, event)
Definition: ProtoFEB_v1.py:189
def onReadToAX(self, event)
Definition: ProtoFEB_v1.py:176
def onStartSequenceAX(self, event)
Definition: ProtoFEB_v1.py:271
def __init__(self, cat, obj, panel, path)
Definition: ProtoFEB_v1.py:7
def onReadFifo(self, event)
Definition: ProtoFEB_v1.py:167
def onSoftTrig(self, event)
Definition: ProtoFEB_v1.py:182