Content
Example for module NDArrDropletFinder
See description of the module in Module ImgAlgos::NDArrDropletFinder
This module is a more generic implementation of the Module ImgAlgos::ImgPeakFinder in case of data segmented for multiple sensors, like in cspad.
The minimal configuration file for psana may look like psana-xppd7114-r0081-cspad2x2-NDArrDropletFinder.cfg
[psana] #calib-dir = /reg/d/psdm/XPP/xppd7114/calib - is used by default files = exp=xppd7114:run=81 events = 10 modules = CSPadPixCoords.CSPad2x2NDArrProducer \ ImgAlgos.NDArrCalib \ CSPadPixCoords.CSPad2x2NDArrReshape \ ImgAlgos.NDArrDropletFinder [CSPadPixCoords.CSPad2x2NDArrProducer] source = XppGon.0:Cspad2x2.0 inkey = outkey = nda_raw outtype = int16 print_bits = 3 [ImgAlgos.NDArrCalib] source = XppGon.0:Cspad2x2.0 key_in = nda_raw key_out = nda_clb:as_data do_peds = yes do_cmod = yes do_stat = yes do_mask = no do_bkgd = no do_gain = no do_nrms = no do_thre = no fname_mask = fname_bkgd = masked_value = 0 threshold_nrms = 3 threshold = 100 below_thre_value = 0 bkgd_ind_min = 0 bkgd_ind_max = 1000 bkgd_ind_inc = 10 print_bits = 255 [CSPadPixCoords.CSPad2x2NDArrReshape] source = XppGon.0:Cspad2x2.0 keys_in = nda_clb:as_data print_bits = 0 [ImgAlgos.NDArrDropletFinder] source = XppGon.0:Cspad2x2.0 key = nda_clb key_droplets = nda_droplets key_smeared = nda_sme threshold_low = 1 threshold_high = 3 sigma = 1.5 smear_radius = 3 peak_radius = 3 low_value = -0.1 windows = 0 10 160 20 350 \ 1 10 160 10 150 \ 1 30 170 220 370 fname_prefix = test print_bits = 511
which defines parameters of a few modules with functionality as follows.
Script functionality
- CSPadPixCoords.CSPad2x2NDArrProducer - get raw data for XppGon.0:Cspad2x2.0 and put them in the event store as ndarray with key nda_raw
- ImgAlgos.NDArrCalib - get ndarray with key nda_raw, applies a bunch of intensity corrections, and saves in the event store the ndarray with key nda_clb:as_data
- CSPadPixCoords.CSPad2x2NDArrReshape - re-shuffle cspad2x2 pixels shaped as data [185,388,2] to "natural" ndarray format [2,185,388]
- ImgAlgos.NDArrDropletFinder - gets calibrated and shaped as two 2-d segments ndarray nda_clb, applies smearing (if sigma>0), find droplets (wide peaks), and saves them in the event store and in the file (if fname_prefix is not empty).
Remarks about parameters
- For each new set of smearing parameters (if applied, sigma>0) the droplet-finder parameters need to be re-tuned.
- Number of windows per sensor is unlimited but the should not overlap each other in order to get rid of duplication of found peaks in the overlapping regions.
- Parameter low_value = −0.1 is set for demonstration purpose - in order to distinguish on plot sensors' pixels from image bins.
- Parameter fname_prefix = test is set in demonstration purpose an order to save image and peak data files for browser
Running script with psana
This file can be executed by the command
psana -c psana-xppd7114-r0081-cspad2x2-NDArrDropletFinder.cfg
This job generates a bunch of files for all events with names like test-xppd7114-r0081-e000006-<suffix>.txt
, where <suffix>
stands for raw
(data), smeared
(if requested), and peaks
. Using browser PlotNDArrayAndPeaks.py one may get images like:
Fig.1: Image of cspad2x2, containing two 2x1 segments. Droplet-finder is applied to the calibrated and smeared data in three windows.