Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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 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 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