Page History
...
For example, pure water ring background from exp=cxij4716:run=22 for single event:
To evaluate background in data, n-d array of data is split for 2-d bins in polar coordinate frame, total intensity and number of involved pixels are counted for each bin and converted to the average bin intensity.
...
- For good statistical precision of the background averaging 2-d bins should contain large number of pixels. However large bins produces significant binning artifacts which are seen in resulting image.
- The main reason for angular bins is a variation of intensity with angle due to polarization effect. The beam polarization effect can be eliminated with appropriate correction.
Method for polarization correction factor:
Code Block collapse true def polarization_factor(rad, phi_deg, z) : """Returns per-pixel polarization factors, assuming that detector is perpendicular to Z. """ phi = np.deg2rad(phi_deg) ones = np.ones_like(rad) theta = np.arctan2(rad, z) polsxc = 1 - np.sqrt(np.fabs(np.sin(theta)*np.cos(phi))) pol = 1 - sxc*sxc return divide_protected(ones, pol, vsub_zero=0)
Then, radial background can be estimated for a single angular bins (ring-shaped radial bins) :
Code Block |
---|
pf = polarization_factor(rb.pixel_rad(), rb.pixel_phi(), z)
res = rb.subtract_bkgd(nda * pf) |
For z=1m
we get polarization correction factor, corrected data (water-ring) sample, and background subtracted data as follows.
Effect of polarization is somehow accounted, but most likely the sample-to-detector distance 1m is not correct.
The data set exp=cxij4716:run=22 was collected at sample-to-detector distance z=94mm. In this case polarization correction formula gives distribution for correction factor and "corrected" data averaged over all 14636 events:
So, it looks like polarization correction formula is wrong
CSPAD "dopping" artifacts
or several angular bins:
Code Block |
---|
arr = load_txt(fname_nda) rb = RadialBkgd(X, Y, mask, nradbins=500, nphibins=1) pf = gu.reshape_to_2d(polarization_factor(rb.pixel_rad(), rb.pixel_phi(), 0.5e694e3)) nda = rb.subtract_bkgd(arr * pf) * mask.flatten() |
For exp=cxij4716:run=22 z=94mm
- averaged over all 14636 events calibrated (pedestal, common mode)
...
- data
- polarization correction factor
- polarization corrected data
- radial-background subtracted data using single angular bin
- radial-background subtracted data using 8 angular bins
CSPAD "dopping" artifacts
- zoomed-in regions of the last plot
Shows some "doping" as well as "gray scale gradient" artifacts.
Polarization corrected, radial background subtracted image, array spectra, and zoomed parts of the image with potential artifact candidates:
References
...