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

Compare with Current View Page History

« Previous Version 5 Next »

Code examples

Most truthful description is on git: detector/areadetector.py

Create DataSource, Run, and Detector objects

    from psana import DataSource
    ds = DataSource(exp='tmoc00318',run=10, dir='/cds/data/psdm/prj/public01/xtc')
    orun = next(ds.runs())
    det = orun.Detector('epix100')

Loop over events and access detector data

Methods guaranteed for all area detectors - raw, calib, and image:

    for evt orun.events():
        o = det.raw
        raw = o.raw(evt)
        clb = o.calib(evt)
        img = o.image(evt)

Optional parameters

kwa = <dict-of-mask-parameters>
a = o.calib(evt, cmpars=(7,2,100,10), **kwa)
a = o.image(evt, nda=None, **kwa)

See mask usage example in Area detector mask examples.

Calibration constants

All detector calibration constants (np.array) and associated  metadata (dict) are available through the dictionary det.calibconst with calibration type as a key. For example:

peds, meta = det.calibconst['pedestals']

Possible calibration types: pedestals, pixel_status,  pixel_rms,  pixel_gain, pixel_mask, etc.

Other useful area detector methods

# access calibration constants and derived arrays
peds = o._pedestals()
gain = o._gain() # ADU/keV
gfac = o._gain_factor() # keV/ADU
rms = o._rms()
status = o._status()

mask = o._mask_default(dtype=DTYPE_MASK)
mask = o._mask_calib()
mask = o._mask_calib_or_default(dtype=DTYPE_MASK)
mask = o._mask_from_status(mstcode=0xffff, dtype=DTYPE_MASK, **kwa)
mask = o._mask_neighbors(mask, rad=9, ptrn='r')
mask = o._mask_edges(width=0, edge_rows=1, edge_cols=1, dtype=DTYPE_MASK, **kwa)
mask = o._mask_center(wcenter=0, center_rows=1, center_cols=1, dtype=DTYPE_MASK, **kwa)
mask = o._mask_comb(status=True, neighbors=False, edges=False, center=False, calib=False, umask=None, dtype=DTYPE_MASK, **kwa)
mask = o._mask(status=True, neighbors=False, edges=False, center=False, calib=False, umask=None, dtype=DTYPE_MASK, **kwa)
mask = o._mask(status=True, mstcode=0xffff, grinds=grinds\
               neighbors=False, rad=3, ptrn='r',\
               edges=True, width=0, edge_rows=10, edge_cols=5,\
               center=True, wcenter=0, center_rows=5, center_cols=3,\
               calib=False,\
               umask=None)

arrx, arry, arrz = o._pixel_coords(do_tilt=True, cframe=0)
indx, indy, indz = o._pixel_coord_indexes(pix_scale_size_um=None, xy0_off_pix=None, do_tilt=True, cframe=0)
  
# array of the common mode increment
incr = o._common_mode_increment(evt, cmpars=(0,7,100,10))

References

  • No labels