Versions Compared

Key

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

...

  • Results of ImgAlgos.NDArrCalib well reproduce cspad_mod.CsPadCalib

  • Common mode correction shrinks the width of averaged intensities from 0.60 to 0.54, and rms from 3.78 to 3.27.
  • Algorithm is quite time expensive, it takes 30-40ms/event.



Example for module ImgAlgos::PixCoordsProducer

See Module ImgAlgos::PixCoordsProducer

Psana configuration file which produces enough data to get CSPAD calibrated intensity and coordinate arrays:

Code Block
[psana]
modules	 = ImgAlgos.PixCoordsProducer \
           cspad_mod.CsPadCalib \
           CSPadPixCoords.CSPadNDArrProducer

[ImgAlgos.PixCoordsProducer]
source     = CxiDs1.0:Cspad.0
print_bits = 0

[cspad_mod.CsPadCalib]
source          = CxiDs1.0:Cspad.0
inputKey        = 
outputKey       = calibrated
doPedestals     = yes
doPixelStatus   = no
doCommonMode    = no

[CSPadPixCoords.CSPadNDArrProducer]
source          = CxiDs1.0:Cspad.0
inkey           = calibrated
outkey          = cspad_ndarr
outtype         = int16
is_fullsize     = yes
print_bits      = 3

In python code these arrays can be obtained with evt.get(...) method:

Code Block
    X = evt.get(psana.ndarray_float64_1, psana.Source('DetInfo(CxiDs1.0:Cspad.0)'), 'x-pix-coords')
    Y = evt.get(psana.ndarray_float64_1, psana.Source('DetInfo(CxiDs1.0:Cspad.0)'), 'y-pix-coords')
    A = evt.get(psana.ndarray_int16_3,   psana.Source('DetInfo(CxiDs1.0:Cspad.0)'), 'cspad_ndarr').flatten()

Their shape=(32*185*388,) = (2296960,)

These arrays can be processed by users' code directly. In particular, it is easy to conver them in 2-d image numpy array and plot it:

Code Block
import numpy as np
import matplotlib.pyplot as plt
from PSCalib.GeometryAccess import img_from_pixel_arrays

    pix_size = 109.92
    xmin, ymin = X.min()-pix_size/2, Y.min()-pix_size/2 
    iX, iY = np.array((X-xmin)/pix_size, dtype=np.uint), np.array((Y-ymin)/pix_size, dtype=np.uint)
    img = img_from_pixel_arrays(iX,iY,W=A)

    plt.imshow(img)
    plt.draw()

 

Example for module ImgAlgos::ImgAverage

  • See Module ImgAlgos::ImgAverage
  • The ImgAverage module can be used for evaluation of averaged pedestals or background using dedicated runs. Typical configuration file may looks like this:

...