Page History
...
which defines parameters of a few modules with functionality as follows.
Script functionality
CSPadPixCoords.CSPad2x2NDArrProducer
- get raw data forXppGon.0:Cspad2x2.0
and put them in the event store as ndarray with keynda_raw
ImgAlgos.NDArrCalib
- get ndarray with keynda_raw
, applies a bunch of intensity corrections, and saves in the event store the ndarray with keynda_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 ndarraynda_clb
, applies smearing (if sigma>0sigma
>0), find droplets (wide peaks), and saves them in the event store and in the file (iffname_prefix
is not empty).
Remarks about parameters
- For each new set of smearing parameters (if applied, sigma>0
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 in order to save image and peak data files for browser
...
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 ImgAlgos/data/PlotNDArrayAndPeaks.py one may get images like:
...
Code Block |
---|
0 127 137 5.01175 60.1614 20
0 129 166 4.55816 52.7998 20
0 155 131 4.09197 48.5101 20
1 105 17 3.65102 17.5217 6
1 145 49 3.87695 30.5501 15
1 116 249 3.07719 20.5181 11
1 139 325 3.60641 60.2324 27
... |
Access droplet data in python
Example of the python script psana-xppd7114-r0081-cspad2x2-NDArrDropletFinder.py
:
Code Block |
---|
#!/usr/bin/env python import sys import numpy as np import psana psana.setConfigFile('psana-xppd7114-r0081-cspad2x2-NDArrDropletFinder.cfg') dsname = 'exp=xppd7114:run=81' print """Data source: %s""" % dsname ds = psana.DataSource(dsname) evnum_max = 50 #------------------------------ for evnum, evt in enumerate(ds.events()) : evtid = evt.get(psana.EventId) if evnum > evnum_max : break nda_droplets = evt.get(psana.ndarray_float32_2, psana.Source('DetInfo(XppGon.0:Cspad2x2.0)'), 'nda_droplets') nda_smeared = evt.get(psana.ndarray_float64_3, psana.Source('DetInfo(XppGon.0:Cspad2x2.0)'), 'nda_sme') print 50*'=', '\nEvent: %d' % evnum if (nda_smeared is not None) : print 'nda_smeared.shape = ', nda_smeared.shape if (nda_droplets is not None) : print 'nda_droplets.shape = ', nda_droplets.shape for droplet in nda_droplets : seg, row, col, amax, atot, npix = droplet print ' seg:%2d row:%3d col:%3d amax:%8.1f atot:%8.1f npix:%2d' % \ (seg, row, col, amax, atot, npix) |
For each event in the data set this script executes psana-xppd7114-r0081-cspad2x2-NDArrDropletFinder.cfg
then gets its results as numpy arrays nda_droplets
and nda_smeared
and prints them.
In order to eliminate too excessive printout from psana modules, set parameters print_bits = 0
or 1 in the configuration file.
References