15 nav = ROOT.gGeoManager.GetCurrentNavigator()
17 Info[
'node'] = nav.GetCurrentNode()
19 tmp = Info[
'node'].GetVolume().GetShape()
20 Info[
'material'] = Info[
'node'].GetVolume().GetMaterial().GetName()
22 x = ROOT.gGeoManager.GetVerboseLevel()
23 ROOT.gGeoManager.SetVerboseLevel(0)
24 Info[
'weight']=Info[
'node'].GetVolume().Weight()
25 Info[
'cubicmeter']=Info[
'node'].GetVolume().Capacity()/1000000.
26 ROOT.gGeoManager.SetVerboseLevel(x)
27 o = [tmp.GetOrigin()[0],tmp.GetOrigin()[1],tmp.GetOrigin()[2]]
30 globOrigin = array(
'd',[0,0,0])
31 nav.LocalToMaster(local,globOrigin)
32 Info[
'origin'] = globOrigin
33 shifts = [ [-tmp.GetDX()+o[0],o[1],o[2]],
34 [tmp.GetDX()+o[0],o[1],o[2]],
35 [o[0],-tmp.GetDY()+o[1],o[2]],
36 [o[0],tmp.GetDY()+o[1],o[2]],
37 [o[0],o[1],-tmp.GetDZ()+o[2]],[o[0],o[1],tmp.GetDZ()+o[2]]
42 glob = array(
'd',[0,0,0])
43 nav.LocalToMaster(local,glob)
44 shifted.append([glob[0],glob[1],glob[2]])
45 Info[
'boundingbox']={}
50 if s[j]<jmin: jmin = s[j]
51 if s[j]>jmax: jmax = s[j]
52 Info[
'boundingbox'][j]=[jmin,jmax]
55def print_info(path, node, level, currentlevel, print_sub_det_info=False):
58 for subnode
in node.GetNodes():
59 name = subnode.GetName()
61 sub_nodes[name] = fullInfo[name][
'origin'][2]
63 for name, _
in sorted(list(sub_nodes.items()), key=operator.itemgetter(1)):
64 boundingbox = fullInfo[name][
'boundingbox']
66 format_string =
"{:<28s}: z={:10.4F}cm dZ={:10.4F}cm [{:10.4F} {:10.4F}]"+\
67 " dx={:10.4F}cm [{:10.4F} {:10.4F}] dy={:10.4F}cm [{:10.4F} {:10.4F}] {:>20s}"
69 format_variable = [
" " * int(currentlevel) + name, fullInfo[name][
'origin'][2],
70 abs(boundingbox[2][0]-boundingbox[2][1])/2., boundingbox[2][0],boundingbox[2][1],
71 abs(boundingbox[0][0]-boundingbox[0][1])/2., boundingbox[0][0],boundingbox[0][1],
72 abs(boundingbox[1][0]-boundingbox[1][1])/2., boundingbox[1][0],boundingbox[1][1],
73 fullInfo[name][
'material']]
76 cubicmeter = fullInfo[name][
'cubicmeter']
77 weight = fullInfo[name][
'weight']
78 format_string +=
" {:10.1F}kg {:10.1F}m3"
79 format_variable.extend([weight, cubicmeter])
81 print (format_string.format(*format_variable))
83 if options.volume
in [
"", name]:
84 print_sub_det_info =
True
86 if print_sub_det_info
and currentlevel < level
and fullInfo[name][
'node'].GetNodes():
87 print_info(fullInfo[name][
'path'], fullInfo[name][
'node'], level, currentlevel + 1,
91 print_sub_det_info =
False