Peak Finding
You can find more advanced examples here and documentation here and here.
This script lives in /reg/g/psdm/tutorials/examplePython/peakFinder.py. A peak finder runs on an area detector and tries to locate regions of charge (e.g. photons).
import psana ds = psana.DataSource('exp=xpptut15:run=54:smd') det = psana.Detector('cspad', ds.env()) from ImgAlgos.PyAlgos import PyAlgos alg = PyAlgos() alg.set_peak_selection_pars(npix_min=2, npix_max=50, amax_thr=10, atot_thr=20, son_min=5) hdr = '\nSeg Row Col Npix Amptot' fmt = '%3d %4d %4d %4d %8.1f' for nevent,evt in enumerate(ds.events()): if nevent>=2 : break nda = det.calib(evt) if nda is None: continue peaks = alg.peak_finder_v1(nda, thr_low=5, thr_high=30, radius=5, dr=0.05) print hdr for peak in peaks : seg,row,col,npix,amax,atot = peak[0:6] print fmt % (seg, row, col, npix, atot)
Hit Finding
This script lives in /reg/g/psdm/tutorials/examplePython/hitFinder.py. These hit finding algorithms try to determine if a particular LCLS shot was good or not, by looking for significant charge distributed over an area detector.
import psana ds = psana.DataSource('exp=xpptut15:run=54:smd') det = psana.Detector('cspad', ds.env()) from ImgAlgos.PyAlgos import PyAlgos alg = PyAlgos() for nevent,evt in enumerate(ds.events()): if nevent>=2 : break nda = det.calib(evt) if nda is None: continue thr = 20 numpix = alg.number_of_pix_above_thr(nda, thr) totint = alg.intensity_of_pix_above_thr(nda, thr) print '%d pixels have total intensity %5.1f above threshold %5.1f' % (numpix, totint, thr)
Overview
Content Tools