114def readSDOTree(in_file, treeName = "HitValidTree"):
115 allSDOS = {}
116 t_file = TFile.Open(in_file, "READ")
117 if not t_file:
118 print(f
"Failed to open {in_file}")
119 exit(1)
120 tree = t_file.Get(treeName)
121 if not tree:
122 print(
"Failed to read tree {treeName} from {file}".format(treeName=treeName, file=t_file.GetName()))
123 exit(1)
124 allSDOS = {}
125 for entry in range(tree.GetEntries()):
126 tree.GetEntry(entry)
127 evt= tree.eventNumber
128
129 SDOs = []
130 for sdo in range(len(tree.SDO_RPC_stationIndex)):
131 SDOs.append(RpcSDO(stationIndex = ord(tree.SDO_RPC_stationIndex[sdo]),
132 stationEta = ord(tree.SDO_RPC_stationEta[sdo]),
133 stationPhi = ord(tree.SDO_RPC_stationPhi[sdo]),
134 doubletR = ord(tree.SDO_RPC_doubletR[sdo]),
135 doubletPhi = ord(tree.SDO_RPC_doubletPhi[sdo]),
136 gasGap = ord(tree.SDO_RPC_gasGap[sdo]),
137 measuresPhi=tree.SDO_RPC_measuresPhi[sdo],
138 strip = ord(tree.SDO_RPC_strip[sdo]),
139 globPosX = tree.SDO_RPC_globalPosX[sdo],
140 globPosY = tree.SDO_RPC_globalPosY[sdo],
141 globPosZ = tree.SDO_RPC_globalPosZ[sdo],
142
143 locPosX = tree.SDO_RPC_localPosX[sdo],
144 locPosY = tree.SDO_RPC_localPosY[sdo],
145
146 barcode=tree.SDO_RPC_barcode[sdo]
147 ))
148
149 if len(SDOs):
150 allSDOS[evt] = SDOs
151
152 return allSDOS
153