95 ''' construct a graph to paint waveform differently after window discontinuity '''
97 if waveform.areWindowsInOrder():
100 windows = waveform.getStorageWindows()
102 for i
in range(1, windows.size()):
103 diff = windows[i] - windows[i - 1]
109 n = (windows.size() - i0) * 64 * 2
112 for i
in range(low, self.
hist[k].GetNbinsX()):
113 x = self.
hist[k].GetBinCenter(i + 1)
114 dx = self.
hist[k].GetBinWidth(i + 1) / 2
115 y = self.
hist[k].GetBinContent(i + 1)
117 self.
gpaint[k].SetPoint(ii, x - dx, y)
118 self.
gpaint[k].SetPoint(ii + 1, x + dx, y)
122 Event processor: fill the histograms, display them,
123 wait for user respond.
127 event = evtMetaData.obj().getEvent()
128 run = evtMetaData.obj().getRun()
134 fname =
'waveforms_run' + str(run) +
'_event' + str(event) +
'_chan'
137 for waveform
in waveforms:
138 slot = waveform.getModuleID()
139 chan = waveform.getChannel()
141 wf = waveform.getWaveform()
143 numSamples = waveform.getSize()
144 startSample = waveform.getStartSample()
145 self.
hist[k].SetBins(numSamples, float(startSample), float(startSample + numSamples))
146 title =
'S' + str(slot) +
' chan ' + str(chan) +
' win'
147 if waveform.getStorageWindows().empty():
148 title +=
' ' + str(waveform.getStorageWindow())
150 for window
in waveform.getStorageWindows():
151 title +=
' ' + str(window)
152 self.
hist[k].SetTitle(title)
153 self.
hist[k].SetStats(
False)
154 self.
hist[k].SetLineColor(8)
159 self.
hist[k].SetBinContent(i, sample)
161 self.
gpaint[k].SetLineColor(9)
164 rawDigits = waveform.getRelationsWith(
"TOPRawDigits")
167 for raw
in rawDigits:
169 graph.SetMarkerStyle(24)
170 graph.SetPoint(0, raw.getSampleRise() + 0.5, raw.getValueRise0())
171 graph.SetPoint(1, raw.getSampleRise() + 1.5, raw.getValueRise1())
172 graph.SetPoint(2, raw.getSamplePeak() + 0.5, raw.getValuePeak())
173 graph.SetPoint(3, raw.getSampleFall() + 0.5, raw.getValueFall0())
174 graph.SetPoint(4, raw.getSampleFall() + 1.5, raw.getValueFall1())
175 if raw.isMadeOffline():
176 graph.SetMarkerStyle(5)
177 if raw.isFEValid()
and not raw.isAtWindowDiscontinuity():
178 graph.SetMarkerColor(2)
179 if raw.isPedestalJump():
180 graph.SetMarkerColor(3)
182 graph.SetMarkerColor(4)
183 self.
graphs[k].append(graph)
185 tlpfResult = raw.getRelated(
"TOPTemplateFitResults")
187 tlpfgraph = TGraph(2)
188 tlpfgraph.SetMarkerStyle(25)
189 tlpfgraph.SetPoint(0, tlpfResult.getRisingEdge(),
190 tlpfResult.getAmplitude() / 2 + tlpfResult.getBackgroundOffset())
191 tlpfgraph.SetPoint(1, tlpfResult.getRisingEdge(), tlpfResult.getBackgroundOffset())
192 print(
'Template Fit Chisquare: ', tlpfResult.getChisquare())
197 stat = self.
draw(k, event, run)
204 self.
draw(k, event, run)