13 def find(bec=None, layer_disk=None, phi=None, eta=None, side=None, asdec=False, input_data="geometry.json", output_file=None):
16 with open(input_data)
as f:
17 if input_data.endswith(
".json"):
20 print(
"Unexpected input file or format.")
25 for ID, info
in data.items():
26 if bec
is not None and int(info[
"BEC"]) != bec:
29 if layer_disk
is not None and int(info[
"LayerDisk"]) != layer_disk:
32 if phi
is not None and int(info[
"PhiModule"])
not in [i
for i
in phi]:
35 if eta
is not None and int(info[
"EtaModule"]) > eta:
38 if side
is not None and int(info[
"Side"]) != side:
42 info[
"Decimal_ID"] =
str(
int(ID, 16))
46 with open(output_file,
"w")
as f:
47 selected_data = {ID: data[ID]
for ID
in IDs}
48 json.dump(selected_data, f, indent=4)
53 def merge(file_1="selected_modules_1.json", file_2="selected_modules_2.json", output_file=None):
58 with open(file_1)
as f1:
59 if file_1.endswith(
".json"):
62 print(
"Unexpected input file_1 or format.")
65 IDs.extend(data1.keys())
67 with open(file_2)
as f2:
68 if file_2.endswith(
".json"):
71 print(
"Unexpected input file_2 or format.")
74 IDs.extend(data2.keys())
76 with open(output_file,
"w")
as f3:
80 selected_data[ID] = data1[ID]
82 selected_data[ID] = data2[ID]
83 json.dump(selected_data, f3, indent=4)
90 with open(input_data)
as f:
91 if input_data.endswith(
".json"):
94 print(
"Unexpected input file or format.")
99 num =
int(
round(frac * len(data), 0))
100 IDs = random.sample(
list(data.keys()), k=num)
102 for ID, info
in data.items():
103 info[
"Decimal_ID"] =
str(
int(ID, 16))
105 with open(output_file,
"w")
as f:
106 selected_data = {ID: data[ID]
for ID
in IDs}
107 json.dump(selected_data, f, indent=4)
112 if __name__ ==
"__main__":
114 data =
find(bec = 0, layer_disk = 0, asdec =
True, input_data=
"PixelGeometry.json", output_file=
"IBL_selected_modules.json")