catm-python-lib
Loading...
Searching...
No Matches
trialpad.py
Go to the documentation of this file.
1"""!
2@file trialpad.py
3@version 1
4@author Fumitka ENDO
5@date 2025-06-28T15:53:53+09:00
6@brief trial pad configuration utillities
7"""
8import numpy as np
9import catmlib.readoutpad.basepad as basepad
10import argparse
11
12def get_original_beamtpc_pad_array():
13 """!
14 @brief get 22 pads configuration considered before h445-1 exp
15 @return object of pad array (TReadoutPadArray)
16 """
17 base_padinfo = basepad.generate_regular_n_polygon(3, 4.74, 90, False)
18
19 pad = basepad.TReadoutPadArray()
20 pad.add_basepad(base_padinfo)
21 pad_distance = 5
22 gid = 0
23
24 for i in range(11):
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)
26 pad.id = gid
27 gid += 1
28 for i in range(11):
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)
30 pad.id = gid
31 gid += 1
32
33 return pad
34
35def get_beamtpc_one_fourth_shift_pad_array():
36 """!
37 @brief get 22 pads configuration considered before h445-5 exp
38 @return object of pad array (TReadoutPadArray)
39 """
40 base_padinfo = basepad.generate_regular_n_polygon(3, 4.74, 90, False)
41
42 pad = basepad.TReadoutPadArray()
43 pad.add_basepad(base_padinfo)
44 pad_distance = 5
45 gid = 0
46
47 for i in range(11):
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)
49 pad.id = gid
50 gid += 1
51 for i in range(11):
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)
53 pad.id = gid
54 gid += 1
55
56 return pad
57
58def get_beamtpc_60ch_pad_array():
59 """!
60 @brief get 60 pads configuration considered before h445-5 exp
61 @return object of pad array (TReadoutPadArray)
62 """
63 base_padinfo = basepad.generate_regular_n_polygon(3, 2.75, 90,False)
64
65 pad = basepad.TReadoutPadArray()
66 pad.add_basepad(base_padinfo)
67 pad_distance = 3
68 gid = 0
69
70 nmax=21
71 offset = 15.75
72
73 for i in range(nmax+1):
74 if i >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)
76 pad.id = gid
77 gid += 1
78 for i in range(nmax):
79 if i >0:
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)
81 pad.id = gid
82 gid += 1
83 for i in range(nmax):
84 if i < nmax-1:
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)
86 pad.id = gid
87 gid += 1
88
89 return pad
90
91def get_trail_beamtpc_array(version=0):
92 """!
93 @brief get trial pad configuration of beam tpc
94
95 @param version select version
96 @return object of pad array (TReadoutPadArray)
97 """
98 if version == 0:
99 return get_beamtpc_one_fourth_shift_pad_array()
100
101 elif version == 1:
102 return get_beamtpc_one_fourth_shift_pad_array()
103
104 elif version == 2:
105 return get_beamtpc_60ch_pad_array()
106
107def check_pad_configuration():
108 """!
109 @brief plot trial pad configuration
110
111 CLI argument:
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
115 """
116
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()
122
123 pad_type: str = args.pad_type
124 pad_version: int = args.pad_version
125 pad_plane: str = args.pad_plane
126
127 if pad_type == "beamtpc":
128 pad = get_trail_beamtpc_array(pad_version)
129 pad.show_pads(pad_plane)
130
131 else:
132 print('trial pad type dose not exist')
Basic readout pad generation package.
Definition basepad.py:1