Belle II Software  release-08-01-10
PxdROIPayloadTestModule Class Reference
Inheritance diagram for PxdROIPayloadTestModule:
Collaboration diagram for PxdROIPayloadTestModule:

Public Member Functions

def sortROIs (self, unsortedPyStoreArray)
 
def event (self)
 

Detailed Description

module which checks if the roy payload from HLT can be created and depacked correctly

Definition at line 22 of file pxd_roi_payload.py.

Member Function Documentation

◆ event()

def event (   self)
 load the PXD Digits of the simulation and the packed/unpacked ones
and compare them

Definition at line 45 of file pxd_roi_payload.py.

45  def event(self):
46  """ load the PXD Digits of the simulation and the packed/unpacked ones
47  and compare them"""
48 
49  orgroisuns = Belle2.PyStoreArray('ROIs')
50  if not orgroisuns:
51  b2.B2FATAL("ROIs not in file")
52  return
53 
54  unpackedroisuns = Belle2.PyStoreArray('PXDROIsPayHLT')
55  if not unpackedroisuns:
56  b2.B2FATAL("PXDROIsPayHLT not in file")
57  return
58 
59  # To make a 1:1 comparison, we have to sort both arrays.
60  # As the order of the payload differs from the original array.
61  # (its sorted by DHHID)
62  # We have to sort both, because sorting by coordinate is not defined.
63 
64  orgrois = self.sortROIs(orgroisuns)
65  unpackedrois = self.sortROIs(unpackedroisuns)
66 
67  # For some unknown reason, the ROI array contains a lot of
68  # doubles. For creating the payload, these have been removed. to make a 1:1
69  # comparison, we have to skip the following check and lateron skip ROIs
70  # which are identical to the one before (ordered array).
71 
72  # if not len(orgrois) == len(unpackedrois):
73  # B2FATAL("Org. ROIs and Unpacked ROIs count not equal after packing and unpacking")
74 
75  print(f"Comparing {len(orgrois)} ROIs ")
76 
77  def f(x):
78  return (
79  x.getSensorID(),
80  x.getMinUid(),
81  x.getMaxUid(),
82  x.getMinVid(),
83  x.getMaxVid())
84 
85  # check all quantities between the direct and the packed/unpacked pxd digits
86  # for i in range(len(orgrois)):
87  # org = orgrois[i]
88  # if i == 0 or f(org) != f(orgrois[i - 1]):
89  # B2INFO(" Org $%X %3d %3d %3d %3d" % (org.getSensorID().getID(), org.getMinUid(),
90  # org.getMaxUid(), org.getMinVid(), org.getMaxVid()))
91 
92  # for i in range(len(unpackedrois)):
93  # unp = unpackedrois[i]
94  # B2INFO(" Unp $%X %3d %3d %3d %3d" % (unp.getSensorID().getID(),
95  # unp.getMinUid(), unp.getMaxUid(), unp.getMinVid(), unp.getMaxVid()))
96 
97  j = 0
98  for i in range(len(orgrois)):
99  org = orgrois[i]
100  if i != 0 and f(org) == f(orgrois[i - 1]):
101  b2.B2WARNING("Found the same ROI a second time (Double ROI)!")
102  b2.B2WARNING(
103  f"Check ${org.getSensorID().getID():X} {int(org.getMinUid()):3d} {int(org.getMaxUid()):3d} " +
104  f"{int(org.getMinVid()):3d} {int(org.getMaxVid()):3d}")
105  if i == 0 or f(org) != f(orgrois[i - 1]):
106  if j == len(unpackedrois):
107  b2.B2FATAL("Unpacked ROIs comparison exceeds array limit!")
108  break
109 
110  unp = unpackedrois[j]
111 
112  b2.B2INFO(
113  f"Check Org ${org.getSensorID().getID():X} {org.getMinUid():3d} {org.getMaxUid():3d} " +
114  f"{org.getMinVid():3d} {org.getMaxVid():3d} Unp ${unp.getSensorID().getID():X} {unp.getMinUid():3d} " +
115  f"{unp.getMaxUid():3d} {unp.getMinVid():3d} {unp.getMaxVid():3d}")
116  # compare all available quantities
117  if unp.getMinUid() == 0 and unp.getMinVid() == 0 and unp.getMaxUid() == 250 - 1 and unp.getMaxVid() == 768 - 1:
118  b2.B2INFO("Full size ROI")
119  if org.getSensorID().getID() != unp.getSensorID().getID():
120  b2.B2INFO("DHHID changed")
121  if j == len(unpackedrois):
122  b2.B2FATAL("Unpacked ROIs comparison exceeds array limit!")
123  break
124  j += 1
125  unp = unpackedrois[j]
126 
127  if not(unp.getMinUid() == 0 and unp.getMinVid() == 0 and unp.getMaxUid() == 250 - 1 and unp.getMaxVid() == 768 - 1):
128  assert org.getSensorID().getID() == unp.getSensorID().getID()
129  assert org.getMinUid() == unp.getMinUid()
130  assert org.getMaxUid() == unp.getMaxUid()
131  assert org.getMinVid() == unp.getMinVid()
132  assert org.getMaxVid() == unp.getMaxVid()
133  j += 1
134 
135 
136 # to run the framework the used modules need to be registered
A (simplified) python wrapper for StoreArray.
Definition: PyStoreArray.h:72
int getID(const std::vector< double > &breaks, double t)
get id of the time point t
Definition: calibTools.h:60

◆ sortROIs()

def sortROIs (   self,
  unsortedPyStoreArray 
)
 sort ROI list
    Returns a python-list containing the ROIs

Definition at line 28 of file pxd_roi_payload.py.


The documentation for this class was generated from the following file: