Optical measurement
Optical measurement is maintained by Chris Kenney. Detector or its quad is installed on microscope table and 3-d coordinates of all 2x1 sensor corners are measured with precision about 8um (RMS) in x-y plane. All corners in the measurement are numerated in arbitrary order. It is expected that numeration order should be the same for different measurements. This procedure depends on CSPAD construction;
- For CSPAD with moving quads (i.e. for CXI) optical measurement is done separately for each quad. The numeration of corners is shown in the plot:
For each quad measurement is started from the point #1 which in assembled detector is closest to the beam. The 1-st point (x,y,z) coordinates are re-set to (0,0,0) in the beginning of measurements. At the end, it is checked that the 1-st point coordinates are reproduced within precision of measurement. - For CSPAD with fixed quad geometry (i.e. for XPP) optical measurement is done for entire detector. The numeration of corners in this case is shown in the plot:
The 1-st corner of the 3-rd quad (x,y,z) coordinates are re-set to (0,0,0) in the beginning of measurements. At the end, it is checked that the 1-st point coordinates are reproduced within precision of measurement.
Corner coordinates are measured in micrometers (um) and are saved in the xlsx format table, also containing numeration of quads and points. Then, xlsx format table is converted to the text format in order to feed the python script for quality check and getting calibration parameters for 2x1 center coordinates and tilt angles.
Example of tables for CXI:
Example of tables for XPP:
QC procedure
For quality chech we calculate
S1 - 1st short side length of 2x1
S2 - 2nd short side length of 2x1
L1 - 1st long side length of 2x1
L2 - 2nd long side length of 2x1
D1 - 1st diagonal of 2x1 between corners 1 and 3
D2 - 2nd diagonal of 2x1 between corners 2 and 4
dS and dL are the deviations of the 1st and 2nd corner along the short and long sides, respectively. The sign of all dS are chosen in order to provide correct sign for the tilt angle (the same direction for all 2x1 sensors).
<dS/L> - the tilt angle of 2x1 averaged over two sides in radians.
angle(deg) - the same angle in degrees.
dD = D1 - D2
d(dS) = dS1 - dS2
d(dL) = dL1 - dL2
Quality check parameters for the perfect measurement:
S1=S2, L1=L2 - the 2x1 sides should have equal length and width,
D1=D2 - the 2x1 diagonals should be equal,
dS1 = dS2 = 2*dL1 =2*dL2 - tilt angle should provide consistent deviation for all corners,
dD=0, d(dS)=0, and d(dL)=0 - within precision of measurement.
Everything, excluding <dS/L> and angle(deg), are in micrometers.
Example of the table:
pair: S1 S2 dS1 dS2 L1 L2 dL1 dL2 <dS/L> angle(deg) D1 D2 dD d(dS) d(dL) Quad 0 pair: 0 20891 20913 200 222 43539 43541 -102 -100 0.00485 0.27766 48298 48297 1 -22 -2 pair: 1 20910 20894 293 277 43540 43535 -127 -132 0.00655 0.37506 48302 48289 13 16 5 pair: 2 20890 20906 99 83 43536 43536 42 42 0.00209 0.11976 48290 48293 -3 16 0 pair: 3 20897 20895 131 133 43545 43543 65 63 0.00303 0.17369 48299 48297 2 -2 2 pair: 4 20911 20896 -30 -45 43549 43547 17 15 -0.00086 -0.04934 48303 48306 -3 15 2 pair: 5 20901 20898 10 7 43540 43544 -8 -4 0.00020 0.01119 48296 48299 -3 3 -4 pair: 6 20904 20903 104 105 43536 43540 55 59 0.00240 0.13752 48302 48290 12 -1 -4 pair: 7 20901 20901 -7 -7 43545 43543 -3 -5 -0.00016 -0.00921 48299 48301 -2 0 2 Quad 1 pair: 0 20913 20914 -343 -342 43540 43550 165 175 -0.00787 -0.45066 48313 48303 10 -1 -10 pair: 1 20898 20901 -145 -142 43548 43551 62 65 -0.00330 -0.18880 48300 48309 -9 -3 -3 pair: 2 20895 20903 -151 -159 43535 43532 -74 -77 -0.00356 -0.20400 48289 48291 -2 8 3 pair: 3 20872 20909 -35 -72 43541 43554 -37 -24 -0.00123 -0.07039 48294 48303 -9 37 -13 pair: 4 20940 20904 -455 -491 43527 43554 214 241 -0.01086 -0.62242 48309 48309 0 36 -27 pair: 5 20910 20903 -302 -309 43546 43546 145 145 -0.00702 -0.40196 48304 48307 -3 7 0 pair: 6 20901 20919 -421 -439 43529 43539 -213 -203 -0.00988 -0.56593 48296 48298 -2 18 -10 pair: 7 20907 20907 -452 -452 43548 43539 -201 -210 -0.01038 -0.59475 48315 48294 21 0 9 Quad 2 pair: 0 20914 20914 -25 -25 43536 43540 10 14 -0.00057 -0.03290 48300 48300 0 0 -4 pair: 1 20901 20897 7 3 43546 43536 -1 -11 0.00011 0.00658 48293 48300 -7 4 10 pair: 2 20899 20903 -256 -260 43533 43539 -127 -121 -0.00593 -0.33954 48293 48294 -1 4 -6 pair: 3 20912 20904 -210 -202 43540 43547 -106 -99 -0.00473 -0.27106 48300 48306 -6 -8 -7 pair: 4 20910 20903 -543 -550 43535 43536 261 262 -0.01255 -0.71923 48298 48299 -1 7 -1 pair: 5 20904 20905 -241 -240 43538 43544 111 117 -0.00552 -0.31647 48298 48301 -3 -1 -6 pair: 6 20903 20902 21 22 43539 43543 8 12 0.00049 0.02829 48298 48298 0 -1 -4 pair: 7 20902 20903 82 81 43546 43547 35 36 0.00187 0.10723 48300 48306 -6 1 -1 Quad 3 pair: 0 20902 20898 -82 -86 43536 43543 30 37 -0.00193 -0.11054 48289 48302 -13 4 -7 pair: 1 20900 20904 79 83 43548 43541 -35 -42 0.00186 0.10658 48301 48301 0 -4 7 pair: 2 20912 20894 181 199 43536 43535 97 96 0.00436 0.25005 48298 48289 9 -18 1 pair: 3 20912 20905 119 126 43539 43538 57 56 0.00281 0.16121 48296 48301 -5 -7 1 pair: 4 20894 20912 -454 -436 43534 43545 212 223 -0.01022 -0.58560 48303 48296 7 -18 -11 pair: 5 20906 20919 -336 -323 43527 43535 155 163 -0.00757 -0.43369 48295 48294 1 -13 -8 pair: 6 20902 20905 -203 -206 43537 43525 -89 -101 -0.00470 -0.26916 48293 48287 6 3 12 pair: 7 20900 20897 -140 -137 43539 43544 -68 -63 -0.00318 -0.18225 48298 48296 2 -3 -5
This quality check works well to catch significant typos in input table. In case of obvious typos input table can be corrected. When the quality check is passed successfully the alignment parameters are saved in deployed under the calib
directory as explained below.
Alignment parameters
The official place for CSPad alignment parameters is
/reg/d/psdm/<INSTRUMENT>/<experiment>/calib/CsPad::Calib<VERSION>/<CSPad-name>/<type>/<run-range>.data
The file name consists of the run range followed by the .data
, for example, 0-end.data
, 11-end.data
, 47-52.data
, etc.
Description of types
All CSPAD geometry alignment parameters are split for 9 types:
center
- x, y, z center position of each 2x1 for all quadrants. Comes from optical measurement.center_corr
- additional manual correction to the center parameter. Can be applied if the optical measurement has (non-)obvious problems.marg_gap_shift
- margins, gaps, and shifts between quads, as explained below. Comes from image-based tuning.offset
- x, y, z coordinates for 4 quads. Fairly-reasonable assigned before tuning of theoffset_corr
andmarg_gap_shift
parameters.offset_corr
- additional correction to the offset. Comes from image-based tuning.quad_rotation
- 4 quad rotation in n*90 degree. Comes from basic geometry.quad_tilt
- 4 quad tilt in fractional degree. Has never been used. In latest optical measurement is accounted through the global 2x1 coordinate measurement in the detector.rotation
- 8 2x1-rotation angle for 4 quads in n*90 degree. Comes from basic geometry.tilt
- 8 2x1-tilt angle for 4 quads in fractional degree. Comes from optical measurement.
All coordinates are defined in size of pixel, which is 109.92 x 109.92um (and 274.80 x 109.92um for two rows between two of 2x1 ASICs.) The quadrant size is pre-defined as 850x850. The margins, shifts and gaps are defined for these quads. The offset
and offset_corr
are defined for low-left angle of the rotated by n*90 degree quad. Size of entire CSPad image does not matter for this alignment.
center
The tail of the path: center/<run-range>.data
center_corr
The tail of the path: center_corr/<run-range>.data
offset
The tail of the path: offset/<run-range>.data
offset_corr
The tail of the path: offset_corr/<run-range>.data
offset_corr
The tail of the path: offset_corr/<run-range>.data
dXq0 dXq1 dXq2 dXq3 dYq0 dYq1 dYq2 dYq3 dZq0 dZq1 dZq2 dZq3
marg_gap_shift
The tail of the path: marg_gap_shift/<run-range>.data
offset of 2x1s in quad (for tilt) / offset of quads in image (for tilt) / / gaps / / / shifts / / / / X: 15 40 0 32 Y: 15 40 0 32 Z: 0 0 0 0
quad_rotation
The tail of the path: quad_rotation/<run-range>.data
quad_tilt
The tail of the path: quad_tilt/<run-range>.data
rotation
The tail of the path: rotation/<run-range>.data
tilt
The tail of the path: tilt/<run-range>.data