233 ''' event processing '''
237 B2ERROR(
'no TOPRecBunch')
239 if not recBunch.isReconstructed():
241 self.bunchOffset.Fill(recBunch.getCurrentOffset())
244 self.data.run = evtMetaData.getRun()
245 self.data.offset = recBunch.getCurrentOffset()
246 self.data.usedTrk = recBunch.getUsedTracks()
249 pdfs = track.getRelated(
'TOPPDFCollections')
252 self.data.slot = pdfs.getModuleID()
253 momentum = pdfs.getAssociatedLocalMomentum()
254 position = pdfs.getAssociatedLocalHit()
255 self.data.p = momentum.Mag()
256 self.data.cth = momentum.CosTheta()
257 self.data.phi = momentum.Phi()
258 self.data.z = position.Z()
259 self.data.x = position.X()
260 self.data.tof = self.getTOF(track, 13, self.data.slot)
262 tfit = track.getTrackFitResultWithClosestMass(Belle2.Const.muon)
264 B2ERROR(
"No trackFitResult available")
266 self.data.charge = tfit.getChargeSign()
267 pocaPosition = tfit.getPosition()
268 self.data.poca_x = pocaPosition.X()
269 self.data.poca_y = pocaPosition.Y()
270 self.data.poca_z = pocaPosition.Z()
271 self.data.hitsCDC = tfit.getHitPatternCDC().getNHits()
272 Ecms = self.getEcms(tfit, Belle2.Const.muon)
273 self.data.dEcms = Ecms[0] - Ecms[1]
274 if not self.trackSelected():
277 topll = track.getRelated(
'TOPLikelihoods')
278 extHit = topll.getRelated(
'ExtHits')
279 timeZero = extHit.getRelated(
'TOPTimeZeros')
280 self.data.rec_t0 = timeZero.getTime()
281 self.data.valid_t0 = timeZero.isValid()
284 self.data.valid_t0 = 0
286 self.h_cth_vs_p.Fill(self.data.p, self.data.cth)
287 self.h_momentum.Fill(self.data.p)
288 self.h_cth.Fill(self.data.cth)
289 self.h_phi.Fill(self.data.phi)
290 self.h_z.Fill(self.data.z)
291 self.h_x.Fill(self.data.x)
292 self.h_charge.Fill(self.data.charge)
293 self.h_poca_xy.Fill(self.data.poca_x, self.data.poca_y)
294 self.h_poca_z.Fill(self.data.poca_z)
295 self.h_hitsCDC.Fill(self.data.hitsCDC)
296 self.h_Ecms.Fill(Ecms[0])
298 pdf = pdfs.getHypothesisPDF(13)
300 B2ERROR(
"No PDF available for PDG = 13")
303 self.pdfHistogram(pdf)
304 x0 = position.X() - momentum.X() / momentum.Y() * position.Y()
305 z0 = position.Z() - momentum.Z() / momentum.Y() * position.Y()
308 if digit.getModuleID() == self.data.slot
and digit.getHitQuality() == 1:
313 self.data.channel[k] = digit.getChannel()
314 self.data.pixel[k] = digit.getPixelID()
315 self.data.time[k] = digit.getTime()
316 self.data.timeErr[k] = digit.getTimeError()
317 self.data.pulseHeight[k] = digit.getPulseHeight()
318 self.data.pulseWidth[k] = digit.getPulseWidth()
319 self.data.sample[k] = digit.getModulo256Sample()
320 self.data.status[k] = digit.getStatus()
321 peaks = pdf[digit.getPixelID() - 1]
324 self.data.wid0[k] = 0
327 sorted_peaks = self.sortPeaks(peaks)
328 self.data.t0[k] = sorted_peaks[0].mean
329 self.data.wid0[k] = sorted_peaks[0].width
330 self.data.t1[k] = self.data.t0[k] + 100
332 self.data.t1[k] = sorted_peaks[1].mean
333 self.data.t_pdf[k] = 0
334 self.data.type[k] = 0
347 self.data.alpha[k] = 0
348 assocPDF = digit.getRelated(
'TOPAssociatedPDFs')
350 pik = assocPDF.getSinglePeak()
352 self.data.t_pdf[k] = pik.position
353 self.data.type[k] = pik.type
354 self.data.nx[k] = pik.nx
355 self.data.ny[k] = pik.ny
356 self.data.nxm[k] = pik.nxm
357 self.data.nym[k] = pik.nym
358 self.data.nxe[k] = pik.nxe
359 self.data.nye[k] = pik.nye
361 self.data.nys[k] = int(pik.nye / 2)
363 self.data.nys[k] = int((pik.nye + 1) / 2)
364 self.data.xd[k] = pik.xd
365 self.data.yd[k] = pik.yd
367 self.data.xm[k] = x0 + pik.kxe / pik.kze * (130.0 - z0)
368 self.data.kx[k] = pik.kxe
369 self.data.ky[k] = pik.kye
370 self.data.alpha[k] = math.degrees(math.acos(abs(pik.kzd)))