5@date 2025-06-28T15:53:53+09:00
6@brief trial pad configuration utillities
12def get_original_beamtpc_pad_array():
14 @brief get 22 pads configuration considered before h445-1 exp
15 @return object of pad array (TReadoutPadArray)
17 base_padinfo = basepad.generate_regular_n_polygon(3, 4.74, 90,
False)
19 pad = basepad.TReadoutPadArray()
20 pad.add_basepad(base_padinfo)
25 pad.add_pads([i*pad_distance/2, 0, pad_distance/np.sqrt(3)/2*((i-1)%2)], 0, 0, 180*((i-1)%2), 0, gid)
29 pad.add_pads([i*pad_distance/2, 0, pad_distance/np.sqrt(3)/2*((i)%2) + np.sqrt(3)*pad_distance/2], 0, 0, 180*((i)%2), 0, gid)
35def get_beamtpc_one_fourth_shift_pad_array():
37 @brief get 22 pads configuration considered before h445-5 exp
38 @return object of pad array (TReadoutPadArray)
40 base_padinfo = basepad.generate_regular_n_polygon(3, 4.74, 90,
False)
42 pad = basepad.TReadoutPadArray()
43 pad.add_basepad(base_padinfo)
48 pad.add_pads([i*pad_distance/2, 0, pad_distance/np.sqrt(3)/2*((i-1)%2)], 0, 0, 180*((i-1)%2), 0, gid)
52 pad.add_pads([(i+0.5)*pad_distance/2, 0, pad_distance/np.sqrt(3)/2*((i)%2) + np.sqrt(3)*pad_distance/2], 0, 0, 180*((i)%2), 0, gid)
58def get_beamtpc_60ch_pad_array():
60 @brief get 60 pads configuration considered before h445-5 exp
61 @return object of pad array (TReadoutPadArray)
63 base_padinfo = basepad.generate_regular_n_polygon(3, 2.75, 90,
False)
65 pad = basepad.TReadoutPadArray()
66 pad.add_basepad(base_padinfo)
73 for i
in range(nmax+1):
75 pad.add_pads([(i-0.5)*pad_distance/2-offset, 0, pad_distance/np.sqrt(3)/2*((i-1)%2)], 0, 0, 180*((i-1)%2), 0, gid)
80 pad.add_pads([((i+0))*pad_distance/2-offset, 0, pad_distance/np.sqrt(3)/2*((i)%2) + np.sqrt(3)*pad_distance/2], 0, 0, 180*((i)%2), 0, gid)
85 pad.add_pads([(i+0.5)*pad_distance/2-offset, 0, pad_distance/np.sqrt(3)/2*((i-1)%2) + 2*np.sqrt(3)*pad_distance/2] , 0, 0, 180*((i-1)%2), 0, gid)
91def get_trail_beamtpc_array(version=0):
93 @brief get trial pad configuration of beam tpc
95 @param version select version
96 @return object of pad array (TReadoutPadArray)
99 return get_beamtpc_one_fourth_shift_pad_array()
102 return get_beamtpc_one_fourth_shift_pad_array()
105 return get_beamtpc_60ch_pad_array()
107def check_pad_configuration():
109 @brief plot trial pad configuration
112 @arg pad-type select trial pad type
113 @arg pad-version select trail pad version
114 @arg pad-plane select pad plane for ploting
117 parser = argparse.ArgumentParser()
118 parser.add_argument(
"-t",
"--pad-type", help=
"select trial pad type", type=str, default=
"beamtpc")
119 parser.add_argument(
"-tv",
"--pad-version", help=
"select trail pad version", type=int, default=0)
120 parser.add_argument(
"-pp",
"--pad-plane", help=
"select pad plane for ploting", type=str, default=
"xz")
121 args = parser.parse_args()
123 pad_type: str = args.pad_type
124 pad_version: int = args.pad_version
125 pad_plane: str = args.pad_plane
127 if pad_type ==
"beamtpc":
128 pad = get_trail_beamtpc_array(pad_version)
129 pad.show_pads(pad_plane)
132 print(
'trial pad type dose not exist')
Basic readout pad generation package.