You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

Peak Finding

You can find more advanced examples here and some overview documentation here.  More detailed documentation is 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')
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')
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)
  • No labels