Belle II Software  release-06-02-00
PXDROIUnpackerModule.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 
11 
12 from basf2 import Module, B2ERROR
13 from ROOT import Belle2
14 
15 
17  """Unpack Raw Rois"""
18 
19  def initialize(self):
20  """reimplementation of Module::initialize()."""
21 
22  self.mHLTmHLT = Belle2.PyStoreArray(Belle2.ROIid.Class(), "PXDROIsHLT")
23 
24  self.mDCmDC = Belle2.PyStoreArray(Belle2.ROIid.Class(), "PXDROIsDC")
25 
26  self.mHLTmHLT.registerInDataStore()
27  self.mDCmDC.registerInDataStore()
28 
29  def event(self):
30  """reimplementation of Module::event()."""
31 
32  rois = Belle2.PyStoreArray('PXDRawROIss')
33  if not rois:
34  return
35  for q in rois:
36  m = q.getNrROIs()
37  for i in range(0, m):
38  DHEID = q.getDHHID(i)
39  sensor = (DHEID & 0x1) + 1
40  ladder = (DHEID & 0x1E) >> 1 # no +1
41  layer = ((DHEID & 0x20) >> 5) + 1
42  v = Belle2.VxdID(layer, ladder, sensor)
43  if q.getType(i) == 0:
44  ROI = self.mHLTmHLT.appendNew()
45  ROI.setSensorID(v)
46  ROI.setMinUid(q.getMinUid(i))
47  ROI.setMaxUid(q.getMaxUid(i))
48  ROI.setMinVid(q.getMinVid(i))
49  ROI.setMaxVid(q.getMaxVid(i))
50  else:
51  ROI = self.mDCmDC.appendNew()
52  ROI.setSensorID(v)
53  ROI.setMinUid(q.getMinUid(i))
54  ROI.setMaxUid(q.getMaxUid(i))
55  ROI.setMinVid(q.getMinVid(i))
56  ROI.setMaxVid(q.getMaxVid(i))
57 
58 
60  """Unpack HLT Payload Rois"""
61 
62  def initialize(self):
63  """reimplementation of Module::initialize()."""
64 
65  self.mPHLTmPHLT = Belle2.PyStoreArray(Belle2.ROIid.Class(), "PXDROIsPayHLT")
66 
67  self.mPDCmPDC = Belle2.PyStoreArray(Belle2.ROIid.Class(), "PXDROIsPayDC")
68 
69  self.mPHLTmPHLT.registerInDataStore()
70  self.mPDCmPDC.registerInDataStore()
71 
72  def event(self):
73  """reimplementation of Module::event()."""
74 
75  q = Belle2.PyStoreObj('ROIpayload')
76  if not q:
77  B2ERROR("ROIpayload is missing")
78  return
79  q = q.obj()
80  n = q.getNrROIs()
81  for i in range(0, n):
82  DHEID = q.getDHHID(i)
83  sensor = (DHEID & 0x1) + 1
84  ladder = (DHEID & 0x1E) >> 1 # no +1
85  layer = ((DHEID & 0x20) >> 5) + 1
86  v = Belle2.VxdID(layer, ladder, sensor)
87  if q.getType(i) == 0:
88  ROI = self.mPHLTmPHLT.appendNew()
89  ROI.setSensorID(v)
90  ROI.setMinUid(q.getMinUid(i))
91  ROI.setMaxUid(q.getMaxUid(i))
92  ROI.setMinVid(q.getMinVid(i))
93  ROI.setMaxVid(q.getMaxVid(i))
94  else:
95  ROI = self.mPDCmPDC.appendNew()
96  ROI.setSensorID(v)
97  ROI.setMinUid(q.getMinUid(i))
98  ROI.setMaxUid(q.getMaxUid(i))
99  ROI.setMinVid(q.getMinVid(i))
100  ROI.setMaxVid(q.getMaxVid(i))
a (simplified) python wrapper for StoreArray.
Definition: PyStoreArray.h:56
a (simplified) python wrapper for StoreObjPtr.
Definition: PyStoreObj.h:67
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:33