21 nav = ROOT.gGeoManager.GetCurrentNavigator()
23 Info[
'node'] = nav.GetCurrentNode()
25 tmp = Info[
'node'].GetVolume().GetShape()
26 Info[
'material'] = Info[
'node'].GetVolume().GetMaterial().GetName()
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 add_info(path, node, level, currentlevel, print_sub_det_info=False):
65 for subnode
in node.GetNodes():
66 name = subnode.GetName()
68 sd = path[path.rfind(
'/')+1:]
77 conditionsDB.add_detector(name)
78 conditions= {
'x':fullInfo[name][
'boundingbox'][0],
'y':fullInfo[name][
'boundingbox'][1],
'z':fullInfo[name][
'boundingbox'][2]}
79 conditionsDB.add_condition(name,
"xyz",
"Geo", conditions,
None,datetime.datetime.now(), datetime.datetime.max)
82 conditionsDB.add_detector(name , path[1:] )
83 if sd==
"volVetoPlane_0" and name[:10]==
"volVetoBar":
84 conditions_0[name]={
'x':fullInfo[name][
'boundingbox'][0],
'y':fullInfo[name][
'boundingbox'][1],
'z':fullInfo[name][
'boundingbox'][2]}
85 if name==
"volVetoBar_6" :
87 conditionsDB.add_condition(path[1:],
"barpositions",
"Geo", conditions_0,
None,datetime.datetime.now(), datetime.datetime.max)
88 if sd==
"volVetoPlane_1" and name[:10]==
"volVetoBar":
89 conditions_1[name]={
'x':fullInfo[name][
'boundingbox'][0],
'y':fullInfo[name][
'boundingbox'][1],
'z':fullInfo[name][
'boundingbox'][2]}
90 if name==
"volVetoBar_6" :
92 conditionsDB.add_condition(path[1:],
"barpositions",
"Geo", conditions_1,
None,datetime.datetime.now(), datetime.datetime.max)
94 if sd[:5]==
"Brick" and name[:8]==
"Emulsion":
95 conditions_e0[name]={
'x':fullInfo[name][
'boundingbox'][0],
'y':fullInfo[name][
'boundingbox'][1],
'z':fullInfo[name][
'boundingbox'][2]}
96 if name==
"Emulsion_59" :
98 conditionsDB.add_condition(path[1:],
"emulsionpositions",
"Geo", conditions_e0,
None,datetime.datetime.now(), datetime.datetime.max)
100 if sd[:5]==
"Brick" and name[:10]==
"volPassive":
101 conditions_p0[name]={
'x':fullInfo[name][
'boundingbox'][0],
'y':fullInfo[name][
'boundingbox'][1],
'z':fullInfo[name][
'boundingbox'][2]}
102 if name==
"volPassive_58" :
104 conditionsDB.add_condition(path[1:],
"tungsten positions",
"Geo", conditions_p0,
None,datetime.datetime.now(), datetime.datetime.max)
106 if sd[:13]==
"volUpstreamDet" and name[:16]==
"volMuUpstreamBar":
107 conditions_mu0[name]={
'x':fullInfo[name][
'boundingbox'][0],
'y':fullInfo[name][
'boundingbox'][1],
'z':fullInfo[name][
'boundingbox'][2]}
108 if name==
"volMuUpstreamBar_hor_1009" :
110 conditionsDB.add_condition(path[1:],
"mu upstream",
"Geo", conditions_mu0,
None,datetime.datetime.now(), datetime.datetime.max)
112 if sd[:15]==
"volDownstreamDet" and name[:18]==
"volMuDownstreamBar":
113 conditions_mu0[name]={
'x':fullInfo[name][
'boundingbox'][0],
'y':fullInfo[name][
'boundingbox'][1],
'z':fullInfo[name][
'boundingbox'][2]}
114 if name==
"volMuDownstreamBar_ver_100059" :
116 conditionsDB.add_condition(path[1:],
"mu downstream ",
"Geo", conditions_mu0,
None,datetime.datetime.now(), datetime.datetime.max)
117 if name[:5]==
"Scifi":
118 conditions_Scifi[name]={
'id':name[7:7]}
121 conditionsDB.add_condition(path[1:],
"SciFi ",
"Geo", conditions_Scifi,
None,datetime.datetime.now(), datetime.datetime.max)
125 conditionsDB.add_detector(name , sd)
126 if name[:5]==
"Scifi":
127 conditions_Scifi[name]={
'id':name[6:]}
129 planesd=
"plane_"+str(l)
131 conditionsDB.add_detector( planesd,sd+
"/"+name )
133 boardsd=
"board_"+str(m)
134 conditionsDB.add_detector(boardsd, sd+
"/"+name+
"/"+planesd)
136 tofpetsd=
"tofpet_"+str(n)
137 conditionsDB.add_detector(tofpetsd, sd+
"/"+name+
"/"+planesd+
"/"+boardsd)
139 channelsd=
"channel_"+str(o)
140 conditionsDB.add_detector(channelsd, sd+
"/"+name+
"/"+planesd+
"/"+boardsd+
"/"+tofpetsd)
144 conditionsDB.add_condition(path[1:],
"SciFi ",
"Geo", conditions_Scifi,
None,datetime.datetime.now(), datetime.datetime.max)
146 conditions= {
'x':fullInfo[name][
'boundingbox'][0],
'y':fullInfo[name][
'boundingbox'][1],
'z':fullInfo[name][
'boundingbox'][2]}
147 conditionsDB.add_condition(path[1:]+
'/'+name,
"xyz",
"Geo", conditions,
None,datetime.datetime.now(), datetime.datetime.max)
150 sub_nodes[name] = fullInfo[name][
'origin'][2]
151 if currentlevel < level
and fullInfo[name][
'node'].GetNodes():
152 add_info(fullInfo[name][
'path'], fullInfo[name][
'node'], level, currentlevel + 1,
155 if currentlevel == 0:
156 print_sub_det_info =
False