221 def ExecuteTask(self, option: str = "") -> None:
222 self.comp.DestroyElements()
223 self.comp.OpenCompound()
224 nav = ROOT.gGeoManager.GetCurrentNavigator()
225 for digi in sTree.Digi_SBTHits:
226 if not digi.isValid():
227 continue
228 node = digi.GetNode()
229 shape = node.GetVolume().GetShape()
230 bx = ROOT.TEveBox(node.GetName())
231 bx.SetPickable(ROOT.kTRUE)
232 bx.SetTitle(digi.__repr__())
233 bx.SetMainColor(ROOT.kMagenta + 3)
234 dx, dy, dz = shape.GetDX(), shape.GetDY(), shape.GetDZ()
235 o = shape.GetOrigin()
236 master = array("d", [0, 0, 0])
237 n = 0
238 for edge in [
239 [-dx, -dy, -dz],
240 [-dx, +dy, -dz],
241 [+dx, +dy, -dz],
242 [+dx, -dy, -dz],
243 [-dx, -dy, dz],
244 [-dx, +dy, dz],
245 [+dx, +dy, dz],
246 [+dx, -dy, dz],
247 ]:
248 origin = array("d", [edge[0] + o[0], edge[1] + o[1], edge[2] + o[2]])
249 nav.LocalToMaster(origin, master)
250 bx.SetVertex(n, master[0], master[1], master[2])
251 n += 1
252 self.comp.AddElement(bx)
253 self.comp.CloseCompound()
254 gEve.ElementChanged(self.evscene, True, True)
255